version 1.524, 2008/06/24 18:54:36
|
version 1.528.2.3, 2008/12/22 15:13:45
|
Line 278 sub reset_caches {
|
Line 278 sub reset_caches {
|
} |
} |
|
|
sub get_analyze { |
sub get_analyze { |
my ($symb,$uname,$udom)=@_; |
my ($symb,$uname,$udom,$no_increment)=@_; |
my $key = "$symb\0$uname\0$udom"; |
my $key = "$symb\0$uname\0$udom"; |
return $analyze_cache{$key} if (exists($analyze_cache{$key})); |
return $analyze_cache{$key} if (exists($analyze_cache{$key})); |
|
|
Line 290 sub reset_caches {
|
Line 290 sub reset_caches {
|
'grade_symb' => $symb, |
'grade_symb' => $symb, |
'grade_courseid' => |
'grade_courseid' => |
$env{'request.course.id'}, |
$env{'request.course.id'}, |
'grade_username' => $uname)); |
'grade_username' => $uname, |
|
'grade_noincrement' => $no_increment)); |
(undef,$subresult)=split(/_HASH_REF__/,$subresult,2); |
(undef,$subresult)=split(/_HASH_REF__/,$subresult,2); |
my %analyze=&Apache::lonnet::str2hash($subresult); |
my %analyze=&Apache::lonnet::str2hash($subresult); |
return $analyze_cache{$key} = \%analyze; |
return $analyze_cache{$key} = \%analyze; |
} |
} |
|
|
sub get_order { |
sub get_order { |
my ($partid,$respid,$symb,$uname,$udom)=@_; |
my ($partid,$respid,$symb,$uname,$udom,$no_increment)=@_; |
my $analyze = &get_analyze($symb,$uname,$udom); |
my $analyze = &get_analyze($symb,$uname,$udom,$no_increment); |
return $analyze->{"$partid.$respid.shown"}; |
return $analyze->{"$partid.$respid.shown"}; |
} |
} |
|
|
Line 1680 sub gradeBox {
|
Line 1681 sub gradeBox {
|
|
|
my $radio.='<table border="0"><tr>'."\n"; # display radio buttons in a nice table 10 across |
my $radio.='<table border="0"><tr>'."\n"; # display radio buttons in a nice table 10 across |
while ($thisweight<=$wgt) { |
while ($thisweight<=$wgt) { |
$radio.= '<td><span style="white-space: nowrap;"><label><input type="radio" name="RADVAL'.$counter.'_'.$partid.'" '. |
$radio.= '<td><span class="LC_nobreak"><label><input type="radio" name="RADVAL'.$counter.'_'.$partid.'" '. |
'onclick="javascript:writeBox(this.form,\''.$counter.'_'.$partid.'\','. |
'onclick="javascript:writeBox(this.form,\''.$counter.'_'.$partid.'\','. |
$thisweight.')" value="'.$thisweight.'" '. |
$thisweight.')" value="'.$thisweight.'" '. |
($score eq $thisweight ? 'checked="checked"':'').' /> '.$thisweight."</label></span></td>\n"; |
($score eq $thisweight ? 'checked="checked"':'').' /> '.$thisweight."</label></span></td>\n"; |
Line 2795 sub handback_files {
|
Line 2796 sub handback_files {
|
$newflg.'_'.$part_resp.'_returndoc'.$file_counter, |
$newflg.'_'.$part_resp.'_returndoc'.$file_counter, |
$save_file_name); |
$save_file_name); |
if ($result !~ m|^/uploaded/|) { |
if ($result !~ m|^/uploaded/|) { |
$request->print('<span class="LC_error">An error occurred ('.$result. |
$request->print('<br /><span class="LC_error">'. |
') while trying to upload '.$newflg.'_'.$part_resp.'_returndoc'.$file_counter.'</span><br />'); |
&mt('An error occurred ([_1]) while trying to upload [_2].', |
|
$result,$newflg.'_'.$part_resp.'_returndoc'.$file_counter). |
|
'</span>'); |
} else { |
} else { |
# mark the file as read only |
# mark the file as read only |
my @files = ($save_file_name); |
my @files = ($save_file_name); |
Line 4410 sub displaySubByDates {
|
Line 4413 sub displaySubByDates {
|
} |
} |
|
|
my $interaction; |
my $interaction; |
|
my $no_increment = 1; |
for ($version=1;$version<=$$record{'version'};$version++) { |
for ($version=1;$version<=$$record{'version'};$version++) { |
my $timestamp = |
my $timestamp = |
&Apache::lonlocal::locallocaltime($$record{$version.':timestamp'}); |
&Apache::lonlocal::locallocaltime($$record{$version.':timestamp'}); |
Line 4453 sub displaySubByDates {
|
Line 4457 sub displaySubByDates {
|
if (!exists($orders{$partid})) { $orders{$partid}={}; } |
if (!exists($orders{$partid})) { $orders{$partid}={}; } |
if (!exists($orders{$partid}->{$responseId})) { |
if (!exists($orders{$partid}->{$responseId})) { |
$orders{$partid}->{$responseId}= |
$orders{$partid}->{$responseId}= |
&get_order($partid,$responseId,$symb,$uname,$udom); |
&get_order($partid,$responseId,$symb,$uname,$udom, |
|
$no_increment); |
} |
} |
$displaySub[0].='</b> '. |
$displaySub[0].='</b> '. |
&cleanRecord($$record{$version.':'.$matchKey},$responseType,$symb,$partid,$responseId,$record,$orders{$partid}->{$responseId},"$version:",$uname,$udom).'<br />'; |
&cleanRecord($$record{$version.':'.$matchKey},$responseType,$symb,$partid,$responseId,$record,$orders{$partid}->{$responseId},"$version:",$uname,$udom).'<br />'; |
Line 4506 sub updateGradeByPage {
|
Line 4511 sub updateGradeByPage {
|
my ($uname,$udom) = split(/:/,$env{'form.student'}); |
my ($uname,$udom) = split(/:/,$env{'form.student'}); |
my $usec=$classlist->{$env{'form.student'}}[5]; |
my $usec=$classlist->{$env{'form.student'}}[5]; |
if (!&canmodify($usec)) { |
if (!&canmodify($usec)) { |
$request->print('<span class="LC_warning">Unable to modify requested student.('.$env{'form.student'}.'</span>'); |
$request->print('<span class="LC_warning">'.&mt('Unable to modify requested student ([_1])',$env{'form.student'}).'</span>'); |
$request->print(&show_grading_menu_form($env{'form.symb'})); |
$request->print(&show_grading_menu_form($env{'form.symb'})); |
return; |
return; |
} |
} |
my $result='<h3><span class="LC_info"> '.$env{'form.title'}.'</span></h3>'; |
my $result='<h3><span class="LC_info"> '.$env{'form.title'}.'</span></h3>'; |
$result.='<h3> Student: '.&nameUserString(undef,$env{'form.fullname'},$uname,$udom). |
$result.='<h3> '.&mt('Student: ').&nameUserString(undef,$env{'form.fullname'},$uname,$udom). |
'</h3>'."\n"; |
'</h3>'."\n"; |
|
|
$request->print($result); |
$request->print($result); |
Line 4520 sub updateGradeByPage {
|
Line 4525 sub updateGradeByPage {
|
my ($mapUrl, $id, $resUrl) = &Apache::lonnet::decode_symb( $env{'form.page'}); |
my ($mapUrl, $id, $resUrl) = &Apache::lonnet::decode_symb( $env{'form.page'}); |
my $map = $navmap->getResourceByUrl($resUrl); # add to navmaps |
my $map = $navmap->getResourceByUrl($resUrl); # add to navmaps |
if (!$map) { |
if (!$map) { |
$request->print('<span class="LC_warning">Unable to grade requested sequence. ('.$resUrl.')</span>'); |
$request->print('<span class="LC_warning">'.&mt('Unable to grade requested sequence ([_1]).',$resUrl).'</span>'); |
my ($symb)=&get_symb($request); |
my ($symb)=&get_symb($request); |
$request->print(&show_grading_menu_form($symb)); |
$request->print(&show_grading_menu_form($symb)); |
return; |
return; |
Line 4552 sub updateGradeByPage {
|
Line 4557 sub updateGradeByPage {
|
&Apache::loncommon::start_data_table_row(). |
&Apache::loncommon::start_data_table_row(). |
'<td align="center" valign="top" >'.$prob. |
'<td align="center" valign="top" >'.$prob. |
(scalar(@{$parts}) == 1 ? '' |
(scalar(@{$parts}) == 1 ? '' |
: '<br />('.&mt('[quant,_1, parts]',scalar(@{$parts})) |
: '<br />('.&mt('[quant,_1, part]',scalar(@{$parts})) |
).')</td>'; |
.')').'</td>'; |
$studentTable.='<td valign="top"> <b>'.$title.'</b> </td>'; |
$studentTable.='<td valign="top"> <b>'.$title.'</b> </td>'; |
|
|
my %newrecord=(); |
my %newrecord=(); |
Line 4597 sub updateGradeByPage {
|
Line 4602 sub updateGradeByPage {
|
} |
} |
my $display_part=&get_display_part($partid,$curRes->symb()); |
my $display_part=&get_display_part($partid,$curRes->symb()); |
my $oldstatus = $env{'form.solved'.$question.'_'.$partid}; |
my $oldstatus = $env{'form.solved'.$question.'_'.$partid}; |
$displayPts[0].=' <b>Part:</b> '.$display_part.' = '. |
$displayPts[0].=' <b>'.&mt('Part').':</b> '.$display_part.' = '. |
(($oldstatus eq 'excused') ? 'excused' : $oldpts). |
(($oldstatus eq 'excused') ? 'excused' : $oldpts). |
' <br />'; |
' <br />'; |
$displayPts[1].=' <b>Part:</b> '.$display_part.' = '. |
$displayPts[1].=' <b>'.&mt('Part').':</b> '.$display_part.' = '. |
(($score eq 'excused') ? 'excused' : $newpts). |
(($score eq 'excused') ? 'excused' : $newpts). |
' <br />'; |
' <br />'; |
$question++; |
$question++; |
Line 4649 sub updateGradeByPage {
|
Line 4654 sub updateGradeByPage {
|
|
|
$studentTable.=&Apache::loncommon::end_data_table(); |
$studentTable.=&Apache::loncommon::end_data_table(); |
$studentTable.=&show_grading_menu_form($env{'form.symb'}); |
$studentTable.=&show_grading_menu_form($env{'form.symb'}); |
my $grademsg=($changeflag == 0 ? 'No score was changed or updated.' : |
my $grademsg=($changeflag == 0 ? &mt('No score was changed or updated.') : |
'The scores were changed for '. |
&mt('The scores were changed for [quant,_1,problem].', |
$changeflag.' problem'.($changeflag == 1 ? '.' : 's.')); |
$changeflag)); |
$request->print($grademsg.$studentTable); |
$request->print($grademsg.$studentTable); |
|
|
return ''; |
return ''; |
Line 4982 sub scantron_CODElist {
|
Line 4987 sub scantron_CODElist {
|
=cut |
=cut |
|
|
sub scantron_CODEunique { |
sub scantron_CODEunique { |
my $result='<span style="white-space: nowrap;"> |
my $result='<span class="LC_nobreak"> |
<label><input type="radio" name="scantron_CODEunique" |
<label><input type="radio" name="scantron_CODEunique" |
value="yes" checked="checked" />'.&mt('Yes').' </label> |
value="yes" checked="checked" />'.&mt('Yes').' </label> |
</span> |
</span> |
<span style="white-space: nowrap;"> |
<span class="LC_nobreak"> |
<label><input type="radio" name="scantron_CODEunique" |
<label><input type="radio" name="scantron_CODEunique" |
value="no" />'.&mt('No').' </label> |
value="no" />'.&mt('No').' </label> |
</span>'; |
</span>'; |
Line 5146 sub scantron_selectphase {
|
Line 5151 sub scantron_selectphase {
|
|
|
&Apache::lonpickcode::code_list($r,2); |
&Apache::lonpickcode::code_list($r,2); |
|
|
$r>print('<br /><form method="post" name="checkscantron">'. |
$r->print('<br /><form method="post" name="checkscantron">'. |
$default_form_data."\n". |
$default_form_data."\n". |
&Apache::loncommon::start_data_table('LC_scantron_action')."\n". |
&Apache::loncommon::start_data_table('LC_scantron_action')."\n". |
&Apache::loncommon::start_data_table_header_row()."\n". |
&Apache::loncommon::start_data_table_header_row()."\n". |
Line 7330 sub scantron_get_maxbubble {
|
Line 7335 sub scantron_get_maxbubble {
|
foreach my $resource (@resources) { |
foreach my $resource (@resources) { |
my $symb = $resource->symb(); |
my $symb = $resource->symb(); |
|
|
my (@parts,@allparts,@possible_parts); |
my @parts; |
|
|
# Need to retrieve part IDs and response IDs because essayresponse, |
|
# reactionresponse and organicresponse items are not included in |
|
# $analysis{'parts'} from lonnet::ssi. |
|
if (ref($resource->parts()) eq 'ARRAY') { |
|
foreach my $part (@{$resource->parts()}) { |
|
if (!&Apache::loncommon::check_if_partid_hidden($part,$symb,$udom,$uname)) { |
|
my @resp_ids = $resource->responseIds($part); |
|
foreach my $id (@resp_ids) { |
|
my $part_id = $part.'.'.$id; |
|
push(@possible_parts,$part_id); |
|
} |
|
} |
|
} |
|
} |
|
|
|
my $result=&ssi_with_retries($resource->src(), $ssi_retries, |
my $result=&ssi_with_retries($resource->src(), $ssi_retries, |
('symb' => $symb, |
('symb' => $symb, |
Line 7366 sub scantron_get_maxbubble {
|
Line 7356 sub scantron_get_maxbubble {
|
} |
} |
} |
} |
} |
} |
# Add part_ids for any essayresponse, reactionresponse or |
|
# organicresponse items. |
|
foreach my $part_id (@possible_parts) { |
|
if (grep(/^\Q$part_id\E$/,@parts)) { |
|
push(@allparts,$part_id); |
|
} else { |
|
if (($analysis{$part_id.'.type'} eq 'essayresponse') || |
|
($analysis{$part_id.'.type'} eq 'reactionresponse') || |
|
($analysis{$part_id.'.type'} eq 'organicresponse')) { |
|
push(@allparts,$part_id); |
|
} |
|
} |
|
} |
|
|
|
foreach my $part_id (@allparts) { |
foreach my $part_id (@parts) { |
my $lines; |
my $lines; |
|
|
# TODO - make this a persistent hash not an array. |
# TODO - make this a persistent hash not an array. |