--- loncom/homework/grades.pm 2005/04/08 20:12:58 1.262 +++ loncom/homework/grades.pm 2005/05/15 01:11:32 1.265 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Grading handler # -# $Id: grades.pm,v 1.262 2005/04/08 20:12:58 banghart Exp $ +# $Id: grades.pm,v 1.265 2005/05/15 01:11:32 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -2178,11 +2178,8 @@ sub saveHandGrade { } } if (scalar(keys(%newrecord)) > 0) { - if (scalar @v_flag) { - foreach my $part_flagged (@v_flag) { - &Apache::lonnet::unmark_as_readonly($domain,$stuname,$symb.$env{'request.course.id'}); - &version_portfiles(\%record, \@parts_graded, $env{'request.course.id'}, $symb, $domain, $stuname); - } + if (scalar(@v_flag)) { + &version_portfiles(\%record, \@parts_graded, $env{'request.course.id'}, $symb, $domain, $stuname, \@v_flag); } &Apache::lonnet::cstore(\%newrecord,$symb, $env{'request.course.id'},$domain,$stuname); @@ -2192,18 +2189,20 @@ sub saveHandGrade { # ----------- Handles creating versions for portfolio files as answers sub version_portfiles { - my ($record, $parts_graded, $courseid, $symb, $domain, $stuname) = @_; + my ($record, $parts_graded, $courseid, $symb, $domain, $stuname, $v_flag) = @_; + my $version_parts = join('|',@$v_flag); my $parts = join('|', @$parts_graded); my $portfolio_root = &Apache::loncommon::propath($domain, $stuname). '/userfiles/portfolio'; foreach my $key(keys %$record) { - #&Apache::lonnet::logthis("key is $key, value is $$record{$key}"); my $new_portfiles; - if ($key =~ /^resource\.($parts)\./ && $key =~ /\.portfiles$/) { + if ($key =~ /^resource\.($version_parts)\./ && $key =~ /\.portfiles$/ ) { my @v_portfiles; my @portfiles = split(/,/,$$record{$key}); + # &Apache::lonnet::logthis("should be unmarking and remarking"); foreach my $file (@portfiles) { + &Apache::lonnet::unmark_as_readonly($domain,$stuname,[$symb,$env{'request.course.id'}],$file); my ($directory,$answer_file) =($file =~ /^(.*?)([^\/]*$)/); my $version = 0; my @answer_file_parts = split(/\./, $answer_file); @@ -2232,6 +2231,9 @@ sub version_portfiles { my $copy_result = &Apache::lonnet::finishuserfileupload($stuname,$domain,$home_server,'copy', '/portfolio'.$directory.$answer_file_parts[0].'.'.$version.'.'.$answer_file_parts[-1]); push(@v_portfiles, $answer_file_parts[0].'.'.$version.'.'.$answer_file_parts[-1]); + &Apache::lonnet::mark_as_readonly($domain,$stuname, + ['/portfolio'.$directory.$answer_file_parts[0].'.'.$version.'.'.$answer_file_parts[-1]], + [$symb,$env{'request.course.id'},'graded']); } } $$record{$key} = join(',',@v_portfiles); @@ -2306,6 +2308,7 @@ sub viewgrades_js { function writeRadText(partid,weight) { var selval = document.classgrade["SELVAL_"+partid]; var radioButton = document.classgrade["RADVAL_"+partid]; + var override = document.classgrade["FORCE_"+partid].checked; var textbox = document.classgrade["TEXTVAL_"+partid]; if (selval[1].selected || selval[2].selected) { for (var i=0; i<radioButton.length; i++) { @@ -2319,7 +2322,7 @@ sub viewgrades_js { var scorename = document.classgrade["GD_"+user+"_"+partid+"_awarded"]; var saveval = document.classgrade["GD_"+user+"_"+partid+"_solved_s"].value; var selname = document.classgrade["GD_"+user+"_"+partid+"_solved"]; - if (saveval != "correct") { + if ((saveval != "correct") || override) { scorename.value = ""; if (selval[1].selected) { selname[1].selected = true; @@ -2336,7 +2339,7 @@ sub viewgrades_js { var scorename = document.classgrade["GD_"+user+"_"+partid+"_awarded"]; var saveval = document.classgrade["GD_"+user+"_"+partid+"_solved_s"].value; var selname = document.classgrade["GD_"+user+"_"+partid+"_solved"]; - if (saveval != "correct") { + if ((saveval != "correct") || override) { scorename.value = document.classgrade["GD_"+user+"_"+partid+"_awarded_s"].value; selname[0].selected = true; } @@ -2490,7 +2493,8 @@ sub viewgrades { $weight{$partid}.')"> '. '<option selected="on"> </option>'. '<option>excused</option>'. - '<option>reset status</option></select></td></tr>'."\n"; + '<option>reset status</option></select></td>'. + '<td><input type="checkbox" name="FORCE_'.$partid.'" /> Override "Correct"</td></tr>'."\n"; $ctsparts++; } $result.='</table>'.'</td></tr></table>'.'</td></tr></table>'."\n". @@ -3783,7 +3787,7 @@ sub scantron_selectphase { </tr> <tr bgcolor="#ffffe6"> <td colspan="2"> - <input type="submit" value="Validate Scantron Records" /> + <input type="submit" value="Grading: Validate Scantron Records" /> </td> </tr> </table> @@ -4238,10 +4242,10 @@ sub scantron_do_warning { $r->print('<p><font color="red">You have not selected a the format of the student\'s response data.</font></p>'); } } else { - my $warning=&scantron_warning_screen('Validate Records'); + my $warning=&scantron_warning_screen('Grading: Validate Records'); $r->print(<<STUFF); $warning -<input type="submit" name="submit" value="Validate Records" /> +<input type="submit" name="submit" value="Grading: Validate Records" /> <input type="hidden" name="command" value="scantron_validate" /> STUFF }