version 1.161, 2003/11/21 22:59:42
|
version 1.173, 2004/02/09 22:16:32
|
Line 48 use Apache::lonhomework;
|
Line 48 use Apache::lonhomework;
|
use Apache::loncoursedata; |
use Apache::loncoursedata; |
use Apache::lonmsg qw(:user_normal_msg); |
use Apache::lonmsg qw(:user_normal_msg); |
use Apache::Constants qw(:common); |
use Apache::Constants qw(:common); |
|
use Apache::lonlocal; |
use String::Similarity; |
use String::Similarity; |
|
|
my %oldessays=(); |
my %oldessays=(); |
Line 88 sub getpartlist {
|
Line 89 sub getpartlist {
|
|
|
# --- Get the symbolic name of a problem and the url |
# --- Get the symbolic name of a problem and the url |
sub get_symb_and_url { |
sub get_symb_and_url { |
my ($request) = @_; |
my ($request,$silent) = @_; |
(my $url=$ENV{'form.url'}) =~ s-^http://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--; |
(my $url=$ENV{'form.url'}) =~ s-^http://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--; |
my $symb=($ENV{'form.symb'} ne '' ? $ENV{'form.symb'} : (&Apache::lonnet::symbread($url))); |
my $symb=($ENV{'form.symb'} ne '' ? $ENV{'form.symb'} : (&Apache::lonnet::symbread($url))); |
if ($symb eq '') { $request->print("Unable to handle ambiguous references:$url:."); return ''; } |
if ($symb eq '') { |
|
if (!$silent) { |
|
$request->print("Unable to handle ambiguous references:$url:."); |
|
return (); |
|
} |
|
} |
return ($symb,$url); |
return ($symb,$url); |
} |
} |
|
|
Line 168 sub showResourceInfo {
|
Line 174 sub showResourceInfo {
|
my $col=3; |
my $col=3; |
if ($checkboxes) { $col=4; } |
if ($checkboxes) { $col=4; } |
my $result ='<table border="0">'. |
my $result ='<table border="0">'. |
'<tr><td colspan="'.$col.'"><font size="+1"><b>Current Resource: </b>'. |
'<tr><td colspan="'.$col.'"><font size="+1"><b>'.&mt('Current Resource').': </b>'. |
$probTitle.'</font></td></tr>'."\n"; |
$probTitle.'</font></td></tr>'."\n"; |
my ($partlist,$handgrade,$responseType) = &response_type($url); |
my ($partlist,$handgrade,$responseType) = &response_type($url); |
my %resptype = (); |
my %resptype = (); |
Line 290 sub cleanRecord {
|
Line 296 sub cleanRecord {
|
$ENV{'form.kwstyle'} = $keyhash{$loginuser.'_kwstyle'} ne '' ? $keyhash{$loginuser.'_kwstyle'} : ''; |
$ENV{'form.kwstyle'} = $keyhash{$loginuser.'_kwstyle'} ne '' ? $keyhash{$loginuser.'_kwstyle'} : ''; |
$ENV{'form.'.$symb} = 1; # so that we don't have to read it from disk for multiple sub of the same prob. |
$ENV{'form.'.$symb} = 1; # so that we don't have to read it from disk for multiple sub of the same prob. |
} |
} |
return '<br /><br /><blockquote><pre>'.&keywords_highlight($answer).'</pre></blockquote>'; |
$answer =~ s-\n-<br />-g; |
|
return '<br /><br /><blockquote><tt>'.&keywords_highlight($answer).'</tt></blockquote>'; |
} |
} |
return $answer; |
return $answer; |
} |
} |
Line 678 LISTJAVASCRIPT
|
Line 685 LISTJAVASCRIPT
|
if ($ENV{'form.showgrading'} eq 'yes' && $submitonly ne 'all') { |
if ($ENV{'form.showgrading'} eq 'yes' && $submitonly ne 'all') { |
(%status) =&student_gradeStatus($url,$symb,$udom,$uname,$partlist); |
(%status) =&student_gradeStatus($url,$symb,$udom,$uname,$partlist); |
my $submitted = 0; |
my $submitted = 0; |
my $graded = 1; |
my $graded = 0; |
foreach (keys(%status)) { |
foreach (keys(%status)) { |
$submitted = 1 if ($status{$_} ne 'nothing'); |
$submitted = 1 if ($status{$_} ne 'nothing'); |
$graded = 0 if ($status{$_} =~ /^correct/); |
$graded = 1 if ($status{$_} !~ /^correct/); |
|
|
my ($foo,$partid,$foo1) = split(/\./,$_); |
my ($foo,$partid,$foo1) = split(/\./,$_); |
if ($status{'resource.'.$partid.'.submitted_by'} ne '') { |
if ($status{'resource.'.$partid.'.submitted_by'} ne '') { |
$submitted = 0; |
$submitted = 0; |
Line 735 LISTJAVASCRIPT
|
Line 743 LISTJAVASCRIPT
|
if ($num_students eq 0) { |
if ($num_students eq 0) { |
$gradeTable='<br /> <font color="red">There are no students currently enrolled.</font>'; |
$gradeTable='<br /> <font color="red">There are no students currently enrolled.</font>'; |
} else { |
} else { |
|
my $submissions='submissions'; |
|
if ($submitonly eq 'incorrect') { $submissions = 'incorrect submissions'; } |
|
if ($submitonly eq 'graded' ) { $submissions = 'ungraded submissions'; } |
$gradeTable='<br /> <font color="red">'. |
$gradeTable='<br /> <font color="red">'. |
'No submissions found for this resource for any students. ('.$num_students. |
'No '.$submissions.' found for this resource for any students. ('.$num_students. |
' checked for submissions)</font><br />'; |
' students checked for '.$submissions.')</font><br />'; |
} |
} |
} elsif ($ctr == 1) { |
} elsif ($ctr == 1) { |
$gradeTable =~ s/type=checkbox/type=checkbox checked/; |
$gradeTable =~ s/type=checkbox/type=checkbox checked/; |
Line 1375 sub submission {
|
Line 1386 sub submission {
|
return; |
return; |
} |
} |
|
|
$ENV{'form.lastSub'} = ($ENV{'form.lastSub'} eq '' ? 'datesub' : $ENV{'form.lastSub'}); |
if (!$ENV{'form.lastSub'}) { $ENV{'form.lastSub'} = 'datesub'; } |
|
if (!$ENV{'form.vProb'}) { $ENV{'form.vProb'} = 'yes'; } |
|
if (!$ENV{'form.vAns'}) { $ENV{'form.vAns'} = 'yes'; } |
my $last = ($ENV{'form.lastSub'} eq 'last' ? 'last' : ''); |
my $last = ($ENV{'form.lastSub'} eq 'last' ? 'last' : ''); |
my $checkIcon = '<img src="'.$request->dir_config('lonIconsURL'). |
my $checkIcon = '<img src="'.$request->dir_config('lonIconsURL'). |
'/check.gif" height="16" border="0" />'; |
'/check.gif" height="16" border="0" />'; |
Line 1644 KEYWORDS
|
Line 1657 KEYWORDS
|
$partid.'</b> <font color="#999999">( ID '.$respid. |
$partid.'</b> <font color="#999999">( ID '.$respid. |
' )</font> '; |
' )</font> '; |
if ($record{"resource.$partid.$respid.uploadedurl"}) { |
if ($record{"resource.$partid.$respid.uploadedurl"}) { |
$lastsubonly.='<a href="'.&Apache::lonnet::tokenwrapper($record{"resource.$partid.$respid.uploadedurl"}).'"><img src="/adm/lonIcons/unknown.gif" border=0"> File uploaded by student</a> <font color="red" size="1">Like all files provided by users, this file may contain virusses</font><br />'; |
$lastsubonly.='<a href="'.&Apache::lonnet::tokenwrapper($record{"resource.$partid.$respid.uploadedurl"}).'" target="lonGRDs"><img src="/adm/lonIcons/unknown.gif" border=0"> File uploaded by student</a> <font color="red" size="1">Like all files provided by users, this file may contain virusses</font><br />'; |
} |
} |
$lastsubonly.='<b>Submitted Answer: </b>'. |
$lastsubonly.='<b>Submitted Answer: </b>'. |
&cleanRecord($subval,$responsetype,$symb,$partid, |
&cleanRecord($subval,$responsetype,$symb,$partid, |
Line 1674 KEYWORDS
|
Line 1687 KEYWORDS
|
my $toGrade.='<input type="button" value="Grade Student" '. |
my $toGrade.='<input type="button" value="Grade Student" '. |
'onClick="javascript:checksubmit(this.form,\'Grade Student\',\'' |
'onClick="javascript:checksubmit(this.form,\'Grade Student\',\'' |
.$counter.'\');" TARGET=_self> '."\n" if (&canmodify($usec)); |
.$counter.'\');" TARGET=_self> '."\n" if (&canmodify($usec)); |
$toGrade.='</td></tr></table></td></tr></table></form>'."\n"; |
$toGrade.='</td></tr></table></td></tr></table>'."\n"; |
$toGrade.=&show_grading_menu_form($symb,$url) |
if (($ENV{'form.command'} eq 'submission') || |
if (($ENV{'form.command'} eq 'submission') || |
($ENV{'form.command'} eq 'processGroup' && $counter == $total)) { |
($ENV{'form.command'} eq 'processGroup' && $counter == $total)); |
$toGrade.='</form>'.&show_grading_menu_form($symb,$url) |
|
} |
$request = print($toGrade); |
$request = print($toGrade); |
return; |
return; |
} |
} |
Line 2243 sub viewgrades {
|
Line 2257 sub viewgrades {
|
&viewgrades_js($request); |
&viewgrades_js($request); |
|
|
my ($symb,$url) = ($ENV{'form.symb'},$ENV{'form.url'}); |
my ($symb,$url) = ($ENV{'form.symb'},$ENV{'form.url'}); |
my $result='<h3><font color="#339933">Manual Grading</font></h3>'; |
#need to make sure we have the correct data for later EXT calls, |
|
#thus invalidate the cache |
|
&Apache::lonnet::devalidatecourseresdata( |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}, |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}); |
|
&Apache::lonnet::clear_EXT_cache_status(); |
|
|
|
my $result='<h3><font color="#339933">'.&mt('Manual Grading').'</font></h3>'; |
$result.='<font size=+1><b>Current Resource: </b>'.$ENV{'form.probTitle'}.'</font>'."\n"; |
$result.='<font size=+1><b>Current Resource: </b>'.$ENV{'form.probTitle'}.'</font>'."\n"; |
|
|
#view individual student submission form - called using Javascript viewOneStudent |
#view individual student submission form - called using Javascript viewOneStudent |
Line 3027 sub displayPage {
|
Line 3047 sub displayPage {
|
my ($classlist,undef,$fullname) = &getclasslist($getsec,'1'); |
my ($classlist,undef,$fullname) = &getclasslist($getsec,'1'); |
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]; |
|
|
|
#need to make sure we have the correct data for later EXT calls, |
|
#thus invalidate the cache |
|
&Apache::lonnet::devalidatecourseresdata( |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.num'}, |
|
$ENV{'course.'.$ENV{'request.course.id'}.'.domain'}); |
|
&Apache::lonnet::clear_EXT_cache_status(); |
|
|
if (!&canview($usec)) { |
if (!&canview($usec)) { |
$request->print('<font color="red">Unable to view requested student.('.$ENV{'form.student'}.')</font>'); |
$request->print('<font color="red">Unable to view requested student.('.$ENV{'form.student'}.')</font>'); |
$request->print(&show_grading_menu_form($symb,$url)); |
$request->print(&show_grading_menu_form($symb,$url)); |
Line 3198 sub displaySubByDates {
|
Line 3226 sub displaySubByDates {
|
} |
} |
if (exists $$record{"$version:resource.$partid.regrader"}) { |
if (exists $$record{"$version:resource.$partid.regrader"}) { |
$displaySub[2].=$$record{"$version:resource.$partid.regrader"}. |
$displaySub[2].=$$record{"$version:resource.$partid.regrader"}. |
' (<b>Part:</b> '.$partid.')'; |
' (<b>'.&mt('Part').':</b> '.$partid.')'; |
} |
} |
} |
} |
# needed because old essay regrader has not parts info |
# needed because old essay regrader has not parts info |
Line 3379 sub scantron_uploads {
|
Line 3407 sub scantron_uploads {
|
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 @files=&Apache::lonnet::dirlist('userfiles',$cdom,$cname, |
my @files=&Apache::lonnet::dirlist('userfiles',$cdom,$cname, |
&Apache::locommon::propath($cdom,$cname)); |
&Apache::loncommon::propath($cdom,$cname)); |
foreach my $filename (@files) { |
foreach my $filename (@files) { |
($filename)=split(/&/,$filename); |
($filename)=split(/&/,$filename); |
if ($filename!~/^scantron_orig_/) { next ; } |
if ($filename!~/^scantron_orig_/) { next ; } |
Line 3416 sub scantron_selectphase {
|
Line 3444 sub scantron_selectphase {
|
#FIXME allow instructor to be able to download the scantron file |
#FIXME allow instructor to be able to download the scantron file |
# and to upload it, |
# and to upload it, |
$result.= <<SCANTRONFORM; |
$result.= <<SCANTRONFORM; |
<form method="post" enctype="multipart/form-data" action="/adm/grades" name="scantro_process"> |
<table width="100%" border="0"> |
<input type="hidden" name="command" value="scantron_validate" /> |
|
$default_form_data |
|
<table width="100%" border="0"> |
|
<tr> |
<tr> |
<td bgcolor="#777777"> |
<td bgcolor="#777777"> |
|
<form method="post" enctype="multipart/form-data" action="/adm/grades" name="scantro_process"> |
|
<input type="hidden" name="command" value="scantron_validate" /> |
|
$default_form_data |
<table width="100%" border="0"> |
<table width="100%" border="0"> |
<tr bgcolor="#e6ffff"> |
<tr bgcolor="#e6ffff"> |
<td> |
<td> |
Line 3450 sub scantron_selectphase {
|
Line 3478 sub scantron_selectphase {
|
<input type="text" name="scantron_maxbubble" /> |
<input type="text" name="scantron_maxbubble" /> |
</td> |
</td> |
</tr> |
</tr> |
|
<tr bgcolor="#ffffe6"> |
|
<td> |
|
<input type="submit" value="Validate Scantron Records" /> |
|
</td> |
|
</tr> |
|
</table> |
|
</form> |
|
</td> |
|
</tr> |
|
SCANTRONFORM |
|
|
|
$r->print($result); |
|
|
|
if (&Apache::lonnet::allowed('usc',$ENV{'request.role.domain'}) || |
|
&Apache::lonnet::allowed('usc',$ENV{'request.course.id'})) { |
|
|
|
$r->print(<<SCANTRONFORM); |
|
<tr> |
|
<td bgcolor="#777777"> |
|
<table width="100%" border="0"> |
|
<tr bgcolor="#e6ffff"> |
|
<td> |
|
Specify a Scantron data file to upload. |
|
</td> |
|
</tr> |
|
<tr bgcolor="#ffffe6"> |
|
<td> |
|
SCANTRONFORM |
|
&scantron_upload_scantron_data($r); |
|
|
|
$r->print(<<SCANTRONFORM); |
|
</td> |
|
</tr> |
</table> |
</table> |
</td> |
</td> |
</tr> |
</tr> |
|
SCANTRONFORM |
|
} |
|
|
|
$r->print(<<SCANTRONFORM); |
</table> |
</table> |
<input type="submit" value="Validate Scantron Records" /> |
|
</form> |
</form> |
$grading_menu_button |
$grading_menu_button |
SCANTRONFORM |
SCANTRONFORM |
|
|
return $result; |
return |
} |
} |
|
|
sub get_scantron_config { |
sub get_scantron_config { |
Line 4096 SCANTRONFORM
|
Line 4160 SCANTRONFORM
|
'last student'); |
'last student'); |
} |
} |
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); |
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); |
my $lasttime = &Time::HiRes::time()-$start; |
# my $lasttime = &Time::HiRes::time()-$start; |
$r->print("<p>took $lasttime</p>"); |
# $r->print("<p>took $lasttime</p>"); |
|
|
$navmap->untieHashes(); |
$navmap->untieHashes(); |
$r->print("<p>Done</p>"); |
$r->print("</form><p>Done</p>"); |
$r->print(&show_grading_menu_form($symb,$url)); |
$r->print(&show_grading_menu_form($symb,$url)); |
return ''; |
return ''; |
} |
} |
Line 4112 sub scantron_upload_scantron_data {
|
Line 4176 sub scantron_upload_scantron_data {
|
'domainid'); |
'domainid'); |
my $domsel=&Apache::loncommon::select_dom_form($ENV{'request.role.domain'}, |
my $domsel=&Apache::loncommon::select_dom_form($ENV{'request.role.domain'}, |
'domainid'); |
'domainid'); |
|
my $default_form_data=&defaultFormData(&get_symb_and_url($r,1)); |
$r->print(<<UPLOAD); |
$r->print(<<UPLOAD); |
<script type="text/javascript" language="javascript"> |
<script type="text/javascript" language="javascript"> |
function checkUpload(formname) { |
function checkUpload(formname) { |
Line 4124 sub scantron_upload_scantron_data {
|
Line 4189 sub scantron_upload_scantron_data {
|
</script> |
</script> |
|
|
<form enctype='multipart/form-data' action='/adm/grades' name='rules' method='post'> |
<form enctype='multipart/form-data' action='/adm/grades' name='rules' method='post'> |
|
$default_form_data |
Course: <input name='courseid' type='text' /> |
Course: <input name='courseid' type='text' /> |
Domain: $domsel $select_link |
Domain: $domsel $select_link |
<br /> |
<br /> |
Line 4138 UPLOAD
|
Line 4204 UPLOAD
|
|
|
sub scantron_upload_scantron_data_save { |
sub scantron_upload_scantron_data_save { |
my($r)=@_; |
my($r)=@_; |
$r->print("Doing upload to ".$ENV{'form.courseid'}); |
if (!&Apache::lonnet::allowed('usc',$ENV{'form.domainid'}) && |
|
!&Apache::lonnet::allowed('usc', |
|
$ENV{'form.domainid'}.'_'.$ENV{'form.courseid'})) { |
|
$r->print("You are not allowed to upload Scantron data to the requested course.<br />"); |
|
$r->print(&show_grading_menu_form(&get_symb_and_url($r))); |
|
return ''; |
|
} |
|
$r->print("Doing upload to ".$ENV{'form.courseid'}." <br />"); |
my $home=&Apache::lonnet::homeserver($ENV{'form.courseid'}, |
my $home=&Apache::lonnet::homeserver($ENV{'form.courseid'}, |
$ENV{'form.domainid'}); |
$ENV{'form.domainid'}); |
my $fname=$ENV{'form.upfile.filename'}; |
my $fname=$ENV{'form.upfile.filename'}; |
Line 4156 sub scantron_upload_scantron_data_save {
|
Line 4229 sub scantron_upload_scantron_data_save {
|
# See if there is anything left |
# See if there is anything left |
unless ($fname) { return 'error: no uploaded file'; } |
unless ($fname) { return 'error: no uploaded file'; } |
$fname='scantron_orig_'.$fname; |
$fname='scantron_orig_'.$fname; |
&Apache::lonnet::logthis("fname is $fname"); |
|
$r->print(&Apache::lonnet::finishuserfileupload($ENV{'form.courseid'}, |
$r->print(&Apache::lonnet::finishuserfileupload($ENV{'form.courseid'}, |
$ENV{'form.domainid'}, |
$ENV{'form.domainid'}, |
$home,'upfile',$fname)); |
$home,'upfile',$fname)); |
|
$r->print('<br /><form action="/adm/grades" method="post">'."\n". |
|
'<input type="hidden" name="command" value="scantronupload" />'."\n". |
|
'<input type="submit" name="submit" value="Do Another Upload" />'."\n". |
|
'</form>'."\n"); |
return ''; |
return ''; |
} |
} |
|
|
Line 4266 GRADINGMENUJS
|
Line 4342 GRADINGMENUJS
|
|
|
$result.='<table width="100%" border=0>'; |
$result.='<table width="100%" border=0>'; |
$result.='<tr bgcolor="#ffffe6" valign="top"><td>'."\n". |
$result.='<tr bgcolor="#ffffe6" valign="top"><td>'."\n". |
' Select Section: <select name="section">'."\n"; |
' '.&mt('Select Section').': <select name="section">'."\n"; |
if (ref($sections)) { |
if (ref($sections)) { |
foreach (sort (@$sections)) { |
foreach (sort (@$sections)) { |
$result.='<option value="'.$_.'" '. |
$result.='<option value="'.$_.'" '. |
Line 4275 GRADINGMENUJS
|
Line 4351 GRADINGMENUJS
|
} |
} |
$result.= '<option value="all" '.($saveSec eq 'all' ? 'selected="on"' : ''). '>all</select> '; |
$result.= '<option value="all" '.($saveSec eq 'all' ? 'selected="on"' : ''). '>all</select> '; |
|
|
$result.='Student Status:</b>'.&Apache::lonhtmlcommon::StatusOptions($saveStatus,undef,1,undef); |
$result.=&mt('Student Status').':</b>'.&Apache::lonhtmlcommon::StatusOptions($saveStatus,undef,1,undef); |
|
|
if (ref($sections) && (grep /no/,@$sections)) { |
if (ref($sections) && (grep /no/,@$sections)) { |
$result.=' (Section "no" implies the students were not assigned a section.)<br />'; |
$result.=' (Section "no" implies the students were not assigned a section.)<br />'; |
Line 4284 GRADINGMENUJS
|
Line 4360 GRADINGMENUJS
|
|
|
$result.='<tr bgcolor="#ffffe6"valign="top"><td>'. |
$result.='<tr bgcolor="#ffffe6"valign="top"><td>'. |
'<input type="radio" name="radioChoice" value="submission" '. |
'<input type="radio" name="radioChoice" value="submission" '. |
($saveCmd eq 'submission' ? 'checked' : '').'> '.'<b>Current Resource:</b> For one or more students '. |
($saveCmd eq 'submission' ? 'checked' : '').'> '.'<b>'.&mt('Current Resource').':</b> '.&mt('For one or more students'). |
'<select name="submitonly">'. |
' <select name="submitonly">'. |
'<option value="yes" '. |
'<option value="yes" '. |
($saveSub eq 'yes' ? 'selected="on"' : '').'>with submissions</option>'. |
($saveSub eq 'yes' ? 'selected="on"' : '').'>with submissions</option>'. |
'<option value="graded" '. |
'<option value="graded" '. |
Line 4446 sub handler {
|
Line 4522 sub handler {
|
} elsif ($command eq 'scantron_process' && $perm{'mgr'}) { |
} elsif ($command eq 'scantron_process' && $perm{'mgr'}) { |
$request->print(&scantron_process_students($request)); |
$request->print(&scantron_process_students($request)); |
} elsif ($command eq 'scantronupload' && |
} elsif ($command eq 'scantronupload' && |
&Apache::lonnet::allowed('usc',$ENV{'request.role.domain'})) { |
(&Apache::lonnet::allowed('usc',$ENV{'request.role.domain'})|| |
$request->print(&scantron_upload_scantron_data($request)); |
&Apache::lonnet::allowed('usc',$ENV{'request.course.id'}))) { |
|
$request->print(&scantron_upload_scantron_data($request)); |
} elsif ($command eq 'scantronupload_save' && |
} elsif ($command eq 'scantronupload_save' && |
&Apache::lonnet::allowed('usc',$ENV{'request.role.domain'})) { |
(&Apache::lonnet::allowed('usc',$ENV{'request.role.domain'})|| |
|
&Apache::lonnet::allowed('usc',$ENV{'request.course.id'}))) { |
$request->print(&scantron_upload_scantron_data_save($request)); |
$request->print(&scantron_upload_scantron_data_save($request)); |
|
} elsif ($command eq 'scantrondownload' && |
|
&Apache::lonnet::allowed('usc',$ENV{'request.course.id'})) { |
|
$request->print(&scantron_download_scantron_data($request)); |
} elsif ($command) { |
} elsif ($command) { |
$request->print("Access Denied ($command)"); |
$request->print("Access Denied ($command)"); |
} |
} |