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

version 1.106, 2008/01/16 12:08:04 version 1.112, 2008/11/10 14:11:08
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 207  sub startpage { Line 319  sub startpage {
     &Apache::lonhtmlcommon::store_recent('construct',$formaction,$formaction);      &Apache::lonhtmlcommon::store_recent('construct',$formaction,$formaction);
     if ($env{'environment.remote'} eq 'off') {      if ($env{'environment.remote'} eq 'off') {
  $env{'request.noversionuri'}=$currdir.'/';   $env{'request.noversionuri'}=$currdir.'/';
  $r->print(&Apache::loncommon::start_page(&mt('Construction Space'),undef,   $r->print(&Apache::loncommon::start_page('Construction Space',undef,
  {'body_title' =>   {'body_title' =>
       $pagetitle,}));        $pagetitle,}));
     } else {      } else {
  $r->print(&Apache::loncommon::start_page(&mt('Construction Space'),undef,   $r->print(&Apache::loncommon::start_page('Construction Space',undef,
  { 'only_body' => 1,}));   { 'only_body' => 1,}));
  $r->print($pagetitle);   $r->print($pagetitle);
     }      }
   
     my $esc_thisdisfn = &Apache::loncommon::escape_single($thisdisfn);      my $esc_thisdisfn = &Apache::loncommon::escape_single($thisdisfn);
       my $doctitle = 'LON-CAPA '.&mt('Construction Space');
       my $newname = &mt('New Name');
     my $pubdirscript=(<<ENDPUBDIRSCRIPT);      my $pubdirscript=(<<ENDPUBDIRSCRIPT);
 <script type="text/javascript">  <script type="text/javascript">
 top.document.title = '$esc_thisdisfn/ - '.&mt('LON-CAPA Construction Space');  top.document.title = '$esc_thisdisfn/ - $doctitle';
 // Store directory location for menu bar to find  // Store directory location for menu bar to find
   
 parent.lastknownpriv='/~$uname$esc_thisdisfn/';  parent.lastknownpriv='/~$uname$esc_thisdisfn/';
Line 313  parent.lastknownpriv='/~$uname$esc_thisd Line 427  parent.lastknownpriv='/~$uname$esc_thisd
     }      }
     function changename(theform,activity) {      function changename(theform,activity) {
         var oldname=theform.dispfilename.value;          var oldname=theform.dispfilename.value;
         var newname=prompt('New Name',oldname);          var newname=prompt('$newname',oldname);
         if (newname == "" || !newname || newname == oldname)  {          if (newname == "" || !newname || newname == oldname)  {
             return              return
         }          }
Line 539  sub putdirectory { Line 653  sub putdirectory {
  ));   ));
         my $actionitem = '';          my $actionitem = '';
         if ($dirname eq '..') {          if ($dirname eq '..') {
             $actionitem = 'Go to ...';              $actionitem = &mt('Go to ...');
         } else {          } else {
             $actionitem =               $actionitem = 
                     '<form name="dirselect_'.$$numdir.                      '<form name="dirselect_'.$$numdir.
Line 654  sub putresource { Line 768  sub putresource {
  }    } 
   
  $title.="\n".'<br /><a href="/~'.$uname.$thisdisfn.'/'.$filename.'.meta">'.    $title.="\n".'<br /><a href="/~'.$uname.$thisdisfn.'/'.$filename.'.meta">'. 
     ($$bombs{$targetdir.'/'.$filename}?'<img src="/adm/lonMisc/bomb.gif" border="0" alt="bomb" />':'Edit Metadata').'</a>';      ($$bombs{$targetdir.'/'.$filename}?'<img src="/adm/lonMisc/bomb.gif" border="0" alt="'.&mt('bomb').'" />':&mt('Edit Metadata')).'</a>';
   
  if (!$meta_same) {   if (!$meta_same) {
     $title = &mt('Metadata Modified').'<br />'.$title.      $title = &mt('Metadata Modified').'<br />'.$title.
Line 783  sub CategorizeFiles { Line 897  sub CategorizeFiles {
 1;  1;
 __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  
   
 =cut  

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


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