version 1.596.2.1, 2010/08/13 01:23:59
|
version 1.613, 2010/04/12 22:19:53
|
Line 96 sub ssi_print_error {
|
Line 96 sub ssi_print_error {
|
|
|
# |
# |
# --- Retrieve the parts from the metadata file.--- |
# --- Retrieve the parts from the metadata file.--- |
|
# Returns an array of everything that the resources stores away |
|
# |
|
|
sub getpartlist { |
sub getpartlist { |
my ($symb,$errorref) = @_; |
my ($symb,$errorref) = @_; |
|
|
Line 120 sub getpartlist {
|
Line 123 sub getpartlist {
|
return @stores; |
return @stores; |
} |
} |
|
|
# --- Get the symbolic name of a problem and the url |
|
sub get_symb { |
|
my ($request,$silent) = @_; |
|
(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))); |
|
if ($symb eq '') { |
|
if (!$silent) { |
|
$request->print("Unable to handle ambiguous references:$url:."); |
|
return (); |
|
} |
|
} |
|
&Apache::lonenc::check_decrypt(\$symb); |
|
return ($symb); |
|
} |
|
|
|
#--- Format fullname, username:domain if different for display |
#--- Format fullname, username:domain if different for display |
#--- Use anywhere where the student names are listed |
#--- Use anywhere where the student names are listed |
sub nameUserString { |
sub nameUserString { |
Line 207 sub get_display_part {
|
Line 195 sub get_display_part {
|
return $display; |
return $display; |
} |
} |
|
|
#--- Show resource title |
|
#--- and parts and response type |
|
sub showResourceInfo { |
|
my ($symb,$probTitle,$checkboxes,$res_error) = @_; |
|
my $result = '<h3>'.&mt('Current Resource').': '.$probTitle.'</h3>'."\n"; |
|
my ($partlist,$handgrade,$responseType) = &response_type($symb,$res_error); |
|
if (ref($res_error)) { |
|
if ($$res_error) { |
|
return; |
|
} |
|
} |
|
$result.=&Apache::loncommon::start_data_table() |
|
.&Apache::loncommon::start_data_table_header_row(); |
|
if ($checkboxes) { |
|
$result.='<th> </th>'; |
|
} |
|
$result.='<th>'.&mt('Problem Part').'</th>' |
|
.'<th>'.&mt('Res. ID').'</th>' |
|
.'<th>'.&mt('Type').'</th>' |
|
.&Apache::loncommon::end_data_table_header_row(); |
|
my %resptype = (); |
|
my $hdgrade='no'; |
|
my %partsseen; |
|
foreach my $partID (sort(keys(%$responseType))) { |
|
foreach my $resID (sort(keys(%{ $responseType->{$partID} }))) { |
|
my $handgrade=$$handgrade{$partID.'_'.$resID}; |
|
my $responsetype = $responseType->{$partID}->{$resID}; |
|
$hdgrade = $handgrade if ($handgrade eq 'yes'); |
|
$result.=&Apache::loncommon::start_data_table_row(); |
|
if ($checkboxes) { |
|
if (exists($partsseen{$partID})) { |
|
$result.="<td> </td>"; |
|
} else { |
|
$result.="<td><input type='checkbox' name='vPart' value='$partID' checked='checked' /></td>"; |
|
} |
|
$partsseen{$partID}=1; |
|
} |
|
my $display_part=&get_display_part($partID,$symb); |
|
$result.='<td>'.$display_part.'</td>' |
|
.'<td>'.'<span class="LC_internal_info">'.$resID.'</span></td>' |
|
.'<td>'.&mt($responsetype).'</td>' |
|
# .'<td>'.&mt('<b>Handgrade: </b>[_1]',$handgrade).'</td>' |
|
.&Apache::loncommon::end_data_table_row(); |
|
} |
|
} |
|
$result.=&Apache::loncommon::end_data_table(); |
|
return $result,$responseType,$hdgrade,$partlist,$handgrade; |
|
} |
|
|
|
sub reset_caches { |
sub reset_caches { |
&reset_analyze_cache(); |
&reset_analyze_cache(); |
&reset_perm(); |
&reset_perm(); |
Line 382 sub cleanRecord {
|
Line 321 sub cleanRecord {
|
return '<blockquote><table border="1">'. |
return '<blockquote><table border="1">'. |
'<tr valign="top"><td>'.&mt('Answer').'</td>'.$toprow.'</tr>'. |
'<tr valign="top"><td>'.&mt('Answer').'</td>'.$toprow.'</tr>'. |
'<tr valign="top"><td>'.$grayFont.&mt('Option ID').'</span></td>'. |
'<tr valign="top"><td>'.$grayFont.&mt('Option ID').'</span></td>'. |
$bottomrow.'</tr></table></blockquote>'; |
$grayFont.$bottomrow.'</tr>'.'</table></blockquote>'; |
} elsif ($response eq 'match') { |
} elsif ($response eq 'match') { |
my %answer=&Apache::lonnet::str2hash($answer); |
my %answer=&Apache::lonnet::str2hash($answer); |
my %grading=&Apache::lonnet::str2hash($record->{$version."resource.$partid.$respid.submissiongrading"}); |
my %grading=&Apache::lonnet::str2hash($record->{$version."resource.$partid.$respid.submissiongrading"}); |
Line 425 sub cleanRecord {
|
Line 364 sub cleanRecord {
|
return '<blockquote><table border="1">'. |
return '<blockquote><table border="1">'. |
'<tr valign="top"><td>'.&mt('Answer').'</td>'.$toprow.'</tr>'. |
'<tr valign="top"><td>'.&mt('Answer').'</td>'.$toprow.'</tr>'. |
'<tr valign="top"><td>'.$grayFont.&mt('Option ID').'</span></td>'. |
'<tr valign="top"><td>'.$grayFont.&mt('Option ID').'</span></td>'. |
$grayFont.$bottomrow.'</tr>'.'</table></blockquote>'; |
$bottomrow.'</tr>'.'</table></blockquote>'; |
} elsif ($response eq 'essay') { |
} elsif ($response eq 'essay') { |
if (! exists ($env{'form.'.$symb})) { |
if (! exists ($env{'form.'.$symb})) { |
my (%keyhash) = &Apache::lonnet::dump('nohist_handgrade', |
my (%keyhash) = &Apache::lonnet::dump('nohist_handgrade', |
Line 487 sub cleanRecord {
|
Line 426 sub cleanRecord {
|
#-- A couple of common js functions |
#-- A couple of common js functions |
sub commonJSfunctions { |
sub commonJSfunctions { |
my $request = shift; |
my $request = shift; |
$request->print(<<COMMONJSFUNCTIONS); |
$request->print(&Apache::lonhtmlcommon::scripttag(<<COMMONJSFUNCTIONS)); |
<script type="text/javascript" language="javascript"> |
|
function radioSelection(radioButton) { |
function radioSelection(radioButton) { |
var selection=null; |
var selection=null; |
if (radioButton.length > 1) { |
if (radioButton.length > 1) { |
Line 516 sub commonJSfunctions {
|
Line 454 sub commonJSfunctions {
|
return selectOne.value; |
return selectOne.value; |
} |
} |
} |
} |
</script> |
|
COMMONJSFUNCTIONS |
COMMONJSFUNCTIONS |
} |
} |
|
|
Line 671 sub student_gradeStatus {
|
Line 608 sub student_gradeStatus {
|
sub jscriptNform { |
sub jscriptNform { |
my ($symb) = @_; |
my ($symb) = @_; |
my $stu_status = join(':',&Apache::loncommon::get_env_multiple('form.Status')); |
my $stu_status = join(':',&Apache::loncommon::get_env_multiple('form.Status')); |
my $jscript='<script type="text/javascript" language="javascript">'."\n". |
my $jscript= &Apache::lonhtmlcommon::scripttag( |
' function viewOneStudent(user,domain) {'."\n". |
' function viewOneStudent(user,domain) {'."\n". |
' document.onestudent.student.value = user;'."\n". |
' document.onestudent.student.value = user;'."\n". |
' document.onestudent.userdom.value = domain;'."\n". |
' document.onestudent.userdom.value = domain;'."\n". |
' document.onestudent.submit();'."\n". |
' document.onestudent.submit();'."\n". |
' }'."\n". |
' }'."\n". |
'</script>'."\n"; |
"\n"); |
$jscript.= '<form action="/adm/grades" method="post" name="onestudent">'."\n". |
$jscript.= '<form action="/adm/grades" method="post" name="onestudent">'."\n". |
'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". |
'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". |
'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."\n". |
|
'<input type="hidden" name="probTitle" value="'.$env{'form.probTitle'}.'" />'."\n". |
|
'<input type="hidden" name="Status" value="'.$stu_status.'" />'."\n". |
'<input type="hidden" name="Status" value="'.$stu_status.'" />'."\n". |
'<input type="hidden" name="command" value="submission" />'."\n". |
'<input type="hidden" name="command" value="submission" />'."\n". |
'<input type="hidden" name="student" value="" />'."\n". |
'<input type="hidden" name="student" value="" />'."\n". |
Line 734 sub most_similar {
|
Line 669 sub most_similar {
|
|
|
# ignore empty submissions (occuring when only files are sent) |
# ignore empty submissions (occuring when only files are sent) |
|
|
unless ($uessay=~/\w+/) { return ''; } |
unless ($uessay=~/\w+/s) { 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; |
Line 771 sub most_similar {
|
Line 706 sub most_similar {
|
|
|
#------------------------------------ Receipt Verification Routines |
#------------------------------------ Receipt Verification Routines |
# |
# |
|
|
|
sub initialverifyreceipt { |
|
my ($request,$symb) = @_; |
|
&commonJSfunctions($request); |
|
return '<form name="gradingMenu"><input type="submit" value="'.&mt('Verify Receipt Number.').'" />'. |
|
&Apache::lonnet::recprefix($env{'request.course.id'}). |
|
'-<input type="text" name="receipt" size="4" />'. |
|
'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". |
|
'<input type="hidden" name="command" value="verify" />'. |
|
"</form>\n"; |
|
} |
|
|
#--- Check whether a receipt number is valid.--- |
#--- Check whether a receipt number is valid.--- |
sub verifyreceipt { |
sub verifyreceipt { |
my $request = shift; |
my ($request,$symb) = @_; |
|
|
my $courseid = $env{'request.course.id'}; |
my $courseid = $env{'request.course.id'}; |
my $receipt = &Apache::lonnet::recprefix($courseid).'-'. |
my $receipt = &Apache::lonnet::recprefix($courseid).'-'. |
$env{'form.receipt'}; |
$env{'form.receipt'}; |
$receipt =~ s/[^\-\d]//g; |
$receipt =~ s/[^\-\d]//g; |
my ($symb) = &get_symb($request); |
|
|
|
my $title.= |
my $title.= |
'<h3><span class="LC_info">'. |
'<h3><span class="LC_info">'. |
&mt('Verifying Receipt No. [_1]',$receipt). |
&mt('Verifying Receipt Number [_1]',$receipt). |
'</span></h3>'."\n". |
'</span></h3>'."\n"; |
'<h4>'.&mt('<b>Resource: </b>[_1]',$env{'form.probTitle'}). |
|
'</h4>'."\n"; |
|
|
|
my ($string,$contents,$matches) = ('','',0); |
my ($string,$contents,$matches) = ('','',0); |
my (undef,undef,$fullname) = &getclasslist('all','0'); |
my (undef,undef,$fullname) = &getclasslist('all','0'); |
Line 864 sub verifyreceipt {
|
Line 808 sub verifyreceipt {
|
#--- Also called directly when one clicks on the subm button |
#--- Also called directly when one clicks on the subm button |
# on the problem page. |
# on the problem page. |
sub listStudents { |
sub listStudents { |
my ($request) = shift; |
my ($request,$symb) = @_; |
|
|
my ($symb) = &get_symb($request); |
|
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 $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 '' ? |
|
&Apache::lonnet::gettitle($symb) : $env{'form.probTitle'}; |
|
|
|
my $result='<h3><span class="LC_info"> ' |
my $result='<h3><span class="LC_info"> ' |
.&mt("$viewgrade Submissions for a Student or a Group of Students") |
.&mt("$viewgrade Submissions for a Student or a Group of Students") |
.'</span></h3>'; |
.'</span></h3>'; |
|
|
my ($table,undef,$hdgrade,$partlist,$handgrade) = &showResourceInfo($symb,$env{'form.probTitle'},($env{'form.showgrading'} eq 'yes')); |
my ($partlist,$handgrade,$responseType) = &response_type($symb |
|
#,$res_error |
|
); |
|
|
my %lt = &Apache::lonlocal::texthash ( |
my %lt = &Apache::lonlocal::texthash ( |
'multiple' => 'Please select a student or group of students before clicking on the Next button.', |
'multiple' => 'Please select a student or group of students before clicking on the Next button.', |
'single' => 'Please select the student before clicking on the Next button.', |
'single' => 'Please select the student before clicking on the Next button.', |
); |
); |
$request->print(<<LISTJAVASCRIPT); |
$request->print(&Apache::lonhtmlcommon::scripttag(<<LISTJAVASCRIPT)); |
<script type="text/javascript" language="javascript"> |
|
function checkSelect(checkBox) { |
function checkSelect(checkBox) { |
var ctr=0; |
var ctr=0; |
var sense=""; |
var sense=""; |
Line 916 sub listStudents {
|
Line 858 sub listStudents {
|
formname.command.value = 'submission'; |
formname.command.value = 'submission'; |
formname.submit(); |
formname.submit(); |
} |
} |
</script> |
|
LISTJAVASCRIPT |
LISTJAVASCRIPT |
|
|
&commonJSfunctions($request); |
&commonJSfunctions($request); |
Line 925 LISTJAVASCRIPT
|
Line 866 LISTJAVASCRIPT
|
my $checkhdgrade = ($env{'form.handgrade'} eq 'yes' && scalar(@$partlist) > 1 ) ? 'checked="checked"' : ''; |
my $checkhdgrade = ($env{'form.handgrade'} eq 'yes' && scalar(@$partlist) > 1 ) ? 'checked="checked"' : ''; |
my $checklastsub = $checkhdgrade eq '' ? 'checked="checked"' : ''; |
my $checklastsub = $checkhdgrade eq '' ? 'checked="checked"' : ''; |
my $gradeTable='<form action="/adm/grades" method="post" name="gradesub">'. |
my $gradeTable='<form action="/adm/grades" method="post" name="gradesub">'. |
"\n".$table; |
"\n"; |
|
|
$gradeTable .= &Apache::lonhtmlcommon::start_pick_box(); |
$gradeTable .= &Apache::lonhtmlcommon::start_pick_box(); |
$gradeTable .= &Apache::lonhtmlcommon::row_title(&mt('View Problem Text')) |
$gradeTable .= &Apache::lonhtmlcommon::row_title(&mt('View Problem Text')) |
Line 978 LISTJAVASCRIPT
|
Line 919 LISTJAVASCRIPT
|
'<input type="hidden" name="submitonly" value="'.$submitonly.'" />'."\n". |
'<input type="hidden" name="submitonly" value="'.$submitonly.'" />'."\n". |
'<input type="hidden" name="handgrade" value="'.$env{'form.handgrade'}.'" /><br />'."\n". |
'<input type="hidden" name="handgrade" value="'.$env{'form.handgrade'}.'" /><br />'."\n". |
'<input type="hidden" name="showgrading" value="'.$env{'form.showgrading'}.'" /><br />'."\n". |
'<input type="hidden" name="showgrading" value="'.$env{'form.showgrading'}.'" /><br />'."\n". |
'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."\n". |
|
'<input type="hidden" name="probTitle" value="'.$env{'form.probTitle'}.'" />'."\n". |
|
'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". |
'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". |
'<input type="hidden" name="saveStatusOld" value="'.$saveStatus.'" />'."\n"; |
'<input type="hidden" name="saveStatusOld" value="'.$saveStatus.'" />'."\n"; |
|
|
Line 1152 LISTJAVASCRIPT
|
Line 1091 LISTJAVASCRIPT
|
|
|
sub check_script { |
sub check_script { |
my ($form, $type)=@_; |
my ($form, $type)=@_; |
my $chkallscript='<script type="text/javascript"> |
my $chkallscript= &Apache::lonhtmlcommon::scripttag(' |
function checkall() { |
function checkall() { |
for (i=0; i<document.forms.'.$form.'.elements.length; i++) { |
for (i=0; i<document.forms.'.$form.'.elements.length; i++) { |
ele = document.forms.'.$form.'.elements[i]; |
ele = document.forms.'.$form.'.elements[i]; |
Line 1183 sub check_script {
|
Line 1122 sub check_script {
|
} |
} |
} |
} |
|
|
</script>'."\n"; |
'."\n"); |
return $chkallscript; |
return $chkallscript; |
} |
} |
|
|
Line 1222 sub processGroup {
|
Line 1161 sub processGroup {
|
sub sub_page_js { |
sub sub_page_js { |
my $request = shift; |
my $request = shift; |
my $alertmsg = &mt('A number equal or greater than 0 is expected. Entered value = '); |
my $alertmsg = &mt('A number equal or greater than 0 is expected. Entered value = '); |
$request->print(<<SUBJAVASCRIPT); |
$request->print(&Apache::lonhtmlcommon::scripttag(<<SUBJAVASCRIPT)); |
<script type="text/javascript" language="javascript"> |
|
function updateRadio(formname,id,weight) { |
function updateRadio(formname,id,weight) { |
var gradeBox = formname["GD_BOX"+id]; |
var gradeBox = formname["GD_BOX"+id]; |
var radioButton = formname["RADVAL"+id]; |
var radioButton = formname["RADVAL"+id]; |
Line 1391 sub sub_page_js {
|
Line 1329 sub sub_page_js {
|
|
|
formname.submit(); |
formname.submit(); |
} |
} |
</script> |
|
SUBJAVASCRIPT |
SUBJAVASCRIPT |
} |
} |
|
|
Line 1401 sub sub_page_kw_js {
|
Line 1338 sub sub_page_kw_js {
|
my $iconpath = $request->dir_config('lonIconsURL'); |
my $iconpath = $request->dir_config('lonIconsURL'); |
&commonJSfunctions($request); |
&commonJSfunctions($request); |
|
|
my $inner_js_msg_central=<<INNERJS; |
my $inner_js_msg_central= &Apache::lonhtmlcommon::scripttag(<<INNERJS); |
<script text="text/javascript"> |
|
function checkInput() { |
function checkInput() { |
opener.document.SCORE.msgsub.value = opener.checkEntities(document.msgcenter.msgsub.value); |
opener.document.SCORE.msgsub.value = opener.checkEntities(document.msgcenter.msgsub.value); |
var nmsg = opener.document.SCORE.savemsgN.value; |
var nmsg = opener.document.SCORE.savemsgN.value; |
Line 1439 sub sub_page_kw_js {
|
Line 1375 sub sub_page_kw_js {
|
self.close() |
self.close() |
|
|
} |
} |
</script> |
|
INNERJS |
INNERJS |
|
|
my $inner_js_highlight_central=<<INNERJS; |
my $inner_js_highlight_central= &Apache::lonhtmlcommon::scripttag(<<INNERJS); |
<script type="text/javascript"> |
|
function updateChoice(flag) { |
function updateChoice(flag) { |
opener.document.SCORE.kwclr.value = opener.radioSelection(document.hlCenter.kwdclr); |
opener.document.SCORE.kwclr.value = opener.radioSelection(document.hlCenter.kwdclr); |
opener.document.SCORE.kwsize.value = opener.radioSelection(document.hlCenter.kwdsize); |
opener.document.SCORE.kwsize.value = opener.radioSelection(document.hlCenter.kwdsize); |
Line 1454 INNERJS
|
Line 1388 INNERJS
|
} |
} |
self.close() |
self.close() |
} |
} |
</script> |
|
INNERJS |
INNERJS |
|
|
my $start_page_msg_central = |
my $start_page_msg_central = |
Line 1478 INNERJS
|
Line 1411 INNERJS
|
my $docopen=&Apache::lonhtmlcommon::javascript_docopen(); |
my $docopen=&Apache::lonhtmlcommon::javascript_docopen(); |
$docopen=~s/^document\.//; |
$docopen=~s/^document\.//; |
my $alertmsg = &mt('Please select a word or group of words from document and then click this link.'); |
my $alertmsg = &mt('Please select a word or group of words from document and then click this link.'); |
$request->print(<<SUBJAVASCRIPT); |
$request->print(&Apache::lonhtmlcommon::scripttag(<<SUBJAVASCRIPT)); |
<script type="text/javascript" language="javascript"> |
|
|
|
//===================== Show list of keywords ==================== |
//===================== Show list of keywords ==================== |
function keywords(formname) { |
function keywords(formname) { |
Line 1710 INNERJS
|
Line 1642 INNERJS
|
hDoc.close(); |
hDoc.close(); |
} |
} |
|
|
</script> |
|
SUBJAVASCRIPT |
SUBJAVASCRIPT |
} |
} |
|
|
Line 1797 sub gradeBox {
|
Line 1728 sub gradeBox {
|
$line.='<option value="reset status">'.&mt('reset status').'</option></select>'."\n"; |
$line.='<option value="reset status">'.&mt('reset status').'</option></select>'."\n"; |
|
|
|
|
#&mt('<td><b>Part:</b></td><td>[_1]</td><td><b>Points:</b></td><td>[_2]</td><td>or</td><td>[_3]</td>',$display_part,$radio,$line); |
|
$result .= |
$result .= |
'<td>'.$display_part.'</td><td>'.$radio.'</td><td>'.&mt('or').'</td><td>'.$line.'</td>'; |
'<td>'.$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(); |
Line 1953 sub build_section_inputs {
|
Line 1883 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,$symb) = @_; |
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'}); |
$env{'form.fullname'} = &Apache::loncommon::plainname($uname,$udom,'lastname') if $env{'form.fullname'} eq ''; |
$env{'form.fullname'} = &Apache::loncommon::plainname($uname,$udom,'lastname') if $env{'form.fullname'} eq ''; |
my $symb = &get_symb($request); |
|
|
my $probtitle=&Apache::lonnet::gettitle($symb); |
if ($symb eq '') { $request->print("Unable to handle ambiguous references:."); return ''; } |
if ($symb eq '') { $request->print("Unable to handle ambiguous references:."); return ''; } |
|
|
if (!&canview($usec)) { |
if (!&canview($usec)) { |
Line 1982 sub submission {
|
Line 1913 sub submission {
|
if ($counter == 0) { |
if ($counter == 0) { |
&sub_page_js($request); |
&sub_page_js($request); |
&sub_page_kw_js($request) if ($env{'form.handgrade'} eq 'yes'); |
&sub_page_kw_js($request) if ($env{'form.handgrade'} eq 'yes'); |
$env{'form.probTitle'} = $env{'form.probTitle'} eq '' ? |
|
&Apache::lonnet::gettitle($symb) : $env{'form.probTitle'}; |
|
if ($env{'form.handgrade'} eq 'yes' && &files_exist($request, $symb)) { |
if ($env{'form.handgrade'} eq 'yes' && &files_exist($request, $symb)) { |
&download_all_link($request, $symb); |
&download_all_link($request, $symb); |
} |
} |
$request->print('<h3> <span class="LC_info">'.&mt('Submission Record').'</span></h3>'."\n". |
$request->print('<h3> <span class="LC_info">'.&mt('Submission Record').'</span></h3>'); |
'<h4> '.&mt('<b>Resource: </b> [_1]',$env{'form.probTitle'}).'</h4>'."\n"); |
|
|
|
# option to display problem, only once else it cause problems |
# option to display problem, only once else it cause problems |
# with the form later since the problem has a form. |
# with the form later since the problem has a form. |
Line 2019 sub submission {
|
Line 1947 sub submission {
|
$env{'form.kwsize'} = $keyhash{$loginuser.'_kwsize'} ne '' ? $keyhash{$loginuser.'_kwsize'} : '0'; |
$env{'form.kwsize'} = $keyhash{$loginuser.'_kwsize'} ne '' ? $keyhash{$loginuser.'_kwsize'} : '0'; |
$env{'form.kwstyle'} = $keyhash{$loginuser.'_kwstyle'} ne '' ? $keyhash{$loginuser.'_kwstyle'} : ''; |
$env{'form.kwstyle'} = $keyhash{$loginuser.'_kwstyle'} ne '' ? $keyhash{$loginuser.'_kwstyle'} : ''; |
$env{'form.msgsub'} = $keyhash{$symb.'_subject'} ne '' ? |
$env{'form.msgsub'} = $keyhash{$symb.'_subject'} ne '' ? |
$keyhash{$symb.'_subject'} : $env{'form.probTitle'}; |
$keyhash{$symb.'_subject'} : $probtitle; |
$env{'form.savemsgN'} = $keyhash{$symb.'_savemsgN'} ne '' ? $keyhash{$symb.'_savemsgN'} : '0'; |
$env{'form.savemsgN'} = $keyhash{$symb.'_savemsgN'} ne '' ? $keyhash{$symb.'_savemsgN'} : '0'; |
} |
} |
my $overRideScore = $env{'form.overRideScore'} eq '' ? 'no' : $env{'form.overRideScore'}; |
my $overRideScore = $env{'form.overRideScore'} eq '' ? 'no' : $env{'form.overRideScore'}; |
my $stu_status = join(':',&Apache::loncommon::get_env_multiple('form.Status')); |
my $stu_status = join(':',&Apache::loncommon::get_env_multiple('form.Status')); |
$request->print('<form action="/adm/grades" method="post" name="SCORE" enctype="multipart/form-data">'."\n". |
$request->print('<form action="/adm/grades" method="post" name="SCORE" enctype="multipart/form-data">'."\n". |
'<input type="hidden" name="command" value="handgrade" />'."\n". |
'<input type="hidden" name="command" value="handgrade" />'."\n". |
'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."\n". |
|
'<input type="hidden" name="Status" value="'.$stu_status.'" />'."\n". |
'<input type="hidden" name="Status" value="'.$stu_status.'" />'."\n". |
'<input type="hidden" name="overRideScore" value="'.$overRideScore.'" />'."\n". |
'<input type="hidden" name="overRideScore" value="'.$overRideScore.'" />'."\n". |
'<input type="hidden" name="probTitle" value="'.$env{'form.probTitle'}.'" />'."\n". |
|
'<input type="hidden" name="refresh" value="off" />'."\n". |
'<input type="hidden" name="refresh" value="off" />'."\n". |
'<input type="hidden" name="studentNo" value="" />'."\n". |
'<input type="hidden" name="studentNo" value="" />'."\n". |
'<input type="hidden" name="gradeOpt" value="" />'."\n". |
'<input type="hidden" name="gradeOpt" value="" />'."\n". |
Line 2204 KEYWORDS
|
Line 2130 KEYWORDS
|
$lastsubonly.="\n".'<div class="LC_grade_submission_part">'. |
$lastsubonly.="\n".'<div class="LC_grade_submission_part">'. |
'<b>'.&mt('Part: [_1]',$display_part).'</b>'. |
'<b>'.&mt('Part: [_1]',$display_part).'</b>'. |
' <span class="LC_internal_info">'. |
' <span class="LC_internal_info">'. |
'('.&mt('Part ID: [_1]',$respid).')</b>'. |
'('.&mt('Part ID: [_1]',$respid).')'. |
'</span> '. |
'</span> '. |
'<span class="LC_warning">'.&mt('Nothing submitted - no attempts.').'</span><br /><br /></div>'; |
'<span class="LC_warning">'.&mt('Nothing submitted - no attempts.').'</span><br /><br /></div>'; |
next; |
next; |
Line 2250 KEYWORDS
|
Line 2176 KEYWORDS
|
'<b>'.&mt('Part: [_1]',$display_part).'</b>'. |
'<b>'.&mt('Part: [_1]',$display_part).'</b>'. |
' <span class="LC_internal_info">'. |
' <span class="LC_internal_info">'. |
'('.&mt('Part ID: [_1]',$respid).')'. |
'('.&mt('Part ID: [_1]',$respid).')'. |
'</b></span> '; |
'</span> '; |
my $files=&get_submitted_files($udom,$uname,$partid,$respid,\%record); |
my $files=&get_submitted_files($udom,$uname,$partid,$respid,\%record); |
if (@$files) { |
if (@$files) { |
if ($hide) { |
if ($hide) { |
Line 2280 KEYWORDS
|
Line 2206 KEYWORDS
|
} |
} |
$request->print($lastsubonly); |
$request->print($lastsubonly); |
} elsif ($env{'form.lastSub'} eq 'datesub') { |
} elsif ($env{'form.lastSub'} eq 'datesub') { |
my (undef,$responseType,undef,$parts) = &showResourceInfo($symb); |
# my (undef,$responseType,undef,$parts) = &showResourceInfo($symb); |
|
my ($parts,$handgrade,$responseType) = &response_type($symb); |
|
|
$request->print(&displaySubByDates($symb,\%record,$parts,$responseType,$checkIcon,$uname,$udom)); |
$request->print(&displaySubByDates($symb,\%record,$parts,$responseType,$checkIcon,$uname,$udom)); |
} elsif ($env{'form.lastSub'} =~ /^(last|all)$/) { |
} elsif ($env{'form.lastSub'} =~ /^(last|all)$/) { |
$request->print(&Apache::loncommon::get_previous_attempt($symb,$uname,$udom, |
$request->print(&Apache::loncommon::get_previous_attempt($symb,$uname,$udom, |
Line 2534 sub keywords_highlight {
|
Line 2462 sub keywords_highlight {
|
|
|
#--- Called from submission routine |
#--- Called from submission routine |
sub processHandGrade { |
sub processHandGrade { |
my ($request) = shift; |
my ($request,$symb) = @_; |
my $symb = &get_symb($request); |
|
my (undef,undef,$url) = &Apache::lonnet::decode_symb($symb); |
my (undef,undef,$url) = &Apache::lonnet::decode_symb($symb); |
my $button = $env{'form.gradeOpt'}; |
my $button = $env{'form.gradeOpt'}; |
my $ngrade = $env{'form.NCT'}; |
my $ngrade = $env{'form.NCT'}; |
Line 2575 sub processHandGrade {
|
Line 2502 sub processHandGrade {
|
if ($env{'form.withgrades'.$ctr}) { |
if ($env{'form.withgrades'.$ctr}) { |
$message.="\n\nPoint".($pts > 1 ? 's':'').' awarded = '.$pts.' out of '.$wgt; |
$message.="\n\nPoint".($pts > 1 ? 's':'').' awarded = '.$pts.' out of '.$wgt; |
$messagetail = " for <a href=\"". |
$messagetail = " for <a href=\"". |
$feedurl."?symb=$showsymb\">$env{'form.probTitle'}</a>"; |
$feedurl."?symb=$showsymb\">$restitle</a>"; |
} |
} |
$msgstatus = |
$msgstatus = |
&Apache::lonmsg::user_normal_msg($uname,$udom,$subject, |
&Apache::lonmsg::user_normal_msg($uname,$udom,$subject, |
Line 2603 sub processHandGrade {
|
Line 2530 sub processHandGrade {
|
$udom); |
$udom); |
if ($env{'form.withgrades'.$ctr}) { |
if ($env{'form.withgrades'.$ctr}) { |
$messagetail = " for <a href=\"". |
$messagetail = " for <a href=\"". |
$baseurl."?symb=$showsymb\">$env{'form.probTitle'}</a>"; |
$baseurl."?symb=$showsymb\">$restitle</a>"; |
} |
} |
$msgstatus = |
$msgstatus = |
&Apache::lonmsg::user_normal_msg($collaborator,$udom,$subject,$message.$messagetail,undef,$baseurl,undef,undef,undef,$showsymb,$restitle); |
&Apache::lonmsg::user_normal_msg($collaborator,$udom,$subject,$message.$messagetail,undef,$baseurl,undef,undef,undef,$showsymb,$restitle); |
Line 2676 sub processHandGrade {
|
Line 2603 sub processHandGrade {
|
|
|
# Go directly to grade student - from submission or link from chart page |
# Go directly to grade student - from submission or link from chart page |
if ($button eq 'Grade Student') { |
if ($button eq 'Grade Student') { |
(undef,undef,$env{'form.handgrade'},undef,undef) = &showResourceInfo($symb); |
# (undef,undef,$env{'form.handgrade'},undef,undef) = &showResourceInfo($symb); |
my $processUser = $env{'form.unamedom'.$env{'form.studentNo'}}; |
my $processUser = $env{'form.unamedom'.$env{'form.studentNo'}}; |
($env{'form.student'},$env{'form.userdom'}) = split(/:/,$processUser); |
($env{'form.student'},$env{'form.userdom'}) = split(/:/,$processUser); |
$env{'form.fullname'} = $$fullname{$processUser}; |
$env{'form.fullname'} = $$fullname{$processUser}; |
Line 2703 sub processHandGrade {
|
Line 2630 sub processHandGrade {
|
} |
} |
return $a cmp $b; |
return $a cmp $b; |
} (keys(%$fullname))) { |
} (keys(%$fullname))) { |
|
# FIXME: this is fishy, looks like the button label |
if ($nextflg == 1 && $button =~ /Next$/) { |
if ($nextflg == 1 && $button =~ /Next$/) { |
push(@parsedlist,$item); |
push(@parsedlist,$item); |
} |
} |
Line 2713 sub processHandGrade {
|
Line 2641 sub processHandGrade {
|
} |
} |
} |
} |
$ctr = 0; |
$ctr = 0; |
|
# FIXME: this is fishy, looks like the button label |
@parsedlist = reverse @parsedlist if ($button eq 'Previous'); |
@parsedlist = reverse @parsedlist if ($button eq 'Previous'); |
my $res_error; |
my $res_error; |
my ($partlist) = &response_type($symb,\$res_error); |
my ($partlist) = &response_type($symb,\$res_error); |
Line 3170 sub viewgrades_js {
|
Line 3099 sub viewgrades_js {
|
my ($request) = shift; |
my ($request) = shift; |
|
|
my $alertmsg = &mt('A number equal or greater than 0 is expected. Entered value = '); |
my $alertmsg = &mt('A number equal or greater than 0 is expected. Entered value = '); |
$request->print(<<VIEWJAVASCRIPT); |
$request->print(&Apache::lonhtmlcommon::scripttag(<<VIEWJAVASCRIPT)); |
<script type="text/javascript" language="javascript"> |
|
function writePoint(partid,weight,point) { |
function writePoint(partid,weight,point) { |
var radioButton = document.classgrade["RADVAL_"+partid]; |
var radioButton = document.classgrade["RADVAL_"+partid]; |
var textbox = document.classgrade["TEXTVAL_"+partid]; |
var textbox = document.classgrade["TEXTVAL_"+partid]; |
Line 3332 sub viewgrades_js {
|
Line 3260 sub viewgrades_js {
|
} |
} |
} |
} |
|
|
</script> |
|
VIEWJAVASCRIPT |
VIEWJAVASCRIPT |
} |
} |
|
|
#--- show scores for a section or whole class w/ option to change/update a score |
#--- show scores for a section or whole class w/ option to change/update a score |
sub viewgrades { |
sub viewgrades { |
my ($request) = shift; |
my ($request,$symb) = @_; |
&viewgrades_js($request); |
&viewgrades_js($request); |
|
|
my ($symb) = &get_symb($request); |
|
#need to make sure we have the correct data for later EXT calls, |
#need to make sure we have the correct data for later EXT calls, |
#thus invalidate the cache |
#thus invalidate the cache |
&Apache::lonnet::devalidatecourseresdata( |
&Apache::lonnet::devalidatecourseresdata( |
Line 3350 sub viewgrades {
|
Line 3276 sub viewgrades {
|
&Apache::lonnet::clear_EXT_cache_status(); |
&Apache::lonnet::clear_EXT_cache_status(); |
|
|
my $result='<h3><span class="LC_info">'.&mt('Manual Grading').'</span></h3>'; |
my $result='<h3><span class="LC_info">'.&mt('Manual Grading').'</span></h3>'; |
$result.='<h4>'.&mt('<b>Current Resource: </b>[_1]',$env{'form.probTitle'}).'</h4>'."\n"; |
|
|
|
#view individual student submission form - called using Javascript viewOneStudent |
#view individual student submission form - called using Javascript viewOneStudent |
$result.=&jscriptNform($symb); |
$result.=&jscriptNform($symb); |
Line 3361 sub viewgrades {
|
Line 3286 sub viewgrades {
|
'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". |
'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". |
'<input type="hidden" name="command" value="editgrades" />'."\n". |
'<input type="hidden" name="command" value="editgrades" />'."\n". |
&build_section_inputs(). |
&build_section_inputs(). |
'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."\n". |
|
'<input type="hidden" name="Status" value="'.$env{'stu_status'}.'" />'."\n". |
'<input type="hidden" name="Status" value="'.$env{'stu_status'}.'" />'."\n". |
'<input type="hidden" name="probTitle" value="'.$env{'form.probTitle'}.'" />'."\n"; |
|
|
|
my ($common_header,$specific_header); |
my ($common_header,$specific_header); |
if ($env{'form.section'} eq 'all') { |
if ($env{'form.section'} eq 'all') { |
Line 3581 sub viewstudentgrade {
|
Line 3504 sub viewstudentgrade {
|
#--- change scores for all the students in a section/class |
#--- change scores for all the students in a section/class |
# record does not get update if unchanged |
# record does not get update if unchanged |
sub editgrades { |
sub editgrades { |
my ($request) = @_; |
my ($request,$symb) = @_; |
|
|
my $symb=&get_symb($request); |
|
my $section_display = join (", ",&Apache::loncommon::get_env_multiple('form.section')); |
my $section_display = join (", ",&Apache::loncommon::get_env_multiple('form.section')); |
my $title='<h2>'.&mt('Current Grade Status').'</h2>'; |
my $title='<h2>'.&mt('Current Grade Status').'</h2>'; |
$title.='<h4>'.&mt('<b>Current Resource: </b>[_1]',$env{'form.probTitle'}).'</h4>'."\n"; |
|
$title.='<h4>'.&mt('<b>Section: </b>[_1]',$section_display).'</h4>'."\n"; |
$title.='<h4>'.&mt('<b>Section: </b>[_1]',$section_display).'</h4>'."\n"; |
|
|
my $result= &Apache::loncommon::start_data_table(). |
my $result= &Apache::loncommon::start_data_table(). |
Line 3908 sub csvuploadmap_header {
|
Line 3829 sub csvuploadmap_header {
|
$javascript=&csvupload_javascript_forward_associate(); |
$javascript=&csvupload_javascript_forward_associate(); |
} |
} |
|
|
my ($result) = &showResourceInfo($symb,$env{'form.probTitle'}); |
my $result=''; |
my $checked=(($env{'form.noFirstLine'})?' checked="checked"':''); |
my $checked=(($env{'form.noFirstLine'})?' checked="checked"':''); |
my $ignore=&mt('Ignore First Line'); |
my $ignore=&mt('Ignore First Line'); |
$symb = &Apache::lonenc::check_encrypt($symb); |
$symb = &Apache::lonenc::check_encrypt($symb); |
Line 3931 to this page if the data selected is ins
|
Line 3852 to this page if the data selected is ins
|
<input type="hidden" name="upfile_associate" |
<input type="hidden" name="upfile_associate" |
value="$env{'form.upfile_associate'}" /> |
value="$env{'form.upfile_associate'}" /> |
<input type="hidden" name="symb" value="$symb" /> |
<input type="hidden" name="symb" value="$symb" /> |
<input type="hidden" name="saveState" value="$env{'form.saveState'}" /> |
|
<input type="hidden" name="probTitle" value="$env{'form.probTitle'}" /> |
|
<input type="hidden" name="command" value="csvuploadoptions" /> |
<input type="hidden" name="command" value="csvuploadoptions" /> |
<hr /> |
<hr /> |
<script type="text/javascript" language="Javascript"> |
|
$javascript |
|
</script> |
|
ENDPICK |
ENDPICK |
|
$request->print(&Apache::lonhtmlcommon::scripttag($javascript)); |
return ''; |
return ''; |
|
|
} |
} |
Line 3983 ENDPICK
|
Line 3900 ENDPICK
|
|
|
sub checkforfile_js { |
sub checkforfile_js { |
my $alertmsg = &mt('Please use the browse button to select a file from your local directory.'); |
my $alertmsg = &mt('Please use the browse button to select a file from your local directory.'); |
my $result =<<CSVFORMJS; |
my $result = &Apache::lonhtmlcommon::scripttag(<<CSVFORMJS); |
<script type="text/javascript" language="javascript"> |
|
function checkUpload(formname) { |
function checkUpload(formname) { |
if (formname.upfile.value == "") { |
if (formname.upfile.value == "") { |
alert("$alertmsg"); |
alert("$alertmsg"); |
Line 3992 sub checkforfile_js {
|
Line 3908 sub checkforfile_js {
|
} |
} |
formname.submit(); |
formname.submit(); |
} |
} |
</script> |
|
CSVFORMJS |
CSVFORMJS |
return $result; |
return $result; |
} |
} |
|
|
sub upcsvScores_form { |
sub upcsvScores_form { |
my ($request) = shift; |
my ($request,$symb) = @_; |
my ($symb)=&get_symb($request); |
|
if (!$symb) {return '';} |
if (!$symb) {return '';} |
my $result=&checkforfile_js(); |
my $result=&checkforfile_js(); |
$env{'form.probTitle'} = &Apache::lonnet::gettitle($symb); |
|
my ($table) = &showResourceInfo($symb,$env{'form.probTitle'}); |
|
$result.=$table; |
|
$result.='<br /><table width="100%" border="0"><tr><td bgcolor="#777777">'."\n"; |
$result.='<br /><table width="100%" border="0"><tr><td bgcolor="#777777">'."\n"; |
$result.='<table width="100%" border="0"><tr bgcolor="#e6ffff"><td>'."\n"; |
$result.='<table width="100%" border="0"><tr bgcolor="#e6ffff"><td>'."\n"; |
$result.=' <b>'.&mt('Specify a file containing the class scores for current resource.'). |
$result.=' <b>'.&mt('Specify a file containing the class scores for current resource.'). |
Line 4018 sub upcsvScores_form {
|
Line 3929 sub upcsvScores_form {
|
<form method="post" enctype="multipart/form-data" action="/adm/grades" name="gradesupload"> |
<form method="post" enctype="multipart/form-data" action="/adm/grades" name="gradesupload"> |
<input type="hidden" name="symb" value="$symb" /> |
<input type="hidden" name="symb" value="$symb" /> |
<input type="hidden" name="command" value="csvuploadmap" /> |
<input type="hidden" name="command" value="csvuploadmap" /> |
<input type="hidden" name="probTitle" value="$env{'form.probTitle'}" /> |
|
<input type="hidden" name="saveState" value="$env{'form.saveState'}" /> |
|
$upfile_select |
$upfile_select |
<br /><input type="button" onclick="javascript:checkUpload(this.form);" value="$upload" /> |
<br /><input type="button" onclick="javascript:checkUpload(this.form);" value="$upload" /> |
<label><input type="checkbox" name="noFirstLine" />$ignore</label> |
<label><input type="checkbox" name="noFirstLine" />$ignore</label> |
Line 4035 ENDUPFORM
|
Line 3944 ENDUPFORM
|
|
|
|
|
sub csvuploadmap { |
sub csvuploadmap { |
my ($request)= @_; |
my ($request,$symb)= @_; |
my ($symb)=&get_symb($request); |
|
if (!$symb) {return '';} |
if (!$symb) {return '';} |
|
|
my $datatoken; |
my $datatoken; |
Line 4083 sub csvuploadmap {
|
Line 3991 sub csvuploadmap {
|
} |
} |
|
|
sub csvuploadoptions { |
sub csvuploadoptions { |
my ($request)= @_; |
my ($request,$symb)= @_; |
my ($symb)=&get_symb($request); |
|
my $checked=(($env{'form.noFirstLine'})?'1':'0'); |
my $checked=(($env{'form.noFirstLine'})?'1':'0'); |
my $ignore=&mt('Ignore First Line'); |
my $ignore=&mt('Ignore First Line'); |
$request->print(<<ENDPICK); |
$request->print(<<ENDPICK); |
Line 4144 sub get_fields {
|
Line 4051 sub get_fields {
|
} |
} |
|
|
sub csvuploadassign { |
sub csvuploadassign { |
my ($request)= @_; |
my ($request,$symb)= @_; |
my ($symb)=&get_symb($request); |
|
if (!$symb) {return '';} |
if (!$symb) {return '';} |
my $error_msg = ''; |
my $error_msg = ''; |
&Apache::loncommon::load_tmp_file($request); |
&Apache::loncommon::load_tmp_file($request); |
Line 4263 sub csvuploadassign {
|
Line 4169 sub csvuploadassign {
|
# |
# |
#--- Select a page/sequence and a student to grade |
#--- Select a page/sequence and a student to grade |
sub pickStudentPage { |
sub pickStudentPage { |
my ($request) = shift; |
my ($request,$symb) = @_; |
|
|
my $alertmsg = &mt('Please select the student you wish to grade.'); |
my $alertmsg = &mt('Please select the student you wish to grade.'); |
$request->print(<<LISTJAVASCRIPT); |
$request->print(&Apache::lonhtmlcommon::scripttag(<<LISTJAVASCRIPT)); |
<script type="text/javascript" language="javascript"> |
|
|
|
function checkPickOne(formname) { |
function checkPickOne(formname) { |
if (radioSelection(formname.student) == null) { |
if (radioSelection(formname.student) == null) { |
Line 4280 function checkPickOne(formname) {
|
Line 4185 function checkPickOne(formname) {
|
formname.submit(); |
formname.submit(); |
} |
} |
|
|
</script> |
|
LISTJAVASCRIPT |
LISTJAVASCRIPT |
&commonJSfunctions($request); |
&commonJSfunctions($request); |
my ($symb) = &get_symb($request); |
|
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'}; |
Line 4338 LISTJAVASCRIPT
|
Line 4242 LISTJAVASCRIPT
|
my $stu_status = join(':',&Apache::loncommon::get_env_multiple('form.Status')); |
my $stu_status = join(':',&Apache::loncommon::get_env_multiple('form.Status')); |
$result.='<input type="hidden" name="Status" value="'.$stu_status.'" />'."\n". |
$result.='<input type="hidden" name="Status" value="'.$stu_status.'" />'."\n". |
'<input type="hidden" name="command" value="displayPage" />'."\n". |
'<input type="hidden" name="command" value="displayPage" />'."\n". |
'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". |
'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."<br />\n"; |
'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."<br />\n"; |
|
|
|
$result.=' <b>'.&mt('Use CODE').': </b> <input type="text" name="CODE" value="" /> <br />'."\n"; |
$result.=' <b>'.&mt('Use CODE').': </b> <input type="text" name="CODE" value="" /> <br />'."\n"; |
|
|
Line 4422 sub getSymbMap {
|
Line 4325 sub getSymbMap {
|
# |
# |
#--- Displays a page/sequence w/wo problems, w/wo submissions |
#--- Displays a page/sequence w/wo problems, w/wo submissions |
sub displayPage { |
sub displayPage { |
my ($request) = shift; |
my ($request,$symb) = @_; |
|
|
my ($symb) = &get_symb($request); |
|
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'}; |
Line 4480 sub displayPage {
|
Line 4381 sub displayPage {
|
'<input type="hidden" name="page" value="'.$pageTitle.'" />'."\n". |
'<input type="hidden" name="page" value="'.$pageTitle.'" />'."\n". |
'<input type="hidden" name="title" value="'.$env{'form.title'}.'" />'."\n". |
'<input type="hidden" name="title" value="'.$env{'form.title'}.'" />'."\n". |
'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". |
'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". |
'<input type="hidden" name="overRideScore" value="no" />'."\n". |
'<input type="hidden" name="overRideScore" value="no" />'."\n"; |
'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."\n"; |
|
|
|
if (defined($env{'form.CODE'})) { |
if (defined($env{'form.CODE'})) { |
$studentTable.= |
$studentTable.= |
Line 4710 sub displaySubByDates {
|
Line 4610 sub displaySubByDates {
|
} |
} |
|
|
sub updateGradeByPage { |
sub updateGradeByPage { |
my ($request) = shift; |
my ($request,$symb) = @_; |
|
|
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"}; |
Line 4740 sub updateGradeByPage {
|
Line 4640 sub updateGradeByPage {
|
my $map = $navmap->getResourceByUrl($resUrl); # add to navmaps |
my $map = $navmap->getResourceByUrl($resUrl); # add to navmaps |
if (!$map) { |
if (!$map) { |
$request->print('<span class="LC_warning">'.&mt('Unable to grade requested sequence ([_1]).',$resUrl).'</span>'); |
$request->print('<span class="LC_warning">'.&mt('Unable to grade requested sequence ([_1]).',$resUrl).'</span>'); |
my ($symb)=&get_symb($request); |
|
$request->print(&show_grading_menu_form($symb)); |
$request->print(&show_grading_menu_form($symb)); |
return; |
return; |
} |
} |
Line 4945 the homework problem.
|
Line 4844 the homework problem.
|
|
|
sub defaultFormData { |
sub defaultFormData { |
my ($symb)=@_; |
my ($symb)=@_; |
return '<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". |
return '<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'; |
'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."\n". |
|
'<input type="hidden" name="probTitle" value="'.$env{'form.probTitle'}.'" />'."\n"; |
|
} |
} |
|
|
|
|
Line 5233 sub scantron_CODEunique {
|
Line 5130 sub scantron_CODEunique {
|
=cut |
=cut |
|
|
sub scantron_selectphase { |
sub scantron_selectphase { |
my ($r,$file2grade) = @_; |
my ($r,$file2grade,$symb) = @_; |
my ($symb)=&get_symb($r); |
|
if (!$symb) {return '';} |
if (!$symb) {return '';} |
my $map_error; |
my $map_error; |
my $sequence_selector=&getSequenceDropDown($symb,\$map_error); |
my $sequence_selector=&getSequenceDropDown($symb,\$map_error); |
Line 5252 sub scantron_selectphase {
|
Line 5148 sub scantron_selectphase {
|
|
|
$ssi_error = 0; |
$ssi_error = 0; |
|
|
|
if (&Apache::lonnet::allowed('usc',$env{'request.role.domain'}) || |
|
&Apache::lonnet::allowed('usc',$env{'request.course.id'})) { |
|
|
|
# Chunk of form to prompt for a scantron file upload. |
|
|
|
$r->print(' |
|
<br /> |
|
'.&Apache::loncommon::start_data_table('LC_scantron_action').' |
|
'.&Apache::loncommon::start_data_table_header_row().' |
|
<th> |
|
'.&mt('Specify a bubblesheet data file to upload.').' |
|
</th> |
|
'.&Apache::loncommon::end_data_table_header_row().' |
|
'.&Apache::loncommon::start_data_table_row().' |
|
<td> |
|
'); |
|
my $default_form_data=&defaultFormData($symb); |
|
my $cdom= $env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
my $cnum= $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
$r->print(&Apache::lonhtmlcommon::scripttag(' |
|
function checkUpload(formname) { |
|
if (formname.upfile.value == "") { |
|
alert("'.&mt('Please use the browse button to select a file from your local directory.').'"); |
|
return false; |
|
} |
|
formname.submit(); |
|
}')); |
|
$r->print(' |
|
<form enctype="multipart/form-data" action="/adm/grades" name="rules" method="post"> |
|
'.$default_form_data.' |
|
<input name="courseid" type="hidden" value="'.$cnum.'" /> |
|
<input name="domainid" type="hidden" value="'.$cdom.'" /> |
|
<input name="command" value="scantronupload_save" type="hidden" /> |
|
'.&mt('File to upload: [_1]','<input type="file" name="upfile" size="50" />').' |
|
<br /> |
|
<input type="button" onclick="javascript:checkUpload(this.form);" value="'.&mt('Upload Bubblesheet Data').'" /> |
|
</form> |
|
'); |
|
|
|
$r->print(' |
|
</td> |
|
'.&Apache::loncommon::end_data_table_row().' |
|
'.&Apache::loncommon::end_data_table().' |
|
'); |
|
} |
|
|
# Chunk of form to prompt for a file to grade and how: |
# Chunk of form to prompt for a file to grade and how: |
|
|
$result.= ' |
$result.= ' |
Line 5299 sub scantron_selectphase {
|
Line 5241 sub scantron_selectphase {
|
|
|
$r->print($result); |
$r->print($result); |
|
|
if (&Apache::lonnet::allowed('usc',$env{'request.role.domain'}) || |
|
&Apache::lonnet::allowed('usc',$env{'request.course.id'})) { |
|
|
|
# Chunk of form to prompt for a scantron file upload. |
|
|
|
$r->print(' |
|
<br /> |
|
'.&Apache::loncommon::start_data_table('LC_scantron_action').' |
|
'.&Apache::loncommon::start_data_table_header_row().' |
|
<th> |
|
'.&mt('Specify a bubblesheet data file to upload.').' |
|
</th> |
|
'.&Apache::loncommon::end_data_table_header_row().' |
|
'.&Apache::loncommon::start_data_table_row().' |
|
<td> |
|
'); |
|
my $default_form_data=&defaultFormData(&get_symb($r,1)); |
|
my $cdom= $env{'course.'.$env{'request.course.id'}.'.domain'}; |
|
my $cnum= $env{'course.'.$env{'request.course.id'}.'.num'}; |
|
$r->print(' |
|
<script type="text/javascript" language="javascript"> |
|
function checkUpload(formname) { |
|
if (formname.upfile.value == "") { |
|
alert("'.&mt('Please use the browse button to select a file from your local directory.').'"); |
|
return false; |
|
} |
|
formname.submit(); |
|
} |
|
</script> |
|
|
|
<form enctype="multipart/form-data" action="/adm/grades" name="rules" method="post"> |
|
'.$default_form_data.' |
|
<input name="courseid" type="hidden" value="'.$cnum.'" /> |
|
<input name="domainid" type="hidden" value="'.$cdom.'" /> |
|
<input name="command" value="scantronupload_save" type="hidden" /> |
|
'.&mt('File to upload: [_1]','<input type="file" name="upfile" size="50" />').' |
|
<br /> |
|
<input type="button" onclick="javascript:checkUpload(this.form);" value="'.&mt('Upload Bubblesheet Data').'" /> |
|
</form> |
|
'); |
|
|
|
$r->print(' |
|
</td> |
|
'.&Apache::loncommon::end_data_table_row().' |
|
'.&Apache::loncommon::end_data_table().' |
|
'); |
|
} |
|
|
|
# Chunk of the form that prompts to view a scoring office file, |
# Chunk of the form that prompts to view a scoring office file, |
# corrected file, skipped records in a file. |
# corrected file, skipped records in a file. |
Line 6305 sub scantron_warning_screen {
|
Line 6201 sub scantron_warning_screen {
|
=cut |
=cut |
|
|
sub scantron_do_warning { |
sub scantron_do_warning { |
my ($r)=@_; |
my ($r,$symb)=@_; |
my ($symb)=&get_symb($r); |
|
if (!$symb) {return '';} |
if (!$symb) {return '';} |
my $default_form_data=&defaultFormData($symb); |
my $default_form_data=&defaultFormData($symb); |
$r->print(&scantron_form_start().$default_form_data); |
$r->print(&scantron_form_start().$default_form_data); |
Line 6387 SCANTRONFORM
|
Line 6282 SCANTRONFORM
|
=cut |
=cut |
|
|
sub scantron_validate_file { |
sub scantron_validate_file { |
my ($r) = @_; |
my ($r,$symb) = @_; |
my ($symb)=&get_symb($r); |
|
if (!$symb) {return '';} |
if (!$symb) {return '';} |
my $default_form_data=&defaultFormData($symb); |
my $default_form_data=&defaultFormData($symb); |
|
|
Line 7015 sub scantron_get_correction {
|
Line 6909 sub scantron_get_correction {
|
$r->print("\n<br />"); |
$r->print("\n<br />"); |
} |
} |
|
|
$r->print(<<ENDSCRIPT); |
$r->print(&Apache::lonhtmlcommon::scripttag(<<ENDSCRIPT)); |
<script type="text/javascript"> |
|
function change_radio(field) { |
function change_radio(field) { |
var slct=document.scantronupload.scantron_CODE_resolution; |
var slct=document.scantronupload.scantron_CODE_resolution; |
var i; |
var i; |
Line 7024 function change_radio(field) {
|
Line 6917 function change_radio(field) {
|
if (slct[i].value==field) { slct[i].checked=true; } |
if (slct[i].value==field) { slct[i].checked=true; } |
} |
} |
} |
} |
</script> |
|
ENDSCRIPT |
ENDSCRIPT |
my $href="/adm/pickcode?". |
my $href="/adm/pickcode?". |
"form=".&escape("scantronupload"). |
"form=".&escape("scantronupload"). |
Line 7096 sub verify_bubbles_checked {
|
Line 6988 sub verify_bubbles_checked {
|
my (@ansnums) = @_; |
my (@ansnums) = @_; |
my $ansnumstr = join('","',@ansnums); |
my $ansnumstr = join('","',@ansnums); |
my $warning = &mt("A bubble or 'No bubble' selection has not been made for one or more lines."); |
my $warning = &mt("A bubble or 'No bubble' selection has not been made for one or more lines."); |
my $output = (<<ENDSCRIPT); |
my $output = &Apache::lonhtmlcommon::scripttag((<<ENDSCRIPT)); |
<script type="text/javascript"> |
|
function verify_bubble_radio(form) { |
function verify_bubble_radio(form) { |
var ansnumArray = new Array ("$ansnumstr"); |
var ansnumArray = new Array ("$ansnumstr"); |
var need_bubble_count = 0; |
var need_bubble_count = 0; |
Line 7120 function verify_bubble_radio(form) {
|
Line 7011 function verify_bubble_radio(form) {
|
} |
} |
form.submit(); |
form.submit(); |
} |
} |
</script> |
|
ENDSCRIPT |
ENDSCRIPT |
return $output; |
return $output; |
} |
} |
Line 7664 sub scantron_validate_missingbubbles {
|
Line 7554 sub scantron_validate_missingbubbles {
|
|
|
|
|
sub scantron_process_students { |
sub scantron_process_students { |
my ($r) = @_; |
my ($r,$symb) = @_; |
|
|
my (undef,undef,$sequence)=&Apache::lonnet::decode_symb($env{'form.selectpage'}); |
my (undef,undef,$sequence)=&Apache::lonnet::decode_symb($env{'form.selectpage'}); |
my ($symb)=&get_symb($r); |
|
if (!$symb) { |
if (!$symb) { |
return ''; |
return ''; |
} |
} |
Line 7967 sub grade_student_bubbles {
|
Line 7856 sub grade_student_bubbles {
|
} |
} |
|
|
sub scantron_upload_scantron_data { |
sub scantron_upload_scantron_data { |
my ($r)=@_; |
my ($r,$symb)=@_; |
my $dom = $env{'request.role.domain'}; |
my $dom = $env{'request.role.domain'}; |
my $domdesc = &Apache::lonnet::domain($dom,'description'); |
my $domdesc = &Apache::lonnet::domain($dom,'description'); |
$r->print(&Apache::loncommon::coursebrowser_javascript($dom)); |
$r->print(&Apache::loncommon::coursebrowser_javascript($dom)); |
Line 7976 sub scantron_upload_scantron_data {
|
Line 7865 sub scantron_upload_scantron_data {
|
'coursename',$dom); |
'coursename',$dom); |
my $syllabuslink = '<a href="javascript:ToSyllabus();">'.&mt('Syllabus').'</a>'. |
my $syllabuslink = '<a href="javascript:ToSyllabus();">'.&mt('Syllabus').'</a>'. |
(' 'x2).&mt('(shows course personnel)'); |
(' 'x2).&mt('(shows course personnel)'); |
my $default_form_data=&defaultFormData(&get_symb($r,1)); |
my $default_form_data=&defaultFormData($symb); |
my $nofile_alert = &mt('Please use the browse button to select a file from your local directory.'); |
my $nofile_alert = &mt('Please use the browse button to select a file from your local directory.'); |
my $nocourseid_alert = &mt("Please use the 'Select Course' link to open a separate window where you can search for a course to which a file can be uploaded."); |
my $nocourseid_alert = &mt("Please use the 'Select Course' link to open a separate window where you can search for a course to which a file can be uploaded."); |
$r->print(' |
$r->print(&Apache::lonhtmlcommon::scripttag(' |
<script type="text/javascript" language="javascript"> |
|
function checkUpload(formname) { |
function checkUpload(formname) { |
if (formname.upfile.value == "") { |
if (formname.upfile.value == "") { |
alert("'.$nofile_alert.'"); |
alert("'.$nofile_alert.'"); |
Line 8007 sub scantron_upload_scantron_data {
|
Line 7895 sub scantron_upload_scantron_data {
|
return; |
return; |
} |
} |
|
|
</script> |
')); |
|
$r->print(' |
<h3>'.&mt('Send scanned bubblesheet data to a course').'</h3> |
<h3>'.&mt('Send scanned bubblesheet data to a course').'</h3> |
|
|
<form enctype="multipart/form-data" action="/adm/grades" name="rules" method="post"> |
<form enctype="multipart/form-data" action="/adm/grades" name="rules" method="post"> |
Line 8037 sub scantron_upload_scantron_data {
|
Line 7925 sub scantron_upload_scantron_data {
|
|
|
|
|
sub scantron_upload_scantron_data_save { |
sub scantron_upload_scantron_data_save { |
my($r)=@_; |
my($r,$symb)=@_; |
my ($symb)=&get_symb($r,1); |
|
my $doanotherupload= |
my $doanotherupload= |
'<br /><form action="/adm/grades" method="post">'."\n". |
'<br /><form action="/adm/grades" method="post">'."\n". |
'<input type="hidden" name="command" value="scantronupload" />'."\n". |
'<input type="hidden" name="command" value="scantronupload" />'."\n". |
Line 8078 sub scantron_upload_scantron_data_save {
|
Line 7965 sub scantron_upload_scantron_data_save {
|
} |
} |
} |
} |
if ($symb) { |
if ($symb) { |
$r->print(&scantron_selectphase($r,$uploadedfile)); |
$r->print(&scantron_selectphase($r,$uploadedfile,$symb)); |
} else { |
} else { |
$r->print($doanotherupload); |
$r->print($doanotherupload); |
} |
} |
Line 8180 sub valid_file {
|
Line 8067 sub valid_file {
|
} |
} |
|
|
sub scantron_download_scantron_data { |
sub scantron_download_scantron_data { |
my ($r)=@_; |
my ($r,$symb)=@_; |
my $default_form_data=&defaultFormData(&get_symb($r,1)); |
my $default_form_data=&defaultFormData($symb); |
my $cname=$env{'course.'.$env{'request.course.id'}.'.num'}; |
my $cname=$env{'course.'.$env{'request.course.id'}.'.num'}; |
my $cdom=$env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $cdom=$env{'course.'.$env{'request.course.id'}.'.domain'}; |
my $file=$env{'form.scantron_selectfile'}; |
my $file=$env{'form.scantron_selectfile'}; |
Line 8191 sub scantron_download_scantron_data {
|
Line 8078 sub scantron_download_scantron_data {
|
'.&mt('The requested file name was invalid.').' |
'.&mt('The requested file name was invalid.').' |
</p> |
</p> |
'); |
'); |
$r->print(&show_grading_menu_form(&get_symb($r,1))); |
$r->print(&show_grading_menu_form($symb)); |
return; |
return; |
} |
} |
my $orig='/uploaded/'.$cdom.'/'.$cname.'/scantron_orig_'.$file; |
my $orig='/uploaded/'.$cdom.'/'.$cname.'/scantron_orig_'.$file; |
Line 8214 sub scantron_download_scantron_data {
|
Line 8101 sub scantron_download_scantron_data {
|
'<a href="'.$skipped.'">','</a>').' |
'<a href="'.$skipped.'">','</a>').' |
</p> |
</p> |
'); |
'); |
$r->print(&show_grading_menu_form(&get_symb($r,1))); |
$r->print(&show_grading_menu_form($symb)); |
return ''; |
return ''; |
} |
} |
|
|
sub checkscantron_results { |
sub checkscantron_results { |
my ($r) = @_; |
my ($r,$symb) = @_; |
my ($symb)=&get_symb($r); |
|
if (!$symb) {return '';} |
if (!$symb) {return '';} |
my $grading_menu_button=&show_grading_menu_form($symb); |
my $grading_menu_button=&show_grading_menu_form($symb); |
my $cid = $env{'request.course.id'}; |
my $cid = $env{'request.course.id'}; |
Line 8522 sub show_grading_menu_form {
|
Line 8408 sub show_grading_menu_form {
|
my ($symb)=@_; |
my ($symb)=@_; |
my $result.='<br /><form action="/adm/grades" method="post">'."\n". |
my $result.='<br /><form action="/adm/grades" method="post">'."\n". |
'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". |
'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". |
'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."\n". |
|
'<input type="hidden" name="command" value="gradingmenu" />'."\n". |
'<input type="hidden" name="command" value="gradingmenu" />'."\n". |
'<input type="submit" name="submit" value="'.&mt('Grading Menu').'" />'."\n". |
'<input type="submit" name="submit" value="'.&mt('Grading Menu').'" />'."\n". |
'</form>'."\n"; |
'</form>'."\n"; |
return $result; |
return $result; |
} |
} |
|
|
# -- Retrieve choices for grading form |
|
sub savedState { |
|
my %savedState = (); |
|
if ($env{'form.saveState'}) { |
|
foreach (split(/:/,$env{'form.saveState'})) { |
|
my ($key,$value) = split(/=/,$_,2); |
|
$savedState{$key} = $value; |
|
} |
|
} |
|
return \%savedState; |
|
} |
|
|
|
sub grading_menu { |
sub grading_menu { |
my ($request) = @_; |
my ($request,$symb) = @_; |
my ($symb)=&get_symb($request); |
|
if (!$symb) {return '';} |
if (!$symb) {return '';} |
my $probTitle = &Apache::lonnet::gettitle($symb); |
|
my ($table,undef,$hdgrade) = &showResourceInfo($symb,$probTitle); |
|
|
|
$request->print($table); |
|
my %fields = ('symb'=>&Apache::lonenc::check_encrypt($symb), |
my %fields = ('symb'=>&Apache::lonenc::check_encrypt($symb), |
'handgrade'=>$hdgrade, |
'command'=>'individual', |
'probTitle'=>$probTitle, |
|
'command'=>'submit_options', |
|
'saveState'=>"", |
|
'gradingMenu'=>1, |
'gradingMenu'=>1, |
'showgrading'=>"yes"); |
'showgrading'=>"yes"); |
|
|
my $url1 = &Apache::lonhtmlcommon::build_url('grades/',\%fields); |
my $url1a = &Apache::lonhtmlcommon::build_url('grades/',\%fields); |
|
|
|
$fields{'command'}='ungraded'; |
|
my $url1b=&Apache::lonhtmlcommon::build_url('grades/',\%fields); |
|
|
|
$fields{'command'}='table'; |
|
my $url1c=&Apache::lonhtmlcommon::build_url('grades/',\%fields); |
|
|
|
$fields{'command'}='all_for_one'; |
|
my $url1d=&Apache::lonhtmlcommon::build_url('grades/',\%fields); |
|
|
$fields{'command'} = 'csvform'; |
$fields{'command'} = 'csvform'; |
my $url2 = &Apache::lonhtmlcommon::build_url('grades/',\%fields); |
my $url2 = &Apache::lonhtmlcommon::build_url('grades/',\%fields); |
|
|
Line 8567 sub grading_menu {
|
Line 8442 sub grading_menu {
|
|
|
$fields{'command'} = 'scantron_selectphase'; |
$fields{'command'} = 'scantron_selectphase'; |
my $url4 = &Apache::lonhtmlcommon::build_url('grades/',\%fields); |
my $url4 = &Apache::lonhtmlcommon::build_url('grades/',\%fields); |
|
|
|
$fields{'command'} = 'initialverifyreceipt'; |
|
my $url5 = &Apache::lonhtmlcommon::build_url('grades/',\%fields); |
|
|
my @menu = ({ categorytitle=>'Course Grading', |
my @menu = ({ categorytitle=>'Hand Grading', |
items =>[ |
items =>[ |
{ linktext => 'Manual Grading/View Submissions', |
{ linktext => 'Select individual students to grade', |
url => $url1, |
url => $url1a, |
permission => 'F', |
permission => 'F', |
icon => 'edit-find-replace.png', |
icon => 'edit-find-replace.png', |
linktitle => 'Start the process of hand grading submissions.' |
linktitle => 'Grade current resource for a selection of students.' |
|
}, |
|
{ linktext => 'Grade ungraded submissions.', |
|
url => $url1b, |
|
permission => 'F', |
|
icon => 'edit-find-replace.png', |
|
linktitle => 'Grade all submissions that have not been graded yet.' |
}, |
}, |
|
|
|
{ linktext => 'Grading table', |
|
url => $url1c, |
|
permission => 'F', |
|
icon => 'edit-find-replace.png', |
|
linktitle => 'Grade current resource for all students.' |
|
}, |
|
{ linktext => 'Grade complete page/sequence/folder for one student', |
|
url => $url1d, |
|
permission => 'F', |
|
icon => 'edit-find-replace.png', |
|
linktitle => 'Grade all resources in current page/sequence/folder for one student.' |
|
}]}, |
|
{ categorytitle=>'Automated Grading', |
|
items =>[ |
|
|
{ linktext => 'Upload Scores', |
{ linktext => 'Upload Scores', |
url => $url2, |
url => $url2, |
permission => 'F', |
permission => 'F', |
Line 8593 sub grading_menu {
|
Line 8493 sub grading_menu {
|
permission => 'F', |
permission => 'F', |
icon => 'stat.png', |
icon => 'stat.png', |
linktitle => 'Grade scantron exams, upload/download scantron data files, and review previously graded scantron exams.' |
linktitle => 'Grade scantron exams, upload/download scantron data files, and review previously graded scantron exams.' |
} |
}, |
|
{ linktext => 'Verify Receipt No.', |
|
url => $url5, |
|
permission => 'F', |
|
icon => 'edit-find-replace.png', |
|
linktitle => 'Verify a system-generated receipt number for correct problem solution.' |
|
} |
|
|
] |
] |
}); |
}); |
|
|
#$fields{'command'} = 'verify'; |
|
#$url = &Apache::lonhtmlcommon::build_url('grades/',\%fields); |
|
# |
|
# Create the menu |
# Create the menu |
my $Str; |
my $Str; |
# $Str .= '<h2>'.&mt('Please select a grading task').'</h2>'; |
|
$Str .= '<form method="post" action="" name="gradingMenu">'; |
$Str .= '<form method="post" action="" name="gradingMenu">'; |
$Str .= '<input type="hidden" name="command" value="" />'. |
$Str .= '<input type="hidden" name="command" value="" />'. |
'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". |
'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". |
'<input type="hidden" name="handgrade" value="'.$hdgrade.'" />'."\n". |
|
'<input type="hidden" name="probTitle" value="'.$probTitle.'" />'."\n". |
|
'<input type="hidden" name="saveState" value="" />'."\n". |
|
'<input type="hidden" name="gradingMenu" value="1" />'."\n". |
'<input type="hidden" name="gradingMenu" value="1" />'."\n". |
'<input type="hidden" name="showgrading" value="yes" />'."\n"; |
'<input type="hidden" name="showgrading" value="yes" />'."\n"; |
|
|
$Str .= Apache::lonhtmlcommon::generate_menu(@menu); |
$Str .= &Apache::lonhtmlcommon::generate_menu(@menu); |
#$menudata->{'jscript'} |
return $Str; |
$Str .='<hr /><input type="button" value="'.&mt('Verify Receipt No.').'" '. |
} |
' onclick="javascript:checkChoice(document.forms.gradingMenu,\'5\',\'verify\')" '. |
|
' /> '. |
|
&Apache::lonnet::recprefix($env{'request.course.id'}). |
|
'-<input type="text" name="receipt" size="4" onchange="javascript:checkReceiptNo(this.form,\'OK\')" />'; |
|
|
|
$Str .="</form>\n"; |
|
my $receiptalert = &mt("Please enter a receipt number given by a student in the receipt box."); |
|
$request->print(<<GRADINGMENUJS); |
|
<script type="text/javascript" language="javascript"> |
|
function checkChoice(formname,val,cmdx) { |
|
if (val <= 2) { |
|
var cmd = radioSelection(formname.radioChoice); |
|
var cmdsave = cmd; |
|
} else { |
|
cmd = cmdx; |
|
cmdsave = 'submission'; |
|
} |
|
formname.command.value = cmd; |
|
if (val < 5) formname.submit(); |
|
if (val == 5) { |
|
if (!checkReceiptNo(formname,'notOK')) { |
|
return false; |
|
} else { |
|
formname.submit(); |
|
} |
|
} |
|
} |
|
|
|
function checkReceiptNo(formname,nospace) { |
sub ungraded { |
var receiptNo = formname.receipt.value; |
my ($request)=@_; |
var checkOpt = false; |
&submit_options($request); |
if (nospace == "OK" && isNaN(receiptNo)) {checkOpt = true;} |
} |
if (nospace == "notOK" && (isNaN(receiptNo) || receiptNo == "")) {checkOpt = true;} |
|
if (checkOpt) { |
sub submit_options_sequence { |
alert("$receiptalert"); |
my ($request,$symb) = @_; |
formname.receipt.value = ""; |
if (!$symb) {return '';} |
formname.receipt.focus(); |
|
return false; |
|
} |
|
return true; |
|
} |
|
</script> |
|
GRADINGMENUJS |
|
&commonJSfunctions($request); |
&commonJSfunctions($request); |
return $Str; |
my $result; |
|
|
|
$result.='<form action="/adm/grades" method="post" name="gradingMenu">'."\n". |
|
'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". |
|
'<input type="hidden" name="gradingMenu" value="1" />'."\n". |
|
'<input type="hidden" name="showgrading" value="yes" />'."\n"; |
|
|
|
$result.=' |
|
<h2> |
|
'.&mt('Grade complete page/sequence/folder for one student').' |
|
</h2>'. |
|
&selectfield(0). |
|
'<input type="hidden" name="command" value="pickStudentPage" /> |
|
<div> |
|
<input type="submit" value="'.&mt('Next').' →" /> |
|
</div> |
|
</div> |
|
</form>'; |
|
$result .= &show_grading_menu_form($symb); |
|
return $result; |
} |
} |
|
|
|
sub submit_options_table { |
|
my ($request,$symb) = @_; |
|
if (!$symb) {return '';} |
|
&commonJSfunctions($request); |
|
my $result; |
|
|
|
$result.='<form action="/adm/grades" method="post" name="gradingMenu">'."\n". |
|
'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". |
|
'<input type="hidden" name="gradingMenu" value="1" />'."\n". |
|
'<input type="hidden" name="showgrading" value="yes" />'."\n"; |
|
|
|
$result.=' |
|
<h2> |
|
'.&mt('Grading table').' |
|
</h2>'. |
|
&selectfield(0). |
|
'<input type="hidden" name="command" value="viewgrades" /> |
|
<div> |
|
<input type="submit" value="'.&mt('Next').' →" /> |
|
</div> |
|
</div> |
|
</form>'; |
|
$result .= &show_grading_menu_form($symb); |
|
return $result; |
|
} |
|
|
|
|
|
|
#--- Displays the submissions first page ------- |
#--- Displays the submissions first page ------- |
sub submit_options { |
sub submit_options { |
my ($request) = @_; |
my ($request,$symb) = @_; |
my ($symb)=&get_symb($request); |
|
if (!$symb) {return '';} |
if (!$symb) {return '';} |
my $probTitle = &Apache::lonnet::gettitle($symb); |
|
|
|
my $receiptalert = &mt("Please enter a receipt number given by a student in the receipt box."); |
|
$request->print(<<GRADINGMENUJS); |
|
<script type="text/javascript" language="javascript"> |
|
function checkChoice(formname,val,cmdx) { |
|
if (val <= 2) { |
|
var cmd = radioSelection(formname.radioChoice); |
|
var cmdsave = cmd; |
|
} else { |
|
cmd = cmdx; |
|
cmdsave = 'submission'; |
|
} |
|
formname.command.value = cmd; |
|
formname.saveState.value = "saveCmd="+cmdsave+":saveSec="+pullDownSelection(formname.section)+ |
|
":saveSub="+pullDownSelection(formname.submitonly)+":saveStatus="+pullDownSelection(formname.Status); |
|
if (val < 5) formname.submit(); |
|
if (val == 5) { |
|
if (!checkReceiptNo(formname,'notOK')) { return false;} |
|
formname.submit(); |
|
} |
|
if (val < 7) formname.submit(); |
|
} |
|
|
|
function checkReceiptNo(formname,nospace) { |
|
var receiptNo = formname.receipt.value; |
|
var checkOpt = false; |
|
if (nospace == "OK" && isNaN(receiptNo)) {checkOpt = true;} |
|
if (nospace == "notOK" && (isNaN(receiptNo) || receiptNo == "")) {checkOpt = true;} |
|
if (checkOpt) { |
|
alert("$receiptalert"); |
|
formname.receipt.value = ""; |
|
formname.receipt.focus(); |
|
return false; |
|
} |
|
return true; |
|
} |
|
</script> |
|
GRADINGMENUJS |
|
&commonJSfunctions($request); |
&commonJSfunctions($request); |
my ($table,undef,$hdgrade) = &showResourceInfo($symb,$probTitle); |
|
my $result; |
my $result; |
my (undef,$sections) = &getclasslist('all','0'); |
|
my $savedState = &savedState(); |
|
my $saveCmd = ($$savedState{'saveCmd'} eq '' ? 'submission' : $$savedState{'saveCmd'}); |
|
my $saveSec = ($$savedState{'saveSec'} eq '' ? 'all' : $$savedState{'saveSec'}); |
|
my $saveSub = ($$savedState{'saveSub'} eq '' ? 'all' : $$savedState{'saveSub'}); |
|
my $saveStatus = ($$savedState{'saveStatus'} eq '' ? 'Active' : $$savedState{'saveStatus'}); |
|
|
|
# Preselect sections |
|
my $selsec=""; |
|
if (ref($sections)) { |
|
foreach my $section (sort(@$sections)) { |
|
$selsec.='<option value="'.$section.'" '. |
|
($saveSec eq $section ? 'selected="selected"':'').'>'.$section.'</option>'."\n"; |
|
} |
|
} |
|
|
|
$result.='<form action="/adm/grades" method="post" name="gradingMenu">'."\n". |
$result.='<form action="/adm/grades" method="post" name="gradingMenu">'."\n". |
'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". |
'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". |
'<input type="hidden" name="handgrade" value="'.$hdgrade.'" />'."\n". |
|
'<input type="hidden" name="probTitle" value="'.$probTitle.'" />'."\n". |
|
'<input type="hidden" name="command" value="" />'."\n". |
|
'<input type="hidden" name="saveState" value="" />'."\n". |
|
'<input type="hidden" name="gradingMenu" value="1" />'."\n". |
'<input type="hidden" name="gradingMenu" value="1" />'."\n". |
'<input type="hidden" name="showgrading" value="yes" />'."\n"; |
'<input type="hidden" name="showgrading" value="yes" />'."\n"; |
|
|
$result.=' |
$result.=' |
<h2> |
<h2> |
'.&mt('Grade Current Resource').' |
'.&mt('Select individual students to grade').' |
</h2> |
</h2>'.&selectfield(1).' |
<div> |
<input type="hidden" name="command" value="submission" /> |
'.$table.' |
<input type="submit" value="'.&mt('Next').' →" /> |
</div> |
</div> |
|
</div> |
|
|
|
|
<div class="LC_columnSection"> |
</form>'; |
|
$result .= &show_grading_menu_form($symb); |
|
return $result; |
|
} |
|
|
|
sub selectfield { |
|
my ($full)=@_; |
|
my $result='<div class="LC_columnSection"> |
|
|
<fieldset> |
<fieldset> |
<legend> |
<legend> |
'.&mt('Sections').' |
'.&mt('Sections').' |
</legend> |
</legend> |
<select name="section" multiple="multiple" size="5">'."\n"; |
'.&Apache::lonstatistics::SectionSelect('section','multiple',5).' |
$result.= $selsec; |
|
$result.= '<option value="all" '.($saveSec eq 'all' ? 'selected="selected"' : ''). '>all</option></select> '; |
|
$result.=' |
|
</fieldset> |
</fieldset> |
|
|
<fieldset> |
<fieldset> |
Line 8766 GRADINGMENUJS
|
Line 8626 GRADINGMENUJS
|
<legend> |
<legend> |
'.&mt('Access Status').' |
'.&mt('Access Status').' |
</legend> |
</legend> |
'.&Apache::lonhtmlcommon::StatusOptions($saveStatus,undef,5,undef,'mult').' |
'.&Apache::lonhtmlcommon::StatusOptions(undef,undef,5,undef,'mult').' |
</fieldset> |
</fieldset>'; |
|
if ($full) { |
|
$result.=' |
<fieldset> |
<fieldset> |
<legend> |
<legend> |
'.&mt('Submission Status').' |
'.&mt('Submission Status').' |
</legend> |
</legend>'. |
<select name="submitonly" size="5"> |
&Apache::loncommon::select_form('all','submitonly', |
<option value="yes" '. ($saveSub eq 'yes' ? 'selected="selected"' : '').'>'.&mt('with submissions').'</option> |
(&Apache::lonlocal::texthash( |
<option value="queued" '. ($saveSub eq 'queued' ? 'selected="selected"' : '').'>'.&mt('in grading queue').'</option> |
'yes' => 'with submissions', |
<option value="graded" '. ($saveSub eq 'graded' ? 'selected="selected"' : '').'>'.&mt('with ungraded submissions').'</option> |
'queued' => 'in grading queue', |
<option value="incorrect" '.($saveSub eq 'incorrect' ? 'selected="selected"' : '').'>'.&mt('with incorrect submissions').'</option> |
'graded' => 'with ungraded submissions', |
<option value="all" '. ($saveSub eq 'all' ? 'selected="selected"' : '').'>'.&mt('with any status').'</option> |
'incorrect' => 'with incorrect submissions', |
</select> |
'all' => 'with any status'), |
</fieldset> |
'select_form_order' => ['yes','queued','graded','incorrect','all'])). |
|
'</fieldset>'; |
</div> |
} |
|
$result.='</div><br />'; |
<br /> |
|
<div> |
|
<div> |
|
<label> |
|
<input type="radio" name="radioChoice" value="submission" '. |
|
($saveCmd eq 'submission' ? 'checked="checked"' : '').' /> '. |
|
&mt('Select individual students to grade and view submissions.').' |
|
</label> |
|
</div> |
|
<div> |
|
<label> |
|
<input type="radio" name="radioChoice" value="viewgrades" '. |
|
($saveCmd eq 'viewgrades' ? 'checked="checked"' : '').' /> '. |
|
&mt('Grade all selected students in a grading table.').' |
|
</label> |
|
</div> |
|
<div> |
|
<input type="button" onclick="javascript:checkChoice(this.form,\'2\');" value="'.&mt('Next').' →" /> |
|
</div> |
|
</div> |
|
|
|
|
|
<h2> |
|
'.&mt('Grade Complete Folder for One Student').' |
|
</h2> |
|
<div> |
|
<div> |
|
<label> |
|
<input type="radio" name="radioChoice" value="pickStudentPage" '. |
|
($saveCmd eq 'pickStudentPage' ? 'checked="checked"' : '').' /> '. |
|
&mt('The <b>complete</b> page/sequence/folder: For one student').' |
|
</label> |
|
</div> |
|
<div> |
|
<input type="button" onclick="javascript:checkChoice(this.form,\'2\');" value="'.&mt('Next').' →" /> |
|
</div> |
|
</div> |
|
</form>'; |
|
$result .= &show_grading_menu_form($symb); |
|
return $result; |
return $result; |
} |
} |
|
|
Line 8910 sub clicker_grading_parameters {
|
Line 8732 sub clicker_grading_parameters {
|
} |
} |
|
|
sub process_clicker { |
sub process_clicker { |
my ($r)=@_; |
my ($r,$symb)=@_; |
my ($symb)=&get_symb($r); |
|
if (!$symb) {return '';} |
if (!$symb) {return '';} |
my $result=&checkforfile_js(); |
my $result=&checkforfile_js(); |
$env{'form.probTitle'} = &Apache::lonnet::gettitle($symb); |
|
my ($table) = &showResourceInfo($symb,$env{'form.probTitle'}); |
|
$result.=$table; |
|
$result.='<br /><table width="100%" border="0"><tr><td bgcolor="#777777">'."\n"; |
$result.='<br /><table width="100%" border="0"><tr><td bgcolor="#777777">'."\n"; |
$result.='<table width="100%" border="0"><tr bgcolor="#e6ffff"><td>'."\n"; |
$result.='<table width="100%" border="0"><tr bgcolor="#e6ffff"><td>'."\n"; |
$result.=' <b>'.&mt('Specify a file containing the clicker information for this resource.'). |
$result.=' <b>'.&mt('Specify a file containing the clicker information for this resource.'). |
'</b></td></tr>'."\n"; |
'</b></td></tr>'."\n"; |
$result.='<tr bgcolor=#ffffe6><td>'."\n"; |
$result.='<tr bgcolor="#ffffe6"><td>'."\n"; |
# Attempt to restore parameters from last session, set defaults if not present |
# Attempt to restore parameters from last session, set defaults if not present |
my %Saveable_Parameters=&clicker_grading_parameters(); |
my %Saveable_Parameters=&clicker_grading_parameters(); |
&Apache::loncommon::restore_course_settings('grades_clicker', |
&Apache::loncommon::restore_course_settings('grades_clicker', |
Line 8948 sub process_clicker {
|
Line 8766 sub process_clicker {
|
my $pcorrect=&mt("Percentage points for correct solution"); |
my $pcorrect=&mt("Percentage points for correct solution"); |
my $pincorrect=&mt("Percentage points for incorrect solution"); |
my $pincorrect=&mt("Percentage points for incorrect solution"); |
my $selectform=&Apache::loncommon::select_form($env{'form.upfiletype'},'upfiletype', |
my $selectform=&Apache::loncommon::select_form($env{'form.upfiletype'},'upfiletype', |
{'iclicker' => 'i>clicker', |
('iclicker' => 'i>clicker', |
'interwrite' => 'interwrite PRS'}); |
'interwrite' => 'interwrite PRS')); |
$symb = &Apache::lonenc::check_encrypt($symb); |
$symb = &Apache::lonenc::check_encrypt($symb); |
$result.=<<ENDUPFORM; |
$result.= &Apache::lonhtmlcommon::scripttag(<<ENDUPFORM); |
<script type="text/javascript"> |
|
function sanitycheck() { |
function sanitycheck() { |
// Accept only integer percentages |
// Accept only integer percentages |
document.forms.gradesupload.pcorrect.value=Math.round(document.forms.gradesupload.pcorrect.value); |
document.forms.gradesupload.pcorrect.value=Math.round(document.forms.gradesupload.pcorrect.value); |
Line 8990 function sanitycheck() {
|
Line 8807 function sanitycheck() {
|
// Remember the old state |
// Remember the old state |
document.forms.gradesupload.waschecked.value=newgradingchoice; |
document.forms.gradesupload.waschecked.value=newgradingchoice; |
} |
} |
</script> |
ENDUPFORM |
|
$result.= <<ENDUPFORM; |
<form method="post" enctype="multipart/form-data" action="/adm/grades" name="gradesupload"> |
<form method="post" enctype="multipart/form-data" action="/adm/grades" name="gradesupload"> |
<input type="hidden" name="symb" value="$symb" /> |
<input type="hidden" name="symb" value="$symb" /> |
<input type="hidden" name="command" value="processclickerfile" /> |
<input type="hidden" name="command" value="processclickerfile" /> |
<input type="hidden" name="probTitle" value="$env{'form.probTitle'}" /> |
|
<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><input type="radio" name="gradingmechanism" value="attendance"$checked{'attendance'} onclick="sanitycheck()" />$attendance </label> |
<br /><label><input type="radio" name="gradingmechanism" value="attendance"$checked{'attendance'} onclick="sanitycheck()" />$attendance </label> |
Line 9009 function sanitycheck() {
|
Line 8825 function sanitycheck() {
|
<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> |
<br /><label>$pincorrect: <input type="text" name="pincorrect" size="4" value="$env{'form.pincorrect'}" onchange="sanitycheck()" /></label> |
<br /><label>$pincorrect: <input type="text" name="pincorrect" size="4" value="$env{'form.pincorrect'}" onchange="sanitycheck()" /></label> |
<br /><input type="button" onclick="javascript:checkUpload(this.form);" value="$upload" /> |
<br /><input type="button" onclick="javascript:checkUpload(this.form);" value="$upload" /> |
</form> |
</form>' |
ENDUPFORM |
ENDUPFORM |
$result.='</td></tr></table>'."\n". |
$result.='</td></tr></table>'."\n". |
'</td></tr></table><br /><br />'."\n"; |
'</td></tr></table><br /><br />'."\n"; |
Line 9018 ENDUPFORM
|
Line 8834 ENDUPFORM
|
} |
} |
|
|
sub process_clicker_file { |
sub process_clicker_file { |
my ($r)=@_; |
my ($r,$symb)=@_; |
my ($symb)=&get_symb($r); |
|
if (!$symb) {return '';} |
if (!$symb) {return '';} |
|
|
my %Saveable_Parameters=&clicker_grading_parameters(); |
my %Saveable_Parameters=&clicker_grading_parameters(); |
&Apache::loncommon::store_course_settings('grades_clicker', |
&Apache::loncommon::store_course_settings('grades_clicker', |
\%Saveable_Parameters); |
\%Saveable_Parameters); |
|
my $result=''; |
my ($result) = &showResourceInfo($symb,$env{'form.probTitle'}); |
|
if (($env{'form.gradingmechanism'} eq 'specific') && ($env{'form.specificid'}!~/\w/)) { |
if (($env{'form.gradingmechanism'} eq 'specific') && ($env{'form.specificid'}!~/\w/)) { |
$result.='<span class="LC_error">'.&mt('You need to specify a clicker ID for the correct answer').'</span>'; |
$result.='<span class="LC_error">'.&mt('You need to specify a clicker ID for the correct answer').'</span>'; |
return $result.&show_grading_menu_form($symb); |
return $result.&show_grading_menu_form($symb); |
Line 9103 sub process_clicker_file {
|
Line 8917 sub process_clicker_file {
|
<form method="post" action="/adm/grades" name="clickeranalysis"> |
<form method="post" action="/adm/grades" name="clickeranalysis"> |
<input type="hidden" name="symb" value="$symb" /> |
<input type="hidden" name="symb" value="$symb" /> |
<input type="hidden" name="command" value="assignclickergrades" /> |
<input type="hidden" name="command" value="assignclickergrades" /> |
<input type="hidden" name="probTitle" value="$env{'form.probTitle'}" /> |
|
<input type="hidden" name="saveState" value="$env{'form.saveState'}" /> |
|
<input type="hidden" name="gradingmechanism" value="$env{'form.gradingmechanism'}" /> |
<input type="hidden" name="gradingmechanism" value="$env{'form.gradingmechanism'}" /> |
<input type="hidden" name="pcorrect" value="$env{'form.pcorrect'}" /> |
<input type="hidden" name="pcorrect" value="$env{'form.pcorrect'}" /> |
<input type="hidden" name="pincorrect" value="$env{'form.pincorrect'}" /> |
<input type="hidden" name="pincorrect" value="$env{'form.pincorrect'}" /> |
Line 9253 sub interwrite_eval {
|
Line 9065 sub interwrite_eval {
|
} |
} |
|
|
sub assign_clicker_grades { |
sub assign_clicker_grades { |
my ($r)=@_; |
my ($r,$symb)=@_; |
my ($symb)=&get_symb($r); |
|
if (!$symb) {return '';} |
if (!$symb) {return '';} |
# See which part we are saving to |
# See which part we are saving to |
my $res_error; |
my $res_error; |
Line 9265 sub assign_clicker_grades {
|
Line 9076 sub assign_clicker_grades {
|
# FIXME: This should probably look for the first handgradeable part |
# FIXME: This should probably look for the first handgradeable part |
my $part=$$partlist[0]; |
my $part=$$partlist[0]; |
# Start screen output |
# Start screen output |
my ($result) = &showResourceInfo($symb,$env{'form.probTitle'}); |
my $result=''; |
|
|
my $heading=&mt('Assigning grades based on clicker file'); |
my $heading=&mt('Assigning grades based on clicker file'); |
$result.=(<<ENDHEADER); |
$result.=(<<ENDHEADER); |
Line 9372 sub navmap_errormsg {
|
Line 9183 sub navmap_errormsg {
|
'</div>'; |
'</div>'; |
} |
} |
|
|
|
sub startpage { |
|
my ($r,$symb,$crumbs,$onlyfolderflag,$nodisplayflag) = @_; |
|
unshift(@$crumbs,{href=>"/adm/grades?command=gradingmenu&symb=".&HTML::Entities::encode($symb,'<>&"'),text=>"Grading"}); |
|
$r->print(&Apache::loncommon::start_page('Grading',undef, |
|
{'bread_crumbs' => $crumbs})); |
|
unless ($nodisplayflag) { |
|
$r->print(&Apache::lonhtmlcommon::resource_info_box($symb,$onlyfolderflag)); |
|
} |
|
} |
|
|
sub handler { |
sub handler { |
my $request=$_[0]; |
my $request=$_[0]; |
&reset_caches(); |
&reset_caches(); |
Line 9383 sub handler {
|
Line 9204 sub handler {
|
$request->send_http_header; |
$request->send_http_header; |
return '' if $request->header_only; |
return '' if $request->header_only; |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}); |
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}); |
my $symb=&get_symb($request,1); |
|
|
# see what command we need to execute |
|
|
my @commands=&Apache::loncommon::get_env_multiple('form.command'); |
my @commands=&Apache::loncommon::get_env_multiple('form.command'); |
my $command=$commands[0]; |
my $command=$commands[0]; |
|
|
Line 9391 sub handler {
|
Line 9214 sub handler {
|
&Apache::lonnet::logthis("grades got multiple commands ".join(':',@commands)); |
&Apache::lonnet::logthis("grades got multiple commands ".join(':',@commands)); |
} |
} |
|
|
|
# see what the symb is |
|
|
|
my $symb=$env{'form.symb'}; |
|
unless ($symb) { |
|
(my $url=$env{'form.url'}) =~ s-^https*://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--; |
|
$symb=&Apache::lonnet::symbread($url); |
|
} |
|
&Apache::lonenc::check_decrypt(\$symb); |
|
|
$ssi_error = 0; |
$ssi_error = 0; |
my $brcrum = [{href=>"/adm/grades",text=>"Grading"}]; |
|
$request->print(&Apache::loncommon::start_page('Grading',undef, |
|
{'bread_crumbs' => $brcrum})); |
|
if ($symb eq '' && $command eq '') { |
if ($symb eq '' && $command eq '') { |
if ($env{'user.adv'}) { |
# |
if (($env{'form.codeone'}) && ($env{'form.codetwo'}) && |
# Not called from a resource |
($env{'form.codethree'})) { |
# |
my $token=$env{'form.codeone'}.'*'.$env{'form.codetwo'}.'*'. |
|
$env{'form.codethree'}; |
|
my ($tsymb,$tuname,$tudom,$tcrsid)= |
|
&Apache::lonnet::checkin($token); |
|
if ($tsymb) { |
|
my ($map,$id,$url)=&Apache::lonnet::decode_symb($tsymb); |
|
if (&Apache::lonnet::allowed('mgr',$tcrsid)) { |
|
$request->print(&ssi_with_retries('/res/'.$url, $ssi_retries, |
|
('grade_username' => $tuname, |
|
'grade_domain' => $tudom, |
|
'grade_courseid' => $tcrsid, |
|
'grade_symb' => $tsymb))); |
|
} else { |
|
$request->print('<h3>Not authorized: '.$token.'</h3>'); |
|
} |
|
} else { |
|
$request->print('<h3>Not a valid DocID: '.$token.'</h3>'); |
|
} |
|
} else { |
|
$request->print(&Apache::lonxml::tokeninputfield()); |
|
} |
|
} |
|
} else { |
} else { |
&init_perm(); |
&init_perm(); |
if ($command eq 'submission' && $perm{'vgr'}) { |
if ($command eq 'submission' && $perm{'vgr'}) { |
($env{'form.student'} eq '' ? &listStudents($request) : &submission($request,0,0)); |
&startpage($request,$symb,[{href=>"", text=>"Student Submissions"}]); |
|
($env{'form.student'} eq '' ? &listStudents($request,$symb) : &submission($request,0,0,$symb)); |
} elsif ($command eq 'pickStudentPage' && $perm{'vgr'}) { |
} elsif ($command eq 'pickStudentPage' && $perm{'vgr'}) { |
&pickStudentPage($request); |
&startpage($request,$symb); |
|
&pickStudentPage($request,$symb); |
} elsif ($command eq 'displayPage' && $perm{'vgr'}) { |
} elsif ($command eq 'displayPage' && $perm{'vgr'}) { |
&displayPage($request); |
&startpage($request,$symb); |
|
&displayPage($request,$symb); |
} elsif ($command eq 'gradeByPage' && $perm{'mgr'}) { |
} elsif ($command eq 'gradeByPage' && $perm{'mgr'}) { |
&updateGradeByPage($request); |
&startpage($request,$symb); |
|
&updateGradeByPage($request,$symb); |
} elsif ($command eq 'processGroup' && $perm{'vgr'}) { |
} elsif ($command eq 'processGroup' && $perm{'vgr'}) { |
&processGroup($request); |
&startpage($request,$symb); |
|
&processGroup($request,$symb); |
} elsif ($command eq 'gradingmenu' && $perm{'vgr'}) { |
} elsif ($command eq 'gradingmenu' && $perm{'vgr'}) { |
$request->print(&grading_menu($request)); |
&startpage($request,$symb); |
} elsif ($command eq 'submit_options' && $perm{'vgr'}) { |
$request->print(&grading_menu($request,$symb)); |
$request->print(&submit_options($request)); |
} elsif ($command eq 'individual' && $perm{'vgr'}) { |
|
&startpage($request,$symb); |
|
$request->print(&submit_options($request,$symb)); |
|
} elsif ($command eq 'ungraded' && $perm{'vgr'}) { |
|
&startpage($request,$symb); |
|
$request->print(&submit_options($request,$symb)); |
|
} elsif ($command eq 'table' && $perm{'vgr'}) { |
|
&startpage($request,$symb,[{href=>"", text=>"Grading table"}],1); |
|
$request->print(&submit_options_table($request,$symb)); |
|
} elsif ($command eq 'all_for_one' && $perm{'vgr'}) { |
|
&startpage($request,$symb); |
|
$request->print(&submit_options_sequence($request,$symb)); |
} elsif ($command eq 'viewgrades' && $perm{'vgr'}) { |
} elsif ($command eq 'viewgrades' && $perm{'vgr'}) { |
$request->print(&viewgrades($request)); |
&startpage($request,$symb,[{href=>"/adm/grades?symb=".&HTML::Entities::encode($symb,'<>&"')."&command=table", text=>"Grading table"},{href=>'', text=>"Modify grades"}],1); |
|
$request->print(&viewgrades($request,$symb)); |
} elsif ($command eq 'handgrade' && $perm{'mgr'}) { |
} elsif ($command eq 'handgrade' && $perm{'mgr'}) { |
$request->print(&processHandGrade($request)); |
&startpage($request,$symb); |
|
$request->print(&processHandGrade($request,$symb)); |
} elsif ($command eq 'editgrades' && $perm{'mgr'}) { |
} elsif ($command eq 'editgrades' && $perm{'mgr'}) { |
$request->print(&editgrades($request)); |
&startpage($request,$symb); |
|
$request->print(&editgrades($request,$symb)); |
|
} elsif ($command eq 'initialverifyreceipt' && $perm{'vgr'}) { |
|
&startpage($request,$symb); |
|
$request->print(&initialverifyreceipt($request,$symb)); |
} elsif ($command eq 'verify' && $perm{'vgr'}) { |
} elsif ($command eq 'verify' && $perm{'vgr'}) { |
$request->print(&verifyreceipt($request)); |
&startpage($request,$symb); |
|
$request->print(&verifyreceipt($request,$symb)); |
} elsif ($command eq 'processclicker' && $perm{'mgr'}) { |
} elsif ($command eq 'processclicker' && $perm{'mgr'}) { |
$request->print(&process_clicker($request)); |
&startpage($request,$symb); |
|
$request->print(&process_clicker($request,$symb)); |
} elsif ($command eq 'processclickerfile' && $perm{'mgr'}) { |
} elsif ($command eq 'processclickerfile' && $perm{'mgr'}) { |
$request->print(&process_clicker_file($request)); |
&startpage($request,$symb); |
|
$request->print(&process_clicker_file($request,$symb)); |
} elsif ($command eq 'assignclickergrades' && $perm{'mgr'}) { |
} elsif ($command eq 'assignclickergrades' && $perm{'mgr'}) { |
$request->print(&assign_clicker_grades($request)); |
&startpage($request,$symb); |
|
$request->print(&assign_clicker_grades($request,$symb)); |
} elsif ($command eq 'csvform' && $perm{'mgr'}) { |
} elsif ($command eq 'csvform' && $perm{'mgr'}) { |
$request->print(&upcsvScores_form($request)); |
&startpage($request,$symb); |
|
$request->print(&upcsvScores_form($request,$symb)); |
} elsif ($command eq 'csvupload' && $perm{'mgr'}) { |
} elsif ($command eq 'csvupload' && $perm{'mgr'}) { |
$request->print(&csvupload($request)); |
&startpage($request,$symb); |
|
$request->print(&csvupload($request,$symb)); |
} elsif ($command eq 'csvuploadmap' && $perm{'mgr'} ) { |
} elsif ($command eq 'csvuploadmap' && $perm{'mgr'} ) { |
$request->print(&csvuploadmap($request)); |
&startpage($request,$symb); |
|
$request->print(&csvuploadmap($request,$symb)); |
} elsif ($command eq 'csvuploadoptions' && $perm{'mgr'}) { |
} elsif ($command eq 'csvuploadoptions' && $perm{'mgr'}) { |
if ($env{'form.associate'} ne 'Reverse Association') { |
if ($env{'form.associate'} ne 'Reverse Association') { |
$request->print(&csvuploadoptions($request)); |
&startpage($request,$symb); |
|
$request->print(&csvuploadoptions($request,$symb)); |
} else { |
} else { |
if ( $env{'form.upfile_associate'} ne 'reverse' ) { |
if ( $env{'form.upfile_associate'} ne 'reverse' ) { |
$env{'form.upfile_associate'} = 'reverse'; |
$env{'form.upfile_associate'} = 'reverse'; |
} else { |
} else { |
$env{'form.upfile_associate'} = 'forward'; |
$env{'form.upfile_associate'} = 'forward'; |
} |
} |
$request->print(&csvuploadmap($request)); |
&startpage($request,$symb); |
|
$request->print(&csvuploadmap($request,$symb)); |
} |
} |
} elsif ($command eq 'csvuploadassign' && $perm{'mgr'} ) { |
} elsif ($command eq 'csvuploadassign' && $perm{'mgr'} ) { |
$request->print(&csvuploadassign($request)); |
&startpage($request,$symb); |
|
$request->print(&csvuploadassign($request,$symb)); |
} elsif ($command eq 'scantron_selectphase' && $perm{'mgr'}) { |
} elsif ($command eq 'scantron_selectphase' && $perm{'mgr'}) { |
$request->print(&scantron_selectphase($request)); |
&startpage($request,$symb); |
|
$request->print(&scantron_selectphase($request,undef,$symb)); |
} elsif ($command eq 'scantron_warning' && $perm{'mgr'}) { |
} elsif ($command eq 'scantron_warning' && $perm{'mgr'}) { |
$request->print(&scantron_do_warning($request)); |
&startpage($request,$symb); |
|
$request->print(&scantron_do_warning($request,$symb)); |
} elsif ($command eq 'scantron_validate' && $perm{'mgr'}) { |
} elsif ($command eq 'scantron_validate' && $perm{'mgr'}) { |
$request->print(&scantron_validate_file($request)); |
&startpage($request,$symb); |
|
$request->print(&scantron_validate_file($request,$symb)); |
} elsif ($command eq 'scantron_process' && $perm{'mgr'}) { |
} elsif ($command eq 'scantron_process' && $perm{'mgr'}) { |
$request->print(&scantron_process_students($request)); |
&startpage($request,$symb); |
|
$request->print(&scantron_process_students($request,$symb)); |
} elsif ($command eq 'scantronupload' && |
} elsif ($command eq 'scantronupload' && |
(&Apache::lonnet::allowed('usc',$env{'request.role.domain'})|| |
(&Apache::lonnet::allowed('usc',$env{'request.role.domain'})|| |
&Apache::lonnet::allowed('usc',$env{'request.course.id'}))) { |
&Apache::lonnet::allowed('usc',$env{'request.course.id'}))) { |
$request->print(&scantron_upload_scantron_data($request)); |
&startpage($request,$symb); |
|
$request->print(&scantron_upload_scantron_data($request,$symb)); |
} 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'}))) { |
&Apache::lonnet::allowed('usc',$env{'request.course.id'}))) { |
$request->print(&scantron_upload_scantron_data_save($request)); |
&startpage($request,$symb); |
|
$request->print(&scantron_upload_scantron_data_save($request,$symb)); |
} elsif ($command eq 'scantron_download' && |
} elsif ($command eq 'scantron_download' && |
&Apache::lonnet::allowed('usc',$env{'request.course.id'})) { |
&Apache::lonnet::allowed('usc',$env{'request.course.id'})) { |
$request->print(&scantron_download_scantron_data($request)); |
&startpage($request,$symb); |
|
$request->print(&scantron_download_scantron_data($request,$symb)); |
} elsif ($command eq 'checksubmissions' && $perm{'vgr'}) { |
} elsif ($command eq 'checksubmissions' && $perm{'vgr'}) { |
$request->print(&checkscantron_results($request)); |
&startpage($request,$symb); |
|
$request->print(&checkscantron_results($request,$symb)); |
} elsif ($command) { |
} elsif ($command) { |
|
&startpage($request,$symb); |
$request->print('<p class="LC_error">'.&mt('Access Denied ([_1])',$command).'</p>'); |
$request->print('<p class="LC_error">'.&mt('Access Denied ([_1])',$command).'</p>'); |
} |
} |
} |
} |