Diff for /loncom/publisher/lonpublisher.pm between versions 1.232 and 1.243

version 1.232, 2008/03/18 23:31:31 version 1.243, 2008/08/01 18:09:38
Line 123  use Apache::loncacc; Line 123  use Apache::loncacc;
 use DBI;  use DBI;
 use Apache::lonnet;  use Apache::lonnet;
 use Apache::loncommon();  use Apache::loncommon();
   use Apache::lonhtmlcommon;
 use Apache::lonmysql;  use Apache::lonmysql;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::loncfile;  use Apache::loncfile;
Line 143  my $cudom; Line 144  my $cudom;
 my $registered_cleanup;  my $registered_cleanup;
 my $modified_urls;  my $modified_urls;
   
   my $lock;
   
 =pod  =pod
   
 =item B<metaeval>  =item B<metaeval>
Line 272  sub metaread { Line 275  sub metaread {
     }      }
     &metaeval($metastring,$prefix);      &metaeval($metastring,$prefix);
     return '<br /><b>'.&mt('Processed file').':</b> <tt>'.      return '<br /><b>'.&mt('Processed file').':</b> <tt>'.
  &Apache::loncfile::display($fn).'</tt>';   &Apache::loncfile::display($fn).'</tt><br />';
 }  }
   
 #########################################  #########################################
Line 323  string which presents the form field (fo Line 326  string which presents the form field (fo
 #########################################  #########################################
 #########################################  #########################################
 sub textfield {  sub textfield {
     my ($title,$name,$value)=@_;      my ($title,$name,$value,$noline)=@_;
     $value=~s/^\s+//gs;      $value=~s/^\s+//gs;
     $value=~s/\s+$//gs;      $value=~s/\s+$//gs;
     $value=~s/\s+/ /gs;      $value=~s/\s+/ /gs;
     $title=&mt($title);      $title=&mt($title);
     $env{'form.'.$name}=$value;      $env{'form.'.$name}=$value;
     return "\n<p><font color=\"#800000\" face=\"helvetica\"><b>$title:".      return "\n".&Apache::lonhtmlcommon::row_title($title)
            "</b></font></p><br />".             .'<input type="text" name="'.$name.'" size="80" value="'.$value.'" />'
            '<input type="text" name="'.$name.'" size=80 value="'.$value.'" />';             .&Apache::lonhtmlcommon::row_closure($noline);
 }  }
   
 sub text_with_browse_field {  sub text_with_browse_field {
     my ($title,$name,$value,$restriction)=@_;      my ($title,$name,$value,$restriction,$noline)=@_;
     $value=~s/^\s+//gs;      $value=~s/^\s+//gs;
     $value=~s/\s+$//gs;      $value=~s/\s+$//gs;
     $value=~s/\s+/ /gs;      $value=~s/\s+/ /gs;
     $title=&mt($title);      $title=&mt($title);
     $env{'form.'.$name}=$value;      $env{'form.'.$name}=$value;
     return "\n<p><font color=\"#800000\" face=\"helvetica\"><b>$title:".      return "\n".&Apache::lonhtmlcommon::row_title($title)
            "</b></font></p><br />".            .'<input type="text" name="'.$name.'" size="80" value="'.$value.'" />'
            '<input type="text" name="'.$name.'" size=80 value="'.$value.'" />'.            .'<br />'
    '<a href="javascript:openbrowser(\'pubform\',\''.$name.'\',\''.$restriction.'\');">'.&mt('Select').'</a>&nbsp;'.    .'<a href="javascript:openbrowser(\'pubform\',\''.$name.'\',\''.$restriction.'\');">'
    '<a href="javascript:opensearcher(\'pubform\',\''.$name.'\');">'.&mt('Search').'</a>';            .&mt('Select')
                .'</a>&nbsp;'
     .'<a href="javascript:opensearcher(\'pubform\',\''.$name.'\');">'
             .&mt('Search')
             .'</a>'
             .&Apache::lonhtmlcommon::row_closure($noline);
 }  }
   
 sub hiddenfield {  sub hiddenfield {
Line 370  sub selectbox { Line 377  sub selectbox {
     } else {      } else {
  $env{'form.'.$name}=$idlist[0];   $env{'form.'.$name}=$idlist[0];
     }      }
     my $selout="\n<p><font color=\"#800000\" face=\"helvetica\"><b>$title:".      my $selout="\n".&Apache::lonhtmlcommon::row_title($title)
  '</b></font></p><br /><select name="'.$name.'">';                .'<select name="'.$name.'">';
     foreach (@idlist) {      foreach (@idlist) {
         $selout.='<option value=\''.$_.'\'';          $selout.='<option value=\''.$_.'\'';
         if ($_ eq $value) {          if ($_ eq $value) {
Line 379  sub selectbox { Line 386  sub selectbox {
  }   }
         else {$selout.='>'.&{$functionref}($_).'</option>';}          else {$selout.='>'.&{$functionref}($_).'</option>';}
     }      }
     return $selout.'</select>';      $selout.='</select>'.&Apache::lonhtmlcommon::row_closure();
       return $selout;
 }  }
   
 sub select_level_form {  sub select_level_form {
Line 663  sub fix_ids_and_indices { Line 671  sub fix_ids_and_indices {
                 "Max Index: $maxindex (min 10)\n";                  "Max Index: $maxindex (min 10)\n";
     }      }
     my $outstring='';      my $outstring='';
       my $responsecounter=1;
     my @parser;      my @parser;
     $parser[0]=HTML::LCParser->new(\$content);      $parser[0]=HTML::LCParser->new(\$content);
     $parser[-1]->xml_mode(1);      $parser[-1]->xml_mode(1);
Line 678  sub fix_ids_and_indices { Line 687  sub fix_ids_and_indices {
     next;      next;
  }   }
  if ($lctag eq 'base') { next; }   if ($lctag eq 'base') { next; }
                   if (($lctag eq 'part') || ($lctag eq 'problem')) {
                       $responsecounter=0;
                   }
                   if ($lctag=~/response$/) { $responsecounter++; }
  my %parms=%{$token->[2]};   my %parms=%{$token->[2]};
  $counter=$addid{$tag};   $counter=$addid{$tag};
  if (!$counter) { $counter=$addid{$lctag}; }   if (!$counter) { $counter=$addid{$lctag}; }
Line 773  sub fix_ids_and_indices { Line 786  sub fix_ids_and_indices {
  }   }
  if (!$endtag) { if ($token->[4]=~m:/>$:) { $endtag=' /'; }; }   if (!$endtag) { if ($token->[4]=~m:/>$:) { $endtag=' /'; }; }
  $outstring.='<'.$tag.$newparmstring.$endtag.'>';   $outstring.='<'.$tag.$newparmstring.$endtag.'>';
  if ($lctag eq 'm' || $lctag eq 'script'    if ($lctag eq 'm' || $lctag eq 'script' || $lctag eq 'answer' 
                     || $lctag eq 'display' || $lctag eq 'tex') {                      || $lctag eq 'display' || $lctag eq 'tex') {
     $outstring.=&get_all_text_unbalanced('/'.$lctag,\@parser);      $outstring.=&get_all_text_unbalanced('/'.$lctag,\@parser);
  }   }
Line 782  sub fix_ids_and_indices { Line 795  sub fix_ids_and_indices {
     unless ($token->[1] eq 'allow') {      unless ($token->[1] eq 'allow') {
  $outstring.='</'.$token->[1].'>';   $outstring.='</'.$token->[1].'>';
     }      }
  }                  }
                   if ((($token->[1] eq 'part') || ($token->[1] eq 'problem'))
                       && (!$responsecounter)) {
                       my $outstring='<span class="LC_error">'.&mt('Found [_1] without responses. This resource cannot be published.',$token->[1]).'</span>';
                       return ($outstring,1);
                   }
     } else {      } else {
  $outstring.=$token->[1];   $outstring.=$token->[1];
     }      }
Line 838  sub store_metadata { Line 856  sub store_metadata {
         return ($error,undef);          return ($error,undef);
     }      }
     my $dbh = &Apache::lonmysql::get_dbh();      my $dbh = &Apache::lonmysql::get_dbh();
     if (($metadata{'obsolete'}) || ($metadata{'copyright'} eq 'priv') ||      if (($metadata{'obsolete'}) || ($metadata{'copyright'} eq 'priv')) {
  ($metadata{'copyright'} eq 'custom')) {  
         # remove this entry          # remove this entry
  my $delitem = 'url = '.$dbh->quote($metadata{'url'});   my $delitem = 'url = '.$dbh->quote($metadata{'url'});
  $status = &LONCAPA::lonmetadata::delete_metadata($dbh,undef,$delitem);   $status = &LONCAPA::lonmetadata::delete_metadata($dbh,undef,$delitem);
Line 870  sub checkonthis { Line 887  sub checkonthis {
   'return_only_error_and_warning_counts' => 1));    'return_only_error_and_warning_counts' => 1));
     my ($errorcount,$warningcount)=split(':',$result);      my ($errorcount,$warningcount)=split(':',$result);
     if (($errorcount) || ($warningcount)) {      if (($errorcount) || ($warningcount)) {
         $r->print('<br /><tt>'.$uri.'</tt>: ');          $r->print('<h3>'.&mt('Warnings and Errors').'</h3>');
  if ($errorcount) {          $r->print('<tt>'.$uri.'</tt>:');
     $r->print('<img src="/adm/lonMisc/bomb.gif" /><span class="LC_error"><b>'.          $r->print('<ul>');
       $errorcount.' '.          if ($warningcount) {
       &mt('error(s)').'</b></span> ');              $r->print('<li><div class="LC_warning">'
  }                       .&mt('[quant,_1,warning]',$warningcount)
  if ($warningcount) {                       .'</div></li>');
     $r->print('<font color="blue">'.          }
       $warningcount.' '.          if ($errorcount) {
       &mt('warning(s)').'</font>');              $r->print('<li><div class="LC_error">'
  }                       .&mt('[quant,_1,error]',$errorcount)
                        .' <img src="/adm/lonMisc/bomb.gif" />'
                        .'</div></li>');
           }
           $r->print('</ul>');
     } else {      } else {
  #$r->print('<font color="green">'.&mt('ok').'</font>');   #$r->print('<font color="green">'.&mt('ok').'</font>');
     }      }
Line 952  sub publish { Line 973  sub publish {
     print $logfile "Copied original file to ".$copyfile."\n";      print $logfile "Copied original file to ".$copyfile."\n";
         } else {          } else {
     print $logfile "Unable to write backup ".$copyfile.':'.$!."\n";      print $logfile "Unable to write backup ".$copyfile.':'.$!."\n";
     return ("<span class=\"LC_error\">Failed to write backup copy, $!,FAIL</span>",1);      return ("<span class=\"LC_error\">".&mt("Failed to write backup copy, [_1], FAIL",$1)."</span>",1);
         }          }
 # ------------------------------------------------------------- IDs and indices  # ------------------------------------------------------------- IDs and indices
   
Line 1028  sub publish { Line 1049  sub publish {
             
     unless ($batch) {      unless ($batch) {
      $scrout.='<h3>'.&mt('Metadata Information').' ' .       $scrout.='<h3>'.&mt('Metadata Information').' ' .
        Apache::loncommon::help_open_topic("Metadata_Description")         &Apache::loncommon::help_open_topic("Metadata_Description")
        . '</h3>';         . '</h3>';
     }      }
   
Line 1179  sub publish { Line 1200  sub publish {
 #   $env{'from.'..} so that it can be used by the phase two handler in  #   $env{'from.'..} so that it can be used by the phase two handler in
 #    batch mode  #    batch mode
   
     my $intr_scrout.=      my $intr_scrout.='<br />'
  '<form name="pubform" action="/adm/publish" method="post">'.                      .'<form name="pubform" action="/adm/publish" method="post">';
  '<p>'.($env{'form.makeobsolete'}?'':'<input type="submit" value="'.&mt('Finalize Publication').'" />').'</p>'.      unless ($env{'form.makeobsolete'}) {
          $intr_scrout.='<p>'
                       .&mt('Searching for your resource will be based on the following metadata. Please provide as much data as possible.')
                       .'</p>'
                       .'<p><input type="submit" value="'
                       .&mt('Finalize Publication')
                       .'" /></p>';
       }
       $intr_scrout.=&Apache::lonhtmlcommon::start_pick_box();
       $intr_scrout.=
  &hiddenfield('phase','two').   &hiddenfield('phase','two').
  &hiddenfield('filename',$env{'form.filename'}).   &hiddenfield('filename',$env{'form.filename'}).
  &hiddenfield('allmeta',&escape($allmeta)).   &hiddenfield('allmeta',&escape($allmeta)).
Line 1193  sub publish { Line 1223  sub publish {
  &textfield('Subject','subject',$metadatafields{'subject'});   &textfield('Subject','subject',$metadatafields{'subject'});
  # --------------------------------------------------- Scan content for keywords   # --------------------------------------------------- Scan content for keywords
   
     my $keywords_help = Apache::loncommon::help_open_topic("Publishing_Keywords");      my $keywords_help = &Apache::loncommon::help_open_topic("Publishing_Keywords");
     my $KEYWORDS=&mt('Keywords');  
     my $CheckAll=&mt('check all');  
     my $UncheckAll=&mt('uncheck all');  
     my $keywordout=<<"END";      my $keywordout=<<"END";
 <script>  <script>
 function checkAll(field) {  function checkAll(field) {
Line 1209  function uncheckAll(field) { Line 1236  function uncheckAll(field) {
         field[i].checked = false ;          field[i].checked = false ;
 }  }
 </script>  </script>
 <p><font color="#800000" face="helvetica"><b>$KEYWORDS:</b></font>  
  $keywords_help</b>  
 <input type="button" value="$CheckAll" onclick="javascript:checkAll(document.pubform.keywords)" />   
 <input type="button" value="$UncheckAll" onclick="javascript:uncheckAll(document.pubform.keywords)" />   
 </p>  
 <br />  
 END  END
     $keywordout.='<table border="2"><tr>';      $keywordout.="\n".&Apache::lonhtmlcommon::row_title(&mt('Keywords'))
                   .$keywords_help
                   .'<input type="button" value="'.&mt('check all').'" onclick="javascript:checkAll(document.pubform.keywords)" />'
                   .'<input type="button" value="'.&mt('uncheck all').'" onclick="javascript:uncheckAll(document.pubform.keywords)" />'
                   .'</p><br />'
                   .&Apache::loncommon::start_data_table()
                   .&Apache::loncommon::start_data_table_row();
   
     my $colcount=0;      my $colcount=0;
   
     foreach (sort keys %keywords) {      foreach (sort keys %keywords) {
  $keywordout.='<td><label><input type="checkbox" name="keywords" value="'.$_.'"';   $colcount++;
    $keywordout.='<td><label>'.$colcount.'<input type="checkbox" name="keywords" value="'.$_.'"';
  if ($metadatafields{'keywords'}) {   if ($metadatafields{'keywords'}) {
     if ($metadatafields{'keywords'}=~/\Q$_\E/) {      if ($metadatafields{'keywords'}=~/\Q$_\E/) {
  $keywordout.=' checked="on"';   $keywordout.=' checked="on"';
Line 1231  END Line 1260  END
     $env{'form.keywords'}.=$_.',';      $env{'form.keywords'}.=$_.',';
  }   }
  $keywordout.=' />'.$_.'</label></td>';   $keywordout.=' />'.$_.'</label></td>';
  if ($colcount>10) {   if ($colcount>=10) {
     $keywordout.="</tr><tr>\n";      $keywordout.=&Apache::loncommon::end_data_table_row()
                           .&Apache::loncommon::start_data_table_row();
     $colcount=0;      $colcount=0;
  }   }
  $colcount++;  
     }      }
       # Proper end of started table row:
       if ($colcount != 0) { # has still to be improved: if amount of keywords mod 10 == 0, then do not start another table row
           while ($colcount<10) {
               $keywordout.='<td>&nbsp;</td>';
               $colcount++;
           }
       }
   
     $env{'form.keywords'}=~s/\,$//;      $env{'form.keywords'}=~s/\,$//;
   
     $keywordout.='</tr></table>';      $keywordout.=&Apache::loncommon::end_data_table_row()
                    .&Apache::loncommon::end_data_table()
                    .&Apache::lonhtmlcommon::row_closure();
   
     $intr_scrout.=$keywordout;      $intr_scrout.=$keywordout;
   
Line 1247  END Line 1286  END
   
     $intr_scrout.=&textfield('Notes','notes',$metadatafields{'notes'});      $intr_scrout.=&textfield('Notes','notes',$metadatafields{'notes'});
   
     $intr_scrout.=      $intr_scrout.="\n".&Apache::lonhtmlcommon::row_title(&mt('Abstract'))
  "\n<p><font color=\"#800000\" face=\"helvetica\"><b>".&mt('Abstract').":".                   .'<textarea cols="80" rows="5" name="abstract">'
  "</b></font></p><br />".                   .$metadatafields{'abstract'}
  '<textarea cols="80" rows="5" name="abstract">'.                   .'</textarea>'
  $metadatafields{'abstract'}.'</textarea></p>';                   .&Apache::lonhtmlcommon::row_closure();
   
     $source=~/\.(\w+)$/;      $source=~/\.(\w+)$/;
   
       $intr_scrout.="\n".&Apache::lonhtmlcommon::row_title(&mt('Grade Levels'))
                    .&mt('Lowest Grade Level:').'&nbsp;'
                    .&select_level_form($metadatafields{'lowestgradelevel'},'lowestgradelevel')
   #                .&Apache::lonhtmlcommon::row_closure();
   #   $intr_scrout.="\n".&Apache::lonhtmlcommon::row_title(&mt('Highest Grade Level'))
                    .' '.&mt('Highest Grade Level:').'&nbsp;'
                    .&select_level_form($metadatafields{'highestgradelevel'},'highestgradelevel')
                    .&Apache::lonhtmlcommon::row_closure();
   
     $intr_scrout.=      $intr_scrout.=&textfield('Standards','standards',$metadatafields{'standards'});
  "\n<p><font color=\"#800000\" face=\"helvetica\"><b>".  
  &mt('Lowest Grade Level').':'.  
  "</b></font></p><br />".  
  &select_level_form($metadatafields{'lowestgradelevel'},'lowestgradelevel').  
  "\n<p><font color=\"#800000\" face=\"helvetica\"><b>".  
  &mt('Highest Grade Level').':'.  
  "</b></font></p><br />".  
  &select_level_form($metadatafields{'highestgradelevel'},'highestgradelevel').  
  &textfield('Standards','standards',$metadatafields{'standards'});  
   
   
   
   
     $intr_scrout.=&hiddenfield('mime',$1);      $intr_scrout.=&hiddenfield('mime',$1);
   
Line 1291  END Line 1326  END
   
     $intr_scrout.=&hiddenfield('lastrevisiondate',time);      $intr_scrout.=&hiddenfield('lastrevisiondate',time);
   
       my $pubowner_last;
       if ($style eq 'prv') {
           $pubowner_last = 1;
       }
     $intr_scrout.=&textfield('Publisher/Owner','owner',      $intr_scrout.=&textfield('Publisher/Owner','owner',
      $metadatafields{'owner'});       $metadatafields{'owner'},$pubowner_last);
   
 # ---------------------------------------------- Retrofix for unused copyright  # ---------------------------------------------- Retrofix for unused copyright
     if ($metadatafields{'copyright'} eq 'free') {      if ($metadatafields{'copyright'} eq 'free') {
Line 1327  END Line 1365  END
      (grep !/^priv$/,(&Apache::loncommon::copyrightids)));       (grep !/^priv$/,(&Apache::loncommon::copyrightids)));
  }   }
  my $copyright_help =   my $copyright_help =
     Apache::loncommon::help_open_topic('Publishing_Copyright');      &Apache::loncommon::help_open_topic('Publishing_Copyright');
  $intr_scrout =~ s/Distribution:/'Distribution: ' . $copyright_help/ge;          my $replace=&mt('Copyright/Distribution:');
  $intr_scrout.=&text_with_browse_field('Custom Distribution File','customdistributionfile',$metadatafields{'customdistributionfile'},'rights').$copyright_help;   $intr_scrout =~ s/$replace/$replace.' '.$copyright_help/ge;
   
    $intr_scrout.=&text_with_browse_field('Custom Distribution File','customdistributionfile',$metadatafields{'customdistributionfile'},'rights');
  $intr_scrout.=&selectbox('Source Distribution','sourceavail',   $intr_scrout.=&selectbox('Source Distribution','sourceavail',
  $defaultsourceoption,   $defaultsourceoption,
  \&Apache::loncommon::source_copyrightdescription,   \&Apache::loncommon::source_copyrightdescription,
  (&Apache::loncommon::source_copyrightids));   (&Apache::loncommon::source_copyrightids));
 # $intr_scrout.=&text_with_browse_field('Source Custom Distribution File','sourcerights',$metadatafields{'sourcerights'},'rights');  # $intr_scrout.=&text_with_browse_field('Source Custom Distribution File','sourcerights',$metadatafields{'sourcerights'},'rights');
  my $uctitle=&mt('Obsolete');   my $uctitle=&mt('Obsolete');
  $intr_scrout.=          my $obsolete_checked=($metadatafields{'obsolete'})?' checked="1" ':'';
     "\n<p><label><font color=\"#800000\" face=\"helvetica\"><b>$uctitle:".          $intr_scrout.="\n".&Apache::lonhtmlcommon::row_title($uctitle)
     '</b></font> <input type="checkbox" name="obsolete" ';                       .'<input type="checkbox" name="obsolete" '.$obsolete_checked.'/ >'
  if ($metadatafields{'obsolete'}) {                       .&Apache::lonhtmlcommon::row_closure(1);
     $intr_scrout.=' checked="1" ';          $intr_scrout.=&text_with_browse_field('Suggested Replacement for Obsolete File',
  }  
  $intr_scrout.='/ ></label></p>'.  
     &text_with_browse_field('Suggested Replacement for Obsolete File',  
     'obsoletereplacement',      'obsoletereplacement',
     $metadatafields{'obsoletereplacement'});      $metadatafields{'obsoletereplacement'},'',1);
     } else {      } else {
  $intr_scrout.=&hiddenfield('copyright','private');   $intr_scrout.=&hiddenfield('copyright','private');
     }      }
Line 1371  END Line 1408  END
  &hiddenfield('obsolete',1).   &hiddenfield('obsolete',1).
  &text_with_browse_field('Suggested Replacement for Obsolete File',   &text_with_browse_field('Suggested Replacement for Obsolete File',
     'obsoletereplacement',      'obsoletereplacement',
     $metadatafields{'obsoletereplacement'});      $metadatafields{'obsoletereplacement'},'',1);
    }     }
     if (!$batch) {      if (!$batch) {
  $scrout.=$intr_scrout.'<p><input type="submit" value="'.   $scrout.=$intr_scrout
     &mt($env{'form.makeobsolete'}?'Make Obsolete':'Finalize Publication').'" /></p></form>';              .&Apache::lonhtmlcommon::end_pick_box()
               .'<p><input type="submit" value="'
       .&mt($env{'form.makeobsolete'}?'Make Obsolete':'Finalize Publication')
               .'" /></p>'
               .'</form>';
     }      }
     return($scrout,0);      return($scrout,0);
 }  }
Line 1577  sub phasetwo { Line 1618  sub phasetwo {
         unless ($srcd=~/^\/home\/httpd\/html\/res/) {          unless ($srcd=~/^\/home\/httpd\/html\/res/) {
             print $logfile "\nPANIC: Target dir is ".$srcd;              print $logfile "\nPANIC: Target dir is ".$srcd;
             $r->print(              $r->print(
  "<span class=\"LC_error\">Invalid target directory, FAIL</span>");   "<span class=\"LC_error\">".&mt('Invalid target directory, FAIL')."</span>");
     return 0;      return 0;
         }          }
         opendir(DIR,$srcd);          opendir(DIR,$srcd);
Line 1699  sub phasetwo { Line 1740  sub phasetwo {
         $r->print(          $r->print(
            '<hr /><a href="'.$thisdistarget.'"><font size="+2">'.             '<hr /><a href="'.$thisdistarget.'"><font size="+2">'.
            &mt('View Published Version').'</font></a>'.             &mt('View Published Version').'</font></a>'.
            '<p><a href="'.$thissrc.'"><font size=+2>'.             '<p><a href="'.$thissrc.'"><font size="+2">'.
   &mt('Back to Source').'</font></a></p>'.    &mt('Back to Source').'</font></a></p>'.
            '<p><a href="'.$thissrcdir.             '<p><a href="'.$thissrcdir.
                    '"><font size="+2">'.                     '"><font size="+2">'.
Line 1744  sub notify { Line 1785  sub notify {
  print $logfile "\n============ Done ============\n";   print $logfile "\n============ Done ============\n";
  $logfile->close();   $logfile->close();
     }      }
       if ($lock) { &Apache::lonnet::remove_lock($lock); }
     return OK;      return OK;
 }  }
   
Line 1813  sub publishdirectory { Line 1855  sub publishdirectory {
                   &checkbox('obsolete','make file(s) obsolete').                    &checkbox('obsolete','make file(s) obsolete').
   &checkbox('forceoverride','force directory level catalog information over existing').    &checkbox('forceoverride','force directory level catalog information over existing').
   '<br /><input type="submit" value="'.&mt('Publish Directory').'" /></form>');    '<br /><input type="submit" value="'.&mt('Publish Directory').'" /></form>');
           $lock=0;
     } else {      } else {
           unless ($lock) { $lock=&Apache::lonnet::set_lock(&mt('Publishing [_1]',$fn)); }
 # actually publish things  # actually publish things
  opendir(DIR,$fn);   opendir(DIR,$fn);
  my @files=sort(readdir(DIR));   my @files=sort(readdir(DIR));
Line 2099  sub handler { Line 2143  sub handler {
  my $thistype=$1;   my $thistype=$1;
  my $thisembstyle=&Apache::loncommon::fileembstyle($thistype);   my $thisembstyle=&Apache::loncommon::fileembstyle($thistype);
         if ($thistype eq 'page') {  $thisembstyle = 'rat'; }          if ($thistype eq 'page') {  $thisembstyle = 'rat'; }
  $r->print('<h2>'.&mt('Publishing').' '.  
   &Apache::loncommon::filedescription($thistype).' <tt>');  
   
    $r->print('<h2>'.&mt('Publishing [_1]','<tt>'.$thisdisfn.'</tt>').'</h2>');
   
           $r->print('<h3>'.&mt('Resource Details').'</h3>');
   
           $r->print(&Apache::lonhtmlcommon::start_pick_box());
   
           $r->print(&Apache::lonhtmlcommon::row_title(&mt('Type'))
                    .&Apache::loncommon::filedescription($thistype)
                    .&Apache::lonhtmlcommon::row_closure()
                    );
   
           $r->print(&Apache::lonhtmlcommon::row_title(&mt('Link to Resource'))
                    .'<tt>'
                    );
  $r->print(<<ENDCAPTION);   $r->print(<<ENDCAPTION);
 <a href='javascript:void(window.open("/~$cuname/$thisdisfn","cat","height=300,width=500,scrollbars=1,resizable=1,menubar=0,location=1"))'>  <a href='javascript:void(window.open("/~$cuname/$thisdisfn","cat","height=300,width=500,scrollbars=1,resizable=1,menubar=0,location=1"))'>
 $thisdisfn</a>  $thisdisfn</a>
 ENDCAPTION  ENDCAPTION
         $r->print('</tt></h2><b>'.&mt('Target').':</b> <tt>'.          $r->print('</tt>'
   $thisdistarget.'</tt><br />');                   .&Apache::lonhtmlcommon::row_closure()
                       );
   
           $r->print(&Apache::lonhtmlcommon::row_title(&mt('Target'))
                    .'<tt>'.$thisdistarget.'</tt>'
                    );
   # SB - ToDo:   
  if (($cuname ne $env{'user.name'})||($cudom ne $env{'user.domain'})) {   if (($cuname ne $env{'user.name'})||($cudom ne $env{'user.domain'})) {
     $r->print('<h3><font color="red">'.&mt('Co-Author').': '.  #           $r->print(&Apache::lonhtmlcommon::row_title('<span class="LC_warning">'.&mt('Co-Author').'</span>')
       $cuname.&mt(' at ').$cudom.'</font></h3>');              $r->print(&Apache::lonhtmlcommon::row_closure()
                        .&Apache::lonhtmlcommon::row_title(&mt('Co-Author'))
                        .'<span class="LC_warning">'
        .&mt('[_1] at [_2]',$cuname,$cudom)
                        .'</span>'
                        );
  }   }
   
  if (&Apache::loncommon::fileembstyle($thistype) eq 'ssi') {   if (&Apache::loncommon::fileembstyle($thistype) eq 'ssi') {
               $r->print(&Apache::lonhtmlcommon::row_closure()
                        .&Apache::lonhtmlcommon::row_title(&mt('Diffs')));
     $r->print(<<ENDDIFF);      $r->print(<<ENDDIFF);
 <br />  
 <a href='javascript:void(window.open("/adm/diff?filename=/~$cuname/$thisdisfn&versiontwo=priv","cat","height=300,width=500,scrollbars=1,resizable=1,menubar=0,location=1"))'>  <a href='javascript:void(window.open("/adm/diff?filename=/~$cuname/$thisdisfn&versiontwo=priv","cat","height=300,width=500,scrollbars=1,resizable=1,menubar=0,location=1"))'>
 ENDDIFF  ENDDIFF
             $r->print(&mt('Diffs with Current Version').'</a><br />');              $r->print(&mt('Diffs with Current Version').'</a>');
  }   }
           
           $r->print(&Apache::lonhtmlcommon::row_closure(1)
                    .&Apache::lonhtmlcommon::end_pick_box()
                    );
       
 # ------------------ Publishing from $thisfn to $thistarget with $thisembstyle.  # ------------------ Publishing from $thisfn to $thistarget with $thisembstyle.
   
Line 2135  ENDDIFF Line 2206  ENDDIFF
     &publish($thisfn,$thistarget,$thisembstyle);      &publish($thisfn,$thistarget,$thisembstyle);
  $r->print('<hr />'.$outstring);   $r->print('<hr />'.$outstring);
     } else {      } else {
  $r->print('<h3>'.   $r->print('<h3 class="LC_error">'.
   &mt('The document contains errors and cannot be published.').    &mt('The document contains errors and cannot be published.').
   '</h3>');    '</h3>');
     }      }

Removed from v.1.232  
changed lines
  Added in v.1.243


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