--- loncom/interface/lonsearchcat.pm 2004/04/19 16:53:27 1.209 +++ loncom/interface/lonsearchcat.pm 2004/04/19 21:46:50 1.212 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Search Catalog # -# $Id: lonsearchcat.pm,v 1.209 2004/04/19 16:53:27 matthew Exp $ +# $Id: lonsearchcat.pm,v 1.212 2004/04/19 21:46:50 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -74,6 +74,7 @@ use Apache::lonmeta; use Apache::lonhtmlcommon; use Apache::lonlocal; use LONCAPA::lonmetadata(); +use HTML::Entities(); ###################################################################### ###################################################################### @@ -336,12 +337,14 @@ END # Set up table if (! defined(&create_results_table())) { my $errorstring=&Apache::lonmysql::get_error(); + &Apache::lonnet::logthis('lonsearchcat.pm: Unable to create '. + 'needed table. lonmysql error:'. + $errorstring); $r->print(<Search Error $bodytag Unable to create table in which to store search results. The search has been aborted. -
$errorstring END @@ -1059,7 +1062,7 @@ sub parse_advanced_search { $fillflag++; } } - unless ($fillflag) { + if (! $fillflag) { &output_blank_field_error($r,$closebutton, 'phase=disp_adv',$hidden_fields); return ; @@ -1715,12 +1718,13 @@ Returns: the identifier of the table on sub set_up_table_structure { my ($datatypes,$fullindicies) = &LONCAPA::lonmetadata::describe_metadata_storage(); - unshift(@$datatypes,{name => 'id', + # Copy the table description before modifying it... + @Datatypes = @{$datatypes}; + unshift(@Datatypes,{name => 'id', type => 'MEDIUMINT', restrictions => 'UNSIGNED NOT NULL', primary_key => 'yes', auto_inc => 'yes' }); - @Datatypes = @{$datatypes}; @Fullindicies = @{$fullindicies}; return; } @@ -1918,11 +1922,14 @@ END END $r->rflush(); my $time_remaining = $max_time - (time - $starttime) ; + $time_remaining = 0 if ($time_remaining <0); my $last_time = $time_remaining; &update_seconds($r,$time_remaining); &update_status($r,'contacting '.$Servers_to_contact[0]); while (($time_remaining > 0) && ((@Servers_to_contact) || keys(%Server_status))) { + $time_remaining = $max_time - (time - $starttime) ; + &update_seconds($r,$time_remaining); # Send out a search request if it needs to be done. if (@Servers_to_contact) { # Contact one server @@ -1948,6 +1955,12 @@ END # have results from yet, looking for results. while (my ($server,$status) = each(%Server_status)) { last if ($connection->aborted()); + $time_remaining = $max_time - (time - $starttime) ; + $time_remaining = 0 if ($time_remaining < 0); + if ($last_time - $time_remaining > 0) { + $last_time = $time_remaining; + &update_seconds($r,$time_remaining); + } if ($status eq 'con_lost') { delete ($Server_status{$server}); next; @@ -1990,6 +2003,7 @@ END # $r->print(&Apache::lonmysql::get_debug()); $hitcountsum ++; $time_remaining = $max_time - (time - $starttime) ; + $time_remaining = 0 if ($time_remaining < 0); if ($last_time - $time_remaining > 0) { &update_seconds($r,$time_remaining); $last_time = $time_remaining; @@ -2185,8 +2199,12 @@ sub display_results { } my %Fields = %{&parse_row(@$row)}; my $output="

\n"; + if (! defined($Fields{'title'}) || $Fields{'title'} eq '') { + $Fields{'title'} = 'Untitled'; + } my $prefix=&catalogmode_output($Fields{'title'},$Fields{'url'}, $Fields{'id'},$checkbox_num++); + # Render the result into html $output.= &$viewfunction($prefix,%Fields); # Print them out as they come in. @@ -2702,34 +2720,38 @@ END ###################################################################### sub xml_sgml_view { my ($prefix,%values) = @_; + my $xml = < +$values{'url'} +$values{'title'} +$values{'author'} +$values{'subject'} +$values{'keywords'} +$values{'notes'} + +$values{'mime'} +$values{'mimetag'} + + +$values{'language'} +$values{'languagetag'} + +$values{'creationdate'} +$values{'lastrevisiondate'} +$values{'owner'} + +$values{'copyright'} +$values{'copyrighttag'} + +$values{'hostname'} +$values{'shortabstract'} + +END + $xml = &HTML::Entities::encode($xml,'<>&'); my $result=< -<LonCapaResource> -<url>$values{'url'}</url> -<title>$values{'title'}</title> -<author>$values{'author'}</author> -<subject>$values{'subject'}</subject> -<keywords>$values{'keywords'}</keywords> -<notes>$values{'notes'}</notes> -<mimeInfo> -<mime>$values{'mime'}</mime> -<mimetag>$values{'mimetag'}</mimetag> -</mimeInfo> -<languageInfo> -<language>$values{'language'}</language> -<languagetag>$values{'languagetag'}</languagetag> -</languageInfo> -<creationdate>$values{'creationdate'}</creationdate> -<lastrevisiondate>$values{'lastrevisiondate'}</lastrevisiondate> -<owner>$values{'owner'}</owner> -<copyrightInfo> -<copyright>$values{'copyright'}</copyright> -<copyrighttag>$values{'copyrighttag'}</copyrighttag> -</copyrightInfo> -<repositoryLocation>$values{'hostname'}</repositoryLocation> -<shortabstract>$values{'shortabstract'}</shortabstract> -</LonCapaResource> +$xml $values{'extrashow'}