version 1.7, 2002/03/21 14:33:49
|
version 1.14, 2002/08/16 17:03:23
|
Line 46 my $iconpath; # variable to be accessibl
|
Line 46 my $iconpath; # variable to be accessibl
|
# ---------------------------------------------------------------- Main Handler |
# ---------------------------------------------------------------- Main Handler |
sub handler { |
sub handler { |
my $r = shift; |
my $r = shift; |
|
|
|
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, |
|
['acts','catalogmode','mode']); |
# color scheme |
# color scheme |
my $fileclr = '#ffffe6'; |
my $fileclr = '#ffffe6'; |
my $titleclr = '#ddffff'; |
my $titleclr = '#ddffff'; |
Line 55 sub handler {
|
Line 57 sub handler {
|
$r->send_http_header; |
$r->send_http_header; |
return OK if $r->header_only; |
return OK if $r->header_only; |
|
|
# output start of web page |
# finish_import looks different for graphical or "simple" RAT |
$r->print(<<END); |
my $finishimport=''; |
<html> |
if ($ENV{'form.mode'} eq 'simple') { |
<head> |
$finishimport=(<<ENDSMP); |
<title>The LearningOnline Network With CAPA Group Sorter</title> |
function finish_import() { |
<script language='javascript'> |
opener.document.forms.simpleedit.importdetail.value=''; |
function insertRowInLastRow() { |
for (var num=0; num<document.forms.groupsort.fnum.value; num++) { |
opener.insertrow(opener.maxrow); |
opener.document.forms.simpleedit.importdetail.value+='&'+ |
opener.addobj(opener.maxrow,'e&2'); |
escape(eval("document.forms.groupsort.title"+num+".value"))+'='+ |
} |
escape(eval("document.forms.groupsort.filelink"+num+".value")); |
function placeResourceInLastRow (title,url,linkflag) { |
|
opener.newresource(opener.maxrow,2,opener.escape(title), |
|
opener.escape(url),'false','normal'); |
|
opener.save(); |
|
opener.mostrecent=opener.obj.length-1; |
|
if (linkflag) { |
|
opener.joinres(opener.linkmode,opener.mostrecent,0); |
|
} |
} |
opener.linkmode=opener.mostrecent; |
opener.document.forms.simpleedit.submit(); |
|
self.close(); |
} |
} |
|
ENDSMP |
|
} else { |
|
$finishimport=(<<ENDADV); |
function finish_import() { |
function finish_import() { |
var linkflag=false; |
var linkflag=false; |
for (var num=0; num<document.forms.groupsort.fnum.value; num++) { |
for (var num=0; num<document.forms.groupsort.fnum.value; num++) { |
Line 92 function finish_import() {
|
Line 91 function finish_import() {
|
opener.draw(); |
opener.draw(); |
self.close(); |
self.close(); |
} |
} |
|
ENDADV |
|
} |
|
|
|
# output start of web page |
|
|
|
$r->print(<<END); |
|
<html> |
|
<head> |
|
<title>The LearningOnline Network With CAPA Group Sorter</title> |
|
<script language='javascript'> |
|
function insertRowInLastRow() { |
|
opener.insertrow(opener.maxrow); |
|
opener.addobj(opener.maxrow,'e&2'); |
|
} |
|
function placeResourceInLastRow (title,url,linkflag) { |
|
opener.newresource(opener.maxrow,2,opener.escape(title), |
|
opener.escape(url),'false','normal'); |
|
opener.save(); |
|
opener.mostrecent=opener.obj.length-1; |
|
if (linkflag) { |
|
opener.joinres(opener.linkmode,opener.mostrecent,0); |
|
} |
|
opener.linkmode=opener.mostrecent; |
|
} |
|
$finishimport |
function selectchange(val) { |
function selectchange(val) { |
var newval=0+eval("document.forms.groupsort.alt"+val+".selectedIndex"); |
var newval=0+eval("document.forms.groupsort.alt"+val+".selectedIndex"); |
orderchange(val,newval); |
orderchange(val,newval); |
Line 115 END
|
Line 139 END
|
|
|
my %shash; # sort order (key is resource location, value is sort order) |
my %shash; # sort order (key is resource location, value is sort order) |
my %thash; # title (key is resource location, value is title) |
my %thash; # title (key is resource location, value is title) |
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 'acts') { |
|
$ENV{'form.'.$name}=$value; |
|
} |
|
if ($name eq 'catalogmode') { |
|
$ENV{'form.'.$name}=$value; |
|
} |
|
} |
|
my $diropendb; |
my $diropendb; |
|
# ------------------------------ which file do we open? Easy if explictly given |
if ($ENV{'form.catalogmode'} eq 'groupsearch') { |
if ($ENV{'form.catalogmode'} eq 'groupsearch') { |
$diropendb = |
$diropendb = |
"/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_searchcat.db"; |
"/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_searchcat.db"; |
Line 135 END
|
Line 150 END
|
$diropendb = |
$diropendb = |
"/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_indexer.db"; |
"/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_indexer.db"; |
} |
} |
|
elsif ($ENV{'form.catalogmode'} eq 'groupsec') { |
|
$diropendb = |
|
"/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_groupsec.db"; |
|
} |
|
# --------------------- not explicitly given, choose the one most recently used |
else { # choose last accessed |
else { # choose last accessed |
my $dsearch; my $dindex; |
my @dbfn; |
my $dsearcht; my $dindext; |
my @dbst; |
$dsearch = |
|
|
$dbfn[0] = |
"/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_searchcat.db"; |
"/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_searchcat.db"; |
if (-e $dsearch) { |
$dbst[0]=-1; |
$dsearcht=(stat($dsearch))[9]; |
if (-e $dbfn[0]) { |
|
$dbst[0]=(stat($dbfn[0]))[9]; |
} |
} |
$dindex = |
$dbfn[1] = |
"/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_indexer.db"; |
"/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_indexer.db"; |
if (-e $dindex) { |
$dbst[1]=-1; |
$dindext=(stat($dindex))[9]; |
if (-e $dbfn[1]) { |
|
$dbst[1]=(stat($dbfn[1]))[9]; |
} |
} |
if (!$dsearcht and !$dindext) { |
$dbfn[2] = |
$diropendb=''; |
"/home/httpd/perl/tmp/$domain\_$ENV{'user.name'}_groupsec.db"; |
} |
$dbst[2]=-1; |
elsif ($dsearcht>$dindext) { |
if (-e $dbfn[2]) { |
$diropendb=$dsearch; |
$dbst[2]=(stat($dbfn[2]))[9]; |
} |
} |
else { |
# Expand here for more modes |
$diropendb=$dindex; |
# .... |
} |
|
|
# Okay, find most recent existing |
|
|
|
my $newest=0; |
|
$diropendb=''; |
|
for (my $i=0; $i<=$#dbfn; $i++) { |
|
if ($dbst[$i]>$newest) { |
|
$newest=$dbst[$i]; |
|
$diropendb=$dbfn[$i]; |
|
} |
|
} |
|
|
} |
} |
if (tie(%hash,'GDBM_File',$diropendb,&GDBM_WRCREAT,0640)) { |
# ----------------------------- diropendb is now the filename of the db to open |
|
if (tie(%hash,'GDBM_File',$diropendb,&GDBM_WRCREAT(),0640)) { |
my $acts = $ENV{'form.acts'}; |
my $acts = $ENV{'form.acts'}; |
my @Acts = split(/b/,$acts); |
my @Acts = split(/b/,$acts); |
my %ahash; |
my %ahash; |
Line 248 END
|
Line 283 END
|
untie %hash; |
untie %hash; |
my $ctr = 0; |
my $ctr = 0; |
my $clen = scalar(keys %shash); |
my $clen = scalar(keys %shash); |
$r->print('<h2><font color="#888888">The LearningOnline With CAPA '. |
$r->print(<<END); |
'Group Sorter</font></h2>'."\n"); |
<h2><font color="#888888"> |
$r->print('<b><font color="#888888">Finalize order of resources</font>'. |
The LearningOnline Network With CAPA Group Sorter |
'</b>'."\n"); |
</font></h2> |
$r->print("<form method='post' action='/adm/groupsort' name='groupsort' ". |
<b><font color="#888888">Finalize order of resources</font></b> |
"enctype='application/x-www-form-urlencoded'>"); |
<form method='post' action='/adm/groupsort' name='groupsort' |
$r->print(<<END); |
enctype='application/x-www-form-urlencoded'> |
<input type="hidden" name="fnum" value="$clen" /> |
<input type="hidden" name="fnum" value="$clen" /> |
<input type="hidden" name="oldval" value="" /> |
<input type="hidden" name="oldval" value="" /> |
<input type="hidden" name="newval" value="" /> |
<input type="hidden" name="newval" value="" /> |
|
<input type="hidden" name="mode" value="$ENV{'form.mode'}" /> |
END |
END |
|
|
|
# --- Expand here if "GO BACK" button desired |
if ($ENV{'form.catalogmode'} eq 'groupimport') { |
if ($ENV{'form.catalogmode'} eq 'groupimport') { |
$r->print(<<END); |
$r->print(<<END); |
<input type="button" name="alter" value="GO BACK" |
<input type="button" name="alter" value="GO BACK" |
Line 271 END
|
Line 309 END
|
onClick="window.location='/adm/searchcat?catalogmode=groupsearch'" /> |
onClick="window.location='/adm/searchcat?catalogmode=groupsearch'" /> |
END |
END |
} |
} |
|
# --- |
|
|
$r->print(<<END); |
$r->print(<<END); |
<input type="button" name="alter" value="FINISH IMPORT" |
<input type="button" name="alter" value="FINISH IMPORT" |
onClick="finish_import()" /> |
onClick="finish_import()" /> |