--- loncom/interface/lonsearchcat.pm 2004/04/19 14:42:24 1.208 +++ loncom/interface/lonsearchcat.pm 2004/04/19 17:44:47 1.211 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Search Catalog # -# $Id: lonsearchcat.pm,v 1.208 2004/04/19 14:42:24 matthew Exp $ +# $Id: lonsearchcat.pm,v 1.211 2004/04/19 17:44:47 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -164,6 +164,25 @@ sub handler { '_'.&Apache::lonnet::escape($ENV{'user.name'}). '_'.$ENV{'form.persistent_db_id'}.'_persistent_search.db'; ## + &Apache::lonhtmlcommon::clear_breadcrumbs(); + if (exists($ENV{'request.course.id'}) && $ENV{'request.course.id'} ne '') { + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>'/adm/searchcat?'. + 'catalogmode='.$ENV{'form.catalogmode'}. + '&launch='.$ENV{'form.launch'}. + '&mode='.$ENV{'form.mode'}, + text=>"Course and Catalog Search", + bug=>'Searching',}); + } else { + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>'/adm/searchcat?'. + 'catalogmode='.$ENV{'form.catalogmode'}. + '&launch='.$ENV{'form.launch'}. + '&mode='.$ENV{'form.mode'}, + text=>"Catalog Search", + bug=>'Searching',}); + } + # if (! &get_persistent_form_data($persistent_db_file)) { if ($ENV{'form.phase'} =~ /(run_search|results)/) { &Apache::lonnet::logthis("lonsearchcat:Unable to recover data ". @@ -264,6 +283,32 @@ END } $ENV{'form.phase'} = 'disp_basic' if (! exists($ENV{'form.phase'})); $ENV{'form.show'} = 20 if (! exists($ENV{'form.show'})); + # + $ENV{'form.searchmode'} = 'basic'; + if ($ENV{'form.phase'} eq 'adv_search' || + $ENV{'form.phase'} eq 'disp_adv') { + $ENV{'form.searchmode'} = 'advanced'; + } elsif ($ENV{'form.phase'} eq 'course_search') { + $ENV{'form.searchmode'} = 'course_search'; + } + # + if ($ENV{'form.searchmode'} eq 'advanced') { + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>'/adm/searchcat?phase=disp_adv&'. + 'catalogmode='.$ENV{'form.catalogmode'}. + '&launch='.$ENV{'form.launch'}. + '&mode='.$ENV{'form.mode'}, + text=>"Advanced Search", + bug=>'Searching',}); + } elsif ($ENV{'form.searchmode'} eq 'course search') { + &Apache::lonhtmlcommon::add_breadcrumb + ({href=>'/adm/searchcat?phase=disp_adv&'. + 'catalogmode='.$ENV{'form.catalogmode'}. + '&launch='.$ENV{'form.launch'}. + '&mode='.$ENV{'form.mode'}, + text=>"Course Search", + bug=>'Searching',}); + } ## ## Switch on the phase ## @@ -288,19 +333,17 @@ END &course_search($r); } elsif(($ENV{'form.phase'} eq 'basic_search') || ($ENV{'form.phase'} eq 'adv_search')) { - $ENV{'form.searchmode'} = 'basic'; - if ($ENV{'form.phase'} eq 'adv_search') { - $ENV{'form.searchmode'} = 'advanced'; - } # 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 @@ -487,14 +530,12 @@ Prints the form for the basic search. S sub print_basic_search_form { my ($r,$closebutton,$hidden_fields) = @_; my $bodytag=&Apache::loncommon::bodytag('Search'). - &Apache::loncommon::help_open_topic('Finding_Resources'). - &Apache::loncommon::help_open_bug('Searching'); + &Apache::lonhtmlcommon::breadcrumbs(undef,'Searching','Finding_Resources', + undef,undef,! $ENV{'form.launch'}); my $scrout = &search_html_header().$bodytag; if (&Apache::lonnet::allowed('bre',$ENV{'request.role.domain'})) { - my $CatalogSearch=&mt('Catalog Search'); my $Statement=&searchhelp(); $scrout.=(<$CatalogSearch
$hidden_fields @@ -610,7 +651,11 @@ sub print_advanced_search_form{ $closebutton END - my $bodytag=&Apache::loncommon::bodytag('Advanced Catalog Search'); + my $bodytag=&Apache::loncommon::bodytag('Advanced Catalog Search'). + &Apache::lonhtmlcommon::breadcrumbs(undef,'Searching', + 'Finding_Resources', + undef,undef, + ! $ENV{'form.launch'}); my $searchhelp=&searchhelp(); my $scrout=&search_html_header(); $scrout .= <<"ENDHEADER"; @@ -636,7 +681,7 @@ ENDHEADER 'standards'=>1, 'mime'=>1, ); - + # foreach my $field ('title','author','owner','authorspace','modifyinguser', 'keywords','notes','abstract','standards','mime') { $scrout.=''.&titlefield($fields{$field}).''. @@ -1875,11 +1920,13 @@ 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))) { + &update_seconds($r,$time_remaining); # Send out a search request if it needs to be done. if (@Servers_to_contact) { # Contact one server @@ -1905,6 +1952,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; @@ -1947,6 +2000,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; @@ -2142,6 +2196,9 @@ 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