[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;
}