--- loncom/homework/grades.pm 2007/10/30 00:27:23 1.471 +++ loncom/homework/grades.pm 2007/11/03 00:08:09 1.477 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Grading handler # -# $Id: grades.pm,v 1.471 2007/10/30 00:27:23 albertel Exp $ +# $Id: grades.pm,v 1.477 2007/11/03 00:08:09 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -865,7 +865,7 @@ LISTJAVASCRIPT my $saveStatus = $stu_status eq '' ? 'Active' : $stu_status; $env{'form.Status'} = $saveStatus; $gradeTable.=''."\n". - ''."\n". + ''."\n". ''."\n". '
'."\n". ' Grading Increments: Check For Plagiarism'; my ($classlist, undef, $fullname) = &getclasslist($getsec,'1',$getgroup); - $gradeTable.='
'. - ''; + $gradeTable.= &Apache::loncommon::start_data_table(). + &Apache::loncommon::start_data_table_header_row(); my $loop = 0; while ($loop < 2) { - $gradeTable.=''. - ''; + $gradeTable.=''. + ''; if ($env{'form.showgrading'} eq 'yes' && $submitonly ne 'queued' && $submitonly ne 'all') { foreach (sort(@$partlist)) { my $display_part=&get_display_part((split(/_/))[0],$symb); - $gradeTable.=''; + $gradeTable.=''; + $gradeTable.=''; } $loop++; # $gradeTable.='' if ($loop%2 ==1); } - $gradeTable.=''."\n"; + $gradeTable.=&Apache::loncommon::end_data_table_header_row()."\n"; my $ctr = 0; foreach my $student (sort @@ -978,13 +978,15 @@ LISTJAVASCRIPT my $section = $classlist->{$student}->[&Apache::loncoursedata::CL_SECTION()]; my $group = $classlist->{$student}->[&Apache::loncoursedata::CL_GROUP()]; if ( $perm{'vgr'} eq 'F' ) { - $gradeTable.='' if ($ctr%2 ==1); + if ($ctr%2 ==1) { + $gradeTable.= &Apache::loncommon::start_data_table_row(); + } $gradeTable.=''. ''."\n".''."\n"; + ' '.$section.($group ne '' ?'/'.$group:'').''."\n"; if ($env{'form.showgrading'} eq 'yes' && $submitonly ne 'all') { foreach (sort keys(%status)) { @@ -993,7 +995,9 @@ LISTJAVASCRIPT } } # $gradeTable.='' if ($ctr%2 ==1); - $gradeTable.=''."\n" if ($ctr%2 ==0); + if ($ctr%2 ==0) { + $gradeTable.=&Apache::loncommon::end_data_table_row()."\n"; + } } } if ($ctr%2 ==1) { @@ -1007,10 +1011,10 @@ LISTJAVASCRIPT } elsif ($submitonly eq 'queued') { $gradeTable.=''; } - $gradeTable.=''; + $gradeTable.=&Apache::loncommon::end_data_table_row(); } - $gradeTable.='
 No.  Select '.&nameUserString('header').' Section/GroupNo.Select'.&nameUserString('header').' '.'Section/Group Part: '.$display_part. - ' Status Part: '.$display_part. + ' Status'; } } elsif ($submitonly eq 'queued') { - $gradeTable.=' '.&mt('Queue Status').' '.&mt('Queue Status').' 
'.$ctr.' '. &nameUserString(undef,$$fullname{$student},$uname,$udom). - ' '.$section.'/'.$group.'
 
'."\n". + $gradeTable.=&Apache::loncommon::end_data_table()."\n". ''."\n"; @@ -1028,7 +1032,7 @@ LISTJAVASCRIPT ' students checked for '.$submissions.')
'; } } elsif ($ctr == 1) { - $gradeTable =~ s/type=checkbox/type=checkbox checked/; + $gradeTable =~ s/type="checkbox"/type="checkbox" checked="checked"/; } $gradeTable.=&show_grading_menu_form($symb); $request->print($gradeTable); @@ -1969,7 +1973,7 @@ KEYWORDS $mode='answer'; } &Apache::lonxml::clear_problem_counter(); - $request->print(&show_problem($request,$symb,$uname,$udom,1,1,$mode)); + $request->print(&show_problem($request,$symb,$uname,$udom,1,1,$mode,{'request.prefix' => 'ctr'.$counter})); } my %record = &Apache::lonnet::restore($symb,$env{'request.course.id'},$udom,$uname); @@ -3169,14 +3173,12 @@ sub viewgrades { $sectionClass=&mt('Students in Section(s) [_1]',$section_display).''; } $result.='

'.&mt('Assign Common Grade To [_1]',$sectionClass); - $result.= ''."\n"; } } - $result.=''; + $result.=&Apache::loncommon::end_data_table_row(); return $result; } @@ -3357,15 +3362,14 @@ sub editgrades { my $symb=&get_symb($request); my $section_display = join (", ",&Apache::loncommon::get_env_multiple('form.section')); - my $title='

'.&mt('Current Grade Status').'

'; - $title.='

'.&mt('Current Resource: [_1]',$env{'form.probTitle'}).'


'."\n"; + my $title='

'.&mt('Current Grade Status').'

'; + $title.='

'.&mt('Current Resource: [_1]',$env{'form.probTitle'}).'

'."\n"; $title.='

'.&mt('Section: [_1]',$section_display).'

'."\n"; - my $result= '
'."\n". - '
'; + $result.= &Apache::loncommon::start_data_table(); #radio buttons/text box for assigning points for a section or class. #handles different parts of a problem my ($partlist,$handgrade,$responseType) = &response_type($symb); my %weight = (); my $ctsparts = 0; - $result.=''; my %seen = (); my @part_response_id = &flatten_responseType($responseType); foreach my $part_response_id (@part_response_id) { @@ -3188,12 +3190,14 @@ sub viewgrades { my $wgt = &Apache::lonnet::EXT('resource.'.$partid.'.weight',$symb); $weight{$partid} = $wgt eq '' ? '1' : $wgt; + $result.=&Apache::loncommon::start_data_table_row().'
'; $result.=''."\n"; $result.=''."\n"; my $display_part=&get_display_part($partid,$symb); - $result.='
Part: '.$display_part.'   Point: '; + $result.= + 'Part: '.$display_part.'   Point: '; $result.=''; my $ctr = 0; while ($ctr<=$weight{$partid}) { # display radio buttons in a nice table 10 across @@ -3208,26 +3212,27 @@ sub viewgrades { $partid.'" size="4" '.'onChange="javascript:writePoint(\''. $partid.'\','.$weight{$partid}.',\'textval\')" /> /'. $weight{$partid}.' (problem weight)'."\n"; - $result.= ''. - ''."\n"; + ''.&Apache::loncommon::end_data_table_row()."\n"; $ctsparts++; } - $result.='
'.'
'.'
'."\n". + $result.=&Apache::loncommon::end_data_table()."\n". ''; $result.=''; + 'onClick="javascript:resetEntry('.$ctsparts.');" />'; #table listing all the students in a section/class #header of table $result.= '

Assign Grade to Specific Students in '.$sectionClass; - $result.= '
'."\n". - ''. - '\n"; + $result.= &Apache::loncommon::start_data_table(). + &Apache::loncommon::start_data_table_header_row(). + ''. + '\n"; my (@parts) = sort(&getpartlist($symb)); my (undef,undef,$url)=&Apache::lonnet::decode_symb($symb); my @partids = (); @@ -3239,16 +3244,16 @@ sub viewgrades { push(@partids, $partid); my $display_part=&get_display_part($partid,$symb); if ($display =~ /^Partial Credit Factor/) { - $result.=''."\n"; + $result.=''."\n"; next; } else { $display =~s/\[Part: \Q$partid\E\]/Part:<\/b> $display_part/; } $display =~ s|Problem Status|Grade Status
|; - $result.=''."\n"; + $result.=''."\n"; } - $result.=''; + $result.=&Apache::loncommon::end_data_table_header_row(); my %last_resets = &get_last_resets($symb,$env{'request.course.id'},\@partids); @@ -3268,7 +3273,7 @@ sub viewgrades { $result.=&viewstudentgrade($symb,$env{'request.course.id'}, $_,$$fullname{$_},\@parts,\%weight,$ctr,\%last_resets); } - $result.='
 No. '.&nameUserString('header')."No.'.&nameUserString('header')."Score Part: '.$display_part. - '
(weight = '.$weight{$partid}.')
Score Part: '.$display_part. + '
(weight = '.$weight{$partid}.')
'.$display.''.$display.'
'; + $result.=&Apache::loncommon::end_data_table(); $result.=''."\n"; $result.=''."\n"; @@ -3291,7 +3296,7 @@ sub viewstudentgrade { my ($uname,$udom) = split(/:/,$student); my %record=&Apache::lonnet::restore($symb,$courseid,$udom,$uname); my %aggregates = (); - my $result='

'. + my $result=&Apache::loncommon::start_data_table_row().''. ''. "\n".$ctr.'  '. '
'."\n"; - $result.= ''. - ''. - '\n"; - + my $result= &Apache::loncommon::start_data_table(). + &Apache::loncommon::start_data_table_header_row(). + ''. + '\n"; my %scoreptr = ( 'correct' =>'correct_by_override', 'incorrect'=>'incorrect_by_override', @@ -3390,8 +3394,8 @@ sub editgrades { } my (undef,undef,$url) = &Apache::lonnet::decode_symb($symb); foreach my $partid (@partid) { - $header .= ''. - ''; + $header .= ''. + ''; $columns{$partid}=2; foreach my $stores (@parts) { my ($part,$type) = &split_part_type($stores); @@ -3400,22 +3404,23 @@ sub editgrades { my $display=&Apache::lonnet::metadata($url,$stores.'.display'); $display =~ s/\[Part: (\w)+\]//; $display =~ s/Number of Attempts/Tries/; - $header .= ''. - ''; + $header .= ''. + ''; $columns{$partid}+=2; } } foreach my $partid (@partid) { my $display_part=&get_display_part($partid,$symb); - $result .= ''; + $result .= ''; } - $result .= ''; - $result .= $header; - $result .= ''."\n"; - my $noupdate; + $result .= &Apache::loncommon::end_data_table_header_row(). + &Apache::loncommon::start_data_table_header_row(). + $header. + &Apache::loncommon::end_data_table_header_row(); + my @noupdate; my ($updateCtr,$noupdateCtr) = (1,1); for ($i=0; $i<$env{'form.total'}; $i++) { my $line; @@ -3427,7 +3432,8 @@ sub editgrades { my $usec=$classlist->{"$uname:$udom"}[5]; if (!&canmodify($usec)) { my $numcols=scalar(@partid)*4+2; - $noupdate.=$line.""; + push(@noupdate, + $line.""); next; } my %aggregate = (); @@ -3496,7 +3502,7 @@ sub editgrades { ''; } } - $line.=''."\n"; + $line.="\n"; my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'}; my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'}; @@ -3529,10 +3535,13 @@ sub editgrades { } } - $result.=''.$line; + $result.=&Apache::loncommon::start_data_table_row(). + ''.$line. + &Apache::loncommon::end_data_table_row(); $updateCtr++; } else { - $noupdate.=''.$line; + push(@noupdate, + ''.$line); $noupdateCtr++; } if ($aggregateflag) { @@ -3540,16 +3549,24 @@ sub editgrades { $cdom,$cnum); } } - if ($noupdate) { + if (@noupdate) { # my $numcols=(scalar(@partid)*(scalar(@parts)-1)*2)+3; my $numcols=scalar(@partid)*4+2; - $result .= ''.$noupdate; + $result .= &Apache::loncommon::start_data_table_row('LC_empty_row'). + ''. + &Apache::loncommon::end_data_table_row(); + foreach my $line (@noupdate) { + $result.= + &Apache::loncommon::start_data_table_row(). + $line. + &Apache::loncommon::end_data_table_row(); + } } - $result .= '
 No. '.&nameUserString('header')."'.&mt('No.').''.&nameUserString('header')." Old Score  New Score Old ScoreNew Score Old '.$display.'  New '.$display.' Old '.$display.'New '.$display.'Part: '.$display_part. - ' (Weight = '.$weight{$partid}.')Part: '.$display_part. + ' (Weight = '.$weight{$partid}.')
Not allowed to modify student
Not allowed to modify student
'.$awarded.' 
 '.$updateCtr.'  '.$updateCtr.' 
 '.$noupdateCtr.'  '.$noupdateCtr.' 
No Changes Occurred For the Students Below
No Changes Occurred For the Students Below
'."\n". - &show_grading_menu_form ($symb); - my $msg = '
Number of records updated = '.$rec_update. + $result .= &Apache::loncommon::end_data_table(). + &show_grading_menu_form($symb); + my $msg = '

Number of records updated = '.$rec_update. ' for '.$count.' student'.($count <= 1 ? '' : 's').'.
'. - 'Total number of students = '.$env{'form.total'}.'
'; + 'Total number of students = '.$env{'form.total'}.'

'; return $title.$msg.$result; } @@ -7279,7 +7296,7 @@ sub grading_menu { $Str .= ''. ''."\n". ''."\n". - ''."\n". + ''."\n". ''."\n". ''."\n". ''."\n"; @@ -7303,7 +7320,6 @@ sub grading_menu { $Str .= ' '.(' 'x8).$menudata->{'short_description'}. "\n"; } - $Str .="\n"; $Str .="\n"; $request->print(< @@ -7390,9 +7406,8 @@ sub submit_options { GRADINGMENUJS &commonJSfunctions($request); - my $result='

 Manual Grading/View Submission

'; my ($table,undef,$hdgrade) = &showResourceInfo($symb,$probTitle); - $result.=$table; + my $result; my (undef,$sections) = &getclasslist('all','0'); my $savedState = &savedState(); my $saveCmd = ($$savedState{'saveCmd'} eq '' ? 'submission' : $$savedState{'saveCmd'}); @@ -7409,102 +7424,104 @@ GRADINGMENUJS ''."\n". ''."\n"; - $result.='
'."\n". - ''."\n". - ''; #'; - $result.= '
'."\n". - ' Select a Grading/Viewing Option
'."\n"; - - $result.=''; - $result.=''."\n"; - $result.=''; - $result.=''; - $result.=''."\n"; - $result.=''."\n"; - $result.=''; - $result.=''; - $result.=''; - - $result.=''."\n"; - - $result.=''."\n"; - - $result.=''."\n"; - - - $result.=''."\n"; - - $result.='
'.&mt('Sections').''.&mt('Groups').''.&mt('Access Status').''.&mt('Submission Status').'
'."\n". - ' '."\n"; if (ref($sections)) { - foreach (sort (@$sections)) { - $result.=''."\n"; + foreach my $section (sort (@$sections)) { + $result.=''."\n"; } } $result.= '   '; - $result.= ''."\n"; - $result.= &Apache::lonstatistics::GroupSelect('group','multiple',3); - $result.=''."\n"; - $result.=&Apache::lonhtmlcommon::StatusOptions($saveStatus,undef,3,undef,'mult'); - - $result.='
'. - '

'. - ''. - '
'. - '

'. - ''. - '
'."\n"; - - $result.='
'; - -# $result.=''; -# $result.=''."\n"; -# -# $result.=''."\n"; -# -# $result.=''."\n"; -# -# if ((&Apache::lonnet::allowed('mgr',$env{'request.course.id'})) && ($symb)) { -# $result.=''."\n"; -# } -# $result.=''."\n"; -# $result.=''."\n"; -# -# $result.='
'. -# ''. -# ' '.&mt('scores from file').'
'. -# ''. -# ' '.&mt('clicker file').'
'. -# ' scantron forms
'. -# ''. -# ' '.&mt('receipt').': '. -# &Apache::lonnet::recprefix($env{'request.course.id'}). -# '-'. -# '
'. -# ' access times.
'. -# ' saved CODEs.
'."\n".'
'."\n". - '
'."\n"; + $result.=' + + +
+
+ '.&mt('Groups').' +
+
+ '.&Apache::lonstatistics::GroupSelect('group','multiple',5).' +
+
+
+
+ '.&mt('Access Status').' +
+
+ '.&Apache::lonhtmlcommon::StatusOptions($saveStatus,undef,5,undef,'mult').' +
+
+
+
+ '.&mt('Submission Status').' +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+ + +
+

+ '.&mt('Grade Complete Folder for One Student').' +

+
+
+
+ +
+
+ +
+
+
+
+ + '; return $result; }