--- loncom/homework/grades.pm 2006/09/22 21:16:14 1.302.2.7 +++ loncom/homework/grades.pm 2006/01/17 23:09:50 1.303 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Grading handler # -# $Id: grades.pm,v 1.302.2.7 2006/09/22 21:16:14 albertel Exp $ +# $Id: grades.pm,v 1.303 2006/01/17 23:09:50 banghart Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1577,7 +1577,7 @@ sub submission { } my $overRideScore = $env{'form.overRideScore'} eq '' ? 'no' : $env{'form.overRideScore'}; - $request->print('
'."\n". + $request->print(''."\n". ''."\n". ''."\n". ''."\n". @@ -1807,9 +1807,14 @@ KEYWORDS } if (@files) { $lastsubonly.='
Like all files provided by users, this file may contain virusses
'; + my $file_counter = 0; foreach my $file (@files) { + $file_counter ++; &Apache::lonnet::allowuploaded('/adm/grades',$file); $lastsubonly.='
'.$file.''; + $lastsubonly.='Return commented document to student. '."\n"; + $lastsubonly.=''; + } $lastsubonly.='
'; } @@ -2040,6 +2045,14 @@ sub processHandGrade { } } } + if ($env{'form.returndoc1'}) { + # if multiple files are uploaded names will be 'returndoc2', 'returndoc3' + my $file_counter = 1; + while ($env{'form.returndoc'.$file_counter}) { + $request->print("Will upload document".$env{'form.returndocorig'.$file_counter}); + $file_counter ++; + } + } $ctr++; } } @@ -2248,7 +2261,7 @@ sub saveHandGrade { my $solvedstatus = $record{'resource.'.$new_part.'.solved'}; if ($aggtries > 0) { - &decrement_aggs($symb,$new_part,\%aggregate,$aggtries,$totaltries,$solvedstatus); + &decrement($symb,$new_part,\%aggregate,$aggtries,$totaltries,$solvedstatus); $aggregateflag = 1; } } elsif ($dropMenu eq '') { @@ -2397,23 +2410,22 @@ sub version_portfiles { &Apache::lonnet::logthis("should be unmarking and remarking $key",@portfiles); foreach my $file (@portfiles) { &Apache::lonnet::unmark_as_readonly($domain,$stuname,[$symb,$env{'request.course.id'}],$file); - my ($directory,$answer_file) =($file =~ /^(.*?)([^\/]*)$/); + my ($directory,$answer_file) =($file =~ /^(.*?)([^\/]*$)/); my $version = 0; - my ($answer_name,$answer_ver,$answer_ext) = - &file_name_version_ext($answer_file); + my @answer_file_parts = split(/\./, $answer_file); my @dir_list = &Apache::lonnet::dirlist($directory,$domain,$stuname,$portfolio_root); + my @file_names; + my @file_name_parts; foreach my $row (@dir_list) { - my ($file) = split(/\&/,$row,2); - my ($file_name,$file_version,$file_ext) = - &file_name_version_ext($file); - if (($file_name eq $answer_name) && - ($file_ext eq $answer_ext)) { + @file_names = split(/\&/,$row,2); + @file_name_parts = split(/\./, $file_names[0]); + # ($file_name_parts[scalar @file_name_parts] eq $answer_file_parts[scalar @answer_file_parts]) + if (($file_name_parts[0] eq $answer_file_parts[0]) && + ($file_name_parts[-1] eq $answer_file_parts[-1])) { # gets here if filename and extension match, regardless of version - if ($file_version ne '') { - # a versioned file is found so save it for later - if ($file_version > $version) { - $version = $file_version; - } + if (scalar @file_name_parts == 3) { # a versioned file is found + # so save it for later + if ($file_name_parts[1] > $version) {$version = $file_name_parts[1]}; } } } @@ -2422,13 +2434,11 @@ sub version_portfiles { if($env{'form.copy'} eq '-1') { &Apache::lonnet::logthis('problem getting file '.$directory.$answer_file); } else { - my $new_answer = $answer_name.'.'.$version.'.'.$answer_ext; - my $copy_result = &Apache::lonnet::finishuserfileupload( - $stuname,$domain,'copy', - '/portfolio'.$directory.$new_answer); - push(@v_portfiles, $directory.$new_answer); + my $copy_result = &Apache::lonnet::finishuserfileupload($stuname,$domain,'copy', + '/portfolio'.$directory.$answer_file_parts[0].'.'.$version.'.'.$answer_file_parts[-1]); + push(@v_portfiles, $directory.$answer_file_parts[0].'.'.$version.'.'.$answer_file_parts[-1]); &Apache::lonnet::mark_as_readonly($domain,$stuname, - ['/portfolio'.$directory.$new_answer], + ['/portfolio'.$directory.$answer_file_parts[0].'.'.$version.'.'.$answer_file_parts[-1]], [$symb,$env{'request.course.id'},'graded']); } } @@ -2439,22 +2449,6 @@ sub version_portfiles { } -sub file_name_version_ext { - my ($file)=@_; - my @file_parts = split(/\./, $file); - my ($name,$version,$ext); - if (@file_parts > 1) { - $ext=pop(@file_parts); - if (@file_parts > 1 && $file_parts[-1] =~ /^\d+$/) { - $version=pop(@file_parts); - } - $name=join('.',@file_parts); - } else { - $name=join('.',@file_parts); - } - return($name,$version,$ext); -} - #-------------------------------------------------------------------------------------- # #-------------------------- Next few routines handles grading by section or whole class @@ -3291,13 +3285,8 @@ sub csvuploadmap { unshift(@fields,['none','']); $i=&Apache::loncommon::csv_samples_select_table($request,\@records, \@fields); - foreach my $rec (@records) { - my %temp = &Apache::loncommon::record_sep($rec); - if (%temp) { - $keyfields=join(',',sort(keys(%temp))); - last; - } - } + my %sone=&Apache::loncommon::record_sep($records[0]); + $keyfields=join(',',sort(keys(%sone))); } } &csvuploadmap_footer($request,$i,$keyfields); @@ -3459,7 +3448,7 @@ sub csvuploadassign { } $request->print("
Stored $countdone students\n"); if (@skipped) { - $request->print('

Skipped Students

'); + $request->print('Skipped Students

'); foreach my $student (@skipped) { $request->print("$student
\n"); } } if (@notallowed) { @@ -3679,7 +3668,7 @@ sub displayPage { if($curRes == $iterator->BEGIN_MAP) { $depth++; } if($curRes == $iterator->END_MAP) { $depth--; } - if (ref($curRes) && $curRes->is_problem()) { + if (ref($curRes) && $curRes->is_problem() && !$curRes->randomout) { my $parts = $curRes->parts(); my $title = $curRes->compTitle(); my $symbx = $curRes->symb(); @@ -3876,7 +3865,7 @@ sub updateGradeByPage { if($curRes == $iterator->BEGIN_MAP) { $depth++; } if($curRes == $iterator->END_MAP) { $depth--; } - if (ref($curRes) && $curRes->is_problem()) { + if (ref($curRes) && $curRes->is_problem() && !$curRes->randomout) { my $parts = $curRes->parts(); my $title = $curRes->compTitle(); my $symbx = $curRes->symb(); @@ -4063,11 +4052,11 @@ sub scantron_CODElist { sub scantron_CODEunique { my $result=' + value="Yes" checked="on" /> Yes + value="No" /> No '; return $result; } @@ -4517,29 +4506,21 @@ sub reset_skipping_status { &scantron_putfile(undef,$scan_data); } -sub start_skipping { +sub allow_skipping { my ($scan_data,$i)=@_; my %remembered=split(':',&scan_data($scan_data,'remember_skipping')); - if ($env{'form.scantron_options_redo'} =~ /^redo_/) { - $remembered{$i}=2; - } else { - $remembered{$i}=1; - } + delete($remembered{$i}); &scan_data($scan_data,'remember_skipping',join(':',%remembered)); } sub should_be_skipped { - my ($scanlines,$scan_data,$i)=@_; + my ($scan_data,$i)=@_; if ($env{'form.scantron_options_redo'} !~ /^redo_/) { # not redoing old skips - if ($scanlines->{'skipped'}[$i]) { return 1; } return 0; } my %remembered=split(':',&scan_data($scan_data,'remember_skipping')); - - if (exists($remembered{$i}) && $remembered{$i} != 2 ) { - return 0; - } + if (exists($remembered{$i})) { return 0; } return 1; } @@ -4551,7 +4532,7 @@ sub remember_current_skipped { $to_remember{$i}=1; } } - + &Apache::lonnet::logthis('remembering '.join(':',%to_remember)); &scan_data($scan_data,'remember_skipping',join(':',%to_remember)); &scantron_putfile(undef,$scan_data); } @@ -4656,6 +4637,7 @@ sub scantron_validate_file { } if ($env{'form.scantron_options_redo'} eq 'redo_skipped') { &remember_current_skipped(); + &scantron_remove_file('skipped'); $env{'form.scantron_options_redo'}='redo_skipped_ready'; } @@ -4818,8 +4800,8 @@ sub scantron_putfile { sub scantron_get_line { my ($scanlines,$scan_data,$i)=@_; - if (&should_be_skipped($scanlines,$scan_data,$i)) { return undef; } - #if ($scanlines->{'skipped'}[$i]) { return undef; } + if (&should_be_skipped($scan_data,$i)) { return undef; } + if ($scanlines->{'skipped'}[$i]) { return undef; } if ($scanlines->{'corrected'}[$i]) {return $scanlines->{'corrected'}[$i];} return $scanlines->{'orig'}[$i]; } @@ -4839,21 +4821,12 @@ sub scantron_put_line { my ($scanlines,$scan_data,$i,$newline,$skip)=@_; if ($skip) { $scanlines->{'skipped'}[$i]=$newline; - &start_skipping($scan_data,$i); + &allow_skipping($scan_data,$i); return; } $scanlines->{'corrected'}[$i]=$newline; } -sub scantron_clear_skip { - my ($scanlines,$scan_data,$i)=@_; - if (exists($scanlines->{'skipped'}[$i])) { - undef($scanlines->{'skipped'}[$i]); - return 1; - } - return 0; -} - sub scantron_validate_ID { my ($r,$currentphase) = @_; @@ -5297,10 +5270,6 @@ SCANTRONFORM ($uname,$udom)=split(/:/,$uname); &Apache::lonnet::delenv('form.counter'); &Apache::lonnet::appenv(%$scan_record); - - if (&scantron_clear_skip($scanlines,$scan_data,$i)) { - &scantron_putfile($scanlines,$scan_data); - } my $i=0; foreach my $resource (@resources) {