--- loncom/homework/grades.pm 2006/02/27 02:06:52 1.319 +++ loncom/homework/grades.pm 2006/02/28 02:47:30 1.323 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # The LON-CAPA Grading handler # -# $Id: grades.pm,v 1.319 2006/02/27 02:06:52 bowersj2 Exp $ +# $Id: grades.pm,v 1.323 2006/02/28 02:47:30 banghart Exp $ # # Copyright Michigan State University Board of Trustees # @@ -1413,7 +1413,7 @@ SUBJAVASCRIPT #--- displays the grading box, used in essay type problem and grading by page/sequence sub gradeBox { - my ($request,$symb,$uname,$udom,$counter,$partid,$record,$respid) = @_; + my ($request,$symb,$uname,$udom,$counter,$partid,$record) = @_; my $checkIcon = ''; my $wgt = &Apache::lonnet::EXT('resource.'.$partid.'.weight',$symb,$udom,$uname); @@ -1421,9 +1421,8 @@ sub gradeBox { 'problem weight assigned by computer'); $wgt = ($wgt > 0 ? $wgt : '1'); my $score = ($$record{'resource.'.$partid.'.awarded'} eq '' ? - '' : compute_points($$record{'resource.'.$partid.'.awarded'},$wgt)); + '' : &compute_points($$record{'resource.'.$partid.'.awarded'},$wgt)); my $result=''."\n"; - $result.='
'.$partid.' - '.$respid.'
'; my $display_part=&get_display_part($partid,undef,$symb); my %last_resets = &get_last_resets($symb,$env{'request.course.id'}, [$partid]); @@ -1472,21 +1471,35 @@ sub gradeBox { ''."\n"; $result.=''."\n"; - $result.=&handbackBox($uname,$udom,$counter,$partid,$record,$respid); + $result.=&handback_box($symb,$uname,$udom,$counter,$partid,$record); return $result; } -sub handbackBox { - my ($uname,$udom,$counter,$partid,$record,$respid) = @_; - my $files=&get_submitted_files($udom,$uname,$partid,$respid,$record); + +sub handback_box { + my ($symb,$uname,$udom,$counter,$partid,$record) = @_; + my ($map,$resid,$url) = &Apache::lonnet::decode_symb($symb); + my ($partlist,$handgrade,$responseType) = &response_type($url,$symb); + my (@respids); + foreach my $part_resp (sort(keys(%$handgrade))) { + my ($part,$resp) = split(/_/,$part_resp); + if ($part eq $partid) { + push @respids,$resp; + } + } my $result; - if (@$files) { - my $file_counter = 0; + foreach my $respid (@respids) { + my $prefix = $counter.'_'.$partid.'_'.$respid.'_'; + my $files=&get_submitted_files($udom,$uname,$partid,$respid,$record); + next if (!@$files); + my $file_counter = 1; foreach my $file (@$files) { - $result.=' Return commented document to student. '."\n"; - $result.=''; - $result.='
'; - } + my ($file_disp) = ($file =~ m|.+/(.+)$|); + $result.=&mt('Return commented version of [_1] to student.', + ''.$file_disp.''); + $result.=''."\n"; + $result.='
'; + $file_counter++; + } } return $result; } @@ -1914,18 +1927,14 @@ KEYWORDS my %seen = (); my @partlist; my @gradePartRespid; - for my $part_resp(sort keys(%$handgrade)) { + for my $part_resp (sort(keys(%$handgrade))) { my ($partid,$respid) = split(/_/, $part_resp); - #next if ($seen{$partid} > 0); - if ($seen{$partid} > 0) { - $request->print(&handbackBox($uname,$udom,$counter,$partid,\%record,$respid)); - next; - } + next if ($seen{$partid} > 0); $seen{$partid}++; next if ($$handgrade{$part_resp} =~ /:no$/ && $env{'form.lastSub'} =~ /^(hdgrade)$/); push @partlist,$partid; push @gradePartRespid,$partid.'.'.$respid; - $request->print(&gradeBox($request,$symb,$uname,$udom,$counter,$partid,\%record,$respid)); + $request->print(&gradeBox($request,$symb,$uname,$udom,$counter,$partid,\%record)); } $result=''."\n"; @@ -2316,25 +2325,21 @@ 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; - my $respid = $env{'form.respid'}; - while ($env{'form.part'.$new_part.'_returndoc'.$file_counter}) { - my $fname=$env{'form.returndoc'.$file_counter.'.filename'}; - $newrecord{"resource.$new_part.$respid.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++; + my ($partlist,$handgrade,$responseType) = &response_type($url,$symb); + foreach my $part_resp (sort(keys(%$handgrade))) { + my ($part_id, $resp_id) = split(/_/,$part_resp); + &Apache::lonnet::logthis('form.'.$newflg.'_'.$part_resp.'_returndoc1'); + &Apache::lonnet::logthis("new part is $new_part and partid is $part_id"); + if (($env{'form.'.$newflg.'_'.$part_resp.'_returndoc1'}) && ($new_part == $part_id)) { + # if multiple files are uploaded names will be 'returndoc2','returndoc3' + my $file_counter = 1; + while ($env{'form.'.$newflg.'_'.$part_resp.'_returndoc'.$file_counter}) { + my $fname=$env{'form.'.$newflg.'_'.$part_resp.'_returndoc'.$file_counter.'.filename'}; + $newrecord{"resource.$new_part.$resp_id.handback"} = $env{'form.returndocorig'.$file_counter}; + $request->print("
".$fname." will be the uploaded file name"); + $request->print("Will upload document".$env{'form.'.$newflg.'_'.$part_resp.'_origdoc'.$file_counter}); + $file_counter++; + } } } @@ -2374,6 +2379,7 @@ sub saveHandGrade { } return ('',$pts,$wgt); } + sub get_submitted_files { my ($udom,$uname,$partid,$respid,$record) = @_; my @files; @@ -2388,6 +2394,7 @@ sub get_submitted_files { } return (\@files); } + # ----------- Provides number of tries since last reset. sub get_num_tries { my ($record,$last_reset,$part) = @_; @@ -2893,7 +2900,7 @@ sub viewstudentgrade { $aggregates{$part} = 1; } if ($type eq 'awarded') { - my $pts = $score eq '' ? '' : compute_points($score,$$weight{$part}); + my $pts = $score eq '' ? '' : &compute_points($score,$$weight{$part}); $result.=''."\n"; $result.='