Diff for /loncom/publisher/loncleanup.pm between versions 1.8 and 1.20

version 1.8, 2006/05/30 12:47:41 version 1.20, 2013/06/04 22:20:16
Line 34  use strict; Line 34  use strict;
 use Apache::File;  use Apache::File;
 use File::Copy;  use File::Copy;
 use Apache::Constants qw(:common :http :methods);  use Apache::Constants qw(:common :http :methods);
 use Apache::loncacc;  
 use Apache::loncommon();  use Apache::loncommon();
   use Apache::lonhtmlcommon();
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::lonnet;  use Apache::lonnet;
 use lib '/home/httpd/lib/perl/';  use lib '/home/httpd/lib/perl/';
 use LONCAPA;  use LONCAPA;
   use HTML::Entities();
     
   
 sub latextrans {  sub latextrans {
Line 248  sub htmlclean { Line 249  sub htmlclean {
   
 sub phaseone {  sub phaseone {
     my ($r,$fn,$uname,$udom)=@_;      my ($r,$fn,$uname,$udom)=@_;
     $r->print(&mt('Select actions to attempt:').      $r->print(
       '<br /><input type="checkbox" name="linefeed" checked="checked" /> '.          &Apache::lonhtmlcommon::start_pick_box()
       &mt('Linefeeds, formfeeds, and carriage returns').         .&Apache::lonhtmlcommon::row_title(&mt('Select actions to attempt'))
       '<br /><input type="checkbox" name="empty" checked="checked" /> '.         .'<label>'
       &mt('Empty tags').         .'<input type="checkbox" name="linefeed" checked="checked" /> '
       '<br /><input type="checkbox" name="lower" checked="checked" /> '.         .&mt('Linefeeds, formfeeds, and carriage returns')
       &mt('Lower casing').         .'</label><br />'
       '<br /><input type="checkbox" name="symbol"checked="checked" /> '.         .'<label>'
       &mt('Symbol font').         .'<input type="checkbox" name="empty" checked="checked" /> '
       '<input type="hidden" name="phase" value="two" />'.         .&mt('Empty tags')
       '<p><input type="submit" value="'.&mt('Cleanup').'" /></p>');         .'</label><br />'
          .'<label>'
          .'<input type="checkbox" name="lower" checked="checked" /> '
          .&mt('Lower casing')
          .'</label><br />'
          .'<label>'
          .'<input type="checkbox" name="symbol" checked="checked" /> '
          .&mt('Symbol font')
          .'</label>'
          .&Apache::lonhtmlcommon::row_closure(1)
          .&Apache::lonhtmlcommon::end_pick_box()
       );
   
       $r->print(
           '<input type="hidden" name="phase" value="two" />'
          .'<p>'
          .'<input type="submit" value="'.&mt('Next').'" />'
          .'</p>'
       );
 }  }
   
 sub phasetwo {  sub phasetwo {
       # Check original file
     my ($r,$fn,$uname,$udom)=@_;      my ($r,$fn,$uname,$udom)=@_;
     open(IN,'/home/'.$uname.'/public_html/'.$fn);  
     my $text='';      my $text='';
     while (my $line=<IN>) {      my $londocroot = $r->dir_config('lonDocRoot');
  $text.=$line;      if (open(IN,"<$londocroot/priv/$udom/$uname".$fn)) {
           while (my $line=<IN>) {
       $text.=$line;
           }
           close(IN);
       }
       # Check if any selection was made
       if ($env{'form.linefeed'} ne 'on' &&
           $env{'form.empty'} ne 'on' &&
           $env{'form.lower'} ne 'on' &&
           $env{'form.symbol'} ne 'on') {
           $r->print(
               '<p class="LC_warning">'
              .&mt('Please select at least one option.')
              .'</p>'
              .'<p><a href="javascript:history.back();">'.&mt('Back').'</p>'
           );
           return;
     }      }
     close(IN);  
     my $uri='/~'.$uname.$fn;      my $uri="/priv/$udom/$uname".$fn;
     my $result=&Apache::lonnet::ssi_body($uri,      my $result=&Apache::lonnet::ssi_body($uri,
  ('grade_target'=>'web',   ('grade_target'=>'web',
   'return_only_error_and_warning_counts' => 1));    'return_only_error_and_warning_counts' => 1));
     my ($errorcount,$warningcount)=split(':',$result);      my ($errorcount,$warningcount)=split(':',$result);
     $r->print(&mt('Original file').': '.  
       $errorcount.' '.&mt('error(s)').', '.      # Display results for original file
       $warningcount.' '.&mt('warning(s)'));      $r->print(
           &Apache::lonhtmlcommon::start_pick_box()
          .&Apache::lonhtmlcommon::row_title(&mt('Original file'))
          .&Apache::lonhtmlcommon::confirm_success(
              &mt('[quant,_1,error]',$errorcount), $errorcount)
          .'<br />'
          .&Apache::lonhtmlcommon::confirm_success(
              &mt('[quant,_1,warning]',$warningcount), $warningcount)
          .&Apache::lonhtmlcommon::row_closure()
       );
   
       # Clean up file
     $text=&htmlclean($text,1,      $text=&htmlclean($text,1,
                ($env{'form.linefeed'} ne 'on'),                 ($env{'form.linefeed'} ne 'on'),
                ($env{'form.empty'} ne 'on'),                 ($env{'form.empty'} ne 'on'),
Line 284  sub phasetwo { Line 331  sub phasetwo {
                ($env{'form.symbol'} ne 'on'));                 ($env{'form.symbol'} ne 'on'));
     my ($main,$ext)=($fn=~/^(.*)\.(\w+)/);      my ($main,$ext)=($fn=~/^(.*)\.(\w+)/);
     my $newfn=$main.'_Auto_Cleaned_Up.'.$ext;      my $newfn=$main.'_Auto_Cleaned_Up.'.$ext;
     open(OUT,'>/home/'.$uname.'/public_html'.$newfn);      if (open(OUT,">$londocroot/priv/$udom/$uname".$newfn)) {
     print OUT $text;          print OUT $text;
     close(OUT);          close(OUT);
     my $newuri='/~'.$uname.$newfn;      }
       my $newuri="/priv/$udom/$uname".$newfn;
     $result=&Apache::lonnet::ssi_body($newuri,      $result=&Apache::lonnet::ssi_body($newuri,
  ('grade_target'=>'web',                                           ('grade_target'=>'web',
   'return_only_error_and_warning_counts' => 1));                                            'return_only_error_and_warning_counts' => 1));
     ($errorcount,$warningcount)=split(':',$result);      ($errorcount,$warningcount)=split(':',$result);
     $r->print('<br />'.&mt('Cleaned up file').': '.  
       $errorcount.' '.&mt('error(s)').', '.      # Display results for cleaned up file
       $warningcount.' '.&mt('warning(s)').      $r->print(
               '<br /><a href="'.$newuri.'" target="prev">'.          &Apache::lonhtmlcommon::row_title(&mt('Cleaned up file'))
       &mt('Open (and edit) cleaned up file in new window').'</a>'.         .&Apache::lonhtmlcommon::confirm_success(
               '<br /><a href="/adm/diff?filename='.&escape($uri).             &mt('[quant,_1,error]',$errorcount), $errorcount)
       '&versionone=priv&filetwo='.         .'<br />'
       &escape($newuri).'" target="prev">'.         .&Apache::lonhtmlcommon::confirm_success(
       &mt('Show diffs in new window').'</a><br />'.             &mt('[quant,_1,warning]',$warningcount), $warningcount)
       '<input type="hidden" name="phase" value="three" />'.         .&Apache::lonhtmlcommon::row_closure()
       '<input type="submit" name="accept" value="'.&mt('Accept Result').'" />'.      );
       '<input type="submit" name="reject" value="'.&mt('Reject Result').'" />'  
       );      # Display actions
       $r->print(
           &Apache::lonhtmlcommon::row_title(&mt('Actions'))
          .'<ul>'
          .'<li><a href="'.$newuri.'" target="prev">'
          .&mt('Open (and edit) cleaned up file in new window')
          .'</a></li>'
          .'<li><a href="'
          .&HTML::Entities::encode(
               '/adm/diff?filename='.&escape($uri)
              .'&versionone=priv&filetwo='.&escape($newuri))
          .'" target="prev">'
          .&mt('Show diffs in new window')
          .'</a></li>'
          .'</ul>'
          .&Apache::lonhtmlcommon::row_closure(1)
          .&Apache::lonhtmlcommon::end_pick_box()
          .'<p>'
          .'<input type="hidden" name="phase" value="three" />'
          .'<input type="submit" name="accept" value="'
          .&mt('Clean Up').'" />'
          .' <input type="submit" name="reject" value="'
          .&mt('Cancel').'" />'
          .'</p>'
       );
 }  }
   
 sub phasethree {  sub phasethree {
     my ($r,$fn,$uname,$udom)=@_;      my ($r,$fn,$uname,$udom)=@_;
     my $old='/home/'.$uname.'/public_html/'.$fn;      my $old=$r->dir_config('lonDocRoot')."/priv/$udom/$uname".$fn;
     my ($main,$ext)=($fn=~/^(.*)\.(\w+)/);      my ($main,$ext)=($fn=~/^(.*)\.(\w+)/);
     my $newfn=$main.'_Auto_Cleaned_Up.'.$ext;      my $newfn=$main.'_Auto_Cleaned_Up.'.$ext;
     my $new='/home/'.$uname.'/public_html'.$newfn;      my $new=$r->dir_config('lonDocRoot')."/priv/$udom/$uname".$newfn;
     if ($env{'form.accept'}) {      if ($env{'form.accept'}) {
  $r->print(&mt('Accepting changes'));          $r->print(
           '<p class="LC_info">'
          .&mt('Accepting changes...')
          .'</p>'
       );
         move($new,$old);          move($new,$old);
     } else {      } else {
  $r->print(&mt('Rejeting changes'));          $r->print(
           '<p class="LC_info">'
          .&mt('Rejecting changes...')
          .'</p>'
           );
         unlink($new);          unlink($new);
     }      }
       $r->print(
           '<p>'
          .&Apache::lonhtmlcommon::confirm_success(&mt('Done')));
           '</p>'
 }  }
   
 # ---------------------------------------------------------------- Main Handler  # ---------------------------------------------------------------- Main Handler
Line 335  sub handler { Line 419  sub handler {
   
     if ($env{'form.filename'}) {      if ($env{'form.filename'}) {
  $fn=$env{'form.filename'};   $fn=$env{'form.filename'};
  $fn=~s/^http\:\/\/[^\/]+//;   $fn=~s{^https?\://[^/]+}{};
     } 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 cleanup', $r->filename);          ' unspecified filename for cleanup', $r->filename); 
Line 352  sub handler { Line 436  sub handler {
     my $uname;      my $uname;
     my $udom;      my $udom;
   
     ($uname,$udom)=      ($uname,$udom)=&Apache::lonnet::constructaccess($fn);
  &Apache::loncacc::constructaccess($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 cleanup file '.$env{'form.filename'}.         ' trying to cleanup file '.$env{'form.filename'}.
Line 362  sub handler { Line 445  sub handler {
  return HTTP_NOT_ACCEPTABLE;   return HTTP_NOT_ACCEPTABLE;
     }      }
   
     $fn=~s/\/\~(\w+)//;  
   
     &Apache::loncommon::content_type($r,'text/html');      &Apache::loncommon::content_type($r,'text/html');
     $r->send_http_header;      $r->send_http_header;
   
     $r->print(&Apache::loncommon::start_page('Cleanup XML Document'));      # Breadcrumbs
       my $brcrum = [{'href' => &Apache::loncommon::authorspace($fn),
                      'text' => 'Authoring Space'},
                     {'href' => '',
                      'text' => 'Cleanup XML Document'}];
   
       $fn=~s{^/priv/$LONCAPA::domain_re/$LONCAPA::username_re}{};
   
       $r->print(&Apache::loncommon::start_page('Cleanup XML Document',
                                                undef,
                                                {'bread_crumbs' => $brcrum,}));
     $r->print('<h2>'.$fn.'</h2>'.      $r->print('<h2>'.$fn.'</h2>'.
               '<form action="/adm/cleanup" method="post">'.                '<form action="/adm/cleanup" method="post">'.
               '<input type="hidden" name="filename" value="'.$env{'form.filename'}.'" />');                '<input type="hidden" name="filename" value="'.$env{'form.filename'}.'" />');
     unless ($fn=~/\.(problem|exam|quiz|assess|survey|form|library|xml|html|htm|xhtml|xhtm|sty)$/) {      unless ($fn=~/\.(problem|exam|quiz|assess|survey|form|library|xml|html|htm|xhtml|xhtm|sty)$/) {
  $r->print(&mt('Cannot cleanup this filetype'));   $r->print('<p class="LC_warning">'.&mt('Cannot cleanup this filetype').'</p>');
     } else {      } else {
  if ($env{'form.phase'} eq 'three') {   if ($env{'form.phase'} eq 'three') {
     &phasethree($r,$fn,$uname,$udom);      &phasethree($r,$fn,$uname,$udom);
Line 383  sub handler { Line 474  sub handler {
  }   }
     }      }
     my $dir=$fn;      my $dir=$fn;
     $dir=~s/\/[^\/]+$/\//;      $dir=~s{[^/]+$}{};
     $r->print('</form>'.      $r->print(
       '<br /><a href="/priv/'.$uname.'/'.$fn.'">'.&mt('Back to Source File').'</a>'.          '</form>'
               '<br /><a href="/priv/'.$uname.'/'.$dir.'">'.&mt('Back to Source Directory').'</a>'.         .&Apache::lonhtmlcommon::actionbox(
       &Apache::loncommon::end_page());              ['<a href="/priv/'.$udom.'/'.$uname.$fn.'">'.
                    &mt('Back to Source File').'</a>',
               '<a href="/priv/'.$udom.'/'.$uname.$dir.'">'.
                   &mt('Back to Source Directory').'</a>'])
          .&Apache::loncommon::end_page()
       );
   
     return OK;        return OK;  
 }  }
   

Removed from v.1.8  
changed lines
  Added in v.1.20


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