--- loncom/interface/lonsearchcat.pm 2001/12/11 03:18:39 1.110 +++ loncom/interface/lonsearchcat.pm 2002/03/07 20:12:36 1.116 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Search Catalog # -# $Id: lonsearchcat.pm,v 1.110 2001/12/11 03:18:39 harris41 Exp $ +# $Id: lonsearchcat.pm,v 1.116 2002/03/07 20:12:36 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -28,7 +28,9 @@ # YEAR=2001 # 3/8, 3/12, 3/13, 3/14, 3/15, 3/19 Scott Harrison # 3/20, 3/21, 3/22, 3/26, 3/27, 4/2, 8/15, 8/24, 8/25 Scott Harrison -# 10/12,10/14,10/15,10/16,11/28,11/29,12/10 Scott Harrison +# 10/12,10/14,10/15,10/16,11/28,11/29,12/10,12/12,12/16 Scott Harrison +# YEAR=2002 +# 1/17 Scott Harrison # ### @@ -54,13 +56,11 @@ use Apache::File(); use CGI qw(:standard); use Text::Query; use GDBM_File; +use Apache::loncommon(); # ---------------------------------------- variables used throughout the module # -- information holders -my %language; # holds contents of language.tab -my %cprtag; # holds contents of copyright.tab -my %mimetag; # holds contents of filetypes.tab my %hostdomains; # matches host name to host domain my %hostips; # matches host name to host ip my %hitcount; # stores number of hits per host @@ -97,37 +97,7 @@ my $advancedviewselect=<new($Apache::lonnet::perlvar{'lonTabDir'}. - '/language.tab'); - while (<$fh>) { - $_=~/(\w+)\s+([\w\s\-]+)/; chomp; - $language{$1}=$2; - } - } - $cprtag{'any'}='Any copyright/distribution'; - { - my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonIncludes'}. - '/copyright.tab'); - while (<$fh>) { - $_=~/(\w+)\s+([\w\s\-]+)/; chomp; - $cprtag{$1}=$2; - } - } - $mimetag{'any'}='Any type'; - { - my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonTabDir'}. - '/filetypes.tab'); - while (<$fh>) { - if (/^\S/ and !/^\#/) { - $_=~/(\S+)\s+(\S+)\s+([\S\s\-]+)/; chomp; - $mimetag{$1}=".$1 $3"; - } - } - } +BEGIN { { my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonTabDir'}. '/hosts.tab'); @@ -148,16 +118,17 @@ my $domain = ""; sub handler { my $r = shift; untie %hash; - &get_unprocessed_cgi(); $r->content_type('text/html'); $r->send_http_header; return OK if $r->header_only; $domain = $r->dir_config('lonDefDomain'); - $diropendb= "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_searchcat.db"; + &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, + ['catalogmode','launch','acts']); + if ($ENV{'form.launch'} eq '1') { if (tie(%hash,'GDBM_File',$diropendb,&GDBM_WRCREAT,0640)) { &start_fresh_session(); @@ -235,13 +206,18 @@ END $ENV{'form.mime'}='any' unless length($ENV{'form.mime'}); $scrout.=&selectbox('Limit by MIME type','mime', - $ENV{'form.mime'},%mimetag); + $ENV{'form.mime'}, + 'any','Any type', + \&{Apache::loncommon::filedescriptionex}, + (&Apache::loncommon::fileextensions)); $ENV{'form.language'}='any' unless length($ENV{'form.language'}); $scrout.=&selectbox('Limit by language','language', - $ENV{'form.language'},%language); - + $ENV{'form.language'},'any','Any Language', + \&{Apache::loncommon::languagedescription}, + (&Apache::loncommon::languageids), + ); # ------------------------------------------------ Compute date selection boxes $scrout.=< @@ -376,18 +356,6 @@ ENDDOCUMENT return OK; } -# ----------- grab unprocessed CGI variables that may have been appended to URL -sub get_unprocessed_cgi { - foreach (split(/&/,$ENV{'QUERY_STRING'})) { - my ($name, $value) = split(/=/,$_); - $value =~ tr/+/ /; - $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; - if ($name eq 'catalogmode' or $name eq 'launch' or $name eq 'acts') { - $ENV{'form.'.$name}=$value; - } - } -} - # ------------------------------------------------------------- make persistent sub make_persistent { my $persistent=''; @@ -578,18 +546,27 @@ END } sub selectbox { - my ($title,$name,$value,%options)=@_; + my ($title,$name,$value,$anyvalue,$anytag,$functionref,@idlist)=@_; my $uctitle=uc($title); my $selout="\n

$uctitle:". "
".''; } +sub testf { + return @_[0]; +} + # ----------------------------------------------- Performing an advanced search sub advancedsearch { my ($r,$envhash)=@_; @@ -987,7 +964,7 @@ RESULTS $grid.=$sk; my $hc; if ($rhash{$sk} eq 'con_lost') { - $hc="!!!BAD CONNECTION, CONTACT SYSTEM ADMINISTRATOR!!!"; + $hc="BAD CONNECTION, CONTACT SYSTEM ADMINISTRATOR "; } else { $hc="'+\"'\"+\"+hc['$sk']+\"+\"'\"+'"; @@ -1006,7 +983,7 @@ RESULTS } $r->print(< - popwin=open('','popwin','scrollbars=1,width=400,height=200'); + popwin=open('','popwin','scrollbars=1,width=400,height=220'); popwin.focus(); popwin.document.writeln('<'+'html>'); popwin.document.writeln('<'+'head>'); @@ -1034,7 +1011,7 @@ RESULTS $grid '<'+'br />'+ 'Server details '+ - '<'+'input type="text" size="25" name="sdetails"'+ + '<'+'input type="text" size="35" name="sdetails"'+ ' value="" />'+ '<'+'br />'+ ' <'+'input type="button" name="button"'+ @@ -1242,12 +1219,17 @@ END $compiledresult.=< END - $compiledresult.=< +onClick="javascript:select_data('$titleesc','$url')">
END + } if ($ENV{'form.catalogmode'} eq 'groupsearch') { $fnum+=0; $hash{"pre_${fnum}_link"}=$url; @@ -1333,9 +1315,21 @@ sub detailed_citation_view { Subject: $subject
Keyword(s): $keywords
Notes: $notes
-MIME Type: $mimetag{$mime}
-Language: $language{$lang}
-Copyright/Distribution: $cprtag{$copyright}
+MIME Type: +END + $result.=&Apache::loncommon::filedescription($mime); + $result.=< +Language: +END + $result.=&Apache::loncommon::languagedescription($lang); + $result.=< +Copyright/Distribution: +END + $result.=&Apache::loncommon::copyrightdescription($copyright); + $result.=<

$extrashow

@@ -1351,11 +1345,12 @@ sub summary_view { $notes,$shortabstract,$mime,$lang, $creationdate,$lastrevisiondate,$owner,$copyright, $hostname,$httphost,$extrashow)=@_; + my $cprtag=&Apache::loncommon::copyrightdescription($copyright); my $result=<$author
$title
$owner -- $lastrevisiondate
-$cprtag{$copyright}
+$cprtag
$extrashow

END @@ -1368,6 +1363,9 @@ sub fielded_format_view { $notes,$shortabstract,$mime,$lang, $creationdate,$lastrevisiondate,$owner,$copyright, $hostname,$httphost,$extrashow)=@_; + my $mimetag=&Apache::loncommon::filedescription($mime); + my $language=&Apache::loncommon::languagedescription($lang); + my $cprtag=&Apache::loncommon::copyrightdescription($copyright); my $result=<URL: $url
@@ -1376,12 +1374,12 @@ sub fielded_format_view { Subject: $subject
Keyword(s): $keywords
Notes: $notes
-MIME Type: $mimetag{$mime}
-Language: $language{$lang}
+MIME Type: $mimetag
+Language: $language
Creation Date: $creationdate
Last Revision Date: $lastrevisiondate
Publisher/Owner: $owner
-Copyright/Distribution: $cprtag{$copyright}
+Copyright/Distribution: $cprtag
Repository Location: $hostname
Abstract: $shortabstract
$extrashow @@ -1396,6 +1394,9 @@ sub xml_sgml_view { $notes,$shortabstract,$mime,$lang, $creationdate,$lastrevisiondate,$owner,$copyright, $hostname,$httphost,$extrashow)=@_; + my $cprtag=&Apache::loncommon::copyrightdescription($copyright); + my $mimetag=&Apache::loncommon::filedescription($mime); + my $language=&Apache::loncommon::languagedescription($lang); my $result=< <LonCapaResource> @@ -1407,18 +1408,18 @@ sub xml_sgml_view { <notes>$notes</notes> <mimeInfo> <mime>$mime</mime> -<mimetag>$mimetag{$mime}</mimetag> +<mimetag>$mimetag</mimetag> </mimeInfo> <languageInfo> <language>$lang</language> -<languagetag>$language{$lang}</languagetag> +<languagetag>$language</languagetag> </languageInfo> <creationdate>$creationdate</creationdate> <lastrevisiondate>$lastrevisiondate</lastrevisiondate> <owner>$owner</owner> <copyrightInfo> <copyright>$copyright</copyright> -<copyrighttag>$cprtag{$copyright}</copyrighttag> +<copyrighttag>$cprtag</copyrighttag> </copyrightInfo> <repositoryLocation>$hostname</repositoryLocation> <shortabstract>$shortabstract</shortabstract> @@ -1553,18 +1554,6 @@ This routine is only run once after comp =item * -Initializes %language hash table. - -=item * - -Initializes %cprtag hash table (for copyright.tab). - -=item * - -Initializes %mimetag hash table (for filetypes.tab). - -=item * - Initializes %hostdomains and hostips hash table (for hosts.tab). =back