--- loncom/interface/lonsearchcat.pm 2002/07/08 14:52:19 1.138
+++ loncom/interface/lonsearchcat.pm 2002/07/12 21:02:27 1.142
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Search Catalog
#
-# $Id: lonsearchcat.pm,v 1.138 2002/07/08 14:52:19 matthew Exp $
+# $Id: lonsearchcat.pm,v 1.142 2002/07/12 21:02:27 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -40,7 +40,7 @@
=head1 NAME
-lonsearchcat
+lonsearchcat - LONCAPA Search Interface
=head1 SYNOPSIS
@@ -109,15 +109,22 @@ button that closes the search window
button to take the select results and go to group sorting
-=item %hash
+=item %groupsearch_db
-The ubiquitous database hash
+Database hash used to save values for the groupsearch RAT interface.
=item $diropendb
The full path to the (temporary) search database file. This is set and
used in &handler() and is also used in &output_results().
+=item %Views
+
+Hash which associates an output view description with the function
+that produces it. Adding a new view type should be as easy as
+adding a line to the definition of this hash and making sure the function
+takes the proper parameters.
+
=back
=cut
@@ -130,9 +137,15 @@ my $closebutton; # button that closes t
my $importbutton; # button to take the selected results and go to group sorting
# -- miscellaneous variables
-my %hash; # database hash
+my %groupsearch_db; # database hash
my $diropendb = ""; # db file
+# View Description Function Pointer
+my %Views = ("Detailed Citation View" => \&detailed_citation_view,
+ "Summary View" => \&summary_view,
+ "Fielded Format" => \&fielded_format_view,
+ "XML/SGML" => \&xml_sgml_view );
+
######################################################################
######################################################################
@@ -160,7 +173,7 @@ string that holds portions of the screen
######################################################################
sub handler {
my $r = shift;
- untie %hash;
+ untie %groupsearch_db;
$r->content_type('text/html');
$r->send_http_header;
@@ -177,9 +190,9 @@ sub handler {
## Clear out old values from database
##
if ($ENV{'form.launch'} eq '1') {
- if (tie(%hash,'GDBM_File',$diropendb,&GDBM_WRCREAT,0640)) {
+ if (tie(%groupsearch_db,'GDBM_File',$diropendb,&GDBM_WRCREAT,0640)) {
&start_fresh_session();
- untie %hash;
+ untie %groupsearch_db;
} else {
$r->print('
Unable to tie hash to db '.
'file');
@@ -223,6 +236,7 @@ END
$searchtype = 'Basic' if ($ENV{'form.basicsubmit'} eq 'SEARCH');
$searchtype = 'Advanced' if ($ENV{'form.advancedsubmit'} eq 'SEARCH');
if ($searchtype) {
+ # We are running a search
my ($query,$customquery,$customshow,$libraries) =
(undef,undef,undef,undef);
if ($searchtype eq 'Basic') {
@@ -232,19 +246,32 @@ END
= &parse_advanced_search($r);
return OK if (! defined($query));
}
+ # Output some information to the user.
+ $r->print(&search_results_header($searchtype));
+ $r->print("Sending search request to LON-CAPA servers. \n");
+ $r->rflush();
# Send query statements over the network to be processed by
# either the SQL database or a recursive scheme of 'grep'-like
# actions (for custom metadata).
- $r->rflush();
my $reply=&Apache::lonnet::metadata_query($query,$customquery,
$customshow,$libraries);
+ $r->rflush();
&output_results($searchtype,$r,$reply,$hidden);
- } elsif ($ENV{'form.reqinterface'} eq 'advanced') {
+ } else {
+ #
+ # We need to get information to search on
+ #
+ # Set the default view if it is not already set.
+ if (!defined($ENV{'form.viewselect'})) {
+ $ENV{'form.viewselect'} ="Detailed Citation View";
+ }
# Output the advanced interface
- $r->print(&advanced_search_form($closebutton,$hidden));
- } else {
- # Output normal search interface
- $r->print(&basic_search_form($closebutton,$hidden));
+ if ($ENV{'form.reqinterface'} eq 'advanced') {
+ $r->print(&advanced_search_form($closebutton,$hidden));
+ } else {
+ # Output normal search interface
+ $r->print(&basic_search_form($closebutton,$hidden));
+ }
}
return OK;
}
@@ -295,20 +322,21 @@ ENDDOCUMENT
' ';
# $scrout.=&simplecheckbox('allversions',$ENV{'form.allversions'});
# $scrout.='Search historic archives';
- $scrout.=<
\n";
@@ -545,8 +577,8 @@ END
return $persistent;
}
-
######################################################################
+# HTML form building functions #
######################################################################
=pod
@@ -555,6 +587,13 @@ END
=over 4
+=cut
+
+###############################################
+###############################################
+
+=pod
+
=item &simpletextfield()
Inputs: $name,$value,$size
@@ -562,6 +601,23 @@ Inputs: $name,$value,$size
Returns a text input field with the given name, value, and size.
If size is not specified, a value of 20 is used.
+=cut
+
+###############################################
+###############################################
+
+sub simpletextfield {
+ my ($name,$value,$size)=@_;
+ $size = 20 if (! defined($size));
+ return '';
+}
+
+###############################################
+###############################################
+
+=pod
+
=item &simplecheckbox()
Inputs: $name,$value
@@ -569,91 +625,106 @@ Inputs: $name,$value
Returns a simple check box with the given $name.
If $value eq 'on' the box is checked.
-=item &searchphrasefield()
+=cut
-Inputs: $title,$name,$value
+###############################################
+###############################################
-Returns html for a title line and an input field for entering search terms.
-the instructions "Enter terms or phrases separated by search operators such
-as AND, OR, or NOT." are given following the title. The entry field (which
-is where the $name and $value are used) is an 80 column simpletextfield.
+sub simplecheckbox {
+ my ($name,$value)=@_;
+ my $checked='';
+ $checked="checked" if $value eq 'on';
+ return '';
+}
-=item &dateboxes()
+###############################################
+###############################################
-Returns html selection form elements for the specification of
-the day, month, and year.
+=pod
-=item &selectbox()
+=item &fieldtitle()
-Returns a scalar containing an html