--- loncom/interface/lonsearchcat.pm 2002/03/07 20:12:36 1.116
+++ loncom/interface/lonsearchcat.pm 2002/05/22 16:21:50 1.119
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Search Catalog
#
-# $Id: lonsearchcat.pm,v 1.116 2002/03/07 20:12:36 matthew Exp $
+# $Id: lonsearchcat.pm,v 1.119 2002/05/22 16:21:50 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -68,6 +68,7 @@ my %hitcount; # stores number of hits pe
# -- 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;
# -- miscellaneous variables
my $scrout; # string that holds portions of the screen output
@@ -111,6 +112,7 @@ BEGIN {
}
}
+#------------------------------------------------------------- global variables
my $diropendb = "";
my $domain = "";
@@ -127,7 +129,7 @@ sub handler {
$diropendb= "/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_searchcat.db";
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
- ['catalogmode','launch','acts']);
+ ['catalogmode','launch','acts','mode','form','element']);
if ($ENV{'form.launch'} eq '1') {
if (tie(%hash,'GDBM_File',$diropendb,&GDBM_WRCREAT,0640)) {
@@ -141,8 +143,13 @@ sub handler {
}
}
+# --------------------------- Produce some output, so people know it is working
+
+ $r->print("\n");
+ $r->rflush;
+
# ----------------------------------- configure dynamic components of interface
- my $hidden='';
+
if ($ENV{'form.catalogmode'} eq 'interactive') {
$hidden="".
"\n";
@@ -161,7 +168,12 @@ END
onClick='javascript:select_group()'>
END
}
-
+ $hidden .= <
+
+
+
+END
# ------------------------------------------------------ Determine current user
$yourself=$ENV{'user.name'}.'@'.$ENV{'user.domain'};
@@ -405,142 +417,42 @@ sub dateboxes {
my ($name,$defaultmonth,$defaultday,$defaultyear,
$currentmonth,$currentday,$currentyear)=@_;
($defaultmonth,$defaultday,$defaultyear)=('','','');
- my $month=<
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-END
- $month=~s/(\"$currentmonth\")/$1 SELECTED/ if length($currentmonth);
+ #
+ # Day
my $day=<
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
END
+ for (my $i = 1; $i<=31; $i++) {
+ $day.="\n";
+ }
+ $day.="\n";
$day=~s/(\"$currentday\")/$1 SELECTED/ if length($currentday);
+ #
+ # Month
+ my $month=<
+
+END
+ my $i = 1;
+ foreach (qw/January February March April May June
+ July August September October November December /){
+ $month .="\n";
+ $i++;
+ }
+ $month.="\n";
+ $month=~s/(\"$currentmonth\")/$1 SELECTED/ if length($currentmonth);
+ #
+ # Year (obviously)
my $year=<
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
END
+ my $maxyear = 2051;
+ for (my $i = 1976; $i<=$maxyear; $i++) {
+ $year.="\n";
+ }
+ $year.="\n";
$year=~s/(\"$currentyear\")/$1 SELECTED/ if length($currentyear);
return "$month$day$year";
}
@@ -563,10 +475,6 @@ sub selectbox {
return $selout.'';
}
-sub testf {
- return @_[0];
-}
-
# ----------------------------------------------- Performing an advanced search
sub advancedsearch {
my ($r,$envhash)=@_;
@@ -585,7 +493,12 @@ sub advancedsearch {
'custommetadata','customshow') {
$ENV{"form.$field"}=~s/[^\w\/\s\(\)\=\-\"\']//g;
}
-
+ foreach ('mode','form','element') {
+ # is this required? Hmmm.
+ next unless (exists($ENV{"form.$_"}));
+ $ENV{"form.$_"}=&Apache::lonnet::unescape($ENV{"form.$_"});
+ $ENV{"form.$_"}=~s/[^\w\/\s\(\)\=\-\"\']//g;
+ }
# Check to see if enough information was filled in
for my $field ('title','author','subject','keywords','url','version',
'notes','abstract','mime','language','owner',
@@ -692,6 +605,12 @@ sub basicsearch {
for my $field ('basicexp') {
$ENV{"form.$field"}=~s/[^\w\s\(\)\-]//g;
}
+ foreach ('mode','form','element') {
+ # is this required? Hmmm.
+ next unless (exists($ENV{"form.$_"}));
+ $ENV{"form.$_"}=&Apache::lonnet::unescape($ENV{"form.$_"});
+ $ENV{"form.$_"}=~s/[^\w\/\s\(\)\=\-\"\']//g;
+ }
# Check to see if enough is filled in
unless (&filled($ENV{'form.basicexp'})) {
@@ -855,7 +774,9 @@ BEGINNING
# conditional output of script functions dependent on the mode in
# which the search was invoked
- $r->print(<
SCRIPT
- $r->print(<
+SCRIPT
+ }
+ }
+ $r->print(<
SCRIPT
- $r->print(<
SCRIPT
@@ -921,6 +864,7 @@ SCRIPT
CATALOGBEGIN
$r->print(<
+$hidden
@@ -1015,7 +959,7 @@ RESULTS
' value="" />'+
'<'+'br />'+
' <'+'input type="button" name="button"'+
- ' value="abort search and view current results" '+
+ ' value="close this window" '+
' onClick="javascript:opener.abortsearch()" />'+
' <'+'input type="button" name="button"'+
' value="help" onClick="javascript:opener.openhelp()" />'+
@@ -1048,11 +992,7 @@ ENDPOP
my $replyfile='';
if ($reply eq 'con_lost') {
- $r->print(''.
- "\n");
- $r->rflush();
+ &popwin_imgupdate($r,$sn,"srvbad.gif");
$bloop--;
$orkey{$rkey}=1;
}
@@ -1064,58 +1004,31 @@ ENDPOP
my $temp=0;
WLOOP: while (1) {
if (-e $replyfile && $tflag) {
- $r->print(''.
- "\n");
- $r->rflush();
- $r->print(''.
- "\n");
- $r->rflush();
+ &popwin_imgupdate($r,$sn,"srvhalf.gif");
+ &popwin_js($r,'popwin.hc["'.$rkey.'"]='.
+ '"still transferring..."'.';');
$tflag=0;
}
if (-e "$replyfile.end") {
$bloop--;
$orkey{$rkey}=1;
if (-s $replyfile) {
- $r->print(''."\n");
- $r->rflush();
+ &popwin_imgupdate($r,$sn,"srvgood.gif");
my $fh=Apache::File->new($replyfile) or
($r->print('ERROR: file '.
$replyfile.' cannot be opened') and
return OK);
@results=<$fh> if $fh;
$hitcount{$rkey}=@results+0;
- $r->print(''.
- "\n");
- $r->rflush();
+ &popwin_js($r,'popwin.hc["'.$rkey.'"]='.
+ $hitcount{$rkey}.';');
$hitcountsum+=$hitcount{$rkey};
- $r->print(''.
- "\n");
- $r->rflush();
+ &popwin_js($r,'popwin.document.forms.popremain.'.
+ 'numhits.value='.$hitcountsum.';');
}
else {
- $r->print(''.
- "\n");
- $r->rflush();
- $r->print(''.
- "\n");
- $r->rflush();
+ &popwin_imgupdate($r,$sn,"srvempty.gif");
+ &popwin_js($r,'popwin.hc["'.$rkey.'"]=0;');
}
last WLOOP;
}
@@ -1129,18 +1042,13 @@ ENDPOP
sleep 1;
$timeremain--;
$elapsetime++;
- $r->print(''."\n");
- $r->rflush();
+ &popwin_js($r,"popwin.document.popremain.".
+ "elapsetime.value=$elapsetime;");
$temp++;
}
}
- $r->print(''."\n");
- $r->rflush();
+ &popwin_js($r,'popwin.document.whirly.'.
+ 'src="/adm/lonIcons/lonanimend.gif";');
}
my $customshow='';
my $extrashow='';
@@ -1184,6 +1092,7 @@ ENDPOP
$notes,$abstract,$mime,$lang,
$creationdate,$lastrevisiondate,$owner,$copyright)=@fields;
+ unless ($title) { $title='Untitled'; }
unless ($ENV{'user.adv'}) {
$keywords='- not displayed -';
$fields[4]=$keywords;
@@ -1235,7 +1144,8 @@ END
$hash{"pre_${fnum}_link"}=$url;
$hash{"pre_${fnum}_title"}=$title;
$compiledresult.=<
+
@@ -1519,6 +1429,27 @@ sub start_fresh_session {
}
}
+# ----------------------------------------------- send javascript to popwin
+sub popwin_js {
+ # Print javascript out to popwin, but make sure we dont generate
+ # any javascript errors in doing so.
+ my ($r,$text) = @_;
+ $r->print(<<"END");
+
+END
+ $r->rflush();
+}
+
+sub popwin_imgupdate {
+ my ($r,$imgnum,$icon) = @_;
+ &popwin_js($r,'popwin.document.img'.$imgnum.'.'.
+ 'src="/adm/lonIcons/'.$icon.'";');
+}
+
1;
__END__