[LON-CAPA-cvs] cvs: loncom /interface lonquickgrades.pm

www www@source.lon-capa.org
Sat, 28 May 2011 16:55:49 -0000


www		Sat May 28 16:55:49 2011 EDT

  Modified files:              
    /loncom/interface	lonquickgrades.pm 
  Log:
  Exporing category scores one level up
  
  
Index: loncom/interface/lonquickgrades.pm
diff -u loncom/interface/lonquickgrades.pm:1.94 loncom/interface/lonquickgrades.pm:1.95
--- loncom/interface/lonquickgrades.pm:1.94	Fri May 27 19:32:10 2011
+++ loncom/interface/lonquickgrades.pm	Sat May 28 16:55:49 2011
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # Quick Student Grades Display
 #
-# $Id: lonquickgrades.pm,v 1.94 2011/05/27 19:32:10 www Exp $
+# $Id: lonquickgrades.pm,v 1.95 2011/05/28 16:55:49 www Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -599,8 +599,8 @@
     my %performance=&dumpdata($navmaps);
     my $maxpos=$#order;
     for (my $i=0;$i<=$maxpos;$i++) {
-        my ($value,$weight)=&output_and_calc_category($r,$cangrade,$navmaps,$order[$i],$i,$maxpos,\%performance,1,%categories);
-        $sum+=$value*$weight;
+        my ($correct,$possible,$type,$weight)=&output_and_calc_category($r,$cangrade,$navmaps,$order[$i],$i,$maxpos,\%performance,1,%categories);
+        $sum+=$correct*$weight;
         $total+=$weight;
     }
 #
@@ -632,8 +632,7 @@
 
 sub output_and_calc_category {
     my ($r,$cangrade,$navmaps,$id,$currentpos,$maxpos,$performance,$output,%categories)=@_;
-    my $value=0;
-    my $weight=0;
+
     my $iconpath = &Apache::loncommon::lonhttpdurl($r->dir_config('lonIconsURL') . "/");
     my %lt=&Apache::lonlocal::texthash(
            'up' => 'Move Up',
@@ -766,40 +765,51 @@
         $r->print('<p>'.&mt('Calculated points: [_1]/[_2]',$totalcorrect,$totalpossible).'</p>');
         $r->print('</td>'); 
     }
-
+#
+# Prepare for export
+#
 # Weight
+    my $weight=$categories{$id.'_weight'};
+    unless (1.*$weight>0) { $weight=0; }
     if ($cangrade) {
        if ($output) { 
           $r->print('<td>'.
                   '<input type="text" size="4" name="weight_'.$id.
-                  '" value="'.&Apache::lonhtmlcommon::entity_encode($categories{$id.'_weight'}).'" /></td>');
+                  '" value="'.&Apache::lonhtmlcommon::entity_encode($weight).'" /></td>');
        }
     } else {
        if ($output) {
-          $r->print('<td>'.$categories{$id.'_weight'}.'</td>');
+          $r->print('<td>'.$weight.'</td>');
        }
     }
 # Achieved
+    my $type=$categories{$id.'_displayachieved'};
+    unless (($type eq 'percent') || ($type eq 'points')) { $type='points'; }
     if ($output) { $r->print('<td>'); }
     if ($cangrade) {
         if ($output) {
            $r->print('<select name="displayachieved_'.$id.'">'.
-                  '<option value="percent"'.($categories{$id.'_displayachieved'} eq 'percent'?' selected="selected"':'').'>'.&mt('percent').'</option>'.
-                  '<option value="points"'.($categories{$id.'_displayachieved'} eq 'points'?' selected="selected"':'').'>'.&mt('points').'</option>'.
+                  '<option value="percent"'.($type eq 'percent'?' selected="selected"':'').'>'.&mt('percent').'</option>'.
+                  '<option value="points"'.($type eq 'points'?' selected="selected"':'').'>'.&mt('points').'</option>'.
                   '</select>');
         }
-    } else {
-        if ($output) {
-            if ($categories{$id.'_displayachieved'} eq 'percent') {
-                $r->print(&mt('percent'));
-            } else {
-                $r->print(&mt('points'));
+    }
+    if ($output) {
+        $r->print('<p>');
+        if ($type eq 'percent') {
+            my $perc='---';
+            if ($totalpossible) {
+                $perc=100.*$totalcorrect/$totalpossible;
             }
+            $r->print(&mt('[_1] percent',$perc));
+        } else {
+            $r->print(&mt('[_1]/[_2] points',$totalcorrect,$totalpossible));
         }
+        $r->print('</p>');
     }
     if ($output) { $r->print('</td>'); }
 
-    return ($value,$weight);
+    return ($totalcorrect,$totalpossible,$type,$weight);
 }
 
 #