version 1.596.2.12.2.16, 2013/06/28 22:54:50
|
version 1.596.2.12.2.18, 2013/08/14 03:33:54
|
Line 1793 sub gradeBox {
|
Line 1793 sub gradeBox {
|
$wgt = ($wgt > 0 ? $wgt : '1'); |
$wgt = ($wgt > 0 ? $wgt : '1'); |
my $score = ($$record{'resource.'.$partid.'.awarded'} eq '' ? |
my $score = ($$record{'resource.'.$partid.'.awarded'} eq '' ? |
'' : &compute_points($$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 $data_WGT='<input type="hidden" name="WGT'.$counter.'_'.$partid.'" value="'.$wgt.'" />'."\n"; |
my $display_part= &get_display_part($partid,$symb); |
my $display_part= &get_display_part($partid,$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 1801 sub gradeBox {
|
Line 1801 sub gradeBox {
|
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.=&Apache::loncommon::start_data_table_row(); |
my $result=&Apache::loncommon::start_data_table_row(); |
my $ctr = 0; |
my $ctr = 0; |
my $thisweight = 0; |
my $thisweight = 0; |
my $increment = &get_increment(); |
my $increment = &get_increment(); |
Line 1838 sub gradeBox {
|
Line 1838 sub gradeBox {
|
|
|
|
|
$result .= |
$result .= |
'<td>'.$display_part.'</td><td>'.$radio.'</td><td>'.&mt('or').'</td><td>'.$line.'</td>'; |
'<td>'.$data_WGT.$display_part.'</td><td>'.$radio.'</td><td>'.&mt('or').'</td><td>'.$line.'</td>'; |
$result.=&Apache::loncommon::end_data_table_row(); |
$result.=&Apache::loncommon::end_data_table_row().'<td colspan="6">'; |
$result.='<input type="hidden" name="stores'.$counter.'_'.$partid.'" value="" />'."\n". |
$result.='<input type="hidden" name="stores'.$counter.'_'.$partid.'" value="" />'."\n". |
'<input type="hidden" name="oldpts'.$counter.'_'.$partid.'" value="'.$score.'" />'."\n". |
'<input type="hidden" name="oldpts'.$counter.'_'.$partid.'" value="'.$score.'" />'."\n". |
'<input type="hidden" name="solved'.$counter.'_'.$partid.'" value="'. |
'<input type="hidden" name="solved'.$counter.'_'.$partid.'" value="'. |
Line 1850 sub gradeBox {
|
Line 1850 sub gradeBox {
|
$aggtries.'" />'."\n"; |
$aggtries.'" />'."\n"; |
my $res_error; |
my $res_error; |
$result.=&handback_box($symb,$uname,$udom,$counter,$partid,$record,\$res_error); |
$result.=&handback_box($symb,$uname,$udom,$counter,$partid,$record,\$res_error); |
|
$result.='</td>'.&Apache::loncommon::end_data_table_row(); |
if ($res_error) { |
if ($res_error) { |
return &navmap_errormsg(); |
return &navmap_errormsg(); |
} |
} |
Line 2138 sub submission {
|
Line 2139 sub submission {
|
<b>$lt{'keyw'}:</b> |
<b>$lt{'keyw'}:</b> |
<a href="javascript:keywords(document.SCORE);" target="_self">$lt{'list'}</a> |
<a href="javascript:keywords(document.SCORE);" target="_self">$lt{'list'}</a> |
<a href="#" onmousedown="javascript:getSel(); return false" |
<a href="#" onmousedown="javascript:getSel(); return false" |
CLASS="page">$lt{'past'}</a> |
class="page">$lt{'past'}</a> |
<a href="javascript:kwhighlight();" target="_self">$lt{'high'}</a><br /><br /> |
<a href="javascript:kwhighlight();" target="_self">$lt{'high'}</a><br /><br /> |
KEYWORDS |
KEYWORDS |
# |
# |
Line 2252 KEYWORDS
|
Line 2253 KEYWORDS
|
if ($env{"form.$uname:$udom:$partid:submitted_by"}) { |
if ($env{"form.$uname:$udom:$partid:submitted_by"}) { |
if (exists($seenparts{$partid})) { next; } |
if (exists($seenparts{$partid})) { next; } |
$seenparts{$partid}=1; |
$seenparts{$partid}=1; |
my $submitby='<b>Part:</b> '.$display_part. |
$request->print( |
' <b>Collaborative submission by:</b> '. |
'<b>'.&mt('Part: [_1]',$display_part).'</b>'. |
'<a href="javascript:viewSubmitter(\''. |
' <b>'.&mt('Collaborative submission by: [_1]', |
$env{"form.$uname:$udom:$partid:submitted_by"}. |
'<a href="javascript:viewSubmitter(\''. |
'\');" target="_self">'. |
$env{"form.$uname:$udom:$partid:submitted_by"}. |
$$fullname{$env{"form.$uname:$udom:$partid:submitted_by"}}.'</a><br />'; |
'\');" target="_self">'. |
$request->print($submitby); |
$$fullname{$env{"form.$uname:$udom:$partid:submitted_by"}}.'</a>'). |
|
'<br />'); |
next; |
next; |
} |
} |
my $responsetype = $responseType->{$partid}->{$respid}; |
my $responsetype = $responseType->{$partid}->{$respid}; |
Line 2325 KEYWORDS
|
Line 2327 KEYWORDS
|
if ($hide eq 'anon') { |
if ($hide eq 'anon') { |
$lastsubonly.='<br />'.&mt('[quant,_1,file] uploaded to this anonymous survey',scalar(@{$files})); |
$lastsubonly.='<br />'.&mt('[quant,_1,file] uploaded to this anonymous survey',scalar(@{$files})); |
} else { |
} else { |
$lastsubonly.='<br /><span class="LC_warning">'.&mt('Like all files provided by users, this file may contain viruses').'</span><br />'; |
$lastsubonly.='<br /><br />'.'<b>'.&mt('Submitted Files:').'</b>' |
|
.'<br /><span class="LC_warning">'; |
|
if(@$files == 1) { |
|
$lastsubonly .= &mt('Like all files provided by users, this file may contain viruses!'); |
|
} else { |
|
$lastsubonly .= &mt('Like all files provided by users, these files may contain viruses!'); |
|
} |
|
$lastsubonly .= '</span>'; |
|
|
foreach my $file (@$files) { |
foreach my $file (@$files) { |
&Apache::lonnet::allowuploaded('/adm/grades',$file); |
&Apache::lonnet::allowuploaded('/adm/grades',$file); |
$lastsubonly.='<br /><a href="'.$file.'?rawmode=1" target="lonGRDs"><img src="'.&Apache::loncommon::icon($file).'" border="0" /> '.$file.'</a>'; |
$lastsubonly.='<br /><a href="'.$file.'?rawmode=1" target="lonGRDs"><img src="'.&Apache::loncommon::icon($file).'" border="0" alt="" /> '.$file.'</a>'; |
} |
} |
} |
} |
$lastsubonly.='<br />'; |
$lastsubonly.='<br />'; |
} |
} |
if ($hide eq 'anon') { |
if ($hide eq 'anon') { |
$lastsubonly.='<b>'.&mt('Anonymous Survey').'</b>'; |
$lastsubonly.='<br /><b>'.&mt('Anonymous Survey').'</b>'; |
} else { |
} else { |
$lastsubonly.='<b>'.&mt('Submitted Answer:').' </b>'. |
$lastsubonly.='<br /><b>'.&mt('Submitted Answer:').' </b>'. |
&cleanRecord($subval,$responsetype,$symb,$partid, |
&cleanRecord($subval,$responsetype,$symb,$partid, |
$respid,\%record,$order,undef,$uname,$udom,$type,$trial,$rndseed); |
$respid,\%record,$order,undef,$uname,$udom,$type,$trial,$rndseed); |
} |
} |
Line 2393 KEYWORDS
|
Line 2403 KEYWORDS
|
'<input type="hidden" name="newmsg'.$counter.'" value="" />'."\n"; |
'<input type="hidden" name="newmsg'.$counter.'" value="" />'."\n"; |
$result.=' <a href="javascript:msgCenter(document.SCORE,'.$counter. |
$result.=' <a href="javascript:msgCenter(document.SCORE,'.$counter. |
',\''.$msgfor.'\');" target="_self">'. |
',\''.$msgfor.'\');" target="_self">'. |
&mt('Compose message to student').(scalar(@$col_fullnames) >= 1 ? 's' : '').'</a><label> ('. |
&mt('Compose message to student'.(scalar(@$col_fullnames) >= 1 ? 's' : '')).'</a><label> ('. |
&mt('incl. grades').' <input type="checkbox" name="withgrades'.$counter.'" /></label>)'. |
&mt('incl. grades').' <input type="checkbox" name="withgrades'.$counter.'" /></label>)'. |
'<img src="'.$request->dir_config('lonIconsURL'). |
' <img src="'.$request->dir_config('lonIconsURL'). |
'/mailbkgrd.gif" width="14" height="10" name="mailicon'.$counter.'" />'."\n". |
'/mailbkgrd.gif" width="14" height="10" name="mailicon'.$counter.'" />'."\n". |
'<br /> ('. |
'<br /> ('. |
&mt('Message will be sent when you click on Save & Next below.').")\n"; |
&mt('Message will be sent when you click on Save & Next below.').")\n"; |
Line 3743 sub viewgrades {
|
Line 3753 sub viewgrades {
|
my $display_part=&get_display_part($partid,$symb); |
my $display_part=&get_display_part($partid,$symb); |
if ($display =~ /^Partial Credit Factor/) { |
if ($display =~ /^Partial Credit Factor/) { |
$result.='<th>'. |
$result.='<th>'. |
&mt('Score Part: [_1]<br /> (weight = [_2])', |
&mt('Score Part: [_1][_2](weight = [_3])', |
$display_part,$weight{$partid}).'</th>'."\n"; |
$display_part,'<br />',$weight{$partid}).'</th>'."\n"; |
next; |
next; |
|
|
} else { |
} else { |
Line 5681 sub scantron_selectphase {
|
Line 5691 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" action="">'. |
$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 7629 sub questions_to_line_list {
|
Line 7639 sub questions_to_line_list {
|
} else { |
} else { |
$first = $first_bubble_line{$responsenum} + 1; |
$first = $first_bubble_line{$responsenum} + 1; |
} |
} |
my @subans = split(/,/,$subdivided_bubble_lines{$question-1}); |
my @subans = split(/,/,$subdivided_bubble_lines{$responsenum}); |
my $subcount = 1; |
my $subcount = 1; |
while ($subcount<$subquestion) { |
while ($subcount<$subquestion) { |
$first += $subans[$subcount-1]; |
$first += $subans[$subcount-1]; |
Line 7637 sub questions_to_line_list {
|
Line 7647 sub questions_to_line_list {
|
} |
} |
$count = $subans[$subquestion-1]; |
$count = $subans[$subquestion-1]; |
} else { |
} else { |
$first = $first_bubble_line{$question-1} + 1; |
my $responsenum = $question-1; |
$count = $bubble_lines_per_response{$question-1}; |
if (($randomorder || $randompick) && (ref($respnumlookup) eq 'HASH')) { |
|
$responsenum = $respnumlookup->{$question-1}; |
|
if (ref($startline) eq 'HASH') { |
|
$first = $startline->{$question-1} + 1; |
|
} |
|
} else { |
|
$first = $first_bubble_line{$responsenum} + 1; |
|
} |
|
$count = $bubble_lines_per_response{$responsenum}; |
} |
} |
$last = $first+$count-1; |
$last = $first+$count-1; |
push(@lines, ($first..$last)); |
push(@lines, ($first..$last)); |
Line 7660 for multi and missing bubble cases).
|
Line 7678 for multi and missing bubble cases).
|
$scan_config - The scantron file configuration hash. |
$scan_config - The scantron file configuration hash. |
$scan_record - Reference to the hash that has the the parsed scanlines. |
$scan_record - Reference to the hash that has the the parsed scanlines. |
$error - Type of error |
$error - Type of error |
|
$randomorder - True if randomorder in use. |
|
$randompick - True if randompick in use. |
|
$respnumlookup - Reference to HASH mapping question numbers in bubble lines |
|
for current line to question number used for same question |
|
in "Master Seqence" (as seen by Course Coordinator). |
|
$startline - Reference to hash where key is question number (0 is first) |
|
and value is number of first bubble line for current student |
|
or code-based randompick and/or randomorder. |
|
|
Implicit inputs: |
Implicit inputs: |
%bubble_lines_per_response - Starting line numbers for each question. |
%bubble_lines_per_response - Starting line numbers for each question. |
Line 8092 sub scantron_get_maxbubble {
|
Line 8118 sub scantron_get_maxbubble {
|
foreach my $resource (@resources) { |
foreach my $resource (@resources) { |
my $resid = $resource->id(); |
my $resid = $resource->id(); |
my ($analysis,$parts) = &scantron_partids_tograde($resource,$cid,$uname, |
my ($analysis,$parts) = &scantron_partids_tograde($resource,$cid,$uname, |
$udom,$bubbles_per_row); |
$udom,undef,$bubbles_per_row); |
if ((ref($analysis) eq 'HASH') && (ref($parts) eq 'ARRAY')) { |
if ((ref($analysis) eq 'HASH') && (ref($parts) eq 'ARRAY')) { |
foreach my $part_id (@{$parts}) { |
foreach my $part_id (@{$parts}) { |
my $lines; |
my $lines; |
Line 8197 sub scantron_validate_missingbubbles {
|
Line 8223 sub scantron_validate_missingbubbles {
|
if (ref($map)) { |
if (ref($map)) { |
$randomorder = $map->randomorder(); |
$randomorder = $map->randomorder(); |
$randompick = $map->randompick(); |
$randompick = $map->randompick(); |
|
if ($randomorder || $randompick) { |
|
$nav_error = &get_master_seq(\@resources,\@master_seq,\%symb_to_resource); |
|
if ($nav_error) { |
|
$r->print(&navmap_errormsg()); |
|
return(1,$currentphase); |
|
} |
|
&graders_resources_pass(\@resources,\%grader_partids_by_symb, |
|
\%grader_randomlists_by_symb,$bubbles_per_row); |
|
} |
} else { |
} else { |
$r->print(&navmap_errormsg()); |
$r->print(&navmap_errormsg()); |
return ''; |
return(1,$currentphase); |
} |
|
my $nav_error; |
|
my @resources=$navmap->retrieveResources($map,\&scantron_filter,1,0); |
|
if ($randomorder || $randompick) { |
|
$nav_error = &get_master_seq(\@resources,\@master_seq,\%symb_to_resource); |
|
if ($nav_error) { |
|
$r->print(&navmap_errormsg()); |
|
return ''; |
|
} |
|
} |
} |
&graders_resources_pass(\@resources,\%grader_partids_by_symb, |
|
\%grader_randomlists_by_symb,$bubbles_per_row); |
|
|
|
my ($uname,$udom); |
|
|
|
my $max_bubble=&scantron_get_maxbubble(\$nav_error,\%scantron_config); |
my $max_bubble=&scantron_get_maxbubble(\$nav_error,\%scantron_config); |
if ($nav_error) { |
if ($nav_error) { |
Line 8249 sub scantron_validate_missingbubbles {
|
Line 8272 sub scantron_validate_missingbubbles {
|
$first = $first_bubble_line{$responsenum}; |
$first = $first_bubble_line{$responsenum}; |
} |
} |
if (!defined($first)) { next; } |
if (!defined($first)) { next; } |
my @subans = split(/,/,$subdivided_bubble_lines{$question-1}); |
my @subans = split(/,/,$subdivided_bubble_lines{$responsenum}); |
my $subcount = 1; |
my $subcount = 1; |
while ($subcount<$subquestion) { |
while ($subcount<$subquestion) { |
$first += $subans[$subcount-1]; |
$first += $subans[$subcount-1]; |
Line 9006 sub checkscantron_results {
|
Line 9029 sub checkscantron_results {
|
%grader_randomlists_by_symb,%orderedforcode); |
%grader_randomlists_by_symb,%orderedforcode); |
if (ref($map)) { |
if (ref($map)) { |
$randomorder=$map->randomorder(); |
$randomorder=$map->randomorder(); |
|
$randompick=$map->randompick(); |
} |
} |
my @resources=$navmap->retrieveResources($map,\&scantron_filter,1,0); |
my @resources=$navmap->retrieveResources($map,\&scantron_filter,1,0); |
my $nav_error = &get_master_seq(\@resources,\@master_seq,\%symb_to_resource); |
my $nav_error = &get_master_seq(\@resources,\@master_seq,\%symb_to_resource); |
Line 10018 ENDHEADER
|
Line 10042 ENDHEADER
|
&mt('Found [_1] registered and [_2] unregistered clickers.',$student_count,$unknown_count); |
&mt('Found [_1] registered and [_2] unregistered clickers.',$student_count,$unknown_count); |
if (($env{'form.gradingmechanism'} ne 'attendance') && ($env{'form.gradingmechanism'} ne 'given')) { |
if (($env{'form.gradingmechanism'} ne 'attendance') && ($env{'form.gradingmechanism'} ne 'given')) { |
if ($correct_count==0) { |
if ($correct_count==0) { |
$errormsg.="Found no correct answers answers for grading!"; |
$errormsg.="Found no correct answers for grading!"; |
} elsif ($correct_count>1) { |
} elsif ($correct_count>1) { |
$result.='<br /><span class="LC_warning">'.&mt("Found [_1] entries for grading!",$correct_count).'</span>'; |
$result.='<br /><span class="LC_warning">'.&mt("Found [_1] entries for grading!",$correct_count).'</span>'; |
} |
} |
Line 10193 sub assign_clicker_grades {
|
Line 10217 sub assign_clicker_grades {
|
if ($user) { |
if ($user) { |
if ($users{$user}) { |
if ($users{$user}) { |
$result.='<br /><span class="LC_warning">'. |
$result.='<br /><span class="LC_warning">'. |
&mt("More than one entry found for <tt>[_1]</tt>!",$user). |
&mt('More than one entry found for [_1]!','<tt>'.$user.'</tt>'). |
'</span><br />'; |
'</span><br />'; |
} |
} |
$users{$user}=1; |
$users{$user}=1; |