Diff for /loncom/publisher/lonpublisher.pm between versions 1.111 and 1.115

version 1.111, 2003/02/18 23:13:54 version 1.115, 2003/03/14 02:26:12
Line 789  This is the workhorse function of this m Line 789  This is the workhorse function of this m
 backup copies, performs any automatic processing (prior to publication,  backup copies, performs any automatic processing (prior to publication,
 especially for rat and ssi files),  especially for rat and ssi files),
   
   Returns a 2 element array, the first is the string to be shown to the
   user, the second is an error code, either 1 (an error occured) or 0
   (no error occurred)
   
 I<Additional documentation needed.>  I<Additional documentation needed.>
   
 =cut  =cut
Line 805  sub publish { Line 809  sub publish {
     my %allow=();      my %allow=();
   
     unless ($logfile=Apache::File->new('>>'.$source.'.log')) {      unless ($logfile=Apache::File->new('>>'.$source.'.log')) {
  return    return ('<font color="red">No write permission to user directory, FAIL</font>',1);
          '<font color=red>No write permission to user directory, FAIL</font>';  
     }      }
     print $logfile       print $logfile 
 "\n\n================= Publish ".localtime()." Phase One  ================\n";  "\n\n================= Publish ".localtime()." Phase One  ================\n";
Line 820  sub publish { Line 823  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 "<font color=red>Failed to write backup copy, $!,FAIL</font>";      return ("<font color=\"red\">Failed to write backup copy, $!,FAIL</font>",1);
         }          }
 # ------------------------------------------------------------- IDs and indices  # ------------------------------------------------------------- IDs and indices
   
  my ($outstring,$error);   my ($outstring,$error);
  ($outstring,$error,%allow)=&fix_ids_and_indices($logfile,$source,   ($outstring,$error,%allow)=&fix_ids_and_indices($logfile,$source,
  $target);   $target);
  if ($error) { return $outstring; }   if ($error) { return ($outstring,$error); }
 # ------------------------------------------------------------ Construct Allows  # ------------------------------------------------------------ Construct Allows
           
  $scrout.='<h3>Dependencies</h3>';   $scrout.='<h3>Dependencies</h3>';
Line 872  sub publish { Line 875  sub publish {
           my $org;            my $org;
           unless ($org=Apache::File->new('>'.$source)) {            unless ($org=Apache::File->new('>'.$source)) {
              print $logfile "No write permit to $source\n";               print $logfile "No write permit to $source\n";
              return                return ('<font color="red">No write permission to '.$source.
  '<font color="red">No write permission to '.$source.       ', FAIL</font>',1);
  ', FAIL</font>';  
   }    }
           print($org $outstring);            print($org $outstring);
         }          }
Line 948  sub publish { Line 950  sub publish {
         my $oldenv=$ENV{'request.uri'};          my $oldenv=$ENV{'request.uri'};
   
         $ENV{'request.uri'}=$target;          $ENV{'request.uri'}=$target;
  $Apache::lonxml::debug=1;  
         $allmeta=Apache::lonxml::xmlparse(undef,'meta',$content);          $allmeta=Apache::lonxml::xmlparse(undef,'meta',$content);
  $Apache::lonxml::debug=0;  
         $ENV{'request.uri'}=$oldenv;          $ENV{'request.uri'}=$oldenv;
   
         &metaeval($allmeta);          &metaeval($allmeta);
Line 1105  END Line 1105  END
                             $metadatafields{'owner'});                              $metadatafields{'owner'});
   
 # -------------------------------------------------- Correct copyright for rat.  # -------------------------------------------------- Correct copyright for rat.
     if ($style eq 'rat') {     unless ($style eq 'prv') {
        if ($style eq 'rat') {
  if ($metadatafields{'copyright'} eq 'public') {    if ($metadatafields{'copyright'} eq 'public') { 
     delete $metadatafields{'copyright'};      delete $metadatafields{'copyright'};
  }   }
Line 1113  END Line 1114  END
                             $metadatafields{'copyright'},                              $metadatafields{'copyright'},
     \&Apache::loncommon::copyrightdescription,      \&Apache::loncommon::copyrightdescription,
      (grep !/^public$/,(&Apache::loncommon::copyrightids)));       (grep !/^public$/,(&Apache::loncommon::copyrightids)));
     }       } else {
     else {  
         $scrout.=&selectbox('Copyright/Distribution','copyright',          $scrout.=&selectbox('Copyright/Distribution','copyright',
                             $metadatafields{'copyright'},                              $metadatafields{'copyright'},
     \&Apache::loncommon::copyrightdescription,      \&Apache::loncommon::copyrightdescription,
      (&Apache::loncommon::copyrightids));      (&Apache::loncommon::copyrightids));
     }       }
   
     my $copyright_help =       my $copyright_help =
         Apache::loncommon::help_open_topic('Publishing_Copyright');          Apache::loncommon::help_open_topic('Publishing_Copyright');
     $scrout =~ s/DISTRIBUTION:/'DISTRIBUTION: ' . $copyright_help/ge;       $scrout =~ s/DISTRIBUTION:/'DISTRIBUTION: ' . $copyright_help/ge;
     return $scrout.       $scrout.=&textfield('Custom Distribution File','customdistributionfile',
         '<p><input type="submit" value="Finalize Publication" /></p></form>';                       $metadatafields{'customdistributionfile'}).
                   $copyright_help;
       } else {
        $scrout.=&hiddenfield('copyright','private');
       }
       return ($scrout.'<p><input type="submit" value="Finalize Publication" /></p></form>',0);
 # =============================================================================  # =============================================================================
 # BATCH MODE  # BATCH MODE
 #  #
Line 1153  END Line 1158  END
  $ENV{'form.copyright'}='default';   $ENV{'form.copyright'}='default';
     }       } 
     $ENV{'form.allmeta'}=&Apache::lonnet::escape($allmeta);      $ENV{'form.allmeta'}=&Apache::lonnet::escape($allmeta);
     return $scrout;      return ($scrout,0);
   }    }
 }  }
   
Line 1203  sub phasetwo { Line 1208  sub phasetwo {
   
     if ($target=~/\_\_\_/) {      if ($target=~/\_\_\_/) {
  $r->print(   $r->print(
  '<font color=red>Unsupported character combination "<tt>___</tt>" in filename, FAIL</font>');   '<font color="red">Unsupported character combination "<tt>___</tt>" in filename, FAIL</font>');
         return 0;          return 0;
     }      }
     $distarget=~s/\/+/\//g;      $distarget=~s/\/+/\//g;
     my $logfile;      my $logfile;
     unless ($logfile=Apache::File->new('>>'.$source.'.log')) {      unless ($logfile=Apache::File->new('>>'.$source.'.log')) {
  $r->print(   $r->print(
         '<font color=red>No write permission to user directory, FAIL</font>');          '<font color="red">No write permission to user directory, FAIL</font>');
         return 0;          return 0;
     }      }
     print $logfile       print $logfile 
Line 1232  sub phasetwo { Line 1237  sub phasetwo {
     $metadatafields{'lastrevisiondate'}=$ENV{'form.lastrevisiondate'};      $metadatafields{'lastrevisiondate'}=$ENV{'form.lastrevisiondate'};
     $metadatafields{'owner'}=$ENV{'form.owner'};      $metadatafields{'owner'}=$ENV{'form.owner'};
     $metadatafields{'copyright'}=$ENV{'form.copyright'};      $metadatafields{'copyright'}=$ENV{'form.copyright'};
       $metadatafields{'customdistributionfile'}=
                                    $ENV{'form.customdistributionfile'};
     $metadatafields{'dependencies'}=$ENV{'form.dependencies'};      $metadatafields{'dependencies'}=$ENV{'form.dependencies'};
           
     my $allkeywords=$ENV{'form.addkey'};      my $allkeywords=$ENV{'form.addkey'};
Line 1251  sub phasetwo { Line 1258  sub phasetwo {
         my $mfh;          my $mfh;
         unless ($mfh=Apache::File->new('>'.$source.'.meta')) {          unless ($mfh=Apache::File->new('>'.$source.'.meta')) {
             return               return 
                 '<font color=red>Could not write metadata, FAIL</font>';                  '<font color="red">Could not write metadata, FAIL</font>';
         }          }
         foreach (sort keys %metadatafields) {          foreach (sort keys %metadatafields) {
             unless ($_=~/\./) {              unless ($_=~/\./) {
Line 1303  sub phasetwo { Line 1310  sub phasetwo {
         my $srcd=$1;          my $srcd=$1;
         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;
             return "<font color=red>Invalid target directory, FAIL</font>";              return "<font color=\"red\">Invalid target directory, FAIL</font>";
         }          }
         opendir(DIR,$srcd);          opendir(DIR,$srcd);
         while ($filename=readdir(DIR)) {          while ($filename=readdir(DIR)) {
Line 1328  sub phasetwo { Line 1335  sub phasetwo {
             $r->print('<p>Copied old target file');              $r->print('<p>Copied old target file');
         } else {          } else {
     print $logfile "Unable to write ".$copyfile.':'.$!."\n";      print $logfile "Unable to write ".$copyfile.':'.$!."\n";
             return "<font color=red>Failed to copy old target, $!, FAIL</font>";              return "<font color=\"red\">Failed to copy old target, $!, FAIL</font>";
         }          }
                   
 # --------------------------------------------------------------- Copy Metadata  # --------------------------------------------------------------- Copy Metadata
Line 1342  sub phasetwo { Line 1349  sub phasetwo {
     print $logfile "Unable to write metadata ".$copyfile.':'.$!."\n";      print $logfile "Unable to write metadata ".$copyfile.':'.$!."\n";
             if (-e $target.'.meta') {              if (-e $target.'.meta') {
                 return                   return 
                     "<font color=red>Failed to write old metadata copy, $!, FAIL</font>";                      "<font color=\"red\">Failed to write old metadata copy, $!, FAIL</font>";
     }      }
         }          }
                   
Line 1373  sub phasetwo { Line 1380  sub phasetwo {
         $r->print('<p>Copied source file');          $r->print('<p>Copied source file');
     } else {      } else {
         print $logfile "\nUnable to write ".$copyfile.':'.$!."\n";          print $logfile "\nUnable to write ".$copyfile.':'.$!."\n";
         return "<font color=red>Failed to copy source, $!, FAIL</font>";          return "<font color=\"red\">Failed to copy source, $!, FAIL</font>";
     }      }
           
 # --------------------------------------------------------------- Copy Metadata  # --------------------------------------------------------------- Copy Metadata
Line 1386  sub phasetwo { Line 1393  sub phasetwo {
     } else {      } else {
         print $logfile "\nUnable to write metadata ".$copyfile.':'.$!."\n";          print $logfile "\nUnable to write metadata ".$copyfile.':'.$!."\n";
         return           return 
             "<font color=red>Failed to write metadata copy, $!, FAIL</font>";              "<font color=\"red\">Failed to write metadata copy, $!, FAIL</font>";
     }      }
     $r->rflush;      $r->rflush;
 # --------------------------------------------------- Send update notifications  # --------------------------------------------------- Send update notifications
Line 1474  sub batchpublish { Line 1481  sub batchpublish {
   
 # phase one takes  # phase one takes
 #  my ($source,$target,$style,$batch)=@_;  #  my ($source,$target,$style,$batch)=@_;
     $r->print('<p>'.&publish($srcfile,$targetfile,$thisembstyle,1).'</p>');      my ($outstring,$error)=&publish($srcfile,$targetfile,$thisembstyle,1);
       $r->print('<p>'.$outstring.'</p>');
 # phase two takes  # phase two takes
 # my ($source,$target,$style,$distarget,batch)=@_;  # my ($source,$target,$style,$distarget,batch)=@_;
 # $ENV{'form.allmeta'},$ENV{'form.title'},$ENV{'form.author'},...  # $ENV{'form.allmeta'},$ENV{'form.title'},$ENV{'form.author'},...
     $r->print('<p>');      if (!$error) {
     &phasetwo($r,$srcfile,$targetfile,$thisembstyle,$thisdistarget,1);   $r->print('<p>');
     $r->print('</p>');   &phasetwo($r,$srcfile,$targetfile,$thisembstyle,$thisdistarget,1);
    $r->print('</p>');
       }
     return '';      return '';
 }  }
   
Line 1595  sub handler { Line 1605  sub handler {
   
 # -------------------------------------------------------------- Check filename  # -------------------------------------------------------------- Check filename
   
   my $fn=$ENV{'form.filename'};    my $fn=&Apache::lonnet::unescape($ENV{'form.filename'});
   
       
   unless ($fn) {     unless ($fn) { 
Line 1725  unless ($ENV{'form.phase'} eq 'two') { Line 1735  unless ($ENV{'form.phase'} eq 'two') {
 # ------------------ Publishing from $thisfn to $thistarget with $thisembstyle.  # ------------------ Publishing from $thisfn to $thistarget with $thisembstyle.
   
        unless ($ENV{'form.phase'} eq 'two') {         unless ($ENV{'form.phase'} eq 'two') {
          $r->print(     my ($outstring,$error)=&publish($thisfn,$thistarget,$thisembstyle);
           '<hr />'.&publish($thisfn,$thistarget,$thisembstyle));     $r->print('<hr />'.$outstring);
        } else {         } else {
            $r->print('<hr />');             $r->print('<hr />');
            &phasetwo($r,$thisfn,$thistarget,$thisembstyle,$thisdistarget);              &phasetwo($r,$thisfn,$thistarget,$thisembstyle,$thisdistarget); 
        }           }
   
   }    }
   $r->print('</body></html>');    $r->print('</body></html>');
   

Removed from v.1.111  
changed lines
  Added in v.1.115


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