version 1.528.2.10, 2009/01/16 02:36:30
|
version 1.528.2.11, 2009/03/20 19:15:29
|
Line 255 sub showResourceInfo {
|
Line 255 sub showResourceInfo {
|
$partsseen{$partID}=1; |
$partsseen{$partID}=1; |
} |
} |
my $display_part=&get_display_part($partID,$symb); |
my $display_part=&get_display_part($partID,$symb); |
$result.='<td>'.&mt('<b>Part: </b>[_1]',$display_part).' <span class="LC_internal_info">'. |
$result.='<td><b>'.&mt('Part').': </b>'.$display_part. |
$resID.'</span></td>'. |
' <span class="LC_internal_info">'.$resID.'</span></td>'. |
'<td>'.&mt('<b>Type: </b>[_1]',$responsetype).'</td></tr>'; |
'<td><b>'.&mt('Type').': </b>'.$responsetype.'</td></tr>'; |
# '<td>'.&mt('<b>Handgrade: </b>[_1]',$handgrade).'</td></tr>'; |
# '<td>'.&mt('<b>Handgrade: </b>[_1]',$handgrade).'</td></tr>'; |
} |
} |
} |
} |
Line 306 sub reset_caches {
|
Line 306 sub reset_caches {
|
sub get_radiobutton_correct_foil { |
sub get_radiobutton_correct_foil { |
my ($partid,$respid,$symb,$uname,$udom)=@_; |
my ($partid,$respid,$symb,$uname,$udom)=@_; |
my $analyze = &get_analyze($symb,$uname,$udom); |
my $analyze = &get_analyze($symb,$uname,$udom); |
foreach my $foil (@{&get_order($partid,$respid,$symb,$uname,$udom)}) { |
my $foils = &get_order($partid,$respid,$symb,$uname,$udom); |
if ($analyze->{"$partid.$respid.foil.value.$foil"} eq 'true') { |
if (ref($foils) eq 'ARRAY') { |
return $foil; |
foreach my $foil (@{$foils}) { |
} |
if ($analyze->{"$partid.$respid.foil.value.$foil"} eq 'true') { |
} |
return $foil; |
|
} |
|
} |
|
} |
} |
} |
} |
} |
|
|
Line 737 sub verifyreceipt {
|
Line 740 sub verifyreceipt {
|
|
|
my $title.= |
my $title.= |
'<h3><span class="LC_info">'. |
'<h3><span class="LC_info">'. |
&mt('Verifying Submission Receipt [_1]',$receipt). |
&mt('Verifying Receipt No. [_1]',$receipt). |
'</span></h3>'."\n". |
'</span></h3>'."\n". |
'<h4>'.&mt('<b>Resource: </b>[_1]',$env{'form.probTitle'}). |
'<h4>'.&mt('<b>Resource: </b>[_1]',$env{'form.probTitle'}). |
'</h4>'."\n"; |
'</h4>'."\n"; |
Line 822 sub listStudents {
|
Line 825 sub listStudents {
|
&Apache::lonnet::gettitle($symb) : $env{'form.probTitle'}; |
&Apache::lonnet::gettitle($symb) : $env{'form.probTitle'}; |
|
|
my $result='<h3><span class="LC_info"> '. |
my $result='<h3><span class="LC_info"> '. |
&mt($viewgrade.' Submissions for a Student or a Group of Students') |
&mt("$viewgrade Submissions for a Student or a Group of Students") |
.'</span></h3>'; |
.'</span></h3>'; |
|
|
my ($table,undef,$hdgrade,$partlist,$handgrade) = &showResourceInfo($symb,$env{'form.probTitle'},($env{'form.showgrading'} eq 'yes')); |
my ($table,undef,$hdgrade,$partlist,$handgrade) = &showResourceInfo($symb,$env{'form.probTitle'},($env{'form.showgrading'} eq 'yes')); |
|
|
my %lt = ( 'multiple' => |
my %lt = &Apache::lonlocal::texthash ( |
"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' => |
'single' => 'Please select the student before clicking on the Next button.', |
"Please select the student before clicking on the Next button.", |
); |
); |
|
%lt = &Apache::lonlocal::texthash(%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 875 LISTJAVASCRIPT
|
Line 876 LISTJAVASCRIPT
|
"\n".$table; |
"\n".$table; |
|
|
$gradeTable .= |
$gradeTable .= |
' '. |
' <b>'.&mt('View Problem Text').': </b>'. |
&mt('<b>View Problem Text: </b>[_1]', |
|
'<label><input type="radio" name="vProb" value="no" checked="checked" /> '.&mt('no').' </label>'."\n". |
'<label><input type="radio" name="vProb" value="no" checked="checked" /> '.&mt('no').' </label>'."\n". |
'<label><input type="radio" name="vProb" value="yes" /> '.&mt('one student').' </label>'."\n". |
'<label><input type="radio" name="vProb" value="yes" /> '.&mt('one student').' </label>'."\n". |
'<label><input type="radio" name="vProb" value="all" /> '.&mt('all students').' </label>').'<br />'."\n"; |
'<label><input type="radio" name="vProb" value="all" /> '.&mt('all students').' </label><br />'."\n"; |
$gradeTable .= |
$gradeTable .= |
' '. |
' <b>'.&mt('View Answer').': </b>'. |
&mt('<b>View Answer: </b>[_1]', |
|
'<label><input type="radio" name="vAns" value="no" /> '.&mt('no').' </label>'."\n". |
'<label><input type="radio" name="vAns" value="no" /> '.&mt('no').' </label>'."\n". |
'<label><input type="radio" name="vAns" value="yes" /> '.&mt('one student').' </label>'."\n". |
'<label><input type="radio" name="vAns" value="yes" /> '.&mt('one student').' </label>'."\n". |
'<label><input type="radio" name="vAns" value="all" checked="checked" /> '.&mt('all students').' </label>').'<br />'."\n"; |
'<label><input type="radio" name="vAns" value="all" checked="checked" /> '.&mt('all students').' </label><br />'."\n"; |
|
|
my $submission_options; |
my $submission_options; |
if ($env{'form.handgrade'} eq 'yes' && scalar(@$partlist) > 1) { |
if ($env{'form.handgrade'} eq 'yes' && scalar(@$partlist) > 1) { |
Line 901 LISTJAVASCRIPT
|
Line 900 LISTJAVASCRIPT
|
'<label><input type="radio" name="lastSub" value="datesub" /> '.&mt('by dates and submissions').' </label>'."\n". |
'<label><input type="radio" name="lastSub" value="datesub" /> '.&mt('by dates and submissions').' </label>'."\n". |
'<label><input type="radio" name="lastSub" value="all" /> '.&mt('all details').'</label>'; |
'<label><input type="radio" name="lastSub" value="all" /> '.&mt('all details').'</label>'; |
$gradeTable .= |
$gradeTable .= |
' '. |
' <b>'.&mt('Submissions').': </b>'.$submission_options.'<br />'."\n"; |
&mt('<b>Submissions: </b>[_1]',$submission_options).'<br />'."\n"; |
|
|
|
$gradeTable .= |
$gradeTable .= |
' '. |
' <b>'.&mt('Grading Increments').': </b>'. |
&mt('<b>Grading Increments:</b> [_1]', |
|
'<select name="increment">'. |
'<select name="increment">'. |
'<option value="1">'.&mt('Whole Points').'</option>'. |
'<option value="1">'.&mt('Whole Points').'</option>'. |
'<option value=".5">'.&mt('Half Points').'</option>'. |
'<option value=".5">'.&mt('Half Points').'</option>'. |
'<option value=".25">'.&mt('Quarter Points').'</option>'. |
'<option value=".25">'.&mt('Quarter Points').'</option>'. |
'<option value=".1">'.&mt('Tenths of a Point').'</option>'. |
'<option value=".1">'.&mt('Tenths of a Point').'</option>'. |
'</select>'); |
'</select>'; |
|
|
$gradeTable .= |
$gradeTable .= |
&build_section_inputs(). |
&build_section_inputs(). |
Line 931 LISTJAVASCRIPT
|
Line 928 LISTJAVASCRIPT
|
&Apache::lonhtmlcommon::StatusOptions($saveStatus,undef,1,'javascript:reLoadList(this.form);')).'<br />'; |
&Apache::lonhtmlcommon::StatusOptions($saveStatus,undef,1,'javascript:reLoadList(this.form);')).'<br />'; |
} |
} |
|
|
$gradeTable.=&mt('To '.lc($viewgrade).' a submission or a group of submissions, click on the check box(es) '. |
$gradeTable.=&mt('To '.lc($viewgrade)." a submission or a group of submissions, click on the check box(es) next to the student's name(s). Then click on the Next button.").'<br />'."\n". |
'next to the student\'s name(s). Then click on the Next button.').'<br />'."\n". |
|
'<input type="hidden" name="command" value="processGroup" />'."\n"; |
'<input type="hidden" name="command" value="processGroup" />'."\n"; |
|
|
# checkall buttons |
# checkall buttons |
$gradeTable.=&check_script('gradesub', 'stuinfo'); |
$gradeTable.=&check_script('gradesub', 'stuinfo'); |
$gradeTable.='<input type="button" '."\n". |
$gradeTable.='<input type="button" '."\n". |
'onClick="javascript:checkSelect(this.form.stuinfo);" '."\n". |
'onClick="javascript:checkSelect(this.form.stuinfo);" '."\n". |
'value="'.&mt('Next->').'" /> <br />'."\n"; |
'value="'.&mt('Next').' →" /> <br />'."\n"; |
$gradeTable.=&check_buttons(); |
$gradeTable.=&check_buttons(); |
$gradeTable.='<label><input type="checkbox" name="checkPlag" checked="checked" />'.&mt('Check For Plagiarism').'</label>'; |
$gradeTable.='<label><input type="checkbox" name="checkPlag" checked="checked" />'.&mt('Check For Plagiarism').'</label>'; |
my ($classlist, undef, $fullname) = &getclasslist($getsec,'1',$getgroup); |
my ($classlist, undef, $fullname) = &getclasslist($getsec,'1',$getgroup); |
Line 1059 LISTJAVASCRIPT
|
Line 1055 LISTJAVASCRIPT
|
$gradeTable.=&Apache::loncommon::end_data_table()."\n". |
$gradeTable.=&Apache::loncommon::end_data_table()."\n". |
'<input type="button" '. |
'<input type="button" '. |
'onClick="javascript:checkSelect(this.form.stuinfo);" '. |
'onClick="javascript:checkSelect(this.form.stuinfo);" '. |
'value="'.&mt('Next->').'" /></form>'."\n"; |
'value="'.&mt('Next').' →" /></form>'."\n"; |
if ($ctr == 0) { |
if ($ctr == 0) { |
my $num_students=(scalar(keys(%$fullname))); |
my $num_students=(scalar(keys(%$fullname))); |
if ($num_students eq 0) { |
if ($num_students eq 0) { |
Line 1155 sub processGroup {
|
Line 1151 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 = '); |
$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 1165 sub sub_page_js {
|
Line 1162 sub sub_page_js {
|
gradeBox.value = pts; |
gradeBox.value = pts; |
var resetbox = false; |
var resetbox = false; |
if (isNaN(pts) || pts < 0) { |
if (isNaN(pts) || pts < 0) { |
alert("A number equal or greater than 0 is expected. Entered value = "+pts); |
alert("$alertmsg"+pts); |
for (var i=0; i<radioButton.length; i++) { |
for (var i=0; i<radioButton.length; i++) { |
if (radioButton[i].checked) { |
if (radioButton[i].checked) { |
gradeBox.value = i; |
gradeBox.value = i; |
Line 1410 INNERJS
|
Line 1407 INNERJS
|
|
|
my $docopen=&Apache::lonhtmlcommon::javascript_docopen(); |
my $docopen=&Apache::lonhtmlcommon::javascript_docopen(); |
$docopen=~s/^document\.//; |
$docopen=~s/^document\.//; |
|
my $alertmsg = &mt('Please select a word or group of words from document and then click this link.'); |
$request->print(<<SUBJAVASCRIPT); |
$request->print(<<SUBJAVASCRIPT); |
<script type="text/javascript" language="javascript"> |
<script type="text/javascript" language="javascript"> |
|
|
Line 1442 INNERJS
|
Line 1440 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("Please select a word or group of words from document and then click this link."); |
alert("$alertmsg"); |
return; |
return; |
} |
} |
var nret = prompt("Add selection to keyword list? Edit if desired.",cleantxt); |
var nret = prompt("Add selection to keyword list? Edit if desired.",cleantxt); |
Line 1697 sub gradeBox {
|
Line 1695 sub gradeBox {
|
$wgt.')" /></td>'."\n"; |
$wgt.')" /></td>'."\n"; |
$line.='<td>/'.$wgt.' '.$wgtmsg. |
$line.='<td>/'.$wgt.' '.$wgtmsg. |
($$record{'resource.'.$partid.'.solved'} eq 'correct_by_student' ? ' '.$checkIcon : ''). |
($$record{'resource.'.$partid.'.solved'} eq 'correct_by_student' ? ' '.$checkIcon : ''). |
' </td><td>'."\n"; |
' </td><td><b>'.&mt('Grade Status').':</b>'."\n"; |
$line.='<select name="GD_SEL'.$counter.'_'.$partid.'" '. |
$line.='<select name="GD_SEL'.$counter.'_'.$partid.'" '. |
'onChange="javascript:clearRadBox(this.form,\''.$counter.'_'.$partid.'\')" >'."\n"; |
'onChange="javascript:clearRadBox(this.form,\''.$counter.'_'.$partid.'\')" >'."\n"; |
if ($$record{'resource.'.$partid.'.solved'} eq 'excused') { |
if ($$record{'resource.'.$partid.'.solved'} eq 'excused') { |
Line 1711 sub gradeBox {
|
Line 1709 sub gradeBox {
|
|
|
|
|
$result .= |
$result .= |
&mt('<td><b>Part:</b></td><td>[_1]</td><td><b>Points:</b></td><td>[_2]</td><td>or</td><td>[_3]</td>',$display_part,$radio,$line); |
'<td><b>'.&mt('Part').':</b></td><td>'.$display_part.'</td><td><b>'.&mt('Points').':</b></td><td>'.$radio.'</td><td>'.&mt('or').'</td><td>'.$line.'</td>'; |
|
|
|
|
$result.='</tr></table>'."\n"; |
$result.='</tr></table>'."\n"; |
$result.='<input type="hidden" name="stores'.$counter.'_'.$partid.'" value="" />'."\n". |
$result.='<input type="hidden" name="stores'.$counter.'_'.$partid.'" value="" />'."\n". |
Line 2094 KEYWORDS
|
Line 2091 KEYWORDS
|
$lastsubonly.="\n".'<div class="LC_grade_submission_part"><b>Part:</b> '. |
$lastsubonly.="\n".'<div class="LC_grade_submission_part"><b>Part:</b> '. |
$display_part.' <span class="LC_internal_info">( ID '.$respid. |
$display_part.' <span class="LC_internal_info">( ID '.$respid. |
' )</span> '. |
' )</span> '. |
'<span class="LC_warning">'.&mt('Nothing submitted - no attempts').'</span><br /><br /></div>'; |
'<span class="LC_warning">'.&mt('Nothing submitted - no attempts.').'</span><br /><br /></div>'; |
next; |
next; |
} |
} |
foreach my $submission (@$string) { |
foreach my $submission (@$string) { |
Line 2146 KEYWORDS
|
Line 2143 KEYWORDS
|
} |
} |
$lastsubonly.='<b>'.&mt('Submitted Answer:').' </b>'. |
$lastsubonly.='<b>'.&mt('Submitted Answer:').' </b>'. |
&cleanRecord($subval,$responsetype,$symb,$partid, |
&cleanRecord($subval,$responsetype,$symb,$partid, |
$respid,\%record,$order); |
$respid,\%record,$order,undef,$uname,$udom); |
if ($similar) {$lastsubonly.="<br /><br />$similar\n";} |
if ($similar) {$lastsubonly.="<br /><br />$similar\n";} |
$lastsubonly.='</div>'; |
$lastsubonly.='</div>'; |
} |
} |
Line 2275 KEYWORDS
|
Line 2272 KEYWORDS
|
'<option>7</option><option>10</option></select>'."\n"; |
'<option>7</option><option>10</option></select>'."\n"; |
my $nsel = ($env{'form.NTSTU'} ne '' ? $env{'form.NTSTU'} : '1'); |
my $nsel = ($env{'form.NTSTU'} ne '' ? $env{'form.NTSTU'} : '1'); |
$ntstu =~ s/<option>$nsel</<option selected="selected">$nsel</; |
$ntstu =~ s/<option>$nsel</<option selected="selected">$nsel</; |
$endform.=&mt('[_1]student(s)',$ntstu); |
$endform.=&mt('[quant,_1,student]',$ntstu); |
$endform.=' <input type="button" value="'.&mt('Previous').'" '. |
$endform.=' <input type="button" value="'.&mt('Previous').'" '. |
'onClick="javascript:checksubmit(this.form,\'Previous\');" target="_self" /> '."\n". |
'onClick="javascript:checksubmit(this.form,\'Previous\');" target="_self" /> '."\n". |
'<input type="button" value="'.&mt('Next').'" '. |
'<input type="button" value="'.&mt('Next').'" '. |
Line 3018 sub file_name_version_ext {
|
Line 3015 sub file_name_version_ext {
|
sub viewgrades_js { |
sub viewgrades_js { |
my ($request) = shift; |
my ($request) = shift; |
|
|
|
my $alertmsg = &mt('A number equal or greater than 0 is expected. Entered value = '); |
$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 3026 sub viewgrades_js {
|
Line 3024 sub viewgrades_js {
|
if (point == "textval") { |
if (point == "textval") { |
point = document.classgrade["TEXTVAL_"+partid].value; |
point = document.classgrade["TEXTVAL_"+partid].value; |
if (isNaN(point) || parseFloat(point) < 0) { |
if (isNaN(point) || parseFloat(point) < 0) { |
alert("A number equal or greater than 0 is expected. Entered value = "+parseFloat(point)); |
alert("$alertmsg"+parseFloat(point)); |
var resetbox = false; |
var resetbox = false; |
for (var i=0; i<radioButton.length; i++) { |
for (var i=0; i<radioButton.length; i++) { |
if (radioButton[i].checked) { |
if (radioButton[i].checked) { |
Line 3124 sub viewgrades_js {
|
Line 3122 sub viewgrades_js {
|
var weight = document.classgrade["weight_"+partid].value; |
var weight = document.classgrade["weight_"+partid].value; |
|
|
if (isNaN(point) || parseFloat(point) < 0) { |
if (isNaN(point) || parseFloat(point) < 0) { |
alert("A number equal or greater than 0 is expected. Entered value = "+parseFloat(point)); |
alert("$alertmsg"+parseFloat(point)); |
textbox.value = ""; |
textbox.value = ""; |
return; |
return; |
} |
} |
Line 3213 sub viewgrades {
|
Line 3211 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 $sectionClass; |
my ($common_header,$specific_header); |
my $section_display = join (", ",&Apache::loncommon::get_env_multiple('form.section')); |
|
if ($env{'form.section'} eq 'all') { |
if ($env{'form.section'} eq 'all') { |
$sectionClass='Class'; |
$common_header = &mt('Assign Common Grade to Class'); |
|
$specific_header = &mt('Assign Grade to Specific Students in Class'); |
} elsif ($env{'form.section'} eq 'none') { |
} elsif ($env{'form.section'} eq 'none') { |
$sectionClass='Students in no Section'; |
$common_header = &mt('Assign Common Grade to Students in no Section'); |
|
$specific_header = &mt('Assign Grade to Specific Students in no Section'); |
} else { |
} else { |
$sectionClass='Students in Section(s) [_1]'; |
my $section_display = join (", ",&Apache::loncommon::get_env_multiple('form.section')); |
|
$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.= |
$result.= '<h3>'.$common_header.'</h3>'.&Apache::loncommon::start_data_table(); |
'<h3>'. |
|
&mt("Assign Common Grade To $sectionClass",$section_display).'</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 ($partlist,$handgrade,$responseType) = &response_type($symb); |
my ($partlist,$handgrade,$responseType) = &response_type($symb); |
Line 3256 sub viewgrades {
|
Line 3254 sub viewgrades {
|
my $line = '<input type="text" name="TEXTVAL_'. |
my $line = '<input type="text" name="TEXTVAL_'. |
$partid.'" size="4" '.'onChange="javascript:writePoint(\''. |
$partid.'" size="4" '.'onChange="javascript:writePoint(\''. |
$partid.'\','.$weight{$partid}.',\'textval\')" /> /'. |
$partid.'\','.$weight{$partid}.',\'textval\')" /> /'. |
$weight{$partid}.' (problem weight)</td>'."\n"; |
$weight{$partid}.' '.&mt('(problem weight)').'</td>'."\n"; |
$line.= '<td><select name="SELVAL_'.$partid.'"'. |
$line.= '<td><b>'.&mt('Grade Status').':</b><select name="SELVAL_'.$partid.'"'. |
'onChange="javascript:writeRadText(\''.$partid.'\','. |
'onChange="javascript:writeRadText(\''.$partid.'\','. |
$weight{$partid}.')"> '. |
$weight{$partid}.')"> '. |
'<option selected="selected"> </option>'. |
'<option selected="selected"> </option>'. |
Line 3272 sub viewgrades {
|
Line 3270 sub viewgrades {
|
|
|
$result.= |
$result.= |
&Apache::loncommon::start_data_table_row()."\n". |
&Apache::loncommon::start_data_table_row()."\n". |
&mt('<td><b>Part:</b></td><td>[_1]</td><td><b>Points:</b></td><td>[_2]</td><td>or</td><td>[_3]</td>',$display_part,$radio,$line). |
'<td><b>'.&mt('Part').':</b></td><td>'.$display_part.'</td><td><b>'.&mt('Points').':</b></td><td>'.$radio.'</td><td>'.&mt('or').'</td><td>'.$line.'</td>'. |
&Apache::loncommon::end_data_table_row()."\n"; |
&Apache::loncommon::end_data_table_row()."\n"; |
$ctsparts++; |
$ctsparts++; |
} |
} |
Line 3283 sub viewgrades {
|
Line 3281 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>'.&mt('Assign Grade to Specific Students in '.$sectionClass, |
$result.= '<h3>'.$specific_header.'</h3>'. |
$section_display).'</h3>'; |
&Apache::loncommon::start_data_table(). |
$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"; |
|
my (@parts) = sort(&getpartlist($symb)); |
my (@parts) = sort(&getpartlist($symb)); |
my (undef,undef,$url)=&Apache::lonnet::decode_symb($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'); |
$display =~ s|^Number of Attempts|Tries<br />|; # makes the column narrower |
my $narrowtext = &mt('Tries').'<br />'; |
|
$display =~ s{^Number of Attempts}{$narrowtext}; # makes the column narrower |
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,$symb); |
my $display_part=&get_display_part($partid,$symb); |
if ($display =~ /^Partial Credit Factor/) { |
if ($display =~ /^Partial Credit Factor/) { |
$result.='<th>'. |
$result.='<th>'. |
&mt('Score Part: [_1]<br /> (weight = [_2])', |
&mt('Score Part: [_1] (weight = [_2])', |
$display_part,$weight{$partid}).'</th>'."\n"; |
$display_part.'<br />',$weight{$partid}).'</th>'."\n"; |
next; |
next; |
|
|
} else { |
} else { |
if ($display =~ /Problem Status/) { |
if ($display =~ /Problem Status/) { |
my $grade_status_mt = &mt('Grade Status'); |
my $grade_status_mt = &mt('Grade Status').'<br />'; |
$display =~ s{Problem Status}{$grade_status_mt<br />}; |
$display =~ s{Problem Status}{$grade_status_mt}; |
} |
} |
my $part_mt = &mt('Part:'); |
my $part_mt = &mt('Part:'); |
$display =~s{\[Part: \Q$partid\E\]}{$part_mt $display_part}; |
$display =~s{\[Part: \Q$partid\E\]}{$part_mt $display_part}; |
Line 3465 sub editgrades {
|
Line 3463 sub editgrades {
|
if ($part !~ m/^\Q$partid\E/) { next;} |
if ($part !~ m/^\Q$partid\E/) { next;} |
if ($type eq 'awarded' || $type eq 'solved') { next; } |
if ($type eq 'awarded' || $type eq 'solved') { next; } |
my $display=&Apache::lonnet::metadata($url,$stores.'.display'); |
my $display=&Apache::lonnet::metadata($url,$stores.'.display'); |
$display =~ s/\[Part: (\w)+\]//; |
$display =~ s/\[Part: \Q$part\E\]//; |
$display =~ s/Number of Attempts/Tries/; |
my $narrowtext = &mt('Tries'); |
$header .= '<th align="center">'.&mt('Old '.$display).'</th>'. |
$display =~ s{Number of Attempts}{$narrowtext}; |
'<th align="center">'.&mt('New '.$display).'</th>'; |
$header .= '<th align="center">'.&mt('Old').' '.$display).'</th>'. |
|
'<th align="center">'.&mt('New').' '.$display).'</th>'; |
$columns{$partid}+=2; |
$columns{$partid}+=2; |
} |
} |
} |
} |
Line 3810 ENDPICK
|
Line 3809 ENDPICK
|
} |
} |
|
|
sub checkforfile_js { |
sub checkforfile_js { |
|
my $alertmsg = &mt('Please use the browse button to select a file from your local directory.'); |
my $result =<<CSVFORMJS; |
my $result =<<CSVFORMJS; |
<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("Please use the browse button to select a file from your local directory."); |
alert("$alertmsg"); |
return false; |
return false; |
} |
} |
formname.submit(); |
formname.submit(); |
Line 3834 sub upcsvScores_form {
|
Line 3834 sub upcsvScores_form {
|
$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>'.&mt('Specify a file containing the class scores for current resource'). |
$result.=' <b>'.&mt('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"; |
my $upload=&mt("Upload Scores"); |
my $upload=&mt("Upload Scores"); |
Line 4088 sub csvuploadassign {
|
Line 4088 sub csvuploadassign {
|
sub pickStudentPage { |
sub pickStudentPage { |
my ($request) = shift; |
my ($request) = shift; |
|
|
|
my $alertmsg = &mt('Please select the student you wish to grade.'); |
$request->print(<<LISTJAVASCRIPT); |
$request->print(<<LISTJAVASCRIPT); |
<script type="text/javascript" language="javascript"> |
<script type="text/javascript" language="javascript"> |
|
|
function checkPickOne(formname) { |
function checkPickOne(formname) { |
if (radioSelection(formname.student) == null) { |
if (radioSelection(formname.student) == null) { |
alert("Please select the student you wish to grade."); |
alert("$alertmsg"); |
return; |
return; |
} |
} |
ptr = pullDownSelection(formname.selectpage); |
ptr = pullDownSelection(formname.selectpage); |
Line 4128 LISTJAVASCRIPT
|
Line 4129 LISTJAVASCRIPT
|
$ctr++; |
$ctr++; |
} |
} |
$select.= '</select>'; |
$select.= '</select>'; |
$result.=&mt(' <b>Problems from:</b> [_1]',$select)."<br />\n"; |
$result.=' <b>'.&mt('Problems from').":</b> $select<br />\n"; |
|
|
$ctr=0; |
$ctr=0; |
foreach (@$titles) { |
foreach (@$titles) { |
Line 4143 LISTJAVASCRIPT
|
Line 4144 LISTJAVASCRIPT
|
my $options = |
my $options = |
'<label><input type="radio" name="vProb" value="no" checked="checked" /> '.&mt('no').' </label>'."\n". |
'<label><input type="radio" name="vProb" value="no" checked="checked" /> '.&mt('no').' </label>'."\n". |
'<label><input type="radio" name="vProb" value="yes" /> '.&mt('yes').' </label>'."<br />\n"; |
'<label><input type="radio" name="vProb" value="yes" /> '.&mt('yes').' </label>'."<br />\n"; |
$result.=' '.&mt('<b>View Problems Text: </b> [_1]',$options); |
$result.=' <b>'.&mt('View Problem Text').": </b> $options"; |
|
|
$options = |
$options = |
'<label><input type="radio" name="lastSub" value="none" /> '.&mt('none').' </label>'."\n". |
'<label><input type="radio" name="lastSub" value="none" /> '.&mt('none').' </label>'."\n". |
'<label><input type="radio" name="lastSub" value="datesub" checked="checked" /> '.&mt('by dates and submissions').'</label>'."\n". |
'<label><input type="radio" name="lastSub" value="datesub" checked="checked" /> '.&mt('by dates and submissions').'</label>'."\n". |
'<label><input type="radio" name="lastSub" value="all" /> '.&mt('all details').' </label>'."\n"; |
'<label><input type="radio" name="lastSub" value="all" /> '.&mt('all details').' </label>'."\n"; |
$result.=' '.&mt('<b>Submission Details: </b>[_1]',$options); |
$result.=' >b>'.&mt('Submissions').": </b>$options"; |
|
|
$result.=&build_section_inputs(); |
$result.=&build_section_inputs(); |
my $stu_status = join(':',&Apache::loncommon::get_env_multiple('form.Status')); |
my $stu_status = join(':',&Apache::loncommon::get_env_multiple('form.Status')); |
Line 4158 LISTJAVASCRIPT
|
Line 4159 LISTJAVASCRIPT
|
'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". |
'<input type="hidden" name="symb" value="'.&Apache::lonenc::check_encrypt($symb).'" />'."\n". |
'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."<br />\n"; |
'<input type="hidden" name="saveState" value="'.$env{'form.saveState'}.'" />'."<br />\n"; |
|
|
$result.=' '.&mt('<b>Use CODE: [_1] </b>', |
$result.=' <b>'.&mt('Use CODE').': </b> <input type="text" name="CODE" value="" /><br />'."\n"; |
'<input type="text" name="CODE" value="" />'). |
|
'<br />'."\n"; |
|
|
|
$result.=' <input type="button" '. |
$result.=' <input type="button" '. |
'onClick="javascript:checkPickOne(this.form);" value="'.&mt('Next->').'" /><br />'."\n"; |
'onClick="javascript:checkPickOne(this.form);" value="'.&mt('Next').' →" /><br />'."\n"; |
|
|
$request->print($result); |
$request->print($result); |
|
|
Line 4339 sub displayPage {
|
Line 4338 sub displayPage {
|
# $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 /> '.&mt('<b>Correct answer:</b><br />[_1]',$companswer); |
$studentTable.=' <b>'.$title.'</b> <br /> <b>'.&mt('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 4409 sub displaySubByDates {
|
Line 4408 sub displaySubByDates {
|
my %orders; |
my %orders; |
$mark{'correct_by_student'} = $checkIcon; |
$mark{'correct_by_student'} = $checkIcon; |
if (!exists($$record{'1:timestamp'})) { |
if (!exists($$record{'1:timestamp'})) { |
return '<br /> <span class="LC_warning">'.&mt('Nothing submitted - no attempts').'</span><br />'; |
return '<br /> <span class="LC_warning">'.&mt('Nothing submitted - no attempts.').'</span><br />'; |
} |
} |
|
|
my $interaction; |
my $interaction; |
Line 5525 sub scantron_parse_scanline {
|
Line 5524 sub scantron_parse_scanline {
|
my ($line,$whichline,$scantron_config,$scan_data,$just_header)=@_; |
my ($line,$whichline,$scantron_config,$scan_data,$just_header)=@_; |
|
|
my %record; |
my %record; |
my $questions=substr($line,$$scantron_config{'Qstart'}-1); # Answers |
my $lastpos = $env{'form.scantron_maxbubble'}*$$scantron_config{'Qlength'}; |
|
my $questions=substr($line,$$scantron_config{'Qstart'}-1,$lastpos); # Answers |
my $data=substr($line,0,$$scantron_config{'Qstart'}-1); # earlier stuff |
my $data=substr($line,0,$$scantron_config{'Qstart'}-1); # earlier stuff |
if (!($$scantron_config{'CODElocation'} eq 0 || |
if (!($$scantron_config{'CODElocation'} eq 0 || |
$$scantron_config{'CODElocation'} eq 'none')) { |
$$scantron_config{'CODElocation'} eq 'none')) { |
Line 6232 sub scantron_validate_file {
|
Line 6232 sub scantron_validate_file {
|
} |
} |
if ($stop) { |
if ($stop) { |
if ($validate_phases[$currentphase] eq 'sequence') { |
if ($validate_phases[$currentphase] eq 'sequence') { |
$r->print('<input type="submit" name="submit" value="'.&mt('Ignore ->').' " />'); |
$r->print('<input type="submit" name="submit" value="'.&mt('Ignore').' →" />'); |
$r->print(' '.&mt('this error').' <br />'); |
$r->print(' '.&mt('this error').' <br />'); |
|
|
$r->print(" <p>".&mt("Or click the 'Grading Menu' button to start over.")."</p>"); |
$r->print(" <p>".&mt("Or click the 'Grading Menu' button to start over.")."</p>"); |
} else { |
} else { |
if ($validate_phases[$currentphase] eq 'doublebubble' || $validate_phases[$currentphase] eq 'missingbubbles') { |
if ($validate_phases[$currentphase] eq 'doublebubble' || $validate_phases[$currentphase] eq 'missingbubbles') { |
$r->print('<input type="button" name="submitbutton" value="'.&mt('Continue ->').'" onclick="javascript:verify_bubble_radio(this.form)" />'); |
$r->print('<input type="button" name="submitbutton" value="'.&mt('Continue').' →" onclick="javascript:verify_bubble_radio(this.form)" />'); |
} else { |
} else { |
$r->print('<input type="submit" name="submit" value="'.&mt('Continue ->').'" />'); |
$r->print('<input type="submit" name="submit" value="'.&mt('Continue').' →" />'); |
} |
} |
$r->print(' '.&mt('using corrected info').' <br />'); |
$r->print(' '.&mt('using corrected info').' <br />'); |
$r->print("<input type='submit' value='".&mt("Skip")."' name='scantron_skip_record' />"); |
$r->print("<input type='submit' value='".&mt("Skip")."' name='scantron_skip_record' />"); |
Line 6833 ENDSCRIPT
|
Line 6833 ENDSCRIPT
|
".&mt("[_1]Select[_2] a CODE from the list of all CODEs and use it.", |
".&mt("[_1]Select[_2] a CODE from the list of all CODEs and use it.", |
"<a target='_blank' href='$href'>","</a>")." |
"<a target='_blank' href='$href'>","</a>")." |
</label> |
</label> |
".&mt("Selected CODE is [_1]","<input readonly='true' type='text' size='8' name='scantron_CODE_selectedvalue' onfocus=\"javascript:change_radio('use_found')\" onchange=\"javascript:change_radio('use_found')\" />")); |
".&mt('Selected CODE is [_1]','<input readonly="readonly" type="text" size="8" name="scantron_CODE_selectedvalue" onfocus="javascript:change_radio('use_found')" onchange="javascript:change_radio('use_found')" />')); |
$r->print("\n<br />"); |
$r->print("\n<br />"); |
} |
} |
$r->print(" |
$r->print(" |
Line 7394 sub scantron_get_maxbubble {
|
Line 7394 sub scantron_get_maxbubble {
|
} |
} |
} |
} |
} |
} |
&Apache::lonnet::delenv('scantron\.'); |
&Apache::lonnet::delenv('scantron.'); |
|
|
&save_bubble_lines(); |
&save_bubble_lines(); |
$env{'form.scantron_maxbubble'} = |
$env{'form.scantron_maxbubble'} = |
Line 7647 SCANTRONFORM
|
Line 7647 SCANTRONFORM
|
$studentrecord .= $recording; |
$studentrecord .= $recording; |
} |
} |
if ($studentrecord ne $studentdata) { |
if ($studentrecord ne $studentdata) { |
|
&Apache::lonxml::clear_problem_counter(); |
|
if (&grade_student_bubbles($r,$uname,$udom,$scan_record,$scancode, |
|
\@resources) eq 'ssi_error') { |
|
$ssi_error = 0; # So end of handler error message does not trigger. |
|
$r->print("</form>"); |
|
&ssi_print_error($r); |
|
$r->print(&show_grading_menu_form($symb)); |
|
&Apache::lonnet::remove_lock($lock); |
|
delete($completedstudents{$uname}); |
|
return ''; |
|
} |
$counter = -1; |
$counter = -1; |
$studentrecord = ''; |
$studentrecord = ''; |
foreach my $resource (@resources) { |
foreach my $resource (@resources) { |
Line 7689 SCANTRONFORM
|
Line 7700 SCANTRONFORM
|
if (&Apache::loncommon::connection_aborted($r)) { last; } |
if (&Apache::loncommon::connection_aborted($r)) { last; } |
} continue { |
} continue { |
&Apache::lonxml::clear_problem_counter(); |
&Apache::lonxml::clear_problem_counter(); |
&Apache::lonnet::delenv('scantron\.'); |
&Apache::lonnet::delenv('scantron.'); |
} |
} |
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); |
&Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state); |
&Apache::lonnet::remove_lock($lock); |
&Apache::lonnet::remove_lock($lock); |
Line 7739 sub scantron_upload_scantron_data {
|
Line 7750 sub scantron_upload_scantron_data {
|
<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("Please use the browse button to select a file from your local directory."); |
alert("'.&mt('Please use the browse button to select a file from your local directory.'.'"); |
return false; |
return false; |
} |
} |
formname.submit(); |
formname.submit(); |
Line 8292 sub grading_menu {
|
Line 8303 sub grading_menu {
|
"\n"; |
"\n"; |
} |
} |
$Str .="</form>\n"; |
$Str .="</form>\n"; |
|
my $receiptalert = &mt("Please enter a receipt number given by a student in the receipt box."); |
$request->print(<<GRADINGMENUJS); |
$request->print(<<GRADINGMENUJS); |
<script type="text/javascript" language="javascript"> |
<script type="text/javascript" language="javascript"> |
function checkChoice(formname,val,cmdx) { |
function checkChoice(formname,val,cmdx) { |
Line 8319 sub grading_menu {
|
Line 8331 sub grading_menu {
|
if (nospace == "OK" && isNaN(receiptNo)) {checkOpt = true;} |
if (nospace == "OK" && isNaN(receiptNo)) {checkOpt = true;} |
if (nospace == "notOK" && (isNaN(receiptNo) || receiptNo == "")) {checkOpt = true;} |
if (nospace == "notOK" && (isNaN(receiptNo) || receiptNo == "")) {checkOpt = true;} |
if (checkOpt) { |
if (checkOpt) { |
alert("Please enter a receipt number given by a student in the receipt box."); |
alert("$receiptalert$receiptalert"); |
formname.receipt.value = ""; |
formname.receipt.value = ""; |
formname.receipt.focus(); |
formname.receipt.focus(); |
return false; |
return false; |
Line 8340 sub submit_options {
|
Line 8352 sub submit_options {
|
if (!$symb) {return '';} |
if (!$symb) {return '';} |
my $probTitle = &Apache::lonnet::gettitle($symb); |
my $probTitle = &Apache::lonnet::gettitle($symb); |
|
|
|
my $receiptalert = &mt("Please enter a receipt number given by a student in the receipt box."); |
$request->print(<<GRADINGMENUJS); |
$request->print(<<GRADINGMENUJS); |
<script type="text/javascript" language="javascript"> |
<script type="text/javascript" language="javascript"> |
function checkChoice(formname,val,cmdx) { |
function checkChoice(formname,val,cmdx) { |
Line 8367 sub submit_options {
|
Line 8380 sub submit_options {
|
if (nospace == "OK" && isNaN(receiptNo)) {checkOpt = true;} |
if (nospace == "OK" && isNaN(receiptNo)) {checkOpt = true;} |
if (nospace == "notOK" && (isNaN(receiptNo) || receiptNo == "")) {checkOpt = true;} |
if (nospace == "notOK" && (isNaN(receiptNo) || receiptNo == "")) {checkOpt = true;} |
if (checkOpt) { |
if (checkOpt) { |
alert("Please enter a receipt number given by a student in the receipt box."); |
alert("$receiptalert"); |
formname.receipt.value = ""; |
formname.receipt.value = ""; |
formname.receipt.focus(); |
formname.receipt.focus(); |
return false; |
return false; |
Line 8467 GRADINGMENUJS
|
Line 8480 GRADINGMENUJS
|
</label> |
</label> |
</div> |
</div> |
<div class="LC_grade_select_mode_type"> |
<div class="LC_grade_select_mode_type"> |
<input type="button" onClick="javascript:checkChoice(this.form,\'2\');" value="'.&mt('Next->').'" /> |
<input type="button" onClick="javascript:checkChoice(this.form,\'2\');" value="'.&mt('Next').' →" /> |
</div> |
</div> |
</div> |
</div> |
</div> |
</div> |
Line 8486 GRADINGMENUJS
|
Line 8499 GRADINGMENUJS
|
</label> |
</label> |
</div> |
</div> |
<div class="LC_grade_select_mode_type"> |
<div class="LC_grade_select_mode_type"> |
<input type="button" onClick="javascript:checkChoice(this.form,\'2\');" value="'.&mt('Next->').'" /> |
<input type="button" onClick="javascript:checkChoice(this.form,\'2\');" value="'.&mt('Next').' →" /> |
</div> |
</div> |
</div> |
</div> |
</div> |
</div> |
Line 8590 sub process_clicker {
|
Line 8603 sub process_clicker {
|
$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>'.&mt('Specify a file containing the clicker information for this resource'). |
$result.=' <b>'.&mt('Specify a file containing the clicker information for this resource.'). |
'.</b></td></tr>'."\n"; |
'.</b></td></tr>'."\n"; |
$result.='<tr bgcolor=#ffffe6><td>'."\n"; |
$result.='<tr bgcolor=#ffffe6><td>'."\n"; |
# Attempt to restore parameters from last session, set defaults if not present |
# Attempt to restore parameters from last session, set defaults if not present |
Line 9026 ENDHEADER
|
Line 9039 ENDHEADER
|
} |
} |
} |
} |
# We are done |
# We are done |
$result.='<br />'.&mt('Successfully stored grades for [_1] student(s).',$storecount). |
$result.='<br />'.&mt('Successfully stored grades for [quant,_1,student].',$storecount). |
'</td></tr></table>'."\n". |
'</td></tr></table>'."\n". |
'</td></tr></table><br /><br />'."\n"; |
'</td></tr></table><br /><br />'."\n"; |
return $result.&show_grading_menu_form($symb); |
return $result.&show_grading_menu_form($symb); |