--- loncom/publisher/lonpublisher.pm 2008/06/30 18:10:24 1.239 +++ loncom/publisher/lonpublisher.pm 2008/08/14 13:39:02 1.245 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Publication Handler # -# $Id: lonpublisher.pm,v 1.239 2008/06/30 18:10:24 bisitz Exp $ +# $Id: lonpublisher.pm,v 1.245 2008/08/14 13:39:02 onken Exp $ # # Copyright Michigan State University Board of Trustees # @@ -118,11 +118,14 @@ use Apache::File; use File::Copy; use Apache::Constants qw(:common :http :methods); use HTML::LCParser; +use HTML::Entities; +use Encode::Encoder; use Apache::lonxml; use Apache::loncacc; use DBI; use Apache::lonnet; use Apache::loncommon(); +use Apache::lonhtmlcommon; use Apache::lonmysql; use Apache::lonlocal; use Apache::loncfile; @@ -325,7 +328,7 @@ string which presents the form field (fo ######################################### ######################################### sub textfield { - my ($title,$name,$value)=@_; + my ($title,$name,$value,$noline)=@_; $value=~s/^\s+//gs; $value=~s/\s+$//gs; $value=~s/\s+/ /gs; @@ -333,11 +336,11 @@ sub textfield { $env{'form.'.$name}=$value; return "\n".&Apache::lonhtmlcommon::row_title($title) .'' - .&Apache::lonhtmlcommon::row_closure(); + .&Apache::lonhtmlcommon::row_closure($noline); } 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; @@ -352,7 +355,7 @@ sub text_with_browse_field { .'' .&mt('Search') .'' - .&Apache::lonhtmlcommon::row_closure(); + .&Apache::lonhtmlcommon::row_closure($noline); } sub hiddenfield { @@ -886,17 +889,21 @@ sub checkonthis { 'return_only_error_and_warning_counts' => 1)); my ($errorcount,$warningcount)=split(':',$result); if (($errorcount) || ($warningcount)) { - $r->print('
'.$uri.': '); - if ($errorcount) { - $r->print(''. - $errorcount.' '. - &mt('error(s)').' '); - } - if ($warningcount) { - $r->print(''. - $warningcount.' '. - &mt('warning(s)').''); - } + $r->print('

'.&mt('Warnings and Errors').'

'); + $r->print(''.$uri.':'); + $r->print(''); } else { #$r->print(''.&mt('ok').''); } @@ -1167,17 +1174,22 @@ sub publish { $textonly=~s/\//g; $textonly=~s/\[^\<]+\<\/m\>//g; $textonly=~s/\<[^\>]*\>//g; - $textonly=~tr/A-Z/a-z/; - $textonly=~s/[\$\&][a-z]\w*//g; - $textonly=~s/[^a-z\s]//g; - - foreach ($textonly=~m/(\w+)/g) { - unless ($nokey{$_}) { - $keywords{$_}=1; - } - } - } + #this is a work simplification for german authors for present + $textonly=HTML::Entities::decode($textonly); #decode HTML-character + $textonly=Encode::Encoder::encode('utf8', $textonly); #encode to perl internal unicode + $textonly=~tr/A-ZÜÄÖ/a-züäö/; #add lowercase rule for german "Umlaute" + $textonly=~s/[\$\&][a-z]\w*//g; + $textonly=~s/[^a-z^ü^ä^ö^ß\s]//g; #dont delete german "Umlaute" + + foreach ($textonly=~m/[^\s]+/g) { #match all but whitespaces + unless ($nokey{$_}) { + $keywords{$_}=1; + } + } + + + } foreach my $addkey (split(/[\"\'\,\;]/,$metadatafields{'keywords'})) { $addkey=~s/\s+/ /g; @@ -1237,10 +1249,13 @@ END .'' .'' .'


' - .''; + .&Apache::loncommon::start_data_table() + .&Apache::loncommon::start_data_table_row(); + my $colcount=0; foreach (sort keys %keywords) { + $colcount++; $keywordout.=''; - if ($colcount>10) { - $keywordout.="\n"; + if ($colcount>=10) { + $keywordout.=&Apache::loncommon::end_data_table_row() + .&Apache::loncommon::start_data_table_row(); $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.=''; + $colcount++; + } + } + $env{'form.keywords'}=~s/\,$//; - $keywordout.='
 
' + $keywordout.=&Apache::loncommon::end_data_table_row() + .&Apache::loncommon::end_data_table() .&Apache::lonhtmlcommon::row_closure(); $intr_scrout.=$keywordout; @@ -1309,9 +1333,12 @@ END $intr_scrout.=&hiddenfield('lastrevisiondate',time); - + my $pubowner_last; + if ($style eq 'prv') { + $pubowner_last = 1; + } $intr_scrout.=&textfield('Publisher/Owner','owner', - $metadatafields{'owner'}); + $metadatafields{'owner'},$pubowner_last); # ---------------------------------------------- Retrofix for unused copyright if ($metadatafields{'copyright'} eq 'free') { @@ -1362,7 +1389,7 @@ END .&Apache::lonhtmlcommon::row_closure(1); $intr_scrout.=&text_with_browse_field('Suggested Replacement for Obsolete File', 'obsoletereplacement', - $metadatafields{'obsoletereplacement'}); + $metadatafields{'obsoletereplacement'},'',1); } else { $intr_scrout.=&hiddenfield('copyright','private'); } @@ -1388,7 +1415,7 @@ END &hiddenfield('obsolete',1). &text_with_browse_field('Suggested Replacement for Obsolete File', 'obsoletereplacement', - $metadatafields{'obsoletereplacement'}); + $metadatafields{'obsoletereplacement'},'',1); } if (!$batch) { $scrout.=$intr_scrout @@ -2148,32 +2175,30 @@ ENDCAPTION $r->print(&Apache::lonhtmlcommon::row_title(&mt('Target')) .''.$thisdistarget.'' - .&Apache::lonhtmlcommon::row_closure() ); - # SB - ToDo: if (($cuname ne $env{'user.name'})||($cudom ne $env{'user.domain'})) { # $r->print(&Apache::lonhtmlcommon::row_title(''.&mt('Co-Author').'') - $r->print(&Apache::lonhtmlcommon::row_title(&mt('Co-Author')) + $r->print(&Apache::lonhtmlcommon::row_closure() + .&Apache::lonhtmlcommon::row_title(&mt('Co-Author')) .'' .&mt('[_1] at [_2]',$cuname,$cudom) .'' - .&Apache::lonhtmlcommon::row_closure() ); } if (&Apache::loncommon::fileembstyle($thistype) eq 'ssi') { - $r->print(&Apache::lonhtmlcommon::row_title(&mt('Diffs'))); + $r->print(&Apache::lonhtmlcommon::row_closure() + .&Apache::lonhtmlcommon::row_title(&mt('Diffs'))); $r->print(< ENDDIFF - $r->print(&mt('Diffs with Current Version').'' - .&Apache::lonhtmlcommon::row_closure() - ); - + $r->print(&mt('Diffs with Current Version').''); } - - $r->print(&Apache::lonhtmlcommon::end_pick_box()); + + $r->print(&Apache::lonhtmlcommon::row_closure(1) + .&Apache::lonhtmlcommon::end_pick_box() + ); # ------------------ Publishing from $thisfn to $thistarget with $thisembstyle.