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

albertel lon-capa-cvs@mail.lon-capa.org
Fri, 20 Sep 2002 23:35:30 -0000


This is a MIME encoded message

--albertel1032564930
Content-Type: text/plain

albertel		Fri Sep 20 19:35:30 2002 EDT

  Modified files:              
    /loncom/homework	grades.pm 
  Log:
  - handles noexistant classlists well now.
  
  - It says View/Grade when one can View/Grade and View when one can only view (BUG#735)
  
  
--albertel1032564930
Content-Type: text/plain
Content-Disposition: attachment; filename="albertel-20020920193530.txt"

Index: loncom/homework/grades.pm
diff -u loncom/homework/grades.pm:1.48 loncom/homework/grades.pm:1.49
--- loncom/homework/grades.pm:1.48	Fri Sep  6 16:59:28 2002
+++ loncom/homework/grades.pm	Fri Sep 20 19:35:30 2002
@@ -1,7 +1,7 @@
 # The LearningOnline Network with CAPA
 # The LON-CAPA Grading handler
 #
-# $Id: grades.pm,v 1.48 2002/09/06 20:59:28 albertel Exp $
+# $Id: grades.pm,v 1.49 2002/09/20 23:35:30 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -111,6 +111,10 @@
     my %classlist=&Apache::lonnet::dump('classlist',
 					$ENV{'course.'.$ENV{'request.course.id'}.'.domain'},
 					$ENV{'course.'.$ENV{'request.course.id'}.'.num'});
+    my ($tmp) = keys(%classlist);
+    # Bail out if we were unable to get the classlist
+    return if ($tmp =~ /^(con_lost|error|no_such_host)/i);
+
     # codes to check for fields in the classlist
     # should contain end:start:id:section:fullname
     for (keys %classlist) {
@@ -297,6 +301,37 @@
 #    on the problem page.
 sub listStudents {
     my ($request) = shift;
+
+    my ($symb,$url) = &get_symb_and_url();
+    my $cdom      = $ENV{"course.$ENV{'request.course.id'}.domain"};
+    my $cnum      = $ENV{"course.$ENV{'request.course.id'}.num"};
+    my $getsec    = $ENV{'form.section'} eq '' ? 'all' : $ENV{'form.section'};
+    my $submitonly= $ENV{'form.submitonly'} eq '' ? 'all' : $ENV{'form.submitonly'};
+
+    my $result;
+    my ($partlist,$handgrade) = &response_type($url);
+    for (sort keys(%$handgrade)) {
+	my ($responsetype,$handgrade)=split(/:/,$$handgrade{$_});
+	$ENV{'form.handgrade'} = 'yes' if ($handgrade eq 'yes');
+	$result.='<tr><td><b>Part </b>'.(split(/_/))[0].'</td>'.
+	    '<td><b>Type: </b>'.$responsetype.'</td>'.
+	    '<td><b>Handgrade: </b>'.$handgrade.'</font></td></tr>';
+    }
+    $result.='</table>';
+
+    my $viewgrade;
+    if ($ENV{'form.handgrade'} eq 'yes') {
+	$viewgrade = 'View/Grade';
+    } else {
+	$viewgrade = 'View';
+    }
+
+    $result='<h3><font color="#339933">&nbsp;'.
+	$viewgrade.
+	    ' Submissions for a Student or a Group of Students</font></h3>'.
+		'<table border="0"><tr><td colspan=3><font size=+1>'.
+		    '<b>Resource: </b>'.$url.'</font></td></tr>'.$result;
+
     $request->print(<<LISTJAVASCRIPT);
 <script type="text/javascript" language="javascript">
   function checkSelect(checkBox) {
@@ -316,7 +351,7 @@
        sense = "the student";
     }
     if (ctr == 0) {
-       alert("Please select "+sense+" before clicking on the View/Grade button.");
+       alert("Please select "+sense+" before clicking on the $viewgrade button.");
        return false;
     }
     document.gradesub.submit();
@@ -324,26 +359,6 @@
 </script>
 LISTJAVASCRIPT
 
-    my ($symb,$url) = &get_symb_and_url();
-    my $cdom      = $ENV{"course.$ENV{'request.course.id'}.domain"};
-    my $cnum      = $ENV{"course.$ENV{'request.course.id'}.num"};
-    my $getsec    = $ENV{'form.section'} eq '' ? 'all' : $ENV{'form.section'};
-    my $submitonly= $ENV{'form.submitonly'} eq '' ? 'all' : $ENV{'form.submitonly'};
-
-    my $result='<h3><font color="#339933">&nbsp;'.
-	'View/Grade Submissions for a Student or a Group of Students</font></h3>';
-    $result.='<table border="0">';
-    $result.='<tr><td colspan=3><font size=+1>'.
-	'<b>Resource: </b>'.$url.'</font></td></tr>';
-    my ($partlist,$handgrade) = &response_type($url);
-    for (sort keys(%$handgrade)) {
-	my ($responsetype,$handgrade)=split(/:/,$$handgrade{$_});
-	$ENV{'form.handgrade'} = 'yes' if ($handgrade eq 'yes');
-	$result.='<tr><td><b>Part </b>'.(split(/_/))[0].'</td>'.
-	    '<td><b>Type: </b>'.$responsetype.'</td>'.
-	    '<td><b>Handgrade: </b>'.$handgrade.'</font></td></tr>';
-    }
-    $result.='</table>';
     $request->print($result);
 
     my $checkhdgrade = $ENV{'form.handgrade'} eq 'yes' ? 'checked' : '';
@@ -352,9 +367,11 @@
     my $gradeTable='<form action="/adm/grades" method="post" name="gradesub">'."\n".
 	'&nbsp;<b>View Problem: </b><input type="radio" name="vProb" value="no" checked> no '."\n".
 	'<input type="radio" name="vProb" value="yes"> yes <br />'."\n".
-	'&nbsp;<b>Submissions: </b>'."\n".
-	'<input type="radio" name="lastSub" value="hdgrade" '.$checkhdgrade.' /> handgrade only'."\n".
-	'<input type="radio" name="lastSub" value="lastonly" '.$checklastsub.' /> last sub only'."\n".
+	'&nbsp;<b>Submissions: </b>'."\n";
+    if ($ENV{'form.handgrade'} eq 'yes') {
+	$gradeTable.='<input type="radio" name="lastSub" value="hdgrade" '.$checkhdgrade.' /> handgrade only'."\n";
+    }
+    $gradeTable.='<input type="radio" name="lastSub" value="lastonly" '.$checklastsub.' /> last sub only'."\n".
 	'<input type="radio" name="lastSub" value="last" /> last sub & parts info'."\n".
 	'<input type="radio" name="lastSub" value="all" /> all details'."\n".
 	'<input type="hidden" name="section"     value="'.$getsec.'" />'."\n".
@@ -364,13 +381,13 @@
 	'<input type="hidden" name="showgrading" value="'.$ENV{'form.showgrading'}.'" /><br />'."\n".
 	'<input type="hidden" name="url"  value="'.$url.'" />'."\n".
 	'<input type="hidden" name="symb" value="'.$symb.'" />'."\n".
-	'To view/grade a submission, click on the check box next to the student\'s name. Then '."\n".
-	'click on the View/Grade button. To view the submissions for a group of students, click'."\n".
+	'To '.lc($viewgrade).' a submission, click on the check box next to the student\'s name. Then '."\n".
+	'click on the '.$viewgrade.' button. To view the submissions for a group of students, click'."\n".
 	' on the check boxes for the group of students.<br />'."\n".
 	'<input type="hidden" name="command" value="processGroup" />'."\n".
 	'<input type="button" '."\n".
 	'onClick="javascript:checkSelect(this.form.stuinfo);" '."\n".
-	'value="View/Grade" />'."\n";
+	'value="'.$viewgrade.'" />'."\n";
  
     my ($classlist,$seclist,$ids,$stusec,$fullname) = &getclasslist($getsec,'0');
     
@@ -419,7 +436,7 @@
     $gradeTable.='</table></td></tr></table>'.
 	'<input type="button" '.
 	'onClick="javascript:checkSelect(this.form.stuinfo);" '.
-	'value="View/Grade" /><form />'."\n";
+	'value="'.$viewgrade.'" /><form />'."\n";
     if ($ctr == 0) {
 	$gradeTable='<br />&nbsp;<font color="red">'.
 	    'No submission found for this resource.</font><br />';
@@ -2105,8 +2122,10 @@
 	'<input type="hidden" name="url" value="'.$url.'" />'."\n".
 	'<input type="hidden" name="command" value="viewgrades" />'."\n";
     $result.='&nbsp;<b>Select section:</b> <select name="section">'."\n";
-    foreach (sort (@$sections)) {
-	$result.= '<option>'.$_.'</option>'."\n";
+    if (ref($sections)) {
+	foreach (sort (@$sections)) {
+	    $result.= '<option>'.$_.'</option>'."\n";
+	}
     }
     $result.='<option selected="on">all</select>'."<br />\n";
     $result.='&nbsp;<input type="button" onClick="submit();" value="View/Grade" /></form>'."\n";
@@ -2154,7 +2173,13 @@
     my ($classlist,$sections) = &getclasslist('all','0');
     my $result.='<table width=100% border=0><tr><td bgcolor=#777777>'."\n";
     $result.='<table width=100% border=0><tr bgcolor="#e6ffff"><td>'."\n";
-    $result.='&nbsp;<b>View/Grade an Individual Student\'s Submission</b></td></tr>'."\n";
+    $result.='&nbsp;<b>';
+    if ($handgrade eq 'yes') {
+	$result.="View/Grade ";
+    } else {
+	$result.="View ";
+    }
+    $result.='an Individual Student\'s Submission</b></td></tr>'."\n";
     $result.='<tr bgcolor=#ffffe6><td>'."\n";
     $result.='<form action="/adm/grades" method="post">'."\n".
 	'<input type="hidden" name="symb" value="'.$symb.'" />'."\n".
@@ -2165,18 +2190,26 @@
 	'<input type="hidden" name="command" value="submission" />'."\n";
 
     $result.='&nbsp;<b>Select section:</b> <select name="section">'."\n";
-    foreach (sort (@$sections)) {
-	$result.= '<option>'.$_.'</option>'."\n";
+    if (ref($sections)) {
+	foreach (sort (@$sections)) {$result.='<option>'.$_.'</option>'."\n";}
     }
     $result.= '<option selected="on">all</select>'."\n";
     $result.='&nbsp;&nbsp;<b>Display students who has: </b>'.
 	'<input type="radio" name="submitonly" value="yes" checked> submitted'.
 	'<input type="radio" name="submitonly" value="all"> everybody <br />';
-    $result.='&nbsp;(Section "no" implies the students were not assigned a section.)<br />' 
-	if (grep /no/,@$sections);
-   
-    $result.='<br />&nbsp;<input type="button" onClick="submit();" value="View/Grade" />'."\n".
-	'</form>'."\n";
+    if (ref($sections)) {
+	$result.='&nbsp;(Section "no" implies the students were not assigned a section.)<br />' 
+	    if (grep /no/,@$sections);
+    }
+
+
+    $result.='<br />&nbsp;<input type="button" onClick="submit();" value="';
+    if ($handgrade eq 'yes') {
+	$result.="View/Grade";
+    } else {
+	$result.="View";
+    }
+    $result.='" />'."\n".'</form>'."\n";
     $result.='</td></tr></table>'."\n";
     $result.='</td></tr></table>'."\n";
     return $result;

--albertel1032564930--