[LON-CAPA-cvs] cvs: rat / lonratedt.pm
www
lon-capa-cvs@mail.lon-capa.org
Sat, 11 May 2002 23:23:01 -0000
www Sat May 11 19:23:01 2002 EDT
Modified files:
/rat lonratedt.pm
Log:
Sorts map and looks for unconnected resources
Index: rat/lonratedt.pm
diff -u rat/lonratedt.pm:1.9 rat/lonratedt.pm:1.10
--- rat/lonratedt.pm:1.9 Fri May 10 15:46:52 2002
+++ rat/lonratedt.pm Sat May 11 19:23:01 2002
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Edit Handler for RAT Maps
#
-# $Id: lonratedt.pm,v 1.9 2002/05/10 19:46:52 www Exp $
+# $Id: lonratedt.pm,v 1.10 2002/05/11 23:23:01 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -37,17 +37,21 @@
use Apache::lonnet;
use Apache::lonratsrv;
-my @links=();
+my @order=();
my @resources=();
# Mapread read maps into global arrays @links and @resources, determines status
-
+# sets @order - pointer to resources in right order
+# sets @resources - array with the resources with correct idx
+#
sub mapread {
my $fn=shift;
+ my @links;
undef @links;
undef @resources;
+ undef @order;
my ($outtext,$errtext)=&Apache::lonratsrv::loadmap($fn,'');
if ($errtext) { return ($errtext,2); }
@@ -73,17 +77,52 @@
my ($start,$end,$cond)=split(/\:/,$_);
if ((defined($starters[$start])) || (defined($endings[$end]))) {
return
- ('Map too complex, has branchings. Use advanced editor.',1);
+ ('Map has branchings. Use advanced editor.',1);
}
$starters[$start]=1;
$endings[$end]=1;
if ($cond) {
return
- ('Map too complex, has conditions. Use advanced editor.',1);
+ ('Map has conditions. Use advanced editor.',1);
}
}
}
+ for (my $i=0; $i<=$#resources; $i++) {
+ if (defined($resources[$i])) {
+ unless (($starters[$i]) || ($endings[$i])) {
+ return
+ ('Map has unconnected resources. Use advanced editor.',1);
+ }
+ }
+ }
+
+# -------------------------------------------------- This is a linear map, sort
+
+ my $startidx=0;
+ my $endidx=0;
+ for (my $i=0; $i<=$#resources; $i++) {
+ if (defined($resources[$i])) {
+ my ($title,$url,$ext,$type)=split(/\:/,$resources[$i]);
+ if ($type eq 'start') { $startidx=$i; }
+ if ($type eq 'finish') { $endidx=$i; }
+ }
+ }
+ my $k=0;
+ my $currentidx=$startidx;
+ $order[$k]=$currentidx;
+ for (my $i=0; $i<=$#resources; $i++) {
+ foreach (@links) {
+ my ($start,$end)=split(/\:/,$_);
+ if ($start==$currentidx) {
+ $currentidx=$end;
+ $k++;
+ $order[$k]=$currentidx;
+ last;
+ }
+ }
+ if ($currentidx==$endidx) { last; }
+ }
return $errtext;
}
@@ -239,8 +278,11 @@
# ---------------------------------------------------------------- View Handler
sub viewmap {
- my ($r,$adv)=@_;
+ my ($r,$adv,$errtext)=@_;
$r->print('<html><body bgcolor="#FFFFFF">'.&buttons($adv));
+ if ($errtext) {
+ $r->print($errtext.'<hr>');
+ }
foreach (@resources) {
if (defined($_)) {
my ($title,$url)=split(/\:/,$_);
@@ -303,7 +345,7 @@
} elsif ($ENV{'form.forcesmp'}) {
&smpedt($r,$errtext);
} else {
- &viewmap($r,$adv);
+ &viewmap($r,$adv,$errtext);
}
return OK;
}