Diff for /loncom/publisher/lonpubdir.pm between versions 1.112 and 1.115

version 1.112, 2008/11/10 14:11:08 version 1.115, 2008/11/28 16:10:26
Line 27 Line 27
 #  #
 ###  ###
   
 =head1 NAME  
   
 Apache::lonpubdir - Construction space directory lister  
   
 =head1 SYNOPSIS  
   
 Invoked (for various locations) by /etc/httpd/conf/srm.conf:  
   
  <LocationMatch "^/\~.*/$">  
  PerlAccessHandler       Apache::loncacc  
  SetHandler perl-script  
  PerlHandler Apache::lonpubdir  
  ErrorDocument     403 /adm/login  
  ErrorDocument     404 /adm/notfound.html  
  ErrorDocument     406 /adm/unauthorized.html  
  ErrorDocument  500 /adm/errorhandler  
  </LocationMatch>  
   
  <Location /adm/pubdir>  
  PerlAccessHandler       Apache::lonacc  
  SetHandler perl-script  
  PerlHandler Apache::lonpubdir  
  ErrorDocument     403 /adm/login  
  ErrorDocument     404 /adm/notfound.html  
  ErrorDocument     406 /adm/unauthorized.html  
  ErrorDocument  500 /adm/errorhandler  
  </Location>  
   
 =head1 INTRODUCTION  
   
 This module publishes a directory of files.  
   
 This is part of the LearningOnline Network with CAPA project  
 described at http://www.lon-capa.org.  
   
 =head1 HANDLER SUBROUTINE  
   
 This routine is called by Apache and mod_perl.  
   
 =over 4  
   
 =item *  
   
 read in information  
   
 =item *  
   
 start page output  
   
 =item *  
   
 run through list of files and attempt to publish unhidden files  
   
 =back  
   
 =head2 OTHER SUBROUTINES:  
   
 =head3 startpage($r, $uame, $udom, $thisdisfn)  
   
 Output the header of the page.  This includes:  
  - The HTML header   
  - The H1/H3  stuff which includes the directory.  
    
     startpage($r, $uame, $udom, $thisdisfn);  
         $r     - The apache request object.  
         $uname - User name.  
         $udom  - Domain name the user is logged in under.  
         $thisdisfn - Displayable version of the filename.  
   
 =head3 getTitleString($fullname)  
   
     Get the title string or "[untitled]" if the file has no title metadata:  
     Without the latter substitution, it's impossible to examine metadata for  
     untitled resources.  Resources may be legitimately untitled, to prevent  
     searches from locating them.  
       
     $str = getTitleString($fullname);  
         $fullname - Fully qualified filename to check.  
   
 =head3 putdirectory(r, base, here, dirname, modtime)  
   
     Put out a directory table row:  
       
     putdirectory($r, $base, $here, $dirname, $modtime)  
         $r       - Apache request object.  
         $reqfile - File in request.  
         $here    - Where we are in directory tree.  
         $dirname - Name of directory special file.  
         $modtime - Encoded modification time.  
   
 =head3 CategorizeFiles($location, $files)  
       
     Categorize files in the directory.  
     For each file in a list of files in a file directory,   
     the  file categorized as one of:  
         - directory    
         - sequence  
         - problem   
         - Other resource.  
   
     For each file the modification date is determined as well.  
     Returned is a list of sublists:  
         (directories, sequences, problems, other)  
     each of the sublists contains entries of the following form (sorted by filename):  
     (filename, typecode, lastmodtime)  
       
         $list = CategorizeFiles($location, $files)  
         $location   - Directory in which the files live (relative to our execution)  
         $files      - list of files.  
   
 =cut  
   
 package Apache::lonpubdir;  package Apache::lonpubdir;
   
 use strict;  use strict;
Line 218  sub handler { Line 106  sub handler {
       
   # Start off the directory table.    # Start off the directory table.
   $r->print('<h3>'.&mt('Directory Contents:').'</h3>');    $r->print('<h3>'.&mt('Directory Contents:').'</h3>');
   $r->print('<table id="LC_browser"><tr>'.    $r->print(&Apache::loncommon::start_data_table()
             '<th>'.&mt('Type').'</th>'.             .&Apache::loncommon::start_data_table_header_row()
             '<th>'.&mt('Actions').'</th>'.             .'<th>'.&mt('Type').'</th>'
             '<th>'.&mt('Name').'</th>'.             .'<th>'.&mt('Actions').'</th>'
             '<th>'.&mt('Title').'</th>'.             .'<th>'.&mt('Name').'</th>'
     '<th>'.&mt('Status').'</th>'.             .'<th>'.&mt('Title').'</th>'
             '<th>'.&mt('Last Modified').             .'<th colspan="2">'.&mt('Status').'</th>'
     '</th></tr>'."\n");             .'<th>'.&mt('Last Modified').'</th>'
              .&Apache::loncommon::end_data_table_header_row()
     );
   
   my $filename;    my $filename;
   my $dirptr=16384; # Mask indicating a directory in stat.cmode.    my $dirptr=16384; # Mask indicating a directory in stat.cmode.
Line 251  sub handler { Line 141  sub handler {
   }    }
   closedir(DIR);    closedir(DIR);
   
   $r->print('</table>'.&Apache::loncommon::end_page());    $r->print(&Apache::loncommon::end_data_table()
              .&Apache::loncommon::end_page()
     );
   return OK;      return OK;  
 }  }
 #  #
Line 345  parent.lastknownpriv='/~$uname$esc_thisd Line 237  parent.lastknownpriv='/~$uname$esc_thisd
             document.publishdir.filename.value = theform.filename.value;              document.publishdir.filename.value = theform.filename.value;
     document.publishdir.submit();      document.publishdir.submit();
         }          }
         if (theform.dirtask.options[theform.dirtask.selectedIndex].value == 'editcat') {          if (theform.dirtask.options[theform.dirtask.selectedIndex].value == 'editmeta') {
             top.location=theform.filename.value+'default.meta'              top.location=theform.filename.value+'default.meta'
         }          }
         if (theform.dirtask.options[theform.dirtask.selectedIndex].value == 'printdir' ) {          if (theform.dirtask.options[theform.dirtask.selectedIndex].value == 'printdir' ) {
Line 375  parent.lastknownpriv='/~$uname$esc_thisd Line 267  parent.lastknownpriv='/~$uname$esc_thisd
         if (theform.diraction.options[theform.diraction.selectedIndex].value == "publish") {          if (theform.diraction.options[theform.diraction.selectedIndex].value == "publish") {
             theform.submit();              theform.submit();
         }          }
         if (theform.diraction.options[theform.diraction.selectedIndex].value == "editcat") {          if (theform.diraction.options[theform.diraction.selectedIndex].value == "editmeta") {
             top.location=theform.filename.value+'default.meta'              top.location=theform.filename.value+'default.meta'
         }          }
         if (theform.diraction.options[theform.diraction.selectedIndex].value == "printdir") {          if (theform.diraction.options[theform.diraction.selectedIndex].value == "printdir") {
Line 460  sub dircontrols { Line 352  sub dircontrols {
                                        list => 'List Directory',                                         list => 'List Directory',
                                        uplo => 'Upload file',                                           uplo => 'Upload file',  
                                        dele => 'Delete',                                         dele => 'Delete',
                                        edit => 'Edit Catalog Information',                                          edit => 'Edit Metadata', 
                                        sela => 'Select Action',                                         sela => 'Select Action',
                                        nfil => 'New file',                                         nfil => 'New file',
                                        nhtm => 'New HTML file',                                         nhtm => 'New HTML file',
Line 497  sub dircontrols { Line 389  sub dircontrols {
            <select name="dirtask" onchange="currdiract(this.form)">             <select name="dirtask" onchange="currdiract(this.form)">
             <option>$lt{'sela'}</option>              <option>$lt{'sela'}</option>
             <option value="publish">$lt{'pubd'}</option>              <option value="publish">$lt{'pubd'}</option>
             <option value="editcat">$lt{'edit'}</option>              <option value="editmeta">$lt{'edit'}</option>
             <option value="printdir">$lt{'prnt'}</option>              <option value="printdir">$lt{'prnt'}</option>
             <option value="delete">$lt{'dedr'}</option>              <option value="delete">$lt{'dedr'}</option>
            </select>             </select>
Line 662  sub putdirectory { Line 554  sub putdirectory {
                       '<option selected="selected">'.&mt('Select action').'</option>'.                        '<option selected="selected">'.&mt('Select action').'</option>'.
                       '<option value="open">'.&mt('Open').'</option>'.                        '<option value="open">'.&mt('Open').'</option>'.
                       '<option value="publish">'.&mt('Publish').'</option>'.                        '<option value="publish">'.&mt('Publish').'</option>'.
                       '<option value="editcat">'.&mt('Edit catalog information').'</option>'.                        '<option value="editmeta">'.&mt('Edit Metadata').'</option>'.
                       '<option value="printdir">'.&mt('Print directory').'</option>'.                        '<option value="printdir">'.&mt('Print directory').'</option>'.
                       '<option value="delete">'.&mt('Delete directory').'</option>'.                        '<option value="delete">'.&mt('Delete directory').'</option>'.
                     '</select>'.                      '</select>'.
Line 678  sub putdirectory { Line 570  sub putdirectory {
   '<td>'.$actionitem.'</td>'.    '<td>'.$actionitem.'</td>'.
   '<td><span class="LC_filename"><a href="'.&HTML::Entities::encode($here.'/'.$dirname,'<>&"').'/" target="_parent">'.    '<td><span class="LC_filename"><a href="'.&HTML::Entities::encode($here.'/'.$dirname,'<>&"').'/" target="_parent">'.
   $disfilename.'</a></span></td>'.    $disfilename.'</a></span></td>'.
         '<td colspan="2">'.($kaputt?&Apache::lonhtmlcommon::authorbombs($resdir.'/'.$disfilename.'/'):'').$Apache::lonpublisher::metadatafields{'title'});          '<td colspan="3">'.($kaputt?&Apache::lonhtmlcommon::authorbombs($resdir.'/'.$disfilename.'/'):'').$Apache::lonpublisher::metadatafields{'title'});
  if ($Apache::lonpublisher::metadatafields{'subject'} ne '') {   if ($Apache::lonpublisher::metadatafields{'subject'} ne '') {
     $r->print(' <i>'.      $r->print(' <i>'.
       $Apache::lonpublisher::metadatafields{'subject'}.        $Apache::lonpublisher::metadatafields{'subject'}.
Line 800  sub putresource { Line 692  sub putresource {
     }      }
     my $pub_select = '';      my $pub_select = '';
     &create_pubselect($r,\$pub_select,$udom,$uname,$thisdisfn,$filename,$resdir,$pubstatus,$publish_button,$numres);      &create_pubselect($r,\$pub_select,$udom,$uname,$thisdisfn,$filename,$resdir,$pubstatus,$publish_button,$numres);
     $r->print('<tr class="LC_browser_file_'.$pubstatus.'">'.      $r->print(&Apache::loncommon::start_data_table_row().
       '<td>'.($filename=~/[\#\~]$/?'&nbsp;':        '<td>'.($filename=~/[\#\~]$/?'&nbsp;':
       '<img src="'.&Apache::loncommon::icon($filename).'" alt="" />').'</td>'.        '<img src="'.&Apache::loncommon::icon($filename).'" alt="" />').'</td>'.
               '<td>'.$pub_select.'</td>'.                '<td>'.$pub_select.'</td>'.
Line 809  sub putresource { Line 701  sub putresource {
                $filename.'</a></span>'.$editlink2.$editlink.                 $filename.'</a></span>'.$editlink2.$editlink.
       '</td>'.        '</td>'.
       '<td>'.$title.'</td>'.        '<td>'.$title.'</td>'.
       '<td>'.$status.'</td>'.                '<td class="LC_browser_file_'.$pubstatus.'">&nbsp;&nbsp;</td>'. # Display publication status
                 '<td>'.$status.'</td>'.
       '<td>'.&Apache::lonlocal::locallocaltime($cmtime).'</td>'.        '<td>'.&Apache::lonlocal::locallocaltime($cmtime).'</td>'.
       "</tr>\n");        &Apache::loncommon::end_data_table_row()
       );
     return OK;      return OK;
 }  }
   
Line 898  sub CategorizeFiles { Line 792  sub CategorizeFiles {
 __END__  __END__
   
   
   =head1 NAME
   
   Apache::lonpubdir - Construction space directory lister
   
   =head1 SYNOPSIS
   
   Invoked (for various locations) by /etc/httpd/conf/srm.conf:
   
    <LocationMatch "^/\~.*/$">
    PerlAccessHandler       Apache::loncacc
    SetHandler perl-script
    PerlHandler Apache::lonpubdir
    ErrorDocument     403 /adm/login
    ErrorDocument     404 /adm/notfound.html
    ErrorDocument     406 /adm/unauthorized.html
    ErrorDocument  500 /adm/errorhandler
    </LocationMatch>
   
    <Location /adm/pubdir>
    PerlAccessHandler       Apache::lonacc
    SetHandler perl-script
    PerlHandler Apache::lonpubdir
    ErrorDocument     403 /adm/login
    ErrorDocument     404 /adm/notfound.html
    ErrorDocument     406 /adm/unauthorized.html
    ErrorDocument  500 /adm/errorhandler
    </Location>
   
   =head1 INTRODUCTION
   
   This module publishes a directory of files.
   
   This is part of the LearningOnline Network with CAPA project
   described at http://www.lon-capa.org.
   
   =head1 HANDLER SUBROUTINE
   
   This routine is called by Apache and mod_perl.
   
   =over 4
   
   =item *
   
   read in information
   
   =item *
   
   start page output
   
   =item *
   
   run through list of files and attempt to publish unhidden files
   
   =back
   
   =head1 SUBROUTINES:
   
   =over
   
   =item startpage($r, $uame, $udom, $thisdisfn)
   
   Output the header of the page.  This includes:
    - The HTML header 
    - The H1/H3  stuff which includes the directory.
    
       startpage($r, $uame, $udom, $thisdisfn);
           $r     - The apache request object.
           $uname - User name.
           $udom  - Domain name the user is logged in under.
           $thisdisfn - Displayable version of the filename.
   
   =item getTitleString($fullname)
   
       Get the title string or "[untitled]" if the file has no title metadata:
       Without the latter substitution, it's impossible to examine metadata for
       untitled resources.  Resources may be legitimately untitled, to prevent
       searches from locating them.
       
       $str = getTitleString($fullname);
           $fullname - Fully qualified filename to check.
   
   =item putdirectory(r, base, here, dirname, modtime)
   
       Put out a directory table row:
       
       putdirectory($r, $base, $here, $dirname, $modtime)
           $r       - Apache request object.
           $reqfile - File in request.
           $here    - Where we are in directory tree.
           $dirname - Name of directory special file.
           $modtime - Encoded modification time.
   
   =item CategorizeFiles($location, $files)
       
       Categorize files in the directory.
       For each file in a list of files in a file directory, 
       the  file categorized as one of:
           - directory  
           - sequence
           - problem 
           - Other resource.
   
       For each file the modification date is determined as well.
       Returned is a list of sublists:
           (directories, sequences, problems, other)
       each of the sublists contains entries of the following form (sorted by filename):
       (filename, typecode, lastmodtime)
       
           $list = CategorizeFiles($location, $files)
           $location   - Directory in which the files live (relative to our execution)
           $files      - list of files.
   
   =back
   
   =cut
   

Removed from v.1.112  
changed lines
  Added in v.1.115


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>