--- loncom/homework/grades.pm 2006/01/27 01:52:25 1.306 +++ loncom/homework/grades.pm 2006/02/07 14:18:18 1.311 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Grading handler # -# $Id: grades.pm,v 1.306 2006/01/27 01:52:25 banghart Exp $ +# $Id: grades.pm,v 1.311 2006/02/07 14:18:18 banghart Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1812,7 +1812,8 @@ KEYWORDS $file_counter ++; &Apache::lonnet::allowuploaded('/adm/grades',$file); $lastsubonly.='
'.$file.''; - $lastsubonly.='Return commented document to student. '."\n"; + $lastsubonly.=' Return commented document to student. '."\n"; $lastsubonly.=''; } @@ -2029,32 +2030,21 @@ sub processHandGrade { my @collabstrs=&Apache::loncommon::get_env_multiple("form.collaborator$ctr"); foreach my $collabstr (@collabstrs) { my ($part,@collaborators) = split(/:/,$collabstr); - foreach (@collaborators) { + foreach my $collaborator (@collaborators) { my ($errorflag,$pts,$wgt) = - &saveHandGrade($request,$url,$symb,$_,$udom,$ctr, + &saveHandGrade($request,$url,$symb,$collaborator,$udom,$ctr, $env{'form.unamedom'.$ctr},$part); if ($errorflag eq 'not_allowed') { - $request->print("Not allowed to modify grades for $_:$udom"); + $request->print("Not allowed to modify grades for $collaborator:$udom"); next; } else { if ($message ne '') { - $msgstatus = &Apache::lonmsg::user_normal_msg($_,$udom,$env{'form.msgsub'},$message); + $msgstatus = &Apache::lonmsg::user_normal_msg($collaborator,$udom,$env{'form.msgsub'},$message); } - } } } } - if ($env{'form.returndoc1'}) { - # if multiple files are uploaded names will be 'returndoc2', 'returndoc3' - my $file_counter = 1; - while ($env{'form.returndoc'.$file_counter}) { - my $fname=$env{'form.returndoc'.$file_counter.'.filename'}; - $request->print("
".$fname." will be the uploaded file name"); - $request->print("Will upload document".$env{'form.returndocorig'.$file_counter}); - $file_counter ++; - } - } $ctr++; } } @@ -2234,6 +2224,7 @@ sub saveHandGrade { my @parts = split(/:/,$env{'form.partlist'.$newflg}); foreach my $new_part (@parts) { #collaborator may vary for different parts + $request->print('form.part'.$new_part.'_returndoc1'); if ($submitter && $new_part ne $part) { next; } my $dropMenu = $env{'form.GD_SEL'.$newflg.'_'.$new_part}; if ($dropMenu eq 'excused') { @@ -2302,6 +2293,27 @@ sub saveHandGrade { $newrecord{'resource.'.$new_part.'.regrader'}= "$env{'user.name'}:$env{'user.domain'}"; } + if ($env{'form.part'.$new_part.'_returndoc1'}) { + # if multiple files are uploaded names will be 'returndoc2','returndoc3' + + my $portfolio_root = &Apache::loncommon::propath($domain, + $stuname). + '/userfiles/portfolio'; + $request->print('
'.$portfolio_root.'
'); + + # my $result=&Apache::lonnet::userfileupload('uploaddoc','', + # 'portfolio'.$env{'form.currentpath'}); + + my $file_counter = 1; + while ($env{'form.part'.$new_part.'_returndoc'.$file_counter}) { + my $fname=$env{'form.returndoc'.$file_counter.'.filename'}; + $newrecord{'resource.'.$new_part.'.handback'} = $env{'form.returndocorig'.$file_counter}; + $request->print("
".$fname." will be the uploaded file name"); + $request->print("Will upload document".$env{'form.returndocorig'.$file_counter}); + $file_counter++; + } + } + # unless problem has been graded, set flag to version the submitted files unless ($record{'resource.'.$new_part.'.solved'} =~ /^correct_/ || $record{'resource.'.$new_part.'.solved'} eq 'incorrect_by_override' || @@ -2418,22 +2430,7 @@ sub version_portfiles { my ($answer_name,$answer_ver,$answer_ext) = &file_name_version_ext($answer_file); my @dir_list = &Apache::lonnet::dirlist($directory,$domain,$stu_name,$portfolio_root); - 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)) { - # 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; - } - } - } - } - $version++; + $version = &get_next_version($answer_name, $answer_ext, \@dir_list); my $new_answer = &version_selected_portfile($domain, $stu_name, $directory, $answer_file, $version); if ($new_answer ne 'problem getting file') { push(@v_portfiles, $directory.$new_answer); @@ -2449,6 +2446,28 @@ sub version_portfiles { return 'ok'; } +sub get_next_version { + my ($answer_name, $answer_ext, $dir_list); + my $version; + 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)) { + # 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; + } + } + } + } + $version ++; + return($version); +} + sub version_selected_portfile { my ($domain,$stu_name,$directory,$file_name,$version) = @_; my ($answer_name,$answer_ver,$answer_ext) = @@ -3319,8 +3338,13 @@ sub csvuploadmap { unshift(@fields,['none','']); $i=&Apache::loncommon::csv_samples_select_table($request,\@records, \@fields); - my %sone=&Apache::loncommon::record_sep($records[0]); - $keyfields=join(',',sort(keys(%sone))); + foreach my $rec (@records) { + my %temp = &Apache::loncommon::record_sep($rec); + if (%temp) { + $keyfields=join(',',sort(keys(%temp))); + last; + } + } } } &csvuploadmap_footer($request,$i,$keyfields); @@ -4086,11 +4110,11 @@ sub scantron_CODElist { sub scantron_CODEunique { my $result=' + value="yes" checked="checked" /> Yes + value="no" /> No '; return $result; }