--- loncom/homework/grades.pm 2002/08/05 20:49:54 1.45
+++ loncom/homework/grades.pm 2002/09/20 23:35:30 1.49
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Grading handler
#
-# $Id: grades.pm,v 1.45 2002/08/05 20:49:54 ng Exp $
+# $Id: grades.pm,v 1.49 2002/09/20 23:35:30 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -45,17 +45,6 @@ use Apache::Constants qw(:common);
# ----- These first few routines are general use routines.-----
#
-
-sub print_hash {
- my ($request, $hash) = @_;
- $request->print('
Key
Value
');
- for (sort keys (%$hash)) {
- $request->print('
'.$_.'
'.$$hash{$_}.'
');
- }
- $request->print('
');
- return '';
-}
-
# --- Retrieve the parts that matches stores_\d+ from the metadata file.---
sub getpartlist {
my ($url) = @_;
@@ -114,17 +103,6 @@ sub response_type {
return \@partlist,\%handgrade;
}
-#--- Prints a message on screen if a user did something wrong
-#--- Operator error ---
-sub userError {
- my ($request, $reason, $step) = @_;
- $request->print('
LON-CAPA User Error
'."\n");
- $request->print('Reason: '.$reason.'
'."\n");
- $request->print('Step: '.($step ne '' ? $step : 'Use your browser back button to correct')
- .'
'."\n");
- return '';
-}
-
#--- Dumps the class list with usernames,list of sections,
#--- section, ids and fullnames for each user.
sub getclasslist {
@@ -133,6 +111,10 @@ sub getclasslist {
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) {
@@ -319,23 +301,57 @@ sub verifyreceipt {
# 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.='
'.
+ $viewgrade.
+ ' Submissions for a Student or a Group of Students
'.
+ '
'.
+ 'Resource: '.$url.'
'.$result;
+
$request->print(<
function checkSelect(checkBox) {
var ctr=0;
+ var sense="";
if (checkBox.length > 1) {
for (var i=0; i
LISTJAVASCRIPT
- 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='
'.
- 'View/Grade Submissions for a Student or a Group of Students
';
- $result.='
';
- $result.='
'.
- 'Resource: '.$ENV{'form.url'}.'
';
- my ($partlist,$handgrade) = &response_type($ENV{'form.url'});
- for (sort keys(%$handgrade)) {
- my ($responsetype,$handgrade)=split(/:/,$$handgrade{$_});
- $ENV{'form.handgrade'} = 'yes' if ($handgrade eq 'yes');
- $result.='
Part '.(split(/_/))[0].'
'.
- '
Type: '.$responsetype.'
'.
- '
Handgrade: '.$handgrade.'
';
- }
- $result.='
';
$request->print($result);
my $checkhdgrade = $ENV{'form.handgrade'} eq 'yes' ? 'checked' : '';
@@ -370,9 +367,11 @@ LISTJAVASCRIPT
my $gradeTable='
'.
''."\n";
+ 'value="'.$viewgrade.'" />'."\n";
if ($ctr == 0) {
$gradeTable=' '.
'No submission found for this resource. ';
- $gradeTable.=&show_grading_menu_form ($ENV{'form.symb'},$ENV{'form.url'});
+ $gradeTable.=&show_grading_menu_form($symb,$url);
+ } elsif ($ctr == 1) {
+ $gradeTable =~ s/type=checkbox/type=checkbox checked/;
}
$request->print($gradeTable);
return '';
@@ -552,7 +552,7 @@ sub sub_page_js {
var points = eval("document.SCORE.GD_BOX"+i+"_"+partid+".value");
if (points == "") {
var name = eval("document.SCORE.name"+i+".value");
- alert("You did not assign any point for "+name+", part "+partid+".");
+ alert("Please assign a score for "+name+", part "+partid+".");
return false;
}
}
@@ -594,7 +594,7 @@ sub sub_page_js {
else return;
var cleantxt = txt.replace(new RegExp('([\\f\\n\\r\\t\\v ])+', 'g')," ");
if (cleantxt=="") {
- alert("Select a word or group of words from document and then click this link.");
+ alert("Please select a word or group of words from document and then click this link.");
return;
}
var nret = prompt("Add selection to keyword list? Edit if desired.",cleantxt);
@@ -929,7 +929,6 @@ KEYWORDS
my $result='
'."\n".
'
'."\n";
-# $result.='
Fullname: '.$ENV{'form.fullname'}.
$result.='Fullname: '.$ENV{'form.fullname'}.
' Username: '.$uname.''.
' Domain: '.$udom.' '."\n";
@@ -1002,7 +1001,7 @@ KEYWORDS
$request->print($submitby);
} else {
my ($string,$timestamp)=
- &get_last_submission ($symb,$uname,$udom,$ENV{'request.course.id'});
+ &get_last_submission (%record);
my $lastsubonly.=''.
($$timestamp eq '' ? '' : 'Date Submitted: '.
$$timestamp).'';
@@ -1153,31 +1152,30 @@ KEYWORDS
#--- Retrieve the last submission for all the parts
sub get_last_submission {
- my ($symb,$username,$domain,$course)=@_;
- if ($symb) {
- my (@string,$timestamp);
- my (%returnhash)=&Apache::lonnet::restore($symb,$course,$domain,$username);
- if ($returnhash{'version'}) {
- my %lasthash=();
- my ($version);
- for ($version=1;$version<=$returnhash{'version'};$version++) {
- foreach (sort(split(/\:/,$returnhash{$version.':keys'}))) {
- $lasthash{$_}=$returnhash{$version.':'.$_};
- }
- }
- foreach ((keys %lasthash)) {
- if ($_ =~ /\.submission$/) {
- my ($partid,$foo) = split(/submission$/,$_);
- my $draft = $lasthash{$partid.'awarddetail'} eq 'DRAFT' ?
- 'Draft Copy ' : '';
- push @string, (join(':',$_,$draft.$lasthash{$_}));
- }
- if ($_ =~ /timestamp/) {$timestamp = scalar(localtime($lasthash{$_}))};
+ my (%returnhash)=@_;
+ my (@string,$timestamp);
+ if ($returnhash{'version'}) {
+ my %lasthash=();
+ my ($version);
+ for ($version=1;$version<=$returnhash{'version'};$version++) {
+ foreach (sort(split(/\:/,$returnhash{$version.':keys'}))) {
+ $lasthash{$_}=$returnhash{$version.':'.$_};
+ if ($returnhash{$version.':'.$_} =~ /(SUBMITTED|DRAFT)$/) {
+ $timestamp = scalar(localtime($returnhash{$version.':timestamp'}));
+ }
+ }
+ }
+ foreach ((keys %lasthash)) {
+ if ($_ =~ /\.submission$/) {
+ my ($partid,$foo) = split(/submission$/,$_);
+ my $draft = $lasthash{$partid.'awarddetail'} eq 'DRAFT' ?
+ 'Draft Copy ' : '';
+ push @string, (join(':',$_,$draft.$lasthash{$_}));
}
}
- @string = $string[0] eq '' ? 'Nothing submitted - no attempts.' : @string;
- return \@string,\$timestamp;
}
+ @string = $string[0] eq '' ? 'Nothing submitted - no attempts.' : @string;
+ return \@string,\$timestamp;
}
#--- High light keywords, with style choosen by user.
@@ -2029,8 +2027,6 @@ sub csvuploadassign {
}
$request->print('
Assigning Grades
');
my $courseid=$ENV{'request.course.id'};
-# my $cdom=$ENV{"course.$courseid.domain"};
-# my $cnum=$ENV{"course.$courseid.num"};
my ($classlist) = &getclasslist('all','1');
my @skipped;
my $countdone=0;
@@ -2126,11 +2122,13 @@ sub view_edit_entire_class_form {
''."\n".
''."\n";
$result.=' Select section: '." \n";
- $result.=' '."\n";
+ $result.=' '."\n";
$result.='
'."\n";
$result.='
'."\n";
return $result;
@@ -2140,7 +2138,17 @@ sub view_edit_entire_class_form {
sub upcsvScores_form {
my ($symb,$url) = @_;
if (!$symb) {return '';}
- my $result.='
'."\n";
+ my $result = ''."\n";
+
+ $result.='
'."\n";
$result.='
'."\n";
$result.=' Specify a file containing the class scores for above resource
'."\n";
$result.=''."\n";
+ if (ref($sections)) {
+ $result.=' (Section "no" implies the students were not assigned a section.) '
+ if (grep /no/,@$sections);
+ }
+
+
+ $result.=' '."\n".''."\n";
$result.='
'."\n";
$result.='
'."\n";
return $result;
@@ -2196,17 +2218,27 @@ sub viewGradeaStu_form {
#--- Form to input a receipt number ---
sub verifyReceipt_form {
my ($symb,$url) = @_;
- my $cdom=$ENV{"course.$ENV{'request.course.id'}.domain"};
- my $cnum=$ENV{"course.$ENV{'request.course.id'}.num"};
+ my $result = ''."\n";
+
my $hostver=unpack("%32C*",$Apache::lonnet::perlvar{'lonHostID'});
- my $result.='
'."\n";
+ $result.='
'."\n";
$result.='
'."\n";
$result.=' Verify a Submission Receipt Issued by this Server