version 1.596.2.12.2.1, 2012/05/02 14:01:32
|
version 1.596.2.12.2.3, 2012/05/02 15:21:00
|
Line 3006 sub handback_files {
|
Line 3006 sub handback_files {
|
&file_name_version_ext($answer_file); |
&file_name_version_ext($answer_file); |
my ($portfolio_path) = ($directory =~ /^.+$stuname\/portfolio(.*)/); |
my ($portfolio_path) = ($directory =~ /^.+$stuname\/portfolio(.*)/); |
my $getpropath = 1; |
my $getpropath = 1; |
my @dir_list = &Apache::lonnet::dirlist($portfolio_root.$portfolio_path,$domain,$stuname,$getpropath); |
my ($dir_list,$listerror) = |
my $version = &get_next_version($answer_name, $answer_ext, \@dir_list); |
&Apache::lonnet::dirlist($portfolio_root.$portfolio_path, |
|
$domain,$stuname,$getpropath); |
|
my $version = &get_next_version($answer_name,$answer_ext,$dir_list); |
# fix file name |
# fix file name |
my ($save_file_name) = (($directory.$answer_name.".$version.".$answer_ext) =~ /^.+\/${stuname}\/(.*)/); |
my ($save_file_name) = (($directory.$answer_name.".$version.".$answer_ext) =~ /^.+\/${stuname}\/(.*)/); |
my $result=&Apache::lonnet::finishuserfileupload($stuname,$domain, |
my $result=&Apache::lonnet::finishuserfileupload($stuname,$domain, |
Line 3167 sub version_portfiles {
|
Line 3169 sub version_portfiles {
|
my ($directory,$answer_file) =($file =~ /^(.*?)([^\/]*)$/); |
my ($directory,$answer_file) =($file =~ /^(.*?)([^\/]*)$/); |
my ($answer_name,$answer_ver,$answer_ext) = |
my ($answer_name,$answer_ver,$answer_ext) = |
&file_name_version_ext($answer_file); |
&file_name_version_ext($answer_file); |
my $getpropath = 1; |
my $getpropath = 1; |
my @dir_list = &Apache::lonnet::dirlist($portfolio_root.$directory,$domain,$stu_name,$getpropath); |
my ($dir_list,$listerror) = |
my $version = &get_next_version($answer_name, $answer_ext, \@dir_list); |
&Apache::lonnet::dirlist($portfolio_root.$directory,$domain, |
|
$stu_name,$getpropath); |
|
my $version = &get_next_version($answer_name,$answer_ext,$dir_list); |
my $new_answer = &version_selected_portfile($domain, $stu_name, $directory, $answer_file, $version); |
my $new_answer = &version_selected_portfile($domain, $stu_name, $directory, $answer_file, $version); |
if ($new_answer ne 'problem getting file') { |
if ($new_answer ne 'problem getting file') { |
push(@versioned_portfiles, $directory.$new_answer); |
push(@versioned_portfiles, $directory.$new_answer); |
Line 3188 sub version_portfiles {
|
Line 3192 sub version_portfiles {
|
sub get_next_version { |
sub get_next_version { |
my ($answer_name, $answer_ext, $dir_list) = @_; |
my ($answer_name, $answer_ext, $dir_list) = @_; |
my $version; |
my $version; |
foreach my $row (@$dir_list) { |
if (ref($dir_list) eq 'ARRAY') { |
my ($file) = split(/\&/,$row,2); |
foreach my $row (@{$dir_list}) { |
my ($file_name,$file_version,$file_ext) = |
my ($file) = split(/\&/,$row,2); |
&file_name_version_ext($file); |
my ($file_name,$file_version,$file_ext) = |
if (($file_name eq $answer_name) && |
&file_name_version_ext($file); |
($file_ext eq $answer_ext)) { |
if (($file_name eq $answer_name) && |
# gets here if filename and extension match, regardless of version |
($file_ext eq $answer_ext)) { |
|
# gets here if filename and extension match, |
|
# regardless of version |
if ($file_version ne '') { |
if ($file_version ne '') { |
# a versioned file is found so save it for later |
# a versioned file is found so save it for later |
if ($file_version > $version) { |
if ($file_version > $version) { |
$version = $file_version; |
$version = $file_version; |
|
} |
} |
} |
} |
} |
} |
} |
} |
} |
$version ++; |
$version ++; |
return($version); |
return($version); |
} |
} |
Line 5161 sub scantron_filenames {
|
Line 5168 sub scantron_filenames {
|
my $cdom=$env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cdom=$env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cname=$env{'course.'.$env{'request.course.id'}.'.num'}; |
my $cname=$env{'course.'.$env{'request.course.id'}.'.num'}; |
my $getpropath = 1; |
my $getpropath = 1; |
my @files=&Apache::lonnet::dirlist('userfiles',$cdom,$cname, |
my ($dirlist,$listerror) = &Apache::lonnet::dirlist('userfiles',$cdom, |
$getpropath); |
$cname,$getpropath); |
my @possiblenames; |
my @possiblenames; |
foreach my $filename (sort(@files)) { |
if (ref($dirlist) eq 'ARRAY') { |
($filename)=split(/&/,$filename); |
foreach my $filename (sort(@{$dirlist})) { |
if ($filename!~/^scantron_orig_/) { next ; } |
($filename)=split(/&/,$filename); |
$filename=~s/^scantron_orig_//; |
if ($filename!~/^scantron_orig_/) { next ; } |
push(@possiblenames,$filename); |
$filename=~s/^scantron_orig_//; |
|
push(@possiblenames,$filename); |
|
} |
} |
} |
return @possiblenames; |
return @possiblenames; |
} |
} |
Line 6383 sub scantron_warning_screen {
|
Line 6392 sub scantron_warning_screen {
|
'<tr><td><b>'.&mt('List of CODES to validate against:').'</b></td><td><tt>'. |
'<tr><td><b>'.&mt('List of CODES to validate against:').'</b></td><td><tt>'. |
$env{'form.scantron_CODElist'}.'</tt></td></tr>'; |
$env{'form.scantron_CODElist'}.'</tt></td></tr>'; |
} |
} |
|
my $lastbubblepoints; |
|
if ($env{'form.scantron_lastbubblepoints'} ne '') { |
|
$lastbubblepoints = |
|
'<tr><td><b>'.&mt('Hand-graded items: points from last bubble in row').'</b></td><td><tt>'. |
|
$env{'form.scantron_lastbubblepoints'}.'</tt></td></tr>'; |
|
} |
return (' |
return (' |
<p> |
<p> |
<span class="LC_warning"> |
<span class="LC_warning"> |
Line 6391 sub scantron_warning_screen {
|
Line 6406 sub scantron_warning_screen {
|
<table> |
<table> |
<tr><td><b>'.&mt('Sequence to be Graded:').'</b></td><td>'.$title.'</td></tr> |
<tr><td><b>'.&mt('Sequence to be Graded:').'</b></td><td>'.$title.'</td></tr> |
<tr><td><b>'.&mt('Data File that will be used:').'</b></td><td><tt>'.$env{'form.scantron_selectfile'}.'</tt></td></tr> |
<tr><td><b>'.&mt('Data File that will be used:').'</b></td><td><tt>'.$env{'form.scantron_selectfile'}.'</tt></td></tr> |
'.$CODElist.' |
'.$CODElist.$lastbubblepoints.' |
</table> |
</table> |
<br /> |
<br /> |
<p> '.&mt('If this information is correct, please click on \'[_1]\'.',&mt($button_text)).'</p> |
<p> '.&mt('If this information is correct, please click on \'[_1]\'.',&mt($button_text)).'</p> |
Line 6431 sub scantron_do_warning {
|
Line 6446 sub scantron_do_warning {
|
} |
} |
} else { |
} else { |
my $warning=&scantron_warning_screen('Grading: Validate Records'); |
my $warning=&scantron_warning_screen('Grading: Validate Records'); |
|
my $bubbledbyhand=&hand_bubble_option(); |
$r->print(' |
$r->print(' |
'.$warning.' |
'.$warning.$bubbledbyhand.' |
<input type="submit" name="submit" value="'.&mt('Grading: Validate Records').'" /> |
<input type="submit" name="submit" value="'.&mt('Grading: Validate Records').'" /> |
<input type="hidden" name="command" value="scantron_validate" /> |
<input type="hidden" name="command" value="scantron_validate" /> |
'); |
'); |
Line 6529 sub scantron_validate_file {
|
Line 6545 sub scantron_validate_file {
|
return ''; |
return ''; |
} |
} |
my $result=&scantron_form_start($max_bubble).$default_form_data; |
my $result=&scantron_form_start($max_bubble).$default_form_data; |
|
if ($env{'form.scantron_lastbubblepoints'} ne '') { |
|
$result .= '<input type="hidden" name="scantron_lastbubblepoints" value="'.$env{'form.scantron_lastbubblepoints'}.'" />'; |
|
} |
$r->print($result); |
$r->print($result); |
|
|
my @validate_phases=( 'sequence', |
my @validate_phases=( 'sequence', |
Line 7806 sub scantron_validate_missingbubbles {
|
Line 7825 sub scantron_validate_missingbubbles {
|
return (0,$currentphase+1); |
return (0,$currentphase+1); |
} |
} |
|
|
|
sub hand_bubble_option { |
|
my (undef, undef, $sequence) = |
|
&Apache::lonnet::decode_symb($env{'form.selectpage'}); |
|
return if ($sequence eq ''); |
|
my $navmap = Apache::lonnavmaps::navmap->new(); |
|
unless (ref($navmap)) { |
|
return; |
|
} |
|
my $needs_hand_bubbles; |
|
my $map=$navmap->getResourceByUrl($sequence); |
|
my @resources=$navmap->retrieveResources($map,\&scantron_filter,1,0); |
|
foreach my $res (@resources) { |
|
if (ref($res)) { |
|
if ($res->is_problem()) { |
|
my $partlist = $res->parts(); |
|
foreach my $part (@{ $partlist }) { |
|
my @types = $res->responseType($part); |
|
if (grep(/^(chem|essay|image|formula|math|string|functionplot)$/,@types)) { |
|
$needs_hand_bubbles = 1; |
|
last; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
if ($needs_hand_bubbles) { |
|
my %scantron_config=&get_scantron_config($env{'form.scantron_format'}); |
|
my $bubbles_per_row = &bubblesheet_bubbles_per_row(\%scantron_config); |
|
return &mt('The sequence to be graded contains response types which are handgraded.').'<p>'. |
|
&mt('If you have already graded these by bubbling sheets to indicate points awarded, [_1]what point value is assigned to a filled last bubble in each row?','<br />'). |
|
'<label><input type="radio" name="scantron_lastbubblepoints" value="'.$bubbles_per_row.'" checked="checked" />'.&mt('[quant,_1,point]',$bubbles_per_row).'</label> '.&mt('or').' '. |
|
'<label><input type="radio" name="scantron_lastbubblepoints" value="0"/>0 points</label></p>'; |
|
} |
|
return; |
|
} |
|
|
sub scantron_process_students { |
sub scantron_process_students { |
my ($r) = @_; |
my ($r) = @_; |
Line 8101 sub grade_student_bubbles {
|
Line 8155 sub grade_student_bubbles {
|
if ($bubbles_per_row ne '') { |
if ($bubbles_per_row ne '') { |
$form{'bubbles_per_row'} = $bubbles_per_row; |
$form{'bubbles_per_row'} = $bubbles_per_row; |
} |
} |
|
if ($env{'form.scantron_lastbubblepoints'} ne '') { |
|
$form{'scantron_lastbubblepoints'} = $env{'form.scantron_lastbubblepoints'}; |
|
} |
if (ref($parts) eq 'HASH') { |
if (ref($parts) eq 'HASH') { |
if (ref($parts->{$ressymb}) eq 'ARRAY') { |
if (ref($parts->{$ressymb}) eq 'ARRAY') { |
foreach my $part (@{$parts->{$ressymb}}) { |
foreach my $part (@{$parts->{$ressymb}}) { |