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

version 1.34.2.2, 2008/12/21 04:38:43 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 127  sub phaseone { Line 192  sub phaseone {
  $r->print(&Apache::loncommon::end_data_table_row().   $r->print(&Apache::loncommon::end_data_table_row().
   &Apache::loncommon::end_data_table().    &Apache::loncommon::end_data_table().
   '<p>'.'<span class="LC_warning">'.    '<p>'.'<span class="LC_warning">'.
   &mt('Retrieval of an old version will overwrite the file currently in construction space.').'</span></p>');    &mt('Retrieval of an old version will overwrite the file currently in construction space').'</span></p>');
  if (!$is_meta) {   if (!$is_meta) {
     $r->print('<p>'.'<span class="LC_warning">'.      $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.').        &mt('This will only retrieve the resource, if you want to retrieve the metadata you will need to do that separately.').
       '</span></p>');        '</span></p>');
  }   }
  $r->print('<input type="submit" value="'.&mt('Retrieve version').'" /></form>');   $r->print('<input type="submit" value="'.&mt('Retrieve version').'" /></form>');
     } else {      } else {
  $r->print('<p class="LC_warning">'.&mt('No previous versions published.').'</p>');   $r->print('<h3>'.&mt('No previous versions published.').'</h3>');
     }      }
     $r->print('<p><a href="/priv/'.$uname.$fn.'">'.&mt('Back to [_1]','<span class="LC_filename">'.$fn.'</span>')      $r->print('<p><a href="/priv/'.$uname.$fn.'">'.&mt('Back to').' '.$fn.
       .'</a></p>');         '</a></p>'); 
 }  }
   
 # ---------------------------------- Interface for presenting specified version  # ---------------------------------- Interface for presenting specified version
Line 166  sub phasetwo { Line 231  sub phasetwo {
  if ($is_meta) { $logname =~ s/\.meta$//; }   if ($is_meta) { $logname =~ s/\.meta$//; }
  $logname = $ctarget.'.log';   $logname = $ctarget.'.log';
         unless ($logfile=Apache::File->new('>>'.$logname)) {          unless ($logfile=Apache::File->new('>>'.$logname)) {
   $r->print('<span class="LC_error">'    $r->print(
                     .&mt('No write permission to user directory, FAIL')           '<font color=red>'.&mt('No write permission to user directory, FAIL').'</font>');
                     .'</span>');  
         }          }
         print $logfile           print $logfile 
 "\n\n================= Retrieve ".localtime()." ================\n".  "\n\n================= Retrieve ".localtime()." ================\n".
 "Version: $version\nSource: $csource\nTarget: $ctarget\n";  "Version: $version\nSource: $csource\nTarget: $ctarget\n";
         $r->print('<p>'.&mt('Copying file').': ');          $r->print('<p>'.&mt('Copying file').': ');
  if (copy($csource,$ctarget)) {   if (copy($csource,$ctarget)) {
     $r->print('<span class="LC_success">'      $r->print('ok<p>');
                       .&mt('ok')  
                       .'</span>');  
             print $logfile "Copied sucessfully.\n\n";              print $logfile "Copied sucessfully.\n\n";
         } else {          } else {
             my $error=$!;              my $error=$!;
     $r->print('<span class="LC_error">'      $r->print('fail, '.$error.'<p>');
                       .&mt('Copy failed: [_1]',$error)  
                       .'</span>');  
             print $logfile "Copy failed: $error\n\n";              print $logfile "Copy failed: $error\n\n";
         }          }
         $r->print('</p>'          $r->print('<font size=+2><a href="/priv/'.$uname.$fn.
                   .'<p><a href="/priv/'.$uname.$fn.'">'                    '">'.&mt('Back to').' '.$fn.'</a></font>'); 
                   .&mt('Back to [_1]',$fn)  
                   .'</a></p>');   
     } else {      } else {
        $r->print('<p class="LC_info">'.&mt('Please pick a version to retrieve:').'</p>');         $r->print('<span class="LC_warning">'.&mt('Please pick a version to retrieve').'</span><p>');
        &phaseone($r,$fn,$uname,$udom);         &phaseone($r,$fn,$uname,$udom);
     }      }
 }  }
Line 223  sub handler { Line 281  sub handler {
   
   if ($env{'form.filename'}) {    if ($env{'form.filename'}) {
       $fn=$env{'form.filename'};        $fn=$env{'form.filename'};
       $fn=~s/^https?\:\/\/[^\/]+//;        $fn=~s/^http\:\/\/[^\/]+//;
   } else {    } else {
      $r->log_reason($env{'user.name'}.' at '.$env{'user.domain'}.       $r->log_reason($env{'user.name'}.' at '.$env{'user.domain'}.
          ' unspecified filename for retrieval', $r->filename);            ' unspecified filename for retrieval', $r->filename); 
Line 258  sub handler { Line 316  sub handler {
   $r->print(&Apache::loncommon::start_page('Retrieve Published Resources'));    $r->print(&Apache::loncommon::start_page('Retrieve Published Resources'));
   
       
   $r->print('<h1>'    $r->print('<h1>'.&mt('Retrieve previous versions of').' <tt>'.$fn.'</tt></h1>');
             .&mt('Retrieve previous versions of [_1]'  
                     ,'<span class="LC_filename">'.$fn.'</span>')  
             .'</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><span class="LC_diff_coauthor">'.&mt('Co-Author').': '.$uname.            $r->print('<h3><span class="LC_diff_coauthor">'.&mt('Co-Author').': '.$uname.
Line 283  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.34.2.2  
changed lines
  Added in v.1.35


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