[LON-CAPA-cvs] cvs: loncom /interface lonsearchcat.pm
raeburn
raeburn at source.lon-capa.org
Wed Mar 19 11:30:29 EDT 2025
raeburn Wed Mar 19 15:30:29 2025 EDT
Modified files:
/loncom/interface lonsearchcat.pm
Log:
- Use tabbed interface for content library search and portfolio search.
Portfolio search tab omitted when Course Editor > Import > Search used to
import resource(s) into a course.
-------------- next part --------------
Index: loncom/interface/lonsearchcat.pm
diff -u loncom/interface/lonsearchcat.pm:1.362 loncom/interface/lonsearchcat.pm:1.363
--- loncom/interface/lonsearchcat.pm:1.362 Wed Mar 19 15:18:59 2025
+++ loncom/interface/lonsearchcat.pm Wed Mar 19 15:30:29 2025
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Search Catalog
#
-# $Id: lonsearchcat.pm,v 1.362 2025/03/19 15:18:59 raeburn Exp $
+# $Id: lonsearchcat.pm,v 1.363 2025/03/19 15:30:29 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -170,12 +170,26 @@
##
&Apache::lonhtmlcommon::clear_breadcrumbs();
- my @allowed_searches = ('portfolio');
+ my $crumb_text;
+ my @allowed_searches;
+ if ($env{'form.catalogmode'} eq 'import') {
+ $env{'form.area'} = 'res';
+ $crumb_text = 'Content Library Search';
+ } else {
+ push(@allowed_searches,'portfolio');
+ }
if (&Apache::lonnet::allowed('bre',$env{'request.role.domain'}) eq 'F') {
push(@allowed_searches,'res');
- }
- my $crumb_text = 'Portfolio Search';
+ } else {
+ unless ($env{'form.catalogmode'} eq 'import') {
+ $env{'form.area'} = 'portfolio';
+ $crumb_text = 'Portfolio Search';
+ }
+ }
if (@allowed_searches ==2) {
+ unless (($env{'form.area'} eq 'portfolio') || ($env{'form.area'} eq 'res')) {
+ delete($env{'form.area'});
+ }
$crumb_text = 'Portfolio and Content Library Search';
}
my $target = '_top';
@@ -192,7 +206,8 @@
&Apache::loncommon::inhibit_menu_check().
'&catalogmode='.$env{'form.catalogmode'}.
'&launch='.$env{'form.launch'}.
- '&mode='.$env{'form.mode'},
+ '&mode='.$env{'form.mode'}.
+ '&area='.$env{'form.area'},
text=>"$crumb_text",
target=>$target,
bug=>'Searching',});
@@ -317,10 +332,23 @@
'&phase=disp_adv'.
'&catalogmode='.$env{'form.catalogmode'}.
'&launch='.$env{'form.launch'}.
- '&mode='.$env{'form.mode'},
+ '&mode='.$env{'form.mode'}.
+ '&area='.$env{'form.area'},
text=>"Advanced $srchtype Search",
bug=>'Searching',});
- }
+ } elsif (($env{'form.phase'} eq 'results') ||
+ ($env{'form.phase'} =~ /^(sort|run_search)$/)) {
+ &Apache::lonhtmlcommon::add_breadcrumb
+ ({href=>'/adm/searchcat?'.&Apache::loncommon::inhibit_menu_check().
+ '&phase=disp_adv'.
+ '&catalogmode='.$env{'form.catalogmode'}.
+ '&launch='.$env{'form.launch'}.
+ '&mode='.$env{'form.mode'}.
+ '&area='.$env{'form.area'}.
+ '&searchmode='.$env{'form.searchmode'},
+ text=>"Search Results",
+ bug=>'Searching',});
+ }
##
## Switch on the phase
##
@@ -437,6 +465,42 @@
return '<input type="hidden" name="'.$name.'" value="'.$value.'" />'.$/;
}
+sub start_search_tabs {
+ my $area;
+ my %lt = &Apache::lonlocal::texthash (
+ res => 'Content Library Search',
+ portfolio => 'Portfolio Search',
+ );
+ my $output = '<ul class="LC_TabContentBigger" id="main">';
+ if (&Apache::lonnet::allowed('bre',$env{'request.role.domain'}) eq 'F') {
+ unless ($env{'form.area'} eq 'portfolio') {
+ $area = 'res';
+ }
+ $output .= "\n".'<li'.($area eq 'res'?' class="active"':'').
+ '><a href="/adm/searchcat?area=res&catalogmode='.$env{'form.catalogmode'}.'">'.
+ '<b> '.$lt{'res'}.
+ ' </b></a></li>';
+ unless ($env{'form.catalogmode'}) {
+ $output .= '<li'.($area ne 'res'?' class="active"':'').
+ '><a href="/adm/searchcat?area=portfolio"><b> '.$lt{'portfolio'}.
+ ' </b></a></li></ul>';
+ }
+ } else {
+ $area = 'portfolio';
+ $output .= "\n".'<li class="active">'.
+ '<a href="/adm/searchcat?area=portfolio"><b> '.$lt{'portfolio'}.
+ ' </b></a></li></ul>';
+ }
+ $output .= '<div class="LC_Box" style="clear:both;margin:0;">'.
+ '<div id="maincoursedoc" style="margin:0 0;padding:0 0;">'.
+ '<div class="LC_ContentBox" id="mainCourseDocuments" style="display: block;">';
+ return $output;
+}
+
+sub end_search_tabs {
+ return '</div></div></div>';
+}
+
######################################################################
=pod
@@ -453,19 +517,31 @@
######################################################################
sub print_basic_search_form {
my ($r,$closebutton,$hidden_fields) = @_;
+ my %lt = &Apache::lonlocal::texthash (
+ res => 'Content Library Search',
+ portfolio => 'Portfolio Search',
+ );
my $result = ($env{'form.catalogmode'} ne 'import');
+ my $area;
my $bread_crumb =
&Apache::lonhtmlcommon::breadcrumbs('Searching','Search_Basic',
$env{'form.catalogmode'} ne 'import');
- my $scrout = &Apache::loncommon::start_page('Content Library').$bread_crumb;
-# Search form for resource space
+ my $scrout = &Apache::loncommon::start_page('Content Library').$bread_crumb.
+ '<div class="LC_landmark" role="main">'."\n".
+ &start_search_tabs();
if (&Apache::lonnet::allowed('bre',$env{'request.role.domain'}) eq 'F') {
- $scrout .= &setup_basic_search($r,'res',$hidden_fields,$closebutton);
- $scrout .= '<hr /><br />';
- }
+ if ($env{'form.area'} eq 'portfolio') {
# Search form for accessible portfolio files
- $scrout.= &setup_basic_search($r,'portfolio',$hidden_fields,$closebutton);
- $scrout .= &Apache::loncommon::end_page();
+ $scrout .= &setup_basic_search($r,'portfolio',$hidden_fields,$closebutton);
+ } else {
+# Search form for resource space
+ $scrout .= &setup_basic_search($r,'res',$hidden_fields,$closebutton);
+ }
+ } else {
+# Search form for accessible portfolio files
+ $scrout .= &setup_basic_search($r,'portfolio',$hidden_fields,$closebutton);
+ }
+ $scrout .= &end_search_tabs().&Apache::loncommon::end_page();
$r->print($scrout);
return;
}
@@ -535,29 +611,20 @@
$scrout .= '<input type="hidden" name="area" value="'.$area.'" />';
}
#
- $scrout .= '<div align="center">'.$/;
-# if ($env{'request.course.id'}) {
- $scrout .= '<h1>'.$lt{$area}.'</h1>';
-# } else {
- # No need to tell them they are searching
-# $scrout.= ('<br />'x2);
-# }
- $scrout.='<table>'.
- '<tr><td align="center" valign="top">'.
- &Apache::lonhtmlcommon::textbox('basicexp',
- $env{'form.basicexp'},50).
- '<br />'.
- '<span class="LC_fontsize_medium">'.&searchhelp().'</span>'.'</td>'.
- '<td>'.
- '<span class="LC_nobreak">'.(' 'x3).$adv_search_link.'</span>'.'<br />'.
- '<span class="LC_nobreak">'.(' 'x1).$userelatedwords.'</span>'.'<br />'.
- '<span class="LC_nobreak">'.(' 'x1).$onlysearchdomain.'</span>'.'<br />'.
- '<span class="LC_nobreak">'.(' 'x1).$inclext.'</span>'.'<br />'.
- '</td>'.
- '</tr>'.
- '</table>'.$/;
+ $scrout .= '<div class="LC_floatleft">'.
+ '<label>'.
+ &Apache::lonhtmlcommon::textbox('basicexp',
+ $env{'form.basicexp'},50).
+ '<br />'.
+ '<span class="LC_fontsize_medium">'.&searchhelp().'</span></label></div>'.
+ '<div class="LC_floatleft" style="text-align: left;">'.
+ '<span class="LC_nobreak">'.(' 'x3).$adv_search_link.'</span>'.'<br />'.
+ '<span class="LC_nobreak">'.(' 'x1).$userelatedwords.'</span>'.'<br />'.
+ '<span class="LC_nobreak">'.(' 'x1).$onlysearchdomain.'</span>'.'<br />'.
+ '<span class="LC_nobreak">'.(' 'x1).$inclext.'</span>'.'<br />'.
+ '</div><br clear="both" />'.$/;
#
- $scrout .= '<p>'
+ $scrout .= '<div><p>'
.&viewoptions()
.'</p>'
.'<p>'
@@ -565,9 +632,9 @@
.'value="'.&mt('Search').'" />'
.' '
.$closebutton
- .'</p>';
+ .'</p></div>';
#
- $scrout .= '</div>'.'</form>';
+ $scrout .= '</form>';
return $scrout;
}
@@ -617,7 +684,8 @@
}
my $scrout= &Apache::loncommon::start_page("Advanced $srchtype Search",
$jscript);
- $scrout .= $bread_crumb.'<div class="LC_landmark" role="main">'."\n";
+ $scrout .= $bread_crumb.'<div class="LC_landmark" role="main">'."\n".
+ &start_search_tabs();
$scrout .= '<form method="post" action="/adm/searchcat" name="advsearch">'
.$hidden_fields
@@ -919,7 +987,7 @@
$scrout .= $advanced_buttons
.'</form>';
- $scrout .= '</div>'.&Apache::loncommon::end_page();
+ $scrout .= &end_search_tabs().'</div>'.&Apache::loncommon::end_page();
$r->print($scrout);
return;
}
@@ -1301,7 +1369,9 @@
}
if (! $fillflag) {
&output_blank_field_error($r,$closebutton,
- 'phase=disp_adv',$hidden_fields);
+ 'phase=disp_adv&area='.$env{'form.area'}.
+ '&catalogmode='.$env{'form.catalogmode'},
+ $hidden_fields);
return;
}
# Turn the form input into a SQL-based query
@@ -1315,7 +1385,9 @@
&process_phrase_input($env{'form.'.$field},
$env{'form.'.$field.'_related'},$field);
if (defined($error)) {
- &output_unparsed_phrase_error($r,$closebutton,'phase=disp_adv',
+ &output_unparsed_phrase_error($r,$closebutton,
+ 'phase=disp_adv&area='.$env{'form.area'}.
+ '&catalogmode='.$env{'form.catalogmode'}.
$hidden_fields,$field);
return;
} else {
@@ -1599,7 +1671,9 @@
# Check to see if enough of a query is filled in
my $search_string = $env{'form.basicexp'};
if (! &filled($search_string)) {
- &output_blank_field_error($r,$closebutton,'phase=disp_basic');
+ &output_blank_field_error($r,$closebutton,'phase=disp_basic'.
+ '&area='.$env{'form.area'}.
+ '&catalogmode='.$env{'form.catalogmode'});
return OK;
}
my $pretty_search_string=$search_string;
@@ -1615,7 +1689,9 @@
$env{'form.related'},
$searchfield);
if ($error) {
- &output_unparsed_phrase_error($r,$closebutton,'phase=disp_basic',
+ &output_unparsed_phrase_error($r,$closebutton,'phase=disp_basic'.
+ '&area='.$env{'form.area'}.
+ '&catalogmode='.$env{'form.catalogmode'},
'','basicexp');
return;
}
@@ -2307,7 +2383,8 @@
sub reload_result_frame {
my ($r) = @_;
my $newloc = '/adm/searchcat?phase=results&persistent_db_id='.
- $env{'form.persistent_db_id'};
+ $env{'form.persistent_db_id'}.'&area='.$env{'form.area'}.
+ '&catalogmode='.$env{'form.catalogmode'};
$r->print(<<SCRIPT);
<script type="text/javascript">
parent.update_results("$newloc");
@@ -2377,7 +2454,9 @@
my $newloc = '/adm/searchcat'.
'?persistent_db_id='.$env{'form.persistent_db_id'}.
'&cleargroupsort=1'.
- '&phase='.$revise_phase;
+ '&phase='.$revise_phase.
+ '&area='.$env{'form.area'}.
+ '&catalogmode='.$env{'form.catalogmode'};
my $result = qq{<input type="button" value="$revisetext" name="revise"} .
qq{ onclick="parent.location='$newloc';" /> };
return $result;
@@ -2652,7 +2731,7 @@
# if ($env{'form.catalogmode'} ne 'import') {
$r->print(<<SCRIPT);
<script>
-window.location='/adm/searchcat?phase=sort&persistent_db_id=$env{'form.persistent_db_id'}';
+window.location='/adm/searchcat?phase=sort&area=$env{"form.area"}&catalogmode=$env{"form.catalogmode"}&persistent_db_id=$env{'form.persistent_db_id'}';
</script>
SCRIPT
# }
@@ -2724,7 +2803,8 @@
##
## Get the catalog controls setup
##
- my $action = "/adm/searchcat?phase=results";
+ my $action = "/adm/searchcat?phase=results&area='.$env{'form.area'}.
+ '&catalogmode='.$env{'form.catalogmode'};
##
## Deal with import by opening the import db file.
if ($env{'form.catalogmode'} eq 'import') {
@@ -3289,6 +3369,8 @@
sub results_link {
my $basic_link = "/adm/searchcat?"."&table=".$env{'form.table'}.
+ "&area=".$env{'form.area'}.
+ "&catalogmode=".$env{'form.catalogmode'}.
"&persistent_db_id=".$env{'form.persistent_db_id'};
my $results_link = $basic_link."&phase=results".
"&pause=1"."&start=1";
@@ -3299,7 +3381,9 @@
######################################################################
sub print_frames_interface {
my $r = shift;
- my $basic_link = "/adm/searchcat?"."&table=".$env{'form.table'}.
+ my $basic_link = "/adm/searchcat?table=".$env{'form.table'}.
+ "&area=".$env{'form.area'}.
+ "&catalogmode=".$env{'form.catalogmode'}.
"&persistent_db_id=".$env{'form.persistent_db_id'};
my $run_search_link = $basic_link."&phase=run_search";
my $results_link = &results_link();
More information about the LON-CAPA-cvs
mailing list