--- loncom/homework/grades.pm 2002/08/26 12:47:28 1.47 +++ loncom/homework/grades.pm 2002/10/02 21:24:35 1.53 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Grading handler # -# $Id: grades.pm,v 1.47 2002/08/26 12:47:28 www Exp $ +# $Id: grades.pm,v 1.53 2002/10/02 21:24:35 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -111,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) { @@ -261,7 +265,7 @@ sub verifyreceipt { my ($string,$contents,$matches) = ('','',0); my ($classlist,$seclist,$ids,$stusec,$fullname) = &getclasslist('all','0'); - foreach (sort {$$fullname{$a} cmp $$fullname{$b} } keys %$fullname) { + foreach (sort {lc($$fullname{$a}) cmp lc($$fullname{$b}) } keys %$fullname) { my ($uname,$udom)=split(/\:/); if ($receipt eq &Apache::lonnet::ireceipt($uname,$udom,$courseid,$symb)) { @@ -288,7 +292,7 @@ sub verifyreceipt { $contents. ''."\n"; } - return $string.&show_grading_menu_form ($symb,$url); + return $string.&show_grading_menu_form($symb,$url); } #--- This is called by a number of programs. @@ -297,6 +301,37 @@ 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.='Part '.(split(/_/))[0].''. + 'Type: '.$responsetype.''. + 'Handgrade: '.$handgrade.''; + } + $result.=''; + + my $viewgrade; + if ($ENV{'form.handgrade'} eq 'yes') { + $viewgrade = 'View/Grade'; + } else { + $viewgrade = 'View'; + } + + $result='

 '. + $viewgrade. + ' Submissions for a Student or a Group of Students

'. + ''.$result; + $request->print(< function checkSelect(checkBox) { @@ -316,7 +351,7 @@ sub listStudents { 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,25 +359,6 @@ sub listStudents { 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.='
'. + 'Resource: '.$url.'
'; - $result.=''; - 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.=''. - ''. - ''; - } - $result.='
'. - 'Resource: '.$ENV{'form.url'}.'
Part '.(split(/_/))[0].'Type: '.$responsetype.'Handgrade: '.$handgrade.'
'; $request->print($result); my $checkhdgrade = $ENV{'form.handgrade'} eq 'yes' ? 'checked' : ''; @@ -351,9 +367,11 @@ LISTJAVASCRIPT my $gradeTable='
'."\n". ' View Problem: no '."\n". ' yes
'."\n". - ' Submissions: '."\n". - ' handgrade only'."\n". - ' last sub only'."\n". + ' Submissions: '."\n"; + if ($ENV{'form.handgrade'} eq 'yes') { + $gradeTable.=' handgrade only'."\n"; + } + $gradeTable.=' last sub only'."\n". ' last sub & parts info'."\n". ' all details'."\n". ''."\n". @@ -361,15 +379,15 @@ LISTJAVASCRIPT ''."\n". '
'."\n". '
'."\n". - ''."\n". - ''."\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". + ''."\n". + ''."\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.
'."\n". ''."\n". ''."\n"; + 'value="'.$viewgrade.'" />'."\n"; my ($classlist,$seclist,$ids,$stusec,$fullname) = &getclasslist($getsec,'0'); @@ -383,10 +401,9 @@ LISTJAVASCRIPT $gradeTable.=''."\n"; my $ctr = 0; - foreach my $student (sort {$$fullname{$a} cmp $$fullname{$b} } keys %$fullname) { + foreach my $student (sort {lc($$fullname{$a}) cmp lc($$fullname{$b}) } keys %$fullname) { my ($uname,$udom) = split(/:/,$student); - my (%status) = &student_gradeStatus($ENV{'form.url'}, - $ENV{'form.symb'},$udom,$uname,$partlist); + my (%status) =&student_gradeStatus($url,$symb,$udom,$uname,$partlist); my $statusflg = ''; foreach (keys(%status)) { $statusflg = 1 if ($status{$_} ne 'nothing'); @@ -419,14 +436,14 @@ LISTJAVASCRIPT $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'}); } elsif ($ctr == 1) { $gradeTable =~ s/type=checkbox/type=checkbox checked/; } + $gradeTable.=&show_grading_menu_form($symb,$url); $request->print($gradeTable); return ''; } @@ -1128,6 +1145,7 @@ KEYWORDS $endform.='(Next and Previous do not save the scores.)'."\n" if ($ENV{'form.handgrade'} eq 'yes'); $endform.=''; + $endform.=&show_grading_menu_form($symb,$url); $request->print($endform); } return ''; @@ -1282,7 +1300,7 @@ sub processHandGrade { my ($classlist,$seclist,$ids,$stusec,$fullname) = &getclasslist($ENV{'form.section'},'0'); my (@parsedlist,@nextlist); my ($nextflg) = 0; - foreach (sort {$$fullname{$a} cmp $$fullname{$b} } keys %$fullname) { + foreach (sort {lc($$fullname{$a}) cmp lc($$fullname{$b}) } keys %$fullname) { if ($nextflg == 1 && $button =~ /Next$/) { push @parsedlist,$_; } @@ -1566,12 +1584,22 @@ sub viewgrades { ''."\n". ''."\n". ''."\n"; - $result.='To assign the same score for all the students use the radio buttons or '. - 'text box below. To assign scores individually fill in the score boxes for '. - 'each student in the table below. A part that has already '. - 'been graded does not get changed using the radio buttons or text box. '. - 'If needed, it has to be changed individually.'; - + $result.='

Assign Common Grade To '; + if ($ENV{'form.section'} eq 'all') { + $result.='Class

'; + } elsif ($ENV{'form.section'} eq 'no') { + $result.='Students in no Section '; + } else { + $result.='Students in Section '.$ENV{'form.section'}.''; + } + $result.= '
'."\n". + ''."\n"; $ctsparts++; } - $result.='
'; +# $result.='To assign the same score for all the students use the radio buttons or '. +# 'text box below. To assign scores individually fill in the score boxes for '. +# 'each student in the table below. A part that has already '. +# 'been graded does not get changed using the radio buttons or text box. '. +# 'If needed, it has to be changed individually.'; +# $result.='
'; #radio buttons/text box for assigning points for a section or class. #handles different parts of a problem my ($partlist,$handgrade) = &response_type($ENV{'form.url'}); @@ -1613,7 +1641,8 @@ sub viewgrades { '
'; + $result.='
'.''.''."\n". + ''; $result.='    '; $result.=''; + } $result.= '
'."\n". ''. ''."\n"; @@ -1632,11 +1669,11 @@ sub viewgrades { if ($display =~ /^Partial Credit Factor/) { $_ = $display; my ($partid) = /.*?(\d+).*/; - $result.=''."\n"; next; } - $display =~ s/Problem Status/Grade Status
/; + $display =~ s|Problem Status|Grade Status
|; $result.=''."\n"; } $result.=''; @@ -1645,7 +1682,7 @@ sub viewgrades { #list all the students - with points and grade status my ($classlist,$seclist,$ids,$stusec,$fullname) = &getclasslist($ENV{'form.section'},'0'); my $ctr = 0; - foreach (sort {$$fullname{$a} cmp $$fullname{$b} } keys %$fullname) { + foreach (sort {lc($$fullname{$a}) cmp lc($$fullname{$b}) } keys %$fullname) { my ($uname,$udom) = split(/:/); $result.=''."\n"; $result.=&viewstudentgrade($url,$symb,$ENV{'request.course.id'}, @@ -2098,18 +2135,20 @@ sub view_edit_entire_class_form { my ($classlist,$sections) = &getclasslist('all','0'); my $result.='
FullnameUsernameDomainScore Part '.$partid.'
(weight = '. + $result.='
Score Part '.$partid.'
(weight = '. $weight{$partid}.')
'.$display.'
'."\n"; $result.=''."\n"; + $result.=' Grade Entire Section or Class'."\n"; $result.='
'."\n"; - $result.=' View/Grade Entire Section/Class
'."\n"; $result.='
'."\n". ''."\n". ''."\n". ''."\n"; $result.=' Select section: '."
\n"; - $result.=' 
'."\n"; + $result.=' '."\n"; $result.='
'."\n"; $result.='
'."\n"; return $result; @@ -2154,7 +2193,13 @@ sub viewGradeaStu_form { my ($classlist,$sections) = &getclasslist('all','0'); my $result.='
'."\n"; $result.=''."\n"; + $result.=' '; + if ($handgrade eq 'yes') { + $result.="View/Grade "; + } else { + $result.="View "; + } + $result.='an Individual Student\'s Submission'."\n"; $result.='
'."\n"; - $result.=' View/Grade an Individual Student\'s Submission
'."\n"; $result.='
'."\n". ''."\n". @@ -2165,18 +2210,26 @@ sub viewGradeaStu_form { ''."\n"; $result.=' Select section: '."\n"; $result.='  Display students who has: '. ' submitted'. ' everybody
'; - $result.=' (Section "no" implies the students were not assigned a section.)
' - if (grep /no/,@$sections); - - $result.='
 '."\n". - '
'."\n"; + if (ref($sections)) { + $result.=' (Section "no" implies the students were not assigned a section.)
' + if (grep /no/,@$sections); + } + + + $result.='
 '."\n"; $result.='
'."\n"; $result.='
'."\n"; return $result;