version 1.133, 2002/06/27 19:28:50
|
version 1.141, 2002/07/12 14:36:16
|
Line 40
|
Line 40
|
|
|
=head1 NAME |
=head1 NAME |
|
|
lonsearchcat |
lonsearchcat - LONCAPA Search Interface |
|
|
=head1 SYNOPSIS |
=head1 SYNOPSIS |
|
|
Line 107 button that closes the search window
|
Line 107 button that closes the search window
|
|
|
=item $importbutton |
=item $importbutton |
|
|
button to take the selecte results and go to group sorting |
button to take the select results and go to group sorting |
|
|
=item %hash |
=item %hash |
|
|
Line 118 The ubiquitous database hash
|
Line 118 The ubiquitous database hash
|
The full path to the (temporary) search database file. This is set and |
The full path to the (temporary) search database file. This is set and |
used in &handler() and is also used in &output_results(). |
used in &handler() and is also used in &output_results(). |
|
|
|
=item %Views |
|
|
|
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. |
|
|
=back |
=back |
|
|
=cut |
=cut |
Line 133 my $importbutton; # button to take the s
|
Line 140 my $importbutton; # button to take the s
|
my %hash; # database hash |
my %hash; # database hash |
my $diropendb = ""; # db file |
my $diropendb = ""; # db file |
|
|
|
# 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 ); |
|
|
###################################################################### |
###################################################################### |
###################################################################### |
###################################################################### |
|
|
Line 219 END
|
Line 232 END
|
## |
## |
## What are we doing? |
## What are we doing? |
## |
## |
if ($ENV{'form.basicsubmit'} eq 'SEARCH') { |
my $searchtype; |
# Perform basic search and give results |
$searchtype = 'Basic' if ($ENV{'form.basicsubmit'} eq 'SEARCH'); |
return &basicsearch($r,$hidden); |
$searchtype = 'Advanced' if ($ENV{'form.advancedsubmit'} eq 'SEARCH'); |
} elsif ($ENV{'form.advancedsubmit'} eq 'SEARCH') { |
if ($searchtype) { |
# Perform advanced search and give results |
# We are running a search |
return &advancedsearch($r,$hidden); |
my ($query,$customquery,$customshow,$libraries) = |
} elsif ($ENV{'form.reqinterface'} eq 'advanced') { |
(undef,undef,undef,undef); |
|
if ($searchtype eq 'Basic') { |
|
$query = &parse_basic_search($r); |
|
} elsif ($ENV{'form.advancedsubmit'} eq 'SEARCH') { |
|
($query,$customquery,$customshow,$libraries) |
|
= &parse_advanced_search($r); |
|
return OK if (! defined($query)); |
|
} |
|
# 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); |
|
&output_results($searchtype,$r,$reply,$hidden); |
|
} else { |
|
# |
|
# We need to get information to search on |
|
# |
|
# Set the default view if it is not already set. |
|
if (!defined($ENV{'form.viewselect'})) { |
|
$ENV{'form.viewselect'} ="Detailed Citation View"; |
|
} |
# Output the advanced interface |
# Output the advanced interface |
$r->print(&advanced_search_form($closebutton,$hidden)); |
if ($ENV{'form.reqinterface'} eq 'advanced') { |
return OK; |
$r->print(&advanced_search_form($closebutton,$hidden)); |
} else { |
} else { |
# Output normal search interface |
# Output normal search interface |
$r->print(&basic_search_form($closebutton,$hidden)); |
$r->print(&basic_search_form($closebutton,$hidden)); |
|
} |
} |
} |
return OK; |
return OK; |
} |
} |
Line 282 ENDDOCUMENT
|
Line 318 ENDDOCUMENT
|
' '; |
' '; |
# $scrout.=&simplecheckbox('allversions',$ENV{'form.allversions'}); |
# $scrout.=&simplecheckbox('allversions',$ENV{'form.allversions'}); |
# $scrout.='<font color="#800000">Search historic archives</font>'; |
# $scrout.='<font color="#800000">Search historic archives</font>'; |
$scrout.=<<ENDDOCUMENT; |
my $checkbox = &simplecheckbox('related',$ENV{'form.related'}); |
</td><td><a href="/adm/searchcat?reqinterface=advanced">Advanced Search</a></td></tr></table> |
$scrout.=<<END; |
|
</td><td><a href="/adm/searchcat?reqinterface=advanced">Advanced Search</a></td></tr> |
|
<tr><td>$checkbox use related words</td><td></td></tr> |
|
</table> |
</p> |
</p> |
<p> |
<p> |
<input type="submit" name="basicsubmit" value='SEARCH' /> |
<input type="submit" name="basicsubmit" value='SEARCH' /> |
$closebutton |
$closebutton |
<!-- view selection --> |
END |
<select name="viewselect"> |
$scrout.=&selectbox(undef,'viewselect', |
<option value="Detailed Citation View" selected="true" >Detailed Citation View</option> |
$ENV{'form.viewselect'}, |
<option value="Summary View" >Summary View</option> |
undef,undef,undef, |
<option value="Fielded Format">Fielded Format</option> |
sort(keys(%Views))); |
<option value="XML/SGML" >XML/SGML</option> |
$scrout.=<<ENDDOCUMENT; |
</select> |
|
<!-- end of view selection --> |
|
<input type="button" value="HELP" onClick="openhelp()" /> |
<input type="button" value="HELP" onClick="openhelp()" /> |
</p> |
</p> |
</form> |
</form> |
Line 328 $closebutton
|
Line 365 $closebutton
|
<input type="button" value="HELP" onClick="openhelp()" /> |
<input type="button" value="HELP" onClick="openhelp()" /> |
</p> |
</p> |
END |
END |
|
if (!defined($ENV{'form.viewselect'})) { |
|
$ENV{'form.viewselect'} ="Detailed Citation View"; |
|
} |
my $scrout=<<"ENDHEADER"; |
my $scrout=<<"ENDHEADER"; |
<html> |
<html> |
<head> |
<head> |
Line 352 $hidden
|
Line 392 $hidden
|
<table> |
<table> |
<tr><td><font color="#800000" face="helvetica"><b>VIEW:</b></font></td> |
<tr><td><font color="#800000" face="helvetica"><b>VIEW:</b></font></td> |
<td> |
<td> |
<!-- view selection --> |
|
<select name="viewselect" size ="1"> |
|
<option value="Detailed Citation View" selected="true">Detailed Citation View</option> |
|
<option value="Summary View">Summary View</option> |
|
<option value="Fielded Format">Fielded Format</option> |
|
<option value="XML/SGML">XML/SGML</option> |
|
</select> |
|
<!-- end of view selection --> |
|
</td></tr> |
|
ENDHEADER |
ENDHEADER |
$scrout.=&searchphrasefield('title','title', |
$scrout.=&selectbox(undef,'viewselect', |
$ENV{'form.title'}); |
$ENV{'form.viewselect'}, |
$scrout.=&searchphrasefield('author','author', |
undef,undef,undef, |
$ENV{'form.author'}); |
sort(keys(%Views))); |
$scrout.=&searchphrasefield('subject','subject', |
$scrout.="</td></tr>\n"; |
$ENV{'form.subject'}); |
$scrout.=&searchphrasefield('title', 'title' ,$ENV{'form.title'}); |
$scrout.=&searchphrasefield('keywords','keywords', |
$scrout.=&searchphrasefield('author', 'author' ,$ENV{'form.author'}); |
$ENV{'form.keywords'}); |
$scrout.=&searchphrasefield('subject', 'subject' ,$ENV{'form.subject'}); |
$scrout.=&searchphrasefield('URL','url', |
$scrout.=&searchphrasefield('keywords','keywords',$ENV{'form.keywords'}); |
$ENV{'form.url'}); |
$scrout.=&searchphrasefield('URL', 'url' ,$ENV{'form.url'}); |
# $scrout.=&searchphrasefield('Limit by version','version', |
$scrout.=&searchphrasefield('notes', 'notes' ,$ENV{'form.notes'}); |
# $ENV{'form.version'}); |
$scrout.=&searchphrasefield('abstract','abstract',$ENV{'form.abstract'}); |
$scrout.=&searchphrasefield('notes','notes', |
|
$ENV{'form.notes'}); |
|
$scrout.=&searchphrasefield('abstract','abstract', |
|
$ENV{'form.abstract'}); |
|
# Hack - an empty table row. |
# Hack - an empty table row. |
$scrout.="<tr><td> </td><td> </td></tr>\n"; |
$scrout.="<tr><td> </td><td> </td></tr>\n"; |
$scrout.=&searchphrasefield('file<br />extension','mime', |
$scrout.=&searchphrasefield('file<br />extension','mime', |
Line 425 ENDHEADER
|
Line 452 ENDHEADER
|
$scrout.="</select>\n"; |
$scrout.="</select>\n"; |
} |
} |
#---------------------------------------------------------------- |
#---------------------------------------------------------------- |
# |
|
# |
|
$scrout.=&selectbox('Limit by language','language', |
$scrout.=&selectbox('Limit by language','language', |
$ENV{'form.language'},'any','Any Language', |
$ENV{'form.language'},'any','Any Language', |
\&{Apache::loncommon::languagedescription}, |
\&{Apache::loncommon::languagedescription}, |
Line 591 Inputs:
|
Line 616 Inputs:
|
|
|
=item $title |
=item $title |
|
|
Printed above the select box, in uppercase. |
Printed above the select box, in uppercase. If undefined, only a select |
|
box will be returned, with no additional html. |
|
|
=item $name |
=item $name |
|
|
Line 599 The name element of the <select> tag.
|
Line 625 The name element of the <select> tag.
|
|
|
=item $default |
=item $default |
|
|
The default value of the form. Can be $anyvalue or in @idlist. |
The default value of the form. Can be $anyvalue, or in @idlist. |
|
|
=item $anyvalue |
=item $anyvalue |
|
|
The <option value="..."> used to indicate a default of |
The <option value="..."> used to indicate a default of |
none of the values. |
none of the values. Can be undef. |
|
|
=item $anytag |
=item $anytag |
|
|
Line 700 END
|
Line 726 END
|
sub selectbox { |
sub selectbox { |
my ($title,$name,$default,$anyvalue,$anytag,$functionref,@idlist)=@_; |
my ($title,$name,$default,$anyvalue,$anytag,$functionref,@idlist)=@_; |
if (! defined($functionref)) { $functionref = sub { $_[0]}; } |
if (! defined($functionref)) { $functionref = sub { $_[0]}; } |
my $uctitle=uc($title); |
my $selout=''; |
my $selout="\n".'<p><font color="#800000" face="helvetica">'. |
if (defined($title)) { |
'<b>'.$uctitle.': </b></font><select name="'.$name.'">'; |
my $uctitle=uc($title); |
foreach ($anyvalue,@idlist) { |
$selout="\n".'<p><font color="#800000" face="helvetica">'. |
|
'<b>'.$uctitle.': </b></font>'; |
|
} |
|
$selout .= '<select name="'.$name.'">'; |
|
unshift @idlist,$anyvalue if (defined($anyvalue)); |
|
foreach (@idlist) { |
$selout.='<option value="'.$_.'"'; |
$selout.='<option value="'.$_.'"'; |
if ($_ eq $default and !/^any$/) { |
if ($_ eq $default and !/^any$/) { |
$selout.=' selected >'.&{$functionref}($_).'</option>'; |
$selout.=' selected >'.&{$functionref}($_).'</option>'; |
Line 713 sub selectbox {
|
Line 744 sub selectbox {
|
} |
} |
else {$selout.='>'.&{$functionref}($_).'</option>';} |
else {$selout.='>'.&{$functionref}($_).'</option>';} |
} |
} |
return $selout.'</select></p>'; |
return $selout.'</select>'.(defined($title)?'</p>':' '); |
} |
} |
|
|
###################################################################### |
###################################################################### |
Line 721 sub selectbox {
|
Line 752 sub selectbox {
|
|
|
=pod |
=pod |
|
|
=item &advancedsearch() |
=item &parse_advanced_search() |
|
|
|
Parse advanced search form and return the following: |
|
|
|
=over 4 |
|
|
|
=item $query Scalar containing an SQL query. |
|
|
Parse advanced search results. |
=item $customquery Scalar containing a custom query. |
|
|
|
=item $customshow Scalar containing commands to show custom metadata. |
|
|
|
=item $libraries_to_query Reference to array of domains to search. |
|
|
|
=back |
|
|
=cut |
=cut |
|
|
###################################################################### |
###################################################################### |
###################################################################### |
###################################################################### |
sub advancedsearch { |
sub parse_advanced_search { |
my ($r,$hidden)=@_; |
my ($r)=@_; |
my $fillflag=0; |
my $fillflag=0; |
# Clean up fields for safety |
# Clean up fields for safety |
for my $field ('title','author','subject','keywords','url','version', |
for my $field ('title','author','subject','keywords','url','version', |
Line 766 sub advancedsearch {
|
Line 809 sub advancedsearch {
|
} |
} |
unless ($fillflag) { |
unless ($fillflag) { |
&output_blank_field_error($r); |
&output_blank_field_error($r); |
return OK; |
return ; |
} |
} |
# Turn the form input into a SQL-based query |
# Turn the form input into a SQL-based query |
my $query=''; |
my $query=''; |
Line 778 sub advancedsearch {
|
Line 821 sub advancedsearch {
|
push @queries,&build_SQL_query($field,$ENV{'form.'.$field}); |
push @queries,&build_SQL_query($field,$ENV{'form.'.$field}); |
} |
} |
} |
} |
|
# I dislike the hack below. |
|
if ($ENV{'form.category'}) { |
|
$ENV{'form.mime'}=''; |
|
} |
# Evaluate option lists |
# Evaluate option lists |
if ($ENV{'form.language'} and $ENV{'form.language'} ne 'any') { |
if ($ENV{'form.language'} and $ENV{'form.language'} ne 'any') { |
push @queries,"(language like \"$ENV{'form.language'}\")"; |
push @queries,"(language like \"$ENV{'form.language'}\")"; |
Line 803 sub advancedsearch {
|
Line 850 sub advancedsearch {
|
# Test to see if date windows are legitimate |
# Test to see if date windows are legitimate |
if ($datequery=~/^Incorrect/) { |
if ($datequery=~/^Incorrect/) { |
&output_date_error($r,$datequery); |
&output_date_error($r,$datequery); |
return OK; |
return ; |
} |
} |
elsif ($datequery) { |
elsif ($datequery) { |
push @queries,$datequery; |
push @queries,$datequery; |
} |
} |
# Process form information for custom metadata querying |
# Process form information for custom metadata querying |
my $customquery=''; |
my $customquery=undef; |
if ($ENV{'form.custommetadata'}) { |
if ($ENV{'form.custommetadata'}) { |
$customquery=&build_custommetadata_query('custommetadata', |
$customquery=&build_custommetadata_query('custommetadata', |
$ENV{'form.custommetadata'}); |
$ENV{'form.custommetadata'}); |
} |
} |
my $customshow=''; |
my $customshow=undef; |
if ($ENV{'form.customshow'}) { |
if ($ENV{'form.customshow'}) { |
$customshow=$ENV{'form.customshow'}; |
$customshow=$ENV{'form.customshow'}; |
$customshow=~s/[^\w\s]//g; |
$customshow=~s/[^\w\s]//g; |
Line 842 sub advancedsearch {
|
Line 889 sub advancedsearch {
|
push @$libraries_to_query,$_; |
push @$libraries_to_query,$_; |
} |
} |
} |
} |
## --------------------------------------------------------------- |
|
# |
# |
# 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). |
|
if (@queries) { |
if (@queries) { |
$query=join(" AND ",@queries); |
$query=join(" AND ",@queries); |
$query="select * from metadata where $query"; |
$query="select * from metadata where $query"; |
my $reply; # reply hash reference |
|
unless ($customquery or $customshow) { |
|
$reply=&Apache::lonnet::metadata_query($query,undef,undef, |
|
$libraries_to_query); |
|
} |
|
else { |
|
$reply=&Apache::lonnet::metadata_query($query, |
|
$customquery,$customshow, |
|
$libraries_to_query); |
|
} |
|
&output_results('Advanced',$r,$customquery,$reply,$hidden); |
|
return OK; |
|
} elsif ($customquery) { |
} elsif ($customquery) { |
my $reply; # reply hash reference |
$query = ''; |
$reply=&Apache::lonnet::metadata_query('', |
|
$customquery,$customshow, |
|
$libraries_to_query); |
|
&output_results('Advanced',$r,$customquery,$reply,$hidden); |
|
return OK; |
|
} |
} |
# should not get to this point |
return ($query,$customquery,$customshow,$libraries_to_query); |
return 'Error. Should not have gone to this point.'; |
|
} |
} |
|
|
###################################################################### |
###################################################################### |
Line 879 sub advancedsearch {
|
Line 904 sub advancedsearch {
|
|
|
=pod |
=pod |
|
|
=item &basicsearch() |
=item &parse_basic_search() |
|
|
Parse basic search form. |
Parse the basic search form and return a scalar containing an sql query. |
|
|
=cut |
=cut |
|
|
###################################################################### |
###################################################################### |
###################################################################### |
###################################################################### |
sub basicsearch { |
sub parse_basic_search { |
my ($r,$hidden)=@_; |
my ($r)=@_; |
# Clean up fields for safety |
# Clean up fields for safety |
for my $field ('basicexp') { |
for my $field ('basicexp') { |
$ENV{"form.$field"}=~s/[^\w\s\(\)\-]//g; |
$ENV{"form.$field"}=~s/[^\w\s\(\)\-]//g; |
Line 905 sub basicsearch {
|
Line 930 sub basicsearch {
|
&output_blank_field_error($r); |
&output_blank_field_error($r); |
return OK; |
return OK; |
} |
} |
|
if ($ENV{'form.related'}) { |
|
my $tmp = $ENV{'form.basicexp'}; |
|
while ($ENV{'form.basicexp'} =~ /(\w+)/cg) { |
|
my $word = $1; |
|
my @Words = &Apache::loncommon::get_related_words($word); |
|
my $replacement = join " OR ", ($word, |
|
($#Words>4? @Words[0..4] : @Words) |
|
); |
|
$tmp =~ s/\b$word\b/ $replacement /g; |
|
} |
|
$ENV{'form.basicexp'} = $tmp; |
|
} |
# Build SQL query string based on form page |
# Build SQL query string based on form page |
my $query=''; |
my $query=''; |
my $concatarg=join('," ",', |
my $concatarg=join('," ",', |
Line 914 sub basicsearch {
|
Line 950 sub basicsearch {
|
$concatarg='title' if $ENV{'form.titleonly'}; |
$concatarg='title' if $ENV{'form.titleonly'}; |
|
|
$query=&build_SQL_query('concat('.$concatarg.')',$ENV{'form.'.'basicexp'}); |
$query=&build_SQL_query('concat('.$concatarg.')',$ENV{'form.'.'basicexp'}); |
|
return 'select * from metadata where '.$query; |
# Get reply (either a hash reference to filehandles or bad connection) |
|
# &Apache::lonnet::logthis("metadata query started:".time); |
|
my $reply=&Apache::lonnet::metadata_query('select * from metadata where '.$query); |
|
# &Apache::lonnet::logthis("metadata query finished:".time); |
|
# Output search results |
|
|
|
&output_results('Basic',$r,$query,$reply,$hidden); |
|
|
|
return OK; |
|
} |
} |
|
|
|
|
Line 1113 contacted, etc.)
|
Line 1140 contacted, etc.)
|
sub output_results { |
sub output_results { |
# &Apache::lonnet::logthis("output_results:".time); |
# &Apache::lonnet::logthis("output_results:".time); |
my $fnum; # search result counter |
my $fnum; # search result counter |
my ($mode,$r,$query,$replyref,$hidden)=@_; |
my ($mode,$r,$replyref,$hidden)=@_; |
my %rhash=%{$replyref}; |
my %rhash=%{$replyref}; |
my $compiledresult=''; |
my $compiledresult=''; |
my $timeremain=300; # (seconds) |
my $timeremain=300; # (seconds) |
my $elapsetime=0; |
my $elapsetime=0; |
my $resultflag=0; |
my $resultflag=0; |
my $tflag=1; |
my $tflag=1; |
my $viewselect=$ENV{'form.viewselect'}; |
## |
|
## Set viewing function |
|
## |
|
my $viewfunction = $Views{$ENV{'form.viewselect'}}; |
|
if (!defined($viewfunction)) { |
|
$r->print("Internal Error - Bad view selected.\n"); |
|
$r->rflush(); |
|
return; |
|
} |
# |
# |
# make query information persistent to allow for subsequent revision |
# make query information persistent to allow for subsequent revision |
my $persistent=&make_persistent(\%ENV); |
my $persistent=&make_persistent(\%ENV); |
# spit out the results header |
# |
|
# Begin producing output |
$r->print(&search_results_header($mode)); |
$r->print(&search_results_header($mode)); |
$r->rflush(); |
$r->rflush(); |
|
# |
# begin showing the cataloged results |
# begin showing the cataloged results |
my $action = "/adm/searchcat"; |
my $action = "/adm/searchcat"; |
if ($mode eq 'Basic') { |
if ($mode eq 'Basic') { |
Line 1147 $persistent
|
Line 1184 $persistent
|
CATALOGCONTROLS |
CATALOGCONTROLS |
# |
# |
# make the pop-up window for status |
# make the pop-up window for status |
# |
|
$r->print(&make_popwin(%rhash)); |
$r->print(&make_popwin(%rhash)); |
$r->rflush(); |
$r->rflush(); |
## |
## |
Line 1224 CATALOGCONTROLS
|
Line 1260 CATALOGCONTROLS
|
} # end of if ($reply eq 'con_lost') else statement |
} # end of if ($reply eq 'con_lost') else statement |
my %Fields = undef; # Holds the data to be sent to the various |
my %Fields = undef; # Holds the data to be sent to the various |
# *_view routines. |
# *_view routines. |
my ($extrashow,$customfields,$customhash) = &handle_custom_fields(\@results); |
my ($extrashow,$customfields,$customhash) = |
|
&handle_custom_fields(\@results); |
my @customfields = @$customfields; |
my @customfields = @$customfields; |
my %customhash = %$customhash; |
my %customhash = %$customhash; |
untie %hash if (keys %hash); |
untie %hash if (keys %hash); |
Line 1241 CATALOGCONTROLS
|
Line 1278 CATALOGCONTROLS
|
chomp $result; |
chomp $result; |
next unless $result; |
next unless $result; |
%Fields = &parse_raw_result($result,$rkey); |
%Fields = &parse_raw_result($result,$rkey); |
|
# |
|
# Check copyright tags and skip results the user cannot use |
|
my (undef,undef,$resdom,$resname) = split('/',$Fields{'url'}); |
|
# Check for priv |
|
if (($Fields{'copyright'} eq 'priv') && |
|
(($ENV{'user.name'} ne $resname) && |
|
($ENV{'user.domain'} ne $resdom))) { |
|
next; |
|
} |
|
# Check for domain |
|
if (($Fields{'copyright'} eq 'domain') && |
|
($ENV{'user.domain'} ne $resdom)) { |
|
next; |
|
} |
|
# |
$Fields{'extrashow'}=$extrashow; |
$Fields{'extrashow'}=$extrashow; |
if ($extrashow) { |
if ($extrashow) { |
foreach my $field (@customfields) { |
foreach my $field (@customfields) { |
Line 1275 END
|
Line 1327 END
|
# <input type="hidden" name="url$fnum" value="$url" /> |
# <input type="hidden" name="url$fnum" value="$url" /> |
$fnum++; |
$fnum++; |
} |
} |
if ($viewselect eq 'Detailed Citation View') { |
# Render the result into html |
$compiledresult.=&detailed_citation_view |
$compiledresult.= &$viewfunction(%Fields, hostname => $rkey ); |
(%Fields, hostname => $rkey ); |
|
} |
|
elsif ($viewselect eq 'Summary View') { |
|
$compiledresult.=&summary_view |
|
(%Fields, hostname => $rkey ); |
|
} |
|
elsif ($viewselect eq 'Fielded Format') { |
|
$compiledresult.=&fielded_format_view |
|
(%Fields, hostname => $rkey ); |
|
} |
|
elsif ($viewselect eq 'XML/SGML') { |
|
$compiledresult.=&xml_sgml_view |
|
(%Fields, hostname => $rkey ); |
|
} |
|
if ($compiledresult or $servercount!=$servernum) { |
if ($compiledresult or $servercount!=$servernum) { |
$compiledresult.="<hr align='left' width='200' noshade />"; |
$compiledresult.="<hr align='left' width='200' noshade />"; |
} |
} |
Line 1301 END
|
Line 1339 END
|
$resultflag=1; |
$resultflag=1; |
$r->print($compiledresult); |
$r->print($compiledresult); |
} |
} |
my $percent=sprintf('%3.0f',($servercount/$servernum*100)); |
|
} # End of foreach loop over servers remaining |
} # End of foreach loop over servers remaining |
} # End of big loop - while($serversleft && $timeremain) |
} # End of big loop - while($serversleft && $timeremain) |
unless ($resultflag) { |
unless ($resultflag) { |
$r->print("\nThere were no results that matched your query\n"); |
$r->print("\nThere were no results that matched your query\n"); |
} |
} |
# $r->print('<script type="text/javascript">'.'popwin.close()</script>'."\n"); $r->rflush(); |
$r->print('<script type="text/javascript">'.'popwin.close()</script>'. |
|
"\n"); |
$r->print("</body>\n</html>\n"); |
$r->print("</body>\n</html>\n"); |
|
$r->rflush(); |
return; |
return; |
} |
} |
|
|
Line 1372 sub parse_raw_result {
|
Line 1411 sub parse_raw_result {
|
&Apache::loncommon::copyrightdescription($Fields{'copyright'}); |
&Apache::loncommon::copyrightdescription($Fields{'copyright'}); |
$Fields{'mimetag'} = |
$Fields{'mimetag'} = |
&Apache::loncommon::filedescription($Fields{'mime'}); |
&Apache::loncommon::filedescription($Fields{'mime'}); |
|
if ($Fields{'author'}=~/^(\s*|error)$/) { |
|
$Fields{'author'}="Unknown Author"; |
|
} |
# Put spaces in the keyword list, if needed. |
# Put spaces in the keyword list, if needed. |
$Fields{'keywords'}=~ s/,([A-z])/, $1/g; |
$Fields{'keywords'}=~ s/,([A-z])/, $1/g; |
if ($Fields{'title'}=~ /^\s*$/ ) { |
if ($Fields{'title'}=~ /^\s*$/ ) { |
Line 1603 sub make_popwin {
|
Line 1645 sub make_popwin {
|
# rows of 10 each. No longer used to index images. |
# rows of 10 each. No longer used to index images. |
my $sn=1; |
my $sn=1; |
foreach my $sk (sort keys %rhash) { |
foreach my $sk (sort keys %rhash) { |
# '<a href=" |
|
$grid.="'<a href=\""; |
$grid.="'<a href=\""; |
# javascript:displayinfo('+ |
|
$grid.="javascript:opener.displayinfo('+"; |
$grid.="javascript:opener.displayinfo('+"; |
# "'"+'key |
|
$grid.="\"'\"+'"; |
$grid.="\"'\"+'"; |
$grid.=$sk; |
$grid.=$sk; |
my $hc; |
my $hc; |
if ($rhash{$sk} eq 'con_lost') { |
if ($rhash{$sk} eq 'con_lost') { |
$hc="BAD CONNECTION, CONTACT SYSTEM ADMINISTRATOR "; |
$hc="BAD CONNECTION "; |
} |
} |
else { |
else { |
$hc="'+\"'\"+\"+hc['$sk']+\"+\"'\"+'"; |
$hc="'+\"'\"+\"+hc['$sk']+\"+\"'\"+'"; |