[LON-CAPA-cvs] cvs: rat / lonratedt.pm

www lon-capa-cvs@mail.lon-capa.org
Wed, 15 May 2002 19:50:37 -0000


www		Wed May 15 15:50:37 2002 EDT

  Modified files:              
    /rat	lonratedt.pm 
  Log:
  Loads map into import window now
  
  
Index: rat/lonratedt.pm
diff -u rat/lonratedt.pm:1.16 rat/lonratedt.pm:1.17
--- rat/lonratedt.pm:1.16	Tue May 14 11:19:13 2002
+++ rat/lonratedt.pm	Wed May 15 15:50:37 2002
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Edit Handler for RAT Maps
 #
-# $Id: lonratedt.pm,v 1.16 2002/05/14 15:19:13 www Exp $
+# $Id: lonratedt.pm,v 1.17 2002/05/15 19:50:37 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -152,21 +152,90 @@
 
 # --------------------------------------------------------------- Sort, sort of
 
-    my $startidx=0;
-    my $endidx=0;
-    for (my $i=0; $i<=$#theseres; $i++) {
-        if (defined($theseres[$i])) {
-            my ($title,$url,$ext,$type)=split(/\:/,$theseres[$i]);
-	    if ($type eq 'start') { $startidx=$i; }
-            if ($type eq 'finish') { $endidx=$i; }
-        }
-    }
+    my @objsort=();
+    undef @objsort;
 
+    my @data1=();
+    my @data2=();
+    undef @data1;
+    undef @data2;
+
+    my $k;
+    my $kj;
+    my $j;
+    my $ij;
+
+   for ($k=1;$k<=$#theseres;$k++) {
+      if (defined($theseres[$k])) {
+         $objsort[$#objsort+1]=$k;
+      }
+   }
 
-    return @theseres;
+   for ($k=1;$k<=$#links;$k++) {
+     if (defined($links[$k])) {
+      @data1=split(/\:/,$links[$k]);
+      $kj=-1;
+      for (my $j=0;$j<=$#objsort;$j++) {
+         if ((split(/\:/,$objsort[$j]))[0]==$data1[0]) {
+            $kj=$j;
+         }
+      }
+      if ($kj!=-1) { $objsort[$kj].=':'.$data1[1]; }
+     }
+   }
+    for ($k=0;$k<=$#objsort;$k++) {
+      for ($j=0;$j<=$#objsort;$j++) {
+        if ($k!=$j) {
+          @data1=split(/\:/,$objsort[$k]);
+          @data2=split(/\:/,$objsort[$j]);
+          my $dol=$#data1+1;
+          my $dtl=$#data2+1;
+          if ($dol+$dtl<1000) {
+           for ($kj=1;$kj<$dol;$kj++) {
+             if ($data1[$kj]==$data2[0]) {
+                for ($ij=1;$ij<$dtl;$ij++) {
+                   $data1[$#data1+1]=$data2[$ij];
+                }
+             }
+           }
+           for ($kj=1;$kj<$dtl;$kj++) {
+             if ($data2[$kj]==$data1[0]) {
+                 for ($ij=1;$ij<$dol;$ij++) {
+                    $data2[$#data2+1]=$data1[$ij];
+                 }
+             }
+           }
+           $objsort[$k]=join(':',@data1);
+           $objsort[$j]=join(':',@data2);
+          }
+         }
+      } 
+  }
+# ---------------------------------------------------------------- Now sort out
 
-}
+    @objsort=sort {
+      my @data1=split(/\:/,$a);
+      my @data2=split(/\:/,$b);
+      my $rvalue=0;
+      my $k;
+      for ($k=1;$k<=$#data1;$k++) {
+         if ($data1[$k]==$data2[0]) { $rvalue--; }
+      }
+      for ($k=1;$k<=$#data2;$k++) {
+         if ($data2[$k]==$data1[0]) { $rvalue++; }
+      }
+      if ($rvalue==0) { $rvalue=$#data2-$#data1; }
+      $rvalue;
+    } @objsort;
+
+    my @outres=();
+    undef @outres;
 
+    for ($k=0;$k<=$#objsort;$k++) {
+	$outres[$k]=$theseres[(split(/\:/,$objsort[$k]))[0]];
+    }
+    return @outres;
+}
 
 # --------------------------------------------------------- Build up RAT screen
 sub ratedt {
@@ -285,7 +354,47 @@
 		 	         &Apache::lonnet::escape($url);
 	   }
        }
-# ---------------------------
+# --------------------------------------------------------- Loading another map
+   } elsif ($ENV{'form.loadmap'}) {
+       $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);
+	   }
+       }
+
+       foreach (
+    &attemptread(&Apache::lonnet::filelocation('',$ENV{'form.importmap'}))) {
+	   my ($name,$url)=split(/\:/,$_);
+           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.='&'.&Apache::lonnet::escape($name).'='.
+		 	         &Apache::lonnet::escape($url);
+	  }
+       }
+       $importdetail=~s/\&+/\&/g;
+       $importdetail=~s/^\&//;
+
+# ------------------------------------
    }
 
 # ------------------------------------------------------------ Assemble windows
@@ -494,12 +603,12 @@
 # ---------------------------------------------------------------- View Handler
 
 sub viewmap {
-    my ($r,$adv,$errtext)=@_;
+    my ($r,$url,$adv,$errtext)=@_;
     $r->print('<html><body bgcolor="#FFFFFF">'.&buttons($adv));
     if ($errtext) {
 	$r->print($errtext.'<hr>');
     }
-    foreach (@resources) {
+    foreach (&attemptread(&Apache::lonnet::filelocation('',$url))) {
 	if (defined($_)) {
 	    my ($title,$url)=split(/\:/,$_);
             $title=~s/\&colon\;/\:/g;
@@ -562,7 +671,7 @@
   } elsif ($ENV{'form.forcesmp'}) {
       &smpedt($r,$errtext);
   } else {
-      &viewmap($r,$adv,$errtext);
+      &viewmap($r,$url,$adv,$errtext);
   }
   return OK;
 }