version 1.596.2.12.2.25, 2013/12/30 15:31:00
|
version 1.596.2.12.2.38, 2016/10/24 22:31:06
|
Line 391 sub cleanRecord {
|
Line 391 sub cleanRecord {
|
my $grayFont = '<span class="LC_internal_info">'; |
my $grayFont = '<span class="LC_internal_info">'; |
if ($response =~ /^(option|rank)$/) { |
if ($response =~ /^(option|rank)$/) { |
my %answer=&Apache::lonnet::str2hash($answer); |
my %answer=&Apache::lonnet::str2hash($answer); |
|
my @answer = %answer; |
|
%answer = map {&HTML::Entities::encode($_, '"<>&')} @answer; |
my %grading=&Apache::lonnet::str2hash($record->{$version."resource.$partid.$respid.submissiongrading"}); |
my %grading=&Apache::lonnet::str2hash($record->{$version."resource.$partid.$respid.submissiongrading"}); |
my ($toprow,$bottomrow); |
my ($toprow,$bottomrow); |
foreach my $foil (@$order) { |
foreach my $foil (@$order) { |
Line 407 sub cleanRecord {
|
Line 409 sub cleanRecord {
|
$bottomrow.'</tr></table></blockquote>'; |
$bottomrow.'</tr></table></blockquote>'; |
} elsif ($response eq 'match') { |
} elsif ($response eq 'match') { |
my %answer=&Apache::lonnet::str2hash($answer); |
my %answer=&Apache::lonnet::str2hash($answer); |
|
my @answer = %answer; |
|
%answer = map {&HTML::Entities::encode($_, '"<>&')} @answer; |
my %grading=&Apache::lonnet::str2hash($record->{$version."resource.$partid.$respid.submissiongrading"}); |
my %grading=&Apache::lonnet::str2hash($record->{$version."resource.$partid.$respid.submissiongrading"}); |
my @items=&Apache::lonnet::str2array($record->{$version."resource.$partid.$respid.submissionitems"}); |
my @items=&Apache::lonnet::str2array($record->{$version."resource.$partid.$respid.submissionitems"}); |
my ($toprow,$middlerow,$bottomrow); |
my ($toprow,$middlerow,$bottomrow); |
Line 461 sub cleanRecord {
|
Line 465 sub cleanRecord {
|
$env{'form.kwstyle'} = $keyhash{$loginuser.'_kwstyle'} ne '' ? $keyhash{$loginuser.'_kwstyle'} : ''; |
$env{'form.kwstyle'} = $keyhash{$loginuser.'_kwstyle'} ne '' ? $keyhash{$loginuser.'_kwstyle'} : ''; |
$env{'form.'.$symb} = 1; # so that we don't have to read it from disk for multiple sub of the same prob. |
$env{'form.'.$symb} = 1; # so that we don't have to read it from disk for multiple sub of the same prob. |
} |
} |
$answer =~ s-\n-<br />-g; |
|
return '<br /><br /><blockquote><tt>'.&keywords_highlight($answer).'</tt></blockquote>'; |
return '<br /><br /><blockquote><tt>'.&keywords_highlight($answer).'</tt></blockquote>'; |
} elsif ( $response eq 'organic') { |
} elsif ( $response eq 'organic') { |
my $result='Smile representation: "<tt>'.$answer.'</tt>"'; |
my $result=&mt('Smile representation: [_1]', |
|
'"<tt>'.&HTML::Entities::encode($answer, '"<>&').'</tt>"'); |
my $jme=$record->{$version."resource.$partid.$respid.molecule"}; |
my $jme=$record->{$version."resource.$partid.$respid.molecule"}; |
$result.=&Apache::chemresponse::jme_img($jme,$answer,400); |
$result.=&Apache::chemresponse::jme_img($jme,$answer,400); |
return $result; |
return $result; |
Line 498 sub cleanRecord {
|
Line 502 sub cleanRecord {
|
$result.='</ul>'; |
$result.='</ul>'; |
return $result; |
return $result; |
} |
} |
} elsif ( $response =~ m/(?:numerical|formula)/) { |
} elsif ( $response =~ m/(?:numerical|formula|custom)/) { |
|
# Respect multiple input fields, see Bug #5409 |
$answer = |
$answer = |
&Apache::loncommon::format_previous_attempt_value('submission', |
&Apache::loncommon::format_previous_attempt_value('submission', |
$answer); |
$answer); |
|
return $answer; |
} |
} |
return $answer; |
return &HTML::Entities::encode($answer, '"<>&'); |
} |
} |
|
|
#-- A couple of common js functions |
#-- A couple of common js functions |
Line 908 sub listStudents {
|
Line 914 sub listStudents {
|
|
|
my ($table,undef,$hdgrade,$partlist,$handgrade) = &showResourceInfo($symb,$env{'form.probTitle'},($env{'form.showgrading'} eq 'yes')); |
my ($table,undef,$hdgrade,$partlist,$handgrade) = &showResourceInfo($symb,$env{'form.probTitle'},($env{'form.showgrading'} eq 'yes')); |
|
|
my %lt = &Apache::lonlocal::texthash ( |
my %js_lt = &Apache::lonlocal::texthash ( |
'multiple' => 'Please select a student or group of students before clicking on the Next button.', |
'multiple' => 'Please select a student or group of students before clicking on the Next button.', |
'single' => 'Please select the student before clicking on the Next button.', |
'single' => 'Please select the student before clicking on the Next button.', |
); |
); |
|
&js_escape(\%js_lt); |
$request->print(<<LISTJAVASCRIPT); |
$request->print(<<LISTJAVASCRIPT); |
<script type="text/javascript" language="javascript"> |
<script type="text/javascript" language="javascript"> |
function checkSelect(checkBox) { |
function checkSelect(checkBox) { |
Line 923 sub listStudents {
|
Line 930 sub listStudents {
|
ctr++; |
ctr++; |
} |
} |
} |
} |
sense = '$lt{'multiple'}'; |
sense = '$js_lt{'multiple'}'; |
} else { |
} else { |
if (checkBox.checked) { |
if (checkBox.checked) { |
ctr = 1; |
ctr = 1; |
} |
} |
sense = '$lt{'single'}'; |
sense = '$js_lt{'single'}'; |
} |
} |
if (ctr == 0) { |
if (ctr == 0) { |
alert(sense); |
alert(sense); |
Line 1247 sub processGroup {
|
Line 1254 sub processGroup {
|
#--- Javascript to handle the submission page functionality --- |
#--- Javascript to handle the submission page functionality --- |
sub sub_page_js { |
sub sub_page_js { |
my $request = shift; |
my $request = shift; |
my $alertmsg = &mt('A number equal or greater than 0 is expected. Entered value = '); |
my $alertmsg = &mt('A number equal or greater than 0 is expected. Entered value = '); |
|
&js_escape(\$alertmsg); |
$request->print(<<SUBJAVASCRIPT); |
$request->print(<<SUBJAVASCRIPT); |
<script type="text/javascript" language="javascript"> |
<script type="text/javascript" language="javascript"> |
function updateRadio(formname,id,weight) { |
function updateRadio(formname,id,weight) { |
Line 1366 sub sub_page_js {
|
Line 1374 sub sub_page_js {
|
} |
} |
} |
} |
} |
} |
|
|
} |
} |
} |
} |
|
|
} |
} |
if (val == "Grade Student") { |
if (val == "Grade Student") { |
formname.showgrading.value = "yes"; |
formname.showgrading.value = "yes"; |
Line 1503 INNERJS
|
Line 1509 INNERJS
|
|
|
my $docopen=&Apache::lonhtmlcommon::javascript_docopen(); |
my $docopen=&Apache::lonhtmlcommon::javascript_docopen(); |
$docopen=~s/^document\.//; |
$docopen=~s/^document\.//; |
my %lt = &Apache::lonlocal::texthash( |
my %js_lt = &Apache::lonlocal::texthash( |
keyw => 'Keywords list, separated by a space. Add/delete to list if desired.', |
keyw => 'Keywords list, separated by a space. Add/delete to list if desired.', |
plse => 'Please select a word or group of words from document and then click this link.', |
plse => 'Please select a word or group of words from document and then click this link.', |
adds => 'Add selection to keyword list? Edit if desired.', |
adds => 'Add selection to keyword list? Edit if desired.', |
|
col1 => 'red', |
|
col2 => 'green', |
|
col3 => 'blue', |
|
siz1 => 'normal', |
|
siz2 => '+1', |
|
siz3 => '+2', |
|
sty1 => 'normal', |
|
sty2 => 'italic', |
|
sty3 => 'bold', |
|
); |
|
my %html_js_lt = &Apache::lonlocal::texthash( |
comp => 'Compose Message for: ', |
comp => 'Compose Message for: ', |
incl => 'Include', |
incl => 'Include', |
type => 'Type', |
type => 'Type', |
Line 1520 INNERJS
|
Line 1537 INNERJS
|
font => 'Font Size', |
font => 'Font Size', |
fnst => 'Font Style', |
fnst => 'Font Style', |
); |
); |
|
&js_escape(\%js_lt); |
|
&html_escape(\%html_js_lt); |
|
&js_escape(\%html_js_lt); |
$request->print(<<SUBJAVASCRIPT); |
$request->print(<<SUBJAVASCRIPT); |
<script type="text/javascript" language="javascript"> |
<script type="text/javascript" language="javascript"> |
|
|
//===================== Show list of keywords ==================== |
//===================== Show list of keywords ==================== |
function keywords(formname) { |
function keywords(formname) { |
var nret = prompt("$lt{'keyw'}",formname.keywords.value); |
var nret = prompt("$js_lt{'keyw'}",formname.keywords.value); |
if (nret==null) return; |
if (nret==null) return; |
formname.keywords.value = nret; |
formname.keywords.value = nret; |
|
|
Line 1552 INNERJS
|
Line 1572 INNERJS
|
else return; |
else return; |
var cleantxt = txt.replace(new RegExp('([\\f\\n\\r\\t\\v ])+', 'g')," "); |
var cleantxt = txt.replace(new RegExp('([\\f\\n\\r\\t\\v ])+', 'g')," "); |
if (cleantxt=="") { |
if (cleantxt=="") { |
alert("$lt{'plse'}"); |
alert("$js_lt{'plse'}"); |
return; |
return; |
} |
} |
var nret = prompt("$lt{'adds'}",cleantxt); |
var nret = prompt("$js_lt{'adds'}",cleantxt); |
if (nret==null) return; |
if (nret==null) return; |
document.SCORE.keywords.value = document.SCORE.keywords.value+" "+nret; |
document.SCORE.keywords.value = document.SCORE.keywords.value+" "+nret; |
if (document.SCORE.keywords.value != "") { |
if (document.SCORE.keywords.value != "") { |
Line 1635 INNERJS
|
Line 1655 INNERJS
|
|
|
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("<h3><span class=\\"LC_info\\"> $lt{'comp'}\"+fullname+\"<\\/span><\\/h3><br /><br />"); |
pDoc.write("<h3><span class=\\"LC_info\\"> $html_js_lt{'comp'}\"+fullname+\"<\\/span><\\/h3><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">'); |
pDoc.write("<td><b>$lt{'type'}<\\/b><\\/td><td><b>$lt{'incl'}<\\/b><\\/td><td><b>$lt{'mesa'}<\\/td><\\/tr>"); |
pDoc.write("<td><b>$html_js_lt{'type'}<\\/b><\\/td><td><b>$html_js_lt{'incl'}<\\/b><\\/td><td><b>$html_js_lt{'mesa'}<\\/td><\\/tr>"); |
} |
} |
function displaySubject(msg,shwsel) { |
function displaySubject(msg,shwsel) { |
pDoc = pWin.document; |
pDoc = pWin.document; |
pDoc.write("<tr bgcolor=\\"#ffffdd\\">"); |
pDoc.write("<tr bgcolor=\\"#ffffdd\\">"); |
pDoc.write("<td>$lt{'subj'}<\\/td>"); |
pDoc.write("<td>$html_js_lt{'subj'}<\\/td>"); |
pDoc.write("<td align=\\"center\\"><input name=\\"subchk\\" type=\\"checkbox\\"" +shwsel+"><\\/td>"); |
pDoc.write("<td align=\\"center\\"><input name=\\"subchk\\" type=\\"checkbox\\"" +shwsel+"><\\/td>"); |
pDoc.write("<td><input name=\\"msgsub\\" type=\\"text\\" value=\\""+msg+"\\"size=\\"60\\" maxlength=\\"80\\"><\\/td><\\/tr>"); |
pDoc.write("<td><input name=\\"msgsub\\" type=\\"text\\" value=\\""+msg+"\\"size=\\"60\\" maxlength=\\"80\\"><\\/td><\\/tr>"); |
} |
} |
Line 1660 INNERJS
|
Line 1680 INNERJS
|
function newMsg(newmsg,shwsel) { |
function newMsg(newmsg,shwsel) { |
pDoc = pWin.document; |
pDoc = pWin.document; |
pDoc.write("<tr bgcolor=\\"#ffffdd\\">"); |
pDoc.write("<tr bgcolor=\\"#ffffdd\\">"); |
pDoc.write("<td align=\\"center\\">$lt{'new'}<\\/td>"); |
pDoc.write("<td align=\\"center\\">$html_js_lt{'new'}<\\/td>"); |
pDoc.write("<td align=\\"center\\"><input name=\\"newmsgchk\\" type=\\"checkbox\\"" +shwsel+"><\\/td>"); |
pDoc.write("<td align=\\"center\\"><input name=\\"newmsgchk\\" type=\\"checkbox\\"" +shwsel+"><\\/td>"); |
pDoc.write("<td><textarea name=\\"newmsg\\" cols=\\"60\\" rows=\\"3\\" onchange=\\"javascript:this.form.newmsgchk.checked=true\\" >"+newmsg+"<\\/textarea><\\/td><\\/tr>"); |
pDoc.write("<td><textarea name=\\"newmsg\\" cols=\\"60\\" rows=\\"3\\" onchange=\\"javascript:this.form.newmsgchk.checked=true\\" >"+newmsg+"<\\/textarea><\\/td><\\/tr>"); |
} |
} |
Line 1669 INNERJS
|
Line 1689 INNERJS
|
pDoc = pWin.document; |
pDoc = pWin.document; |
pDoc.write("<\\/table>"); |
pDoc.write("<\\/table>"); |
pDoc.write("<\\/td><\\/tr><\\/table> "); |
pDoc.write("<\\/td><\\/tr><\\/table> "); |
pDoc.write("<input type=\\"button\\" value=\\"$lt{'save'}\\" onclick=\\"javascript:checkInput()\\"> "); |
pDoc.write("<input type=\\"button\\" value=\\"$html_js_lt{'save'}\\" onclick=\\"javascript:checkInput()\\"> "); |
pDoc.write("<input type=\\"button\\" value=\\"$lt{'canc'}\\" onclick=\\"self.close()\\"><br /><br />"); |
pDoc.write("<input type=\\"button\\" value=\\"$html_js_lt{'canc'}\\" onclick=\\"self.close()\\"><br /><br />"); |
pDoc.write("<\\/form>"); |
pDoc.write("<\\/form>"); |
pDoc.write('$end_page_msg_central'); |
pDoc.write('$end_page_msg_central'); |
pDoc.close(); |
pDoc.close(); |
Line 1684 INNERJS
|
Line 1704 INNERJS
|
var redsel = ""; |
var redsel = ""; |
var grnsel = ""; |
var grnsel = ""; |
var blusel = ""; |
var blusel = ""; |
if (kwclr=="red") {var redsel="checked"}; |
var txtcol1 = "$js_lt{'col1'}"; |
if (kwclr=="green") {var grnsel="checked"}; |
var txtcol2 = "$js_lt{'col2'}"; |
if (kwclr=="blue") {var blusel="checked"}; |
var txtcol3 = "$js_lt{'col3'}"; |
|
var txtsiz1 = "$js_lt{'siz1'}"; |
|
var txtsiz2 = "$js_lt{'siz2'}"; |
|
var txtsiz3 = "$js_lt{'siz3'}"; |
|
var txtsty1 = "$js_lt{'sty1'}"; |
|
var txtsty2 = "$js_lt{'sty2'}"; |
|
var txtsty3 = "$js_lt{'sty3'}"; |
|
if (kwclr=="red") {var redsel="checked='checked'"}; |
|
if (kwclr=="green") {var grnsel="checked='checked'"}; |
|
if (kwclr=="blue") {var blusel="checked='checked'"}; |
var sznsel = ""; |
var sznsel = ""; |
var sz1sel = ""; |
var sz1sel = ""; |
var sz2sel = ""; |
var sz2sel = ""; |
if (kwsize=="0") {var sznsel="checked"}; |
if (kwsize=="0") {var sznsel="checked='checked'"}; |
if (kwsize=="+1") {var sz1sel="checked"}; |
if (kwsize=="+1") {var sz1sel="checked='checked'"}; |
if (kwsize=="+2") {var sz2sel="checked"}; |
if (kwsize=="+2") {var sz2sel="checked='checked'"}; |
var synsel = ""; |
var synsel = ""; |
var syisel = ""; |
var syisel = ""; |
var sybsel = ""; |
var sybsel = ""; |
if (kwstyle=="") {var synsel="checked"}; |
if (kwstyle=="") {var synsel="checked='checked'"}; |
if (kwstyle=="<i>") {var syisel="checked"}; |
if (kwstyle=="<i>") {var syisel="checked='checked'"}; |
if (kwstyle=="<b>") {var sybsel="checked"}; |
if (kwstyle=="<b>") {var sybsel="checked='checked'"}; |
highlightCentral(); |
highlightCentral(); |
highlightbody('red','red',redsel,'0','normal',sznsel,'','normal',synsel); |
highlightbody('red',txtcol1,redsel,'0',txtsiz1,sznsel,'',txtsty1,synsel); |
highlightbody('green','green',grnsel,'+1','+1',sz1sel,'<i>','italic',syisel); |
highlightbody('green',txtcol2,grnsel,'+1',txtsiz2,sz1sel,'<i>',txtsty2,syisel); |
highlightbody('blue','blue',blusel,'+2','+2',sz2sel,'<b>','bold',sybsel); |
highlightbody('blue',txtcol3,blusel,'+2',txtsiz3,sz2sel,'<b>',txtsty3,sybsel); |
highlightend(); |
highlightend(); |
return; |
return; |
} |
} |
Line 1720 INNERJS
|
Line 1749 INNERJS
|
hDoc.$docopen; |
hDoc.$docopen; |
hDoc.write('$start_page_highlight_central'); |
hDoc.write('$start_page_highlight_central'); |
hDoc.write("<form action=\\"inactive\\" name=\\"hlCenter\\">"); |
hDoc.write("<form action=\\"inactive\\" name=\\"hlCenter\\">"); |
hDoc.write("<h3><span class=\\"LC_info\\"> $lt{'kehi'}<\\/span><\\/h3><br /><br />"); |
hDoc.write("<h1>$html_js_lt{'kehi'}<\\/h1>"); |
|
|
hDoc.write('<table border="0" width="100%"><tr><td bgcolor="#777777">'); |
hDoc.write('<table border="0" width="100%"><tr style="background-color:#A1D676">'); |
hDoc.write('<table border="0" width="100%"><tr bgcolor="#DDFFFF">'); |
hDoc.write("<th>$html_js_lt{'txtc'}<\\/th><th>$html_js_lt{'font'}<\\/th><th>$html_js_lt{'fnst'}<\\/th><\\/tr>"); |
hDoc.write("<td><b>$lt{'txtc'}<\\/b><\\/td><td><b>$lt{'font'}<\\/b><\\/td><td><b>$lt{'fnst'}<\\/td><\\/tr>"); |
|
} |
} |
|
|
function highlightbody(clrval,clrtxt,clrsel,szval,sztxt,szsel,syval,sytxt,sysel) { |
function highlightbody(clrval,clrtxt,clrsel,szval,sztxt,szsel,syval,sytxt,sysel) { |
var hDoc = hwdWin.document; |
var hDoc = hwdWin.document; |
hDoc.write("<tr bgcolor=\\"#ffffdd\\">"); |
hDoc.write("<tr>"); |
hDoc.write("<td align=\\"left\\">"); |
hDoc.write("<td align=\\"left\\">"); |
hDoc.write("<input name=\\"kwdclr\\" type=\\"radio\\" value=\\""+clrval+"\\" "+clrsel+"> "+clrtxt+"<\\/td>"); |
hDoc.write("<input name=\\"kwdclr\\" type=\\"radio\\" value=\\""+clrval+"\\" "+clrsel+" \\/> "+clrtxt+"<\\/td>"); |
hDoc.write("<td align=\\"left\\">"); |
hDoc.write("<td align=\\"left\\">"); |
hDoc.write("<input name=\\"kwdsize\\" type=\\"radio\\" value=\\""+szval+"\\" "+szsel+"> "+sztxt+"<\\/td>"); |
hDoc.write("<input name=\\"kwdsize\\" type=\\"radio\\" value=\\""+szval+"\\" "+szsel+" \\/> "+sztxt+"<\\/td>"); |
hDoc.write("<td align=\\"left\\">"); |
hDoc.write("<td align=\\"left\\">"); |
hDoc.write("<input name=\\"kwdstyle\\" type=\\"radio\\" value=\\""+syval+"\\" "+sysel+"> "+sytxt+"<\\/td>"); |
hDoc.write("<input name=\\"kwdstyle\\" type=\\"radio\\" value=\\""+syval+"\\" "+sysel+" \\/> "+sytxt+"<\\/td>"); |
hDoc.write("<\\/tr>"); |
hDoc.write("<\\/tr>"); |
} |
} |
|
|
function highlightend() { |
function highlightend() { |
var hDoc = hwdWin.document; |
var hDoc = hwdWin.document; |
hDoc.write("<\\/table>"); |
hDoc.write("<\\/table><br \\/>"); |
hDoc.write("<\\/td><\\/tr><\\/table> "); |
hDoc.write("<input type=\\"button\\" value=\\"$html_js_lt{'save'}\\" onclick=\\"javascript:updateChoice(1)\\" \\/> "); |
hDoc.write("<input type=\\"button\\" value=\\"$lt{'save'}\\" onclick=\\"javascript:updateChoice(1)\\"> "); |
hDoc.write("<input type=\\"button\\" value=\\"$html_js_lt{'canc'}\\" onclick=\\"self.close()\\" \\/><br /><br />"); |
hDoc.write("<input type=\\"button\\" value=\\"$lt{'canc'}\\" onclick=\\"self.close()\\"><br /><br />"); |
|
hDoc.write("<\\/form>"); |
hDoc.write("<\\/form>"); |
hDoc.write('$end_page_highlight_central'); |
hDoc.write('$end_page_highlight_central'); |
hDoc.close(); |
hDoc.close(); |
Line 2019 sub submission {
|
Line 2046 sub submission {
|
if ($symb eq '') { $request->print("Unable to handle ambiguous references:."); return ''; } |
if ($symb eq '') { $request->print("Unable to handle ambiguous references:."); return ''; } |
|
|
if (!&canview($usec)) { |
if (!&canview($usec)) { |
$request->print('<span class="LC_warning">Unable to view requested student.('. |
$request->print( |
$uname.':'.$udom.' in section '.$usec.' in course id '. |
'<span class="LC_warning">'. |
$env{'request.course.id'}.')</span>'); |
&mt('Unable to view requested student.'). |
|
' '.&mt('([_1] in section [_2] in course id [_3])', |
|
$uname.':'.$udom,$usec,$env{'request.course.id'}). |
|
'</span>'); |
$request->print(&show_grading_menu_form($symb)); |
$request->print(&show_grading_menu_form($symb)); |
return; |
return; |
} |
} |
Line 2127 sub submission {
|
Line 2157 sub submission {
|
if ($env{'form.handgrade'} eq 'yes' && $env{'form.showgrading'} eq 'yes') { |
if ($env{'form.handgrade'} eq 'yes' && $env{'form.showgrading'} eq 'yes') { |
|
|
my %lt = &Apache::lonlocal::texthash( |
my %lt = &Apache::lonlocal::texthash( |
|
keyh => 'Keyword Highlighting for Essays', |
keyw => 'Keyword Options', |
keyw => 'Keyword Options', |
list => 'List', |
list => 'List', |
past => 'Paste Selection to List', |
past => 'Paste Selection to List', |
Line 2135 sub submission {
|
Line 2166 sub submission {
|
# |
# |
# Print out the keyword options line |
# Print out the keyword options line |
# |
# |
$request->print(<<KEYWORDS); |
$request->print( |
<b>$lt{'keyw'}:</b> |
'<div class="LC_columnSection">' |
<a href="javascript:keywords(document.SCORE);" target="_self">$lt{'list'}</a> |
.'<fieldset><legend>'.$lt{'keyh'}.'</legend>' |
<a href="#" onmousedown="javascript:getSel(); return false" |
.&Apache::lonhtmlcommon::funclist_from_array( |
class="page">$lt{'past'}</a> |
['<a href="javascript:keywords(document.SCORE);" target="_self">'.$lt{'list'}.'</a>', |
<a href="javascript:kwhighlight();" target="_self">$lt{'high'}</a><br /><br /> |
'<a href="#" onmousedown="javascript:getSel(); return false" |
KEYWORDS |
class="page">'.$lt{'past'}.'</a>', |
|
'<a href="javascript:kwhighlight();" target="_self">'.$lt{'high'}.'</a>'], |
|
{legend => $lt{'keyw'}}) |
|
.'</fieldset></div>' |
|
); |
|
|
# |
# |
# Load the other essays for similarity check |
# Load the other essays for similarity check |
# |
# |
Line 2276 KEYWORDS
|
Line 2312 KEYWORDS
|
foreach my $submission (@$string) { |
foreach my $submission (@$string) { |
my ($partid,$respid) = ($submission =~ /^resource\.([^\.]*)\.([^\.]*)\.submission/); |
my ($partid,$respid) = ($submission =~ /^resource\.([^\.]*)\.([^\.]*)\.submission/); |
if (join('_',@{$part}) ne ($partid.'_'.$respid)) { next; } |
if (join('_',@{$part}) ne ($partid.'_'.$respid)) { next; } |
my ($ressub,$hide,$subval) = split(/:/,$submission,3); |
my ($ressub,$hide,$draft,$subval) = split(/:/,$submission,4); |
# Similarity check |
# Similarity check |
my $similar=''; |
my $similar=''; |
my ($type,$trial,$rndseed); |
my ($type,$trial,$rndseed); |
Line 2345 KEYWORDS
|
Line 2381 KEYWORDS
|
if ($hide eq 'anon') { |
if ($hide eq 'anon') { |
$lastsubonly.='<br /><b>'.&mt('Anonymous Survey').'</b>'; |
$lastsubonly.='<br /><b>'.&mt('Anonymous Survey').'</b>'; |
} else { |
} else { |
$lastsubonly.='<br /><b>'.&mt('Submitted Answer:').' </b>'. |
$lastsubonly.='<br /><b>'.&mt('Submitted Answer:').' </b>'; |
|
if ($draft) { |
|
$lastsubonly.= ' <span class="LC_warning">'.&mt('Draft Copy').'</span>'; |
|
} |
|
$subval = |
&cleanRecord($subval,$responsetype,$symb,$partid, |
&cleanRecord($subval,$responsetype,$symb,$partid, |
$respid,\%record,$order,undef,$uname,$udom,$type,$trial,$rndseed); |
$respid,\%record,$order,undef,$uname,$udom,$type,$trial,$rndseed); |
|
if ($responsetype eq 'essay') { |
|
$subval =~ s{\n}{<br />}g; |
|
} |
|
$lastsubonly.=$subval."\n"; |
} |
} |
if ($similar) {$lastsubonly.="<br /><br />$similar\n";} |
if ($similar) {$lastsubonly.="<br /><br />$similar\n";} |
$lastsubonly.='</div>'; |
$lastsubonly.='</div>'; |
Line 2362 KEYWORDS
|
Line 2406 KEYWORDS
|
$request->print(&displaySubByDates($symb,\%record,$parts,$responseType,$checkIcon,$uname,$udom)); |
$request->print(&displaySubByDates($symb,\%record,$parts,$responseType,$checkIcon,$uname,$udom)); |
} |
} |
if ($env{'form.lastSub'} =~ /^(last|all)$/) { |
if ($env{'form.lastSub'} =~ /^(last|all)$/) { |
|
my $identifier = (&canmodify($usec)? $counter : ''); |
$request->print(&Apache::loncommon::get_previous_attempt($symb,$uname,$udom, |
$request->print(&Apache::loncommon::get_previous_attempt($symb,$uname,$udom, |
$env{'request.course.id'}, |
$env{'request.course.id'}, |
$last,'.submission', |
$last,'.submission', |
'Apache::grades::keywords_highlight')); |
'Apache::grades::keywords_highlight', |
|
$usec,$identifier)); |
} |
} |
|
|
$request->print('<input type="hidden" name="unamedom'.$counter.'" value="'.$uname.':' |
$request->print('<input type="hidden" name="unamedom'.$counter.'" value="'.$uname.':' |
Line 2593 sub get_last_submission {
|
Line 2639 sub get_last_submission {
|
} |
} |
unless ($hide) { |
unless ($hide) { |
if (@randomize) { |
if (@randomize) { |
foreach my $id (@hidden) { |
foreach my $id (@randomize) { |
if ($key =~ /^\Q$id\E/) { |
if ($key =~ /^\Q$id\E/) { |
$hide = 'rand'; |
$hide = 'rand'; |
last; |
last; |
Line 2602 sub get_last_submission {
|
Line 2648 sub get_last_submission {
|
} |
} |
} |
} |
my ($partid,$foo) = split(/submission$/,$key); |
my ($partid,$foo) = split(/submission$/,$key); |
my $draft = $lasthash{$partid.'awarddetail'} eq 'DRAFT' ? |
my $draft = $lasthash{$partid.'awarddetail'} eq 'DRAFT' ? 1: 0; |
'<span class="LC_warning">Draft Copy</span> ' : ''; |
push(@string, join(':', $key, $hide, $draft, ( |
push(@string, join(':', $key, $hide, $draft.$lasthash{$key})); |
ref($lasthash{$key}) eq 'ARRAY' ? |
|
join(',', @{$lasthash{$key}}) : $lasthash{$key}) )); |
} |
} |
} |
} |
if (!@string) { |
if (!@string) { |
Line 2632 sub keywords_highlight {
|
Line 2679 sub keywords_highlight {
|
sub show_previous_task_version { |
sub show_previous_task_version { |
my ($request,$symb) = @_; |
my ($request,$symb) = @_; |
if ($symb eq '') { |
if ($symb eq '') { |
$request->print("Unable to handle ambiguous references."); |
$request->print( |
|
'<span class="LC_error">'. |
|
&mt('Unable to handle ambiguous references.'). |
|
'</span>'); |
return ''; |
return ''; |
} |
} |
my ($uname,$udom) = ($env{'form.student'},$env{'form.userdom'}); |
my ($uname,$udom) = ($env{'form.student'},$env{'form.userdom'}); |
my $usec = &Apache::lonnet::getsection($udom,$uname,$env{'request.course.id'}); |
my $usec = &Apache::lonnet::getsection($udom,$uname,$env{'request.course.id'}); |
if (!&canview($usec)) { |
if (!&canview($usec)) { |
$request->print('<span class="LC_warning">Unable to view previous version for requested student.('. |
$request->print('<span class="LC_warning">'. |
$uname.':'.$udom.' in section '.$usec.' in course id '. |
&mt('Unable to view previous version for requested student.'). |
$env{'request.course.id'}.')</span>'); |
' '.&mt('([_1] in section [_2] in course id [_3])', |
|
$uname.':'.$udom,$usec,$env{'request.course.id'}). |
|
'</span>'); |
return; |
return; |
} |
} |
my $mode = 'both'; |
my $mode = 'both'; |
Line 2819 sub processHandGrade {
|
Line 2870 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,$symb,$uname,$udom,$ctr); |
my ($errorflag,$pts,$wgt,$numhidden) = |
|
&saveHandGrade($request,$symb,$uname,$udom,$ctr); |
if ($errorflag eq 'no_score') { |
if ($errorflag eq 'no_score') { |
$ctr++; |
$ctr++; |
next; |
next; |
} |
} |
if ($errorflag eq 'not_allowed') { |
if ($errorflag eq 'not_allowed') { |
$request->print("<span class=\"LC_warning\">Not allowed to modify grades for $uname:$udom</span>"); |
$request->print( |
|
'<span class="LC_error">' |
|
.&mt('Not allowed to modify grades for [_1]',"$uname:$udom") |
|
.'</span>'); |
$ctr++; |
$ctr++; |
next; |
next; |
} |
} |
|
if ($numhidden) { |
|
$request->print( |
|
'<span class="LC_info">' |
|
.&mt('For [_1]: [quant,_2,transaction] hidden',"$uname:$udom",$numhidden) |
|
.'</span><br />'); |
|
} |
my $includemsg = $env{'form.includemsg'.$ctr}; |
my $includemsg = $env{'form.includemsg'.$ctr}; |
my ($subject,$message,$msgstatus) = ('','',''); |
my ($subject,$message,$msgstatus) = ('','',''); |
my $restitle = &Apache::lonnet::gettitle($symb); |
my $restitle = &Apache::lonnet::gettitle($symb); |
Line 3060 sub saveHandGrade {
|
Line 3121 sub saveHandGrade {
|
my %record = &Apache::lonnet::restore($symb,$env{'request.course.id'},$domain,$stuname); |
my %record = &Apache::lonnet::restore($symb,$env{'request.course.id'},$domain,$stuname); |
my @parts_graded; |
my @parts_graded; |
my %newrecord = (); |
my %newrecord = (); |
my ($pts,$wgt) = ('',''); |
my ($pts,$wgt,$totchg) = ('','',0); |
my %aggregate = (); |
my %aggregate = (); |
my $aggregateflag = 0; |
my $aggregateflag = 0; |
|
if ($env{'form.HIDE'.$newflg}) { |
|
my ($version,$parts) = split(/:/,$env{'form.HIDE'.$newflg},2); |
|
my $numchgs = &makehidden($version,$parts,\%record,$symb,$domain,$stuname,1); |
|
$totchg += $numchgs; |
|
} |
my @parts = split(/:/,$env{'form.partlist'.$newflg}); |
my @parts = split(/:/,$env{'form.partlist'.$newflg}); |
foreach my $new_part (@parts) { |
foreach my $new_part (@parts) { |
#collaborator ($submi may vary for different parts |
#collaborator ($submi may vary for different parts |
Line 3165 sub saveHandGrade {
|
Line 3231 sub saveHandGrade {
|
&Apache::lonnet::cinc('nohist_resourcetracker',\%aggregate, |
&Apache::lonnet::cinc('nohist_resourcetracker',\%aggregate, |
$cdom,$cnum); |
$cdom,$cnum); |
} |
} |
return ('',$pts,$wgt); |
return ('',$pts,$wgt,$totchg); |
|
} |
|
|
|
sub makehidden { |
|
my ($version,$parts,$record,$symb,$domain,$stuname,$tolog) = @_; |
|
return unless (ref($record) eq 'HASH'); |
|
my %modified; |
|
my $numchanged = 0; |
|
if (exists($record->{$version.':keys'})) { |
|
my $partsregexp = $parts; |
|
$partsregexp =~ s/,/|/g; |
|
foreach my $key (split(/\:/,$record->{$version.':keys'})) { |
|
if ($key =~ /^resource\.(?:$partsregexp)\.([^\.]+)$/) { |
|
my $item = $1; |
|
unless (($item eq 'solved') || ($item =~ /^award(|msg|ed)$/)) { |
|
$modified{$key} = $record->{$version.':'.$key}; |
|
} |
|
} elsif ($key =~ m{^(resource\.(?:$partsregexp)\.[^\.]+\.)(.+)$}) { |
|
$modified{$1.'hidden'.$2} = $record->{$version.':'.$key}; |
|
} elsif ($key =~ /^(ip|timestamp|host)$/) { |
|
$modified{$key} = $record->{$version.':'.$key}; |
|
} |
|
} |
|
if (keys(%modified)) { |
|
if (&Apache::lonnet::putstore($env{'request.course.id'},$symb,$version,\%modified, |
|
$domain,$stuname,$tolog) eq 'ok') { |
|
$numchanged ++; |
|
} |
|
} |
|
} |
|
return $numchanged; |
} |
} |
|
|
sub check_and_remove_from_queue { |
sub check_and_remove_from_queue { |
Line 3462 sub viewgrades_js {
|
Line 3558 sub viewgrades_js {
|
my ($request) = shift; |
my ($request) = shift; |
|
|
my $alertmsg = &mt('A number equal or greater than 0 is expected. Entered value = '); |
my $alertmsg = &mt('A number equal or greater than 0 is expected. Entered value = '); |
|
&js_escape(\$alertmsg); |
$request->print(<<VIEWJAVASCRIPT); |
$request->print(<<VIEWJAVASCRIPT); |
<script type="text/javascript" language="javascript"> |
<script type="text/javascript" language="javascript"> |
function writePoint(partid,weight,point) { |
function writePoint(partid,weight,point) { |
Line 3657 sub viewgrades {
|
Line 3754 sub viewgrades {
|
'<input type="hidden" name="Status" value="'.$env{'stu_status'}.'" />'."\n". |
'<input type="hidden" name="Status" value="'.$env{'stu_status'}.'" />'."\n". |
'<input type="hidden" name="probTitle" value="'.$env{'form.probTitle'}.'" />'."\n"; |
'<input type="hidden" name="probTitle" value="'.$env{'form.probTitle'}.'" />'."\n"; |
|
|
my ($common_header,$specific_header); |
#retrieve selected groups |
if ($env{'form.section'} eq 'all') { |
my (@groups,$group_display); |
$common_header = &mt('Assign Common Grade to Class'); |
@groups = &Apache::loncommon::get_env_multiple('form.group'); |
$specific_header = &mt('Assign Grade to Specific Students in Class'); |
if (grep(/^all$/,@groups)) { |
} elsif ($env{'form.section'} eq 'none') { |
@groups = ('all'); |
$common_header = &mt('Assign Common Grade to Students in no Section'); |
} elsif (grep(/^none$/,@groups)) { |
$specific_header = &mt('Assign Grade to Specific Students in no Section'); |
@groups = ('none'); |
} else { |
} elsif (@groups > 0) { |
my $section_display = join (", ",&Apache::loncommon::get_env_multiple('form.section')); |
$group_display = join(', ',@groups); |
$common_header = &mt('Assign Common Grade to Students in Section(s) [_1]',$section_display); |
} |
$specific_header = &mt('Assign Grade to Specific Students in Section(s) [_1]',$section_display); |
|
|
my ($common_header,$specific_header,@sections,$section_display); |
|
@sections = &Apache::loncommon::get_env_multiple('form.section'); |
|
if (grep(/^all$/,@sections)) { |
|
@sections = ('all'); |
|
if ($group_display) { |
|
$common_header = &mt('Assign Common Grade to Students in Group(s) [_1]',$group_display); |
|
$specific_header = &mt('Assign Grade to Specific Students in Group(s) [_1]',$group_display); |
|
} elsif (grep(/^none$/,@groups)) { |
|
$common_header = &mt('Assign Common Grade to Students not assigned to any groups'); |
|
$specific_header = &mt('Assign Grade to Specific Students not assigned to any groups'); |
|
} else { |
|
$common_header = &mt('Assign Common Grade to Class'); |
|
$specific_header = &mt('Assign Grade to Specific Students in Class'); |
|
} |
|
} elsif (grep(/^none$/,@sections)) { |
|
@sections = ('none'); |
|
if ($group_display) { |
|
$common_header = &mt('Assign Common Grade to Students in no Section and in Group(s) [_1]',$group_display); |
|
$specific_header = &mt('Assign Grade to Specific Students in no Section and in Group(s)',$group_display); |
|
} elsif (grep(/^none$/,@groups)) { |
|
$common_header = &mt('Assign Common Grade to Students in no Section and in no Group'); |
|
$specific_header = &mt('Assign Grade to Specific Students in no Section and in no Group'); |
|
} else { |
|
$common_header = &mt('Assign Common Grade to Students in no Section'); |
|
$specific_header = &mt('Assign Grade to Specific Students in no Section'); |
|
} |
|
} else { |
|
$section_display = join (", ",@sections); |
|
if ($group_display) { |
|
$common_header = &mt('Assign Common Grade to Students in Section(s) [_1], and in Group(s) [_2]', |
|
$section_display,$group_display); |
|
$specific_header = &mt('Assign Grade to Specific Students in Section(s) [_1], and in Group(s) [_2]', |
|
$section_display,$group_display); |
|
} elsif (grep(/^none$/,@groups)) { |
|
$common_header = &mt('Assign Common Grade to Students in Section(s) [_1] and no Group',$section_display); |
|
$specific_header = &mt('Assign Grade to Specific Students in Section(s) [_1] and no Group',$section_display); |
|
} else { |
|
$common_header = &mt('Assign Common Grade to Students in Section(s) [_1]',$section_display); |
|
$specific_header = &mt('Assign Grade to Specific Students in Section(s) [_1]',$section_display); |
|
} |
} |
} |
$result.= '<h3>'.$common_header.'</h3>'.&Apache::loncommon::start_data_table(); |
my %submit_types = &substatus_options(); |
|
my $submission_status = $submit_types{$env{'form.submitonly'}}; |
|
|
|
if ($env{'form.submitonly'} eq 'all') { |
|
$result.= '<h3>'.$common_header.'</h3>'; |
|
} else { |
|
$result.= '<h3>'.$common_header.' '.&mt('(submission status: "[_1]")',$submission_status).'</h3>'; |
|
} |
|
$result .= &Apache::loncommon::start_data_table(); |
#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 $res_error; |
my $res_error; |
Line 3732 sub viewgrades {
|
Line 3877 sub viewgrades {
|
|
|
#table listing all the students in a section/class |
#table listing all the students in a section/class |
#header of table |
#header of table |
$result.= '<h3>'.$specific_header.'</h3>'. |
if ($env{'form.submitonly'} eq 'all') { |
&Apache::loncommon::start_data_table(). |
$result.= '<h3>'.$specific_header.'</h3>'; |
|
} else { |
|
$result.= '<h3>'.$specific_header.' '.&mt('(submission status: "[_1]")',$submission_status).'</h3>'; |
|
} |
|
$result.= &Apache::loncommon::start_data_table(). |
&Apache::loncommon::start_data_table_header_row(). |
&Apache::loncommon::start_data_table_header_row(). |
'<th>'.&mt('No.').'</th>'. |
'<th>'.&mt('No.').'</th>'. |
'<th>'.&nameUserString('header')."</th>\n"; |
'<th>'.&nameUserString('header')."</th>\n"; |
Line 3776 sub viewgrades {
|
Line 3925 sub viewgrades {
|
|
|
#get info for each student |
#get info for each student |
#list all the students - with points and grade status |
#list all the students - with points and grade status |
my (undef,undef,$fullname) = &getclasslist($env{'form.section'},'1'); |
my (undef,undef,$fullname) = &getclasslist(\@sections,'1',\@groups); |
my $ctr = 0; |
my $ctr = 0; |
foreach (sort |
foreach (sort |
{ |
{ |
Line 3785 sub viewgrades {
|
Line 3934 sub viewgrades {
|
} |
} |
return $a cmp $b; |
return $a cmp $b; |
} (keys(%$fullname))) { |
} (keys(%$fullname))) { |
$ctr++; |
|
$result.=&viewstudentgrade($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.=&Apache::loncommon::end_data_table(); |
$result.=&Apache::loncommon::end_data_table(); |
$result.='<input type="hidden" name="total" value="'.$ctr.'" />'."\n"; |
$result.='<input type="hidden" name="total" value="'.$ctr.'" />'."\n"; |
$result.='<input type="button" value="'.&mt('Save').'" '. |
$result.='<input type="button" value="'.&mt('Save').'" '. |
'onclick="javascript:submit();" target="_self" /></form>'."\n"; |
'onclick="javascript:submit();" target="_self" /></form>'."\n"; |
if (scalar(%$fullname) eq 0) { |
if ($ctr == 0) { |
my $colspan=3+scalar(@parts); |
|
my $section_display = join (", ",&Apache::loncommon::get_env_multiple('form.section')); |
|
my $stu_status = join(' or ',&Apache::loncommon::get_env_multiple('form.Status')); |
my $stu_status = join(' or ',&Apache::loncommon::get_env_multiple('form.Status')); |
$result='<span class="LC_warning">'. |
$result='<h3><span class="LC_info">'.&mt('Manual Grading').'</span></h3>'. |
&mt('There are no students in section(s) [_1] with enrollment status [_2] to modify or grade.', |
'<span class="LC_warning">'; |
$section_display, $stu_status). |
if ($env{'form.submitonly'} eq 'all') { |
'</span>'; |
if (grep(/^all$/,@sections)) { |
|
if (grep(/^all$/,@groups)) { |
|
$result .= &mt('There are no students with enrollment status [_1] to modify or grade.', |
|
$stu_status); |
|
} elsif (grep(/^none$/,@groups)) { |
|
$result .= &mt('There are no students with no group assigned and with enrollment status [_1] to modify or grade.', |
|
$stu_status); |
|
} else { |
|
$result .= &mt('There are no students in group(s) [_1] with enrollment status [_2] to modify or grade.', |
|
$group_display,$stu_status); |
|
} |
|
} elsif (grep(/^none$/,@sections)) { |
|
if (grep(/^all$/,@groups)) { |
|
$result .= &mt('There are no students in no section with enrollment status [_1] to modify or grade.', |
|
$stu_status); |
|
} elsif (grep(/^none$/,@groups)) { |
|
$result .= &mt('There are no students in no section and no group with enrollment status [_1] to modify or grade.', |
|
$stu_status); |
|
} else { |
|
$result .= &mt('There are no students in no section in group(s) [_1] with enrollment status [_2] to modify or grade.', |
|
$group_display,$stu_status); |
|
} |
|
} else { |
|
if (grep(/^all$/,@groups)) { |
|
$result .= &mt('There are no students in section(s) [_1] with enrollment status [_2] to modify or grade.', |
|
$section_display,$stu_status); |
|
} elsif (grep(/^none$/,@groups)) { |
|
$result .= &mt('There are no students in section(s) [_1] nd no group with enrollment status [_2] to modify or grade.', |
|
$section_display,$stu_status); |
|
} else { |
|
$result .= &mt('There are no students in section(s) [_1] and group(s) [_2] with enrollment status [_3] to modify or grade.', |
|
$section_display,$group_display,$stu_status); |
|
} |
|
} |
|
} else { |
|
if (grep(/^all$/,@sections)) { |
|
if (grep(/^all$/,@groups)) { |
|
$result .= &mt('There are no students with enrollment status [_1] and submission status "[_2]" to modify or grade.', |
|
$stu_status,$submission_status); |
|
} elsif (grep(/^none$/,@groups)) { |
|
$result .= &mt('There are no students with no group assigned with enrollment status [_1] and submission status "[_2]" to modify or grade.', |
|
$stu_status,$submission_status); |
|
} else { |
|
$result .= &mt('There are no students in group(s) [_1] with enrollment status [_2] and submission status "[_3]" to modify or grade.', |
|
$group_display,$stu_status,$submission_status); |
|
} |
|
} elsif (grep(/^none$/,@sections)) { |
|
if (grep(/^all$/,@groups)) { |
|
$result .= &mt('There are no students in no section with enrollment status [_1] and submission status "[_2]" to modify or grade.', |
|
$stu_status,$submission_status); |
|
} elsif (grep(/^none$/,@groups)) { |
|
$result .= &mt('There are no students in no section and no group with enrollment status [_1] and submission status "[_2]" to modify or grade.', |
|
$stu_status,$submission_status); |
|
} else { |
|
$result .= &mt('There are no students in no section in group(s) [_1] with enrollment status [_2] and submission status "[_3]" to modify or grade.', |
|
$group_display,$stu_status,$submission_status); |
|
} |
|
} else { |
|
if (grep(/^all$/,@groups)) { |
|
$result .= &mt('There are no students in section(s) [_1] with enrollment status [_2] and submission status "[_3]" to modify or grade.', |
|
$section_display,$stu_status,$submission_status); |
|
} elsif (grep(/^none$/,@groups)) { |
|
$result .= &mt('There are no students in section(s) [_1] and no group with enrollment status [_2] and submission status "[_3]" to modify or grade.', |
|
$section_display,$stu_status,$submission_status); |
|
} else { |
|
$result .= &mt('There are no students in section(s) [_1] and group(s) [_2] with enrollment status [_3] and submission status "[_4]" to modify or grade.', |
|
$section_display,$group_display,$stu_status,$submission_status); |
|
} |
|
} |
|
} |
|
$result .= '</span><br />'; |
} |
} |
$result.=&show_grading_menu_form($symb); |
$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 who satisfies submission filter. |
sub viewstudentgrade { |
sub viewstudentgrade { |
my ($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 $submitonly = $env{'form.submitonly'}; |
|
unless (($submitonly eq 'all') || ($submitonly eq 'queued')) { |
|
my %partstatus = (); |
|
if (ref($parts) eq 'ARRAY') { |
|
foreach my $apart (@{$parts}) { |
|
my ($part,$type) = &split_part_type($apart); |
|
my ($status,undef) = split(/_/,$record{"resource.$part.solved"},2); |
|
$status = 'nothing' if ($status eq ''); |
|
$partstatus{$part} = $status; |
|
my $subkey = "resource.$part.submitted_by"; |
|
$partstatus{$subkey} = $record{$subkey} if ($record{$subkey} ne ''); |
|
} |
|
my $submitted = 0; |
|
my $graded = 0; |
|
my $incorrect = 0; |
|
foreach my $key (keys(%partstatus)) { |
|
$submitted = 1 if ($partstatus{$key} ne 'nothing'); |
|
$graded = 1 if ($partstatus{$key} =~ /^ungraded/); |
|
$incorrect = 1 if ($partstatus{$key} =~ /^incorrect/); |
|
|
|
my $partid = (split(/\./,$key))[1]; |
|
if ($partstatus{'resource.'.$partid.'.'.$key.'.submitted_by'} ne '') { |
|
$submitted = 0; |
|
} |
|
} |
|
return if (!$submitted && ($submitonly eq 'yes' || |
|
$submitonly eq 'incorrect' || |
|
$submitonly eq 'graded')); |
|
return if (!$graded && ($submitonly eq 'graded')); |
|
return if (!$incorrect && $submitonly eq 'incorrect'); |
|
} |
|
} |
|
if ($submitonly eq 'queued') { |
|
my ($cdom,$cnum) = split(/_/,$courseid); |
|
my %queue_status = |
|
&Apache::bridgetask::get_student_status($symb,$cdom,$cnum, |
|
$udom,$uname); |
|
return if (!defined($queue_status{'gradingqueue'})); |
|
} |
|
$$ctr++; |
|
my %aggregates = (); |
my $result=&Apache::loncommon::start_data_table_row().'<td align="right">'. |
my $result=&Apache::loncommon::start_data_table_row().'<td align="right">'. |
'<input type="hidden" name="ctr'.($ctr-1).'" value="'.$student.'" />'. |
'<input type="hidden" name="ctr'.($$ctr-1).'" value="'.$student.'" />'. |
"\n".$ctr.' </td><td> '. |
"\n".$$ctr.' </td><td> '. |
'<a href="javascript:viewOneStudent(\''.$uname.'\',\''.$udom. |
'<a href="javascript:viewOneStudent(\''.$uname.'\',\''.$udom. |
'\');" target="_self">'.$fullname.'</a> '. |
'\');" target="_self">'.$fullname.'</a> '. |
'<span class="LC_internal_info">('.$uname.($env{'user.domain'} eq $udom ? '' : ':'.$udom).')</span></td>'."\n"; |
'<span class="LC_internal_info">('.$uname.($env{'user.domain'} eq $udom ? '' : ':'.$udom).')</span></td>'."\n"; |
Line 4118 sub split_part_type {
|
Line 4374 sub split_part_type {
|
sub csvupload_javascript_reverse_associate { |
sub csvupload_javascript_reverse_associate { |
my $error1=&mt('You need to specify the username or the student/employee ID'); |
my $error1=&mt('You need to specify the username or the student/employee ID'); |
my $error2=&mt('You need to specify at least one grading field'); |
my $error2=&mt('You need to specify at least one grading field'); |
|
&js_escape(\$error1); |
|
&js_escape(\$error2); |
return(<<ENDPICK); |
return(<<ENDPICK); |
function verify(vf) { |
function verify(vf) { |
var foundsomething=0; |
var foundsomething=0; |
Line 4158 ENDPICK
|
Line 4416 ENDPICK
|
sub csvupload_javascript_forward_associate { |
sub csvupload_javascript_forward_associate { |
my $error1=&mt('You need to specify the username or the student/employee ID'); |
my $error1=&mt('You need to specify the username or the student/employee ID'); |
my $error2=&mt('You need to specify at least one grading field'); |
my $error2=&mt('You need to specify at least one grading field'); |
|
&js_escape(\$error1); |
|
&js_escape(\$error2); |
return(<<ENDPICK); |
return(<<ENDPICK); |
function verify(vf) { |
function verify(vf) { |
var foundsomething=0; |
var foundsomething=0; |
Line 4277 ENDPICK
|
Line 4537 ENDPICK
|
|
|
sub checkforfile_js { |
sub checkforfile_js { |
my $alertmsg = &mt('Please use the browse button to select a file from your local directory.'); |
my $alertmsg = &mt('Please use the browse button to select a file from your local directory.'); |
|
&js_escape(\$alertmsg); |
my $result =<<CSVFORMJS; |
my $result =<<CSVFORMJS; |
<script type="text/javascript" language="javascript"> |
<script type="text/javascript" language="javascript"> |
function checkUpload(formname) { |
function checkUpload(formname) { |
Line 4573 sub pickStudentPage {
|
Line 4834 sub pickStudentPage {
|
my ($request) = shift; |
my ($request) = shift; |
|
|
my $alertmsg = &mt('Please select the student you wish to grade.'); |
my $alertmsg = &mt('Please select the student you wish to grade.'); |
|
&js_escape(\$alertmsg); |
$request->print(<<LISTJAVASCRIPT); |
$request->print(<<LISTJAVASCRIPT); |
<script type="text/javascript" language="javascript"> |
<script type="text/javascript" language="javascript"> |
|
|
Line 4748 sub displayPage {
|
Line 5010 sub displayPage {
|
&Apache::lonnet::clear_EXT_cache_status(); |
&Apache::lonnet::clear_EXT_cache_status(); |
|
|
if (!&canview($usec)) { |
if (!&canview($usec)) { |
$request->print('<span class="LC_warning">'.&mt('Unable to view requested student. ([_1])',$env{'form.student'}).'</span>'); |
$request->print('<span class="LC_warning">'. |
$request->print(&show_grading_menu_form($symb)); |
&mt('Unable to view requested student. ([_1])', |
return; |
$env{'form.student'}). |
|
'</span>'); |
|
$request->print(&show_grading_menu_form($symb)); |
|
return; |
} |
} |
my $result='<h3><span class="LC_info"> '.$env{'form.title'}.'</span></h3>'; |
my $result='<h3><span class="LC_info"> '.$env{'form.title'}.'</span></h3>'; |
$result.='<h3> '.&mt('Student: [_1]',&nameUserString(undef,$$fullname{$env{'form.student'}},$uname,$udom)). |
$result.='<h3> '.&mt('Student: [_1]',&nameUserString(undef,$$fullname{$env{'form.student'}},$uname,$udom)). |
Line 4864 sub displayPage {
|
Line 5129 sub displayPage {
|
} |
} |
} elsif ($env{'form.lastSub'} eq 'all') { |
} elsif ($env{'form.lastSub'} eq 'all') { |
my $last = ($env{'form.lastSub'} eq 'last' ? 'last' : ''); |
my $last = ($env{'form.lastSub'} eq 'last' ? 'last' : ''); |
|
my $identifier = (&canmodify($usec)? $prob : ''); |
$studentTable.=&Apache::loncommon::get_previous_attempt($symbx,$uname,$udom, |
$studentTable.=&Apache::loncommon::get_previous_attempt($symbx,$uname,$udom, |
$env{'request.course.id'}, |
$env{'request.course.id'}, |
'','.submission'); |
'','.submission',undef, |
|
$usec,$identifier); |
|
|
} |
} |
if (&canmodify($usec)) { |
if (&canmodify($usec)) { |
Line 4919 sub displaySubByDates {
|
Line 5186 sub displaySubByDates {
|
|
|
my $interaction; |
my $interaction; |
my $no_increment = 1; |
my $no_increment = 1; |
my %lastrndseed; |
my (%lastrndseed,%lasttype); |
for ($version=1;$version<=$$record{'version'};$version++) { |
for ($version=1;$version<=$$record{'version'};$version++) { |
my $timestamp = |
my $timestamp = |
&Apache::lonlocal::locallocaltime($$record{$version.':timestamp'}); |
&Apache::lonlocal::locallocaltime($$record{$version.':timestamp'}); |
Line 4977 sub displaySubByDates {
|
Line 5244 sub displaySubByDates {
|
} else { |
} else { |
$displaySub[0].=&mt('Trial: [_1]', |
$displaySub[0].=&mt('Trial: [_1]', |
$$record{"$where.$partid.tries"}); |
$$record{"$where.$partid.tries"}); |
if ($rndseed || $lastrndseed{$partid}) { |
if (($rndseed ne '') && ($lastrndseed{$partid} ne '')) { |
if ($rndseed ne $lastrndseed{$partid}) { |
if (($rndseed ne $lastrndseed{$partid}) && |
|
(($type eq 'randomizetry') || ($lasttype{$partid} eq 'randomizetry'))) { |
$newvariation = ' ('.&mt('New variation this try').')'; |
$newvariation = ' ('.&mt('New variation this try').')'; |
} |
} |
} |
} |
|
$lastrndseed{$partid} = $rndseed; |
|
$lasttype{$partid} = $type; |
} |
} |
my $responseType=($isTask ? 'Task' |
my $responseType=($isTask ? 'Task' |
: $responseType->{$partid}->{$responseId}); |
: $responseType->{$partid}->{$responseId}); |
Line 5082 sub updateGradeByPage {
|
Line 5352 sub updateGradeByPage {
|
|
|
$iterator->next(); # skip the first BEGIN_MAP |
$iterator->next(); # skip the first BEGIN_MAP |
my $curRes = $iterator->next(); # for "current resource" |
my $curRes = $iterator->next(); # for "current resource" |
my ($depth,$question,$prob,$changeflag)= (1,1,1,0); |
my ($depth,$question,$prob,$changeflag,$hideflag)= (1,1,1,0,0); |
while ($depth > 0) { |
while ($depth > 0) { |
if($curRes == $iterator->BEGIN_MAP) { $depth++; } |
if($curRes == $iterator->BEGIN_MAP) { $depth++; } |
if($curRes == $iterator->END_MAP) { $depth--; } |
if($curRes == $iterator->END_MAP) { $depth--; } |
Line 5103 sub updateGradeByPage {
|
Line 5373 sub updateGradeByPage {
|
my @displayPts=(); |
my @displayPts=(); |
my %aggregate = (); |
my %aggregate = (); |
my $aggregateflag = 0; |
my $aggregateflag = 0; |
|
if ($env{'form.HIDE'.$prob}) { |
|
my %record = &Apache::lonnet::restore($symbx,$env{'request.course.id'},$udom,$uname); |
|
my ($version,$parts) = split(/:/,$env{'form.HIDE'.$prob},2); |
|
my $numchgs = &makehidden($version,$parts,\%record,$symbx,$udom,$uname,1); |
|
$hideflag += $numchgs; |
|
} |
foreach my $partid (@{$parts}) { |
foreach my $partid (@{$parts}) { |
my $newpts = $env{'form.GD_BOX'.$question.'_'.$partid}; |
my $newpts = $env{'form.GD_BOX'.$question.'_'.$partid}; |
my $oldpts = $env{'form.oldpts'.$question.'_'.$partid}; |
my $oldpts = $env{'form.oldpts'.$question.'_'.$partid}; |
Line 5194 sub updateGradeByPage {
|
Line 5470 sub updateGradeByPage {
|
$studentTable.=&show_grading_menu_form($env{'form.symb'}); |
$studentTable.=&show_grading_menu_form($env{'form.symb'}); |
my $grademsg=($changeflag == 0 ? &mt('No score was changed or updated.') : |
my $grademsg=($changeflag == 0 ? &mt('No score was changed or updated.') : |
&mt('The scores were changed for [quant,_1,problem].', |
&mt('The scores were changed for [quant,_1,problem].', |
$changeflag)); |
$changeflag).'<br />'); |
$request->print($grademsg.$studentTable); |
my $hidemsg=($hideflag == 0 ? '' : |
|
&mt('Submissions were marked "hidden" for [quant,_1,transaction].', |
|
$hideflag).'<br />'); |
|
$request->print($hidemsg.$grademsg.$studentTable); |
|
|
return ''; |
return ''; |
} |
} |
Line 5591 sub scantron_selectphase {
|
Line 5870 sub scantron_selectphase {
|
my $default_form_data=&defaultFormData(&get_symb($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'}; |
|
my $alertmsg = &mt('Please use the browse button to select a file from your local directory.'); |
|
&js_escape(\$alertmsg); |
$r->print(' |
$r->print(' |
<script type="text/javascript" language="javascript"> |
<script type="text/javascript" language="javascript"> |
function checkUpload(formname) { |
function checkUpload(formname) { |
if (formname.upfile.value == "") { |
if (formname.upfile.value == "") { |
alert("'.&mt('Please use the browse button to select a file from your local directory.').'"); |
alert("'.$alertmsg.'"); |
return false; |
return false; |
} |
} |
formname.submit(); |
formname.submit(); |
Line 5844 sub username_to_idmap {
|
Line 6125 sub username_to_idmap {
|
my ($classlist)= @_; |
my ($classlist)= @_; |
my %idmap; |
my %idmap; |
foreach my $student (keys(%$classlist)) { |
foreach my $student (keys(%$classlist)) { |
$idmap{$classlist->{$student}->[&Apache::loncoursedata::CL_ID]}= |
my $id = $classlist->{$student}->[&Apache::loncoursedata::CL_ID]; |
$student; |
unless ($id eq '') { |
|
if (!exists($idmap{$id})) { |
|
$idmap{$id} = $student; |
|
} else { |
|
my $status = $classlist->{$student}->[&Apache::loncoursedata::CL_STATUS]; |
|
if ($status eq 'Active') { |
|
$idmap{$id} = $student; |
|
} |
|
} |
|
} |
} |
} |
return %idmap; |
return %idmap; |
} |
} |
Line 6715 sub scantron_warning_screen {
|
Line 7005 sub scantron_warning_screen {
|
$scantron_config{'CODEstart'} && |
$scantron_config{'CODEstart'} && |
$scantron_config{'CODElength'}) { |
$scantron_config{'CODElength'}) { |
$CODElist=$env{'form.scantron_CODElist'}; |
$CODElist=$env{'form.scantron_CODElist'}; |
if ($env{'form.scantron_CODElist'} eq '') { $CODElist='<span class="LC_warning">None</span>'; } |
if ($env{'form.scantron_CODElist'} eq '') { $CODElist='<span class="LC_warning">'.&mt('None').'</span>'; } |
$CODElist= |
$CODElist= |
'<tr><td><b>'.&mt('List of CODES to validate against:').'</b></td><td><tt>'. |
'<tr><td><b>'.&mt('List of CODES to validate against:').'</b></td><td><tt>'. |
$env{'form.scantron_CODElist'}.'</tt></td></tr>'; |
$env{'form.scantron_CODElist'}.'</tt></td></tr>'; |
Line 6729 sub scantron_warning_screen {
|
Line 7019 sub scantron_warning_screen {
|
return (' |
return (' |
<p> |
<p> |
<span class="LC_warning"> |
<span class="LC_warning"> |
'.&mt('Please double check the information below before clicking on \'[_1]\'',&mt($button_text)).'</span> |
'.&mt("Please double check the information below before clicking on '[_1]'",&mt($button_text)).'</span> |
</p> |
</p> |
<table> |
<table> |
<tr><td><b>'.&mt('Sequence to be Graded:').'</b></td><td>'.$title.'</td></tr> |
<tr><td><b>'.&mt('Sequence to be Graded:').'</b></td><td>'.$title.'</td></tr> |
Line 7575 sub verify_bubbles_checked {
|
Line 7865 sub verify_bubbles_checked {
|
my (@ansnums) = @_; |
my (@ansnums) = @_; |
my $ansnumstr = join('","',@ansnums); |
my $ansnumstr = join('","',@ansnums); |
my $warning = &mt("A bubble or 'No bubble' selection has not been made for one or more lines."); |
my $warning = &mt("A bubble or 'No bubble' selection has not been made for one or more lines."); |
|
&js_escape(\$warning); |
my $output = (<<ENDSCRIPT); |
my $output = (<<ENDSCRIPT); |
<script type="text/javascript"> |
<script type="text/javascript"> |
function verify_bubble_radio(form) { |
function verify_bubble_radio(form) { |
Line 7732 sub prompt_for_corrections {
|
Line 8023 sub prompt_for_corrections {
|
} |
} |
} else { |
} else { |
$responsenum = $question-1; |
$responsenum = $question-1; |
$first = $first_bubble_line{$responsenum} + 1; |
$first = $first_bubble_line{$responsenum}; |
} |
} |
$current_line = $first + 1 ; |
$current_line = $first + 1 ; |
my @subans = split(/,/,$subdivided_bubble_lines{$responsenum}); |
my @subans = split(/,/,$subdivided_bubble_lines{$responsenum}); |
Line 8344 sub hand_bubble_option {
|
Line 8635 sub hand_bubble_option {
|
return &mt('The sequence to be graded contains response types which are handgraded.').'<p>'. |
return &mt('The sequence to be graded contains response types which are handgraded.').'<p>'. |
&mt('If you have already graded these by bubbling sheets to indicate points awarded, [_1]what point value is assigned to a filled last bubble in each row?','<br />'). |
&mt('If you have already graded these by bubbling sheets to indicate points awarded, [_1]what point value is assigned to a filled last bubble in each row?','<br />'). |
'<label><input type="radio" name="scantron_lastbubblepoints" value="'.$bubbles_per_row.'" checked="checked" />'.&mt('[quant,_1,point]',$bubbles_per_row).'</label> '.&mt('or').' '. |
'<label><input type="radio" name="scantron_lastbubblepoints" value="'.$bubbles_per_row.'" checked="checked" />'.&mt('[quant,_1,point]',$bubbles_per_row).'</label> '.&mt('or').' '. |
'<label><input type="radio" name="scantron_lastbubblepoints" value="0"/>0 points</label></p>'; |
'<label><input type="radio" name="scantron_lastbubblepoints" value="0" />'.&mt('0 points').'</label></p>'; |
} |
} |
return; |
return; |
} |
} |
Line 8765 sub scantron_upload_scantron_data {
|
Line 9056 sub scantron_upload_scantron_data {
|
my ($symb) = &get_symb($r,1); |
my ($symb) = &get_symb($r,1); |
my $default_form_data=&defaultFormData($symb); |
my $default_form_data=&defaultFormData($symb); |
my $nofile_alert = &mt('Please use the browse button to select a file from your local directory.'); |
my $nofile_alert = &mt('Please use the browse button to select a file from your local directory.'); |
|
&js_escape(\$nofile_alert); |
my $nocourseid_alert = &mt("Please use the 'Select Course' link to open a separate window where you can search for a course to which a file can be uploaded."); |
my $nocourseid_alert = &mt("Please use the 'Select Course' link to open a separate window where you can search for a course to which a file can be uploaded."); |
|
&js_escape(\$nocourseid_alert); |
$r->print(' |
$r->print(' |
<script type="text/javascript" language="javascript"> |
<script type="text/javascript" language="javascript"> |
function checkUpload(formname) { |
function checkUpload(formname) { |
Line 9021 sub scantron_download_scantron_data {
|
Line 9314 sub scantron_download_scantron_data {
|
&Apache::lonnet::allowuploaded('/adm/grades',$skipped); |
&Apache::lonnet::allowuploaded('/adm/grades',$skipped); |
$r->print(' |
$r->print(' |
<p> |
<p> |
'.&mt('[_1]Original[_2] file as uploaded by the scantron office.', |
'.&mt('[_1]Original[_2] file as uploaded by bubblesheet scanning office.', |
'<a href="'.$orig.'">','</a>').' |
'<a href="'.$orig.'">','</a>').' |
</p> |
</p> |
<p> |
<p> |
Line 9085 sub checkscantron_results {
|
Line 9378 sub checkscantron_results {
|
|
|
my $count=&get_todo_count($scanlines,$scan_data); |
my $count=&get_todo_count($scanlines,$scan_data); |
my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,$count); |
my %prog_state=&Apache::lonhtmlcommon::Create_PrgWin($r,$count); |
my ($username,$domain,$started,%ordered); |
my ($username,$domain,$started); |
&scantron_get_maxbubble(\$nav_error,\%scantron_config); # Need the bubble lines array to parse. |
&scantron_get_maxbubble(\$nav_error,\%scantron_config); # Need the bubble lines array to parse. |
if ($nav_error) { |
if ($nav_error) { |
$r->print(&navmap_errormsg()); |
$r->print(&navmap_errormsg()); |
Line 9197 sub checkscantron_results {
|
Line 9490 sub checkscantron_results {
|
'<td>'.&mt('Bubblesheet').'</td><td>'.$showscandata.'</td><td rowspan="2">'.$last.'</td><td rowspan="2">'.$pid.'</td>'."\n". |
'<td>'.&mt('Bubblesheet').'</td><td>'.$showscandata.'</td><td rowspan="2">'.$last.'</td><td rowspan="2">'.$pid.'</td>'."\n". |
'</tr>'."\n". |
'</tr>'."\n". |
'<tr class="'.$css_class.'">'."\n". |
'<tr class="'.$css_class.'">'."\n". |
'<td>Submissions</td><td>'.$showrecord.'</td></tr>'."\n"; |
'<td>'.&mt('Submissions').'</td><td>'.$showrecord.'</td></tr>'."\n"; |
$passed ++; |
$passed ++; |
} else { |
} else { |
my $css_class = ($failed % 2)?'LC_odd_row':'LC_even_row'; |
my $css_class = ($failed % 2)?'LC_odd_row':'LC_even_row'; |
$badstudents .= '<tr class="'.$css_class.'"><td>'.&mt('Bubblesheet').'</td><td><span class="LC_nobreak">'.$scandata{$pid}.'</span></td><td rowspan="2">'.$last.'</td><td rowspan="2">'.$pid.'</td>'."\n". |
$badstudents .= '<tr class="'.$css_class.'"><td>'.&mt('Bubblesheet').'</td><td><span class="LC_nobreak">'.$scandata{$pid}.'</span></td><td rowspan="2">'.$last.'</td><td rowspan="2">'.$pid.'</td>'."\n". |
'</tr>'."\n". |
'</tr>'."\n". |
'<tr class="'.$css_class.'">'."\n". |
'<tr class="'.$css_class.'">'."\n". |
'<td>Submissions</td><td><span class="LC_nobreak">'.$record{$pid}.'</span></td>'."\n". |
'<td>'.&mt('Submissions').'</td><td><span class="LC_nobreak">'.$record{$pid}.'</span></td>'."\n". |
'</tr>'."\n"; |
'</tr>'."\n"; |
$failed ++; |
$failed ++; |
} |
} |
Line 9709 GRADINGMENUJS
|
Line 10002 GRADINGMENUJS
|
return $result; |
return $result; |
} |
} |
|
|
|
sub substatus_options { |
|
return &Apache::lonlocal::texthash( |
|
'yes' => 'with submissions', |
|
'queued' => 'in grading queue', |
|
'graded' => 'with ungraded submissions', |
|
'incorrect' => 'with incorrect submissions', |
|
'all' => 'with any status'); |
|
} |
|
|
sub reset_perm { |
sub reset_perm { |
undef(%perm); |
undef(%perm); |
} |
} |
Line 10546 At least the logic that drives this has
|
Line 10848 At least the logic that drives this has
|
ssi_with_retries - Does the server side include of a resource. |
ssi_with_retries - Does the server side include of a resource. |
if the ssi call returns an error we'll retry it up to |
if the ssi call returns an error we'll retry it up to |
the number of times requested by the caller. |
the number of times requested by the caller. |
If we still have a proble, no text is appended to the |
If we still have a problem, no text is appended to the |
output and we set some global variables. |
output and we set some global variables. |
to indicate to the caller an SSI error occurred. |
to indicate to the caller an SSI error occurred. |
All of this is supposed to deal with the issues described |
All of this is supposed to deal with the issues described |
in LonCAPA BZ 5631 see: |
in LON-CAPA BZ 5631 see: |
http://bugs.lon-capa.org/show_bug.cgi?id=5631 |
http://bugs.lon-capa.org/show_bug.cgi?id=5631 |
by informing the user that this happened. |
by informing the user that this happened. |
|
|