--- rat/lonratedt.pm 2002/05/16 21:10:05 1.20 +++ rat/lonratedt.pm 2002/05/20 18:54:55 1.22 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Edit Handler for RAT Maps # -# $Id: lonratedt.pm,v 1.20 2002/05/16 21:10:05 www Exp $ +# $Id: lonratedt.pm,v 1.22 2002/05/20 18:54:55 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -283,26 +283,66 @@ sub pastetarget { foreach (@which) { if (defined($_)) { my ($name,$url)=split(/\=/,$_); - my $idx=$#resources+1; - $insertorder[$#insertorder+1]=$idx; - my $ext='false'; - if ($url=~/^http\:\/\//) { $ext='true'; } - $resources[$idx]=$name.':'.$url.':normal:'.$ext.':res'; + $name=&Apache::lonnet::unescape($name); + $url=&Apache::lonnet::unescape($url); + if ($url) { + my $idx=$#resources+1; + $insertorder[$#insertorder+1]=$idx; + my $ext='false'; + if ($url=~/^http\:\/\//) { $ext='true'; } + $url=~s/\:/\:/g; + $resources[$idx]=$name.':'.$url.':'.$ext.':normal:res'; + } } } - print "insertorder:".join(',',@insertorder).'
'; - print "order:".join(',',@order).'
'; my @oldorder=splice(@order,$after,$#insertorder+1,@insertorder); - print "oldorder:".join(',',@oldorder).'
'; - print "order:".join(',',@order).'
'; - @order=push(@order,@oldorder); - print "order:".join(',',@order).'
'; + @order=(@order,@oldorder); +} + +# ------------------------------------------------ Get start and finish correct +# modifies @resources + +sub startfinish { + foreach (@order) { + my ($name,$url,$ext)=split(/\:/,$resources[$_]); + if ($url=~/http\&colon\:\/\//) { $ext='true'; } + $resources[$_]=$name.':'.$url.':'.$ext.':normal:res'; + } + my ($name,$url,$ext)=split(/\:/,$resources[0]); + $resources[0]=$name.':'.$url.':'.$ext.':start:res'; + my ($name,$url,$ext)=split(/\:/,$resources[$order[$#order]]); + $resources[$order[$#order]]=$name.':'.$url.':'.$ext.':finish:res'; +} + +# ------------------------------------------------------------------- Store map + +sub storemap { + my $fn=shift; + &startfinish(); + my $output='graphdef<:>no'; + my $k=1; + for (my $i=0; $i<=$#order; $i++) { + if (defined($resources[$order[$i]])) { + $output.='<&>objcont<:>'.$order[$i].'<:>'.$resources[$order[$i]]; + } + if (defined($order[$i+1])) { + if (defined($resources[$order[$i+1]])) { + $output.='<&>objlinks<:>'.$k.'<:>'. + $order[$i].':'.$order[$i+1].':0'; + $k++; + } + } + } + $output=~s/http\&colon\:\/\///g; + $ENV{'form.output'}=$output; + return + &Apache::lonratsrv::loadmap($fn,&Apache::lonratsrv::savemap($fn,'')); } # ------------------------------------------------------- Simple edit processor sub smpedt { - my ($r,$errtext)=@_; + my ($r,$url,$errtext)=@_; my $buttons=&buttons(2); # ---------------------------------------------------------- Process form input @@ -425,7 +465,8 @@ sub smpedt { } else { $lastsel=$#order; } - &pastetarget($lastsel,split(/\&/,$ENV{'form.importdata'})); + &pastetarget($lastsel,split(/\&/,$ENV{'form.importdetail'})); + &storemap(&Apache::lonnet::filelocation('',$url)); # ------------------------------------------------------------------------- Cut } elsif ($ENV{'form.cut'}) { # ----------------------------------------------------------------------- Paste @@ -723,7 +764,7 @@ sub handler { if ($ENV{'form.forceadv'}) { &ratedt($r,$url); } elsif ($ENV{'form.forcesmp'}) { - &smpedt($r,$errtext); + &smpedt($r,$url,$errtext); } else { &viewmap($r,$url,$adv,$errtext); }