Diff for /loncom/publisher/lonpubdir.pm between versions 1.22 and 1.23

version 1.22, 2002/02/05 22:25:00 version 1.23, 2002/02/09 01:38:54
Line 56  sub handler { Line 56  sub handler {
   
   my $fn;    my $fn;
   
   if ($ENV{'form.filename'}) {  
       $fn=$ENV{'form.filename'};  
       $fn=~s/^http\:\/\/[^\/]+\/\~(\w+)/\/home\/$1\/public_html/;    $fn = getEffectiveUrl($r);
       $fn=~s/\/[^\/]+$//;  
   } else {    # Validate access to the construction space and get username@domain.
       $fn=$r->filename();  
   }  
   
   my $uname;    my $uname;
   my $udom;    my $udom;
Line 77  sub handler { Line 75  sub handler {
          $r->filename);            $r->filename); 
      return HTTP_NOT_ACCEPTABLE;       return HTTP_NOT_ACCEPTABLE;
   }    }
        
     # Remove trailing / from direcgtory name.
   
   $fn=~s/\/$//;    $fn=~s/\/$//;
   
   unless ($fn) {     unless ($fn) { 
Line 88  sub handler { Line 88  sub handler {
   
 # ----------------------------------------------------------- Start page output  # ----------------------------------------------------------- Start page output
   
     my $thisdisfn=$fn;
     $thisdisfn=~s/^\/home\/$uname\/public_html//; # subdirectory part of
                                                   # construction space. 
     my $docroot=$r->dir_config('lonDocRoot');     # Apache  londocument root.
   
   $r->content_type('text/html');    my $resdir=$docroot.'/res/'.$udom.'/'.$uname.$thisdisfn; # Resource directory
   $r->send_http_header;    my $targetdir=$udom.'/'.$uname.$thisdisfn; # Publiction target directory.
     my $linkdir='/~'.$uname.$thisdisfn;        # Full URL name of constr space.
   
   $r->print('<html><head><title>LON-CAPA Construction Space</title></head>');  
   
   $r->print(  
    '<body bgcolor="#FFFFFF"><img align=right src=/adm/lonIcons/lonlogos.gif>');  
   
   my $thisdisfn=$fn;    startpage($r, $uname, $udom, $thisdisfn); # Put out the start of page.
   $thisdisfn=~s/^\/home\/$uname\/public_html//;  
     
   $r->print('<h1>Construction Space Directory <tt>'.$thisdisfn.'/</tt></h1>');  
       
   if (($uname ne $ENV{'user.name'}) || ($udom ne $ENV{'user.domain'})) {    # Start off the diretory table.
           $r->print('<h3>Co-Author: '.$uname.' at '.$udom.  
                '</h3>');  
   }  
   
   
   my $docroot=$r->dir_config('lonDocRoot');  
   
   my $resdir=$docroot.'/res/'.$udom.'/'.$uname.$thisdisfn;  
   my $targetdir=$udom.'/'.$uname.$thisdisfn;  
   my $linkdir='/~'.$uname.$thisdisfn;  
   
   $r->print('<table border=2>'.    $r->print('<table border=2>'.
  '<tr><th>Actions</th><th>Name</th><th>Title</th>'.      '<tr><th>Actions</th><th>Name</th><th>Title</th>'.
  '<th>Status</th><th>Last Modified</th></tr>');      '<th>Status</th><th>Last Modified</th></tr>');
   
   my $filename;    my $filename;
   my $dirptr=16384;    my $dirptr=16384; # Mask indicating a directory in stat.cmode.
   
   opendir(DIR,$fn);    opendir(DIR,$fn);
   my @files=sort(readdir(DIR));    my @files=sort(readdir(DIR));
Line 146  sub handler { Line 135  sub handler {
   return OK;      return OK;  
 }  }
 #  #
   #  Gets the effective URL of the request and returns it:
   #    $effn = getEffectiveUrl($r);
   #       $r  - The Apache Request object.
   sub getEffectiveUrl {
       my $r = shift;
       my $fn;
       
       if ($ENV{'form.filename'}) { # If a form filename is defined.
    $fn=$ENV{'form.filename'};
    #
    #   Replace the ~username of the URL with /home/username/public_html
    #   so that we don't have to worry about ~ expansion internally.
    #
    $fn=~s/^http\:\/\/[^\/]+\/\~(\w+)/\/home\/$1\/public_html/;
   
    #  Remove trailing / strings (?) 
   
    $fn=~s/\/[^\/]+$//;
       } else { # If no form is defined, use request filename.
    $fn=$r->filename();
       }
       return $fn;
   }
   #
   #   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.
   sub startpage {
       my ($r, $uname, $udom, $thisdisfn) = @_;
       
       $r->content_type('text/html');
       $r->send_http_header;
       
       $r->print('<html><head><title>LON-CAPA Construction Space</title></head>');
       
       $r->print('<body bgcolor="#FFFFFF"><img align=right '.
         'src=/adm/lonIcons/lonlogos.gif>');
       
       $r->print('<h1>Construction Space Directory <tt>'.
         $thisdisfn.'/</tt></h1>');
       
       if (($uname ne $ENV{'user.name'}) || ($udom ne $ENV{'user.domain'})) {
    $r->print('<h3>Co-Author: '.$uname.' at '.$udom.
     '</h3>');
       }
   }
   
   #
   #   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.
   #
   sub getTitleString {
       my $fullname = shift;
       my $title    = &Apache::lonnet::metadata($fullname, 'title');
   
       unless ($title) {
    $title = "[untitled]";
       }
       return $title;
   }
   
   
   #
 #  Put out a directory table row:  #  Put out a directory table row:
 #    putdirectory(r, base, here, dirname, modtime)  #    putdirectory(r, base, here, dirname, modtime)
 #      r       - Apache request object.  #      r       - Apache request object.
Line 193  sub putresource { Line 256  sub putresource {
     $rblksize,$rblocks)=stat($resdir.'/'.$filename);      $rblksize,$rblocks)=stat($resdir.'/'.$filename);
  if ($rmtime>=$cmtime) {   if ($rmtime>=$cmtime) {
     $status='Published';      $status='Published';
     $title='<a href="/res/'.$targetdir.'/'.$filename.'.meta" target=cat>'.      $title='<a href="/res/'.$targetdir.'/'.$filename.
  &Apache::lonnet::metadata($targetdir.'/'.$filename,'title').'</a>';   '.meta" target=cat>'.
    getTitleString($targetdir.'/'.$filename, 'title').'</a>';
  } else {   } else {
     $status='Modified';      $status='Modified';
     $title='<a href="/res/'.$targetdir.'/'.$filename.'.meta" target=cat>'.      $title='<a href="/res/'.$targetdir.'/'.$filename.'.meta" target=cat>'.
Line 221  sub putresource { Line 285  sub putresource {
       '</tr>');        '</tr>');
     return OK;      return OK;
 }  }
   #
   #   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.
   #
   sub CategorizeFiles {
       my $location = shift;
       my $files    = shift;
   }
   
 1;  1;
 __END__  __END__

Removed from v.1.22  
changed lines
  Added in v.1.23


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