--- loncom/homework/grades.pm 2003/07/23 17:33:59 1.123
+++ loncom/homework/grades.pm 2003/10/28 23:20:03 1.145
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Grading handler
#
-# $Id: grades.pm,v 1.123 2003/07/23 17:33:59 ng Exp $
+# $Id: grades.pm,v 1.145 2003/10/28 23:20:03 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -33,6 +33,7 @@
# June-August H.K. Ng
# Year 2003
# February, March H.K. Ng
+# July, H. K. Ng
#
package Apache::grades;
@@ -95,10 +96,23 @@ sub get_fullname {
return $fullname;
}
+#--- Format fullname, username:domain if different for display
+#--- Use anywhere where the student names are listed
+sub nameUserString {
+ my ($type,$fullname,$uname,$udom) = @_;
+ if ($type eq 'header') {
+ return ' Fullname (Username) ';
+ } else {
+ return ' '.$fullname.' ('.$uname.
+ ($ENV{'user.domain'} eq $udom ? '' : ' ('.$udom.')').')';
+ }
+}
+
#--- Get the partlist and the response type for a given problem. ---
#--- Indicate if a response type is coded handgraded or not. ---
sub response_type {
- my ($url) = shift;
+ my ($url,$symb) = shift;
+ $symb=($ENV{'form.symb'} ne '' ? $ENV{'form.symb'} : (&Apache::lonnet::symbread($url))) if ($symb eq '');
my $allkeys = &Apache::lonnet::metadata($url,'keys');
my %seen = ();
my (@partlist,%handgrade);
@@ -107,7 +121,8 @@ sub response_type {
my ($responsetype,$part) = split(/_/,$_,2);
my ($partid,$respid) = split(/_/,$part);
$responsetype =~ s/response$//; # make it compatible w/ navmaps - should move to that!!
- $handgrade{$part} = $responsetype.':'.($allkeys =~ /parameter_$part\_handgrade/ ? 'yes' : 'no');
+ my ($value) = &Apache::lonnet::EXT('resource.'.$part.'.handgrade',$symb);
+ $handgrade{$part} = $responsetype.':'.($value eq 'yes' ? 'yes' : 'no');
next if ($seen{$partid} > 0);
$seen{$partid}++;
push @partlist,$partid;
@@ -123,7 +138,7 @@ sub showResourceInfo {
my $result ='
'.
'
Current Resource: '.$probTitle.'
'."\n";
my ($partlist,$handgrade) = &response_type($url);
- my %resptype = (); #,$hdgrade)=('','no');
+ my %resptype = ();
my $hdgrade='no';
for (sort keys(%$handgrade)) {
my ($responsetype,$handgrade)=split(/:/,$$handgrade{$_});
@@ -150,12 +165,12 @@ sub cleanRecord {
push @ans,$ans;
}
my $grayFont = '';
- return '
'.
+ return '
'.
'
Answer
'.
(join '
',@ans).'
'.
'
'.$grayFont.'Option ID
'.$grayFont.
(join '
'.$grayFont,@IDs).'
'.
- '
';
+ '
';
}
if ($response eq 'essay') {
if (! exists ($ENV{'form.'.$symb})) {
@@ -170,7 +185,7 @@ sub cleanRecord {
$ENV{'form.kwstyle'} = $keyhash{$loginuser.'_kwstyle'} ne '' ? $keyhash{$loginuser.'_kwstyle'} : '';
$ENV{'form.'.$symb} = 1; # so that we don't have to read it from disk for multiple sub of the same prob.
}
- return &keywords_highlight($answer);
+ return '
'.&keywords_highlight($answer).'
';
}
return $answer;
}
@@ -203,7 +218,8 @@ sub commonJSfunctions {
}
}
} else {
- if (selectOne.selected) return selectOne.value;
+ // only one value it must be the selected one
+ return selectOne.value;
}
}
@@ -295,7 +311,7 @@ sub student_gradeStatus {
my %record = &Apache::lonnet::restore($symb,$ENV{'request.course.id'},$udom,$uname);
my %partstatus = ();
foreach (@$partlist) {
- my ($status,$foo) = split(/_/,$record{"resource.$_.solved"},2);
+ my ($status,undef) = split(/_/,$record{"resource.$_.solved"},2);
$status = 'nothing' if ($status eq '');
$partstatus{$_} = $status;
my $subkey = "resource.$_.submitted_by";
@@ -321,6 +337,7 @@ sub jscriptNform {
''."\n".
''."\n".
''."\n".
+ ''."\n".
''."\n".
''."\n".
''."\n".
@@ -470,7 +487,7 @@ sub listStudents {
sense = "the student";
}
if (ctr == 0) {
- alert("Please select "+sense+" before clicking on the $viewgrade button.");
+ alert("Please select "+sense+" before clicking on the Next button.");
return false;
}
document.gradesub.submit();
@@ -490,9 +507,12 @@ LISTJAVASCRIPT
my $checkhdgrade = ($ENV{'form.handgrade'} eq 'yes' && scalar(@$partlist) > 1 ) ? 'checked' : '';
my $checklastsub = $checkhdgrade eq '' ? 'checked' : '';
my $gradeTable=''."\n";
+ 'value="Next->" />'."\n";
if ($ctr == 0) {
my $num_students=(scalar(keys(%$fullname)));
if ($num_students eq 0) {
@@ -600,7 +628,7 @@ LISTJAVASCRIPT
} else {
$gradeTable=' '.
'No submissions found for this resource for any students. ('.$num_students.
- ' checked for submissions ';
+ ' checked for submissions) ';
}
} elsif ($ctr == 1) {
$gradeTable =~ s/type=checkbox/type=checkbox checked/;
@@ -641,9 +669,9 @@ sub sub_page_js {
$request->print(<
function updateRadio(formname,id,weight) {
- var gradeBox = eval("formname.GD_BOX"+id);
- var radioButton = eval("formname.RADVAL"+id);
- var oldpts = eval("formname.oldpts"+id+".value");
+ var gradeBox = formname["GD_BOX"+id];
+ var radioButton = formname["RADVAL"+id];
+ var oldpts = formname["oldpts"+id].value;
var pts = checkSolved(formname,id) == 'update' ? gradeBox.value : oldpts;
gradeBox.value = pts;
var resetbox = false;
@@ -665,7 +693,7 @@ sub sub_page_js {
var resp = confirm("You entered a value ("+pts+
") greater than the weight for the part. Accept?");
if (resp == false) {
- gradeBox.value = "";
+ gradeBox.value = oldpts;
return;
}
}
@@ -677,18 +705,17 @@ sub sub_page_js {
}
}
updateSelect(formname,id);
- var stores = eval("formname.stores"+id);
- stores.value = "0";
+ formname["stores"+id].value = "0";
}
function writeBox(formname,id,pts) {
- var gradeBox = eval("formname.GD_BOX"+id);
+ var gradeBox = formname["GD_BOX"+id];
if (checkSolved(formname,id) == 'update') {
gradeBox.value = pts;
} else {
- var oldpts = eval("formname.oldpts"+id+".value");
+ var oldpts = formname["oldpts"+id].value;
gradeBox.value = oldpts;
- var radioButton = eval("formname.RADVAL"+id);
+ var radioButton = formname["RADVAL"+id];
for (var i=0; i");
pDoc.write("Message Central");
@@ -943,7 +965,7 @@ sub sub_page_kw_js {
pDoc.write(" opener.document.SCORE.msgsub.value = opener.checkEntities(document.msgcenter.msgsub.value);");
pDoc.write(" var nmsg = opener.document.SCORE.savemsgN.value;");
pDoc.write(" var usrctr = document.msgcenter.usrctr.value;");
- pDoc.write(" var newval = eval(\\"opener.document.SCORE.newmsg\\"+usrctr);");
+ pDoc.write(" var newval = opener.document.SCORE[\\"newmsg\\"+usrctr];");
pDoc.write(" newval.value = opener.checkEntities(document.msgcenter.newmsg.value);");
pDoc.write(" var msgchk = \\"\\";");
@@ -952,12 +974,12 @@ sub sub_page_kw_js {
pDoc.write(" }");
pDoc.write(" var includemsg = 0;");
pDoc.write(" for (var i=1; i<=nmsg; i++) {");
- pDoc.write(" var opnmsg = eval(\\"opener.document.SCORE.savemsg\\"+i);");
- pDoc.write(" var frmmsg = eval(\\"document.msgcenter.msg\\"+i);");
+ pDoc.write(" var opnmsg = opener.document.SCORE[\\"savemsg\\"+i];");
+ pDoc.write(" var frmmsg = document.msgcenter[\\"msg\\"+i];");
pDoc.write(" opnmsg.value = opener.checkEntities(frmmsg.value);");
- pDoc.write(" var showflg = eval(\\"opener.document.SCORE.shownOnce\\"+i);");
+ pDoc.write(" var showflg = opener.document.SCORE[\\"shownOnce\\"+i];");
pDoc.write(" showflg.value = \\"1\\";");
- pDoc.write(" var chkbox = eval(\\"document.msgcenter.msgn\\"+i);");
+ pDoc.write(" var chkbox = document.msgcenter[\\"msgn\\"+i];");
pDoc.write(" if (chkbox.checked) {");
pDoc.write(" msgchk += \\"savemsg\\"+i+\\",\\";");
pDoc.write(" includemsg = 1;");
@@ -967,9 +989,9 @@ sub sub_page_kw_js {
pDoc.write(" msgchk += \\"newmsg\\"+usrctr;");
pDoc.write(" includemsg = 1;");
pDoc.write(" }");
- pDoc.write(" imgformname = eval(\\"opener.document.SCORE.mailicon\\"+usrctr);");
+ pDoc.write(" imgformname = opener.document.SCORE[\\"mailicon\\"+usrctr];");
pDoc.write(" imgformname.src = \\"$iconpath/\\"+((includemsg) ? \\"mailto.gif\\" : \\"mailbkgrd.gif\\");");
- pDoc.write(" var includemsg = eval(\\"opener.document.SCORE.includemsg\\"+usrctr);");
+ pDoc.write(" var includemsg = opener.document.SCORE[\\"includemsg\\"+usrctr];");
pDoc.write(" includemsg.value = msgchk;");
pDoc.write(" self.close()");
@@ -1021,6 +1043,7 @@ sub sub_page_kw_js {
pDoc.write("