--- loncom/interface/lonsearchcat.pm 2002/06/19 20:39:11 1.123 +++ 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.123 2002/06/19 20:39:11 matthew Exp $ +# $Id: lonsearchcat.pm,v 1.143 2002/07/16 15:02:06 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -40,7 +40,7 @@ =head1 NAME -lonsearchcat +lonsearchcat - LONCAPA Search Interface =head1 SYNOPSIS @@ -67,14 +67,14 @@ search (on a server basis) is displayed ############################################################################### ############################################################################### +############################################################################### ## ## ## ORGANIZATION OF THIS PERL MODULE ## ## ## ## 1. Modules used by this module ## -## 2. Choices for different output views (detailed, summary, xml, etc) ## -## 3. BEGIN block (to be run once after compilation) ## -## 4. Handling routine called via Apache and mod_perl ## -## 5. Other subroutines ## +## 2. Variables used throughout the module ## +## 3. handler subroutine called via Apache and mod_perl ## +## 4. Other subroutines ## ## ## ############################################################################### @@ -101,46 +101,33 @@ use Apache::loncommon(); =over 4 -=item %hostdomains - -matches host name to host domain - -=item %hostips - -matches host name to host ip - -=item %hitcount - -stores number of hits per host - =item $closebutton button that closes the search window =item $importbutton -button to take the selecte results and go to group sorting - -=item $hidden +button to take the select results and go to group sorting -holds 'hidden' html forms +=item %groupsearch_db -=item $scrout +Database hash used to save values for the groupsearch RAT interface. -string that holds portions of the screen output +=item $diropendb -=item $yourself +The full path to the (temporary) search database file. This is set and +used in &handler() and is also used in &output_results(). -allows for quickly limiting to oneself +=item %Views -=item %hash +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. -The ubiquitous database hash +=item $results_db -=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(). +The name of the database results from searches are put in. =back @@ -149,101 +136,92 @@ used in &handler() and is also used in & ###################################################################### ###################################################################### -# -- information holders -my %hostdomains; # matches host name to host domain -my %hostips; # matches host name to host ip -my %hitcount; # stores number of hits per host - # -- dynamically rendered interface components my $closebutton; # button that closes the search window my $importbutton; # button to take the selected results and go to group sorting -my $hidden; # Holds 'hidden' html forms # -- miscellaneous variables -my $scrout; # string that holds portions of the screen output -my $yourself; # allows for quickly limiting to oneself -my %hash; # database hash - -# ------------------------------------------ choices for different output views -# Detailed Citation View ---> sub detailed_citation_view -# Summary View ---> sub summary_view -# Fielded Format ---> sub fielded_format_view -# XML/SGML ---> sub xml_sgml_view - -#------------------------------------------------------------- global variables -my $diropendb = ""; -my $domain = ""; +my %groupsearch_db; # database hash +my $diropendb = ""; # db file -# ----------------------------------------------------------------------- BEGIN +my $results_db = ""; +# 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 ); -=pod +###################################################################### +###################################################################### -=item BEGIN block +=pod -Load %hostdomains and %hostips with data from lonnet.pm. Only library -servers are considered. +=item &handler() - main handler invoked by httpd child -=cut +=item Variables -BEGIN { - foreach (keys (%Apache::lonnet::libserv)) { - $hostdomains{$_}=$Apache::lonnet::hostdom{$_}; - $hostips{$_}=$Apache::lonnet::hostip{$_}; - } -} +=over 4 -###################################################################### -###################################################################### +=item $hidden -=pod +holds 'hidden' html forms -=item &handler() - main handler invoked by httpd child +=item $scrout + +string that holds portions of the screen output + +=back =cut ###################################################################### ###################################################################### -# ----------------------------- Handling routine called via Apache and mod_perl 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']); - + ['catalogmode','launch','acts','mode','form','element', + 'reqinterface']); + ## + ## 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'); return OK; } } - -# --------------------------- Produce some output, so people know it is working - + ## + ## Produce some output, so people know it is working + ## $r->print("\n"); $r->rflush; - -# ----------------------------------- configure dynamic components of interface - + ## + ## Configure dynamic components of interface + ## + my $hidden; # Holds 'hidden' html forms if ($ENV{'form.catalogmode'} eq 'interactive') { $hidden="". "\n"; $closebutton=""."\n"; - } - elsif ($ENV{'form.catalogmode'} eq 'groupsearch') { + } elsif ($ENV{'form.catalogmode'} eq 'groupsearch') { $hidden=<+ + +$closebutton + +
+END + if (!defined($ENV{'form.viewselect'})) { + $ENV{'form.viewselect'} ="Detailed Citation View"; + } + my $scrout=<<"ENDHEADER"; + + +