[LON-CAPA-cvs] cvs: loncom /homework grades.pm

bowersj2 lon-capa-cvs@mail.lon-capa.org
Wed, 16 Jul 2003 19:28:08 -0000


bowersj2		Wed Jul 16 15:28:08 2003 EDT

  Modified files:              
    /loncom/homework	grades.pm 
  Log:
  Replace 38 ugly lines with 9 less ugly ones.
  
  
Index: loncom/homework/grades.pm
diff -u loncom/homework/grades.pm:1.116 loncom/homework/grades.pm:1.117
--- loncom/homework/grades.pm:1.116	Tue Jul 15 16:59:53 2003
+++ loncom/homework/grades.pm	Wed Jul 16 15:28:08 2003
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # The LON-CAPA Grading handler
 #
-# $Id: grades.pm,v 1.116 2003/07/15 20:59:53 ng Exp $
+# $Id: grades.pm,v 1.117 2003/07/16 19:28:08 bowersj2 Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -2669,51 +2669,22 @@
 sub getSymbMap {
     my ($request) = @_;
     my $navmap = Apache::lonnavmaps::navmap-> new($ENV{'request.course.fn'}.'.db',
-						  $ENV{'request.course.fn'}.'_parms.db',1, 1);
+						  $ENV{'request.course.fn'}.'_parms.db');
     $navmap->init();
 
-    # End navmap using boilerplate
-
-    my $iterator = Apache::lonnavmaps::iterator->new($navmap, undef, undef, undef, undef, 1, undef, 1);
-    my $depth = 1;
-    my $curRes = $iterator->next();
-
     my %symbx = ();
     my @titles = ();
-    my $minder=0;
-    my $seenBeginMap = 0;
-    while ($depth > 0 || !$seenBeginMap) {
-        if ($curRes == $iterator->BEGIN_MAP()) {$depth++; $seenBeginMap = 1; }
-        if ($curRes == $iterator->END_MAP()) { $depth--; }
-
-        if (ref($curRes) && $curRes->is_map()) {
-	    my ($mapUrl, $id, $resUrl) = split(/___/, $curRes->symb()); # check map contains at least one problem
-	    my $map = $navmap->getResourceByUrl($resUrl); # add to navmaps
-
-	    my $mapiterator = $navmap->getIterator($map->map_start(),
-						   $map->map_finish());
-
-	    my $mapdepth = 1;
-	    my $countProblems = 0;
-	    $mapiterator->next(); # skip the first BEGIN_MAP
-	    my $mapcurRes = $mapiterator->next(); # for "current resource"
-	    while ($mapdepth > 0) {
-		if($mapcurRes == $mapiterator->BEGIN_MAP) { $mapdepth++; }
-		if($mapcurRes == $mapiterator->END_MAP) { $mapdepth--; }
-
-		if (ref($mapcurRes) && $mapcurRes->is_problem() && !$mapcurRes->randomout) {
-		    $countProblems++;
-		}
-		$mapcurRes = $mapiterator->next();
-	    }
-	    if ($countProblems > 0) {
-		my $title = $curRes->compTitle();
-		push @titles,$minder.'.'.$title; # minder, just in case two titles are identical
-		$symbx{$minder.'.'.$title} = $curRes->symb();
-		$minder++;
-	    }
-       }
-        $curRes = $iterator->next();
+    my $minder = 0;
+
+    # Gather every sequence that has problems.
+    my @sequences = $navmap->retrieveResources(undef, sub { shift->is_map(); }, 1);
+    for my $sequence ($navmap->getById('0.0'), @sequences) {
+	if ($navmap->hasResource($sequence, sub { shift->is_problem(); }, 0) ) {
+	    my $title = $minder.'.'.$sequence->compTitle();
+	    push @titles, $title; # minder in case two titles are identical
+	    $symbx{$title} = $sequence->symb();
+	    $minder++;
+	}
     }
 
     $navmap->untieHashes();