version 1.315, 2006/02/25 20:25:02
|
version 1.321, 2006/02/27 20:32:38
|
Line 471 sub jscriptNform {
|
Line 471 sub jscriptNform {
|
# Given the score (as a number [0-1] and the weight) what is the final |
# Given the score (as a number [0-1] and the weight) what is the final |
# point value? This function will round to the nearest tenth, third, |
# point value? This function will round to the nearest tenth, third, |
# or quarter if one of those is within the tolerance of .00001. |
# or quarter if one of those is within the tolerance of .00001. |
sub compute_points |
sub compute_points { |
{ |
|
my ($score, $weight) = @_; |
my ($score, $weight) = @_; |
|
|
my $tolerance = .00001; |
my $tolerance = .00001; |
Line 483 sub compute_points
|
Line 482 sub compute_points
|
my ($factor) = @_; |
my ($factor) = @_; |
my $num = ($points * $factor) + $tolerance; |
my $num = ($points * $factor) + $tolerance; |
my $floored_num = floor($num); |
my $floored_num = floor($num); |
if ($num - $floored_num < 2 * $tolerance * $factor) |
if ($num - $floored_num < 2 * $tolerance * $factor) { |
{ |
|
return $floored_num / $factor; |
return $floored_num / $factor; |
} |
} |
return $points; |
return $points; |
Line 1415 SUBJAVASCRIPT
|
Line 1413 SUBJAVASCRIPT
|
|
|
#--- displays the grading box, used in essay type problem and grading by page/sequence |
#--- displays the grading box, used in essay type problem and grading by page/sequence |
sub gradeBox { |
sub gradeBox { |
my ($request,$symb,$uname,$udom,$counter,$partid,$record) = @_; |
my ($request,$symb,$uname,$udom,$counter,$partid,$record,$respid) = @_; |
my $checkIcon = '<img src="'.$request->dir_config('lonIconsURL'). |
my $checkIcon = '<img src="'.$request->dir_config('lonIconsURL'). |
'/check.gif" height="16" border="0" />'; |
'/check.gif" height="16" border="0" />'; |
my $wgt = &Apache::lonnet::EXT('resource.'.$partid.'.weight',$symb,$udom,$uname); |
my $wgt = &Apache::lonnet::EXT('resource.'.$partid.'.weight',$symb,$udom,$uname); |
Line 1423 sub gradeBox {
|
Line 1421 sub gradeBox {
|
'<font color="red">problem weight assigned by computer</font>'); |
'<font color="red">problem weight assigned by computer</font>'); |
$wgt = ($wgt > 0 ? $wgt : '1'); |
$wgt = ($wgt > 0 ? $wgt : '1'); |
my $score = ($$record{'resource.'.$partid.'.awarded'} eq '' ? |
my $score = ($$record{'resource.'.$partid.'.awarded'} eq '' ? |
'' : $$record{'resource.'.$partid.'.awarded'}*$wgt); |
'' : &compute_points($$record{'resource.'.$partid.'.awarded'},$wgt)); |
my $result='<input type="hidden" name="WGT'.$counter.'_'.$partid.'" value="'.$wgt.'" />'."\n"; |
my $result='<input type="hidden" name="WGT'.$counter.'_'.$partid.'" value="'.$wgt.'" />'."\n"; |
|
$result.='<br />'.$partid.' - '.$respid.'<br />'; |
my $display_part=&get_display_part($partid,undef,$symb); |
my $display_part=&get_display_part($partid,undef,$symb); |
my %last_resets = &get_last_resets($symb,$env{'request.course.id'}, |
my %last_resets = &get_last_resets($symb,$env{'request.course.id'}, |
[$partid]); |
[$partid]); |
Line 1473 sub gradeBox {
|
Line 1472 sub gradeBox {
|
'<input type="hidden" name="aggtries'.$counter.'_'.$partid.'" value="'. |
'<input type="hidden" name="aggtries'.$counter.'_'.$partid.'" value="'. |
$aggtries.'" />'."\n"; |
$aggtries.'" />'."\n"; |
$result.='</td></tr></table>'."\n"; |
$result.='</td></tr></table>'."\n"; |
my $files=&get_submitted_files($udom,$uname,$partid,$counter,$record); |
$result.=&handbackBox($uname,$udom,$counter,$partid,$record,$respid); |
|
return $result; |
|
} |
|
sub handbackBox { |
|
my ($uname,$udom,$counter,$partid,$record,$respid) = @_; |
|
my $files=&get_submitted_files($udom,$uname,$partid,$respid,$record); |
|
my $result; |
if (@$files) { |
if (@$files) { |
my $file_counter = 0; |
my $file_counter = 1; |
foreach my $file (@$files) { |
foreach my $file (@$files) { |
$result.=' Return commented document to student. <input type="file" name="part'.$partid.'_returndoc'; |
$file =~ /.+\/(.+$)/; |
|
my $file_disp = $1; |
|
$result.=' Return commented version of <span class="filename">'.$file_disp.' </span>to student. <input type="file" name="'.$partid.'_'.$respid.'_returndoc'; |
$result.=$file_counter.'" />'."\n"; |
$result.=$file_counter.'" />'."\n"; |
$result.='<input type="hidden" name="respid" value="'.$counter.'" />'; |
$result.='<input type="hidden" name="'.$partid.'_'.$respid.'_origdoc'.$file_counter.'" value="'.$file.'" /><br />'; |
$result.='<input type="hidden" name="returndocorig'.$file_counter.'" value="'.$file.'" />'; |
$file_counter++; |
} |
} |
} |
} |
|
return $result; |
|
|
return $result; |
|
} |
} |
|
|
sub show_problem { |
sub show_problem { |
Line 1827 KEYWORDS
|
Line 1832 KEYWORDS
|
$display_part.' <font color="#999999">( ID '.$respid. |
$display_part.' <font color="#999999">( ID '.$respid. |
' )</font> '; |
' )</font> '; |
my $files=&get_submitted_files($udom,$uname,$partid,$respid,\%record); |
my $files=&get_submitted_files($udom,$uname,$partid,$respid,\%record); |
# if ($record{"resource.$partid.$respid.portfiles"}) { |
|
# my $file_url = '/uploaded/'.$udom.'/'.$uname.'/portfolio'; |
|
# foreach my $file (split(',',$record{"resource.$partid.$respid.portfiles"})) { |
|
# push(@files,$file_url.$file); |
|
# } |
|
# } |
|
# if ($record{"resource.$partid.$respid.uploadedurl"}) { |
|
# push(@files,$record{"resource.$partid.$respid.uploadedurl"}); |
|
# } |
|
if (@$files) { |
if (@$files) { |
$lastsubonly.='<br /><font color="red" size="1">Like all files provided by users, this file may contain virusses</font><br />'; |
$lastsubonly.='<br /><font color="red" size="1">Like all files provided by users, this file may contain virusses</font><br />'; |
my $file_counter = 0; |
my $file_counter = 0; |
Line 1920 KEYWORDS
|
Line 1916 KEYWORDS
|
my %seen = (); |
my %seen = (); |
my @partlist; |
my @partlist; |
my @gradePartRespid; |
my @gradePartRespid; |
for (sort keys(%$handgrade)) { |
for my $part_resp(sort keys(%$handgrade)) { |
my ($partid,$respid) = split(/_/); |
my ($partid,$respid) = split(/_/, $part_resp); |
next if ($seen{$partid} > 0); |
#next if ($seen{$partid} > 0); |
|
if ($seen{$partid} > 0) { |
|
$request->print(&handbackBox($uname,$udom,$counter,$partid,\%record,$respid)); |
|
next; |
|
} |
$seen{$partid}++; |
$seen{$partid}++; |
next if ($$handgrade{$_} =~ /:no$/ && $env{'form.lastSub'} =~ /^(hdgrade)$/); |
next if ($$handgrade{$part_resp} =~ /:no$/ && $env{'form.lastSub'} =~ /^(hdgrade)$/); |
push @partlist,$partid; |
push @partlist,$partid; |
push @gradePartRespid,$partid.'.'.$respid; |
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='<input type="hidden" name="partlist'.$counter. |
$result='<input type="hidden" name="partlist'.$counter. |
'" value="'.(join ":",@partlist).'" />'."\n"; |
'" value="'.(join ":",@partlist).'" />'."\n"; |
Line 2319 sub saveHandGrade {
|
Line 2318 sub saveHandGrade {
|
$newrecord{'resource.'.$new_part.'.regrader'}= |
$newrecord{'resource.'.$new_part.'.regrader'}= |
"$env{'user.name'}:$env{'user.domain'}"; |
"$env{'user.name'}:$env{'user.domain'}"; |
} |
} |
if ($env{'form.part'.$new_part.'_returndoc1'}) { |
my ($partlist,$handgrade,$responseType) = &response_type($url,$symb); |
# if multiple files are uploaded names will be 'returndoc2','returndoc3' |
my $portfolio_root = &Apache::loncommon::propath($domain, |
|
$stuname). |
my $portfolio_root = &Apache::loncommon::propath($domain, |
'/userfiles/portfolio'; |
$stuname). |
foreach my $part_resp(sort(keys(%$handgrade))) { |
'/userfiles/portfolio'; |
my ($part_id, $resp_id) = split(/_/,$part_resp); |
$request->print('<br>'.$portfolio_root.'<br>'); |
if ($env{'form.'.$part_resp.'_returndoc1'} && ($new_part eq $part_id)) { |
|
# if multiple files are uploaded names will be 'returndoc2','returndoc3' |
# my $result=&Apache::lonnet::userfileupload('uploaddoc','', |
my $file_counter = 1; |
# 'portfolio'.$env{'form.currentpath'}); |
while ($env{'form.'.$part_resp.'_returndoc'.$file_counter}) { |
|
my $fname=$env{'form.returndoc'.$file_counter.'.filename'}; |
my $file_counter = 1; |
$newrecord{"resource.$new_part.$resp_id.handback"} = $env{'form.returndocorig'.$file_counter}; |
my $respid = $env{'form.respid'}; |
$request->print("<br />".$fname." will be the uploaded file name"); |
while ($env{'form.part'.$new_part.'_returndoc'.$file_counter}) { |
$request->print("<font color=\"red\">Will upload document</font>".$env{'form.returndocorig'.$file_counter}); |
my $fname=$env{'form.returndoc'.$file_counter.'.filename'}; |
$file_counter++; |
$newrecord{"resource.$new_part.$respid.handback"} = $env{'form.returndocorig'.$file_counter}; |
} |
$request->print("<br />".$fname." will be the uploaded file name"); |
|
$request->print("<font color=\"red\">Will upload document</font>".$env{'form.returndocorig'.$file_counter}); |
|
$file_counter++; |
|
} |
} |
} |
} |
|
|
Line 2896 sub viewstudentgrade {
|
Line 2892 sub viewstudentgrade {
|
$aggregates{$part} = 1; |
$aggregates{$part} = 1; |
} |
} |
if ($type eq 'awarded') { |
if ($type eq 'awarded') { |
my $pts = $score eq '' ? '' : $score*$$weight{$part}; |
my $pts = $score eq '' ? '' : &compute_points($score,$$weight{$part}); |
$result.='<input type="hidden" name="'. |
$result.='<input type="hidden" name="'. |
'GD_'.$student.'_'.$part.'_awarded_s" value="'.$pts.'" />'."\n"; |
'GD_'.$student.'_'.$part.'_awarded_s" value="'.$pts.'" />'."\n"; |
$result.='<input type="text" name="'. |
$result.='<input type="text" name="'. |