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

albertel lon-capa-cvs@mail.lon-capa.org
Sun, 10 Nov 2002 15:44:38 -0000


albertel		Sun Nov 10 10:44:38 2002 EDT

  Modified files:              
    /loncom/homework	grades.pm 
  Log:
  - allow viewing of all students problem views
  - scoring now works in mozilla
  - restore excused status
  - when setting a problem to excused clear the solved status
  
  
  
Index: loncom/homework/grades.pm
diff -u loncom/homework/grades.pm:1.57 loncom/homework/grades.pm:1.58
--- loncom/homework/grades.pm:1.57	Thu Oct 17 10:35:34 2002
+++ loncom/homework/grades.pm	Sun Nov 10 10:44:38 2002
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # The LON-CAPA Grading handler
 #
-# $Id: grades.pm,v 1.57 2002/10/17 14:35:34 matthew Exp $
+# $Id: grades.pm,v 1.58 2002/11/10 15:44:38 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -339,8 +339,9 @@
     my $checklastsub = $ENV{'form.handgrade'} eq 'yes' ? '' : 'checked';
 
     my $gradeTable='<form action="/adm/grades" method="post" name="gradesub">'."\n".
-	'&nbsp;<b>View Problem: </b><input type="radio" name="vProb" value="no" > no '."\n".
-	'<input type="radio" name="vProb" value="yes" checked > yes <br />'."\n".
+	'&nbsp;<b>View Problem: </b><input type="radio" name="vProb" value="no" /> no '."\n".
+	'<input type="radio" name="vProb" value="yes" checked /> one student '."\n".
+	'<input type="radio" name="vProb" value="all" /> all students <br />'."\n".
 	'&nbsp;<b>Submissions: </b>'."\n";
     if ($ENV{'form.handgrade'} eq 'yes') {
 	$gradeTable.='<input type="radio" name="lastSub" value="hdgrade" '.$checkhdgrade.' /> handgrade only'."\n";
@@ -795,6 +796,32 @@
 }
 
 
+sub show_problem {
+    my ($request,$symb,$uname,$udom,$removeform) = @_;
+    my $rendered=&Apache::loncommon::get_student_view($symb,$uname,$udom,
+						      $ENV{'request.course.id'});
+    if ($removeform) {
+	$rendered=~s|<form(.*?)>||g;
+	$rendered=~s|</form>||g;
+	$rendered=~s|name="submit"|name="would_have_been_submit"|g;
+    }
+    my $companswer=&Apache::loncommon::get_student_answers($symb,$uname,$udom,
+							   $ENV{'request.course.id'});
+    if ($removeform) {
+	$companswer=~s|<form(.*?)>||g;
+	$companswer=~s|</form>||g;
+	$rendered=~s|name="submit"|name="would_have_been_submit"|g;
+    }
+    my $result.='<table border="0" width="100%"><tr><td bgcolor="#777777">';
+    $result.='<table border="0" width="100%"><tr><td bgcolor="#e6ffff">';
+    $result.='<b> View of the problem - '.$ENV{'form.fullname'}.
+	'</b></td></tr><tr><td bgcolor="#ffffff">'.$rendered.'<br />';
+    $result.='<b>Correct answer:</b><br />'.$companswer;
+    $result.='</td></tr></table>';
+    $result.='</td></tr></table><br />';
+    $request->print($result);
+}
+
 # --------------------------- show submissions of a student, option to grade 
 sub submission {
     my ($request,$counter,$total) = @_;
@@ -809,7 +836,7 @@
     my $symb=($ENV{'form.symb'} ne '' ? $ENV{'form.symb'} : (&Apache::lonnet::symbread($url)));
     if ($symb eq '') { $request->print("Unable to handle ambiguous references:$url:."); return ''; }
     my $last = ($ENV{'form.lastSub'} eq 'last' ? 'last' : '');
-    $ENV{'form.vProb'} = $ENV{'form.vProb'} ne '' ? $ENV{'form.vProb'} : 'yes';
+#    $ENV{'form.vProb'} = $ENV{'form.vProb'} ne '' ? $ENV{'form.vProb'} : 'yes';
 
     # header info
     if ($counter == 0) {
@@ -820,18 +847,7 @@
 	# option to display problem, only once else it cause problems 
         # with the form later since the problem has a form.
 	if ($ENV{'form.vProb'} eq 'yes') {
-	    my $rendered=&Apache::loncommon::get_student_view($symb,$uname,$udom,
-							      $ENV{'request.course.id'});
-	    my $companswer=&Apache::loncommon::get_student_answers($symb,$uname,$udom,
-								   $ENV{'request.course.id'});
-	    my $result.='<table border="0" width="100%"><tr><td bgcolor="#777777">';
-	    $result.='<table border="0" width="100%"><tr><td bgcolor="#e6ffff">';
-	    $result.='<b> View of the problem - '.$ENV{'form.fullname'}.
-		'</b></td></tr><tr><td bgcolor="#ffffff">'.$rendered.'<br />';
-	    $result.='<b>Correct answer:</b><br />'.$companswer;
-	    $result.='</td></tr></table>';
-	    $result.='</td></tr></table><br />';
-	    $request->print($result);
+	    &show_problem($request,$symb,$uname,$udom,0);
 	}
 	
 	# kwclr is the only variable that is guaranteed to be non blank 
@@ -894,6 +910,11 @@
         }
     }
 
+    if ($ENV{'form.vProb'} eq 'all') {
+	$request->print('<br /><br /><br />');
+	&show_problem($request,$symb,$uname,$udom,1);
+    }
+
     my %record = &Apache::lonnet::restore($symb,$ENV{'request.course.id'},$udom,$uname);
     my ($partlist,$handgrade) = &response_type($url);
 
@@ -1088,9 +1109,15 @@
 	    'onChange="javascript:clearRadBox(this.form.RADVAL'.$counter.'_'.$partid.
 	    ',this.form.GD_BOX'.$counter.'_'.$partid.
 	    ',this.form.GD_SEL'.$counter.'_'.$partid.
-	    ',this.form.stores'.$counter.'_'.$partid.')" />'."\n".
-	    '<option selected="on"> </option>'.
-	    '<option>excused</option></select>'."&nbsp&nbsp\n";
+	    ',this.form.stores'.$counter.'_'.$partid.')" >'."\n";
+	if ($record{'resource.'.$partid.'.solved'} eq 'excused') {
+	    $result.='<option> </option>'.
+		'<option selected="on">excused</option></select>';
+	} else {
+	    $result.='<option selected="on"> </option>'.
+		'<option>excused</option></select>';
+	}
+	$result.="&nbsp&nbsp\n";
 	$result.='<input type="hidden" name="stores'.$counter.'_'.$partid.'" value="0" />';
 	$result.='</td></tr></table>'."\n";
 	$request->print($result);
@@ -1349,8 +1376,12 @@
     my %newrecord;
     foreach (split(/:/,$ENV{'form.partlist'.$newflg})) {
 	if ($ENV{'form.GD_SEL'.$newflg.'_'.$_} eq 'excused') {
-	    $newrecord{'resource.'.$_.'.solved'} = 'excused' 
-		if ($record{'resource.'.$_.'.solved'} ne 'excused');
+	    if ($record{'resource.'.$_.'.solved'} ne 'excused') {
+		$newrecord{'resource.'.$_.'.solved'} = 'excused';
+		if (exists($record{'resource.'.$_.'.awarded'})) {
+		    $newrecord{'resource.'.$_.'.awarded'} = '';
+		}
+	    }
 	} else {
 	    my $pts = ($ENV{'form.GD_BOX'.$newflg.'_'.$_} ne '' ? 
 		       $ENV{'form.GD_BOX'.$newflg.'_'.$_} :