--- loncom/interface/lonsearchcat.pm 2002/07/12 14:36:16 1.141 +++ 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.141 2002/07/12 14:36:16 matthew Exp $ +# $Id: lonsearchcat.pm,v 1.142 2002/07/12 21:02:27 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 @@ -137,7 +137,7 @@ 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 @@ -173,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; @@ -190,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'); @@ -246,12 +246,16 @@ 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); } else { # @@ -397,19 +401,24 @@ ENDHEADER $ENV{'form.viewselect'}, undef,undef,undef, sort(keys(%Views))); - $scrout.="\n"; - $scrout.=&searchphrasefield('title', 'title' ,$ENV{'form.title'}); + $scrout.="Related
Words\n"; + $scrout.=&searchphrasefield_with_related('title', 'title' , + $ENV{'form.title'}); $scrout.=&searchphrasefield('author', 'author' ,$ENV{'form.author'}); - $scrout.=&searchphrasefield('subject', 'subject' ,$ENV{'form.subject'}); - $scrout.=&searchphrasefield('keywords','keywords',$ENV{'form.keywords'}); + $scrout.=&searchphrasefield_with_related('subject', 'subject' , + $ENV{'form.subject'}); + $scrout.=&searchphrasefield_with_related('keywords','keywords', + $ENV{'form.keywords'}); $scrout.=&searchphrasefield('URL', 'url' ,$ENV{'form.url'}); - $scrout.=&searchphrasefield('notes', 'notes' ,$ENV{'form.notes'}); - $scrout.=&searchphrasefield('abstract','abstract',$ENV{'form.abstract'}); + $scrout.=&searchphrasefield_with_related('notes', 'notes' , + $ENV{'form.notes'}); + $scrout.=&searchphrasefield_with_related('abstract','abstract', + $ENV{'form.abstract'}); # Hack - an empty table row. - $scrout.="  \n"; + $scrout.="   \n"; $scrout.=&searchphrasefield('file
extension','mime', $ENV{'form.mime'}); - $scrout.="  \n"; + $scrout.="   \n"; $scrout.=&searchphrasefield('publisher
owner','owner', $ENV{'form.owner'}); $scrout.="\n"; @@ -568,8 +577,8 @@ END return $persistent; } - ###################################################################### +# HTML form building functions # ###################################################################### =pod @@ -578,6 +587,13 @@ END =over 4 +=cut + +############################################### +############################################### + +=pod + =item &simpletextfield() Inputs: $name,$value,$size @@ -585,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 @@ -592,92 +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 tag. +=pod -=item $default +=item &searchphrasefield() -The default value of the form. Can be $anyvalue, or in @idlist. +Inputs: $title,$name,$value -=item $anyvalue +Returns html for a title line and an input field for entering search terms. +The entry field (which is where the $name and $value are used) is a 50 column +simpletextfield. The html returned is for a row in a three column table. -The