version 1.272, 2005/06/04 19:02:19
|
version 1.287, 2005/09/22 21:30:42
|
Line 471 sub most_similar {
|
Line 471 sub most_similar {
|
|
|
$uessay=~s/\W+/ /gs; |
$uessay=~s/\W+/ /gs; |
|
|
|
# ignore empty submissions (occuring when only files are sent) |
|
|
|
unless ($uessay=~/\w+/) { return ''; } |
|
|
# these will be returned. Do not care if not at least 50 percent similar |
# these will be returned. Do not care if not at least 50 percent similar |
my $limit=0.6; |
my $limit=0.6; |
my $sname=''; |
my $sname=''; |
Line 743 LISTJAVASCRIPT
|
Line 747 LISTJAVASCRIPT
|
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)) { |
next if (/^resource.*?submitted_by$/); |
next if (/^resource.*?submitted_by$/); |
$gradeTable.='<td align="middle"> '.$status{$_}.' </td>'."\n"; |
$gradeTable.='<td align="center"> '.$status{$_}.' </td>'."\n"; |
} |
} |
} |
} |
# $gradeTable.='<td></td>' if ($ctr%2 ==1); |
# $gradeTable.='<td></td>' if ($ctr%2 ==1); |
Line 2293 sub version_portfiles {
|
Line 2297 sub version_portfiles {
|
my $portfolio_root = &Apache::loncommon::propath($domain, |
my $portfolio_root = &Apache::loncommon::propath($domain, |
$stuname). |
$stuname). |
'/userfiles/portfolio'; |
'/userfiles/portfolio'; |
foreach my $key(keys %$record) { |
foreach my $key (keys(%$record)) { |
my $new_portfiles; |
my $new_portfiles; |
|
|
if ($key =~ /^resource\.($version_parts)\./ && $key =~ /\.portfiles$/ ) { |
if ($key =~ /^resource\.($version_parts)\./ && $key =~ /\.portfiles$/ ) { |
my @v_portfiles; |
my @v_portfiles; |
my @portfiles = split(/,/,$$record{$key}); |
my @portfiles = split(/,/,$$record{$key}); |
# &Apache::lonnet::logthis("should be unmarking and remarking"); |
&Apache::lonnet::logthis("should be unmarking and remarking $key",@portfiles); |
foreach my $file (@portfiles) { |
foreach my $file (@portfiles) { |
&Apache::lonnet::unmark_as_readonly($domain,$stuname,[$symb,$env{'request.course.id'}],$file); |
&Apache::lonnet::unmark_as_readonly($domain,$stuname,[$symb,$env{'request.course.id'}],$file); |
my ($directory,$answer_file) =($file =~ /^(.*?)([^\/]*$)/); |
my ($directory,$answer_file) =($file =~ /^(.*?)([^\/]*$)/); |
Line 2321 sub version_portfiles {
|
Line 2326 sub version_portfiles {
|
} |
} |
} |
} |
$version++; |
$version++; |
my $home_server = &Apache::lonnet::homeserver($stuname,$domain,undef); |
|
$env{'form.copy'} = &Apache::lonnet::getfile("/uploaded/$domain/$stuname/portfolio$directory$answer_file"); |
$env{'form.copy'} = &Apache::lonnet::getfile("/uploaded/$domain/$stuname/portfolio$directory$answer_file"); |
if($env{'form.copy'} eq '-1') { |
if($env{'form.copy'} eq '-1') { |
&Apache::lonnet::logthis('problem getting file '.$directory.$answer_file); |
&Apache::lonnet::logthis('problem getting file '.$directory.$answer_file); |
} else { |
} else { |
my $copy_result = &Apache::lonnet::finishuserfileupload($stuname,$domain,$home_server,'copy', |
my $copy_result = &Apache::lonnet::finishuserfileupload($stuname,$domain,'copy', |
'/portfolio'.$directory.$answer_file_parts[0].'.'.$version.'.'.$answer_file_parts[-1]); |
'/portfolio'.$directory.$answer_file_parts[0].'.'.$version.'.'.$answer_file_parts[-1]); |
push(@v_portfiles, $answer_file_parts[0].'.'.$version.'.'.$answer_file_parts[-1]); |
push(@v_portfiles, $directory.$answer_file_parts[0].'.'.$version.'.'.$answer_file_parts[-1]); |
&Apache::lonnet::mark_as_readonly($domain,$stuname, |
&Apache::lonnet::mark_as_readonly($domain,$stuname, |
['/portfolio'.$directory.$answer_file_parts[0].'.'.$version.'.'.$answer_file_parts[-1]], |
['/portfolio'.$directory.$answer_file_parts[0].'.'.$version.'.'.$answer_file_parts[-1]], |
[$symb,$env{'request.course.id'},'graded']); |
[$symb,$env{'request.course.id'},'graded']); |
Line 2656 sub viewgrades {
|
Line 2660 sub viewgrades {
|
sub viewstudentgrade { |
sub viewstudentgrade { |
my ($url,$symb,$courseid,$student,$fullname,$parts,$weight,$ctr,$last_resets) = @_; |
my ($url,$symb,$courseid,$student,$fullname,$parts,$weight,$ctr,$last_resets) = @_; |
my ($uname,$udom) = split(/:/,$student); |
my ($uname,$udom) = split(/:/,$student); |
$student=~s/:/_/; |
|
my %record=&Apache::lonnet::restore($symb,$courseid,$udom,$uname); |
my %record=&Apache::lonnet::restore($symb,$courseid,$udom,$uname); |
my %aggregates = (); |
my %aggregates = (); |
my $result='<tr bgcolor="#ffffdd"><td align="right">'. |
my $result='<tr bgcolor="#ffffdd"><td align="right">'. |
Line 2665 sub viewstudentgrade {
|
Line 2668 sub viewstudentgrade {
|
'<a href="javascript:viewOneStudent(\''.$uname.'\',\''.$udom. |
'<a href="javascript:viewOneStudent(\''.$uname.'\',\''.$udom. |
'\')"; TARGET=_self>'.$fullname.'</a> '. |
'\')"; TARGET=_self>'.$fullname.'</a> '. |
'<font color="#999999">('.$uname.($env{'user.domain'} eq $udom ? '' : ':'.$udom).')</font></td>'."\n"; |
'<font color="#999999">('.$uname.($env{'user.domain'} eq $udom ? '' : ':'.$udom).')</font></td>'."\n"; |
|
$student=~s/:/_/; # colon doen't work in javascript for names |
foreach my $apart (@$parts) { |
foreach my $apart (@$parts) { |
my ($part,$type) = &split_part_type($apart); |
my ($part,$type) = &split_part_type($apart); |
my $score=$record{"resource.$part.$type"}; |
my $score=$record{"resource.$part.$type"}; |
$result.='<td align="middle">'; |
$result.='<td align="center">'; |
my ($aggtries,$totaltries); |
my ($aggtries,$totaltries); |
unless (exists($aggregates{$part})) { |
unless (exists($aggregates{$part})) { |
$totaltries = $record{'resource.'.$part.'.tries'}; |
$totaltries = $record{'resource.'.$part.'.tries'}; |
Line 2786 sub editgrades {
|
Line 2790 sub editgrades {
|
for ($i=0; $i<$env{'form.total'}; $i++) { |
for ($i=0; $i<$env{'form.total'}; $i++) { |
my $line; |
my $line; |
my $user = $env{'form.ctr'.$i}; |
my $user = $env{'form.ctr'.$i}; |
my $usercolon = $user; |
my ($uname,$udom)=split(/:/,$user); |
$usercolon =~s/_/:/; |
|
my ($uname,$udom)=split(/_/,$user); |
|
my %newrecord; |
my %newrecord; |
my $updateflag = 0; |
my $updateflag = 0; |
$line .= '<td>'.&nameUserString(undef,$$fullname{$usercolon},$uname,$udom).'</td>'; |
$line .= '<td>'.&nameUserString(undef,$$fullname{$user},$uname,$udom).'</td>'; |
my $usec=$classlist->{"$uname:$udom"}[5]; |
my $usec=$classlist->{"$uname:$udom"}[5]; |
if (!&canmodify($usec)) { |
if (!&canmodify($usec)) { |
my $numcols=scalar(@partid)*4+2; |
my $numcols=scalar(@partid)*4+2; |
Line 2800 sub editgrades {
|
Line 2802 sub editgrades {
|
} |
} |
my %aggregate = (); |
my %aggregate = (); |
my $aggregateflag = 0; |
my $aggregateflag = 0; |
|
$user=~s/:/_/; # colon doen't work in javascript for names |
foreach (@partid) { |
foreach (@partid) { |
my $old_aw = $env{'form.GD_'.$user.'_'.$_.'_awarded_s'}; |
my $old_aw = $env{'form.GD_'.$user.'_'.$_.'_awarded_s'}; |
my $old_part_pcr = $old_aw/($weight{$_} ne '0' ? $weight{$_}:1); |
my $old_part_pcr = $old_aw/($weight{$_} ne '0' ? $weight{$_}:1); |
Line 3062 sub csvuploadmap_footer {
|
Line 3065 sub csvuploadmap_footer {
|
ENDPICK |
ENDPICK |
} |
} |
|
|
sub upcsvScores_form { |
sub checkforfile_js { |
my ($request) = shift; |
|
my ($symb,$url)=&get_symb_and_url($request); |
|
if (!$symb) {return '';} |
|
my $result =<<CSVFORMJS; |
my $result =<<CSVFORMJS; |
<script type="text/javascript" language="javascript"> |
<script type="text/javascript" language="javascript"> |
function checkUpload(formname) { |
function checkUpload(formname) { |
Line 3077 sub upcsvScores_form {
|
Line 3077 sub upcsvScores_form {
|
} |
} |
</script> |
</script> |
CSVFORMJS |
CSVFORMJS |
|
return $result; |
|
} |
|
|
|
sub upcsvScores_form { |
|
my ($request) = shift; |
|
my ($symb,$url)=&get_symb_and_url($request); |
|
if (!$symb) {return '';} |
|
my $result=&checkforfile_js(); |
$env{'form.probTitle'} = &Apache::lonnet::gettitle($symb); |
$env{'form.probTitle'} = &Apache::lonnet::gettitle($symb); |
my ($table) = &showResourceInfo($url,$env{'form.probTitle'}); |
my ($table) = &showResourceInfo($url,$env{'form.probTitle'}); |
$result.=$table; |
$result.=$table; |
Line 3096 CSVFORMJS
|
Line 3104 CSVFORMJS
|
<input type="hidden" name="saveState" value="$env{'form.saveState'}" /> |
<input type="hidden" name="saveState" value="$env{'form.saveState'}" /> |
$upfile_select |
$upfile_select |
<br /><input type="button" onClick="javascript:checkUpload(this.form);" value="Upload Scores" /> |
<br /><input type="button" onClick="javascript:checkUpload(this.form);" value="Upload Scores" /> |
<label><input type="checkbox" name="noFirstLine" />$ignore</lable> |
<label><input type="checkbox" name="noFirstLine" />$ignore</label> |
</form> |
</form> |
ENDUPFORM |
ENDUPFORM |
$result.='</td></tr></table>'."\n"; |
$result.='</td></tr></table>'."\n"; |
Line 3865 sub scantron_CODElist {
|
Line 3873 sub scantron_CODElist {
|
my $namechoice='<option></option>'; |
my $namechoice='<option></option>'; |
foreach my $name (sort {uc($a) cmp uc($b)} @names) { |
foreach my $name (sort {uc($a) cmp uc($b)} @names) { |
if ($name =~ /^error: 2 /) { next; } |
if ($name =~ /^error: 2 /) { next; } |
|
if ($name =~ /^type\0/) { next; } |
$namechoice.='<option value="'.$name.'">'.$name.'</option>'; |
$namechoice.='<option value="'.$name.'">'.$name.'</option>'; |
} |
} |
$namechoice='<select name="scantron_CODElist">'.$namechoice.'</select>'; |
$namechoice='<select name="scantron_CODElist">'.$namechoice.'</select>'; |
Line 4108 sub scantron_fixup_scanline {
|
Line 4117 sub scantron_fixup_scanline {
|
&scan_data($scan_data, |
&scan_data($scan_data, |
"$whichline.no_bubble.".$args->{'question'},'1'); |
"$whichline.no_bubble.".$args->{'question'},'1'); |
} else { |
} else { |
substr($answer,$args->{'response'},1)=$on; |
if ($on eq 'letter') { |
|
my @alphabet=('A'..'Z'); |
|
$answer=$alphabet[$args->{'response'}]; |
|
} elsif ($on eq 'number') { |
|
$answer=$args->{'response'}+1; |
|
} else { |
|
substr($answer,$args->{'response'},1)=$on; |
|
} |
&scan_data($scan_data, |
&scan_data($scan_data, |
"$whichline.no_bubble.".$args->{'question'},undef,'1'); |
"$whichline.no_bubble.".$args->{'question'},undef,'1'); |
} |
} |
Line 4133 sub scantron_parse_scanline {
|
Line 4149 sub scantron_parse_scanline {
|
my %record; |
my %record; |
my $questions=substr($line,$$scantron_config{'Qstart'}-1); |
my $questions=substr($line,$$scantron_config{'Qstart'}-1); |
my $data=substr($line,0,$$scantron_config{'Qstart'}-1); |
my $data=substr($line,0,$$scantron_config{'Qstart'}-1); |
if ($$scantron_config{'CODElocation'} ne 0) { |
if (!($$scantron_config{'CODElocation'} eq 0 || |
if ($$scantron_config{'CODElocation'} < 0) { |
$$scantron_config{'CODElocation'} eq 'none')) { |
|
if ($$scantron_config{'CODElocation'} < 0 || |
|
$$scantron_config{'CODElocation'} eq 'letter' || |
|
$$scantron_config{'CODElocation'} eq 'number') { |
$record{'scantron.CODE'}=substr($data, |
$record{'scantron.CODE'}=substr($data, |
$$scantron_config{'CODEstart'}-1, |
$$scantron_config{'CODEstart'}-1, |
$$scantron_config{'CODElength'}); |
$$scantron_config{'CODElength'}); |
Line 4169 sub scantron_parse_scanline {
|
Line 4188 sub scantron_parse_scanline {
|
substr($questions,0,$$scantron_config{'Qlength'})=''; |
substr($questions,0,$$scantron_config{'Qlength'})=''; |
if (length($currentquest) < $$scantron_config{'Qlength'}) { next; } |
if (length($currentquest) < $$scantron_config{'Qlength'}) { next; } |
if ($$scantron_config{'Qon'} eq 'letter') { |
if ($$scantron_config{'Qon'} eq 'letter') { |
if (!$currentquest || $currentquest eq $$scantron_config{'Qoff'} || |
if ($currentquest eq '?') { |
$currentquest !~ /^[A-Z]$/) { |
push(@{$record{'scantron.doubleerror'}},$questnum); |
|
$record{"scantron.$questnum.answer"}=''; |
|
} elsif (!$currentquest |
|
|| $currentquest eq $$scantron_config{'Qoff'} |
|
|| $currentquest !~ /^[A-Z]$/) { |
$record{"scantron.$questnum.answer"}=''; |
$record{"scantron.$questnum.answer"}=''; |
if (!&scan_data($scan_data,"$whichline.no_bubble.$questnum")) { |
if (!&scan_data($scan_data,"$whichline.no_bubble.$questnum")) { |
push(@{$record{"scantron.missingerror"}},$questnum); |
push(@{$record{"scantron.missingerror"}},$questnum); |
Line 4179 sub scantron_parse_scanline {
|
Line 4202 sub scantron_parse_scanline {
|
$record{"scantron.$questnum.answer"}=$currentquest; |
$record{"scantron.$questnum.answer"}=$currentquest; |
} |
} |
} elsif ($$scantron_config{'Qon'} eq 'number') { |
} elsif ($$scantron_config{'Qon'} eq 'number') { |
if (!$currentquest || $currentquest eq $$scantron_config{'Qoff'} || |
if ($currentquest eq '?') { |
$currentquest !~ /^\d$/) { |
push(@{$record{'scantron.doubleerror'}},$questnum); |
|
$record{"scantron.$questnum.answer"}=''; |
|
} elsif (!$currentquest |
|
|| $currentquest eq $$scantron_config{'Qoff'} |
|
|| $currentquest !~ /^\d$/) { |
$record{"scantron.$questnum.answer"}=''; |
$record{"scantron.$questnum.answer"}=''; |
if (!&scan_data($scan_data,"$whichline.no_bubble.$questnum")) { |
if (!&scan_data($scan_data,"$whichline.no_bubble.$questnum")) { |
push(@{$record{"scantron.missingerror"}},$questnum); |
push(@{$record{"scantron.missingerror"}},$questnum); |
Line 4297 sub scantron_process_corrections {
|
Line 4324 sub scantron_process_corrections {
|
} |
} |
} |
} |
if ($err) { |
if ($err) { |
$r->print("Unable to accept last correction, an error occurred :$errmsg:"); |
$r->print("<font color='red'>Unable to accept last correction, an error occurred :$errmsg:</font>"); |
} else { |
} else { |
&scantron_put_line($scanlines,$scan_data,$which,$line,$skip); |
&scantron_put_line($scanlines,$scan_data,$which,$line,$skip); |
&scantron_putfile($scanlines,$scan_data); |
&scantron_putfile($scanlines,$scan_data); |
Line 4351 sub check_for_error {
|
Line 4378 sub check_for_error {
|
sub scantron_warning_screen { |
sub scantron_warning_screen { |
my ($button_text)=@_; |
my ($button_text)=@_; |
my $title=&Apache::lonnet::gettitle($env{'form.selectpage'}); |
my $title=&Apache::lonnet::gettitle($env{'form.selectpage'}); |
|
my %scantron_config=&get_scantron_config($env{'form.scantron_format'}); |
|
my $CODElist="a"; |
|
if ($scantron_config{'CODElocation'} && |
|
$scantron_config{'CODEstart'} && |
|
$scantron_config{'CODElength'}) { |
|
$CODElist=$env{'form.scantron_CODElist'}; |
|
if ($CODElist eq '') { $CODElist='<font color="red">None</font>'; } |
|
$CODElist= |
|
'<tr><td><b>List of CODES to validate against:</b></td><td><tt>'. |
|
$CODElist.'</tt></td></tr>'; |
|
} |
return (<<STUFF); |
return (<<STUFF); |
<p> |
<p> |
<font color="red">Please double check the information |
<font color="red">Please double check the information |
below before clicking on '$button_text'</font> |
below before clicking on '$button_text'</font> |
</p> |
</p> |
<table> |
<table> |
<tr><td><b>Sequence To be Graded:</b></td><td>$title</td></tr> |
<tr><td><b>Sequence to be Graded:</b></td><td>$title</td></tr> |
<tr><td><b>Data File that will be used:</b></td><td><tt>$env{'form.scantron_selectfile'}</tt></td></tr> |
<tr><td><b>Data File that will be used:</b></td><td><tt>$env{'form.scantron_selectfile'}</tt></td></tr> |
|
$CODElist |
</table> |
</table> |
</font> |
</font> |
<br /> |
<br /> |
Line 4565 sub lonnet_putfile {
|
Line 4604 sub lonnet_putfile {
|
my ($contents,$filename)=@_; |
my ($contents,$filename)=@_; |
my $docuname=$env{'course.'.$env{'request.course.id'}.'.num'}; |
my $docuname=$env{'course.'.$env{'request.course.id'}.'.num'}; |
my $docudom=$env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $docudom=$env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $docuhome=$env{'course.'.$env{'request.course.id'}.'.home'}; |
|
$env{'form.sillywaytopassafilearound'}=$contents; |
$env{'form.sillywaytopassafilearound'}=$contents; |
&Apache::lonnet::finishuserfileupload($docuname,$docudom,$docuhome,'sillywaytopassafilearound',$filename); |
&Apache::lonnet::finishuserfileupload($docuname,$docudom,'sillywaytopassafilearound',$filename); |
|
|
} |
} |
|
|
Line 4735 sub scantron_get_correction {
|
Line 4773 sub scantron_get_correction {
|
$r->print("<p>How should I handle this? <br /> \n"); |
$r->print("<p>How should I handle this? <br /> \n"); |
$r->print("\n<br /> "); |
$r->print("\n<br /> "); |
my $i=0; |
my $i=0; |
if ($error eq 'incorrectCODE') { |
if ($error eq 'incorrectCODE' |
|
&& $$scan_record{'scantron.CODE'}=~/\S/ ) { |
my ($max,$closest)=&scantron_get_closely_matching_CODEs($arg,$$scan_record{'scantron.CODE'}); |
my ($max,$closest)=&scantron_get_closely_matching_CODEs($arg,$$scan_record{'scantron.CODE'}); |
foreach my $testcode (@{$closest}) { |
if ($closest > 0) { |
my $checked=''; |
foreach my $testcode (@{$closest}) { |
if (!$i) { $checked=' checked="on" '; } |
my $checked=''; |
$r->print("<label><input type='radio' name='scantron_CODE_resolution' value='use_closest_$i' $checked /> Use the similar CODE <b><tt>".$testcode."</tt></b> instead.</label><input type='hidden' name='scantron_CODE_closest_$i' value='$testcode' />"); |
if (!$i) { $checked=' checked="on" '; } |
$r->print("\n<br />"); |
$r->print("<label><input type='radio' name='scantron_CODE_resolution' value='use_closest_$i' $checked /> Use the similar CODE <b><tt>".$testcode."</tt></b> instead.</label><input type='hidden' name='scantron_CODE_closest_$i' value='$testcode' />"); |
$i++; |
$r->print("\n<br />"); |
|
$i++; |
|
} |
} |
} |
} |
} |
my $checked; if (!$i) { $checked=' checked="on" '; } |
if ($$scan_record{'scantron.CODE'}=~/\S/ ) { |
$r->print("<label><input type='radio' name='scantron_CODE_resolution' value='use_unfound' $checked /> Use the CODE <b><tt>".$$scan_record{'scantron.CODE'}."</tt></b> that is was on the paper, ignoring the error.</label>"); |
my $checked; if (!$i) { $checked=' checked="on" '; } |
$r->print("\n<br />"); |
$r->print("<label><input type='radio' name='scantron_CODE_resolution' value='use_unfound' $checked /> Use the CODE <b><tt>".$$scan_record{'scantron.CODE'}."</tt></b> that is was on the paper, ignoring the error.</label>"); |
|
$r->print("\n<br />"); |
|
} |
|
|
$r->print(<<ENDSCRIPT); |
$r->print(<<ENDSCRIPT); |
<script type="text/javascript"> |
<script type="text/javascript"> |
Line 4801 ENDSCRIPT
|
Line 4844 ENDSCRIPT
|
sub scantron_bubble_selector { |
sub scantron_bubble_selector { |
my ($r,$scan_config,$quest,@selected)=@_; |
my ($r,$scan_config,$quest,@selected)=@_; |
my $max=$$scan_config{'Qlength'}; |
my $max=$$scan_config{'Qlength'}; |
|
|
|
my $scmode=$$scan_config{'Qon'}; |
|
if ($scmode eq 'number' || $scmode eq 'letter') { $max=10; } |
|
|
my @alphabet=('A'..'Z'); |
my @alphabet=('A'..'Z'); |
$r->print("<table border='1'><tr><td rowspan='2'>$quest</td>"); |
$r->print("<table border='1'><tr><td rowspan='2'>$quest</td>"); |
for (my $i=0;$i<$max+1;$i++) { |
for (my $i=0;$i<$max+1;$i++) { |
$r->print('<td align="center">'); |
$r->print("\n".'<td align="center">'); |
if ($selected[0] eq $alphabet[$i]) { $r->print('X'); shift(@selected) } |
if ($selected[0] eq $alphabet[$i]) { $r->print('X'); shift(@selected) } |
else { $r->print(' '); } |
else { $r->print(' '); } |
$r->print('</td>'); |
$r->print('</td>'); |
} |
} |
$r->print('<td></td></tr><tr>'); |
$r->print('</tr><tr>'); |
for (my $i=0;$i<$max;$i++) { |
for (my $i=0;$i<$max;$i++) { |
$r->print('<td><label><input type="radio" name="scantron_correct_Q_'. |
$r->print("\n". |
|
'<td><label><input type="radio" name="scantron_correct_Q_'. |
$quest.'" value="'.$i.'" />'.$alphabet[$i]."</label></td>"); |
$quest.'" value="'.$i.'" />'.$alphabet[$i]."</label></td>"); |
} |
} |
$r->print('<td><label><input type="radio" name="scantron_correct_Q_'. |
$r->print('<td><label><input type="radio" name="scantron_correct_Q_'. |
Line 4841 sub scantron_get_closely_matching_CODEs
|
Line 4889 sub scantron_get_closely_matching_CODEs
|
} |
} |
|
|
sub get_codes { |
sub get_codes { |
my $old_name=$env{'form.scantron_CODElist'}; |
my ($old_name, $cdom, $cnum) = @_; |
my $cdom =$env{'course.'.$env{'request.course.id'}.'.domain'}; |
if (!$old_name) { |
my $cnum =$env{'course.'.$env{'request.course.id'}.'.num'}; |
$old_name=$env{'form.scantron_CODElist'}; |
my %result=&Apache::lonnet::get('CODEs',[$old_name],$cdom,$cnum); |
} |
my %allcodes=map {(&Apache::lonprintout::num_to_letters($_),1)} split(',',$result{$old_name}); |
if (!$cdom) { |
|
$cdom =$env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
} |
|
if (!$cnum) { |
|
$cnum =$env{'course.'.$env{'request.course.id'}.'.num'}; |
|
} |
|
my %result=&Apache::lonnet::get('CODEs',[$old_name,"type\0$old_name"], |
|
$cdom,$cnum); |
|
my %allcodes; |
|
if ($result{"type\0$old_name"} eq 'number') { |
|
%allcodes=map {($_,1)} split(',',$result{$old_name}); |
|
} else { |
|
%allcodes=map {(&Apache::lonprintout::num_to_letters($_),1)} split(',',$result{$old_name}); |
|
} |
return %allcodes; |
return %allcodes; |
} |
} |
|
|
Line 5135 sub scantron_upload_scantron_data_save {
|
Line 5196 sub scantron_upload_scantron_data_save {
|
} |
} |
my %coursedata=&Apache::lonnet::coursedescription($env{'form.domainid'}.'_'.$env{'form.courseid'}); |
my %coursedata=&Apache::lonnet::coursedescription($env{'form.domainid'}.'_'.$env{'form.courseid'}); |
$r->print("Doing upload to ".$coursedata{'description'}." <br />"); |
$r->print("Doing upload to ".$coursedata{'description'}." <br />"); |
my $home=&Apache::lonnet::homeserver($env{'form.courseid'}, |
|
$env{'form.domainid'}); |
|
my $fname=$env{'form.upfile.filename'}; |
my $fname=$env{'form.upfile.filename'}; |
#FIXME |
#FIXME |
#copied from lonnet::userfileupload() |
#copied from lonnet::userfileupload() |
Line 5156 sub scantron_upload_scantron_data_save {
|
Line 5215 sub scantron_upload_scantron_data_save {
|
if (length($env{'form.upfile'}) < 2) { |
if (length($env{'form.upfile'}) < 2) { |
$r->print("<font color='red'>Error:</font> The file you attempted to upload, <tt>".&HTML::Entities::encode($env{'form.upfile.filename'},'<>&"')."</tt>, contained no information. Please check that you entered the correct filename."); |
$r->print("<font color='red'>Error:</font> The file you attempted to upload, <tt>".&HTML::Entities::encode($env{'form.upfile.filename'},'<>&"')."</tt>, contained no information. Please check that you entered the correct filename."); |
} else { |
} else { |
my $result=&Apache::lonnet::finishuserfileupload($env{'form.courseid'},$env{'form.domainid'},$home,'upfile',$fname); |
my $result=&Apache::lonnet::finishuserfileupload($env{'form.courseid'},$env{'form.domainid'},'upfile',$fname); |
if ($result =~ m|^/uploaded/|) { |
if ($result =~ m|^/uploaded/|) { |
$r->print("<font color='green'>Success:</font> Successfully uploaded ".(length($env{'form.upfile'})-1)." bytes of data into location <tt>".$result."</tt>"); |
$r->print("<font color='green'>Success:</font> Successfully uploaded ".(length($env{'form.upfile'})-1)." bytes of data into location <tt>".$result."</tt>"); |
} else { |
} else { |
Line 5380 GRADINGMENUJS
|
Line 5439 GRADINGMENUJS
|
$result.='<tr bgcolor="#ffffe6"valign="top"><td colspan="2">'. |
$result.='<tr bgcolor="#ffffe6"valign="top"><td colspan="2">'. |
'<input type="button" onClick="javascript:this.form.action=\'/adm/helper/resettimes.helper\';this.form.submit();'. |
'<input type="button" onClick="javascript:this.form.action=\'/adm/helper/resettimes.helper\';this.form.submit();'. |
'" value="'.&mt('Manage').'" /> access times.</td></tr>'."\n"; |
'" value="'.&mt('Manage').'" /> access times.</td></tr>'."\n"; |
|
$result.='<tr bgcolor="#ffffe6"valign="top"><td colspan="2">'. |
|
'<input type="button" onClick="javascript:this.form.command.value=\'codelist\';this.form.action=\'/adm/pickcode\';this.form.submit();'. |
|
'" value="'.&mt('View').'" /> saved CODEs.</td></tr>'."\n"; |
|
|
$result.='</form></td></tr></table>'."\n". |
$result.='</form></td></tr></table>'."\n". |
'</td></tr></table>'."\n". |
'</td></tr></table>'."\n". |
Line 5387 GRADINGMENUJS
|
Line 5449 GRADINGMENUJS
|
return $result; |
return $result; |
} |
} |
|
|
|
sub reset_perm { |
|
undef(%perm); |
|
} |
|
|
|
sub init_perm { |
|
&reset_perm(); |
|
if (!($perm{'vgr'}=&Apache::lonnet::allowed('vgr',$env{'request.course.id'}))) { |
|
if ($perm{'vgr'}=&Apache::lonnet::allowed('vgr',$env{'request.course.id'}.'/'.$env{'request.course.sec'})) { |
|
$perm{'vgr_section'}=$env{'request.course.sec'}; |
|
} else { |
|
delete($perm{'vgr'}); |
|
} |
|
} |
|
if (!($perm{'mgr'}=&Apache::lonnet::allowed('mgr',$env{'request.course.id'}))) { |
|
if ($perm{'mgr'}=&Apache::lonnet::allowed('mgr',$env{'request.course.id'}.'/'.$env{'request.course.sec'})) { |
|
$perm{'mgr_section'}=$env{'request.course.sec'}; |
|
} else { |
|
delete($perm{'mgr'}); |
|
} |
|
} |
|
} |
|
|
sub handler { |
sub handler { |
my $request=$_[0]; |
my $request=$_[0]; |
|
|
undef(%perm); |
&reset_perm(); |
if ($env{'browser.mathml'}) { |
if ($env{'browser.mathml'}) { |
&Apache::loncommon::content_type($request,'text/xml'); |
&Apache::loncommon::content_type($request,'text/xml'); |
} else { |
} else { |
Line 5439 sub handler {
|
Line 5523 sub handler {
|
} |
} |
} |
} |
} else { |
} else { |
if (!($perm{'vgr'}=&Apache::lonnet::allowed('vgr',$env{'request.course.id'}))) { |
&init_perm(); |
if ($perm{'vgr'}=&Apache::lonnet::allowed('vgr',$env{'request.course.id'}.'/'.$env{'request.course.sec'})) { |
|
$perm{'vgr_section'}=$env{'request.course.sec'}; |
|
} else { |
|
delete($perm{'vgr'}); |
|
} |
|
} |
|
if (!($perm{'mgr'}=&Apache::lonnet::allowed('mgr',$env{'request.course.id'}))) { |
|
if ($perm{'mgr'}=&Apache::lonnet::allowed('mgr',$env{'request.course.id'}.'/'.$env{'request.course.sec'})) { |
|
$perm{'mgr_section'}=$env{'request.course.sec'}; |
|
} else { |
|
delete($perm{'mgr'}); |
|
} |
|
} |
|
if ($command eq 'submission' && $perm{'vgr'}) { |
if ($command eq 'submission' && $perm{'vgr'}) { |
($env{'form.student'} eq '' ? &listStudents($request) : &submission($request,0,0)); |
($env{'form.student'} eq '' ? &listStudents($request) : &submission($request,0,0)); |
} elsif ($command eq 'pickStudentPage' && $perm{'vgr'}) { |
} elsif ($command eq 'pickStudentPage' && $perm{'vgr'}) { |