[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