version 1.120, 2002/06/10 23:55:47
|
version 1.121, 2002/06/18 21:36:38
|
Line 31
|
Line 31
|
# 10/12,10/14,10/15,10/16,11/28,11/29,12/10,12/12,12/16 Scott Harrison |
# 10/12,10/14,10/15,10/16,11/28,11/29,12/10,12/12,12/16 Scott Harrison |
# YEAR=2002 |
# YEAR=2002 |
# 1/17 Scott Harrison |
# 1/17 Scott Harrison |
|
# 6/17 Matthew Hall |
# |
# |
### |
############################################################################### |
|
############################################################################### |
|
|
|
=pod |
|
|
|
=head1 NAME |
|
|
|
lonsearchcat |
|
|
|
=head1 SYNOPSIS |
|
|
|
Search interface to LON-CAPAs digital library |
|
|
|
=head1 DESCRIPTION |
|
|
|
This module enables searching for a distributed browseable catalog. |
|
|
|
This is part of the LearningOnline Network with CAPA project |
|
described at http://www.lon-capa.org. |
|
|
|
lonsearchcat presents the user with an interface to search the LON-CAPA |
|
digital library. lonsearchcat also initiates the execution of a search |
|
by sending the search parameters to LON-CAPA servers. The progress of |
|
search (on a server basis) is displayed to the user in a seperate window. |
|
|
|
=head1 Internals |
|
|
|
=over 4 |
|
|
|
=cut |
|
|
|
############################################################################### |
############################################################################### |
############################################################################### |
|
|
## ## |
## ## |
## ORGANIZATION OF THIS PERL MODULE ## |
## ORGANIZATION OF THIS PERL MODULE ## |
## ## |
## ## |
Line 60 use Apache::loncommon();
|
Line 92 use Apache::loncommon();
|
|
|
# ---------------------------------------- variables used throughout the module |
# ---------------------------------------- variables used throughout the module |
|
|
|
###################################################################### |
|
###################################################################### |
|
|
|
=pod |
|
|
|
=item Global variables |
|
|
|
=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 |
|
|
|
holds 'hidden' html forms |
|
|
|
=item $scrout |
|
|
|
string that holds portions of the screen output |
|
|
|
=item $yourself |
|
|
|
allows for quickly limiting to oneself |
|
|
|
=item %hash |
|
|
|
The ubiquitous database hash |
|
|
|
=item $basicviewselect and $advancedviewselect |
|
|
|
View selection forms. These are not actually global and will be |
|
moved soon. |
|
|
|
=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(). |
|
|
|
=back |
|
|
|
=cut |
|
|
|
###################################################################### |
|
###################################################################### |
|
|
# -- information holders |
# -- information holders |
my %hostdomains; # matches host name to host domain |
my %hostdomains; # matches host name to host domain |
my %hostips; # matches host name to host ip |
my %hostips; # matches host name to host ip |
my %hitcount; # stores number of hits per host |
my %hitcount; # stores number of hits per host |
|
|
# -- dynamically rendered interface components |
# -- dynamically rendered interface components |
my $closebutton; # button that closes the search window |
my $closebutton; # button that closes the search window |
my $importbutton; # button to take the selected results and go to group sorting |
my $importbutton; # button to take the selected results and go to group sorting |
my $hidden; |
my $hidden; # Holds 'hidden' html forms |
|
|
# -- miscellaneous variables |
# -- miscellaneous variables |
my $scrout; # string that holds portions of the screen output |
my $scrout; # string that holds portions of the screen output |
my $yourself; # allows for quickly limiting to oneself |
my $yourself; # allows for quickly limiting to oneself |
my %hash; |
my %hash; # database hash |
|
|
# ------------------------------------------ choices for different output views |
# ------------------------------------------ choices for different output views |
# Detailed Citation View ---> sub detailed_citation_view |
# Detailed Citation View ---> sub detailed_citation_view |
Line 99 Detailed Citation View</option>
|
Line 193 Detailed Citation View</option>
|
</select> |
</select> |
END |
END |
|
|
|
#------------------------------------------------------------- global variables |
|
my $diropendb = ""; |
|
my $domain = ""; |
|
|
# ----------------------------------------------------------------------- BEGIN |
# ----------------------------------------------------------------------- BEGIN |
|
|
|
=pod |
|
|
|
=item BEGIN block |
|
|
|
Load %hostdomains and %hostips with data from lonnet.pm. Only library |
|
servers are considered. |
|
|
|
=cut |
|
|
BEGIN { |
BEGIN { |
{ |
foreach (keys (%Apache::lonnet::libserv)) { |
my $fh=Apache::File->new($Apache::lonnet::perlvar{'lonTabDir'}. |
$hostdomains{$_}=$Apache::lonnet::hostdom{$_}; |
'/hosts.tab'); |
$hostips{$_}=$Apache::lonnet::hostip{$_}; |
while (<$fh>) { |
|
$_=~/(\w+?)\:(\w+?)\:(\w+?)\:(.*)/; chomp; |
|
if ($3 eq 'library') { |
|
$hostdomains{$1}=$2; |
|
$hostips{$1}=$4; |
|
} |
|
} |
|
} |
} |
} |
} |
|
|
#------------------------------------------------------------- global variables |
###################################################################### |
my $diropendb = ""; |
###################################################################### |
my $domain = ""; |
|
|
=pod |
|
|
|
=item &handler() - main handler invoked by httpd child |
|
|
|
=cut |
|
|
|
###################################################################### |
|
###################################################################### |
# ----------------------------- Handling routine called via Apache and mod_perl |
# ----------------------------- Handling routine called via Apache and mod_perl |
sub handler { |
sub handler { |
my $r = shift; |
my $r = shift; |
Line 127 sub handler {
|
Line 235 sub handler {
|
$r->send_http_header; |
$r->send_http_header; |
return OK if $r->header_only; |
return OK if $r->header_only; |
|
|
$domain = $r->dir_config('lonDefDomain'); |
my $domain = $r->dir_config('lonDefDomain'); |
$diropendb= "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_searchcat.db"; |
$diropendb= "/home/httpd/perl/tmp/".&Apache::lonnet::unescape($domain). |
|
"\_".&Apache::lonnet::unescape($ENV{'user.name'})."_searchcat.db"; |
|
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
['catalogmode','launch','acts','mode','form','element']); |
['catalogmode','launch','acts','mode','form','element']); |
Line 370 ENDDOCUMENT
|
Line 479 ENDDOCUMENT
|
return OK; |
return OK; |
} |
} |
|
|
|
###################################################################### |
|
###################################################################### |
|
|
|
=pod |
|
|
|
=item &make_persistent() |
|
|
|
Returns a scalar which holds the current ENV{'form.*'} values in |
|
a 'hidden' html input tag. |
|
=cut |
|
|
|
###################################################################### |
|
###################################################################### |
|
|
# ------------------------------------------------------------- make persistent |
# ------------------------------------------------------------- make persistent |
|
|
sub make_persistent { |
sub make_persistent { |
my $persistent=''; |
my $persistent=''; |
|
|
Line 661 sub build_custommetadata_query {
|
Line 785 sub build_custommetadata_query {
|
# quick fix to change literal into xml tag-matching |
# quick fix to change literal into xml tag-matching |
# will eventually have to write a separate builder module |
# will eventually have to write a separate builder module |
my $oldmatchexp=$matchexp; |
my $oldmatchexp=$matchexp; |
$matchexp=~s/(\w+)\\\=([\w\\\+]+)/\\\<$1\\\>\[\^\\\<\]\*$2\[\^\\\<\]\*\\\<\\\/$1\\\>/g; |
$matchexp=~s/(\w+)\\=([\w\\\+]+)/\\<$1\\>\[\^\\<\]\*$2\[\^\\<\]\*\\<\\\/$1\\>/g; |
return $matchexp; |
return $matchexp; |
} |
} |
|
|
Line 1456 sub popwin_imgupdate {
|
Line 1580 sub popwin_imgupdate {
|
|
|
__END__ |
__END__ |
|
|
=head1 NAME |
=pod |
|
|
Apache::lonsearchcat - mod_perl module for handling a searchable catalog |
|
|
|
=head1 SYNOPSIS |
|
|
|
Invoked by /etc/httpd/conf/srm.conf: |
|
|
|
<Location /adm/searchcat> |
=back |
PerlAccessHandler Apache::lonacc |
|
SetHandler perl-script |
|
PerlHandler Apache::lonsearchcat |
|
ErrorDocument 403 /adm/login |
|
ErrorDocument 500 /adm/errorhandler |
|
</Location> |
|
|
|
=head1 INTRODUCTION |
|
|
|
This module enables searching for a distributed browseable catalog. |
|
|
|
This is part of the LearningOnline Network with CAPA project |
|
described at http://www.lon-capa.org. |
|
|
|
=head1 BEGIN SUBROUTINE |
|
|
|
This routine is only run once after compilation. |
|
|
|
=over 4 |
=over 4 |
|
|
=item * |
|
|
|
Initializes %hostdomains and hostips hash table (for hosts.tab). |
|
|
|
=back |
|
|
|
=head1 HANDLER SUBROUTINE |
=head1 HANDLER SUBROUTINE |
|
|
This routine is called by Apache and mod_perl. |
This routine is called by Apache and mod_perl. |