--- loncom/interface/lonsearchcat.pm 2013/09/02 00:18:39 1.338
+++ loncom/interface/lonsearchcat.pm 2023/12/22 20:11:55 1.358
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Search Catalog
#
-# $Id: lonsearchcat.pm,v 1.338 2013/09/02 00:18:39 raeburn Exp $
+# $Id: lonsearchcat.pm,v 1.358 2023/12/22 20:11:55 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -52,8 +52,6 @@ search (on a server basis) is displayed
=head1 Internals
-=over 4
-
=cut
###############################################################################
@@ -80,6 +78,7 @@ use Apache::lonnavmaps;
use Apache::lonindexer();
use Apache::lonwishlist();
use LONCAPA;
+use Time::HiRes qw(sleep);
######################################################################
######################################################################
@@ -145,7 +144,7 @@ sub handler {
## this once, so the pause indicator is deleted
##
if (exists($env{'form.pause'})) {
- sleep(1);
+ sleep(0.1);
delete($env{'form.pause'});
}
##
@@ -172,12 +171,21 @@ sub handler {
&Apache::lonhtmlcommon::clear_breadcrumbs();
my @allowed_searches = ('portfolio');
- if (&Apache::lonnet::allowed('bre',$env{'request.role.domain'})) {
+ if (&Apache::lonnet::allowed('bre',$env{'request.role.domain'}) eq 'F') {
push(@allowed_searches,'res');
}
my $crumb_text = 'Portfolio Search';
if (@allowed_searches ==2) {
- $crumb_text = 'Portfolio and Catalog Search';
+ $crumb_text = 'Portfolio and Content Library Search';
+ }
+ my $target = '_top';
+ if ((($env{'request.lti.login'}) && ($env{'request.lti.target'} eq 'iframe')) ||
+ (($env{'request.deeplink.login'}) && ($env{'request.deeplink.target'} eq '_self'))) {
+ if ($env{'form.phase'} =~ /^(sort|run_search)$/) {
+ $target = '_parent';
+ } else {
+ $target = '_self';
+ }
}
&Apache::lonhtmlcommon::add_breadcrumb
({href=>'/adm/searchcat?'.
@@ -186,7 +194,7 @@ sub handler {
'&launch='.$env{'form.launch'}.
'&mode='.$env{'form.mode'},
text=>"$crumb_text",
- target=>'_top',
+ target=>$target,
bug=>'Searching',});
#
if ($env{'form.phase'} !~ m/(basic|adv|course)_search/) {
@@ -195,12 +203,15 @@ sub handler {
&Apache::lonnet::logthis('lonsearchcat:'.
'Unable to recover data from '.
$persistent_db_file);
- 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);
+ 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});
return OK;
}
}
@@ -326,10 +337,10 @@ END
['query','customquery','customshow',
'libraries','pretty_string','domains']);
if ($env{'form.phase'} eq 'sort') {
- &print_sort_form($r,$pretty_string);
+ &print_sort_form($r,$pretty_string,$target);
} elsif ($env{'form.phase'} eq 'run_search') {
&run_search($r,$query,$customquery,$customshow,
- $libraries,$pretty_string,$env{'form.area'},$domainsref);
+ $libraries,$pretty_string,$env{'form.area'},$domainsref,$target);
}
} elsif(($env{'form.phase'} eq 'basic_search') ||
($env{'form.phase'} eq 'adv_search')) {
@@ -428,8 +439,10 @@ sub hidden_field {
######################################################################
-=pod
+=pod
+=over 4
+
=item &print_basic_search_form()
Prints the form for the basic search. Sorry the name is so cryptic.
@@ -446,7 +459,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'})) {
+ if (&Apache::lonnet::allowed('bre',$env{'request.role.domain'}) eq 'F') {
$scrout .= &setup_basic_search($r,'res',$hidden_fields,$closebutton);
$scrout .= '
\n".
''.$values{'author'}.','.
@@ -3423,7 +3521,7 @@ sub summary_view {
my $link = '
'.&display_url($jumpurl,1).'
';
$result .=
''.$values{'title'}.''.
+ ' target="preview" onclick="openMyModal(this.href, 500, 500, \'yes\');return false;">'.$values{'title'}.''.
&display_tools($values{'title'}, $jumpurl).<
@@ -3469,7 +3567,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'}.')';
@@ -3485,12 +3583,17 @@ 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).' ';
+ '',
+ $skiplast,$onclick).' ';
}
return $link;
}
@@ -3796,7 +3899,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{$_};
}