--- rat/lonratedt.pm 2002/05/21 13:41:13 1.23 +++ rat/lonratedt.pm 2002/05/22 20:39:59 1.27 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Edit Handler for RAT Maps # -# $Id: lonratedt.pm,v 1.23 2002/05/21 13:41:13 www Exp $ +# $Id: lonratedt.pm,v 1.27 2002/05/22 20:39:59 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -263,6 +263,7 @@ ENDDOCUMENT # ---------------------------------------------------------------- Make buttons sub buttons { + if ($ENV{'form.forceselect'}) { return ''; } my $adv=shift; my $output='
'; if ($adv==1) { @@ -353,16 +354,16 @@ sub smpedt { my @targetselect=(); undef @importselect; undef @targetselect; - if (defined($ENV{'form.import'})) { - if (ref($ENV{'form.import'})) { - @importselect=sort($ENV->{'form.import'}); + if (defined($ENV{'form.importsel'})) { + if (ref($ENV{'form.importsel'})) { + @importselect=sort(@{$ENV{'form.importsel'}}); } else { - @importselect=($ENV{'form.import'}); + @importselect=($ENV{'form.importsel'}); } } if (defined($ENV{'form.target'})) { if (ref($ENV{'form.target'})) { - @targetselect=sort($ENV->{'form.target'}); + @targetselect=sort(@{$ENV{'form.target'}}); } else { @targetselect=($ENV{'form.target'}); } @@ -469,9 +470,70 @@ sub smpedt { &pastetarget($lastsel,split(/\&/,$ENV{'form.importdetail'})); &storemap(&Apache::lonnet::filelocation('',$url)); # ------------------------------------------------------------------------- Cut - } elsif ($ENV{'form.cut'}) { + } elsif (($ENV{'form.cut'}) || ($ENV{'form.copy'})) { + $importdetail=''; + my @curimport=split(/\&/,$ENV{'form.curimpdetail'}); + + my $lastsel; + + if (defined($importselect[-1])) { + $lastsel=$importselect[-1]; + } else { + $lastsel=$#curimport; + } + + for (my $i=0;$i<=$lastsel;$i++) { + my ($name,$url)=split(/\=/,$curimport[$i]); + if ($url) { + $importdetail.='&'.$name.'='.$url; + } + } + + foreach (@targetselect) { + my ($name,$url)=split(/\:/,$resources[$order[$_-1]]); + if ($url) { + $importdetail.='&'.&Apache::lonnet::escape($name).'='. + &Apache::lonnet::escape($url); + } + } + + for (my $i=$lastsel+1;$i<=$#curimport;$i++) { + my ($name,$url)=split(/\=/,$curimport[$i]); + if ($url) { + $importdetail.='&'.$name.'='.$url; + } + } + $importdetail=~s/\&+/\&/g; + $importdetail=~s/^\&//; + + if ($ENV{'form.cut'}) { + my @neworder=(); + for (my $i=0;$i<=$#order;$i++) { + my $include=1; + foreach (@targetselect) { + if ($_-1==$i) { $include=0; } + } + if ($include) { $neworder[$#neworder+1]=$order[$i]; } + } + @order=@neworder; + &storemap(&Apache::lonnet::filelocation('',$url)); + } + # ----------------------------------------------------------------------- Paste } elsif ($ENV{'form.paste'}) { + my $lastsel; + if (defined($targetselect[-1])) { + $lastsel=$targetselect[-1]; + } else { + $lastsel=$#order+1; + } + my @newsequence; + my @curimport=split(/\&/,$ENV{'form.curimpdetail'}); + foreach (@importselect) { + $newsequence[$#newsequence+1]=$curimport[$_]; + } + &pastetarget($lastsel,@newsequence); + &storemap(&Apache::lonnet::filelocation('',$url)); # ------------------------------------------------ } # ------------------------------------------------------------ Assemble windows @@ -622,7 +684,7 @@ function idxcheck(mode) { function viewimport() { openview((document.forms.simpleedit.curimpdetail.value.split('&')) - [document.forms.simpleedit.import.selectedIndex+1]); + [document.forms.simpleedit.importsel.selectedIndex+1]); } @@ -659,7 +721,7 @@ after selected
- $importwindow @@ -667,10 +729,13 @@ $importwindow Cut selected


+Copy selected
+

+


Paste after selected
- + - $targetwindow @@ -700,23 +765,73 @@ ENDNODIR sub viewmap { my ($r,$url,$adv,$errtext)=@_; - $r->print(''.&buttons($adv)); + $r->print(''); + if ($ENV{'form.forceselect'}) { $r->print(< + +function select_group() { + window.location="/adm/groupsort?catalogmode=groupimport&mode=rat&acts="+document.forms.fileattr.acts.value; +} + +function queue(val) { + if (eval("document.forms."+val+".filelink.checked")) { + var l=val.length; + var v=val.substring(4,l); + document.forms.fileattr.acts.value+='1a'+v+'b'; + } + else { + var l=val.length; + var v=val.substring(4,l); + document.forms.fileattr.acts.value+='0a'+v+'b'; + } +} + + + + +ENDSCRIPT + } + $r->print(''.&buttons($adv)); + if ($ENV{'form.forceselect'}) { $r->print(< + + + +ENDSELECT + } if ($errtext) { $r->print($errtext.'
'); } + my $idx=0; foreach (&attemptread(&Apache::lonnet::filelocation('',$url))) { if (defined($_)) { + $idx++; + if ($ENV{'form.forceselect'}) { + $r->print('
'); + } my ($title,$url)=split(/\:/,$_); $title=~s/\&colon\;/\:/g; $url=~s/\&colon\;/\:/g; unless ($title) { $title=(split(/\//,$url))[-1] }; unless ($title) { $title='Empty'; } if ($url) { + if ($ENV{'form.forceselect'}) { + $r->print(< + +ENDCHECKBOX + } $r->print(''); } $r->print(&Apache::lonratsrv::qtescape($title)); if ($url) { $r->print(''); } - $r->print('
'); + if ($ENV{'form.forceselect'}) { + $r->print(''); + } else { + $r->print('
'); + } } } $r->print(''); @@ -730,6 +845,9 @@ sub handler { $r->send_http_header; return OK if $r->header_only; + + &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}, + ['forceselect']); my $url=$r->uri; my $fn=&Apache::lonnet::filelocation('',$url);