--- rat/lonratedt.pm 2002/05/18 18:24:34 1.21 +++ rat/lonratedt.pm 2002/05/21 13:41:13 1.23 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Edit Handler for RAT Maps # -# $Id: lonratedt.pm,v 1.21 2002/05/18 18:24:34 www Exp $ +# $Id: lonratedt.pm,v 1.23 2002/05/21 13:41:13 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -37,8 +37,8 @@ use Apache::Constants qw(:common); use Apache::lonnet; use Apache::lonratsrv; -my @order=(); -my @resources=(); +my @order; +my @resources; # Mapread read maps into global arrays @links and @resources, determines status @@ -52,6 +52,8 @@ sub mapread { undef @links; undef @resources; undef @order; + @resources=(''); + @order=(); my ($outtext,$errtext)=&Apache::lonratsrv::loadmap($fn,''); if ($errtext) { return ($errtext,2); } @@ -88,7 +90,7 @@ sub mapread { } } - for (my $i=0; $i<=$#resources; $i++) { + for (my $i=1; $i<=$#resources; $i++) { if (defined($resources[$i])) { unless (($starters[$i]) || ($endings[$i])) { return @@ -295,8 +297,8 @@ sub pastetarget { } } } - my @oldorder=splice(@order,$after,$#insertorder+1,@insertorder); - @order=(@order,@oldorder); + my @oldorder=splice(@order,$after); + @order=(@order,@insertorder,@oldorder); } # ------------------------------------------------ Get start and finish correct @@ -305,18 +307,44 @@ sub pastetarget { 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[0]]); + $resources[$order[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 @@ -433,14 +461,13 @@ sub smpedt { # ------------------------------------------------ Groupimport/search to target } elsif ($ENV{'form.importdetail'}) { my $lastsel; - if (defined($targetselect[-1])) { $lastsel=$targetselect[-1]; } else { - $lastsel=$#order; + $lastsel=$#order+1; } &pastetarget($lastsel,split(/\&/,$ENV{'form.importdetail'})); - &startfinish(); + &storemap(&Apache::lonnet::filelocation('',$url)); # ------------------------------------------------------------------------- Cut } elsif ($ENV{'form.cut'}) { # ----------------------------------------------------------------------- Paste @@ -738,7 +765,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); }