version 1.21, 2001/03/15 18:52:17
|
version 1.42, 2001/03/20 11:45:21
|
Line 2
|
Line 2
|
# Search Catalog |
# Search Catalog |
# |
# |
# 03/08/2001 Scott Harrison |
# 03/08/2001 Scott Harrison |
|
# Scott Harrison: 03/12/2001, 03/13/2001, 03/14/2001, 03/15/2001, 03/19/2001 |
|
# Scott Harrison: 03/20/2001 |
# |
# |
|
# Functions |
|
# |
|
# handler(server reference) : interacts with the Apache server layer |
|
# (for /adm/searchcat URLs) |
|
# simpletextfield(name,value) : returns HTML formatted string for simple text |
|
# field |
|
# simplecheckbox(name,value) : returns HTML formatted string for simple |
|
# checkbox |
|
# searchphrasefield(title,name,value) : returns HTML formatted string for |
|
# a search expression phrase field |
|
# dateboxes(name, defaultmonth, defaultday, defaultyear) : returns HTML |
|
# formatted string |
|
# for a calendar date |
|
# selectbox(title,name,value,%HASH=options) : returns HTML formatted string for |
|
# a selection box field |
|
# advancedsearch(server reference, environment reference) : perform a complex |
|
# multi-field logical query |
|
# filled(field) : determines whether a given field has been filled |
|
# basicsearch(server reference, environment reference) : perform a simple |
|
# single-field logical query |
|
# output_blank_field_error(server reference) : outputs a message saying that |
|
# more fields need to be filled in |
|
# output_results(output mode, |
|
# server reference, |
|
# environment reference, |
|
# reply list reference) : outputs results from search |
|
# build_SQL_query() : builds a SQL query string from a logical expression |
|
# with AND/OR keywords |
|
|
package Apache::lonsearchcat; |
package Apache::lonsearchcat; |
|
|
use strict; |
use strict; |
Line 10 use Apache::Constants qw(:common);
|
Line 41 use Apache::Constants qw(:common);
|
use Apache::lonnet(); |
use Apache::lonnet(); |
use Apache::File(); |
use Apache::File(); |
use CGI qw(:standard); |
use CGI qw(:standard); |
|
use Text::Query; |
|
|
my %language; |
my %language; |
my $scrout; |
my $scrout; |
Line 232 ENDDOCUMENT
|
Line 264 ENDDOCUMENT
|
|
|
# --------------------------------------------------------- Various form fields |
# --------------------------------------------------------- Various form fields |
|
|
sub textfield { |
|
my ($title,$name,$value)=@_; |
|
return "\n<p><b>$title:</b><br>". |
|
'<input type=text name="'.$name.'" size=80 value="'.$value.'">'; |
|
} |
|
|
|
sub simpletextfield { |
sub simpletextfield { |
my ($name,$value)=@_; |
my ($name,$value)=@_; |
return '<input type=text name="'.$name.'" size=20 value="'.$value.'">'; |
return '<input type=text name="'.$name.'" size=20 value="'.$value.'">'; |
Line 424 sub advancedsearch {
|
Line 450 sub advancedsearch {
|
my ($r,$envhash)=@_; |
my ($r,$envhash)=@_; |
my %ENV=%{$envhash}; |
my %ENV=%{$envhash}; |
|
|
|
my $fillflag=0; |
|
for my $field ('title','author','subject','keywords','url','version', |
|
'notes','abstract','mime','language','owner', |
|
'custommetadata') { |
|
if (&filled($ENV{"form.$field"})) { |
|
$fillflag++; |
|
} |
|
} |
|
|
|
unless ($fillflag) { |
|
&output_blank_field_error($r); |
|
return OK; |
|
} |
|
|
|
my $query=''; |
|
# my $concatarg=join('," ",', |
|
# ('title', 'author', 'subject', 'notes', 'abstract')); |
|
|
|
$query="select * from metadata where concat(title) like '\%$ENV{'form.title'}\%'"; |
|
my $reply=&Apache::lonnet::metadata_query($query); |
|
|
|
&output_results($r,$envhash,$reply); |
|
return OK; |
|
} |
|
|
|
# ---------------------------------------------------- see if a field is filled |
|
sub filled { |
|
my ($field)=@_; |
|
if ($field=~/\S/) { |
|
return 1; |
|
} |
|
else { |
|
return 0; |
|
} |
} |
} |
|
|
# --------------------------------------------------- Performing a basic search |
# --------------------------------------------------- Performing a basic search |
Line 431 sub basicsearch {
|
Line 491 sub basicsearch {
|
my ($r,$envhash)=@_; |
my ($r,$envhash)=@_; |
my %ENV=%{$envhash}; |
my %ENV=%{$envhash}; |
|
|
my $query=$ENV{'form.basicexp'}; |
unless (&filled($ENV{'form.basicexp'})) { |
$query="select * from metadata where concat(title,\" \",author) like '\%$ENV{'form.basicexp'}\%'"; |
&output_blank_field_error($r); |
|
return OK; |
|
} |
|
|
|
my $query=''; |
|
my $concatarg=join('," ",', |
|
('title', 'author', 'subject', 'notes', 'abstract')); |
|
|
|
$query="select * from metadata where concat($concatarg) like '\%$ENV{'form.basicexp'}\%'"; |
my $reply=&Apache::lonnet::metadata_query($query); |
my $reply=&Apache::lonnet::metadata_query($query); |
&output_results($r,$envhash,$reply); |
&output_results($r,$envhash,$reply); |
return OK; |
return OK; |
} |
} |
|
|
|
sub output_blank_field_error { |
|
my ($r)=@_; |
|
# make query information persistent to allow for subsequent revision |
|
my $persistent=''; |
|
map { |
|
if (/^form\./ && !/submit/) { |
|
my $name=$_; |
|
my $key=$name; |
|
$name=~s/^form\.//; |
|
$persistent.=<<END; |
|
<INPUT TYPE='hidden' NAME='$name' VALUE='$ENV{$key}'> |
|
END |
|
} |
|
} (keys %ENV); |
|
|
|
$r->print(<<BEGINNING); |
|
<html> |
|
<head> |
|
<title>The LearningOnline Network with CAPA</title> |
|
BEGINNING |
|
$r->print(<<RESULTS); |
|
</head> |
|
<body bgcolor="#ffffff"> |
|
<img align=right src=/adm/lonIcons/lonlogos.gif> |
|
<h1>Search Catalog</h1> |
|
<form method="post" action="/adm/searchcat"> |
|
$persistent |
|
<input type='button' value='Revise search request' |
|
onClick='this.form.submit();'> |
|
<input type='button' value='CLOSE' |
|
onClick='self.close();'> |
|
<hr> |
|
<h3>Helpful Message</h3> |
|
<p> |
|
Incorrect search query due to blank entry fields. |
|
You need to fill in the relevant |
|
fields on the search page in order for a query to be |
|
processed. |
|
</p> |
|
</body> |
|
</html> |
|
RESULTS |
|
} |
|
|
# ----------------------------- format and output results based on a reply list |
# ----------------------------- format and output results based on a reply list |
sub output_results { |
sub output_results { |
my ($r,$envhash,@replylist)=@_; |
my ($r,$envhash,@replylist)=@_; |
Line 566 RESULTS
|
Line 678 RESULTS
|
} |
} |
} |
} |
|
|
|
# ------------------------------------------------------------- build_SQL_query |
|
sub build_SQL_query { |
|
|
|
} |
|
|
1; |
1; |
__END__ |
__END__ |