Diff for /loncom/publisher/lonretrieve.pm between versions 1.31 and 1.35

version 1.31, 2006/09/13 21:43:26 version 1.35, 2008/11/10 14:11:08
Line 28 Line 28
 #  #
 ###  ###
   
   =head1 NAME
   
   Apache::lonretrieve - retrieves an old version of a file
   
   =head1 SYNOPSIS
   
   Invoked by /etc/httpd/conf/srm.conf:
   
    <Location /adm/retrieve>
    PerlAccessHandler       Apache::lonacc
    SetHandler perl-script
    PerlHandler Apache::lonretrieve
    ErrorDocument     403 /adm/login
    ErrorDocument     404 /adm/notfound.html
    ErrorDocument     406 /adm/unauthorized.html
    ErrorDocument  500 /adm/errorhandler
    </Location>
   
   =head1 INTRODUCTION
   
   This module retrieves an old published version of a file.
   
   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 *
   
   Get query string for limited number of parameters
   
   =item *
   
   Start page output
   
   =item *
   
   print phase relevant output
   
   =item *
   
   (phase one is to select version; phase two retrieves version)
   
   =back
   
   =head1 OTHER SUBROUTINES
   
   =over 4
   
   =item *
   
   phaseone() : Interface for selecting previous version.
   
   =item *
   
   phasetwo() : Interface for presenting specified version.
   
   =back
   
   =cut
   
 package Apache::lonretrieve;  package Apache::lonretrieve;
   
 use strict;  use strict;
Line 38  use Apache::loncacc; Line 103  use Apache::loncacc;
 use Apache::loncommon();  use Apache::loncommon();
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonnet;  use Apache::lonnet;
   use LONCAPA();
   
 # ------------------------------------ Interface for selecting previous version  # ------------------------------------ Interface for selecting previous version
 sub phaseone {  sub phaseone {
Line 54  sub phaseone { Line 120  sub phaseone {
     my ($main,$suffix,$is_meta) = &get_file_info($fn);      my ($main,$suffix,$is_meta) = &get_file_info($fn);
           
     if (-e $resfn) {        if (-e $resfn) {  
     $r->print('<form action=/adm/retrieve method=post>'.   $r->print('<form action="/adm/retrieve" method="POST">'.
       '<input type=hidden name=filename value="/~'.$uname.$fn.'">'.    '<input type="hidden" name="filename" value="/~'.$uname.$fn.'" />'.
               '<input type=hidden name=phase value=two>'.    '<input type="hidden" name="phase" value="two" />'.
               '<table border=2><tr><th>'.&mt('Select').'</th><th>'.    &Apache::loncommon::start_data_table().
       &mt('Version').'</th>'.    &Apache::loncommon::start_data_table_header_row().
               '<th>'.&mt('Published on ...').'</th>');    '<th>'.&mt('Select').'</th>'.
     if (!$is_meta) {    '<th>'.&mt('Version').'</th>'.
  $r->print('<th>'.&mt('Metadata').'</th>');    '<th>'.&mt('Published on ...').'</th>');
     }   if (!$is_meta) {
     if ($is_meta      $r->print('<th>'.&mt('Metadata').'</th>');
  || &Apache::loncommon::fileembstyle($suffix) eq 'ssi') {   }
  $r->print('<th>'.&mt('Diffs').'</th>');   if ($is_meta
     }      || &Apache::loncommon::fileembstyle($suffix) eq 'ssi') {
     $r->print('</tr>');      $r->print('<th>'.&mt('Diffs').'</th>');
        }
     opendir(DIR,$resdir);   $r->print(&Apache::loncommon::end_data_table_header_row());
     my @files = grep(/^\Q$main\E\.(\d+)\.\Q$suffix\E$/,readdir(DIR));  
     @files = sort {   opendir(DIR,$resdir);
  my ($aver) = ($a=~/^\Q$main\E\.(\d+)\.\Q$suffix\E$/);   my @files = grep(/^\Q$main\E\.(\d+)\.\Q$suffix\E$/,readdir(DIR));
  my ($bver) = ($b=~/^\Q$main\E\.(\d+)\.\Q$suffix\E$/);   @files = sort {
  return $aver <=> $bver;      my ($aver) = ($a=~/^\Q$main\E\.(\d+)\.\Q$suffix\E$/);
     } (@files);      my ($bver) = ($b=~/^\Q$main\E\.(\d+)\.\Q$suffix\E$/);
     closedir(DIR);      return $aver <=> $bver;
    } (@files);
     foreach my $filename (@files) {   closedir(DIR);
         if ($filename=~/^\Q$main\E\.(\d+)\.\Q$suffix\E$/) {  
    my $version=$1;   foreach my $filename (@files) {
            my $rmtime=&Apache::lonnet::metadata($resdir.'/'.$filename,'lastrevisiondate');      if ($filename=~/^\Q$main\E\.(\d+)\.\Q$suffix\E$/) {
            $r->print('<tr><td><input type=radio name=version value="'.   my $version=$1;
                      $version.'"></td><td>'.&mt('Previously published version').' '.$version.'</td><td>'.   my $rmtime=&Apache::lonnet::metadata($resdir.'/'.$filename,'lastrevisiondate');
                      localtime($rmtime).'</td>');   $r->print(&Apache::loncommon::start_data_table_row().
          '<td><input type="radio" name="version" value="'.
    if (!$is_meta) {    $version.'" /></td><td>'.&mt('Previously published version').' '.$version.'</td><td>'.
        $r->print('<td><a href="'.$urldir.$filename.'.meta" target=cat>'.    localtime($rmtime).'</td>');
  &mt('Metadata Version').' '.$version.'</a></td>');  
    }   if (!$is_meta) {
            if ($is_meta      $r->print('<td><a href="'.$urldir.$filename.'.meta" target=cat>'.
        || &Apache::loncommon::fileembstyle($suffix) eq 'ssi') {        &mt('Metadata Version').' '.$version.'</a></td>');
                $r->print(   }
                     '<td><a target=cat href="/adm/diff?filename=/~'.   if ($is_meta
                         $uname.$fn.      || &Apache::loncommon::fileembstyle($suffix) eq 'ssi') {
                         '&versiontwo=priv&versionone='.$version.      $r->print(
  '">'.&mt('Diffs with Version').' '.$version.        '<td><a target="cat" href="/adm/diff?filename=/~'.
  '</a></td>');        $uname.$fn.
            }        '&amp;versiontwo=priv&amp;versionone='.$version.
            $r->print('</tr>');        '">'.&mt('Diffs with Version').' '.$version.
         }        '</a></td>');
     }   }
     closedir(DIR);   $r->print(&Apache::loncommon::end_data_table_row());
     my $rmtime=&Apache::lonnet::metadata($resfn,'lastrevisiondate');      }
     $r->print('<tr><td><input type=radio name=version value="new"></td>'.   }
               '<th>'.&mt('Currently published version').'</th><td>'.localtime($rmtime).   closedir(DIR);
            '</td>');   my $rmtime=&Apache::lonnet::metadata($resfn,'lastrevisiondate');
     if (!$is_meta) {   $r->print(&Apache::loncommon::start_data_table_row().
  $r->print('<td><a href="'.$urldir.$main.'.'.$suffix.'.meta" target=cat>'.    '<td><input type="radio" name="version" value="new" /></td>'.
   &mt('Metadata current version').'</a></td>');               '<td><b>'.&mt('Currently published version').'</b></td><td>'.localtime($rmtime).
     '</td>');
    if (!$is_meta) {
       $r->print('<td><a href="'.$urldir.$main.'.'.$suffix.'.meta" target=cat>'.
         &mt('Metadata current version').'</a></td>');           
    }
    if ($is_meta 
       || &Apache::loncommon::fileembstyle($suffix) eq 'ssi') {
       $r->print(
         '<td><a target="cat" href="/adm/diff?filename=/~'.
         $uname.$fn.
         '&amp;versiontwo=priv'.
         '">'.&mt('Diffs with current Version').'</a></td>');
    }
    $r->print(&Apache::loncommon::end_data_table_row().
     &Apache::loncommon::end_data_table().
     '<p>'.'<span class="LC_warning">'.
     &mt('Retrieval of an old version will overwrite the file currently in construction space').'</span></p>');
    if (!$is_meta) {
       $r->print('<p>'.'<span class="LC_warning">'.
         &mt('This will only retrieve the resource, if you want to retrieve the metadata you will need to do that separately.').
         '</span></p>');
    }
    $r->print('<input type="submit" value="'.&mt('Retrieve version').'" /></form>');
       } else {
    $r->print('<h3>'.&mt('No previous versions published.').'</h3>');
     }      }
            if ($is_meta   
        || &Apache::loncommon::fileembstyle($suffix) eq 'ssi') {  
                $r->print(  
                     '<td><a target=cat href="/adm/diff?filename=/~'.  
                         $uname.$fn.  
                         '&versiontwo=priv'.  
                         '">'.&mt('Diffs with current Version').'</a></td>');  
            }  
            $r->print('</tr></table><p>'.  
            '<font size=+1 color=red>'.  
 &mt('Retrieval of an old version will overwrite the file currently in construction space').'</font><p>'.  
            '<input type=submit value="'.&mt('Retrieve version').'"></form>');  
 } else {  
     $r->print('<h3>'.&mt('No previous versions published.').'</h3>');  
 }  
     $r->print('<p><a href="/priv/'.$uname.$fn.'">'.&mt('Back to').' '.$fn.      $r->print('<p><a href="/priv/'.$uname.$fn.'">'.&mt('Back to').' '.$fn.
       '</a></p>');         '</a></p>'); 
 }  }
Line 173  sub phasetwo { Line 249  sub phasetwo {
         $r->print('<font size=+2><a href="/priv/'.$uname.$fn.          $r->print('<font size=+2><a href="/priv/'.$uname.$fn.
                   '">'.&mt('Back to').' '.$fn.'</a></font>');                     '">'.&mt('Back to').' '.$fn.'</a></font>'); 
     } else {      } else {
        $r->print(         $r->print('<span class="LC_warning">'.&mt('Please pick a version to retrieve').'</span><p>');
    '<font size=+1 color=red>'.&mt('Please pick a version to retrieve').'</font><p>');  
        &phaseone($r,$fn,$uname,$udom);         &phaseone($r,$fn,$uname,$udom);
     }      }
 }  }
Line 233  sub handler { Line 308  sub handler {
      return HTTP_NOT_ACCEPTABLE;       return HTTP_NOT_ACCEPTABLE;
   }    }
   
   $fn=~s/\/\~(\w+)//;    $fn=~s{/~($LONCAPA::username_re)}{};
   
   &Apache::loncommon::content_type($r,'text/html');    &Apache::loncommon::content_type($r,'text/html');
   $r->send_http_header;    $r->send_http_header;
Line 244  sub handler { Line 319  sub handler {
   $r->print('<h1>'.&mt('Retrieve previous versions of').' <tt>'.$fn.'</tt></h1>');    $r->print('<h1>'.&mt('Retrieve previous versions of').' <tt>'.$fn.'</tt></h1>');
       
   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><font color=red>'.&mt('Co-Author').': '.$uname.            $r->print('<h3><span class="LC_diff_coauthor">'.&mt('Co-Author').': '.$uname.
     &mt(' at ').$udom.      &mt(' at ').$udom.
                '</font></h3>');                 '</span></h3>');
   }    }
   
   
Line 263  sub handler { Line 338  sub handler {
 1;  1;
 __END__  __END__
   
 =head1 NAME  
   
 Apache::lonretrieve - retrieves an old version of a file  
   
 =head1 SYNOPSIS  
   
 Invoked by /etc/httpd/conf/srm.conf:  
   
  <Location /adm/retrieve>  
  PerlAccessHandler       Apache::lonacc  
  SetHandler perl-script  
  PerlHandler Apache::lonretrieve  
  ErrorDocument     403 /adm/login  
  ErrorDocument     404 /adm/notfound.html  
  ErrorDocument     406 /adm/unauthorized.html  
  ErrorDocument  500 /adm/errorhandler  
  </Location>  
   
 =head1 INTRODUCTION  
   
 This module retrieves an old published version of a file.  
   
 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 *  
   
 Get query string for limited number of parameters  
   
 =item *  
   
 Start page output  
   
 =item *  
   
 print phase relevant output  
   
 =item *  
   
 (phase one is to select version; phase two retrieves version)  
   
 =back  
   
 =head1 OTHER SUBROUTINES  
   
 =over 4  
   
 =item *  
   
 phaseone() : Interface for selecting previous version.  
   
 =item *  
   
 phasetwo() : Interface for presenting specified version.  
   
 =back  
   
 =cut  

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


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