version 1.312, 2006/02/13 22:11:51
|
version 1.315, 2006/02/25 20:25:02
|
Line 40 use Apache::lonmsg qw(:user_normal_msg);
|
Line 40 use Apache::lonmsg qw(:user_normal_msg);
|
use Apache::Constants qw(:common); |
use Apache::Constants qw(:common); |
use Apache::lonlocal; |
use Apache::lonlocal; |
use String::Similarity; |
use String::Similarity; |
|
use POSIX qw(floor); |
|
|
my %oldessays=(); |
my %oldessays=(); |
my %perm=(); |
my %perm=(); |
Line 467 sub jscriptNform {
|
Line 468 sub jscriptNform {
|
return $jscript; |
return $jscript; |
} |
} |
|
|
|
# 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, |
|
# or quarter if one of those is within the tolerance of .00001. |
|
sub compute_points |
|
{ |
|
my ($score, $weight) = @_; |
|
|
|
my $tolerance = .00001; |
|
my $points = $score * $weight; |
|
|
|
# Check for nearness to 1/x. |
|
my $check_for_nearness = sub { |
|
my ($factor) = @_; |
|
my $num = ($points * $factor) + $tolerance; |
|
my $floored_num = floor($num); |
|
if ($num - $floored_num < 2 * $tolerance * $factor) |
|
{ |
|
return $floored_num / $factor; |
|
} |
|
return $points; |
|
}; |
|
|
|
$points = $check_for_nearness->(10); |
|
$points = $check_for_nearness->(3); |
|
$points = $check_for_nearness->(4); |
|
|
|
return $points; |
|
} |
|
|
#------------------ End of general use routines -------------------- |
#------------------ End of general use routines -------------------- |
|
|
# |
# |
Line 1386 SUBJAVASCRIPT
|
Line 1416 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) = @_; |
|
|
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); |
my $wgtmsg = ($wgt > 0 ? '(problem weight)' : |
my $wgtmsg = ($wgt > 0 ? '(problem weight)' : |
'<font color="red">problem weight assigned by computer</font>'); |
'<font color="red">problem weight assigned by computer</font>'); |
Line 1397 sub gradeBox {
|
Line 1425 sub gradeBox {
|
my $score = ($$record{'resource.'.$partid.'.awarded'} eq '' ? |
my $score = ($$record{'resource.'.$partid.'.awarded'} eq '' ? |
'' : $$record{'resource.'.$partid.'.awarded'}*$wgt); |
'' : $$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"; |
|
|
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]); |
my $aggtries = $$record{'resource.'.$partid.'.tries'}; |
my $aggtries = $$record{'resource.'.$partid.'.tries'}; |
if ($last_resets{$partid}) { |
if ($last_resets{$partid}) { |
$aggtries = &get_num_tries($record,$last_resets{$partid},$partid); |
$aggtries = &get_num_tries($record,$last_resets{$partid},$partid); |
} |
} |
|
|
$result.='<table border="0"><tr><td>'. |
$result.='<table border="0"><tr><td>'. |
'<b>Part: </b>'.$display_part.' <b>Points: </b></td><td>'."\n"; |
'<b>Part: </b>'.$display_part.' <b>Points: </b></td><td>'."\n"; |
|
|
my $ctr = 0; |
my $ctr = 0; |
$result.='<table border="0"><tr>'."\n"; # display radio buttons in a nice table 10 across |
$result.='<table border="0"><tr>'."\n"; # display radio buttons in a nice table 10 across |
while ($ctr<=$wgt) { |
while ($ctr<=$wgt) { |
Line 1421 sub gradeBox {
|
Line 1445 sub gradeBox {
|
$ctr++; |
$ctr++; |
} |
} |
$result.='</tr></table>'; |
$result.='</tr></table>'; |
|
|
$result.='</td><td> <b>or</b> </td>'."\n"; |
$result.='</td><td> <b>or</b> </td>'."\n"; |
$result.='<td><input type="text" name="GD_BOX'.$counter.'_'.$partid.'"'. |
$result.='<td><input type="text" name="GD_BOX'.$counter.'_'.$partid.'"'. |
($score ne ''? ' value = "'.$score.'"':'').' size="4" '. |
($score ne ''? ' value = "'.$score.'"':'').' size="4" '. |
Line 1430 sub gradeBox {
|
Line 1453 sub gradeBox {
|
$result.='<td>/'.$wgt.' '.$wgtmsg. |
$result.='<td>/'.$wgt.' '.$wgtmsg. |
($$record{'resource.'.$partid.'.solved'} eq 'correct_by_student' ? ' '.$checkIcon : ''). |
($$record{'resource.'.$partid.'.solved'} eq 'correct_by_student' ? ' '.$checkIcon : ''). |
' </td><td>'."\n"; |
' </td><td>'."\n"; |
|
|
$result.='<select name="GD_SEL'.$counter.'_'.$partid.'" '. |
$result.='<select name="GD_SEL'.$counter.'_'.$partid.'" '. |
'onChange="javascript:clearRadBox(this.form,\''.$counter.'_'.$partid.'\')" >'."\n"; |
'onChange="javascript:clearRadBox(this.form,\''.$counter.'_'.$partid.'\')" >'."\n"; |
if ($$record{'resource.'.$partid.'.solved'} eq 'excused') { |
if ($$record{'resource.'.$partid.'.solved'} eq 'excused') { |
Line 1451 sub gradeBox {
|
Line 1473 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); |
|
if (@$files) { |
|
my $file_counter = 0; |
|
foreach my $file (@$files) { |
|
$result.=' Return commented document to student. <input type="file" name="part'.$partid.'_returndoc'; |
|
$result.=$file_counter.'" />'."\n"; |
|
$result.='<input type="hidden" name="respid" value="'.$counter.'" />'; |
|
$result.='<input type="hidden" name="returndocorig'.$file_counter.'" value="'.$file.'" />'; |
|
} |
|
} |
|
|
|
|
return $result; |
return $result; |
} |
} |
|
|
Line 1792 KEYWORDS
|
Line 1826 KEYWORDS
|
$lastsubonly.='<tr><td bgcolor="#ffffe6"><b>Part:</b> '. |
$lastsubonly.='<tr><td bgcolor="#ffffe6"><b>Part:</b> '. |
$display_part.' <font color="#999999">( ID '.$respid. |
$display_part.' <font color="#999999">( ID '.$respid. |
' )</font> '; |
' )</font> '; |
my @files; |
my $files=&get_submitted_files($udom,$uname,$partid,$respid,\%record); |
if ($record{"resource.$partid.$respid.portfiles"}) { |
# if ($record{"resource.$partid.$respid.portfiles"}) { |
my $file_url = '/uploaded/'.$udom.'/'.$uname.'/portfolio'; |
# my $file_url = '/uploaded/'.$udom.'/'.$uname.'/portfolio'; |
foreach my $file (split(',',$record{"resource.$partid.$respid.portfiles"})) { |
# foreach my $file (split(',',$record{"resource.$partid.$respid.portfiles"})) { |
push(@files,$file_url.$file); |
# push(@files,$file_url.$file); |
|
# } |
&Apache::lonnet::logthis("found a portfolio file".$record{"resource.$partid.$respid.portfiles"}); |
# } |
&Apache::lonnet::logthis("uploaded URL file".$record{"resource.$partid.$respid.uploadedurl"}); |
# if ($record{"resource.$partid.$respid.uploadedurl"}) { |
} |
# push(@files,$record{"resource.$partid.$respid.uploadedurl"}); |
} |
# } |
if ($record{"resource.$partid.$respid.uploadedurl"}) { |
if (@$files) { |
push(@files,$record{"resource.$partid.$respid.uploadedurl"}); |
|
} |
|
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; |
foreach my $file (@files) { |
foreach my $file (@$files) { |
$file_counter ++; |
$file_counter ++; |
&Apache::lonnet::allowuploaded('/adm/grades',$file); |
&Apache::lonnet::allowuploaded('/adm/grades',$file); |
$lastsubonly.='<br /><a href="'.$file.'" target="lonGRDs"><img src="'.&Apache::loncommon::icon($file).'" border=0"> '.$file.'</a>'; |
$lastsubonly.='<br /><a href="'.$file.'" target="lonGRDs"><img src="'.&Apache::loncommon::icon($file).'" border="0"> '.$file.'</a>'; |
$lastsubonly.=' Return commented document to student. <input type="file" name="part'.$partid.'_returndoc'; |
|
$lastsubonly.=$file_counter.'" />'."\n"; |
|
$lastsubonly.='<input type="hidden" name="respid" value="'.$respid.'" />'; |
|
$lastsubonly.='<input type="hidden" name="returndocorig'.$file_counter.'" value="'.$file.'" />'; |
|
|
|
} |
} |
$lastsubonly.='<br />'; |
$lastsubonly.='<br />'; |
} |
} |
Line 2351 sub saveHandGrade {
|
Line 2377 sub saveHandGrade {
|
} |
} |
return ('',$pts,$wgt); |
return ('',$pts,$wgt); |
} |
} |
|
sub get_submitted_files { |
|
my ($udom,$uname,$partid,$respid,$record) = @_; |
|
my @files; |
|
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"}); |
|
} |
|
return (\@files); |
|
} |
# ----------- Provides number of tries since last reset. |
# ----------- Provides number of tries since last reset. |
sub get_num_tries { |
sub get_num_tries { |
my ($record,$last_reset,$part) = @_; |
my ($record,$last_reset,$part) = @_; |