Diff for /loncom/publisher/lonpublisher.pm between versions 1.66 and 1.74

version 1.66, 2001/12/17 01:50:54 version 1.74, 2002/03/06 22:58:45
Line 42 Line 42
 # 12/05 Guy Albertelli  # 12/05 Guy Albertelli
 # 12/06,12/07 Gerd Kortemeyer  # 12/06,12/07 Gerd Kortemeyer
 # 12/15,12/16 Scott Harrison  # 12/15,12/16 Scott Harrison
   # 12/25 Gerd Kortemeyer
   # YEAR=2002
   # 1/16,1/17 Scott Harrison
   # 1/17 Gerd Kortemeyer
 #  #
 ###  ###
   
Line 145  sub metaread { Line 149  sub metaread {
   
 # ---------------------------- convert 'time' format into a datetime sql format  # ---------------------------- convert 'time' format into a datetime sql format
 sub sqltime {  sub sqltime {
       my $timef=shift @_;
     my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =      my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
  localtime(@_[0]);   localtime($timef);
     $mon++; $year+=1900;      $mon++; $year+=1900;
     return "$year-$mon-$mday $hour:$min:$sec";      return "$year-$mon-$mday $hour:$min:$sec";
 }  }
Line 184  sub selectbox { Line 189  sub selectbox {
 sub urlfixup {  sub urlfixup {
     my ($url,$target)=@_;      my ($url,$target)=@_;
     unless ($url) { return ''; }      unless ($url) { return ''; }
       #javascript code needs no fixing
       if ($url =~ /^javascript:/i) { return $url; }
       if ($url =~ /^mailto:/i) { return $url; }
       #internal document links need no fixing
       if ($url =~ /^\#/) { return $url; } 
     my ($host)=($url=~/(?:http\:\/\/)*([^\/]+)/);      my ($host)=($url=~/(?:http\:\/\/)*([^\/]+)/);
     foreach (values %Apache::lonnet::hostname) {      foreach (values %Apache::lonnet::hostname) {
  if ($_ eq $host) {   if ($_ eq $host) {
Line 193  sub urlfixup { Line 203  sub urlfixup {
     }      }
     if ($url=~/^http\:\/\//) { return $url; }      if ($url=~/^http\:\/\//) { return $url; }
     $url=~s/\~$cuname/res\/$cudom\/$cuname/;      $url=~s/\~$cuname/res\/$cudom\/$cuname/;
       return $url;
   }
   
   
   sub absoluteurl {
       my ($url,$target)=@_;
       unless ($url) { return ''; }
     if ($target) {      if ($target) {
  $target=~s/\/[^\/]+$//;   $target=~s/\/[^\/]+$//;
        $url=&Apache::lonnet::hreflocation($target,$url);         $url=&Apache::lonnet::hreflocation($target,$url);
Line 297  sub publish { Line 314  sub publish {
                               print $logfile 'Index: '.$tag.':'.$maxindex."\n";                                print $logfile 'Index: '.$tag.':'.$maxindex."\n";
   }    }
       }        }
   }     }
                     
                   foreach ('src','href','background') {                    foreach my $type ('src','href','background','bgimg') {
                       if (defined($parms{$_})) {        foreach my $key (keys(%parms)) {
   my $oldurl=$parms{$_};    if ($key =~ /^$type$/i) {
                           my $newurl=&urlfixup($oldurl,$target);        my $oldurl=$parms{$key};
                           if ($newurl ne $oldurl) {        my $newurl=&urlfixup($oldurl,$target);
       $parms{$_}=$newurl;        if ($newurl ne $oldurl) {
                               print $logfile 'URL: '.$tag.':'.$oldurl.' - '.    $parms{$key}=$newurl;
   $newurl."\n";    print $logfile 'URL: '.$tag.':'.$oldurl.' - '.
         $newurl."\n";
         }
         if (($newurl !~ /^javascript:/i) &&
     ($newurl !~ /^mailto:/i) &&
     ($newurl !~ /^http:/i) &&
     ($newurl !~ /^\#/)) {
     $allow{&absoluteurl($newurl,$target)}=1;
         }
   }    }
                           $allow{$newurl}=1;    last;
                       }        }
                   }                    }
   
                   if ($lctag eq 'applet') {                    if ($lctag eq 'applet') {
Line 327  sub publish { Line 352  sub publish {
                                   $oldcodebase.' - '.                                    $oldcodebase.' - '.
   $codebase."\n";    $codebase."\n";
  }   }
                          $allow{$codebase.'/*'}=1;                           $allow{&absoluteurl($codebase,$target).'/*'}=1;
       } else {        } else {
                         foreach ('archive','code','object') {                          foreach ('archive','code','object') {
                           if (defined($parms{$_})) {                            if (defined($parms{$_})) {
Line 337  sub publish { Line 362  sub publish {
                                   print $logfile 'Allow: applet '.$_.':'.                                    print $logfile 'Allow: applet '.$_.':'.
                                   $oldurl.' allows '.                                    $oldurl.' allows '.
   $newurl."\n";    $newurl."\n";
                               $allow{$newurl}=1;                                $allow{&absoluteurl($newurl,$target)}=1;
                           }                            }
                         }                          }
                       }                        }
Line 372  sub publish { Line 397  sub publish {
           
  $scrout.='<h3>Dependencies</h3>';   $scrout.='<h3>Dependencies</h3>';
         my $allowstr='';          my $allowstr='';
         foreach (keys %allow) {          foreach (sort(keys(%allow))) {
    my $thisdep=$_;     my $thisdep=$_;
      if ($thisdep !~ /[^\s]/) { next; }
            unless ($style eq 'rat') {              unless ($style eq 'rat') { 
               $allowstr.="\n".'<allow src="'.$thisdep.'" />';                $allowstr.="\n".'<allow src="'.$thisdep.'" />';
    }     }
Line 400  sub publish { Line 426  sub publish {
        }         }
            }             }
         }          }
           $allowstr=~s/\n+/\n/g;
         $outstring=~s/(\<\/[^\>]+\>\s*)$/$allowstr$1/s;          $outstring=~s/(\<\/[^\>]+\>\s*)$/$allowstr$1/s;
   
 # ------------------------------------------------------------- Write modified  # ------------------------------------------------------------- Write modified
Line 509  sub publish { Line 536  sub publish {
                      $chparms;                       $chparms;
         }          }
   
         my $chparms='';          $chparms='';
         foreach (sort keys %oldparmstores) {          foreach (sort keys %oldparmstores) {
     if (($_=~/^parameter/) || ($_=~/^stores/)) {      if (($_=~/^parameter/) || ($_=~/^stores/)) {
                 unless (($metadatafields{$_.'.name'}) ||                  unless (($metadatafields{$_.'.name'}) ||
Line 541  sub publish { Line 568  sub publish {
   
  my $keywordout='<p><b>Keywords:</b><br><table border=2><tr>';   my $keywordout='<p><b>Keywords:</b><br><table border=2><tr>';
         my $colcount=0;          my $colcount=0;
           my %keywords=();
                   
  if (length($content)<500000) {   if (length($content)<500000) {
     my $textonly=$content;      my $textonly=$content;
Line 551  sub publish { Line 579  sub publish {
             $textonly=~s/[\$\&][a-z]\w*//g;              $textonly=~s/[\$\&][a-z]\w*//g;
             $textonly=~s/[^a-z\s]//g;              $textonly=~s/[^a-z\s]//g;
   
             my %keywords=();  
             foreach ($textonly=~m/(\w+)/g) {              foreach ($textonly=~m/(\w+)/g) {
  unless ($nokey{$_}) {   unless ($nokey{$_}) {
                    $keywords{$_}=1;                     $keywords{$_}=1;
                 }                   } 
             }              }
           }
   
               
             foreach (split(/\W+/,$metadatafields{'keywords'})) {              foreach (split(/\W+/,$metadatafields{'keywords'})) {
  $keywords{$_}=1;   $keywords{$_}=1;
             }              }
   
             foreach (sort keys %keywords) {              foreach (sort keys %keywords) {
                 $keywordout.='<td><input type=checkbox name="key.'.$_.'"';                  $keywordout.='<td><input type=checkbox name="key.'.$_.'"';
                 if ($metadatafields{'keywords'}=~/$_/) {                   if ($metadatafields{'keywords'}) {
                    $keywordout.=' checked';                      if ($metadatafields{'keywords'}=~/$_/) { 
                 }                        $keywordout.=' checked'; 
                      }
           } elsif (&Apache::loncommon::keyword($_)) {
               $keywordout.=' checked';
                   } 
                 $keywordout.='>'.$_.'</td>';                  $keywordout.='>'.$_.'</td>';
                 if ($colcount>10) {                  if ($colcount>10) {
     $keywordout.="</tr><tr>\n";      $keywordout.="</tr><tr>\n";
Line 574  sub publish { Line 607  sub publish {
                 }                  }
                 $colcount++;                  $colcount++;
             }              }
   
         } else {  
     $keywordout.='<td>File too long for keyword analysis</td>';  
         }           
                   
  $keywordout.='</tr></table>';   $keywordout.='</tr></table>';
   
Line 597  sub publish { Line 626  sub publish {
   
         $scrout.=&selectbox('Language','language',          $scrout.=&selectbox('Language','language',
                             $metadatafields{'language'},                              $metadatafields{'language'},
     \&{Apache::loncommon::languagedescription},      \&Apache::loncommon::languagedescription,
     (&Apache::loncommon::languageids),      (&Apache::loncommon::languageids),
      );       );
   
Line 618  sub publish { Line 647  sub publish {
  }   }
         $scrout.=&selectbox('Copyright/Distribution','copyright',          $scrout.=&selectbox('Copyright/Distribution','copyright',
                             $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));
     }      }
     return $scrout.      return $scrout.

Removed from v.1.66  
changed lines
  Added in v.1.74


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