--- loncom/interface/lonsearchcat.pm 2024/07/04 17:21:22 1.331.4.17
+++ 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.17 2024/07/04 17:21:22 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 .= '
' - .&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 .'
'; @@ -2263,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(< -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; @@ -2410,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}); } } @@ -2420,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}))); } } @@ -2458,8 +2407,6 @@ END ## ## Prepare for the big loop. my $hitcountsum; - my $oldhitcountsum; - my $displaycount; my %matches; my $server; my $status; @@ -2506,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 @@ -2559,8 +2506,8 @@ END if ($area eq 'portfolio') { next if (defined($matches{$Fields{'url'}})); - # Skip unless access control set to public or passphrase-protected - next unless (($Fields{'scope'} eq 'public') || ($Fields{'scope'} eq 'guest')); + # Skip if inaccessible + next if (!&Apache::lonnet::portfolio_access($Fields{'url'})); $matches{$Fields{'url'}} = 1; } # @@ -2582,15 +2529,7 @@ END delete($Server_status{$server}); } last if ($connection->aborted()); - if ($oldhitcountsum < $hitcountsum) { - &update_count_status($r,$hitcountsum); - if (($hitcountsum <= $env{'form.show'}) || - (!$displaycount && $hitcountsum)) { - reload_result_frame($r); - $displaycount = $hitcountsum; - } - $oldhitcountsum = $hitcountsum; - } + &update_count_status($r,$hitcountsum); } last if ($connection->aborted()); &update_seconds($r); @@ -2684,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.'). '
'. @@ -2693,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 @@ -2839,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; @@ -3212,18 +3146,9 @@ SCRIPT SCRIPT - $js.=< -SCRIPT - my $start_page = &Apache::loncommon::start_page(undef,$js, {'only_body' =>1, - 'add_wishlist' =>1, - 'add_modal' =>1}); + 'add_wishlist' =>1}); my $result=<\n".
''.$values{'author'}.','.
@@ -3518,7 +3423,7 @@ sub summary_view {
my $link = '
'.&display_url($jumpurl,1).'
';
$result .=
''.$values{'title'}.''.
+ ' target="preview">'.$values{'title'}.''.
&display_tools($values{'title'}, $jumpurl).<
@@ -3564,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'}.')';
@@ -3580,17 +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',
'',
- '',
- $skiplast,$onclick).' ';
+ (($env{'form.catalogmode'} eq 'import')?'parent.statusframe.document.forms.statusform':''),
+ $skiplast).' ';
}
return $link;
}
@@ -3896,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{$_};
}