--- loncom/interface/lonsearchcat.pm 2016/11/09 01:11:04 1.350 +++ loncom/interface/lonsearchcat.pm 2023/12/30 03:45:44 1.359 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Search Catalog # -# $Id: lonsearchcat.pm,v 1.350 2016/11/09 01:11:04 raeburn Exp $ +# $Id: lonsearchcat.pm,v 1.359 2023/12/30 03:45:44 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -176,7 +176,16 @@ sub handler { } 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?'. @@ -185,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/) { @@ -328,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')) { @@ -465,7 +474,7 @@ sub setup_basic_search { my ($r,$area,$hidden_fields,$closebutton) = @_; # Define interface components my %lt = &Apache::lonlocal::texthash ( - res => 'LON-CAPA Catalog Search', + res => 'Content Library Search', portfolio => 'Portfolio Search', ); my ($userelatedwords,$onlysearchdomain,$inclext,$adv_search_link,$scrout); @@ -649,7 +658,7 @@ function additional_metadata() { 'standards','mime') { $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield($fields{$field})) .&Apache::lonmeta::prettyinput($field, - $env{'form.'.$field}, + $env{'form.'.$field},'', $field, 'advsearch', $related_word_search{$field}, @@ -666,7 +675,7 @@ function additional_metadata() { foreach my $field ('lowestgradelevel','highestgradelevel') { $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield($fields{$field})) .&Apache::lonmeta::prettyinput($field, - $env{'form.'.$field}, + $env{'form.'.$field},'', $field, 'advsearch', 0) @@ -687,8 +696,10 @@ function additional_metadata() { $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield(&mt('Domains'))); if ($anydomain) { + my $defdom = &Apache::lonnet::default_login_domain(); + my ($trusted,$untrusted) = &Apache::lonnet::trusted_domains('shared',$defdom); $scrout .= &Apache::loncommon::domain_select('domains', - $env{'form.domains'},1); + $env{'form.domains'},1,$trusted,$untrusted); } else { $scrout .= &Apache::loncommon::select_dom_form($env{'user.domain'}, 'domains','','','',[$env{'user.domain'}],'',1); @@ -699,7 +710,7 @@ function additional_metadata() { if ($env{'form.area'} ne 'portfolio') { $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield(&mt('Copyright/Distribution'))) .&Apache::lonmeta::selectbox('copyright', - $env{'form.copyright'}, + $env{'form.copyright'},'', \&Apache::loncommon::copyrightdescription, ( undef, &Apache::loncommon::copyrightids) @@ -709,7 +720,7 @@ function additional_metadata() { $scrout .= &Apache::lonhtmlcommon::row_title(&titlefield(&mt('Language'))) .&Apache::lonmeta::selectbox('language', - $env{'form.language'}, + $env{'form.language'},'', \&Apache::loncommon::languagedescription, ('any',&Apache::loncommon::languageids) ) @@ -945,12 +956,12 @@ sub viewoptions { $scrout .= '' .&mt('Type:').' ' .&Apache::lonmeta::selectbox('viewselect', - $env{'form.viewselect'}, + $env{'form.viewselect'},'', \&viewoptiontext, sort(keys(%Views))) .''; my $countselect = &Apache::lonmeta::selectbox('show', - $env{'form.show'}, + $env{'form.show'},'', undef, (10,20,50,100,1000,10000)); $scrout .= ' ' @@ -1881,6 +1892,8 @@ sub build_date_queries { my (undef,undef,undef,$cbday,$cbmon,$cbyear) = localtime($cbefore); # Correct for year being relative to 1900 $cayear+=1900; $cbyear+=1900; + # Correct month; localtime gives month 0..11 but MySQL expects 1..12 + $camon++; $cbmon++; my $cquery= '(creationdate BETWEEN '. "'".$cayear.'-'.$camon.'-'.$caday."'". @@ -1899,6 +1912,8 @@ sub build_date_queries { my (undef,undef,undef,$mbday,$mbmon,$mbyear) = localtime($mbefore); # Correct for year being relative to 1900 $mayear+=1900; $mbyear+=1900; + # Correct month; localtime gives month 0..11 but MySQL expects 1..12 + $mamon++; $mbmon++; my $mquery= '(lastrevisiondate BETWEEN '. "'".$mayear.'-'.$mamon.'-'.$maday."'". @@ -2048,7 +2063,7 @@ a link to change the search query. ###################################################################### ###################################################################### sub print_sort_form { - my ($r,$pretty_query_string) = @_; + my ($r,$pretty_query_string,$target) = @_; ## my %SortableFields=&Apache::lonlocal::texthash( @@ -2081,15 +2096,20 @@ sub print_sort_form { &Apache::lonnet::logthis(&Apache::lonmysql::get_error()); return; } - my $start_page = &Apache::loncommon::start_page('Results',undef); + my $args; + if ($target eq '_parent') { + $args = {'links_target' => $target}; + } + my $start_page = &Apache::loncommon::start_page('Results',undef,$args); my $breadcrumbs= &Apache::lonhtmlcommon::breadcrumbs('Searching','Searching', - $env{'form.catalogmode'} ne 'import'); + $env{'form.catalogmode'} ne 'import', + '','','','','','',$target); my $result = < +
END @@ -2340,7 +2360,7 @@ results into MySQL. ###################################################################### sub run_search { my ($r,$query,$customquery,$customshow,$serverlist, - $pretty_string,$area,$domainsref) = @_; + $pretty_string,$area,$domainsref,$target) = @_; my $tabletype = 'metadata'; if ($area eq 'portfolio') { $tabletype = 'portfolio_search'; @@ -2349,10 +2369,15 @@ sub run_search { # # Print run_search header # - my $start_page = &Apache::loncommon::start_page('Search Status',undef); + my $args; + if ($target eq '_parent') { + $args = {'links_target' => $target}; + } + my $start_page = &Apache::loncommon::start_page('Search Status',undef,$args); my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs('Searching','Searching', - $env{'form.catalogmode'} ne 'import'); + $env{'form.catalogmode'} ne 'import', + '','','','','','',$target); $r->print(<aborted()); if ($oldhitcountsum < $hitcountsum) { &update_count_status($r,$hitcountsum); - if ($hitcountsum <= $env{'form.show'}) { + if (($hitcountsum <= $env{'form.show'}) || + (!$displaycount && $hitcountsum)) { reload_result_frame($r); + $displaycount = $hitcountsum; } $oldhitcountsum = $hitcountsum; }