version 1.319, 2006/02/27 02:06:52
|
version 1.326, 2006/03/02 21:50:30
|
Line 49 my %perm=();
|
Line 49 my %perm=();
|
# |
# |
# --- Retrieve the parts from the metadata file.--- |
# --- Retrieve the parts from the metadata file.--- |
sub getpartlist { |
sub getpartlist { |
my ($url,$symb) = @_; |
my ($symb) = @_; |
|
my (undef,undef,$url) = &Apache::lonnet::decode_symb($symb); |
my $partorder = &Apache::lonnet::metadata($url, 'partorder'); |
my $partorder = &Apache::lonnet::metadata($url, 'partorder'); |
my @parts; |
my @parts; |
if ($partorder) { |
if ($partorder) { |
Line 79 sub getpartlist {
|
Line 80 sub getpartlist {
|
} |
} |
|
|
# --- Get the symbolic name of a problem and the url |
# --- Get the symbolic name of a problem and the url |
sub get_symb_and_url { |
sub get_symb { |
my ($request,$silent) = @_; |
my ($request,$silent) = @_; |
(my $url=$env{'form.url'}) =~ s-^http://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--; |
(my $url=$env{'form.url'}) =~ s-^http://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--; |
my $symb=($env{'form.symb'} ne '' ? $env{'form.symb'} : (&Apache::lonnet::symbread($url))); |
my $symb=($env{'form.symb'} ne '' ? $env{'form.symb'} : (&Apache::lonnet::symbread($url))); |
Line 89 sub get_symb_and_url {
|
Line 90 sub get_symb_and_url {
|
return (); |
return (); |
} |
} |
} |
} |
return ($symb,$url); |
return ($symb); |
} |
} |
|
|
#--- Format fullname, username:domain if different for display |
#--- Format fullname, username:domain if different for display |
Line 107 sub nameUserString {
|
Line 108 sub nameUserString {
|
#--- Get the partlist and the response type for a given problem. --- |
#--- Get the partlist and the response type for a given problem. --- |
#--- Indicate if a response type is coded handgraded or not. --- |
#--- Indicate if a response type is coded handgraded or not. --- |
sub response_type { |
sub response_type { |
my ($url,$symb) = shift; |
my ($symb) = shift; |
$symb=($env{'form.symb'} ne '' ? $env{'form.symb'} : (&Apache::lonnet::symbread($url))) if ($symb eq ''); |
my (undef,undef,$url) = &Apache::lonnet::decode_symb($symb); |
my $allkeys = &Apache::lonnet::metadata($url,'keys'); |
my $allkeys = &Apache::lonnet::metadata($url,'keys'); |
my %vPart; |
my %vPart; |
foreach my $partid (&Apache::loncommon::get_env_multiple('form.vPart')) { |
foreach my $partid (&Apache::loncommon::get_env_multiple('form.vPart')) { |
Line 136 sub response_type {
|
Line 137 sub response_type {
|
push @partlist,$partid; |
push @partlist,$partid; |
} |
} |
} |
} |
return \@partlist,\%handgrade,\%responseType; |
return (\@partlist,\%handgrade,\%responseType); |
} |
} |
|
|
sub get_display_part { |
sub get_display_part { |
my ($partID,$url,$symb)=@_; |
my ($partID,$symb)=@_; |
if (!defined($symb) || $symb eq '') { |
|
$symb=$env{'form.symb'}; |
|
if ($symb eq '') { $symb=&Apache::lonnet::symbread($url) } |
|
} |
|
my $display=&Apache::lonnet::EXT('resource.'.$partID.'.display',$symb); |
my $display=&Apache::lonnet::EXT('resource.'.$partID.'.display',$symb); |
if (defined($display) and $display ne '') { |
if (defined($display) and $display ne '') { |
$display.= " (<font color=\"#999900\">id $partID</font>)"; |
$display.= " (<font color=\"#999900\">id $partID</font>)"; |
Line 157 sub get_display_part {
|
Line 154 sub get_display_part {
|
#--- Show resource title |
#--- Show resource title |
#--- and parts and response type |
#--- and parts and response type |
sub showResourceInfo { |
sub showResourceInfo { |
my ($url,$probTitle,$checkboxes) = @_; |
my ($symb,$probTitle,$checkboxes) = @_; |
my $col=3; |
my $col=3; |
if ($checkboxes) { $col=4; } |
if ($checkboxes) { $col=4; } |
my $result ='<table border="0">'. |
my $result ='<table border="0">'. |
'<tr><td colspan="'.$col.'"><font size="+1"><b>'.&mt('Current Resource').': </b>'. |
'<tr><td colspan="'.$col.'"><font size="+1"><b>'.&mt('Current Resource').': </b>'. |
$probTitle.'</font></td></tr>'."\n"; |
$probTitle.'</font></td></tr>'."\n"; |
my ($partlist,$handgrade,$responseType) = &response_type($url); |
my ($partlist,$handgrade,$responseType) = &response_type($symb); |
my %resptype = (); |
my %resptype = (); |
my $hdgrade='no'; |
my $hdgrade='no'; |
my %partsseen; |
my %partsseen; |
Line 181 sub showResourceInfo {
|
Line 178 sub showResourceInfo {
|
} |
} |
$partsseen{$partID}=1; |
$partsseen{$partID}=1; |
} |
} |
my $display_part=&get_display_part($partID,$url); |
my $display_part=&get_display_part($partID,$symb); |
$result.='<td><b>Part: </b>'.$display_part.' <font color="#999999">'. |
$result.='<td><b>Part: </b>'.$display_part.' <font color="#999999">'. |
$resID.'</font></td>'. |
$resID.'</font></td>'. |
'<td><b>Type: </b>'.$responsetype.'</td></tr>'; |
'<td><b>Type: </b>'.$responsetype.'</td></tr>'; |
Line 430 sub canview {
|
Line 427 sub canview {
|
|
|
#--- Retrieve the grade status of a student for all the parts |
#--- Retrieve the grade status of a student for all the parts |
sub student_gradeStatus { |
sub student_gradeStatus { |
my ($url,$symb,$udom,$uname,$partlist) = @_; |
my ($symb,$udom,$uname,$partlist) = @_; |
my %record = &Apache::lonnet::restore($symb,$env{'request.course.id'},$udom,$uname); |
my %record = &Apache::lonnet::restore($symb,$env{'request.course.id'},$udom,$uname); |
my %partstatus = (); |
my %partstatus = (); |
foreach (@$partlist) { |
foreach (@$partlist) { |
Line 447 sub student_gradeStatus {
|
Line 444 sub student_gradeStatus {
|
# Use by verifyscript and viewgrades |
# Use by verifyscript and viewgrades |
# Shows a student's view of problem and submission |
# Shows a student's view of problem and submission |
sub jscriptNform { |
sub jscriptNform { |
my ($url,$symb) = @_; |
my ($symb) = @_; |
my $jscript='<script type="text/javascript" language="javascript">'."\n". |
my $jscript='<script type="text/javascript" language="javascript">'."\n". |
' function viewOneStudent(user,domain) {'."\n". |
' function viewOneStudent(user,domain) {'."\n". |
' document.onestudent.student.value = user;'."\n". |
' document.onestudent.student.value = user;'."\n". |
Line 457 sub jscriptNform {
|
Line 454 sub jscriptNform {
|
'</script>'."\n"; |
'</script>'."\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="'.$symb.'" />'."\n". |
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n". |
'<input type="hidden" name="url" value="'.$url.'" />'."\n". |
|
'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."\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="probTitle" value="'.$env{'form.probTitle'}.'" />'."\n". |
'<input type="hidden" name="Status" value="'.$env{'form.Status'}.'" />'."\n". |
'<input type="hidden" name="Status" value="'.$env{'form.Status'}.'" />'."\n". |
Line 556 sub verifyreceipt {
|
Line 552 sub verifyreceipt {
|
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 $url = $env{'form.url'}; |
my $symb = &Apache::lonnet::symbread(); |
my $symb = $env{'form.symb'}; |
|
unless ($symb) { |
|
$symb = &Apache::lonnet::symbread($url); |
|
} |
|
|
|
my $title.='<h3><font color="#339933">Verifying Submission Receipt '. |
my $title.='<h3><font color="#339933">Verifying Submission Receipt '. |
$receipt.'</h3></font>'."\n". |
$receipt.'</h3></font>'."\n". |
'<font size=+1><b>Resource: </b>'.$env{'form.probTitle'}.'</font><br><br>'."\n"; |
'<font size=+1><b>Resource: </b>'.$env{'form.probTitle'}.'</font><br /><br />'."\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 572 sub verifyreceipt {
|
Line 564 sub verifyreceipt {
|
my $receiptparts=0; |
my $receiptparts=0; |
if ($env{"course.$courseid.receiptalg"} eq 'receipt2') { $receiptparts=1; } |
if ($env{"course.$courseid.receiptalg"} eq 'receipt2') { $receiptparts=1; } |
my $parts=['0']; |
my $parts=['0']; |
if ($receiptparts) { ($parts)=&response_type($url,$symb); } |
if ($receiptparts) { ($parts)=&response_type($symb); } |
foreach (sort |
foreach (sort |
{ |
{ |
if (lc($$fullname{$a}) ne lc($$fullname{$b})) { |
if (lc($$fullname{$a}) ne lc($$fullname{$b})) { |
Line 600 sub verifyreceipt {
|
Line 592 sub verifyreceipt {
|
if ($matches == 0) { |
if ($matches == 0) { |
$string = $title.'No match found for the above receipt.'; |
$string = $title.'No match found for the above receipt.'; |
} else { |
} else { |
$string = &jscriptNform($url,$symb).$title. |
$string = &jscriptNform($symb).$title. |
'The above receipt matches the following student'. |
'The above receipt matches the following student'. |
($matches <= 1 ? '.' : 's.')."\n". |
($matches <= 1 ? '.' : 's.')."\n". |
'<table border="0"><tr><td bgcolor="#777777">'."\n". |
'<table border="0"><tr><td bgcolor="#777777">'."\n". |
Line 614 sub verifyreceipt {
|
Line 606 sub verifyreceipt {
|
$string.='</tr>'."\n".$contents. |
$string.='</tr>'."\n".$contents. |
'</table></td></tr></table>'."\n"; |
'</table></td></tr></table>'."\n"; |
} |
} |
return $string.&show_grading_menu_form($symb,$url); |
return $string.&show_grading_menu_form($symb); |
} |
} |
|
|
#--- This is called by a number of programs. |
#--- This is called by a number of programs. |
Line 624 sub verifyreceipt {
|
Line 616 sub verifyreceipt {
|
sub listStudents { |
sub listStudents { |
my ($request) = shift; |
my ($request) = shift; |
|
|
my ($symb,$url) = &get_symb_and_url($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 637 sub listStudents {
|
Line 629 sub listStudents {
|
my $result='<h3><font color="#339933"> '.$viewgrade. |
my $result='<h3><font color="#339933"> '.$viewgrade. |
' Submissions for a Student or a Group of Students</font></h3>'; |
' Submissions for a Student or a Group of Students</font></h3>'; |
|
|
my ($table,undef,$hdgrade,$partlist,$handgrade) = &showResourceInfo($url,$env{'form.probTitle'},($env{'form.showgrading'} eq 'yes')); |
my ($table,undef,$hdgrade,$partlist,$handgrade) = &showResourceInfo($symb,$env{'form.probTitle'},($env{'form.showgrading'} eq 'yes')); |
|
|
$request->print(<<LISTJAVASCRIPT); |
$request->print(<<LISTJAVASCRIPT); |
<script type="text/javascript" language="javascript"> |
<script type="text/javascript" language="javascript"> |
Line 703 LISTJAVASCRIPT
|
Line 695 LISTJAVASCRIPT
|
'<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="saveState" value="'.$env{'form.saveState'}.'" />'."\n". |
'<input type="hidden" name="probTitle" value="'.$env{'form.probTitle'}.'" />'."\n". |
'<input type="hidden" name="probTitle" value="'.$env{'form.probTitle'}.'" />'."\n". |
'<input type="hidden" name="url" value="'.$url.'" />'."\n". |
|
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n". |
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n". |
'<input type="hidden" name="saveStatusOld" value="'.$saveStatus.'" />'."\n"; |
'<input type="hidden" name="saveStatusOld" value="'.$saveStatus.'" />'."\n"; |
|
|
Line 736 LISTJAVASCRIPT
|
Line 727 LISTJAVASCRIPT
|
&& $submitonly ne 'queued' |
&& $submitonly ne 'queued' |
&& $submitonly ne 'all') { |
&& $submitonly ne 'all') { |
foreach (sort(@$partlist)) { |
foreach (sort(@$partlist)) { |
my $display_part=&get_display_part((split(/_/))[0],$url,$symb); |
my $display_part=&get_display_part((split(/_/))[0],$symb); |
$gradeTable.='<td><b> Part: '.$display_part. |
$gradeTable.='<td><b> Part: '.$display_part. |
' Status </b></td>'; |
' Status </b></td>'; |
} |
} |
Line 772 LISTJAVASCRIPT
|
Line 763 LISTJAVASCRIPT
|
if ($env{'form.showgrading'} eq 'yes' |
if ($env{'form.showgrading'} eq 'yes' |
&& $submitonly ne 'queued' |
&& $submitonly ne 'queued' |
&& $submitonly ne 'all') { |
&& $submitonly ne 'all') { |
(%status) =&student_gradeStatus($url,$symb,$udom,$uname,$partlist); |
(%status) =&student_gradeStatus($symb,$udom,$uname,$partlist); |
my $submitted = 0; |
my $submitted = 0; |
my $graded = 0; |
my $graded = 0; |
my $incorrect = 0; |
my $incorrect = 0; |
Line 854 LISTJAVASCRIPT
|
Line 845 LISTJAVASCRIPT
|
} elsif ($ctr == 1) { |
} elsif ($ctr == 1) { |
$gradeTable =~ s/type=checkbox/type=checkbox checked/; |
$gradeTable =~ s/type=checkbox/type=checkbox checked/; |
} |
} |
$gradeTable.=&show_grading_menu_form($symb,$url); |
$gradeTable.=&show_grading_menu_form($symb); |
$request->print($gradeTable); |
$request->print($gradeTable); |
return ''; |
return ''; |
} |
} |
Line 1273 sub sub_page_kw_js {
|
Line 1264 sub sub_page_kw_js {
|
|
|
pDoc.write("<form action=\\"inactive\\" name=\\"msgcenter\\">"); |
pDoc.write("<form action=\\"inactive\\" name=\\"msgcenter\\">"); |
pDoc.write("<input value=\\""+usrctr+"\\" name=\\"usrctr\\" type=\\"hidden\\">"); |
pDoc.write("<input value=\\""+usrctr+"\\" name=\\"usrctr\\" type=\\"hidden\\">"); |
pDoc.write("<font color=\\"green\\" size=+1> Compose Message for \"+fullname+\"</font><br><br>"); |
pDoc.write("<font color=\\"green\\" size=+1> Compose Message for \"+fullname+\"</font><br /><br />"); |
|
|
pDoc.write("<table border=0 width=100%><tr><td bgcolor=\\"#777777\\">"); |
pDoc.write("<table border=0 width=100%><tr><td bgcolor=\\"#777777\\">"); |
pDoc.write("<table border=0 width=100%><tr bgcolor=\\"#ddffff\\">"); |
pDoc.write("<table border=0 width=100%><tr bgcolor=\\"#ddffff\\">"); |
Line 1308 sub sub_page_kw_js {
|
Line 1299 sub sub_page_kw_js {
|
pDoc.write("</table>"); |
pDoc.write("</table>"); |
pDoc.write("</td></tr></table> "); |
pDoc.write("</td></tr></table> "); |
pDoc.write("<input type=\\"button\\" value=\\"Save\\" onClick=\\"javascript:checkInput()\\"> "); |
pDoc.write("<input type=\\"button\\" value=\\"Save\\" onClick=\\"javascript:checkInput()\\"> "); |
pDoc.write("<input type=\\"button\\" value=\\"Cancel\\" onClick=\\"self.close()\\"><br><br>"); |
pDoc.write("<input type=\\"button\\" value=\\"Cancel\\" onClick=\\"self.close()\\"><br /><br />"); |
pDoc.write("</form>"); |
pDoc.write("</form>"); |
pDoc.write("</body></html>"); |
pDoc.write("</body></html>"); |
pDoc.close(); |
pDoc.close(); |
Line 1377 sub sub_page_kw_js {
|
Line 1368 sub sub_page_kw_js {
|
hDoc.write("</head><body bgcolor=white>"); |
hDoc.write("</head><body bgcolor=white>"); |
|
|
hDoc.write("<form action=\\"inactive\\" name=\\"hlCenter\\">"); |
hDoc.write("<form action=\\"inactive\\" name=\\"hlCenter\\">"); |
hDoc.write("<font color=\\"green\\" size=+1> Keyword Highlight Options</font><br><br>"); |
hDoc.write("<font color=\\"green\\" size=+1> Keyword Highlight Options</font><br /><br />"); |
|
|
hDoc.write("<table border=0 width=100%><tr><td bgcolor=\\"#777777\\">"); |
hDoc.write("<table border=0 width=100%><tr><td bgcolor=\\"#777777\\">"); |
hDoc.write("<table border=0 width=100%><tr bgcolor=\\"#ddffff\\">"); |
hDoc.write("<table border=0 width=100%><tr bgcolor=\\"#ddffff\\">"); |
Line 1401 sub sub_page_kw_js {
|
Line 1392 sub sub_page_kw_js {
|
hDoc.write("</table>"); |
hDoc.write("</table>"); |
hDoc.write("</td></tr></table> "); |
hDoc.write("</td></tr></table> "); |
hDoc.write("<input type=\\"button\\" value=\\"Save\\" onClick=\\"javascript:updateChoice(1)\\"> "); |
hDoc.write("<input type=\\"button\\" value=\\"Save\\" onClick=\\"javascript:updateChoice(1)\\"> "); |
hDoc.write("<input type=\\"button\\" value=\\"Cancel\\" onClick=\\"self.close()\\"><br><br>"); |
hDoc.write("<input type=\\"button\\" value=\\"Cancel\\" onClick=\\"self.close()\\"><br /><br />"); |
hDoc.write("</form>"); |
hDoc.write("</form>"); |
hDoc.write("</body></html>"); |
hDoc.write("</body></html>"); |
hDoc.close(); |
hDoc.close(); |
Line 1413 SUBJAVASCRIPT
|
Line 1404 SUBJAVASCRIPT
|
|
|
#--- displays the grading box, used in essay type problem and grading by page/sequence |
#--- displays the grading box, used in essay type problem and grading by page/sequence |
sub gradeBox { |
sub gradeBox { |
my ($request,$symb,$uname,$udom,$counter,$partid,$record,$respid) = @_; |
my ($request,$symb,$uname,$udom,$counter,$partid,$record) = @_; |
my $checkIcon = '<img src="'.$request->dir_config('lonIconsURL'). |
my $checkIcon = '<img src="'.$request->dir_config('lonIconsURL'). |
'/check.gif" height="16" border="0" />'; |
'/check.gif" height="16" border="0" />'; |
my $wgt = &Apache::lonnet::EXT('resource.'.$partid.'.weight',$symb,$udom,$uname); |
my $wgt = &Apache::lonnet::EXT('resource.'.$partid.'.weight',$symb,$udom,$uname); |
Line 1421 sub gradeBox {
|
Line 1412 sub gradeBox {
|
'<font color="red">problem weight assigned by computer</font>'); |
'<font color="red">problem weight assigned by computer</font>'); |
$wgt = ($wgt > 0 ? $wgt : '1'); |
$wgt = ($wgt > 0 ? $wgt : '1'); |
my $score = ($$record{'resource.'.$partid.'.awarded'} eq '' ? |
my $score = ($$record{'resource.'.$partid.'.awarded'} eq '' ? |
'' : compute_points($$record{'resource.'.$partid.'.awarded'},$wgt)); |
'' : &compute_points($$record{'resource.'.$partid.'.awarded'},$wgt)); |
my $result='<input type="hidden" name="WGT'.$counter.'_'.$partid.'" value="'.$wgt.'" />'."\n"; |
my $result='<input type="hidden" name="WGT'.$counter.'_'.$partid.'" value="'.$wgt.'" />'."\n"; |
$result.='<br />'.$partid.' - '.$respid.'<br />'; |
my $display_part=&get_display_part($partid,$symb); |
my $display_part=&get_display_part($partid,undef,$symb); |
|
my %last_resets = &get_last_resets($symb,$env{'request.course.id'}, |
my %last_resets = &get_last_resets($symb,$env{'request.course.id'}, |
[$partid]); |
[$partid]); |
my $aggtries = $$record{'resource.'.$partid.'.tries'}; |
my $aggtries = $$record{'resource.'.$partid.'.tries'}; |
Line 1472 sub gradeBox {
|
Line 1462 sub gradeBox {
|
'<input type="hidden" name="aggtries'.$counter.'_'.$partid.'" value="'. |
'<input type="hidden" name="aggtries'.$counter.'_'.$partid.'" value="'. |
$aggtries.'" />'."\n"; |
$aggtries.'" />'."\n"; |
$result.='</td></tr></table>'."\n"; |
$result.='</td></tr></table>'."\n"; |
$result.=&handbackBox($uname,$udom,$counter,$partid,$record,$respid); |
$result.=&handback_box($symb,$uname,$udom,$counter,$partid,$record); |
return $result; |
return $result; |
} |
} |
sub handbackBox { |
|
my ($uname,$udom,$counter,$partid,$record,$respid) = @_; |
sub handback_box { |
my $files=&get_submitted_files($udom,$uname,$partid,$respid,$record); |
my ($symb,$uname,$udom,$counter,$partid,$record) = @_; |
|
my ($partlist,$handgrade,$responseType) = &response_type($symb); |
|
my (@respids); |
|
foreach my $part_resp (sort(keys(%$handgrade))) { |
|
my ($part,$resp) = split(/_/,$part_resp); |
|
if ($part eq $partid) { |
|
push @respids,$resp; |
|
} |
|
} |
my $result; |
my $result; |
if (@$files) { |
foreach my $respid (@respids) { |
my $file_counter = 0; |
my $prefix = $counter.'_'.$partid.'_'.$respid.'_'; |
|
my $files=&get_submitted_files($udom,$uname,$partid,$respid,$record); |
|
next if (!@$files); |
|
my $file_counter = 1; |
foreach my $file (@$files) { |
foreach my $file (@$files) { |
$result.=' Return commented document to student. <input type="file" name="part'.$partid.'_returndoc'; |
my ($file_disp) = ($file =~ m|.+/(.+)$|); |
$result.=$file_counter.'" />'."\n"; |
$result.=&mt('Return commented version of [_1] to student.', |
$result.='<input type="hidden" name="respid" value="'.$respid.'" />'; |
'<span class="filename">'.$file_disp.'</span>'); |
$result.='<input type="hidden" name="returndocorig'.$file_counter.'" value="'.$file.'" /><br />'; |
$result.='<input type="file" name="'.$prefix.'returndoc'.$file_counter.'" />'."\n"; |
} |
$result.='<input type="hidden" name="'.$prefix.'origdoc'.$file_counter.'" value="'.$file.'" /><br />'; |
|
$file_counter++; |
|
} |
} |
} |
return $result; |
return $result; |
} |
} |
Line 1541 sub show_problem {
|
Line 1544 sub show_problem {
|
sub submission { |
sub submission { |
my ($request,$counter,$total) = @_; |
my ($request,$counter,$total) = @_; |
|
|
(my $url=$env{'form.url'})=~s-^http://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--; |
|
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=($env{'form.symb'} ne '' ? $env{'form.symb'} : (&Apache::lonnet::symbread($url))); |
my $symb = &get_symb($request); |
if ($symb eq '') { $request->print("Unable to handle ambiguous references:$url:."); return ''; } |
if ($symb eq '') { $request->print("Unable to handle ambiguous references:."); return ''; } |
|
|
if (!&canview($usec)) { |
if (!&canview($usec)) { |
$request->print('<font color="red">Unable to view requested student.('. |
$request->print('<font color="red">Unable to view requested student.('. |
$uname.'@'.$udom.' in section '.$usec.' in course id '. |
$uname.'@'.$udom.' in section '.$usec.' in course id '. |
$env{'request.course.id'}.')</font>'); |
$env{'request.course.id'}.')</font>'); |
$request->print(&show_grading_menu_form($symb,$url)); |
$request->print(&show_grading_menu_form($symb)); |
return; |
return; |
} |
} |
|
|
Line 1624 sub submission {
|
Line 1626 sub submission {
|
'<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". |
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n". |
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n". |
'<input type="hidden" name="url" value="'.$url.'" />'."\n". |
|
'<input type="hidden" name="showgrading" value="'.$env{'form.showgrading'}.'" />'."\n". |
'<input type="hidden" name="showgrading" value="'.$env{'form.showgrading'}.'" />'."\n". |
'<input type="hidden" name="vProb" value="'.$env{'form.vProb'}.'" />'."\n". |
'<input type="hidden" name="vProb" value="'.$env{'form.vProb'}.'" />'."\n". |
'<input type="hidden" name="vAns" value="'.$env{'form.vAns'}.'" />'."\n". |
'<input type="hidden" name="vAns" value="'.$env{'form.vAns'}.'" />'."\n". |
'<input type="hidden" name="lastSub" value="'.$env{'form.lastSub'}.'" />'."\n". |
'<input type="hidden" name="lastSub" value="'.$env{'form.lastSub'}.'" />'."\n". |
'<input type="hidden" name="section" value="'.$env{'form.section'}.'">'."\n". |
'<input type="hidden" name="section" value="'.$env{'form.section'}.'" />'."\n". |
'<input type="hidden" name="submitonly" value="'.$env{'form.submitonly'}.'">'."\n". |
'<input type="hidden" name="submitonly" value="'.$env{'form.submitonly'}.'" />'."\n". |
'<input type="hidden" name="handgrade" value="'.$env{'form.handgrade'}.'">'."\n". |
'<input type="hidden" name="handgrade" value="'.$env{'form.handgrade'}.'" />'."\n". |
'<input type="hidden" name="NCT"'. |
'<input type="hidden" name="NCT"'. |
' value="'.($env{'form.NTSTU'} ne '' ? $env{'form.NTSTU'} : $total+1).'" />'."\n"); |
' value="'.($env{'form.NTSTU'} ne '' ? $env{'form.NTSTU'} : $total+1).'" />'."\n"); |
if ($env{'form.handgrade'} eq 'yes') { |
if ($env{'form.handgrade'} eq 'yes') { |
Line 1673 KEYWORDS
|
Line 1674 KEYWORDS
|
# |
# |
# Load the other essays for similarity check |
# Load the other essays for similarity check |
# |
# |
my $essayurl=&Apache::lonnet::declutter($url); |
my (undef,undef,$essayurl) = &Apache::lonnet::decode_symb($symb); |
my ($adom,$aname,$apath)=($essayurl=~/^(\w+)\/(\w+)\/(.*)$/); |
my ($adom,$aname,$apath)=($essayurl=~/^(\w+)\/(\w+)\/(.*)$/); |
$apath=&Apache::lonnet::escape($apath); |
$apath=&Apache::lonnet::escape($apath); |
$apath=~s/\W/\_/gs; |
$apath=~s/\W/\_/gs; |
Line 1695 KEYWORDS
|
Line 1696 KEYWORDS
|
} |
} |
|
|
my %record = &Apache::lonnet::restore($symb,$env{'request.course.id'},$udom,$uname); |
my %record = &Apache::lonnet::restore($symb,$env{'request.course.id'},$udom,$uname); |
my ($partlist,$handgrade,$responseType) = &response_type($url,$symb); |
my ($partlist,$handgrade,$responseType) = &response_type($symb); |
|
|
# Display student info |
# Display student info |
$request->print(($counter == 0 ? '' : '<br />')); |
$request->print(($counter == 0 ? '' : '<br />')); |
my $result='<table border="0" width=100%><tr><td bgcolor="#777777">'."\n". |
my $result='<table border="0" width="100%"><tr><td bgcolor="#777777">'."\n". |
'<table border="0" width=100%><tr bgcolor="#edffff"><td>'."\n"; |
'<table border="0" width="100%"><tr bgcolor="#edffff"><td>'."\n"; |
|
|
$result.='<b>Fullname: </b>'.&nameUserString(undef,$env{'form.fullname'},$uname,$udom).'<br />'."\n"; |
$result.='<b>Fullname: </b>'.&nameUserString(undef,$env{'form.fullname'},$uname,$udom).'<br />'."\n"; |
$result.='<input type="hidden" name="name'.$counter. |
$result.='<input type="hidden" name="name'.$counter. |
Line 1781 KEYWORDS
|
Line 1782 KEYWORDS
|
my %seenparts; |
my %seenparts; |
for my $part (sort keys(%$handgrade)) { |
for my $part (sort keys(%$handgrade)) { |
my ($partid,$respid) = split(/_/,$part); |
my ($partid,$respid) = split(/_/,$part); |
my $display_part=&get_display_part($partid,$url,$symb); |
my $display_part=&get_display_part($partid,$symb); |
if ($env{"form.$uname:$udom:$partid:submitted_by"}) { |
if ($env{"form.$uname:$udom:$partid:submitted_by"}) { |
if (exists($seenparts{$partid})) { next; } |
if (exists($seenparts{$partid})) { next; } |
$seenparts{$partid}=1; |
$seenparts{$partid}=1; |
Line 1825 KEYWORDS
|
Line 1826 KEYWORDS
|
if ($env{'form.lastSub'} eq 'lastonly' || |
if ($env{'form.lastSub'} eq 'lastonly' || |
($env{'form.lastSub'} eq 'hdgrade' && |
($env{'form.lastSub'} eq 'hdgrade' && |
$$handgrade{$part} eq 'yes')) { |
$$handgrade{$part} eq 'yes')) { |
my $display_part=&get_display_part($partid,$url,$symb); |
my $display_part=&get_display_part($partid,$symb); |
$lastsubonly.='<tr><td bgcolor="#ffffe6"><b>Part:</b> '. |
$lastsubonly.='<tr><td bgcolor="#ffffe6"><b>Part:</b> '. |
$display_part.' <font color="#999999">( ID '.$respid. |
$display_part.' <font color="#999999">( ID '.$respid. |
' )</font> '; |
' )</font> '; |
Line 1851 KEYWORDS
|
Line 1852 KEYWORDS
|
$lastsubonly.='</td></tr><tr bgcolor="#ffffff"><td>'."\n"; |
$lastsubonly.='</td></tr><tr bgcolor="#ffffff"><td>'."\n"; |
$request->print($lastsubonly); |
$request->print($lastsubonly); |
} elsif ($env{'form.lastSub'} eq 'datesub') { |
} elsif ($env{'form.lastSub'} eq 'datesub') { |
my (undef,$responseType,undef,$parts) = &showResourceInfo($url); |
my (undef,$responseType,undef,$parts) = &showResourceInfo($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 1871 KEYWORDS
|
Line 1872 KEYWORDS
|
$toGrade.='</td></tr></table></td></tr></table>'."\n"; |
$toGrade.='</td></tr></table></td></tr></table>'."\n"; |
if (($env{'form.command'} eq 'submission') || |
if (($env{'form.command'} eq 'submission') || |
($env{'form.command'} eq 'processGroup' && $counter == $total)) { |
($env{'form.command'} eq 'processGroup' && $counter == $total)) { |
$toGrade.='</form>'.&show_grading_menu_form($symb,$url) |
$toGrade.='</form>'.&show_grading_menu_form($symb); |
} |
} |
$request->print($toGrade); |
$request->print($toGrade); |
return; |
return; |
Line 1914 KEYWORDS
|
Line 1915 KEYWORDS
|
my %seen = (); |
my %seen = (); |
my @partlist; |
my @partlist; |
my @gradePartRespid; |
my @gradePartRespid; |
for my $part_resp(sort keys(%$handgrade)) { |
for my $part_resp (sort(keys(%$handgrade))) { |
my ($partid,$respid) = split(/_/, $part_resp); |
my ($partid,$respid) = split(/_/, $part_resp); |
#next if ($seen{$partid} > 0); |
next if ($seen{$partid} > 0); |
if ($seen{$partid} > 0) { |
|
$request->print(&handbackBox($uname,$udom,$counter,$partid,\%record,$respid)); |
|
next; |
|
} |
|
$seen{$partid}++; |
$seen{$partid}++; |
next if ($$handgrade{$part_resp} =~ /:no$/ && $env{'form.lastSub'} =~ /^(hdgrade)$/); |
next if ($$handgrade{$part_resp} =~ /:no$/ && $env{'form.lastSub'} =~ /^(hdgrade)$/); |
push @partlist,$partid; |
push @partlist,$partid; |
push @gradePartRespid,$partid.'.'.$respid; |
push @gradePartRespid,$partid.'.'.$respid; |
$request->print(&gradeBox($request,$symb,$uname,$udom,$counter,$partid,\%record,$respid)); |
$request->print(&gradeBox($request,$symb,$uname,$udom,$counter,$partid,\%record)); |
} |
} |
$result='<input type="hidden" name="partlist'.$counter. |
$result='<input type="hidden" name="partlist'.$counter. |
'" value="'.(join ":",@partlist).'" />'."\n"; |
'" value="'.(join ":",@partlist).'" />'."\n"; |
Line 1958 KEYWORDS
|
Line 1955 KEYWORDS
|
'onClick="javascript:checksubmit(this.form,\'Next\');" TARGET=_self> '; |
'onClick="javascript:checksubmit(this.form,\'Next\');" TARGET=_self> '; |
$endform.='(Next and Previous (student) do not save the scores.)'."\n" ; |
$endform.='(Next and Previous (student) do not save the scores.)'."\n" ; |
$endform.='</td><tr></table></form>'; |
$endform.='</td><tr></table></form>'; |
$endform.=&show_grading_menu_form($symb,$url); |
$endform.=&show_grading_menu_form($symb); |
$request->print($endform); |
$request->print($endform); |
} |
} |
return ''; |
return ''; |
Line 2006 sub keywords_highlight {
|
Line 2003 sub keywords_highlight {
|
#--- Called from submission routine |
#--- Called from submission routine |
sub processHandGrade { |
sub processHandGrade { |
my ($request) = shift; |
my ($request) = shift; |
my $url = $env{'form.url'}; |
my $symb = &get_symb($request); |
my $symb = $env{'form.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'}; |
my $ntstu = $env{'form.NTSTU'}; |
my $ntstu = $env{'form.NTSTU'}; |
Line 2018 sub processHandGrade {
|
Line 2015 sub processHandGrade {
|
my $ctr = 0; |
my $ctr = 0; |
while ($ctr < $ngrade) { |
while ($ctr < $ngrade) { |
my ($uname,$udom) = split(/:/,$env{'form.unamedom'.$ctr}); |
my ($uname,$udom) = split(/:/,$env{'form.unamedom'.$ctr}); |
my ($errorflag,$pts,$wgt) = &saveHandGrade($request,$url,$symb,$uname,$udom,$ctr); |
my ($errorflag,$pts,$wgt) = &saveHandGrade($request,$symb,$uname,$udom,$ctr); |
if ($errorflag eq 'no_score') { |
if ($errorflag eq 'no_score') { |
$ctr++; |
$ctr++; |
next; |
next; |
Line 2044 sub processHandGrade {
|
Line 2041 sub processHandGrade {
|
&Apache::lonnet::clutter($url). |
&Apache::lonnet::clutter($url). |
"?symb=$symb\">$env{'form.probTitle'}</a>"; |
"?symb=$symb\">$env{'form.probTitle'}</a>"; |
} |
} |
$msgstatus = &Apache::lonmsg::user_normal_msg ($uname,$udom, |
$msgstatus = &Apache::lonmsg::user_normal_msg($uname,$udom, |
$subject.' ['. |
$subject.' ['. |
&Apache::lonnet::declutter($url).']',$message); |
&Apache::lonnet::declutter($url).']',$message); |
$request->print('<br />'.&mt('Sending message to [_1]@[_2]',$uname,$udom).': '. |
$request->print('<br />'.&mt('Sending message to [_1]@[_2]',$uname,$udom).': '. |
$msgstatus); |
$msgstatus); |
} |
} |
Line 2056 sub processHandGrade {
|
Line 2053 sub processHandGrade {
|
my ($part,@collaborators) = split(/:/,$collabstr); |
my ($part,@collaborators) = split(/:/,$collabstr); |
foreach my $collaborator (@collaborators) { |
foreach my $collaborator (@collaborators) { |
my ($errorflag,$pts,$wgt) = |
my ($errorflag,$pts,$wgt) = |
&saveHandGrade($request,$url,$symb,$collaborator,$udom,$ctr, |
&saveHandGrade($request,$symb,$collaborator,$udom,$ctr, |
$env{'form.unamedom'.$ctr},$part); |
$env{'form.unamedom'.$ctr},$part); |
if ($errorflag eq 'not_allowed') { |
if ($errorflag eq 'not_allowed') { |
$request->print("<font color=\"red\">Not allowed to modify grades for $collaborator:$udom</font>"); |
$request->print("<font color=\"red\">Not allowed to modify grades for $collaborator:$udom</font>"); |
Line 2134 sub processHandGrade {
|
Line 2131 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($url); |
(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 2172 sub processHandGrade {
|
Line 2169 sub processHandGrade {
|
} |
} |
$ctr = 0; |
$ctr = 0; |
@parsedlist = reverse @parsedlist if ($button eq 'Previous'); |
@parsedlist = reverse @parsedlist if ($button eq 'Previous'); |
my ($partlist) = &response_type($url); |
my ($partlist) = &response_type($symb); |
foreach my $student (@parsedlist) { |
foreach my $student (@parsedlist) { |
my $submitonly=$env{'form.submitonly'}; |
my $submitonly=$env{'form.submitonly'}; |
my ($uname,$udom) = split(/:/,$student); |
my ($uname,$udom) = split(/:/,$student); |
Line 2186 sub processHandGrade {
|
Line 2183 sub processHandGrade {
|
|
|
if ($submitonly =~ /^(yes|graded|incorrect)$/) { |
if ($submitonly =~ /^(yes|graded|incorrect)$/) { |
# my %record = &Apache::lonnet::restore($symb,$env{'request.course.id'},$udom,$uname); |
# my %record = &Apache::lonnet::restore($symb,$env{'request.course.id'},$udom,$uname); |
my %status=&student_gradeStatus($url,$symb,$udom,$uname,$partlist); |
my %status=&student_gradeStatus($symb,$udom,$uname,$partlist); |
my $submitted = 0; |
my $submitted = 0; |
my $ungraded = 0; |
my $ungraded = 0; |
my $incorrect = 0; |
my $incorrect = 0; |
Line 2225 sub processHandGrade {
|
Line 2222 sub processHandGrade {
|
my $the_end = '<h3><font color="red">LON-CAPA User Message</font></h3><br />'."\n"; |
my $the_end = '<h3><font color="red">LON-CAPA User Message</font></h3><br />'."\n"; |
$the_end.='<b>Message: </b> No more students for this section or class.<br /><br />'."\n"; |
$the_end.='<b>Message: </b> No more students for this section or class.<br /><br />'."\n"; |
$the_end.='Click on the button below to return to the grading menu.<br /><br />'."\n"; |
$the_end.='Click on the button below to return to the grading menu.<br /><br />'."\n"; |
$the_end.=&show_grading_menu_form($symb,$url); |
$the_end.=&show_grading_menu_form($symb); |
$request->print($the_end); |
$request->print($the_end); |
} |
} |
return ''; |
return ''; |
Line 2233 sub processHandGrade {
|
Line 2230 sub processHandGrade {
|
|
|
#---- Save the score and award for each student, if changed |
#---- Save the score and award for each student, if changed |
sub saveHandGrade { |
sub saveHandGrade { |
my ($request,$url,$symb,$stuname,$domain,$newflg,$submitter,$part) = @_; |
my ($request,$symb,$stuname,$domain,$newflg,$submitter,$part) = @_; |
my @v_flag; |
my @v_flag; |
my $usec = &Apache::lonnet::getsection($domain,$stuname, |
my $usec = &Apache::lonnet::getsection($domain,$stuname, |
$env{'request.course.id'}); |
$env{'request.course.id'}); |
Line 2316 sub saveHandGrade {
|
Line 2313 sub saveHandGrade {
|
$newrecord{'resource.'.$new_part.'.regrader'}= |
$newrecord{'resource.'.$new_part.'.regrader'}= |
"$env{'user.name'}:$env{'user.domain'}"; |
"$env{'user.name'}:$env{'user.domain'}"; |
} |
} |
if ($env{'form.part'.$new_part.'_returndoc1'}) { |
my ($partlist,$handgrade,$responseType) = &response_type($symb); |
# if multiple files are uploaded names will be 'returndoc2','returndoc3' |
foreach my $part_resp (sort(keys(%$handgrade))) { |
|
my ($part_id, $resp_id) = split(/_/,$part_resp); |
my $portfolio_root = &Apache::loncommon::propath($domain, |
&Apache::lonnet::logthis('form.'.$newflg.'_'.$part_resp.'_returndoc1'); |
$stuname). |
&Apache::lonnet::logthis("new part is $new_part and partid is $part_id"); |
'/userfiles/portfolio'; |
if (($env{'form.'.$newflg.'_'.$part_resp.'_returndoc1'}) && ($new_part == $part_id)) { |
$request->print('<br>'.$portfolio_root.'<br>'); |
# if multiple files are uploaded names will be 'returndoc2','returndoc3' |
|
my $file_counter = 1; |
# my $result=&Apache::lonnet::userfileupload('uploaddoc','', |
while ($env{'form.'.$newflg.'_'.$part_resp.'_returndoc'.$file_counter}) { |
# 'portfolio'.$env{'form.currentpath'}); |
my $fname=$env{'form.'.$newflg.'_'.$part_resp.'_returndoc'.$file_counter.'.filename'}; |
|
$newrecord{"resource.$new_part.$resp_id.handback"} = $env{'form.returndocorig'.$file_counter}; |
my $file_counter = 1; |
$request->print("<br />".$fname." will be the uploaded file name"); |
my $respid = $env{'form.respid'}; |
$request->print("<font color=\"red\">Will upload document</font>".$env{'form.'.$newflg.'_'.$part_resp.'_origdoc'.$file_counter}); |
while ($env{'form.part'.$new_part.'_returndoc'.$file_counter}) { |
$file_counter++; |
my $fname=$env{'form.returndoc'.$file_counter.'.filename'}; |
} |
$newrecord{"resource.$new_part.$respid.handback"} = $env{'form.returndocorig'.$file_counter}; |
|
$request->print("<br />".$fname." will be the uploaded file name"); |
|
$request->print("<font color=\"red\">Will upload document</font>".$env{'form.returndocorig'.$file_counter}); |
|
$file_counter++; |
|
} |
} |
} |
} |
|
|
Line 2374 sub saveHandGrade {
|
Line 2367 sub saveHandGrade {
|
} |
} |
return ('',$pts,$wgt); |
return ('',$pts,$wgt); |
} |
} |
|
|
sub get_submitted_files { |
sub get_submitted_files { |
my ($udom,$uname,$partid,$respid,$record) = @_; |
my ($udom,$uname,$partid,$respid,$record) = @_; |
my @files; |
my @files; |
Line 2388 sub get_submitted_files {
|
Line 2382 sub get_submitted_files {
|
} |
} |
return (\@files); |
return (\@files); |
} |
} |
|
|
# ----------- Provides number of tries since last reset. |
# ----------- Provides number of tries since last reset. |
sub get_num_tries { |
sub get_num_tries { |
my ($record,$last_reset,$part) = @_; |
my ($record,$last_reset,$part) = @_; |
Line 2718 sub viewgrades {
|
Line 2713 sub viewgrades {
|
my ($request) = shift; |
my ($request) = shift; |
&viewgrades_js($request); |
&viewgrades_js($request); |
|
|
my ($symb,$url) = ($env{'form.symb'},$env{'form.url'}); |
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 2730 sub viewgrades {
|
Line 2725 sub viewgrades {
|
$result.='<font size=+1><b>Current Resource: </b>'.$env{'form.probTitle'}.'</font>'."\n"; |
$result.='<font size=+1><b>Current Resource: </b>'.$env{'form.probTitle'}.'</font>'."\n"; |
|
|
#view individual student submission form - called using Javascript viewOneStudent |
#view individual student submission form - called using Javascript viewOneStudent |
$result.=&jscriptNform($url,$symb); |
$result.=&jscriptNform($symb); |
|
|
#beginning of class grading form |
#beginning of class grading form |
$result.= '<form action="/adm/grades" method="post" name="classgrade">'."\n". |
$result.= '<form action="/adm/grades" method="post" name="classgrade">'."\n". |
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n". |
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n". |
'<input type="hidden" name="url" value="'.$url.'" />'."\n". |
|
'<input type="hidden" name="command" value="editgrades" />'."\n". |
'<input type="hidden" name="command" value="editgrades" />'."\n". |
'<input type="hidden" name="section" value="'.$env{'form.section'}.'" />'."\n". |
'<input type="hidden" name="section" value="'.$env{'form.section'}.'" />'."\n". |
'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."\n". |
'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."\n". |
Line 2755 sub viewgrades {
|
Line 2749 sub viewgrades {
|
'<table border=0><tr bgcolor="#ffffdd"><td>'; |
'<table border=0><tr bgcolor="#ffffdd"><td>'; |
#radio buttons/text box for assigning points for a section or class. |
#radio buttons/text box for assigning points for a section or class. |
#handles different parts of a problem |
#handles different parts of a problem |
my ($partlist,$handgrade) = &response_type($url,$symb); |
my ($partlist,$handgrade) = &response_type($symb); |
my %weight = (); |
my %weight = (); |
my $ctsparts = 0; |
my $ctsparts = 0; |
$result.='<table border="0">'; |
$result.='<table border="0">'; |
Line 2772 sub viewgrades {
|
Line 2766 sub viewgrades {
|
$ctsparts.'" value="'.$partid.'" />'."\n"; |
$ctsparts.'" value="'.$partid.'" />'."\n"; |
$result.='<input type="hidden" name="weight_'. |
$result.='<input type="hidden" name="weight_'. |
$partid.'" value="'.$weight{$partid}.'" />'."\n"; |
$partid.'" value="'.$weight{$partid}.'" />'."\n"; |
my $display_part=&get_display_part($partid,$url,$symb); |
my $display_part=&get_display_part($partid,$symb); |
$result.='<tr><td><b>Part:</b> '.$display_part.' <b>Point:</b> </td><td>'; |
$result.='<tr><td><b>Part:</b> '.$display_part.' <b>Point:</b> </td><td>'; |
$result.='<table border="0"><tr>'; |
$result.='<table border="0"><tr>'; |
my $ctr = 0; |
my $ctr = 0; |
Line 2808 sub viewgrades {
|
Line 2802 sub viewgrades {
|
$result.= '<table border=0><tr><td bgcolor="#777777">'."\n". |
$result.= '<table border=0><tr><td bgcolor="#777777">'."\n". |
'<table border=0><tr bgcolor="#deffff"><td> <b>No.</b> </td>'. |
'<table border=0><tr bgcolor="#deffff"><td> <b>No.</b> </td>'. |
'<td>'.&nameUserString('header')."</td>\n"; |
'<td>'.&nameUserString('header')."</td>\n"; |
my (@parts) = sort(&getpartlist($url,$symb)); |
my (@parts) = sort(&getpartlist($symb)); |
|
my (undef,undef,$url)=&Apache::lonnet::decode_symb($symb); |
my @partids = (); |
my @partids = (); |
foreach my $part (@parts) { |
foreach my $part (@parts) { |
my $display=&Apache::lonnet::metadata($url,$part.'.display'); |
my $display=&Apache::lonnet::metadata($url,$part.'.display'); |
Line 2816 sub viewgrades {
|
Line 2811 sub viewgrades {
|
if (!$display) { $display = &Apache::lonnet::metadata($url,$part.'.name'); } |
if (!$display) { $display = &Apache::lonnet::metadata($url,$part.'.name'); } |
my ($partid) = &split_part_type($part); |
my ($partid) = &split_part_type($part); |
push(@partids, $partid); |
push(@partids, $partid); |
my $display_part=&get_display_part($partid,$url,$symb); |
my $display_part=&get_display_part($partid,$symb); |
if ($display =~ /^Partial Credit Factor/) { |
if ($display =~ /^Partial Credit Factor/) { |
$result.='<td><b>Score Part:</b> '.$display_part. |
$result.='<td><b>Score Part:</b> '.$display_part. |
' <br /><b>(weight = '.$weight{$partid}.')</b></td>'."\n"; |
' <br /><b>(weight = '.$weight{$partid}.')</b></td>'."\n"; |
Line 2844 sub viewgrades {
|
Line 2839 sub viewgrades {
|
return $a cmp $b; |
return $a cmp $b; |
} (keys(%$fullname))) { |
} (keys(%$fullname))) { |
$ctr++; |
$ctr++; |
$result.=&viewstudentgrade($url,$symb,$env{'request.course.id'}, |
$result.=&viewstudentgrade($symb,$env{'request.course.id'}, |
$_,$$fullname{$_},\@parts,\%weight,$ctr,\%last_resets); |
$_,$$fullname{$_},\@parts,\%weight,$ctr,\%last_resets); |
} |
} |
$result.='</table></td></tr></table>'; |
$result.='</table></td></tr></table>'; |
Line 2856 sub viewgrades {
|
Line 2851 sub viewgrades {
|
$result='<font color="red">There are no students in section "'.$env{'form.section'}. |
$result='<font color="red">There are no students in section "'.$env{'form.section'}. |
'" with enrollment status "'.$env{'form.Status'}.'" to modify or grade.</font>'; |
'" with enrollment status "'.$env{'form.Status'}.'" to modify or grade.</font>'; |
} |
} |
$result.=&show_grading_menu_form($symb,$url); |
$result.=&show_grading_menu_form($symb); |
return $result; |
return $result; |
} |
} |
|
|
#--- call by previous routine to display each student |
#--- call by previous routine to display each student |
sub viewstudentgrade { |
sub viewstudentgrade { |
my ($url,$symb,$courseid,$student,$fullname,$parts,$weight,$ctr,$last_resets) = @_; |
my ($symb,$courseid,$student,$fullname,$parts,$weight,$ctr,$last_resets) = @_; |
my ($uname,$udom) = split(/:/,$student); |
my ($uname,$udom) = split(/:/,$student); |
my %record=&Apache::lonnet::restore($symb,$courseid,$udom,$uname); |
my %record=&Apache::lonnet::restore($symb,$courseid,$udom,$uname); |
my %aggregates = (); |
my %aggregates = (); |
Line 2893 sub viewstudentgrade {
|
Line 2888 sub viewstudentgrade {
|
$aggregates{$part} = 1; |
$aggregates{$part} = 1; |
} |
} |
if ($type eq 'awarded') { |
if ($type eq 'awarded') { |
my $pts = $score eq '' ? '' : compute_points($score,$$weight{$part}); |
my $pts = $score eq '' ? '' : &compute_points($score,$$weight{$part}); |
$result.='<input type="hidden" name="'. |
$result.='<input type="hidden" name="'. |
'GD_'.$student.'_'.$part.'_awarded_s" value="'.$pts.'" />'."\n"; |
'GD_'.$student.'_'.$part.'_awarded_s" value="'.$pts.'" />'."\n"; |
$result.='<input type="text" name="'. |
$result.='<input type="text" name="'. |
Line 2930 sub viewstudentgrade {
|
Line 2925 sub viewstudentgrade {
|
sub editgrades { |
sub editgrades { |
my ($request) = @_; |
my ($request) = @_; |
|
|
my $symb=$env{'form.symb'}; |
my $symb=&get_symb($request); |
my $url =$env{'form.url'}; |
|
my $title='<h3><font color="#339933">Current Grade Status</font></h3>'; |
my $title='<h3><font color="#339933">Current Grade Status</font></h3>'; |
$title.='<font size=+1><b>Current Resource: </b>'.$env{'form.probTitle'}.'</font><br />'."\n"; |
$title.='<font size=+1><b>Current Resource: </b>'.$env{'form.probTitle'}.'</font><br />'."\n"; |
$title.='<font size=+1><b>Section: </b>'.$env{'form.section'}.'</font>'."\n"; |
$title.='<font size=+1><b>Section: </b>'.$env{'form.section'}.'</font>'."\n"; |
Line 2955 sub editgrades {
|
Line 2949 sub editgrades {
|
my %columns = (); |
my %columns = (); |
my ($i,$ctr,$count,$rec_update) = (0,0,0,0); |
my ($i,$ctr,$count,$rec_update) = (0,0,0,0); |
|
|
my (@parts) = sort(&getpartlist($url,$symb)); |
my (@parts) = sort(&getpartlist($symb)); |
my $header; |
my $header; |
while ($ctr < $env{'form.totalparts'}) { |
while ($ctr < $env{'form.totalparts'}) { |
my $partid = $env{'form.partid_'.$ctr}; |
my $partid = $env{'form.partid_'.$ctr}; |
Line 2963 sub editgrades {
|
Line 2957 sub editgrades {
|
$weight{$partid} = $env{'form.weight_'.$partid}; |
$weight{$partid} = $env{'form.weight_'.$partid}; |
$ctr++; |
$ctr++; |
} |
} |
|
my (undef,undef,$url) = &Apache::lonnet::decode_symb($symb); |
foreach my $partid (@partid) { |
foreach my $partid (@partid) { |
$header .= '<td align="center"> <b>Old Score</b> </td>'. |
$header .= '<td align="center"> <b>Old Score</b> </td>'. |
'<td align="center"> <b>New Score</b> </td>'; |
'<td align="center"> <b>New Score</b> </td>'; |
Line 2980 sub editgrades {
|
Line 2975 sub editgrades {
|
} |
} |
} |
} |
foreach my $partid (@partid) { |
foreach my $partid (@partid) { |
my $display_part=&get_display_part($partid,$url,$symb); |
my $display_part=&get_display_part($partid,$symb); |
$result .= '<td colspan="'.$columns{$partid}. |
$result .= '<td colspan="'.$columns{$partid}. |
'" align="center"><b>Part:</b> '.$display_part. |
'" align="center"><b>Part:</b> '.$display_part. |
' (Weight = '.$weight{$partid}.')</td>'; |
' (Weight = '.$weight{$partid}.')</td>'; |
Line 3120 sub editgrades {
|
Line 3115 sub editgrades {
|
$result .= '<tr bgcolor="#ffffff"><td align="center" colspan="'.$numcols.'">No Changes Occurred For the Students Below</td></tr><tr bgcolor="#ffffde">'.$noupdate; |
$result .= '<tr bgcolor="#ffffff"><td align="center" colspan="'.$numcols.'">No Changes Occurred For the Students Below</td></tr><tr bgcolor="#ffffde">'.$noupdate; |
} |
} |
$result .= '</table></td></tr></table>'."\n". |
$result .= '</table></td></tr></table>'."\n". |
&show_grading_menu_form ($symb,$url); |
&show_grading_menu_form ($symb); |
my $msg = '<br /><b>Number of records updated = '.$rec_update. |
my $msg = '<br /><b>Number of records updated = '.$rec_update. |
' for '.$count.' student'.($count <= 1 ? '' : 's').'.</b><br />'. |
' for '.$count.' student'.($count <= 1 ? '' : 's').'.</b><br />'. |
'<b>Total number of students = '.$env{'form.total'}.'</b><br />'; |
'<b>Total number of students = '.$env{'form.total'}.'</b><br />'; |
Line 3223 ENDPICK
|
Line 3218 ENDPICK
|
} |
} |
|
|
sub csvuploadmap_header { |
sub csvuploadmap_header { |
my ($request,$symb,$url,$datatoken,$distotal)= @_; |
my ($request,$symb,$datatoken,$distotal)= @_; |
my $javascript; |
my $javascript; |
if ($env{'form.upfile_associate'} eq 'reverse') { |
if ($env{'form.upfile_associate'} eq 'reverse') { |
$javascript=&csvupload_javascript_reverse_associate(); |
$javascript=&csvupload_javascript_reverse_associate(); |
Line 3231 sub csvuploadmap_header {
|
Line 3226 sub csvuploadmap_header {
|
$javascript=&csvupload_javascript_forward_associate(); |
$javascript=&csvupload_javascript_forward_associate(); |
} |
} |
|
|
my ($result) = &showResourceInfo($url,$env{'form.probTitle'}); |
my ($result) = &showResourceInfo($symb,$env{'form.probTitle'}); |
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'); |
$request->print(<<ENDPICK); |
$request->print(<<ENDPICK); |
<form method="post" enctype="multipart/form-data" action="/adm/grades" name="gradesupload"> |
<form method="post" enctype="multipart/form-data" action="/adm/grades" name="gradesupload"> |
<h3><font color="#339933">Uploading Class Grades</font></h3> |
<h3><font color="#339933">Uploading Class Grades</font></h3> |
$result |
$result |
<hr> |
<hr /> |
<h3>Identify fields</h3> |
<h3>Identify fields</h3> |
Total number of records found in file: $distotal <hr /> |
Total number of records found in file: $distotal <hr /> |
Enter as many fields as you can. The system will inform you and bring you back |
Enter as many fields as you can. The system will inform you and bring you back |
Line 3253 to this page if the data selected is ins
|
Line 3248 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="url" value="$url" /> |
|
<input type="hidden" name="saveState" value="$env{'form.saveState'}" /> |
<input type="hidden" name="saveState" value="$env{'form.saveState'}" /> |
<input type="hidden" name="probTitle" value="$env{'form.probTitle'}" /> |
<input type="hidden" name="probTitle" value="$env{'form.probTitle'}" /> |
<input type="hidden" name="command" value="csvuploadoptions" /> |
<input type="hidden" name="command" value="csvuploadoptions" /> |
Line 3267 ENDPICK
|
Line 3261 ENDPICK
|
} |
} |
|
|
sub csvupload_fields { |
sub csvupload_fields { |
my ($url,$symb) = @_; |
my ($symb) = @_; |
my (@parts) = &getpartlist($url,$symb); |
my (@parts) = &getpartlist($symb); |
my @fields=(['ID','Student ID'], |
my @fields=(['ID','Student ID'], |
['username','Student Username'], |
['username','Student Username'], |
['domain','Student Domain']); |
['domain','Student Domain']); |
|
my (undef,undef,$url) = &Apache::lonnet::decode_symb($symb); |
foreach my $part (sort(@parts)) { |
foreach my $part (sort(@parts)) { |
my @datum; |
my @datum; |
my $display=&Apache::lonnet::metadata($url,$part.'.display'); |
my $display=&Apache::lonnet::metadata($url,$part.'.display'); |
Line 3314 CSVFORMJS
|
Line 3309 CSVFORMJS
|
|
|
sub upcsvScores_form { |
sub upcsvScores_form { |
my ($request) = shift; |
my ($request) = shift; |
my ($symb,$url)=&get_symb_and_url($request); |
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); |
$env{'form.probTitle'} = &Apache::lonnet::gettitle($symb); |
my ($table) = &showResourceInfo($url,$env{'form.probTitle'}); |
my ($table) = &showResourceInfo($symb,$env{'form.probTitle'}); |
$result.=$table; |
$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>Specify a file containing the class scores for current resource'. |
$result.=' <b>Specify a file containing the class scores for current resource'. |
'.</b></td></tr>'."\n"; |
'.</b></td></tr>'."\n"; |
$result.='<tr bgcolor=#ffffe6><td>'."\n"; |
$result.='<tr bgcolor=#ffffe6><td>'."\n"; |
Line 3330 sub upcsvScores_form {
|
Line 3325 sub upcsvScores_form {
|
$result.=<<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="url" value="$url" /> |
|
<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="probTitle" value="$env{'form.probTitle'}" /> |
<input type="hidden" name="saveState" value="$env{'form.saveState'}" /> |
<input type="hidden" name="saveState" value="$env{'form.saveState'}" /> |
Line 3341 $upfile_select
|
Line 3335 $upfile_select
|
ENDUPFORM |
ENDUPFORM |
$result.='</td></tr></table>'."\n"; |
$result.='</td></tr></table>'."\n"; |
$result.='</td></tr></table><br /><br />'."\n"; |
$result.='</td></tr></table><br /><br />'."\n"; |
$result.=&show_grading_menu_form($symb,$url); |
$result.=&show_grading_menu_form($symb); |
return $result; |
return $result; |
} |
} |
|
|
|
|
sub csvuploadmap { |
sub csvuploadmap { |
my ($request)= @_; |
my ($request)= @_; |
my ($symb,$url)=&get_symb_and_url($request); |
my ($symb)=&get_symb($request); |
if (!$symb) {return '';} |
if (!$symb) {return '';} |
|
|
my $datatoken; |
my $datatoken; |
Line 3360 sub csvuploadmap {
|
Line 3354 sub csvuploadmap {
|
} |
} |
my @records=&Apache::loncommon::upfile_record_sep(); |
my @records=&Apache::loncommon::upfile_record_sep(); |
if ($env{'form.noFirstLine'}) { shift(@records); } |
if ($env{'form.noFirstLine'}) { shift(@records); } |
&csvuploadmap_header($request,$symb,$url,$datatoken,$#records+1); |
&csvuploadmap_header($request,$symb,$datatoken,$#records+1); |
my ($i,$keyfields); |
my ($i,$keyfields); |
if (@records) { |
if (@records) { |
my @fields=&csvupload_fields($url,$symb); |
my @fields=&csvupload_fields($symb); |
|
|
if ($env{'form.upfile_associate'} eq 'reverse') { |
if ($env{'form.upfile_associate'} eq 'reverse') { |
&Apache::loncommon::csv_print_samples($request,\@records); |
&Apache::loncommon::csv_print_samples($request,\@records); |
Line 3385 sub csvuploadmap {
|
Line 3379 sub csvuploadmap {
|
} |
} |
} |
} |
&csvuploadmap_footer($request,$i,$keyfields); |
&csvuploadmap_footer($request,$i,$keyfields); |
$request->print(&show_grading_menu_form($symb,$url)); |
$request->print(&show_grading_menu_form($symb)); |
|
|
return ''; |
return ''; |
} |
} |
|
|
sub csvuploadoptions { |
sub csvuploadoptions { |
my ($request)= @_; |
my ($request)= @_; |
my ($symb,$url)=&get_symb_and_url($request); |
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 3430 ENDPICK
|
Line 3424 ENDPICK
|
# FIXME do a check for any invalid user ids?... |
# FIXME do a check for any invalid user ids?... |
$request->print('<input type="submit" value="Assign Grades" /><br /> |
$request->print('<input type="submit" value="Assign Grades" /><br /> |
<hr /></form>'."\n"); |
<hr /></form>'."\n"); |
$request->print(&show_grading_menu_form($symb,$url)); |
$request->print(&show_grading_menu_form($symb)); |
return ''; |
return ''; |
} |
} |
|
|
Line 3453 sub get_fields {
|
Line 3447 sub get_fields {
|
|
|
sub csvuploadassign { |
sub csvuploadassign { |
my ($request)= @_; |
my ($request)= @_; |
my ($symb,$url)=&get_symb_and_url($request); |
my ($symb)=&get_symb($request); |
if (!$symb) {return '';} |
if (!$symb) {return '';} |
&Apache::loncommon::load_tmp_file($request); |
&Apache::loncommon::load_tmp_file($request); |
my @gradedata = &Apache::loncommon::upfile_record_sep(); |
my @gradedata = &Apache::loncommon::upfile_record_sep(); |
Line 3543 sub csvuploadassign {
|
Line 3537 sub csvuploadassign {
|
} |
} |
$request->print("<br />Stored $countdone students\n"); |
$request->print("<br />Stored $countdone students\n"); |
if (@skipped) { |
if (@skipped) { |
$request->print('<p<font size="+1"><b>Skipped Students</b></font></p>'); |
$request->print('<p><font size="+1"><b>Skipped Students</b></font></p>'); |
foreach my $student (@skipped) { $request->print("$student<br />\n"); } |
foreach my $student (@skipped) { $request->print("$student<br />\n"); } |
} |
} |
if (@notallowed) { |
if (@notallowed) { |
Line 3551 sub csvuploadassign {
|
Line 3545 sub csvuploadassign {
|
foreach my $student (@notallowed) { $request->print("$student<br />\n"); } |
foreach my $student (@notallowed) { $request->print("$student<br />\n"); } |
} |
} |
$request->print("<br />\n"); |
$request->print("<br />\n"); |
$request->print(&show_grading_menu_form($symb,$url)); |
$request->print(&show_grading_menu_form($symb)); |
return ''; |
return ''; |
} |
} |
#------------- end of section for handling csv file upload --------- |
#------------- end of section for handling csv file upload --------- |
Line 3581 function checkPickOne(formname) {
|
Line 3575 function checkPickOne(formname) {
|
</script> |
</script> |
LISTJAVASCRIPT |
LISTJAVASCRIPT |
&commonJSfunctions($request); |
&commonJSfunctions($request); |
my ($symb,$url) = &get_symb_and_url($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 3603 LISTJAVASCRIPT
|
Line 3597 LISTJAVASCRIPT
|
'>'.$showtitle.'</option>'."\n"; |
'>'.$showtitle.'</option>'."\n"; |
$ctr++; |
$ctr++; |
} |
} |
$result.= '</select>'."<br>\n"; |
$result.= '</select>'."<br />\n"; |
$ctr=0; |
$ctr=0; |
foreach (@$titles) { |
foreach (@$titles) { |
my ($minder,$showtitle) = ($_ =~ /(\d+)\.(.*)/); |
my ($minder,$showtitle) = ($_ =~ /(\d+)\.(.*)/); |
Line 3625 LISTJAVASCRIPT
|
Line 3619 LISTJAVASCRIPT
|
$result.='<input type="hidden" name="section" value="'.$getsec.'" />'."\n". |
$result.='<input type="hidden" name="section" value="'.$getsec.'" />'."\n". |
'<input type="hidden" name="Status" value="'.$env{'form.Status'}.'" />'."\n". |
'<input type="hidden" name="Status" value="'.$env{'form.Status'}.'" />'."\n". |
'<input type="hidden" name="command" value="displayPage" />'."\n". |
'<input type="hidden" name="command" value="displayPage" />'."\n". |
'<input type="hidden" name="url" value="'.$url.'" />'."\n". |
|
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n". |
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n". |
'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."<br />\n"; |
'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."<br />\n"; |
|
|
Line 3634 LISTJAVASCRIPT
|
Line 3627 LISTJAVASCRIPT
|
|
|
$request->print($result); |
$request->print($result); |
|
|
my $studentTable.=' <b>Select a student you wish to grade and then click on the Next button.</b><br>'. |
my $studentTable.=' <b>Select a student you wish to grade and then click on the Next button.</b><br />'. |
'<table border="0"><tr><td bgcolor="#777777">'. |
'<table border="0"><tr><td bgcolor="#777777">'. |
'<table border="0"><tr bgcolor="#e6ffff">'. |
'<table border="0"><tr bgcolor="#e6ffff">'. |
'<td align="right"> <b>No.</b></td>'. |
'<td align="right"> <b>No.</b></td>'. |
Line 3664 LISTJAVASCRIPT
|
Line 3657 LISTJAVASCRIPT
|
$studentTable.='<input type="button" '. |
$studentTable.='<input type="button" '. |
'onClick="javascript:checkPickOne(this.form);"value="Next->" /></form>'."\n"; |
'onClick="javascript:checkPickOne(this.form);"value="Next->" /></form>'."\n"; |
|
|
$studentTable.=&show_grading_menu_form($symb,$url); |
$studentTable.=&show_grading_menu_form($symb); |
$request->print($studentTable); |
$request->print($studentTable); |
|
|
return ''; |
return ''; |
Line 3697 sub getSymbMap {
|
Line 3690 sub getSymbMap {
|
sub displayPage { |
sub displayPage { |
my ($request) = shift; |
my ($request) = shift; |
|
|
my ($symb,$url) = &get_symb_and_url($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 3715 sub displayPage {
|
Line 3708 sub displayPage {
|
|
|
if (!&canview($usec)) { |
if (!&canview($usec)) { |
$request->print('<font color="red">Unable to view requested student.('.$env{'form.student'}.')</font>'); |
$request->print('<font color="red">Unable to view requested student.('.$env{'form.student'}.')</font>'); |
$request->print(&show_grading_menu_form($symb,$url)); |
$request->print(&show_grading_menu_form($symb)); |
return; |
return; |
} |
} |
my $result='<h3><font color="#339933"> '.$env{'form.title'}.'</font></h3>'; |
my $result='<h3><font color="#339933"> '.$env{'form.title'}.'</font></h3>'; |
Line 3729 sub displayPage {
|
Line 3722 sub displayPage {
|
my $map = $navmap->getResourceByUrl($resUrl); # add to navmaps |
my $map = $navmap->getResourceByUrl($resUrl); # add to navmaps |
if (!$map) { |
if (!$map) { |
$request->print('<font color="red">Unable to view requested sequence. ('.$resUrl.')</font>'); |
$request->print('<font color="red">Unable to view requested sequence. ('.$resUrl.')</font>'); |
$request->print(&show_grading_menu_form($symb,$url)); |
$request->print(&show_grading_menu_form($symb)); |
return; |
return; |
} |
} |
my $iterator = $navmap->getIterator($map->map_start(), |
my $iterator = $navmap->getIterator($map->map_start(), |
Line 3741 sub displayPage {
|
Line 3734 sub displayPage {
|
'<input type="hidden" name="student" value="'.$env{'form.student'}.'" />'."\n". |
'<input type="hidden" name="student" value="'.$env{'form.student'}.'" />'."\n". |
'<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="url" value="'.$url.'" />'."\n". |
|
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n". |
'<input type="hidden" name="symb" value="'.$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"; |
'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."\n"; |
Line 3768 sub displayPage {
|
Line 3760 sub displayPage {
|
my $title = $curRes->compTitle(); |
my $title = $curRes->compTitle(); |
my $symbx = $curRes->symb(); |
my $symbx = $curRes->symb(); |
$studentTable.='<tr bgcolor="#ffffe6"><td align="center" valign="top" >'.$prob. |
$studentTable.='<tr bgcolor="#ffffe6"><td align="center" valign="top" >'.$prob. |
(scalar(@{$parts}) == 1 ? '' : '<br>('.scalar(@{$parts}).' parts)').'</td>'; |
(scalar(@{$parts}) == 1 ? '' : '<br />('.scalar(@{$parts}).' parts)').'</td>'; |
$studentTable.='<td valign="top">'; |
$studentTable.='<td valign="top">'; |
if ($env{'form.vProb'} eq 'yes' ) { |
if ($env{'form.vProb'} eq 'yes' ) { |
$studentTable.=&show_problem($request,$symbx,$uname,$udom,1, |
$studentTable.=&show_problem($request,$symbx,$uname,$udom,1, |
Line 3779 sub displayPage {
|
Line 3771 sub displayPage {
|
$companswer =~ s|</form>||g; |
$companswer =~ s|</form>||g; |
# while ($companswer =~ /(<a href\=\"javascript:newWindow.*?Script Vars<\/a>)/s) { #<a href="javascript:newWindow</a> |
# while ($companswer =~ /(<a href\=\"javascript:newWindow.*?Script Vars<\/a>)/s) { #<a href="javascript:newWindow</a> |
# $companswer =~ s/$1/ /ms; |
# $companswer =~ s/$1/ /ms; |
# $request->print('match='.$1."<br>\n"); |
# $request->print('match='.$1."<br />\n"); |
# } |
# } |
# $companswer =~ s|<table border=\"1\">|<table border=\"0\">|g; |
# $companswer =~ s|<table border=\"1\">|<table border=\"0\">|g; |
$studentTable.=' <b>'.$title.'</b> <br> <b>Correct answer:</b><br>'.$companswer; |
$studentTable.=' <b>'.$title.'</b> <br /> <b>Correct answer:</b><br />'.$companswer; |
} |
} |
|
|
my %record = &Apache::lonnet::restore($symbx,$env{'request.course.id'},$udom,$uname); |
my %record = &Apache::lonnet::restore($symbx,$env{'request.course.id'},$udom,$uname); |
Line 3829 sub displayPage {
|
Line 3821 sub displayPage {
|
'<input type="button" value="Save" '. |
'<input type="button" value="Save" '. |
'onClick="javascript:checkSubmitPage(this.form,'.$question.');" TARGET=_self />'. |
'onClick="javascript:checkSubmitPage(this.form,'.$question.');" TARGET=_self />'. |
'</form>'."\n"; |
'</form>'."\n"; |
$studentTable.=&show_grading_menu_form($symb,$url); |
$studentTable.=&show_grading_menu_form($symb); |
$request->print($studentTable); |
$request->print($studentTable); |
|
|
return ''; |
return ''; |
Line 3863 sub displaySubByDates {
|
Line 3855 sub displaySubByDates {
|
foreach my $partid (@{$parts}) { |
foreach my $partid (@{$parts}) { |
my @matchKey = sort(grep /^resource\.\Q$partid\E\..*?\.submission$/,@versionKeys); |
my @matchKey = sort(grep /^resource\.\Q$partid\E\..*?\.submission$/,@versionKeys); |
# next if ($$record{"$version:resource.$partid.solved"} eq ''); |
# next if ($$record{"$version:resource.$partid.solved"} eq ''); |
my $display_part=&get_display_part($partid,undef,$symb); |
my $display_part=&get_display_part($partid,$symb); |
foreach my $matchKey (@matchKey) { |
foreach my $matchKey (@matchKey) { |
if (exists($$record{$version.':'.$matchKey}) && |
if (exists($$record{$version.':'.$matchKey}) && |
$$record{$version.':'.$matchKey} ne '') { |
$$record{$version.':'.$matchKey} ne '') { |
Line 3925 sub updateGradeByPage {
|
Line 3917 sub updateGradeByPage {
|
my $usec=$classlist->{$env{'form.student'}}[5]; |
my $usec=$classlist->{$env{'form.student'}}[5]; |
if (!&canmodify($usec)) { |
if (!&canmodify($usec)) { |
$request->print('<font color="red">Unable to modify requested student.('.$env{'form.student'}.'</font>'); |
$request->print('<font color="red">Unable to modify requested student.('.$env{'form.student'}.'</font>'); |
$request->print(&show_grading_menu_form($env{'form.symb'},$env{'form.url'})); |
$request->print(&show_grading_menu_form($env{'form.symb'})); |
return; |
return; |
} |
} |
my $result='<h3><font color="#339933"> '.$env{'form.title'}.'</font></h3>'; |
my $result='<h3><font color="#339933"> '.$env{'form.title'}.'</font></h3>'; |
Line 3939 sub updateGradeByPage {
|
Line 3931 sub updateGradeByPage {
|
my $map = $navmap->getResourceByUrl($resUrl); # add to navmaps |
my $map = $navmap->getResourceByUrl($resUrl); # add to navmaps |
if (!$map) { |
if (!$map) { |
$request->print('<font color="red">Unable to grade requested sequence. ('.$resUrl.')</font>'); |
$request->print('<font color="red">Unable to grade requested sequence. ('.$resUrl.')</font>'); |
my ($symb,$url)=&get_symb_and_url($request); |
my ($symb)=&get_symb($request); |
$request->print(&show_grading_menu_form($symb,$url)); |
$request->print(&show_grading_menu_form($symb)); |
return; |
return; |
} |
} |
my $iterator = $navmap->getIterator($map->map_start(), |
my $iterator = $navmap->getIterator($map->map_start(), |
Line 3965 sub updateGradeByPage {
|
Line 3957 sub updateGradeByPage {
|
my $title = $curRes->compTitle(); |
my $title = $curRes->compTitle(); |
my $symbx = $curRes->symb(); |
my $symbx = $curRes->symb(); |
$studentTable.='<tr bgcolor="#ffffe6"><td align="center" valign="top" >'.$prob. |
$studentTable.='<tr bgcolor="#ffffe6"><td align="center" valign="top" >'.$prob. |
(scalar(@{$parts}) == 1 ? '' : '<br>('.scalar(@{$parts}).' parts)').'</td>'; |
(scalar(@{$parts}) == 1 ? '' : '<br />('.scalar(@{$parts}).' parts)').'</td>'; |
$studentTable.='<td valign="top"> <b>'.$title.'</b> </td>'; |
$studentTable.='<td valign="top"> <b>'.$title.'</b> </td>'; |
|
|
my %newrecord=(); |
my %newrecord=(); |
Line 4007 sub updateGradeByPage {
|
Line 3999 sub updateGradeByPage {
|
$aggregateflag = 1; |
$aggregateflag = 1; |
} |
} |
} |
} |
my $display_part=&get_display_part($partid,undef, |
my $display_part=&get_display_part($partid,$curRes->symb()); |
$curRes->symb()); |
|
my $oldstatus = $env{'form.solved'.$question.'_'.$partid}; |
my $oldstatus = $env{'form.solved'.$question.'_'.$partid}; |
$displayPts[0].=' <b>Part:</b> '.$display_part.' = '. |
$displayPts[0].=' <b>Part:</b> '.$display_part.' = '. |
(($oldstatus eq 'excused') ? 'excused' : $oldpts). |
(($oldstatus eq 'excused') ? 'excused' : $oldpts). |
' <br>'; |
' <br />'; |
$displayPts[1].=' <b>Part:</b> '.$display_part.' = '. |
$displayPts[1].=' <b>Part:</b> '.$display_part.' = '. |
(($score eq 'excused') ? 'excused' : $newpts). |
(($score eq 'excused') ? 'excused' : $newpts). |
' <br>'; |
' <br />'; |
|
|
$question++; |
$question++; |
next if ($dropMenu eq 'reset status' || ($newpts == $oldpts && $score ne 'excused')); |
next if ($dropMenu eq 'reset status' || ($newpts == $oldpts && $score ne 'excused')); |
Line 4047 sub updateGradeByPage {
|
Line 4038 sub updateGradeByPage {
|
} |
} |
|
|
$studentTable.='</td></tr></table></td></tr></table>'; |
$studentTable.='</td></tr></table></td></tr></table>'; |
$studentTable.=&show_grading_menu_form($env{'form.symb'},$env{'form.url'}); |
$studentTable.=&show_grading_menu_form($env{'form.symb'}); |
my $grademsg=($changeflag == 0 ? 'No score was changed or updated.' : |
my $grademsg=($changeflag == 0 ? 'No score was changed or updated.' : |
'The scores were changed for '. |
'The scores were changed for '. |
$changeflag.' problem'.($changeflag == 1 ? '.' : 's.')); |
$changeflag.' problem'.($changeflag == 1 ? '.' : 's.')); |
Line 4065 sub updateGradeByPage {
|
Line 4056 sub updateGradeByPage {
|
#------ start of section for handling grading by page/sequence --------- |
#------ start of section for handling grading by page/sequence --------- |
|
|
sub defaultFormData { |
sub defaultFormData { |
my ($symb,$url)=@_; |
my ($symb)=@_; |
return ' |
return ' |
<input type="hidden" name="symb" value="'.$symb.'" />'."\n". |
<input type="hidden" name="symb" value="'.$symb.'" />'."\n". |
'<input type="hidden" name="url" value="'.$url.'" />'."\n". |
|
'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."\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="probTitle" value="'.$env{'form.probTitle'}.'" />'."\n"; |
} |
} |
Line 4158 sub scantron_CODEunique {
|
Line 4148 sub scantron_CODEunique {
|
|
|
sub scantron_selectphase { |
sub scantron_selectphase { |
my ($r,$file2grade) = @_; |
my ($r,$file2grade) = @_; |
my ($symb,$url)=&get_symb_and_url($r); |
my ($symb)=&get_symb($r); |
if (!$symb) {return '';} |
if (!$symb) {return '';} |
my $sequence_selector=&getSequenceDropDown($r,$symb); |
my $sequence_selector=&getSequenceDropDown($r,$symb); |
my $default_form_data=&defaultFormData($symb,$url); |
my $default_form_data=&defaultFormData($symb); |
my $grading_menu_button=&show_grading_menu_form($symb,$url); |
my $grading_menu_button=&show_grading_menu_form($symb); |
my $file_selector=&scantron_uploads($file2grade); |
my $file_selector=&scantron_uploads($file2grade); |
my $format_selector=&scantron_scantab(); |
my $format_selector=&scantron_scantab(); |
my $CODE_selector=&scantron_CODElist(); |
my $CODE_selector=&scantron_CODElist(); |
Line 4233 SCANTRONFORM
|
Line 4223 SCANTRONFORM
|
<tr bgcolor="#ffffe6"> |
<tr bgcolor="#ffffe6"> |
<td> |
<td> |
SCANTRONFORM |
SCANTRONFORM |
my $default_form_data=&defaultFormData(&get_symb_and_url($r,1)); |
my $default_form_data=&defaultFormData(&get_symb($r,1)); |
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'}; |
$r->print(<<UPLOAD); |
$r->print(<<UPLOAD); |
Line 4674 STUFF
|
Line 4664 STUFF
|
|
|
sub scantron_do_warning { |
sub scantron_do_warning { |
my ($r)=@_; |
my ($r)=@_; |
my ($symb,$url)=&get_symb_and_url($r); |
my ($symb)=&get_symb($r); |
if (!$symb) {return '';} |
if (!$symb) {return '';} |
my $default_form_data=&defaultFormData($symb,$url); |
my $default_form_data=&defaultFormData($symb); |
$r->print(&scantron_form_start().$default_form_data); |
$r->print(&scantron_form_start().$default_form_data); |
if ( $env{'form.selectpage'} eq '' || |
if ( $env{'form.selectpage'} eq '' || |
$env{'form.scantron_selectfile'} eq '' || |
$env{'form.scantron_selectfile'} eq '' || |
Line 4699 $warning
|
Line 4689 $warning
|
<input type="hidden" name="command" value="scantron_validate" /> |
<input type="hidden" name="command" value="scantron_validate" /> |
STUFF |
STUFF |
} |
} |
$r->print("</form><br />".&show_grading_menu_form($symb,$url)."</body></html>"); |
$r->print("</form><br />".&show_grading_menu_form($symb)."</body></html>"); |
return ''; |
return ''; |
} |
} |
|
|
Line 4721 SCANTRONFORM
|
Line 4711 SCANTRONFORM
|
|
|
sub scantron_validate_file { |
sub scantron_validate_file { |
my ($r) = @_; |
my ($r) = @_; |
my ($symb,$url)=&get_symb_and_url($r); |
my ($symb)=&get_symb($r); |
if (!$symb) {return '';} |
if (!$symb) {return '';} |
my $default_form_data=&defaultFormData($symb,$url); |
my $default_form_data=&defaultFormData($symb); |
|
|
# do the detection of only doing skipped records first befroe we delete |
# do the detection of only doing skipped records first befroe we delete |
# them when doing the corrections reset |
# them when doing the corrections reset |
Line 4791 STUFF
|
Line 4781 STUFF
|
$r->print("<input type='submit' value='Skip' name='scantron_skip_record' />"); |
$r->print("<input type='submit' value='Skip' name='scantron_skip_record' />"); |
$r->print(" this scanline saving it for later."); |
$r->print(" this scanline saving it for later."); |
} |
} |
$r->print(" </form><br />".&show_grading_menu_form($symb,$url). |
$r->print(" </form><br />".&show_grading_menu_form($symb). |
"</body></html>"); |
"</body></html>"); |
return ''; |
return ''; |
} |
} |
Line 5308 sub scantron_validate_missingbubbles {
|
Line 5298 sub scantron_validate_missingbubbles {
|
sub scantron_process_students { |
sub scantron_process_students { |
my ($r) = @_; |
my ($r) = @_; |
my (undef,undef,$sequence)=&Apache::lonnet::decode_symb($env{'form.selectpage'}); |
my (undef,undef,$sequence)=&Apache::lonnet::decode_symb($env{'form.selectpage'}); |
my ($symb,$url)=&get_symb_and_url($r); |
my ($symb)=&get_symb($r); |
if (!$symb) {return '';} |
if (!$symb) {return '';} |
my $default_form_data=&defaultFormData($symb,$url); |
my $default_form_data=&defaultFormData($symb); |
|
|
my %scantron_config=&get_scantron_config($env{'form.scantron_format'}); |
my %scantron_config=&get_scantron_config($env{'form.scantron_format'}); |
my ($scanlines,$scan_data)=&scantron_getfile(); |
my ($scanlines,$scan_data)=&scantron_getfile(); |
Line 5399 SCANTRONFORM
|
Line 5389 SCANTRONFORM
|
# $r->print("<p>took $lasttime</p>"); |
# $r->print("<p>took $lasttime</p>"); |
|
|
$r->print("</form>"); |
$r->print("</form>"); |
$r->print(&show_grading_menu_form($symb,$url)); |
$r->print(&show_grading_menu_form($symb)); |
return ''; |
return ''; |
} |
} |
|
|
Line 5411 sub scantron_upload_scantron_data {
|
Line 5401 sub scantron_upload_scantron_data {
|
'coursename'); |
'coursename'); |
my $domsel=&Apache::loncommon::select_dom_form($env{'request.role.domain'}, |
my $domsel=&Apache::loncommon::select_dom_form($env{'request.role.domain'}, |
'domainid'); |
'domainid'); |
my $default_form_data=&defaultFormData(&get_symb_and_url($r,1)); |
my $default_form_data=&defaultFormData(&get_symb($r,1)); |
$r->print(<<UPLOAD); |
$r->print(<<UPLOAD); |
<script type="text/javascript" language="javascript"> |
<script type="text/javascript" language="javascript"> |
function checkUpload(formname) { |
function checkUpload(formname) { |
Line 5441 UPLOAD
|
Line 5431 UPLOAD
|
|
|
sub scantron_upload_scantron_data_save { |
sub scantron_upload_scantron_data_save { |
my($r)=@_; |
my($r)=@_; |
my ($symb,$url)=&get_symb_and_url($r,1); |
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 5452 sub scantron_upload_scantron_data_save {
|
Line 5442 sub scantron_upload_scantron_data_save {
|
$env{'form.domainid'}.'_'.$env{'form.courseid'})) { |
$env{'form.domainid'}.'_'.$env{'form.courseid'})) { |
$r->print("You are not allowed to upload Scantron data to the requested course.<br />"); |
$r->print("You are not allowed to upload Scantron data to the requested course.<br />"); |
if ($symb) { |
if ($symb) { |
$r->print(&show_grading_menu_form($symb,$url)); |
$r->print(&show_grading_menu_form($symb)); |
} else { |
} else { |
$r->print($doanotherupload); |
$r->print($doanotherupload); |
} |
} |
Line 5505 sub valid_file {
|
Line 5495 sub valid_file {
|
|
|
sub scantron_download_scantron_data { |
sub scantron_download_scantron_data { |
my ($r)=@_; |
my ($r)=@_; |
my $default_form_data=&defaultFormData(&get_symb_and_url($r,1)); |
my $default_form_data=&defaultFormData(&get_symb($r,1)); |
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 5515 sub scantron_download_scantron_data {
|
Line 5505 sub scantron_download_scantron_data {
|
The requested file name was invalid. |
The requested file name was invalid. |
</p> |
</p> |
ERROR |
ERROR |
$r->print(&show_grading_menu_form(&get_symb_and_url($r,1))); |
$r->print(&show_grading_menu_form(&get_symb($r,1))); |
return; |
return; |
} |
} |
my $orig='/uploaded/'.$cdom.'/'.$cname.'/scantron_orig_'.$file; |
my $orig='/uploaded/'.$cdom.'/'.$cname.'/scantron_orig_'.$file; |
Line 5535 ERROR
|
Line 5525 ERROR
|
<a href="$skipped">Skipped</a>, a file of records that were skipped. |
<a href="$skipped">Skipped</a>, a file of records that were skipped. |
</p> |
</p> |
DOWNLOAD |
DOWNLOAD |
$r->print(&show_grading_menu_form(&get_symb_and_url($r,1))); |
$r->print(&show_grading_menu_form(&get_symb($r,1))); |
return ''; |
return ''; |
} |
} |
|
|
Line 5547 DOWNLOAD
|
Line 5537 DOWNLOAD
|
# |
# |
#--- Show a Grading Menu button - Calls the next routine --- |
#--- Show a Grading Menu button - Calls the next routine --- |
sub show_grading_menu_form { |
sub show_grading_menu_form { |
my ($symb,$url)=@_; |
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="'.$symb.'" />'."\n". |
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n". |
'<input type="hidden" name="url" value="'.$url.'" />'."\n". |
|
'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."\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="Grading Menu" />'."\n". |
'<input type="submit" name="submit" value="Grading Menu" />'."\n". |
Line 5573 sub savedState {
|
Line 5562 sub savedState {
|
#--- Displays the main menu page ------- |
#--- Displays the main menu page ------- |
sub gradingmenu { |
sub gradingmenu { |
my ($request) = @_; |
my ($request) = @_; |
my ($symb,$url)=&get_symb_and_url($request); |
my ($symb)=&get_symb($request); |
if (!$symb) {return '';} |
if (!$symb) {return '';} |
my $probTitle = &Apache::lonnet::gettitle($symb); |
my $probTitle = &Apache::lonnet::gettitle($symb); |
|
|
Line 5615 sub gradingmenu {
|
Line 5604 sub gradingmenu {
|
GRADINGMENUJS |
GRADINGMENUJS |
&commonJSfunctions($request); |
&commonJSfunctions($request); |
my $result='<h3> <font color="#339933">Manual Grading/View Submission</font></h3>'; |
my $result='<h3> <font color="#339933">Manual Grading/View Submission</font></h3>'; |
my ($table,undef,$hdgrade) = &showResourceInfo($url,$probTitle); |
my ($table,undef,$hdgrade) = &showResourceInfo($symb,$probTitle); |
$result.=$table; |
$result.=$table; |
my (undef,$sections) = &getclasslist('all','0'); |
my (undef,$sections) = &getclasslist('all','0'); |
my $savedState = &savedState(); |
my $savedState = &savedState(); |
Line 5626 GRADINGMENUJS
|
Line 5615 GRADINGMENUJS
|
|
|
$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="'.$symb.'" />'."\n". |
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n". |
'<input type="hidden" name="url" value="'.$url.'" />'."\n". |
|
'<input type="hidden" name="handgrade" value="'.$hdgrade.'" />'."\n". |
'<input type="hidden" name="handgrade" value="'.$hdgrade.'" />'."\n". |
'<input type="hidden" name="probTitle" value="'.$probTitle.'" />'."\n". |
'<input type="hidden" name="probTitle" value="'.$probTitle.'" />'."\n". |
'<input type="hidden" name="command" value="" />'."\n". |
'<input type="hidden" name="command" value="" />'."\n". |
Line 5634 GRADINGMENUJS
|
Line 5622 GRADINGMENUJS
|
'<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.='<table width="100%" border=0><tr><td bgcolor=#777777>'."\n". |
$result.='<table width="100%" border="0"><tr><td bgcolor=#777777>'."\n". |
'<table width=100% border=0><tr bgcolor="#e6ffff"><td colspan="2">'."\n". |
'<table width="100%" border="0"><tr bgcolor="#e6ffff"><td colspan="2">'."\n". |
' <b>Select a Grading/Viewing Option</b></td></tr>'."\n". |
' <b>Select a Grading/Viewing Option</b></td></tr>'."\n". |
'<tr bgcolor="#ffffe6" valign="top"><td>'."\n"; |
'<tr bgcolor="#ffffe6" valign="top"><td>'."\n"; |
|
|
$result.='<table width="100%" border=0>'; |
$result.='<table width="100%" border="0">'; |
$result.='<tr bgcolor="#ffffe6" valign="top"><td>'."\n". |
$result.='<tr bgcolor="#ffffe6" valign="top"><td>'."\n". |
' '.&mt('Select Section').': <select name="section">'."\n"; |
' '.&mt('Select Section').': <select name="section">'."\n"; |
if (ref($sections)) { |
if (ref($sections)) { |
Line 5656 GRADINGMENUJS
|
Line 5644 GRADINGMENUJS
|
|
|
$result.='<tr bgcolor="#ffffe6"valign="top"><td><label>'. |
$result.='<tr bgcolor="#ffffe6"valign="top"><td><label>'. |
'<input type="radio" name="radioChoice" value="submission" '. |
'<input type="radio" name="radioChoice" value="submission" '. |
($saveCmd eq 'submission' ? 'checked' : '').'> '.'<b>'.&mt('Current Resource').':</b> '.&mt('For one or more students'). |
($saveCmd eq 'submission' ? 'checked' : '').' /> '.'<b>'.&mt('Current Resource').':</b> '.&mt('For one or more students'). |
'</label> <select name="submitonly">'. |
'</label> <select name="submitonly">'. |
'<option value="yes" '. |
'<option value="yes" '. |
($saveSub eq 'yes' ? 'selected="on"' : '').'>'.&mt('with submissions').'</option>'. |
($saveSub eq 'yes' ? 'selected="on"' : '').' />'.&mt('with submissions').'</option>'. |
'<option value="queued" '. |
'<option value="queued" '. |
($saveSub eq 'queued' ? 'selected="on"' : '').'>'.&mt('in grading queue').'</option>'. |
($saveSub eq 'queued' ? 'selected="on"' : '').' />'.&mt('in grading queue').'</option>'. |
'<option value="graded" '. |
'<option value="graded" '. |
($saveSub eq 'graded' ? 'selected="on"' : '').'>'.&mt('with ungraded submissions').'</option>'. |
($saveSub eq 'graded' ? 'selected="on"' : '').' />'.&mt('with ungraded submissions').'</option>'. |
'<option value="incorrect" '. |
'<option value="incorrect" '. |
($saveSub eq 'incorrect' ? 'selected="on"' : '').'>'.&mt('with incorrect submissions').'</option>'. |
($saveSub eq 'incorrect' ? 'selected="on"' : '').' />'.&mt('with incorrect submissions').'</option>'. |
'<option value="all" '. |
'<option value="all" '. |
($saveSub eq 'all' ? 'selected="on"' : '').'>'.&mt('with any status').'</option></select></td></tr>'."\n"; |
($saveSub eq 'all' ? 'selected="on"' : '').' />'.&mt('with any status').'</option></select></td></tr>'."\n"; |
|
|
$result.='<tr bgcolor="#ffffe6"valign="top"><td>'. |
$result.='<tr bgcolor="#ffffe6"valign="top"><td>'. |
'<label><input type="radio" name="radioChoice" value="viewgrades" '. |
'<label><input type="radio" name="radioChoice" value="viewgrades" '. |
($saveCmd eq 'viewgrades' ? 'checked' : '').'> '. |
($saveCmd eq 'viewgrades' ? 'checked' : '').' /> '. |
'<b>Current Resource:</b> For all students in selected section or course</label></td></tr>'."\n"; |
'<b>Current Resource:</b> For all students in selected section or course</label></td></tr>'."\n"; |
|
|
$result.='<tr bgcolor="#ffffe6" valign="top"><td>'. |
$result.='<tr bgcolor="#ffffe6" valign="top"><td>'. |
'<label><input type="radio" name="radioChoice" value="pickStudentPage" '. |
'<label><input type="radio" name="radioChoice" value="pickStudentPage" '. |
($saveCmd eq 'pickStudentPage' ? 'checked' : '').'> '. |
($saveCmd eq 'pickStudentPage' ? 'checked' : '').' /> '. |
'The <b>complete</b> set/page/sequence: For one student</label></td></tr>'."\n"; |
'The <b>complete</b> set/page/sequence: For one student</label></td></tr>'."\n"; |
|
|
$result.='<tr bgcolor="#ffffe6"><td><br />'. |
$result.='<tr bgcolor="#ffffe6"><td><br />'. |
Line 5685 GRADINGMENUJS
|
Line 5673 GRADINGMENUJS
|
|
|
$result.='</td><td valign="top">'; |
$result.='</td><td valign="top">'; |
|
|
$result.='<table width="100%" border=0>'; |
$result.='<table width="100%" border="0">'; |
$result.='<tr bgcolor="#ffffe6"><td>'. |
$result.='<tr bgcolor="#ffffe6"><td>'. |
'<input type="button" onClick="javascript:checkChoice(this.form,\'3\',\'csvform\');" value="'.&mt('Upload').'" />'. |
'<input type="button" onClick="javascript:checkChoice(this.form,\'3\',\'csvform\');" value="'.&mt('Upload').'" />'. |
' '.&mt('scores from file').' </td></tr>'."\n"; |
' '.&mt('scores from file').' </td></tr>'."\n"; |
Line 5699 GRADINGMENUJS
|
Line 5687 GRADINGMENUJS
|
'<input type="button" onClick="javascript:checkChoice(this.form,\'5\',\'verify\');" value="'.&mt('Verify').'" />'. |
'<input type="button" onClick="javascript:checkChoice(this.form,\'5\',\'verify\');" value="'.&mt('Verify').'" />'. |
' '.&mt('receipt').': '. |
' '.&mt('receipt').': '. |
&Apache::lonnet::recprefix($env{'request.course.id'}). |
&Apache::lonnet::recprefix($env{'request.course.id'}). |
'-<input type="text" name="receipt" size="4" onChange="javascript:checkReceiptNo(this.form,\'OK\')">'. |
'-<input type="text" name="receipt" size="4" onChange="javascript:checkReceiptNo(this.form,\'OK\')" />'. |
'</td></tr>'."\n"; |
'</td></tr>'."\n"; |
} |
} |
$result.='<tr bgcolor="#ffffe6"valign="top"><td colspan="2">'. |
$result.='<tr bgcolor="#ffffe6"valign="top"><td colspan="2">'. |
Line 5749 sub handler {
|
Line 5737 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 $url=$env{'form.url'}; |
my $symb=&get_symb($request,1); |
my $symb=$env{'form.symb'}; |
|
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]; |
if ($#commands > 0) { |
if ($#commands > 0) { |
&Apache::lonnet::logthis("grades got multiple commands ".join(':',@commands)); |
&Apache::lonnet::logthis("grades got multiple commands ".join(':',@commands)); |
} |
} |
if (!$url) { |
|
my ($temp1,$temp2); |
|
($temp1,$temp2,$env{'form.url'})=&Apache::lonnet::decode_symb($symb); |
|
$url = $env{'form.url'}; |
|
} |
|
&send_header($request); |
&send_header($request); |
if ($url eq '' && $symb eq '' && $command eq '') { |
if ($symb eq '' && $command eq '') { |
if ($env{'user.adv'}) { |
if ($env{'user.adv'}) { |
if (($env{'form.codeone'}) && ($env{'form.codetwo'}) && |
if (($env{'form.codeone'}) && ($env{'form.codetwo'}) && |
($env{'form.codethree'})) { |
($env{'form.codethree'})) { |