--- loncom/interface/lonsearchcat.pm 2003/12/27 17:32:08 1.197
+++ loncom/interface/lonsearchcat.pm 2004/04/27 15:45:04 1.218
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Search Catalog
#
-# $Id: lonsearchcat.pm,v 1.197 2003/12/27 17:32:08 www Exp $
+# $Id: lonsearchcat.pm,v 1.218 2004/04/27 15:45:04 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -48,7 +48,7 @@ described at http://www.lon-capa.org.
lonsearchcat presents the user with an interface to search the LON-CAPA
digital library. lonsearchcat also initiates the execution of a search
by sending the search parameters to LON-CAPA servers. The progress of
-search (on a server basis) is displayed to the user in a seperate window.
+search (on a server basis) is displayed to the user in a separate window.
=head1 Internals
@@ -70,7 +70,11 @@ use Text::Query;
use GDBM_File;
use Apache::loncommon();
use Apache::lonmysql();
+use Apache::lonmeta;
+use Apache::lonhtmlcommon;
use Apache::lonlocal;
+use LONCAPA::lonmetadata();
+use HTML::Entities();
######################################################################
######################################################################
@@ -83,16 +87,14 @@ my %groupsearch_db; # Database hash use
# groupsearch RAT interface.
my %persistent_db; # gdbm hash which holds data which is supposed to
# persist across calls to lonsearchcat.pm
-## %Views:
-## Hash which associates an output view description with the function
-## that produces it.
-# View Description/Name Function Pointer
-my %Views = ("Detailed Citation View" => \&detailed_citation_view,
- "Summary View" => \&summary_view,
- "Fielded Format" => \&fielded_format_view,
- "XML/SGML" => \&xml_sgml_view,
- "Compact View" => \&compact_view);
+# The different view modes and associated functions
+
+my %Views = ("detailed" => \&detailed_citation_view,
+ "summary" => \&summary_view,
+ "fielded" => \&fielded_format_view,
+ "xml" => \&xml_sgml_view,
+ "compact" => \&compact_view);
######################################################################
######################################################################
@@ -148,7 +150,8 @@ sub handler {
## Initialize global variables
##
my $domain = $r->dir_config('lonDefDomain');
- $diropendb= "/home/httpd/perl/tmp/$ENV{'user.domain'}_$ENV{'user.name'}_searchcat.db";
+ $diropendb= "/home/httpd/perl/tmp/".
+ "$ENV{'user.domain'}_$ENV{'user.name'}_searchcat.db";
#
# set the name of the persistent database
# $ENV{'form.persistent_db_id'} can only have digits in it.
@@ -163,6 +166,25 @@ sub handler {
'_'.&Apache::lonnet::escape($ENV{'user.name'}).
'_'.$ENV{'form.persistent_db_id'}.'_persistent_search.db';
##
+ &Apache::lonhtmlcommon::clear_breadcrumbs();
+ if (exists($ENV{'request.course.id'}) && $ENV{'request.course.id'} ne '') {
+ &Apache::lonhtmlcommon::add_breadcrumb
+ ({href=>'/adm/searchcat?'.
+ 'catalogmode='.$ENV{'form.catalogmode'}.
+ '&launch='.$ENV{'form.launch'}.
+ '&mode='.$ENV{'form.mode'},
+ text=>"Course and Catalog Search",
+ bug=>'Searching',});
+ } else {
+ &Apache::lonhtmlcommon::add_breadcrumb
+ ({href=>'/adm/searchcat?'.
+ 'catalogmode='.$ENV{'form.catalogmode'}.
+ '&launch='.$ENV{'form.launch'}.
+ '&mode='.$ENV{'form.mode'},
+ text=>"Catalog Search",
+ bug=>'Searching',});
+ }
+ #
if (! &get_persistent_form_data($persistent_db_file)) {
if ($ENV{'form.phase'} =~ /(run_search|results)/) {
&Apache::lonnet::logthis("lonsearchcat:Unable to recover data ".
@@ -263,6 +285,32 @@ END
}
$ENV{'form.phase'} = 'disp_basic' if (! exists($ENV{'form.phase'}));
$ENV{'form.show'} = 20 if (! exists($ENV{'form.show'}));
+ #
+ $ENV{'form.searchmode'} = 'basic';
+ if ($ENV{'form.phase'} eq 'adv_search' ||
+ $ENV{'form.phase'} eq 'disp_adv') {
+ $ENV{'form.searchmode'} = 'advanced';
+ } elsif ($ENV{'form.phase'} eq 'course_search') {
+ $ENV{'form.searchmode'} = 'course_search';
+ }
+ #
+ if ($ENV{'form.searchmode'} eq 'advanced') {
+ &Apache::lonhtmlcommon::add_breadcrumb
+ ({href=>'/adm/searchcat?phase=disp_adv&'.
+ 'catalogmode='.$ENV{'form.catalogmode'}.
+ '&launch='.$ENV{'form.launch'}.
+ '&mode='.$ENV{'form.mode'},
+ text=>"Advanced Search",
+ bug=>'Searching',});
+ } elsif ($ENV{'form.searchmode'} eq 'course search') {
+ &Apache::lonhtmlcommon::add_breadcrumb
+ ({href=>'/adm/searchcat?phase=disp_adv&'.
+ 'catalogmode='.$ENV{'form.catalogmode'}.
+ '&launch='.$ENV{'form.launch'}.
+ '&mode='.$ENV{'form.mode'},
+ text=>"Course Search",
+ bug=>'Searching',});
+ }
##
## Switch on the phase
##
@@ -287,12 +335,12 @@ END
&course_search($r);
} elsif(($ENV{'form.phase'} eq 'basic_search') ||
($ENV{'form.phase'} eq 'adv_search')) {
- $ENV{'form.searchmode'} = 'basic';
- if ($ENV{'form.phase'} eq 'adv_search') {
- $ENV{'form.searchmode'} = 'advanced';
- }
# Set up table
if (! defined(&create_results_table())) {
+ my $errorstring=&Apache::lonmysql::get_error();
+ &Apache::lonnet::logthis('lonsearchcat.pm: Unable to create '.
+ 'needed table. lonmysql error:'.
+ $errorstring);
$r->print(<
');
$r->rflush();
# ======================================================= Go through the course
undef %alreadyseen;
@@ -450,6 +498,16 @@ sub untiehash {
} # End of course search scoping
+sub search_html_header {
+ my $Str = <
-
-$closebutton
-END
- $scrout.=&selectbox('View','viewselect',
- $ENV{'form.viewselect'},
- undef,undef,undef,
- sort(keys(%Views)));
- $scrout.=&selectbox('Per Page','show',
- $ENV{'form.show'},
- undef,undef,undef,
- (10,20,50,100));
- $scrout.=<
$lt{'header'}
-