--- rat/lonratedt.pm	2002/05/11 23:23:01	1.10
+++ rat/lonratedt.pm	2002/05/13 19:38:32	1.14
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Edit Handler for RAT Maps
 #
-# $Id: lonratedt.pm,v 1.10 2002/05/11 23:23:01 www Exp $
+# $Id: lonratedt.pm,v 1.14 2002/05/13 19:38:32 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -166,6 +166,109 @@ sub buttons {
 sub smpedt {
    my ($r,$errtext)=@_;
    my $buttons=&buttons(2);
+
+# ---------------------------------------------------------- Process form input
+
+   my @importselect=();
+   my @targetselect=();
+   undef @importselect;
+   undef @targetselect;
+   if (defined($ENV{'form.import'})) {
+       if (ref($ENV{'form.import'})) {
+	   @importselect=sort($ENV->{'form.import'});
+       } else {
+           @importselect=($ENV{'form.import'});
+       }
+   }
+   if (defined($ENV{'form.target'})) {
+       if (ref($ENV{'form.target'})) {
+	   @targetselect=sort($ENV->{'form.target'});
+       } else {
+           @targetselect=($ENV{'form.target'});
+       }
+   }
+# ============================================================ Process commands
+
+   my $targetdetail=$ENV{'form.targetdetail'};
+   my $importdetail=$ENV{'form.curimpdetail'};
+
+# ---------------------------------------------------- Importing from groupsort
+   if ($ENV{'form.importdetail'}) {
+
+       $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.='&'.&Apache::lonnet::escape($name).'='.
+		 	         &Apache::lonnet::escape($url);
+	   }
+       }
+
+      $importdetail.='&'.$ENV{'form.importdetail'};
+
+       for (my $i=$lastsel+1;$i<=$#curimport;$i++) {
+           my ($name,$url)=split(/\=/,$curimport[$i]);
+           if ($url) {
+              $importdetail.='&'.&Apache::lonnet::escape($name).'='.
+		 	         &Apache::lonnet::escape($url);
+	  }
+       }
+       $importdetail=~s/\&+/\&/g;
+       $importdetail=~s/^\&//;
+
+# ------------------------------------------------------------------- Clear all
+   } elsif ($ENV{'form.clear'}) {
+       $importdetail='';
+# ------------------------------------------------------------ Discard selected
+   } elsif ($ENV{'form.discard'}) {
+       $importdetail='';
+       my @curimport=split(/\&/,$ENV{'form.curimpdetail'});
+       foreach (@importselect) {
+	   $curimport[$_]='';
+       }
+       for (my $i=0;$i<=$#curimport;$i++) {
+           my ($name,$url)=split(/\=/,$curimport[$i]);
+           if ($url) {
+              $importdetail.='&'.&Apache::lonnet::escape($name).'='.
+		 	         &Apache::lonnet::escape($url);
+	   }
+       }
+# ---------------------------
+   }
+
+# ------------------------------------------------------------ Assemble windows
+
+   my $idx=-1;
+   my $importwindow=join("\n",map {
+       $idx++;
+       if ($_) { 
+          my ($name)=split(/\=/,$_);
+          unless ($name) { $name='UNKNOWN'; }
+          '<option value="'.$idx.'">'.&Apache::lonnet::unescape($name).
+                                    '</option>';
+      }
+   } split(/\&/,$importdetail));
+
+   $idx=0;
+   my $targetwindow=join("\n",map { 
+       my ($name,$url)=split(/\:/,$resources[$_]);
+       unless ($name) { $name='UNKNOWN'; }
+       $targetdetail.='&'.&Apache::lonnet::escape($name).'='.
+	                  &Apache::lonnet::escape($url);
+       $idx++;
+       '<option value="'.$idx.'_'.$_.'">'.$name.'</option>';
+   } @order);
+
 # ----------------------------------------------------- Start simple RAT screen
    $r->print(<<ENDSMPHEAD);
 <html>
@@ -254,15 +357,47 @@ function idxcheck(mode) {
 <body bgcolor='#FFFFFF'>
 $buttons
 <font color=red>$errtext</font>
-<a href="javascript:groupsearch()">Group Search</a>
-<a href="javascript:groupimport()">Group Import</a>
-
+<form name=simpleedit method=post>
+<input type=hidden name=forcesmp value=1>
+<table>
+    <tr><th width="40%">Import</th>
+<th>&nbsp;</th>
+<th width="40%">Target</th></tr>
+<tr><td bgcolor="#FFFFCC">
+<input type=button onClick="javascript:groupsearch()" value="Group Search">
+<input type=button onClick="javascript:groupimport();" value="Group Import">
+<br>after selected
+<hr>
+<input type=submit name="discard" value="Discard Selected">
+<input type=submit name="clear" value="Clear All">
+<input type=button onClick="javascript:viewimport()" value="View">
+    </td><td>&nbsp;</td><td bgcolor="#FFFFCC">
+<input type=button onClick="javascript:viewtarget()" value="View">
+</td></tr>
+<tr><td bgcolor="#FFFFCC"><select name="import" multiple>
+$importwindow
+</select>
+</td>
+<td bgcolor="#FFFFAA" align="center">
+Cut selected<br>
+<input type=submit name=cut value='<<<'><p>
+<hr>
+Paste after selected<br>
+<input type=submit name=paste value='>>>'>
+</td>
+<td bgcolor="#FFFFCC"><select name="target" multiple>
+$targetwindow
+</select>
+</table>
+<input type=hidden name=importdetail value="">
+<input type=hidden name=curimpdetail value="$importdetail">
+<input type=hidden name=targetdetail value="$targetdetail">
+</form>
+</body></html>
 ENDSMPHEAD
-
-    $r->print(
-      '<input type=submit name=forcesmp value="Store"></form></body></html>');
 }
 
+# ----------------------------------------------------------------- No such dir
 sub nodir {
    my ($r,$dir)=@_;
    $dir=~s/^\/home\/\w+\/public\_html//;