version 1.447, 2007/10/09 09:16:04
|
version 1.454, 2007/10/11 22:34:33
|
Line 56 my %first_bubble_line = (); # First bubb
|
Line 56 my %first_bubble_line = (); # First bubb
|
|
|
|
|
sub save_bubble_lines { |
sub save_bubble_lines { |
|
&Apache::lonnet::logthis("Saving bubble_lines..."); |
foreach my $line (keys(%bubble_lines_per_response)) { |
foreach my $line (keys(%bubble_lines_per_response)) { |
|
&Apache::lonnet::logthis("Saving form.scantron.bubblelines.$line value: $bubble_lines_per_response{$line}"); |
$env{"form.scantron.bubblelines.$line"} = $bubble_lines_per_response{$line}; |
$env{"form.scantron.bubblelines.$line"} = $bubble_lines_per_response{$line}; |
$env{"form.scantron.first_bubble_line.$line"} = |
$env{"form.scantron.first_bubble_line.$line"} = |
$first_bubble_line{$line}; |
$first_bubble_line{$line}; |
Line 70 sub restore_bubble_lines {
|
Line 71 sub restore_bubble_lines {
|
%bubble_lines_per_response = (); |
%bubble_lines_per_response = (); |
while ($env{"form.scantron.bubblelines.$line"}) { |
while ($env{"form.scantron.bubblelines.$line"}) { |
my $value = $env{"form.scantron.bubblelines.$line"}; |
my $value = $env{"form.scantron.bubblelines.$line"}; |
|
&Apache::lonnet::logthis("Restoring form.scantron.bubblelines.$line value: $value"); |
$bubble_lines_per_response{$line} = $value; |
$bubble_lines_per_response{$line} = $value; |
$first_bubble_line{$line} = |
$first_bubble_line{$line} = |
$env{"form.scantron.first_bubble_line.$line"}; |
$env{"form.scantron.first_bubble_line.$line"}; |
Line 85 sub get_response_bubbles {
|
Line 87 sub get_response_bubbles {
|
my ($parsed_line, $response) = @_; |
my ($parsed_line, $response) = @_; |
|
|
my $bubble_line = $first_bubble_line{$response}; |
my $bubble_line = $first_bubble_line{$response}; |
my $bubble_lines= $bubble_linse_per_response{$response}; |
my $bubble_lines= $bubble_lines_per_response{$response}; |
my $selected = ""; |
my $selected = ""; |
|
|
for (my $bline = 0; $bline < $bubble_lines; $bline++) { |
for (my $bline = 0; $bline < $bubble_lines; $bline++) { |
Line 473 COMMONJSFUNCTIONS
|
Line 475 COMMONJSFUNCTIONS
|
#--- Dumps the class list with usernames,list of sections, |
#--- Dumps the class list with usernames,list of sections, |
#--- section, ids and fullnames for each user. |
#--- section, ids and fullnames for each user. |
sub getclasslist { |
sub getclasslist { |
my ($getsec,$filterlist) = @_; |
my ($getsec,$filterlist,$getgroup) = @_; |
my @getsec; |
my @getsec; |
|
my @getgroup; |
my $stu_status = join(':',&Apache::loncommon::get_env_multiple('form.Status')); |
my $stu_status = join(':',&Apache::loncommon::get_env_multiple('form.Status')); |
if (!ref($getsec)) { |
if (!ref($getsec)) { |
if ($getsec ne '' && $getsec ne 'all') { |
if ($getsec ne '' && $getsec ne 'all') { |
Line 484 sub getclasslist {
|
Line 487 sub getclasslist {
|
@getsec=@{$getsec}; |
@getsec=@{$getsec}; |
} |
} |
if (grep(/^all$/,@getsec)) { undef(@getsec); } |
if (grep(/^all$/,@getsec)) { undef(@getsec); } |
|
if (!ref($getgroup)) { |
|
if ($getgroup ne '' && $getgroup ne 'all') { |
|
@getgroup=($getgroup); |
|
} |
|
} else { |
|
@getgroup=@{$getgroup}; |
|
} |
|
if (grep(/^all$/,@getgroup)) { undef(@getgroup); } |
|
|
my $classlist=&Apache::loncoursedata::get_classlist(); |
my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist(); |
# Bail out if we were unable to get the classlist |
# Bail out if we were unable to get the classlist |
return if (! defined($classlist)); |
return if (! defined($classlist)); |
|
&Apache::loncoursedata::get_group_memberships($classlist,$keylist); |
# |
# |
my %sections; |
my %sections; |
my %fullnames; |
my %fullnames; |
Line 504 sub getclasslist {
|
Line 516 sub getclasslist {
|
$classlist->{$student}->[&Apache::loncoursedata::CL_FULLNAME()]; |
$classlist->{$student}->[&Apache::loncoursedata::CL_FULLNAME()]; |
my $status = |
my $status = |
$classlist->{$student}->[&Apache::loncoursedata::CL_STATUS()]; |
$classlist->{$student}->[&Apache::loncoursedata::CL_STATUS()]; |
|
my $group = |
|
$classlist->{$student}->[&Apache::loncoursedata::CL_GROUP()]; |
# filter students according to status selected |
# filter students according to status selected |
if ($filterlist && (!($stu_status =~ /Any/))) { |
if ($filterlist && (!($stu_status =~ /Any/))) { |
if (!($stu_status =~ $status)) { |
if (!($stu_status =~ $status)) { |
delete ($classlist->{$student}); |
delete($classlist->{$student}); |
next; |
next; |
} |
} |
} |
} |
|
# filter students according to groups selected |
|
my @stu_groups = split(/,/,$group); |
|
if (@getgroup) { |
|
my $exclude = 1; |
|
foreach my $grp (@getgroup) { |
|
foreach my $stu_group (@stu_groups) { |
|
if ($stu_group eq $grp) { |
|
$exclude = 0; |
|
} |
|
} |
|
if (($grp eq 'none') && !$group) { |
|
$exclude = 0; |
|
} |
|
} |
|
if ($exclude) { |
|
delete($classlist->{$student}); |
|
} |
|
} |
$section = ($section ne '' ? $section : 'none'); |
$section = ($section ne '' ? $section : 'none'); |
if (&canview($section)) { |
if (&canview($section)) { |
if (!@getsec || grep(/^\Q$section\E$/,@getsec)) { |
if (!@getsec || grep(/^\Q$section\E$/,@getsec)) { |
$sections{$section}++; |
$sections{$section}++; |
$fullnames{$student}=$fullname; |
if ($classlist->{$student}) { |
|
$fullnames{$student}=$fullname; |
|
} |
} else { |
} else { |
delete($classlist->{$student}); |
delete($classlist->{$student}); |
} |
} |
Line 766 sub listStudents {
|
Line 800 sub listStudents {
|
my $cdom = $env{"course.$env{'request.course.id'}.domain"}; |
my $cdom = $env{"course.$env{'request.course.id'}.domain"}; |
my $cnum = $env{"course.$env{'request.course.id'}.num"}; |
my $cnum = $env{"course.$env{'request.course.id'}.num"}; |
my $getsec = $env{'form.section'} eq '' ? 'all' : $env{'form.section'}; |
my $getsec = $env{'form.section'} eq '' ? 'all' : $env{'form.section'}; |
|
my $getgroup = $env{'form.group'} eq '' ? 'all' : $env{'form.group'}; |
my $submitonly= $env{'form.submitonly'} eq '' ? 'all' : $env{'form.submitonly'}; |
my $submitonly= $env{'form.submitonly'} eq '' ? 'all' : $env{'form.submitonly'}; |
|
|
my $viewgrade = $env{'form.showgrading'} eq 'yes' ? 'View/Grade/Regrade' : 'View'; |
my $viewgrade = $env{'form.showgrading'} eq 'yes' ? 'View/Grade/Regrade' : 'View'; |
$env{'form.probTitle'} = $env{'form.probTitle'} eq '' ? |
$env{'form.probTitle'} = $env{'form.probTitle'} eq '' ? |
&Apache::lonnet::gettitle($symb) : $env{'form.probTitle'}; |
&Apache::lonnet::gettitle($symb) : $env{'form.probTitle'}; |
Line 867 LISTJAVASCRIPT
|
Line 901 LISTJAVASCRIPT
|
'value="Next->" /> <br />'."\n"; |
'value="Next->" /> <br />'."\n"; |
$gradeTable.=&check_buttons(); |
$gradeTable.=&check_buttons(); |
$gradeTable.='<label><input type="checkbox" name="checkPlag" checked="checked" />Check For Plagiarism</label>'; |
$gradeTable.='<label><input type="checkbox" name="checkPlag" checked="checked" />Check For Plagiarism</label>'; |
my ($classlist, undef, $fullname) = &getclasslist($getsec,'1'); |
my ($classlist, undef, $fullname) = &getclasslist($getsec,'1',$getgroup); |
$gradeTable.='<table border="0"><tr><td bgcolor="#777777">'. |
$gradeTable.='<table border="0"><tr><td bgcolor="#777777">'. |
'<table border="0"><tr bgcolor="#e6ffff">'; |
'<table border="0"><tr bgcolor="#e6ffff">'; |
my $loop = 0; |
my $loop = 0; |
Line 942 LISTJAVASCRIPT
|
Line 976 LISTJAVASCRIPT
|
|
|
$ctr++; |
$ctr++; |
my $section = $classlist->{$student}->[&Apache::loncoursedata::CL_SECTION()]; |
my $section = $classlist->{$student}->[&Apache::loncoursedata::CL_SECTION()]; |
|
my $group = $classlist->{$student}->[&Apache::loncoursedata::CL_GROUP()]; |
if ( $perm{'vgr'} eq 'F' ) { |
if ( $perm{'vgr'} eq 'F' ) { |
$gradeTable.='<tr bgcolor="#ffffe6">' if ($ctr%2 ==1); |
$gradeTable.='<tr bgcolor="#ffffe6">' if ($ctr%2 ==1); |
$gradeTable.='<td align="right">'.$ctr.' </td>'. |
$gradeTable.='<td align="right">'.$ctr.' </td>'. |
Line 950 LISTJAVASCRIPT
|
Line 984 LISTJAVASCRIPT
|
$student.':'.$$fullname{$student}.':::SECTION'.$section. |
$student.':'.$$fullname{$student}.':::SECTION'.$section. |
') " /> </label></td>'."\n".'<td>'. |
') " /> </label></td>'."\n".'<td>'. |
&nameUserString(undef,$$fullname{$student},$uname,$udom). |
&nameUserString(undef,$$fullname{$student},$uname,$udom). |
' '.$section.'</td>'."\n"; |
' '.$section.'/'.$group.'</td>'."\n"; |
|
|
if ($env{'form.showgrading'} eq 'yes' && $submitonly ne 'all') { |
if ($env{'form.showgrading'} eq 'yes' && $submitonly ne 'all') { |
foreach (sort keys(%status)) { |
foreach (sort keys(%status)) { |
Line 1782 sub build_section_inputs {
|
Line 1816 sub build_section_inputs {
|
# --------------------------- show submissions of a student, option to grade |
# --------------------------- show submissions of a student, option to grade |
sub submission { |
sub submission { |
my ($request,$counter,$total) = @_; |
my ($request,$counter,$total) = @_; |
|
|
my ($uname,$udom) = ($env{'form.student'},$env{'form.userdom'}); |
my ($uname,$udom) = ($env{'form.student'},$env{'form.userdom'}); |
$udom = ($udom eq '' ? $env{'user.domain'} : $udom); #has form.userdom changed for a student? |
$udom = ($udom eq '' ? $env{'user.domain'} : $udom); #has form.userdom changed for a student? |
my $usec = &Apache::lonnet::getsection($udom,$uname,$env{'request.course.id'}); |
my $usec = &Apache::lonnet::getsection($udom,$uname,$env{'request.course.id'}); |
Line 5714 SCANTRONFORM
|
Line 5747 SCANTRONFORM
|
|
|
my $line = 0; |
my $line = 0; |
while (defined($env{"form.scantron.bubblelines.$line"})) { |
while (defined($env{"form.scantron.bubblelines.$line"})) { |
|
&Apache::lonnet::logthis("Saving chunk for $line"); |
my $chunk = |
my $chunk = |
'<input type="hidden" name="scantron.bubblelines.'.$line.'" value="'.$env{"form.scantron.bubblelines.$line"}.'" />'."\n"; |
'<input type="hidden" name="scantron.bubblelines.'.$line.'" value="'.$env{"form.scantron.bubblelines.$line"}.'" />'."\n"; |
$chunk += |
$chunk .= |
'<input type="hidden" name="scantron.first_bubble_line.'.$line'." value="'.$env{"form.scantron.first_bubble_line.$line"}.'" />'."\n"; |
'<input type="hidden" name="scantron.first_bubble_line.'.$line.'" value="'.$env{"form.scantron.first_bubble_line.$line"}.'" />'."\n"; |
$result .= $chunk; |
$result .= $chunk; |
$line++; |
$line++; |
} |
} |
Line 5779 sub scantron_validate_file {
|
Line 5813 sub scantron_validate_file {
|
} |
} |
my $currentphase=$env{'form.validatepass'}; |
my $currentphase=$env{'form.validatepass'}; |
|
|
|
&Apache::lonnet::logthis("Phase: $currentphase"); |
|
|
my $stop=0; |
my $stop=0; |
while (!$stop && $currentphase < scalar(@validate_phases)) { |
while (!$stop && $currentphase < scalar(@validate_phases)) { |
$r->print("<p> Validating ".$validate_phases[$currentphase]."</p>"); |
$r->print("<p> Validating ".$validate_phases[$currentphase]."</p>"); |
Line 6289 sub scantron_validate_ID {
|
Line 6325 sub scantron_validate_ID {
|
sub scantron_get_correction { |
sub scantron_get_correction { |
my ($r,$i,$scan_record,$scan_config,$line,$error,$arg)=@_; |
my ($r,$i,$scan_record,$scan_config,$line,$error,$arg)=@_; |
|
|
#FIXME in the case of a duplicated ID the previous line, probaly need |
#FIXME in the case of a duplicated ID the previous line, probably need |
#to show both the current line and the previous one and allow skipping |
#to show both the current line and the previous one and allow skipping |
#the previous one or the current one |
#the previous one or the current one |
|
|
Line 6401 ENDSCRIPT
|
Line 6437 ENDSCRIPT
|
$r->print('<input type="hidden" name="scantron_questions" value="'. |
$r->print('<input type="hidden" name="scantron_questions" value="'. |
join(',',@{$arg}).'" />'); |
join(',',@{$arg}).'" />'); |
foreach my $question (@{$arg}) { |
foreach my $question (@{$arg}) { |
my $selected = &get_response_bubbles($scan_record, $quesion); |
my $selected = &get_response_bubbles($scan_record, $question); |
&scantron_bubble_selector($r,$scan_config,$question); |
&scantron_bubble_selector($r,$scan_config,$question); |
} |
} |
} else { |
} else { |
Line 6435 sub scantron_bubble_selector {
|
Line 6471 sub scantron_bubble_selector {
|
|
|
if ($scmode eq 'number' || $scmode eq 'letter') { $max=10; } |
if ($scmode eq 'number' || $scmode eq 'letter') { $max=10; } |
|
|
|
my $response = $quest-1; |
my $lines = $bubble_lines_per_response{$quest}; |
my $lines = $bubble_lines_per_response{$response}; |
|
&Apache::lonnet::logthis("Question $quest, lines: $lines"); |
|
|
my $total_lines = $lines*2; |
my $total_lines = $lines*2; |
my @alphabet=('A'..'Z'); |
my @alphabet=('A'..'Z'); |
Line 6700 sub scantron_validate_doublebubble {
|
Line 6737 sub scantron_validate_doublebubble {
|
=cut |
=cut |
|
|
sub scantron_get_maxbubble { |
sub scantron_get_maxbubble { |
|
&Apache::lonnet::logthis("get_max_bubble"); |
if (defined($env{'form.scantron_maxbubble'}) && |
if (defined($env{'form.scantron_maxbubble'}) && |
$env{'form.scantron_maxbubble'}) { |
$env{'form.scantron_maxbubble'}) { |
|
&Apache::lonnet::logthis("cached"); |
&restore_bubble_lines(); |
&restore_bubble_lines(); |
return $env{'form.scantron_maxbubble'}; |
return $env{'form.scantron_maxbubble'}; |
} |
} |
|
&Apache::lonnet::logthis("computing"); |
|
|
my (undef, undef, $sequence) = |
my (undef, undef, $sequence) = |
&Apache::lonnet::decode_symb($env{'form.selectpage'}); |
&Apache::lonnet::decode_symb($env{'form.selectpage'}); |
Line 7184 sub grading_menu {
|
Line 7223 sub grading_menu {
|
$fields{'command'} = 'scantron_selectphase'; |
$fields{'command'} = 'scantron_selectphase'; |
$url = &Apache::lonhtmlcommon::build_url('grades/',\%fields); |
$url = &Apache::lonhtmlcommon::build_url('grades/',\%fields); |
push (@menu, { url => $url, |
push (@menu, { url => $url, |
name => &mt('Grade Scantron Forms'), |
name => &mt('Grade/Manage Scantron Forms'), |
|
short_description => |
|
&mt('')}); |
|
$fields{'command'} = 'codelist'; |
|
$url = &Apache::lonhtmlcommon::build_url('/adm/pickcode',\%fields); |
|
push (@menu, { url => $url, |
|
name => &mt('View Saved CODEs'), |
short_description => |
short_description => |
&mt('')}); |
&mt('')}); |
$fields{'command'} = 'verify'; |
$fields{'command'} = 'verify'; |
Line 7194 sub grading_menu {
|
Line 7239 sub grading_menu {
|
name => &mt('Verify Receipt'), |
name => &mt('Verify Receipt'), |
short_description => |
short_description => |
&mt('')}); |
&mt('')}); |
$fields{'command'} = 'manage'; |
|
$url = &Apache::lonhtmlcommon::build_url('/adm/helper/resettimes.helper',\%fields); |
|
push (@menu, { url => $url, |
|
name => &mt('Manage Access Times'), |
|
short_description => |
|
&mt('')}); |
|
$fields{'command'} = 'view'; |
|
$url = &Apache::lonhtmlcommon::build_url('/adm/pickcode',\%fields); |
|
push (@menu, { url => $url, |
|
name => &mt('View Saved CODEs'), |
|
short_description => |
|
&mt('')}); |
|
|
|
# |
# |
# Create the menu |
# Create the menu |
Line 7660 function sanitycheck() {
|
Line 7693 function sanitycheck() {
|
<input type="hidden" name="saveState" value="$env{'form.saveState'}" /> |
<input type="hidden" name="saveState" value="$env{'form.saveState'}" /> |
<input type="file" name="upfile" size="50" /> |
<input type="file" name="upfile" size="50" /> |
<br /><label>$type: $selectform</label> |
<br /><label>$type: $selectform</label> |
<br /><label>$attendance: <input type="radio" name="gradingmechanism" value="attendance" $checked{'attendance'} onClick="sanitycheck()" /></label> |
<br /><label><input type="radio" name="gradingmechanism" value="attendance" $checked{'attendance'} onClick="sanitycheck()" />$attendance </label> |
<br /><label>$personnel: <input type="radio" name="gradingmechanism" value="personnel" $checked{'personnel'} onClick="sanitycheck()" /></label> |
<br /><label><input type="radio" name="gradingmechanism" value="personnel" $checked{'personnel'} onClick="sanitycheck()" />$personnel</label> |
<br /><label>$specific: <input type="radio" name="gradingmechanism" value="specific" $checked{'specific'} onClick="sanitycheck()" /></label> |
<br /><label><input type="radio" name="gradingmechanism" value="specific" $checked{'specific'} onClick="sanitycheck()" />$specific </label> |
<input type="text" name="specificid" value="$env{'form.specificid'}" size="20" /> |
<input type="text" name="specificid" value="$env{'form.specificid'}" size="20" /> |
<input type="hidden" name="waschecked" value="$env{'form.gradingmechanism'}" /> |
<input type="hidden" name="waschecked" value="$env{'form.gradingmechanism'}" /> |
<br /><label>$pcorrect: <input type="text" name="pcorrect" size="4" value="$env{'form.pcorrect'}" onChange="sanitycheck()" /></label> |
<br /><label>$pcorrect: <input type="text" name="pcorrect" size="4" value="$env{'form.pcorrect'}" onChange="sanitycheck()" /></label> |
Line 7997 ENDHEADER
|
Line 8030 ENDHEADER
|
|
|
sub handler { |
sub handler { |
my $request=$_[0]; |
my $request=$_[0]; |
|
|
&reset_caches(); |
&reset_caches(); |
if ($env{'browser.mathml'}) { |
if ($env{'browser.mathml'}) { |
&Apache::loncommon::content_type($request,'text/xml'); |
&Apache::loncommon::content_type($request,'text/xml'); |