Diff for /loncom/interface/londocs.pm between versions 1.88 and 1.94

version 1.88, 2003/10/22 21:41:11 version 1.94, 2003/11/04 19:18:16
Line 402  sub entryline { Line 402  sub entryline {
     $renametitle=~s/\&quot\;/\\\"/g;      $renametitle=~s/\&quot\;/\\\"/g;
     my $line='<tr>';      my $line='<tr>';
 # Edit commands  # Edit commands
     if ($allowed) {       if ($allowed) {
        $line.=(<<END);   my %lt=('up' => 'Move Up',
    'dw' => 'Move Down',
    'rm' => 'Remove',
    'rn' => 'Rename');
         $line.=(<<END);
 <td><table border='0' cellspacing='2' cellpadding='0'>  <td><table border='0' cellspacing='2' cellpadding='0'>
 <tr><td bgcolor="#DDDDDD">  <tr><td bgcolor="#DDDDDD">
 <a href='/adm/coursedocs?folder=$folder&cmd=up_$index'>  <a href='/adm/coursedocs?folder=$folder&cmd=up_$index'>
 <img src="${iconpath}move_up.gif" alt='UP' border='0' /></a></td></tr>  <img src="${iconpath}move_up.gif" alt='$lt{'up'}' border='0' /></a></td></tr>
 <tr><td bgcolor="#DDDDDD">  <tr><td bgcolor="#DDDDDD">
 <a href='/adm/coursedocs?folder=$folder&cmd=down_$index'>  <a href='/adm/coursedocs?folder=$folder&cmd=down_$index'>
 <img src="${iconpath}move_down.gif" alt='DOWN' border='0' /></a></td></tr>  <img src="${iconpath}move_down.gif" alt='$lt{'dw'}' border='0' /></a></td></tr>
 </table></td><td bgcolor="#DDDDDD">  </table></td><td bgcolor="#DDDDDD">
 <a href='javascript:removeres("$folder","$index","$renametitle");'>  <a href='javascript:removeres("$folder","$index","$renametitle");'>
 <font size="-2" color="#990000">Remove</font></a>  <font size="-2" color="#990000">$lt{'rm'}</font></a>
 <a href='javascript:changename("$folder","$index","$renametitle");'>  <a href='javascript:changename("$folder","$index","$renametitle");'>
 <font size="-2" color="#009900">Rename</font></a></td>  <font size="-2" color="#009900">$lt{'rn'}</font></a></td>
 END  END
     }      }
 # Figure out what kind of a resource this is  # Figure out what kind of a resource this is
Line 506  sub checkonthis { Line 510  sub checkonthis {
                  &Apache::lonxml::xmlparse($r,'web',                   &Apache::lonxml::xmlparse($r,'web',
                    &Apache::lonnet::getfile(                     &Apache::lonnet::getfile(
                     &Apache::lonnet::filelocation('',$url)));                      &Apache::lonnet::filelocation('',$url)));
    undef($Apache::lonhomework::parsing_a_problem);
  $ENV{'request.filename'}=$oldpath;   $ENV{'request.filename'}=$oldpath;
                  if (($Apache::lonxml::errorcount) ||                   if (($Apache::lonxml::errorcount) ||
                      ($Apache::lonxml::warningcount)) {                       ($Apache::lonxml::warningcount)) {
Line 570  sub verifycontent { Line 575  sub verifycontent {
   
 sub checkversions {  sub checkversions {
     my $r=shift;      my $r=shift;
    $r->print('<html><head><title>Check Versions</title></head>'.      $r->print('<html><head><title>Check Versions</title></head>'.
               &Apache::loncommon::bodytag('Check Course Document Versions'));                &Apache::loncommon::bodytag('Check Course Document Versions'));
    $hashtied=0;      my $header='';
    &tiehash();      my $startsel='';
    my %changes=&Apache::lonnet::dump      my $monthsel='';
     ('versionupdate',$ENV{'course.'.$ENV{'request.course.id'}.'.domain'},      my $weeksel='';
       my $daysel='';
       my $allsel='';
       my %changes=();
       my $starttime=0;
       my $haschanged=0;
       my %setversions=&Apache::lonnet::dump('resourceversions',
     $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
     $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
   
       $hashtied=0;
       &tiehash();
       my %newsetversions=();
       if ($ENV{'form.setmostrecent'}) {
    $haschanged=1;
    foreach (keys %hash) {
       if ($_=~/^ids\_(\/res\/.+)$/) {
    $newsetversions{$1}='mostrecent';
       }
    }
       } elsif ($ENV{'form.setcurrent'}) {
    $haschanged=1;
    foreach (keys %hash) {
       if ($_=~/^ids\_(\/res\/.+)$/) {
    my $getvers=&Apache::lonnet::getversion($1);
    if ($getvers>0) {
       $newsetversions{$1}=$getvers;
    }
       }
    }
       } elsif ($ENV{'form.setversions'}) {
    $haschanged=1;
    foreach (keys %ENV) {
       if ($_=~/^form\.set_version_(.+)$/) {
    my $src=$1;
    &Apache::lonnet::logthis('Found: '.$1.' '.$ENV{$_});
    if (($ENV{$_}) && ($ENV{$_} ne $setversions{$src})) {
       $newsetversions{$src}=$ENV{$_};
    }
       }
    }
       }
       if ($haschanged) {
           if (&Apache::lonnet::put('resourceversions',\%newsetversions,
     $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
     $ENV{'course.'.$ENV{'request.course.id'}.'.num'}) eq 'ok') {
       $r->print('<h1>'.&mt('Your Version Settings have been Stored').'</h1>');
    } else {
       $r->print('<h1><font color="red">'.&mt('An Error Occured while Attempting to Store your Version Settings').'</font></h1>');
    }
    &changewarning($r,'');
       }
       if ($ENV{'form.timerange'} eq 'all') {
   # show all documents
    $header=&mt('All Documents in Course');
    $allsel=1;
    foreach (keys %hash) {
       if ($_=~/^ids\_(\/res\/.+)$/) {
    my $src=$1;
    $changes{$src}=1;
       }
    }
       } else {
   # show documents which changed
    %changes=&Apache::lonnet::dump
    ('versionupdate',$ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
                      $ENV{'course.'.$ENV{'request.course.id'}.'.num'});                       $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
    my $firstkey=(keys %changes)[0];   my $firstkey=(keys %changes)[0];
    unless ($firstkey=~/^error\:/) {   unless ($firstkey=~/^error\:/) {
        unless ($ENV{'form.timerange'}) {      unless ($ENV{'form.timerange'}) {
    $ENV{'form.timerange'}=604800;   $ENV{'form.timerange'}=604800;
        }      }
        my $seltext=&mt('during the last').' '.$ENV{'form.timerange'}.' '      my $seltext=&mt('during the last').' '.$ENV{'form.timerange'}.' '
    .&mt('seconds');   .&mt('seconds');
        my $startsel='';      if ($ENV{'form.timerange'}==-1) {
        my $monthsel='';   $seltext='since start of course';
        my $weeksel='';   $startsel='selected';
        my $daysel='';   $ENV{'form.timerange'}=time;
        my $allsel='';      }
        if ($ENV{'form.timerange'}==-1) {      $starttime=time-$ENV{'form.timerange'};
    $seltext='since start of course';      if ($ENV{'form.timerange'}==2592000) {
            $startsel='selected';   $seltext=&mt('during the last month').' ('.&Apache::lonlocal::locallocaltime($starttime).')';
            $ENV{'form.timerange'}=time;   $monthsel='selected';
        }      } elsif ($ENV{'form.timerange'}==604800) {
        my $starttime=time-$ENV{'form.timerange'};   $seltext=&mt('during the last week').' ('.&Apache::lonlocal::locallocaltime($starttime).')';
        if ($ENV{'form.timerange'}==2592000) {   $weeksel='selected';
            $seltext=&mt('during the last month').' ('.&Apache::lonlocal::locallocaltime($starttime).')';      } elsif ($ENV{'form.timerange'}==86400) {
            $monthsel='selected';   $seltext=&mt('since yesterday').' ('.&Apache::lonlocal::locallocaltime($starttime).')';
        } elsif ($ENV{'form.timerange'}==604800) {   $daysel='selected';
            $seltext=&mt('during the last week').' ('.&Apache::lonlocal::locallocaltime($starttime).')';      }
            $weeksel='selected';      $header=&mt('Content changed').' '.$seltext;
        } elsif ($ENV{'form.timerange'}==86400) {   } else {
            $seltext=&mt('since yesterday').' ('.&Apache::lonlocal::locallocaltime($starttime).')';      $header=&mt('No content modifications yet.');
            $daysel='selected';   }
        } elsif ($ENV{'form.timerange'} eq 'all') {      }
    $allsel='all';      %setversions=&Apache::lonnet::dump('resourceversions',
        }    $ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
        my %lt=&Apache::lonlocal::texthash    $ENV{'course.'.$ENV{'request.course.id'}.'.num'});
       my %lt=&Apache::lonlocal::texthash
       ('st' => 'Version changes since start of Course',        ('st' => 'Version changes since start of Course',
        'lm' => 'Version changes since last Month',         'lm' => 'Version changes since last Month',
        'lw' => 'Version changes since last Week',         'lw' => 'Version changes since last Week',
        'sy' => 'Version changes since Yesterday',         'sy' => 'Version changes since Yesterday',
                'al' => 'All Resources',                 'al' => 'All Resources (possibly large output)',
        'sd' => 'Display',         'sd' => 'Display',
                'cc' => 'Content changed',  
        'fi' => 'File',         'fi' => 'File',
        'md' => 'Modification Date',         'md' => 'Modification Date',
                'mr' => 'Most recently published Version',                 'mr' => 'Most recently published Version',
        've' => 'Version used in Course',         've' => 'Version used in Course',
                'vu' => 'Set Version to be used in Course',                  'vu' => 'Set Version to be used in Course',
   'sv' => 'Set Versions to be used in Course according to Selections below',
   'sm' => 'Keep all Resources up-to-date with most recent Versions (default)',
   'sc' => 'Set all Resource Versions to current Version (Fix Versions)',
        'di' => 'Differences');         'di' => 'Differences');
        $r->print(<<ENDHEADERS);      $r->print(<<ENDHEADERS);
 <form action="/adm/coursedocs" method="post">  <form action="/adm/coursedocs" method="post">
   <input type="hidden" name="versions" value="1" />
   <input type="submit" name="setmostrecent" value="$lt{'sm'}" />
   <input type="submit" name="setcurrent" value="$lt{'sc'}" /><hr />
 <select name="timerange">  <select name="timerange">
 <option value='all' $allsel>$lt{'al'}</option>  <option value='all' $allsel>$lt{'al'}</option>
 <option value="-1" $startsel>$lt{'st'}</option>  <option value="-1" $startsel>$lt{'st'}</option>
Line 630  sub checkversions { Line 706  sub checkversions {
 <option value="604800" $weeksel>$lt{'lw'}</option>  <option value="604800" $weeksel>$lt{'lw'}</option>
 <option value="86400" $daysel>$lt{'sy'}</option>  <option value="86400" $daysel>$lt{'sy'}</option>
 </select>  </select>
 <input type="submit" name="versions" value="$lt{'sd'}" />  <input type="submit" name="display" value="$lt{'sd'}" />
 </form>  <h3>$header</h3>
 <h3>$lt{'cc'} $seltext</h3>  <input type="submit" name="setversions" value="$lt{'sv'}" />
 <table border="2">  <table border="2">
 <tr>  <tr>
 <th>$lt{'fi'}</th><th>$lt{'md'}</th><th>$lt{'mr'}</th>  <th>$lt{'fi'}</th><th>$lt{'md'}</th><th>$lt{'mr'}</th>
 <th>$lt{'ve'}</th><th>$lt{'vu'}</th><th>$lt{'di'}</th></tr>  <th>$lt{'ve'}</th><th>$lt{'vu'}</th><th>$lt{'di'}</th></tr>
 ENDHEADERS  ENDHEADERS
        foreach (keys %changes) {      foreach (sort keys %changes) {
   if ($changes{$_}>$starttime) {   if ($changes{$_}>$starttime) {
      my ($root,$extension)=($_=~/^(.*)\.(\w+)$/);      my ($root,$extension)=($_=~/^(.*)\.(\w+)$/);
              my $currentversion=&Apache::lonnet::getversion($_);      my $currentversion=&Apache::lonnet::getversion($_);
              my $linkurl=&Apache::lonnet::clutter($_);      if ($currentversion<0) {
              $r->print(   $currentversion=&mt('Could not be determined.');
                  '<tr><td><a href="'.$linkurl.'" target="cat">'.$linkurl.      }
                  '</a></td><td>'.      my $linkurl=&Apache::lonnet::clutter($_);
                  &Apache::lonlocal::locallocaltime($changes{$_}).      $r->print(
         '<tr><td><b>'.
         &Apache::lonnet::gettitle($linkurl).
      '</b><br /><a href="'.$linkurl.'" target="cat">'.$linkurl.
         '</a></td><td>'.
         &Apache::lonlocal::locallocaltime($changes{$_}).
                       '</td><td><font size="+2">'.                        '</td><td><font size="+2">'.
        $currentversion.'</font></td><td><font size="+2">');        $currentversion.'</font></td><td><font size="+2">');
 # Used in course  # Used in course
      my $usedversion=$hash{'version_'.$linkurl};      my $usedversion=$hash{'version_'.$linkurl};
      if ($usedversion) {      if (($usedversion) && ($usedversion ne 'mostrecent')) {
  $r->print($usedversion);   $r->print($usedversion);
      } else {      } else {
  $r->print($currentversion);   $r->print($currentversion);
      }      }
      $r->print('</font></td><td>');      $r->print('</font></td><td>');
 # Set version  # Set version
      $r->print(&Apache::loncommon::select_form($usedversion,      $r->print(&Apache::loncommon::select_form($setversions{$linkurl},
        'set_version_'.$linkurl,        'set_version_'.$linkurl,
                                ('' => '',        ('' => '',
                               'current' => 'current',         'mostrecent' => 'most recent',
                                map {$_,$_} (1..$currentversion))));         map {$_,$_} (1..$currentversion))));
      $r->print('</td><td>');      $r->print('</td><td><font size="1"><ul>');
              my $lastold=1;      my $lastold=1;
              for (my $prevvers=1;$prevvers<$currentversion;$prevvers++) {      for (my $prevvers=1;$prevvers<$currentversion;$prevvers++) {
                  my $url=$root.'.'.$prevvers.'.'.$extension;   my $url=$root.'.'.$prevvers.'.'.$extension;
                  if (&Apache::lonnet::metadata($url,'lastrevisiondate')<   if (&Apache::lonnet::metadata($url,'lastrevisiondate')<
                                                              $starttime) {      $starttime) {
                      $lastold=$prevvers;      $lastold=$prevvers;
                  }   }
              }      }
             for (my $prevvers=$lastold;$prevvers<$currentversion;$prevvers++) {              for (my $prevvers=$lastold;$prevvers<$currentversion;$prevvers++) {
                  my $url=$root.'.'.$prevvers.'.'.$extension;   my $url=$root.'.'.$prevvers.'.'.$extension;
                  $r->print('<a href="'.&Apache::lonnet::clutter($url).   $r->print('<li><a href="'.&Apache::lonnet::clutter($url).
                    '">'.&mt('Version').' '.$prevvers.' ('.    '">'.&mt('Version').' '.$prevvers.'</a> ('.
                  &Apache::lonlocal::locallocaltime(&Apache::lonnet::metadata($url,'lastrevisiondate')).    &Apache::lonlocal::locallocaltime(&Apache::lonnet::metadata($url,'lastrevisiondate')).
                  ')</a>');    ')');
                  if (&Apache::loncommon::fileembstyle($extension) eq 'ssi') {   if (&Apache::loncommon::fileembstyle($extension) eq 'ssi') {
                     $r->print(' <a href="/adm/diff?filename='.                      $r->print(' <a href="/adm/diff?filename='.
                             &Apache::lonnet::clutter($root.'.'.$extension).        &Apache::lonnet::clutter($root.'.'.$extension).
                             '&versionone='.$prevvers.        '&versionone='.$prevvers.
      '">'.&mt('Diffs').'</a>');        '">'.&mt('Diffs').'</a>');
                  }   }
                  $r->print('<br />');   $r->print('</li>');
              }      }
              $r->print('</td></tr>');      $r->print('</ul></font></td></tr>');
           }   }
        }      }
        $r->print('</table>');      $r->print('</table></form>');
        $r->print('<h1>'.&mt('Done').'.</h1>');      $r->print('<h1>'.&mt('Done').'.</h1>');
    } else {  
        $r->print('<p>'.&mt('No content modifications yet.').'</p>');      &untiehash();
    }  }
    &untiehash();  
   sub changewarning {
       my ($r,$postexec)=@_;
       $r->print(
   '<script>function reinit(tf) { tf.submit();'.$postexec.' }</script>'. 
   '<form method="post" action="/adm/roles" target="loncapaclient">'.
   '<input type="hidden" name="orgurl" value="/adm/coursedocs" /><input type="hidden" name="selectrole" value="1" /><h3><font color="red">'.
   &mt('Changes will become active for your current session after').
   ' <input type="hidden" name="'.
   $ENV{'request.role'}.'" value="1" /><input type="button" value="'.
   &mt('re-initializing course').'" onClick="reinit(this.form)"/>'.&mt(', or the next time you log in.').
   $help{'Caching'}.'</font></h3></form>');
 }  }
   
 # ================================================================ Main Handler  # ================================================================ Main Handler
Line 944  ENDCOURSEVERIFY Line 1036  ENDCOURSEVERIFY
        $hadchanges=0;         $hadchanges=0;
        &editor($r,$coursenum,$coursedom,$folder,$allowed);         &editor($r,$coursenum,$coursedom,$folder,$allowed);
        if ($hadchanges) {         if ($hadchanges) {
    $r->print(     &changewarning($r,$postexec);
 '<script>function reinit(tf) { tf.submit();'.$postexec.' }</script>'.   
 '<form method="post" action="/adm/roles" target="loncapaclient">'.  
 '<input type="hidden" name="orgurl" value="/adm/coursedocs" /><input type="hidden" name="selectrole" value="1" /><h3><font color="red">'.  
 &mt('Changes will become active for your current session after').  
 ' <input type="hidden" name="'.  
 $ENV{'request.role'}.'" value="1" /><input type="button" value="'.  
 &mt('re-initializing course').'" onClick="reinit(this.form)"/>'.&mt(', or the next time you log in.').  
 $help{'Caching'}.'</font></h3></form>');  
        }         }
        my $folderseq='/uploaded/'.$coursedom.'/'.$coursenum.'/default_'.time.         my $folderseq='/uploaded/'.$coursedom.'/'.$coursenum.'/default_'.time.
                      '.sequence';                       '.sequence';

Removed from v.1.88  
changed lines
  Added in v.1.94


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