' + .&mt('You are working with an unsaved version of your map.') + .'
'; + my ($errtext,$fatal)=&LONCAPA::map::mapread($tmpfn,''); } + $errtext = ''.$errtext.'
' if ($errtext); # ---------------------------------------------------------- Process form input - my @importselect=(); - my @targetselect=(); - undef @importselect; - undef @targetselect; - if (defined($ENV{'form.importsel'})) { - if (ref($ENV{'form.importsel'})) { - @importselect=sort(@{$ENV{'form.importsel'}}); - } else { - @importselect=($ENV{'form.importsel'}); - } - } - if (defined($ENV{'form.target'})) { - if (ref($ENV{'form.target'})) { - @targetselect=sort(@{$ENV{'form.target'}}); - } else { - @targetselect=($ENV{'form.target'}); - } - } + my @importselect=&Apache::loncommon::get_env_multiple('form.importsel'); + my @targetselect=&Apache::loncommon::get_env_multiple('form.target'); # ============================================================ Process commands - my $targetdetail=$ENV{'form.targetdetail'}; - my $importdetail=$ENV{'form.curimpdetail'}; + my $targetdetail=$env{'form.targetdetail'}; + my $importdetail=$env{'form.curimpdetail'}; # ---------------------------------------------------- Importing from groupsort - if (($ENV{'form.importdetail'}) && (!$ENV{'form.impfortarget'})) { + if (($env{'form.importdetail'}) && (!$env{'form.impfortarget'})) { $importdetail=''; - my @curimport=split(/\&/,$ENV{'form.curimpdetail'}); + my @curimport=split(/\&/,$env{'form.curimpdetail'}); my $lastsel; @@ -769,7 +341,7 @@ sub smpedt { } } - $importdetail.='&'.$ENV{'form.importdetail'}; + $importdetail.='&'.$env{'form.importdetail'}; for (my $i=$lastsel+1;$i<=$#curimport;$i++) { my ($name,$url)=split(/\=/,$curimport[$i]); @@ -781,12 +353,12 @@ sub smpedt { $importdetail=~s/^\&//; # ------------------------------------------------------------------- Clear all - } elsif ($ENV{'form.clear'}) { + } elsif ($env{'form.clear'}) { $importdetail=''; # ------------------------------------------------------------ Discard selected - } elsif ($ENV{'form.discard'}) { + } elsif ($env{'form.discard'}) { $importdetail=''; - my @curimport=split(/\&/,$ENV{'form.curimpdetail'}); + my @curimport=split(/\&/,$env{'form.curimpdetail'}); foreach (@importselect) { $curimport[$_]=''; } @@ -797,9 +369,9 @@ sub smpedt { } } # --------------------------------------------------------- Loading another map - } elsif ($ENV{'form.loadmap'}) { + } elsif ($env{'form.loadmap'}) { $importdetail=''; - my @curimport=split(/\&/,$ENV{'form.curimpdetail'}); + my @curimport=split(/\&/,$env{'form.curimpdetail'}); my $lastsel; @@ -817,11 +389,11 @@ sub smpedt { } foreach ( - &Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$ENV{'form.importmap'}))) { + &Apache::lonsequence::attemptread(&Apache::lonnet::filelocation('',$env{'form.importmap'}))) { my ($name,$url)=split(/\:/,$_); if ($url) { - $importdetail.='&'.&Apache::lonnet::escape($name).'='. - &Apache::lonnet::escape($url); + $importdetail.='&'.&escape($name).'='. + &escape($url); } } @@ -835,19 +407,19 @@ sub smpedt { $importdetail=~s/^\&//; # ------------------------------------------------ Groupimport/search to target - } elsif ($ENV{'form.importdetail'}) { + } elsif ($env{'form.importdetail'}) { my $lastsel; if (defined($targetselect[-1])) { $lastsel=$targetselect[-1]; } else { - $lastsel=$#order+1; + $lastsel=$#LONCAPA::map::order+1; } - &pastetarget($lastsel,split(/\&/,$ENV{'form.importdetail'})); - &storemap(&Apache::lonnet::filelocation('',$url)); + &LONCAPA::map::pastetarget($lastsel,split(/\&/,$env{'form.importdetail'})); + &LONCAPA::map::storemap(&Apache::lonnet::filelocation('',$url)); # ------------------------------------------------------------------------- Cut - } elsif (($ENV{'form.cut'}) || ($ENV{'form.copy'})) { + } elsif (($env{'form.cut'}) || ($env{'form.copy'})) { $importdetail=''; - my @curimport=split(/\&/,$ENV{'form.curimpdetail'}); + my @curimport=split(/\&/,$env{'form.curimpdetail'}); my $lastsel; @@ -865,10 +437,10 @@ sub smpedt { } foreach (@targetselect) { - my ($name,$url)=split(/\:/,$resources[$order[$_-1]]); + my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$LONCAPA::map::order[$_-1]]); if ($url) { - $importdetail.='&'.&Apache::lonnet::escape($name).'='. - &Apache::lonnet::escape($url); + $importdetail.='&'.&escape($name).'='. + &escape($url); } } @@ -881,62 +453,66 @@ sub smpedt { $importdetail=~s/\&+/\&/g; $importdetail=~s/^\&//; - if ($ENV{'form.cut'}) { + if ($env{'form.cut'}) { my @neworder=(); - for (my $i=0;$i<=$#order;$i++) { + for (my $i=0;$i<=$#LONCAPA::map::order;$i++) { my $include=1; foreach (@targetselect) { if ($_-1==$i) { $include=0; } } - if ($include) { $neworder[$#neworder+1]=$order[$i]; } + if ($include) { + $neworder[$#neworder+1]=$LONCAPA::map::order[$i]; + } else { + &LONCAPA::map::makezombie($LONCAPA::map::order[$i]); + } } - @order=@neworder; - &storemap(&Apache::lonnet::filelocation('',$url)); + @LONCAPA::map::order=@neworder; + &LONCAPA::map::storemap(&Apache::lonnet::filelocation('',$url)); } # ----------------------------------------------------------------------- Paste - } elsif ($ENV{'form.paste'}) { + } elsif ($env{'form.paste'}) { my $lastsel; if (defined($targetselect[-1])) { $lastsel=$targetselect[-1]; } else { - $lastsel=$#order+1; + $lastsel=$#LONCAPA::map::order+1; } my @newsequence; - my @curimport=split(/\&/,$ENV{'form.curimpdetail'}); + my @curimport=split(/\&/,$env{'form.curimpdetail'}); foreach (@importselect) { $newsequence[$#newsequence+1]=$curimport[$_]; } - &pastetarget($lastsel,@newsequence); - &storemap(&Apache::lonnet::filelocation('',$url)); + &LONCAPA::map::pastetarget($lastsel,@newsequence); + &LONCAPA::map::storemap(&Apache::lonnet::filelocation('',$url)); # -------------------------------------------------------------------- Move up - } elsif ($ENV{'form.moveup'}) { + } elsif ($env{'form.moveup'}) { foreach (sort @targetselect) { if ($_-1>0) { - my $movethis=$order[$_-1]; - $order[$_-1]=$order[$_-2]; - $order[$_-2]=$movethis; + my $movethis=$LONCAPA::map::order[$_-1]; + $LONCAPA::map::order[$_-1]=$LONCAPA::map::order[$_-2]; + $LONCAPA::map::order[$_-2]=$movethis; } } - &storemap(&Apache::lonnet::filelocation('',$url)); + &LONCAPA::map::storemap(&Apache::lonnet::filelocation('',$url)); # ------------------------------------------------------------------ Move down - } elsif ($ENV{'form.movedown'}) { + } elsif ($env{'form.movedown'}) { foreach (reverse sort @targetselect) { - if ($_-1<$#order) { - my $movethis=$order[$_-1]; - $order[$_-1]=$order[$_]; - $order[$_]=$movethis; + if ($_-1<$#LONCAPA::map::order) { + my $movethis=$LONCAPA::map::order[$_-1]; + $LONCAPA::map::order[$_-1]=$LONCAPA::map::order[$_]; + $LONCAPA::map::order[$_]=$movethis; } } - &storemap(&Apache::lonnet::filelocation('',$url)); + &LONCAPA::map::storemap(&Apache::lonnet::filelocation('',$url)); # --------------------------------------------------------------------- Rename - } elsif ($ENV{'form.renameres'}) { - my $residx=$Apache::lonratedt::order[$ENV{'form.renameidx'}-1]; - my ($name,@resrest)=split(/\:/,$Apache::lonratedt::resources[$residx]); - $name=$ENV{'form.renametitle'}; + } elsif ($env{'form.renameres'}) { + my $residx=$LONCAPA::map::order[$env{'form.renameidx'}-1]; + my ($name,@resrest)=split(/\:/,$LONCAPA::map::resources[$residx]); + $name=$env{'form.renametitle'}; $name=~s/\:/\&colon\;/g; - $Apache::lonratedt::resources[$residx]=$name.':'.join(':',@resrest); - &storemap(&Apache::lonnet::filelocation('',$url)); + $LONCAPA::map::resources[$residx]=$name.':'.join(':',@resrest); + &LONCAPA::map::storemap(&Apache::lonnet::filelocation('',$url)); } # ------------------------------------------------------------ Assemble windows @@ -951,7 +527,7 @@ sub smpedt { my ($name,$url)=split(/\=/,$_); unless ($name) { $name=(split(/\//,$url))[-1]; } unless ($name) { $name='EMPTY'; } - ''; } } split(/\&/,$importdetail)); @@ -961,27 +537,28 @@ sub smpedt { my $targetwindow= ''. join("\n",map { - my ($name,$url)=split(/\:/,$resources[$_]); + my ($name,$url)=split(/\:/,$LONCAPA::map::resources[$_]); unless ($name) { $name=(split(/\//,$url))[-1]; } unless ($name) { $name='EMPTY'; } - $targetdetail.='&'.&Apache::lonnet::escape($name).'='. - &Apache::lonnet::escape($url); + $name = &LONCAPA::map::qtescape($name); + $url = &LONCAPA::map::qtescape($url); + $targetdetail.='&'.&escape($name).'='. + &escape($url); $idx++; - $name=~s/\:/\:/g; + $name = &HTML::Entities::encode($name,'\'"<>&'); ''; - } @order); + } @LONCAPA::map::order); # ----------------------------------------------------- Start simple RAT screen my $editscript=&editscript('simple'); - my $bodytag=&Apache::loncommon::bodytag(undef,undef,undef,1). - &Apache::loncommon::help_open_topic('Sequence_Simple_Editor_Creation'). - &Apache::loncommon::help_open_faq(6). - &Apache::loncommon::help_open_bug('RAT'); + my %lt=&Apache::lonlocal::texthash( + 'sm' => 'Select Map', 'sa' => 'Save', 'nt' => 'New Title', 'se' => 'Search', 'im' => 'Import', + 'wl' => 'Import from Stored Links', 'vi' => 'View', 'lm' => 'Load Map', 'ds' => 'Discard Selected', @@ -996,19 +573,14 @@ sub smpedt { 'cs' => 'Cut selected', 'ps' => 'Copy selected', 'pas' => 'Paste after selected', + 'reco' => 'Recover Deleted' ); - $r->print(<