--- loncom/interface/lonsearchcat.pm 2016/11/09 19:37:39 1.331.4.13 +++ loncom/interface/lonsearchcat.pm 2013/09/01 22:39:39 1.336 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Search Catalog # -# $Id: lonsearchcat.pm,v 1.331.4.13 2016/11/09 19:37:39 raeburn Exp $ +# $Id: lonsearchcat.pm,v 1.336 2013/09/01 22:39:39 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -52,6 +52,8 @@ search (on a server basis) is displayed =head1 Internals +=over 4 + =cut ############################################################################### @@ -78,7 +80,6 @@ use Apache::lonnavmaps; use Apache::lonindexer(); use Apache::lonwishlist(); use LONCAPA; -use Time::HiRes qw(sleep); ###################################################################### ###################################################################### @@ -144,7 +145,7 @@ sub handler { ## this once, so the pause indicator is deleted ## if (exists($env{'form.pause'})) { - sleep(0.1); + sleep(1); delete($env{'form.pause'}); } ## @@ -171,7 +172,7 @@ sub handler { &Apache::lonhtmlcommon::clear_breadcrumbs(); my @allowed_searches = ('portfolio'); - if (&Apache::lonnet::allowed('bre',$env{'request.role.domain'}) eq 'F') { + if (&Apache::lonnet::allowed('bre',$env{'request.role.domain'})) { push(@allowed_searches,'res'); } my $crumb_text = 'Portfolio Search'; @@ -194,15 +195,12 @@ sub handler { &Apache::lonnet::logthis('lonsearchcat:'. 'Unable to recover data from '. $persistent_db_file); - my $msg = - &mt('We were unable to retrieve data describing your search.'). - ' '.&mt('This is a serious error and has been logged.'). - '
'. - &mt('Please alert your LON-CAPA administrator.'); - &Apache::loncommon::simple_error_page( - $r,'Search Error', - $msg, - {'no_auto_mt_msg' => 1}); + my $msg = + 'We were unable to retrieve data describing your search. '. + 'This is a serious error and has been logged. '. + 'Please alert your LON-CAPA administrator.'; + &Apache::loncommon::simple_error_page($r,'Search Error', + $msg); return OK; } } @@ -430,9 +428,7 @@ sub hidden_field { ###################################################################### -=pod - -=over 4 +=pod =item &print_basic_search_form() @@ -450,7 +446,7 @@ sub print_basic_search_form { $env{'form.catalogmode'} ne 'import'); my $scrout = &Apache::loncommon::start_page('Content Library').$bread_crumb; # Search form for resource space - if (&Apache::lonnet::allowed('bre',$env{'request.role.domain'}) eq 'F') { + if (&Apache::lonnet::allowed('bre',$env{'request.role.domain'})) { $scrout .= &setup_basic_search($r,'res',$hidden_fields,$closebutton); $scrout .= '

'; } @@ -479,31 +475,14 @@ sub setup_basic_search { .&mt('use related words') .''; - my $anydom = 1; - if ($area eq 'res') { - unless (&Apache::lonnet::allowed('bre','/res/') eq 'F') { - $anydom = 0; - } - } - my $singledom; - my ($disabled,$checked); - if ($anydom) { - $singledom = $r->dir_config('lonDefDomain'); - if ($env{'form.domains'} eq $singledom) { - $checked = 1; - } - } else { - $singledom = $env{'user.domain'}; - $disabled = ' disabled="disabled"'; - $checked = 1; - } $onlysearchdomain = ''; $adv_search_link = '\n"; my $revise = &revise_button(); $result.='

' - .&mt('Total of [quant,_1,match,matches] to your query.',$total_results) + .&mt('There are [_1] matches to your query.',$total_results) .' '.$revise.'

' .'

'.&mt('Search: ').$pretty_query_string .'

'; @@ -2259,21 +2225,8 @@ SCRIPT $r->rflush(); } -sub reload_result_frame { - my ($r) = @_; - my $newloc = '/adm/searchcat?phase=results&persistent_db_id='. - $env{'form.persistent_db_id'}; - $r->print(< - parent.update_results("$newloc"); - -SCRIPT - - $r->rflush(); -} - { - my $max_time = 60; # seconds for the search to complete + my $max_time = 300; # seconds for the search to complete my $start_time = 0; my $last_time = 0; @@ -2406,7 +2359,7 @@ END my $major = $1; my $minor = $2; if (($major < 2) || (($major == 2) && ($minor < 11))) { - map { $older_library_servers{$_} = 1; } + map { $older_library_servers{$_} = 1; } &Apache::lonnet::machine_ids($library_servers{$key}); } } @@ -2416,7 +2369,7 @@ END foreach my $server (@Servers_to_contact) { my %possdoms; map { $possdoms{$_}=1; } &Apache::lonnet::machine_domains($all_library_servers{$server}); - $domains_by_server{$server} = + $domains_by_server{$server} = join(',',sort(&Apache::lonnet::machine_domains($all_library_servers{$server}))); } } @@ -2454,7 +2407,6 @@ END ## ## Prepare for the big loop. my $hitcountsum; - my $oldhitcountsum; my %matches; my $server; my $status; @@ -2501,7 +2453,7 @@ END &update_status($r, &mt('waiting on [_1]',join(' ',keys(%Server_status)))); } - sleep(0.1); + sleep(1); } # # Loop through the servers we have contacted but do not @@ -2577,13 +2529,7 @@ END delete($Server_status{$server}); } last if ($connection->aborted()); - if ($oldhitcountsum < $hitcountsum) { - &update_count_status($r,$hitcountsum); - if ($hitcountsum <= $env{'form.show'}) { - reload_result_frame($r); - } - $oldhitcountsum = $hitcountsum; - } + &update_count_status($r,$hitcountsum); } last if ($connection->aborted()); &update_seconds($r); @@ -2677,8 +2623,6 @@ sub display_results { if ($env{'form.catalogmode'} eq 'import') { if (! tie(%groupsearch_db,'GDBM_File',$diropendb, &GDBM_WRCREAT(),0640)) { - # NOTE: this can happen when a previous request to searchcat?phase=results gets interrupted - # (%groupsearch_db is not untied) $r->print('

'. &mt('Unable to save import results.'). '

'. @@ -2686,11 +2630,7 @@ sub display_results { &Apache::loncommon::end_page()); $r->rflush(); return; - } - # untie %groupsearch_db if the connection gets aborted before the end - $r->register_cleanup(sub { - untie %groupsearch_db if (tied(%groupsearch_db)); - }); + } } ## ## Prepare the table for querying @@ -2832,7 +2772,8 @@ sub display_results { ); if ($total_results == 0) { - $r->print('

'.&mt('There are currently no results.').'

'. + $r->print(''. + '

'.&mt('There are currently no results.').'

'. "". &Apache::loncommon::end_page()); return; @@ -3205,18 +3146,9 @@ SCRIPT SCRIPT - $js.=< - \$(document).ready(function() { - parent.done_loading_results(); - }); - -SCRIPT - my $start_page = &Apache::loncommon::start_page(undef,$js, {'only_body' =>1, - 'add_wishlist' =>1, - 'add_modal' =>1}); + 'add_wishlist' =>1}); my $result=< @@ -3246,26 +3178,6 @@ sub print_frames_interface { // JS @@ -3378,7 +3290,7 @@ sub detailed_citation_view { ''.$prefix. ''.' '. '
'.$values{'title'}."\n". + 'target="preview">'.$values{'title'}."\n". &display_tools($values{'title'}, $jumpurl). "

\n". ''.$values{'author'}.','. @@ -3511,7 +3423,7 @@ sub summary_view { my $link = '
'.&display_url($jumpurl,1).'
'; $result .= ''.$values{'title'}.''. + ' target="preview">'.$values{'title'}.''. &display_tools($values{'title'}, $jumpurl).< $link
@@ -3557,7 +3469,7 @@ sub compact_view { } $jumpurl = &HTML::Entities::encode($jumpurl,'<>&"'); $result.=' '. - ''. + ''. &HTML::Entities::encode($values{'title'},'<>&"').' '. &display_tools($values{'title'}, $jumpurl). $link.' '.$values{'author'}.' ('.$values{'domain'}.')'; @@ -3573,22 +3485,12 @@ sub display_url { } elsif ($url=~m{^(http://|/uploaded/)}) { $link=''.$url.''; } else { - # replace the links to open in a new window - # (because the search opens in a new window, it gets - # confusing when the links open a tab in the - # parent window; ideally we should not force windows) - my $onclick = " onclick=\"window.open(this.href, '_blank', 'toolbar=1,location=1,menubar=0');return false;\""; $link=&Apache::lonhtmlcommon::crumbs( $url, 'preview', '', (($env{'form.catalogmode'} eq 'import')?'parent.statusframe.document.forms.statusform':''), - $skiplast,$onclick).' '; - # replace the links to open in a new window - # (because the search opens in a new window, it gets - # confusing when the links open a tab in the - # parent window; ideally we should not force windows) - $link =~ s/(href="[^"]*")/\1 onclick="window.open(this.href, '_blank', 'toolbar=1,location=1,menubar=0');return false;"/g; + $skiplast).' '; } return $link; } @@ -3894,7 +3796,7 @@ Cleans the global %groupsearch_db by rem ###################################################################### sub start_fresh_session { delete $groupsearch_db{'mode_catalog'}; - foreach (keys(%groupsearch_db)) { + foreach (keys %groupsearch_db) { if ($_ =~ /^pre_/) { delete $groupsearch_db{$_}; }