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

www lon-capa-cvs@mail.lon-capa.org
Fri, 10 May 2002 18:58:04 -0000


www		Fri May 10 14:58:04 2002 EDT

  Modified files:              
    /rat	lonratedt.pm 
  Log:
  Puts up editing buttons.
  
  
Index: rat/lonratedt.pm
diff -u rat/lonratedt.pm:1.7 rat/lonratedt.pm:1.8
--- rat/lonratedt.pm:1.7	Fri May 10 11:42:16 2002
+++ rat/lonratedt.pm	Fri May 10 14:58:04 2002
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Edit Handler for RAT Maps
 #
-# $Id: lonratedt.pm,v 1.7 2002/05/10 15:42:16 www Exp $
+# $Id: lonratedt.pm,v 1.8 2002/05/10 18:58:04 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -37,6 +37,42 @@
 use Apache::lonnet;
 use Apache::lonratsrv;
 
+my @links=();
+my @resources=();
+
+
+# Mapread read maps into global arrays @links and @resources, determines status
+
+sub mapread {
+    my $fn=shift;
+
+    undef @links;
+    undef @resources;
+
+    my ($outtext,$errtext)=&Apache::lonratsrv::loadmap($fn,'');
+    if ($errtext) { return ($errtext,2); }
+
+    foreach (split(/\<\&\>/,$outtext)) {
+	my ($command,$parms)=split(/\<\:\>/,$_);
+        my @item=split(/\:/,$parms);
+        if ($command eq 'objcont') {
+        }
+        if ($command eq 'objlinks') {
+	    if (defined($links[$item[0]])) {
+		return
+                 ('Map too complex, has branchings. Use advanced editor.',1);
+            }
+	    if ($links[$item[2]]) {
+		return
+                 ('Map too complex, has conditions. Use advanced editor.',1);
+            }
+	    $links[$item[0]]=$item[1];
+	}
+
+    }
+    return $errtext;
+}
+
 # --------------------------------------------------------- Build up RAT screen
 sub ratedt {
   my ($r,$url)=@_;
@@ -58,11 +94,26 @@
 ENDDOCUMENT
 }
 
+# ---------------------------------------------------------------- Make buttons
+
+sub buttons {
+    my $adv=shift;
+    my $output='<form method=post>';     
+    if ($adv==1) {
+	$output.='<input type=submit name=forceadv value="Edit">';
+    } else {
+        unless ($adv==2) {
+           $output.='<input type=submit name=forcesmp value="Simple Edit">';
+        }
+	$output.='<input type=submit name=forceadv value="Advanced Edit">';
+    }
+    return $output.'</form><hr>';
+}
+
 sub smpedt {
-   my ($r,$fn)=@_;
-   my $errtext='';
-   my ($outtext,$errtext)=&Apache::lonratsrv::loadmap($fn,$errtext);
-   my @loadelements=split(/\<\&\>/,$outtext);
+   my ($r,$errtext)=@_;
+   my $buttons=&buttons(2);
+# ----------------------------------------------------- Start simple RAT screen
    $r->print(<<ENDSMPHEAD);
 <html>
 <head>
@@ -148,17 +199,13 @@
 </script>
 </head>                 
 <body bgcolor='#FFFFFF'>
-<form method=post>
-<input type=submit name=forceadv 
-value="Advanced Map Editing - Graphical Resource Assembly Tool"><hr>
+$buttons
 <font color=red>$errtext</font>
 <a href="javascript:groupsearch()">Group Search</a>
 <a href="javascript:groupimport()">Group Import</a>
 
 ENDSMPHEAD
-    $r->print('<pre>');
-   foreach (@loadelements) { $r->print($_."\n") }
-			     $r->print('</pre>');
+
     $r->print(
       '<input type=submit name=forcesmp value="Store"></form></body></html>');
 }
@@ -175,6 +222,15 @@
 ENDNODIR
 }
 
+# ---------------------------------------------------------------- View Handler
+
+sub viewmap {
+    my ($r,$adv)=@_;
+    $r->print('<html><body bgcolor="#FFFFFF">'.&buttons($adv));
+
+    $r->print('</body></html>');
+}
+
 # ================================================================ Main Handler
 
 sub handler {
@@ -192,6 +248,8 @@
       &nodir($r,$dir);
       return OK;
   }
+
+# ------------------------------------------- Determine which tools can be used
   my $adv=0;
 
   unless ($ENV{'form.forcesmp'}) {
@@ -203,10 +261,22 @@
      }
   }
 
-  if ($adv) {
+  my $errtext='';
+  my $fatal=0;
+
+# -------------------------------------------------------------------- Load map
+  ($errtext,$fatal)=&mapread($fn,$errtext);
+
+  if ($fatal==1) { $adv=1; }
+
+# ----------------------------------- adv==1 now means "graphical MUST be used"
+
+  if ($ENV{'form.forceadv'}) {
       &ratedt($r,$url);
+  } elsif ($ENV{'form.forcesmp'}) {
+      &smpedt($r,$errtext);
   } else {
-      &smpedt($r,$fn);
+      &viewmap($r,$adv);
   }
   return OK;
 }