--- loncom/interface/lonsearchcat.pm 2002/07/12 14:36:16 1.141
+++ loncom/interface/lonsearchcat.pm 2002/07/16 15:02:06 1.143
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Search Catalog
#
-# $Id: lonsearchcat.pm,v 1.141 2002/07/12 14:36:16 matthew Exp $
+# $Id: lonsearchcat.pm,v 1.143 2002/07/16 15:02:06 matthew Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -109,9 +109,9 @@ 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
@@ -125,6 +125,10 @@ that produces it. Adding a new view typ
adding a line to the definition of this hash and making sure the function
takes the proper parameters.
+=item $results_db
+
+The name of the database results from searches are put in.
+
=back
=cut
@@ -137,9 +141,10 @@ 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
+my $results_db = "";
# View Description Function Pointer
my %Views = ("Detailed Citation View" => \&detailed_citation_view,
"Summary View" => \&summary_view,
@@ -173,26 +178,29 @@ 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;
return OK if $r->header_only;
-
+ ##
+ ## Initialize global variables
+ ##
my $domain = $r->dir_config('lonDefDomain');
$diropendb= "/home/httpd/perl/tmp/".&Apache::lonnet::escape($domain).
"\_".&Apache::lonnet::escape($ENV{'user.name'})."_searchcat.db";
-
+ $results_db = "/home/httpd/perl/tmp/".&Apache::lonnet::escape($domain).
+ '_'.&Apache::lonnet::escape($ENV{'user.name'})."_searchresults.db";
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
['catalogmode','launch','acts','mode','form','element',
'reqinterface']);
##
- ## Clear out old values from database
+ ## Clear out old values from groupsearch 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');
@@ -239,19 +247,24 @@ END
# We are running a search
my ($query,$customquery,$customshow,$libraries) =
(undef,undef,undef,undef);
+ my $pretty_string;
if ($searchtype eq 'Basic') {
- $query = &parse_basic_search($r);
+ ($query,$pretty_string) = &parse_basic_search($r);
} elsif ($ENV{'form.advancedsubmit'} eq 'SEARCH') {
- ($query,$customquery,$customshow,$libraries)
+ ($query,$customquery,$customshow,$libraries,$pretty_string)
= &parse_advanced_search($r);
return OK if (! defined($query));
}
+ # Output some information to the user.
+ $r->print(&search_results_header($searchtype,$pretty_string));
+ $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);
} else {
#
@@ -397,19 +410,24 @@ ENDHEADER
$ENV{'form.viewselect'},
undef,undef,undef,
sort(keys(%Views)));
- $scrout.="\n";
- $scrout.=&searchphrasefield('title', 'title' ,$ENV{'form.title'});
+ $scrout.="
\n";
$scrout.=&searchphrasefield('publisher owner','owner',
$ENV{'form.owner'});
$scrout.="\n";
@@ -552,13 +570,13 @@ to be somewhat persistent.
sub make_persistent {
my %save = %{shift()};
my $persistent='';
- foreach (keys %save) {
- if (/^form\./ && !/submit/) {
- my $name=$_;
+ foreach my $name (keys %save) {
+ if ($name =~ /^form\./ && $name !~ /submit/) {
my @values = (ref($save{$name}) ? @{$save{$name}} : ($save{$name}));
$name=~s/^form\.//;
foreach (@values) {
s/\"/\'/g; # do not mess with html field syntax
+ next if (! $_ );
$persistent.=<
END
@@ -568,8 +586,8 @@ END
return $persistent;
}
-
######################################################################
+# HTML form building functions #
######################################################################
=pod
@@ -578,6 +596,13 @@ END
=over 4
+=cut
+
+###############################################
+###############################################
+
+=pod
+
=item &simpletextfield()
Inputs: $name,$value,$size
@@ -585,6 +610,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
@@ -592,92 +634,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