--- loncom/publisher/lonpublisher.pm 2003/11/01 17:38:58 1.142 +++ loncom/publisher/lonpublisher.pm 2003/12/22 22:09:06 1.149 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Publication Handler # -# $Id: lonpublisher.pm,v 1.142 2003/11/01 17:38:58 www Exp $ +# $Id: lonpublisher.pm,v 1.149 2003/12/22 22:09:06 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -25,24 +25,6 @@ # # http://www.lon-capa.org/ # -# -# (TeX Content Handler -# -# 05/29/00,05/30,10/11 Gerd Kortemeyer) -# -# 11/28,11/29,11/30,12/01,12/02,12/04,12/23 Gerd Kortemeyer -# 03/23 Guy Albertelli -# 03/24,03/29,04/03 Gerd Kortemeyer -# 05/03,05/05,05/07 Gerd Kortemeyer -# 06/23,08/07,08/11,8/13,8/17,8/18,8/24,9/26,10/16 Gerd Kortemeyer -# 12/04,12/05 Guy Albertelli -# 12/05 Gerd Kortemeyer -# 12/05 Guy Albertelli -# 12/06,12/07 Gerd Kortemeyer -# 12/25 Gerd Kortemeyer -# YEAR=2002 -# 1/17 Gerd Kortemeyer -# ### ############################################################################### @@ -143,6 +125,7 @@ use Apache::lonnet(); use Apache::loncommon(); use Apache::lonmysql; use Apache::lonlocal; +use Apache::loncfile; use vars qw(%metadatafields %metadatakeys); my %addid; @@ -180,6 +163,10 @@ nothing ######################################### ######################################### +# +# Modifies global %metadatafields %metadatakeys +# + sub metaeval { my ($metastring,$prefix)=@_; @@ -214,9 +201,8 @@ sub metaeval { $newentry=~s/^\s*//; if ($newentry !~m|^/res|) { $newentry=$prefix.$newentry; } } - unless ($metadatafields{$unikey}=~/\w/) { - $metadatafields{$unikey}=$newentry; - } +# actually store + $metadatafields{$unikey}=$newentry; } } } @@ -262,7 +248,8 @@ sub metaread { my ($logfile,$fn,$prefix)=@_; unless (-e $fn) { print($logfile 'No file '.$fn."\n"); - return '
No file: '.$fn.''; + return '
'.&mt('No file').': '. + &Apache::loncfile::display($fn).''; } print($logfile 'Processing '.$fn."\n"); my $metastring; @@ -271,7 +258,8 @@ sub metaread { $metastring=join('',<$metafh>); } &metaeval($metastring,$prefix); - return '
Processed file: '.$fn.''; + return '
'.&mt('Processed file').': '. + &Apache::loncfile::display($fn).''; } ######################################### @@ -621,7 +609,7 @@ sub fix_ids_and_indices { join(', ',@duplicatedids)); if ($duplicateids) { print $logfile "Duplicate ID(s) exist, ".join(', ',@duplicatedids)."\n"; - my $outstring='Unable to publish file, it contains duplicated ID(s), ID(s) need to be unique. The duplicated ID(s) are: '.join(', ',@duplicatedids).''; + my $outstring=''.&mt('Unable to publish file, it contains duplicated ID(s), ID(s) need to be unique. The duplicated ID(s) are').': '.join(', ',@duplicatedids).''; return ($outstring,1); } if ($needsfixup) { @@ -686,8 +674,15 @@ sub fix_ids_and_indices { } if ($lctag eq 'applet') { my $codebase=''; - if (defined($parms{'codebase'})) { - my $oldcodebase=$parms{'codebase'}; + my $havecodebase=0; + foreach my $key (keys(%parms)) { + if (lc($key) eq 'codebase') { + $codebase=$parms{$key}; + $havecodebase=1; + } + } + if ($havecodebase) { + my $oldcodebase=$codebase; unless ($oldcodebase=~/\/$/) { $oldcodebase.='/'; } @@ -701,14 +696,13 @@ sub fix_ids_and_indices { } $allow{&absoluteurl($codebase,$target).'/*'}=1; } else { - foreach ('archive','code','object') { - if (defined($parms{$_})) { - my $oldurl=$parms{$_}; + foreach my $key (keys(%parms)) { + if ($key =~ /(archive|code|object)/i) { + my $oldurl=$parms{$key}; my $newurl=&urlfixup($oldurl,$target); $newurl=~s/\/[^\/]+$/\/\*/; - print $logfile 'Allow: applet '.$_.':'. - $oldurl.' allows '. - $newurl."\n"; + print $logfile 'Allow: applet '.lc($key).':'. + $oldurl.' allows '.$newurl."\n"; $allow{&absoluteurl($newurl,$target)}=1; } } @@ -812,19 +806,22 @@ sub store_metadata { # ============================================== Parse file itself for metadata - +# +# parses a file with target meta, sets global %metadatafields %metadatakeys sub parseformeta { my ($source,$style)=@_; + my $allmeta=''; if (($style eq 'ssi') || ($style eq 'prv')) { my $dir=$source; $dir=~s-/[^/]*$--; my $file=$source; $file=(split('/',$file))[-1]; $source=&Apache::lonnet::hreflocation($dir,$file); - my $allmeta=&Apache::lonnet::ssi_body($source,('grade_target' => 'meta')); + $allmeta=&Apache::lonnet::ssi_body($source,('grade_target' => 'meta')); &metaeval($allmeta); } + return $allmeta; } ######################################### @@ -858,7 +855,7 @@ sub publish { my %allow=(); unless ($logfile=Apache::File->new('>>'.$source.'.log')) { - return ('No write permission to user directory, FAIL',1); + return (''.&mt('No write permission to user directory, FAIL').'',1); } print $logfile "\n\n================= Publish ".localtime()." Phase One ================\n".$ENV{'user.name'}.'@'.$ENV{'user.domain'}."\n"; @@ -882,7 +879,7 @@ sub publish { if ($error) { return ($outstring,$error); } # ------------------------------------------------------------ Construct Allows - $scrout.='

Dependencies

'; + $scrout.='

'.&mt('Dependencies').'

'; my $allowstr=''; foreach (sort(keys(%allow))) { my $thisdep=$_; @@ -900,7 +897,7 @@ sub publish { if ( &Apache::lonnet::getfile($Apache::lonnet::perlvar{'lonDocRoot'}.'/'. $thisdep.'.meta') eq '-1') { - $scrout.= ' - Currently not available'. + $scrout.= ' - '.&mt('Currently not available'). ''; } else { my %temphash=(&Apache::lonnet::declutter($target).'___'. @@ -939,7 +936,8 @@ sub publish { # -------------------------------------------- Initial step done, now metadata. # --------------------------------------- Storage for metadata keys and fields. - +# these are globals +# %metadatafields=(); %metadatakeys=(); @@ -964,9 +962,6 @@ sub publish { $ENV{'user.domain'}; $metadatafields{'authorspace'}=$cuname.'@'.$cudom; -# ----------------------------------------------------------- Parse file itself - - &parseformeta($source,$style); # ------------------------------------------------ Check out directory hierachy my $thisdisfn=$source; @@ -983,6 +978,10 @@ sub publish { $scrout.=&metaread($logfile,$currentpath.'default.meta',$prefix); $prefix=~s|^\.\./||; } +# ----------------------------------------------------------- Parse file itself +# read %metadatafields from file itself + + $allmeta=&parseformeta($source,$style); # ------------------- Clear out parameters and stores (there should not be any) @@ -1003,12 +1002,12 @@ sub publish { delete $metadatafields{$_}; } } - - } # ------------------------------------------ See if anything new in file itself - &parseformeta($source,$style); + $allmeta=&parseformeta($source,$style); + } + # ---------------- Find and document discrepancies in the parameters and stores my $chparms=''; @@ -1039,7 +1038,9 @@ sub publish { } if ($chparms) { $scrout.='

'.&mt('Obsolete parameters or stored values').': '. - $chparms.'

'; + $chparms.'

'.&mt('Warning!'). + '

'. + &mt('If this resource is in active use, student performance data from the previous version may become inaccessible.').'


'; } # ------------------------------------------------------- Now have all metadata @@ -1073,7 +1074,7 @@ sub publish { unless ($batch) { $scrout.= '
'. - '

'. + '

'. &hiddenfield('phase','two'). &hiddenfield('filename',$ENV{'form.filename'}). &hiddenfield('allmeta',&Apache::lonnet::escape($allmeta)). @@ -1085,6 +1086,9 @@ sub publish { # --------------------------------------------------- Scan content for 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"; -

KEYWORDS: +

$KEYWORDS: $keywords_help - - + +


END @@ -1133,7 +1137,7 @@ END $scrout.=&textfield('Notes','notes',$metadatafields{'notes'}); $scrout.= - "\n

ABSTRACT:". + "\n

".&mt('ABSTRACT').":". "


". '

'; @@ -1334,6 +1338,15 @@ sub phasetwo { $allkeywords=~s/^\,//; $metadatafields{'keywords'}=$allkeywords; +# check if custom distribution file is specified + if ($metadatafields{'copyright'} eq 'custom') { + my $file=$metadatafields{'customdistributionfile'}; + unless ($file=~/\.rights$/) { + return + ''.&mt('No valid custom distribution rights file specified, FAIL'). + ''; + } + } { print $logfile "\nWrite metadata file for ".$source; my $mfh; @@ -1539,6 +1552,7 @@ sub phasetwo { '">'. &mt('Back to Source Directory').'

'); } + return '

'.&mt('Done').'

'; } ######################################### @@ -1838,8 +1852,8 @@ ENDDIFF my ($outstring,$error)=&publish($thisfn,$thistarget,$thisembstyle); $r->print('
'.$outstring); } else { - $r->print('
'); - &phasetwo($r,$thisfn,$thistarget,$thisembstyle,$thisdistarget); + $r->print('
'. + &phasetwo($r,$thisfn,$thistarget,$thisembstyle,$thisdistarget)); } } $r->print('');