[LON-CAPA-cvs] cvs: loncom /homework grades.pm
ng
lon-capa-cvs@mail.lon-capa.org
Thu, 27 Mar 2003 20:36:01 -0000
This is a MIME encoded message
--ng1048797361
Content-Type: text/plain
ng Thu Mar 27 15:36:01 2003 EDT
Modified files:
/loncom/homework grades.pm
Log:
Change the way the grading menu remembers previous selection - makes it easier
to add or delete later.
Fix an unreported bug when displaying essay grading with invalid collaborator(s).
Fix (i think) bug 1308 - provides a link and show points awarded in message
sent to student.
--ng1048797361
Content-Type: text/plain
Content-Disposition: attachment; filename="ng-20030327153601.txt"
Index: loncom/homework/grades.pm
diff -u loncom/homework/grades.pm:1.76 loncom/homework/grades.pm:1.77
--- loncom/homework/grades.pm:1.76 Mon Mar 24 16:03:54 2003
+++ loncom/homework/grades.pm Thu Mar 27 15:36:01 2003
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Grading handler
#
-# $Id: grades.pm,v 1.76 2003/03/24 21:03:54 ng Exp $
+# $Id: grades.pm,v 1.77 2003/03/27 20:36:01 ng Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -125,8 +125,8 @@
my (undef,undef,$end,$start,$id,$section,$fullname,$status)=
@{$classlist->{$_}};
# filter students according to status selected
- if ($filterlist && $ENV{'form.saveStatus'} ne 'Any') {
- if ($ENV{'form.saveStatus'} ne $status) {
+ if ($filterlist && $ENV{'form.status'} ne 'Any') {
+ if ($ENV{'form.status'} ne $status) {
delete ($classlist->{$_});
next;
}
@@ -211,10 +211,7 @@
$jscript.= '<form action="/adm/grades" method="post" name="onestudent">'."\n".
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n".
'<input type="hidden" name="url" value="'.$url.'" />'."\n".
- '<input type="hidden" name="saveCmd" value="'.$ENV{'form.saveCmd'}.'" />'."\n".
- '<input type="hidden" name="saveSec" value="'.$ENV{'form.saveSec'}.'" />'."\n".
- '<input type="hidden" name="saveSub" value="'.$ENV{'form.saveSub'}.'" />'."\n".
- '<input type="hidden" name="saveStatus" value="'.$ENV{'form.saveStatus'}.'" />'."\n".
+ '<input type="hidden" name="saveState" value="'.$ENV{'form.saveState'}.'" />'."\n".
'<input type="hidden" name="probTitle" value="'.$ENV{'form.probTitle'}.'" />'."\n".
'<input type="hidden" name="command" value="submission" />'."\n".
'<input type="hidden" name="student" value="" />'."\n".
@@ -301,7 +298,7 @@
'<td><b>Type: </b>'.$responsetype.'</td>'.
'<td><b>Handgrade: </b>'.$handgrade.'</font></td></tr>';
}
- $result.='</table>';
+ $result.='</table>'."\n";
my $viewgrade = $ENV{'form.handgrade'} eq 'yes' ? 'View/Grade' : 'View';
$ENV{'form.probTitle'} = $ENV{'form.probTitle'} eq '' ?
@@ -361,10 +358,7 @@
'<input type="hidden" name="response" value="'.$ENV{'form.response'}.'" />'."\n".
'<input type="hidden" name="handgrade" value="'.$ENV{'form.handgrade'}.'" /><br />'."\n".
'<input type="hidden" name="showgrading" value="'.$ENV{'form.showgrading'}.'" /><br />'."\n".
- '<input type="hidden" name="saveCmd" value="'.$ENV{'form.saveCmd'}.'" />'."\n".
- '<input type="hidden" name="saveSec" value="'.$ENV{'form.saveSec'}.'" />'."\n".
- '<input type="hidden" name="saveSub" value="'.$ENV{'form.saveSub'}.'" />'."\n".
- '<input type="hidden" name="saveStatus" value="'.$ENV{'form.saveStatus'}.'" />'."\n".
+ '<input type="hidden" name="saveState" value="'.$ENV{'form.saveState'}.'" />'."\n".
'<input type="hidden" name="probTitle" value="'.$ENV{'form.probTitle'}.'" />'."\n".
'<input type="hidden" name="url" value="'.$url.'" />'."\n".
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n".
@@ -1036,10 +1030,7 @@
$request->print('<form action="/adm/grades" method="post" name="SCORE">'."\n".
'<input type="hidden" name="command" value="handgrade" />'."\n".
- '<input type="hidden" name="saveCmd" value="'.$ENV{'form.saveCmd'}.'" />'."\n".
- '<input type="hidden" name="saveSec" value="'.$ENV{'form.saveSec'}.'" />'."\n".
- '<input type="hidden" name="saveSub" value="'.$ENV{'form.saveSub'}.'" />'."\n".
- '<input type="hidden" name="saveStatus" value="'.$ENV{'form.saveStatus'}.'" />'."\n".
+ '<input type="hidden" name="saveState" value="'.$ENV{'form.saveState'}.'" />'."\n".
'<input type="hidden" name="probTitle" value="'.$ENV{'form.probTitle'}.'" />'."\n".
'<input type="hidden" name="refresh" value="off" />'."\n".
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n".
@@ -1145,7 +1136,7 @@
$result .= 'invalid collaborators';
}
$result .= ': '.join(', ',@badcollaborators);
-
+ $result .= '</td></tr></table>';
}
if (scalar(@collaborators > $ncol)) {
$result .= '<table border="0"><tr bgcolor="#ffbbbb"><td>';
@@ -1352,7 +1343,7 @@
my $ctr = 0;
while ($ctr < $ngrade) {
my ($uname,$udom) = split(/:/,$ENV{'form.unamedom'.$ctr});
- my ($errorflag) = &saveHandGrade($request,$url,$symb,$uname,$udom,$ctr);
+ my ($errorflag,$pts,$wgt) = &saveHandGrade($request,$url,$symb,$uname,$udom,$ctr);
if ($errorflag eq 'no_score') {
$ctr++;
next;
@@ -1366,7 +1357,9 @@
foreach (@msgnum) {
$message.=$ENV{'form.'.$_} if ($_ =~ /savemsg|newmsg/ && $_ ne '');
}
- #$message =~ s/\s+/ /g;
+ $message =~ s/<([^>]|\n)*>//g; # removes html codes Or should this be lonnet::escape ??
+ $message.="\n\nPoint".($pts > 1 ? 's':'').' awarded = '.$pts.' out of '.$wgt;
+ $message.=" for <a href=\"/res/$url\">$ENV{'form.probTitle'}</a>";
$msgstatus = &Apache::lonmsg::user_normal_msg ($uname,$udom,
$ENV{'form.msgsub'},$message);
}
@@ -1504,8 +1497,9 @@
#---- Save the score and award for each student, if changed
sub saveHandGrade {
my ($request,$url,$symb,$stuname,$domain,$newflg,$submitter) = @_;
- my %record=&Apache::lonnet::restore($symb,$ENV{'request.course.id'},$domain,$stuname);
- my %newrecord;
+ my %record = &Apache::lonnet::restore($symb,$ENV{'request.course.id'},$domain,$stuname);
+ my %newrecord = ();
+ my ($pts,$wgt) = ('','');
foreach (split(/:/,$ENV{'form.partlist'.$newflg})) {
if ($ENV{'form.GD_SEL'.$newflg.'_'.$_} eq 'excused') {
if ($record{'resource.'.$_.'.solved'} ne 'excused') {
@@ -1515,11 +1509,11 @@
}
}
} else {
- my $pts = ($ENV{'form.GD_BOX'.$newflg.'_'.$_} ne '' ?
- $ENV{'form.GD_BOX'.$newflg.'_'.$_} :
- $ENV{'form.RADVAL'.$newflg.'_'.$_});
+ $pts = ($ENV{'form.GD_BOX'.$newflg.'_'.$_} ne '' ?
+ $ENV{'form.GD_BOX'.$newflg.'_'.$_} :
+ $ENV{'form.RADVAL'.$newflg.'_'.$_});
return 'no_score' if ($pts eq '' && $ENV{'form.GD_SEL'.$newflg.'_'.$_} eq '');
- my $wgt = $ENV{'form.WGT'.$newflg.'_'.$_} eq '' ? 1 :
+ $wgt = $ENV{'form.WGT'.$newflg.'_'.$_} eq '' ? 1 :
$ENV{'form.WGT'.$newflg.'_'.$_};
my $partial= $pts/$wgt;
$newrecord{'resource.'.$_.'.awarded'} = $partial
@@ -1542,7 +1536,7 @@
&Apache::lonnet::cstore(\%newrecord,$symb,
$ENV{'request.course.id'},$domain,$stuname);
}
- return '';
+ return '',$pts,$wgt;
}
#--------------------------------------------------------------------------------------
@@ -1738,10 +1732,7 @@
'<input type="hidden" name="url" value="'.$url.'" />'."\n".
'<input type="hidden" name="command" value="editgrades" />'."\n".
'<input type="hidden" name="section" value="'.$ENV{'form.section'}.'" />'."\n".
- '<input type="hidden" name="saveCmd" value="'.$ENV{'form.saveCmd'}.'" />'."\n".
- '<input type="hidden" name="saveSec" value="'.$ENV{'form.saveSec'}.'" />'."\n".
- '<input type="hidden" name="saveSub" value="'.$ENV{'form.saveSub'}.'" />'."\n".
- '<input type="hidden" name="saveStatus" value="'.$ENV{'form.saveStatus'}.'" />'."\n".
+ '<input type="hidden" name="saveState" value="'.$ENV{'form.saveState'}.'" />'."\n".
'<input type="hidden" name="probTitle" value="'.$ENV{'form.probTitle'}.'" />'."\n";
$result.='<h3>Assign Common Grade To ';
@@ -2158,10 +2149,7 @@
value="$ENV{'form.upfile_associate'}" />
<input type="hidden" name="symb" value="$symb" />
<input type="hidden" name="url" value="$url" />
-<input type="hidden" name="saveCmd" value="$ENV{'form.saveCmd'}" />
-<input type="hidden" name="saveSec" value="$ENV{'form.saveSec'}" />
-<input type="hidden" name="saveSub" value="$ENV{'form.saveSub'}" />
-<input type="hidden" name="saveStatus" value="$ENV{'form.saveStatus'}" />
+<input type="hidden" name="saveState" value="$ENV{'form.saveState'}" />
<input type="hidden" name="probTitle" value="$ENV{'form.probTitle'}" />
<input type="hidden" name="command" value="csvuploadassign" />
<hr />
@@ -2390,10 +2378,7 @@
'<input type="hidden" name="command" value="displayPage" />'."\n".
'<input type="hidden" name="url" value="'.$url.'" />'."\n".
'<input type="hidden" name="symb" value="'.$symb.'" />'."<br><br>\n".
- '<input type="hidden" name="saveCmd" value="'.$ENV{'form.saveCmd'}.'" />'."\n".
- '<input type="hidden" name="saveSec" value="'.$ENV{'form.saveSec'}.'" />'."\n".
- '<input type="hidden" name="saveSub" value="'.$ENV{'form.saveSub'}.'" />'."\n".
- '<input type="hidden" name="saveStatus" value="'.$ENV{'form.saveStatus'}.'" />'."\n";
+ '<input type="hidden" name="saveState" value="'.$ENV{'form.saveState'}.'" />'."\n";
$result.='<br /> <input type="button" '.
'onClick="javascript:checkPickOne(this.form);"value="Submit" /><br />'."\n";
@@ -2525,10 +2510,7 @@
'<input type="hidden" name="title" value="'.$ENV{'form.title'}.'" />'."\n".
'<input type="hidden" name="url" value="'.$url.'" />'."\n".
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n".
- '<input type="hidden" name="saveCmd" value="'.$ENV{'form.saveCmd'}.'" />'."\n".
- '<input type="hidden" name="saveSec" value="'.$ENV{'form.saveSec'}.'" />'."\n".
- '<input type="hidden" name="saveSub" value="'.$ENV{'form.saveSub'}.'" />'."\n".
- '<input type="hidden" name="saveStatus" value="'.$ENV{'form.saveStatus'}.'" />'."\n";
+ '<input type="hidden" name="saveState" value="'.$ENV{'form.saveState'}.'" />'."\n";
my $checkIcon = '<img src="'.$request->dir_config('lonIconsURL').
'/check.gif" height="16" border="0" />';
@@ -2590,13 +2572,14 @@
my @displaySub = ();
foreach my $partid (@{$parts}) {
my @matchKey = grep /^resource\.$partid\..*?\.submission$/,@versionKeys;
- next if ($record{"$version:resource.$partid.award"} eq 'APPROX_ANS' &&
- $record{"$version:resource.$partid.solved"} eq '');
+ next if ($record{"$version:resource.$partid.solved"} eq '');
+# next if ($record{"$version:resource.$partid.award"} eq 'APPROX_ANS' &&
+# $record{"$version:resource.$partid.solved"} eq '');
$displaySub[0].=(exists $record{$version.':'.$matchKey[0]}) ?
- '<b>Part:</b> '.$partid.' <b>Submission:</b> '
+ '<b>Trial '.$version.' Part '.$partid.'</b> '
.$record{$version.':'.$matchKey[0]}.'<br />' : '';
$displaySub[1].=(exists $record{"$version:resource.$partid.award"}) ?
- '<b>Part:</b> '.$partid.' '.
+ '<b>Part '.$partid.'</b> '.
$record{"$version:resource.$partid.award"}.'/'.
$record{"$version:resource.$partid.solved"}.'<br />' : '';
$displaySub[2].=(exists $record{"$version:resource.$partid.regrader"}) ?
@@ -2878,16 +2861,24 @@
my $result.='<form action="/adm/grades" method="post">'."\n".
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n".
'<input type="hidden" name="url" value="'.$url.'" />'."\n".
- '<input type="hidden" name="saveCmd" value="'.$ENV{'form.saveCmd'}.'" />'."\n".
- '<input type="hidden" name="saveSec" value="'.$ENV{'form.saveSec'}.'" />'."\n".
- '<input type="hidden" name="saveSub" value="'.$ENV{'form.saveSub'}.'" />'."\n".
- '<input type="hidden" name="saveStatus" value="'.$ENV{'form.saveStatus'}.'" />'."\n".
+ '<input type="hidden" name="saveState" value="'.$ENV{'form.saveState'}.'" />'."\n".
'<input type="hidden" name="command" value="gradingmenu" />'."\n".
'<input type="submit" name="submit" value="Grading Menu" />'."\n".
'</form>'."\n";
return $result;
}
+# -- Retrieve choices for grading form
+sub savedState {
+ my %savedState = ();
+ if ($ENV{'form.saveState'}) {
+ foreach (split(/:/,$ENV{'form.saveState'})) {
+ my ($key,$value) = split(/=/,$_,2);
+ $savedState{$key} = $value;
+ }
+ }
+ return \%savedState;
+}
#--- Displays the main menu page -------
sub gradingmenu {
@@ -2895,19 +2886,13 @@
my ($symb,$url)=&get_symb_and_url($request);
if (!$symb) {return '';}
my $probTitle = &Apache::lonnet::gettitle($symb);
- my $saveCmd = ($ENV{'form.saveCmd'} eq '' ? 'pickStudentPage' : $ENV{'form.saveCmd'});
- my $saveSec = ($ENV{'form.saveSec'} eq '' ? 'all' : $ENV{'form.saveSec'});
- my $saveSub = ($ENV{'form.saveSub'} eq '' ? 'yes' : $ENV{'form.saveSub'});
- my $saveStatus = ($ENV{'form.saveStatus'} eq '' ? 'Active' : $ENV{'form.saveStatus'});
$request->print(<<GRADINGMENUJS);
<script type="text/javascript" language="javascript">
function checkChoice(formname) {
var cmd = formname.command;
- formname.saveCmd.value = radioSelection(cmd);
- formname.saveSec.value = pullDownSelection(formname.section);
- formname.saveSub.value = radioSelection(formname.submitonly);
- formname.saveStatus.value = pullDownSelection(formname.status);
+ formname.saveState.value = "saveCmd="+radioSelection(cmd)+":saveSec="+pullDownSelection(formname.section)+
+ ":saveSub="+radioSelection(formname.submitonly)+":saveStatus="+pullDownSelection(formname.status);
if (cmd[0].checked || cmd[1].checked || cmd[2].checked || cmd[4].checked) formname.submit();
if (cmd[3].checked) browseAndUpload();
@@ -2974,7 +2959,10 @@
lDoc.write(" alert(\\"Please use the browse button to select a file from your local directory.\\");");
lDoc.write(" return false;");
lDoc.write(" }");
+ lDoc.write(" var openformname = opener.document.gradingMenu;");
+ lDoc.write(" formname.saveState.value = \\"saveCmd=\\"+opener.radioSelection(openformname.command)+\\":saveSec=\\"+opener.pullDownSelection(openformname.section)+\\":saveSub=\\"+opener.radioSelection(openformname.submitonly)+\\":saveStatus=\\"+opener.pullDownSelection(openformname.status);");
lDoc.write(" document.gradesupload.submit();");
+ lDoc.write(" if (navigator.appName !=\\"Netscape\\") {self.close()};");
lDoc.write(" setTimeout('self.close()',750)");
lDoc.write("}");
@@ -2986,13 +2974,10 @@
lDoc.write("<input type=\\"hidden\\" name=\\"symb\\" value=\\"$symb\\">");
lDoc.write("<input type=\\"hidden\\" name=\\"url\\" value=\\"$url\\">");
lDoc.write("<input type=\\"hidden\\" name=\\"probTitle\\" value=\\"$probTitle\\">");
- lDoc.write("<input type=\\"hidden\\" name=\\"saveCmd\\" value=\\"csvupload\\">");
- lDoc.write("<input type=\\"hidden\\" name=\\"saveSec\\" value=\\"$saveSec\\">");
- lDoc.write("<input type=\\"hidden\\" name=\\"saveSub\\" value=\\"$saveSub\\">");
- lDoc.write("<input type=\\"hidden\\" name=\\"saveStatus\\" value=\\"$saveStatus\\">");
+ lDoc.write("<input type=\\"hidden\\" name=\\"saveState\\" value=\\"\\">");
lDoc.write("<input type=\\"hidden\\" name=\\"command\\" value=\\"csvuploadmap\\">");
- lDoc.write("<font color=\\"green\\" size=+1><b>Specify a file containing the class scores for problem - $probTitle</b></font><br><br>");
+ lDoc.write("<font color=\\"green\\" size=+1> <b>Specify a file containing the class scores for problem - $probTitle</b></font><br><br>");
lDoc.write("<table border=0 width=100%><tr><td bgcolor=\\"#777777\\">");
lDoc.write("<table border=0 width=100%><tr bgcolor=\\"#ddffff\\">");
@@ -3030,6 +3015,11 @@
$result.='</table>'."\n";
my (undef,$sections) = &getclasslist('all','0');
+ my $savedState = &savedState();
+ my $saveCmd = ($$savedState{'saveCmd'} eq '' ? 'pickStudentPage' : $$savedState{'saveCmd'});
+ my $saveSec = ($$savedState{'saveSec'} eq '' ? 'all' : $$savedState{'saveSec'});
+ my $saveSub = ($$savedState{'saveSub'} eq '' ? 'yes' : $$savedState{'saveSub'});
+ my $saveStatus = ($$savedState{'saveStatus'} eq '' ? 'Active' : $$savedState{'saveStatus'});
$result.='<form action="/adm/grades" method="post" name="gradingMenu">'."\n".
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n".
@@ -3037,10 +3027,7 @@
'<input type="hidden" name="response" value="'.$resptype.'" />'."\n".
'<input type="hidden" name="handgrade" value="'.$hdgrade.'" />'."\n".
'<input type="hidden" name="probTitle" value="'.$probTitle.'" />'."\n".
- '<input type="hidden" name="saveCmd" value="" />'."\n".
- '<input type="hidden" name="saveSec" value="" />'."\n".
- '<input type="hidden" name="saveSub" value="" />'."\n".
- '<input type="hidden" name="saveStatus" value="" />'."\n".
+ '<input type="hidden" name="saveState" value="" />'."\n".
'<input type="hidden" name="showgrading" value="yes" />'."\n";
$result.='<table width=100% border=0><tr><td bgcolor=#777777>'."\n".
--ng1048797361--