Diff for /loncom/publisher/lonpubdir.pm between versions 1.24 and 1.35

version 1.24, 2002/04/09 06:01:56 version 1.35, 2003/07/05 10:07:12
Line 1 Line 1
 # The LearningOnline Network with CAPA  # The LearningOnline Network with CAPA
 # (Publication Handler  # Construction Space Directory Lister
 #  #
 # $Id$  # $Id$
 #  #
Line 36 Line 36
 # 03/23 Guy Albertelli  # 03/23 Guy Albertelli
 # 03/24,03/29 Gerd Kortemeyer)  # 03/24,03/29 Gerd Kortemeyer)
 # 03/31,04/03,05/09,06/23,08/18,08/20 Gerd Kortemeyer  # 03/31,04/03,05/09,06/23,08/18,08/20 Gerd Kortemeyer
 # 12/15 Scott Harrison  
 # 12/28 Gerd Kortemeyer  # 12/28 Gerd Kortemeyer
 #  #
 ###  ###
Line 70  sub handler { Line 69  sub handler {
              $fn,$r->dir_config('lonDefDomain'));                $fn,$r->dir_config('lonDefDomain')); 
   unless (($uname) && ($udom)) {    unless (($uname) && ($udom)) {
      $r->log_reason($uname.' at '.$udom.       $r->log_reason($uname.' at '.$udom.
          ' trying to publish file '.$ENV{'form.filename'}.           ' trying to list directory '.$ENV{'form.filename'}.
          ' ('.$fn.') - not authorized',            ' ('.$fn.') - not authorized', 
          $r->filename);            $r->filename); 
      return HTTP_NOT_ACCEPTABLE;       return HTTP_NOT_ACCEPTABLE;
   }    }
   
   # Remove trailing / from direcgtory name.    # Remove trailing / from directory name.
   
   $fn=~s/\/$//;    $fn=~s/\/$//;
   
Line 95  sub handler { Line 94  sub handler {
   
   my $resdir=$docroot.'/res/'.$udom.'/'.$uname.$thisdisfn; # Resource directory    my $resdir=$docroot.'/res/'.$udom.'/'.$uname.$thisdisfn; # Resource directory
   my $targetdir=$udom.'/'.$uname.$thisdisfn; # Publiction target directory.    my $targetdir=$udom.'/'.$uname.$thisdisfn; # Publiction target directory.
   my $linkdir='/~'.$uname.$thisdisfn;        # Full URL name of constr space.    my $linkdir='/priv/'.$uname.$thisdisfn;      # Full URL name of constr space.
   
   
   
   startpage($r, $uname, $udom, $thisdisfn); # Put out the start of page.    &startpage($r, $uname, $udom, $thisdisfn);   # Put out the start of page.
       
   # Start off the diretory table.    # Start off the diretory table.
   
Line 148  sub getEffectiveUrl { Line 147  sub getEffectiveUrl {
  #   Replace the ~username of the URL with /home/username/public_html   #   Replace the ~username of the URL with /home/username/public_html
  #   so that we don't have to worry about ~ expansion internally.   #   so that we don't have to worry about ~ expansion internally.
  #   #
  $fn=~s/^http\:\/\/[^\/]+\/\~(\w+)/\/home\/$1\/public_html/;   $fn=~s/^http\:\/\/[^\/]+\///;
           $fn=~s/^\///;
           $fn=~s/\~(\w+)/\/home\/$1\/public_html/;
   
  #  Remove trailing / strings (?)    #  Remove trailing / strings (?) 
   
Line 176  sub getEffectiveUrl { Line 177  sub getEffectiveUrl {
 #      $uname - User name.  #      $uname - User name.
 #      $udom  - Domain name the user is logged in under.  #      $udom  - Domain name the user is logged in under.
 #      $thisdisfn - Displayable version of the filename.  #      $thisdisfn - Displayable version of the filename.
   
 sub startpage {  sub startpage {
     my ($r, $uname, $udom, $thisdisfn) = @_;      my ($r, $uname, $udom, $thisdisfn) = @_;
           
Line 184  sub startpage { Line 186  sub startpage {
           
     $r->print('<html><head><title>LON-CAPA Construction Space</title></head>');      $r->print('<html><head><title>LON-CAPA Construction Space</title></head>');
           
     $r->print('<body bgcolor="#FFFFFF"><img align=right '.      $r->print(&Apache::loncommon::bodytag(undef,undef,undef,1));
       'src=/adm/lonIcons/lonlogos.gif>');      my $pubdirscript=(<<ENDPUBDIRSCRIPT);
       <script>
       function pubdir(theform) {
    if (confirm('Publish complete directory?')) {
       theform.submit();
           }
       }
      function pubrecdir(theform) {
    if (confirm('Publish directory and all subdirectories?')) {
               theform.pubrec.value='1';
       theform.submit();
           }
       }
   </script>
   ENDPUBDIRSCRIPT
   
     $r->print('<h1>Construction Space Directory <tt>'.      $r->print('<h1>Construction Space Directory <tt>'.
       $thisdisfn.'/</tt></h1>');        $thisdisfn.'/</tt></h1>'.
         '<script type="text/javascript">top.document.title = \''.
         $thisdisfn.'/ - LON-CAPA Construction Space\';</script>'.
         $pubdirscript.
                 '<form method="post" action="/adm/publish" target="_parent">'.
                 '<table><tr><td><input type="hidden" name="filename" value="/~'.
                  $uname.$thisdisfn.'/" />'.
                 '<input type="button" onClick="pubdir(this.form);" value="Publish Directory" />'.
                 '<input type="hidden" name="pubrec" value="" />'.
                 '<input type="button" onClick="pubrecdir(this.form);" value="Publish Directory and Sub Directories" /></td><td>'.
   '<input type="button" onClick="window.location='."'/~".
                  $uname.$thisdisfn."/default.meta'".'" value="Edit Directory Catalog Information" /></td></tr><tr><td><input type="checkbox" name="forcerepub" /> Force publication of unmodified files.</td><td>&nbsp;</td></tr></table></form>');
           
     if (($uname ne $ENV{'user.name'}) || ($udom ne $ENV{'user.domain'})) {      if (($uname ne $ENV{'user.name'}) || ($udom ne $ENV{'user.domain'})) {
  $r->print('<h3>Co-Author: '.$uname.' at '.$udom.   $r->print('<h3>Co-Author: '.$uname.' at '.$udom.
Line 236  sub putdirectory { Line 263  sub putdirectory {
     }      }
     unless (( ($dirname eq '..') && ($reqfile eq '')) ||      unless (( ($dirname eq '..') && ($reqfile eq '')) ||
     ($dirname eq '.')) {      ($dirname eq '.')) {
  $r->print('<tr>'.   $r->print('<tr bgcolor="#CCCCFF">'.
   '<td>Click to cwd</td>'.    '<td>Go to ...</td>'.
   '<td><a href="'.$here.'/'.$dirname.'/">'.    '<td><a href="'.$here.'/'.$dirname.'/" target="_top">'.
   $disfilename.'</a></td>'.    $disfilename.'</a></td>'.
         '<td>&nbsp;</td>'.          '<td>&nbsp;</td>'.
   '<td>&nbsp;</td>'.    '<td>&nbsp;</td>'.
   '<td>'.localtime($modtime).'</td>'.    '<td>'.localtime($modtime).'</td>'.
   '</tr>');    "</tr>\n");
     }      }
     return OK;      return OK;
 }  }
Line 256  sub putresource { Line 283  sub putresource {
  $cmtime) = @_;   $cmtime) = @_;
   
     my $status='Unpublished';      my $status='Unpublished';
       my $bgcolor='#FFCCCC';
     my $title='&nbsp;';      my $title='&nbsp;';
     if (-e $resdir.'/'.$filename) {      if (-e $resdir.'/'.$filename) {
  my ($rdev,$rino,$rmode,$rnlink,   my ($rdev,$rino,$rmode,$rnlink,
Line 264  sub putresource { Line 292  sub putresource {
     $rblksize,$rblocks)=stat($resdir.'/'.$filename);      $rblksize,$rblocks)=stat($resdir.'/'.$filename);
  if ($rmtime>=$cmtime) {   if ($rmtime>=$cmtime) {
     $status='Published';      $status='Published';
               $bgcolor='#CCFFCC';
     $title='<a href="/res/'.$targetdir.'/'.$filename.      $title='<a href="/res/'.$targetdir.'/'.$filename.
  '.meta" target=cat>'.   '.meta" target=cat>'.
  getTitleString($targetdir.'/'.$filename, 'title').'</a>';   getTitleString($targetdir.'/'.$filename, 'title').'</a>';
  } else {   } else {
     $status='Modified';      $status='Modified';
               $bgcolor='#FFFFCC';
     $title='<a href="/res/'.$targetdir.'/'.$filename.'.meta" target=cat>'.      $title='<a href="/res/'.$targetdir.'/'.$filename.'.meta" target=cat>'.
  &Apache::lonnet::metadata($targetdir.'/'.$filename,'title').'</a>';   getTitleString($targetdir.'/'.$filename,'title').'</a>';
     if (&Apache::loncommon::fileembstyle(($filename=~/\.(\w+)$/)) eq 'ssi') {      if (&Apache::loncommon::fileembstyle(($filename=~/\.(\w+)$/)) eq 'ssi') {
  $status.='<br><a href="/adm/diff?filename=/~'.$uname.   $status.='<br><a href="/adm/diff?filename=/~'.$uname.
     $thisdisfn.'/'.$filename.      $thisdisfn.'/'.$filename.
     '&versionone=priv" target=cat>Diffs</a>';      '&versiontwo=priv" target=cat>Diffs</a>';
     }      }
  }      }   
  $status.='<br><a href="/adm/retrieve?filename=/~'.$uname.   $status.='<br><a href="/adm/retrieve?filename=/~'.$uname.
     $thisdisfn.'/'.$filename.'" target=cat>Retrieve</a>';      $thisdisfn.'/'.$filename.'" target=cat>Retrieve</a>';
     }      }
     $r->print('<tr>'.      my $editlink='';
       if ($filename=~/\.(xml|html|htm|xhtml|xhtm)$/) {
    $editlink=' (<a href="'.$linkdir.'/'.$filename.'?forceedit=1" target="_top">Edit</a>)';
       }
       if ($filename=~/\.(problem|exam|quiz|assess|survey|form|library)$/) {
    $editlink=' (<a href="'.$linkdir.'/'.$filename.'?forceedit=1" target="_top">EditXML</a>)';
       }
       $r->print('<tr bgcolor="'.$bgcolor.'">'.
       '<td><a target="_parent" href="/adm/publish?filename=/~'.        '<td><a target="_parent" href="/adm/publish?filename=/~'.
       $uname.$thisdisfn.'/'.$filename.'">'.'Publish</a>'.        $uname.$thisdisfn.'/'.$filename.'">'.'Publish</a>'.
       '</td>'.        '</td>'.
       '<td>'.        '<td>'.
       '<a href="'.$linkdir.'/'.$filename.'">'.$filename.'</a>'.        '<a href="'.$linkdir.'/'.$filename.'" target="_top">'.
                  $filename.'</a>'.$editlink.
       '</td>'.        '</td>'.
       '<td>'.$title.'</td>'.        '<td>'.$title.'</td>'.
       '<td>'.$status.'</td>'.        '<td>'.$status.'</td>'.
       '<td>'.localtime($cmtime).'</td>'.        '<td>'.localtime($cmtime).'</td>'.
       '</tr>');        "</tr>\n");
     return OK;      return OK;
 }  }
 #  #
Line 324  __END__ Line 362  __END__
   
 =head1 NAME  =head1 NAME
   
 Apache::lonpubdir - Publication Handler for Directories  Apache::lonpubdir - Construction space directory lister
   
 =head1 SYNOPSIS  =head1 SYNOPSIS
   

Removed from v.1.24  
changed lines
  Added in v.1.35


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.