[LON-CAPA-cvs] cvs: loncom /homework grades.pm
ng
lon-capa-cvs@mail.lon-capa.org
Fri, 14 Mar 2003 17:46:31 -0000
This is a MIME encoded message
--ng1047663991
Content-Type: text/plain
ng Fri Mar 14 12:46:31 2003 EDT
Modified files:
/loncom/homework grades.pm
Log:
fix bug 1292 - change message line from text line to textarea
redo the front end grading menu
while in grading menu, remembers the last command
--ng1047663991
Content-Type: text/plain
Content-Disposition: attachment; filename="ng-20030314124631.txt"
Index: loncom/homework/grades.pm
diff -u loncom/homework/grades.pm:1.71 loncom/homework/grades.pm:1.72
--- loncom/homework/grades.pm:1.71 Tue Mar 11 14:32:02 2003
+++ loncom/homework/grades.pm Fri Mar 14 12:46:31 2003
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Grading handler
#
-# $Id: grades.pm,v 1.71 2003/03/11 19:32:02 ng Exp $
+# $Id: grades.pm,v 1.72 2003/03/14 17:46:31 ng Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -209,6 +209,9 @@
$jscript.= '<form action="/adm/grades" method="post" name="onestudent">'."\n".
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n".
'<input type="hidden" name="url" value="'.$url.'" />'."\n".
+ '<input type="hidden" name="lastCmd" value="'.$ENV{'form.lastCmd'}.'" />'."\n".
+ '<input type="hidden" name="lastSec" value="'.$ENV{'form.lastSec'}.'" />'."\n".
+ '<input type="hidden" name="probTitle" value="'.$ENV{'form.probTitle'}.'" />'."\n".
'<input type="hidden" name="command" value="submission" />'."\n".
'<input type="hidden" name="student" value="" />'."\n".
'<input type="hidden" name="userdom" value="" />'."\n".
@@ -237,8 +240,7 @@
my $title.='<h3><font color="#339933">Verifying Submission Receipt '.
$receipt.'</h3></font>'."\n".
- '<font size=+1><b>Problem: </b>'.
- &Apache::lonnet::metadata($ENV{'form.url'},'title').'</font><br><br>'."\n";
+ '<font size=+1><b>Problem: </b>'.$ENV{'form.probTitle'}.'</font><br><br>'."\n";
my ($string,$contents,$matches) = ('','',0);
my (undef,undef,$fullname) = &getclasslist('all','0');
@@ -273,10 +275,6 @@
return $string.&show_grading_menu_form($symb,$url);
}
-#
-# Pick student and page/sequence for manual grading
-
-
#--- This is called by a number of programs.
#--- Called from the Grading Menu - View/Grade an individual student
#--- Also called directly when one clicks on the subm button
@@ -284,7 +282,7 @@
sub listStudents {
my ($request) = shift;
- my ($symb,$url) = &get_symb_and_url();
+ my ($symb,$url) = &get_symb_and_url($request);
my $cdom = $ENV{"course.$ENV{'request.course.id'}.domain"};
my $cnum = $ENV{"course.$ENV{'request.course.id'}.num"};
my $getsec = $ENV{'form.section'} eq '' ? 'all' : $ENV{'form.section'};
@@ -306,8 +304,8 @@
$result='<h3><font color="#339933"> '.
$viewgrade.
' Submissions for a Student or a Group of Students</font></h3>'.
- '<table border="0"><tr><td colspan=3><font size=+1>'.
- '<b>Problem: </b>'.&Apache::lonnet::metadata($url,'title').'</font></td></tr>'.$result;
+ '<table border="0"><tr><td colspan=3><font size=+1>'.
+ '<b>Problem: </b>'.$ENV{'form.probTitle'}.'</font></td></tr>'.$result;
$request->print(<<LISTJAVASCRIPT);
<script type="text/javascript" language="javascript">
@@ -357,6 +355,9 @@
'<input type="hidden" name="response" value="'.$ENV{'form.response'}.'" />'."\n".
'<input type="hidden" name="handgrade" value="'.$ENV{'form.handgrade'}.'" /><br />'."\n".
'<input type="hidden" name="showgrading" value="'.$ENV{'form.showgrading'}.'" /><br />'."\n".
+ '<input type="hidden" name="lastCmd" value="'.$ENV{'form.lastCmd'}.'" />'."\n".
+ '<input type="hidden" name="lastSec" value="'.$ENV{'form.lastSec'}.'" />'."\n".
+ '<input type="hidden" name="probTitle" value="'.$ENV{'form.probTitle'}.'" />'."\n".
'<input type="hidden" name="url" value="'.$url.'" />'."\n".
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n".
'To '.lc($viewgrade).' a submission, click on the check box next to the student\'s name. Then '."\n".
@@ -459,7 +460,8 @@
function updateRadio(formname,id,weight) {
var gradeBox = eval("formname.GD_BOX"+id);
var radioButton = eval("formname.RADVAL"+id);
- var pts = checkSolved(formname,id) == 'update' ? gradeBox.value : weight;
+ var oldpts = eval("formname.oldpts"+id+".value");
+ var pts = checkSolved(formname,id) == 'update' ? gradeBox.value : oldpts;
gradeBox.value = pts;
var resetbox = false;
if (isNaN(pts) || pts < 0) {
@@ -496,16 +498,17 @@
stores.value = "0";
}
- function writeBox(formname,id,pts,weight) {
+ function writeBox(formname,id,pts) {
var gradeBox = eval("formname.GD_BOX"+id);
if (checkSolved(formname,id) == 'update') {
gradeBox.value = pts;
} else {
- gradeBox.value = weight;
+ var oldpts = eval("formname.oldpts"+id+".value");
+ gradeBox.value = oldpts;
var radioButton = eval("formname.RADVAL"+id);
for (var i=0; i<radioButton.length; i++) {
radioButton[i].checked=false;
- if (i == weight) {
+ if (i == oldpts) {
radioButton[i].checked=true;
}
}
@@ -699,7 +702,7 @@
}
function savedMsgHeader(Nmsg,usrctr,fullname) {
- var height = 30*Nmsg+250;
+ var height = 50*Nmsg+250;
var scrollbar = "no";
if (height > 600) {
height = 600;
@@ -762,18 +765,18 @@
pWin.document.write("<td><input name=\\"msgsub\\" type=\\"text\\" value=\\""+msg+"\\"size=\\"60\\" maxlength=\\"80\\"></td></tr>");
}
-function displaySavedMsg(ctr,msg,shwsel) {
+ function displaySavedMsg(ctr,msg,shwsel) {
pWin.document.write("<tr bgcolor=\\"#ffffdd\\">");
pWin.document.write("<td align=\\"center\\">"+ctr+"</td>");
pWin.document.write("<td align=\\"center\\"><input name=\\"msgn"+ctr+"\\" type=\\"checkbox\\"" +shwsel+"></td>");
- pWin.document.write("<td><input name=\\"msg"+ctr+"\\" type=\\"text\\" value=\\""+msg+"\\" size=\\"60\\" maxlength=\\"80\\"></td></tr>");
+ pWin.document.write("<td><textarea name=\\"msg"+ctr+"\\" cols=\\"60\\" rows=\\"3\\">"+msg+"</textarea></td></tr>");
}
function newMsg(newmsg,shwsel) {
pWin.document.write("<tr bgcolor=\\"#ffffdd\\">");
pWin.document.write("<td align=\\"center\\">New</td>");
pWin.document.write("<td align=\\"center\\"><input name=\\"newmsgchk\\" type=\\"checkbox\\"" +shwsel+"></td>");
- pWin.document.write("<td><input name=\\"newmsg\\" type=\\"text\\" onchange=\\"javascript:this.form.newmsgchk.checked=true\\" value=\\""+newmsg+"\\" size=\\"60\\" maxlength=\\"80\\"></td></tr>");
+ pWin.document.write("<td><textarea name=\\"newmsg\\" cols=\\"60\\" rows=\\"3\\" onchange=\\"javascript:this.form.newmsgchk.checked=true\\" >"+newmsg+"</textarea></td></tr>");
}
function msgTail() {
@@ -871,7 +874,6 @@
function highlightend() {
hwdWin.document.write("</table>");
hwdWin.document.write("</td></tr></table> ");
-// hwdWin.document.write("<input type=\\"button\\" value=\\"Save\\" onClick=\\"javascript:updateChoice(0)\\"> ");
hwdWin.document.write("<input type=\\"button\\" value=\\"Save\\" onClick=\\"javascript:updateChoice(1)\\"> ");
hwdWin.document.write("<input type=\\"button\\" value=\\"Cancel\\" onClick=\\"self.close()\\"><br><br>");
hwdWin.document.write("</form>");
@@ -905,7 +907,7 @@
while ($ctr<=$wgt) {
$result.= '<td><input type="radio" name="RADVAL'.$counter.'_'.$partid.'" '.
'onclick="javascript:writeBox(this.form,\''.$counter.'_'.$partid.'\','.
- $ctr.','.$wgt.')" value="'.$ctr.'" '.
+ $ctr.')" value="'.$ctr.'" '.
($score eq $ctr ? 'checked':'').' /> '.$ctr."</td>\n";
$result.=(($ctr+1)%10 == 0 ? '</tr><tr>' : '');
$ctr++;
@@ -964,7 +966,6 @@
$result.='</td></tr></table>';
$result.='</td></tr></table><br />';
return $result;
-# $request->print($result);
}
# --------------------------- show submissions of a student, option to grade
@@ -972,24 +973,20 @@
my ($request,$counter,$total) = @_;
(my $url=$ENV{'form.url'})=~s-^http://($ENV{'SERVER_NAME'}|$ENV{'HTTP_HOST'})--;
-# if ($ENV{'form.student'} eq '') { &moreinfo($request,'Need student login id'); return ''; }
my ($uname,$udom) = ($ENV{'form.student'},$ENV{'form.userdom'});
($uname,$udom) = &finduser($uname) if $udom eq '';
$ENV{'form.fullname'} = &get_fullname ($uname,$udom) if $ENV{'form.fullname'} eq '';
-# if ($uname eq '') { &moreinfo($request,'Unable to find student'); return ''; }
my $symb=($ENV{'form.symb'} ne '' ? $ENV{'form.symb'} : (&Apache::lonnet::symbread($url)));
if ($symb eq '') { $request->print("Unable to handle ambiguous references:$url:."); return ''; }
my $last = ($ENV{'form.lastSub'} eq 'last' ? 'last' : '');
-# $ENV{'form.vProb'} = $ENV{'form.vProb'} ne '' ? $ENV{'form.vProb'} : 'yes';
# header info
if ($counter == 0) {
&sub_page_js($request);
&sub_page_kw_js($request);
$request->print('<h3> <font color="#339933">Submission Record</font></h3>'."\n".
- '<font size=+1> <b>Problem: </b>'.
- &Apache::lonnet::metadata($url,'title').'</font>'."\n");
+ '<font size=+1> <b>Problem: </b>'.$ENV{'form.probTitle'}.'</font>'."\n");
# option to display problem, only once else it cause problems
# with the form later since the problem has a form.
@@ -1011,13 +1008,16 @@
$ENV{'form.kwsize'} = $keyhash{$loginuser.'_kwsize'} ne '' ? $keyhash{$loginuser.'_kwsize'} : '0';
$ENV{'form.kwstyle'} = $keyhash{$loginuser.'_kwstyle'} ne '' ? $keyhash{$loginuser.'_kwstyle'} : '';
$ENV{'form.msgsub'} = $keyhash{$symb.'_subject'} ne '' ?
- $keyhash{$symb.'_subject'} : &Apache::lonnet::metadata($url,'title');
+ $keyhash{$symb.'_subject'} : $ENV{'form.probTitle'};
$ENV{'form.savemsgN'} = $keyhash{$symb.'_savemsgN'} ne '' ? $keyhash{$symb.'_savemsgN'} : '0';
}
$request->print('<form action="/adm/grades" method="post" name="SCORE">'."\n".
'<input type="hidden" name="command" value="handgrade" />'."\n".
+ '<input type="hidden" name="lastCmd" value="'.$ENV{'form.lastCmd'}.'" />'."\n".
+ '<input type="hidden" name="lastSec" value="'.$ENV{'form.lastSec'}.'" />'."\n".
+ '<input type="hidden" name="probTitle" value="'.$ENV{'form.probTitle'}.'" />'."\n".
'<input type="hidden" name="refresh" value="off" />'."\n".
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n".
'<input type="hidden" name="url" value="'.$url.'" />'."\n".
@@ -1195,6 +1195,9 @@
# return if view submission with no grading option
if ($ENV{'form.showgrading'} eq '') {
$request->print('</td></tr></table></td></tr></table></form>'."\n");
+ $request->print(&show_grading_menu_form($symb,$url))
+ if (($ENV{'form.command'} eq 'submission') ||
+ ($ENV{'form.command'} eq 'processGroup' && $counter == $total));
return;
}
@@ -1227,8 +1230,6 @@
push @partlist,$partid;
$request->print(&gradeBox($request,$symb,$uname,$udom,$counter,$partid,\%record));
-
-# $request->print($result);
}
$result='<input type="hidden" name="partlist'.$counter.
'" value="'.(join ":",@partlist).'" />'."\n";
@@ -1281,9 +1282,7 @@
for ($version=1;$version<=$returnhash{'version'};$version++) {
foreach (sort(split(/\:/,$returnhash{$version.':keys'}))) {
$lasthash{$_}=$returnhash{$version.':'.$_};
-# if ($returnhash{$version.':'.$_} =~ /(SUBMITTED|DRAFT)$/) {
$timestamp = scalar(localtime($returnhash{$version.':timestamp'}));
-# }
}
}
foreach ((keys %lasthash)) {
@@ -1466,8 +1465,6 @@
$ENV{'form.student'} = $uname;
$ENV{'form.userdom'} = $udom;
$ENV{'form.fullname'} = $$fullname{$_};
-# $ENV{'form.'.$_.':submitted_by'} = $submitter;
-# print "submitter=$ENV{'form.'.$_.':submitted_by'}= $submitter:<br>";
&submission($request,$ctr,$total);
$ctr++;
}
@@ -1514,11 +1511,11 @@
}
$newrecord{'resource.'.$_.'.submitted_by'} = $submitter
if ($submitter && ($record{'resource.'.$_.'.submitted_by'} ne $submitter));
+ $newrecord{'resource.'.$_.'regrader'}="$ENV{'user.name'}:$ENV{'user.domain'}";
}
}
if (scalar(keys(%newrecord)) > 0) {
- $newrecord{'resource.regrader'}="$ENV{'user.name'}:$ENV{'user.domain'}";
&Apache::lonnet::cstore(\%newrecord,$symb,
$ENV{'request.course.id'},$domain,$stuname);
}
@@ -1707,8 +1704,7 @@
my ($symb,$url) = ($ENV{'form.symb'},$ENV{'form.url'});
my $result='<h3><font color="#339933">Manual Grading</font></h3>';
- $result.='<font size=+1><b>Problem: </b>'.&Apache::lonnet::metadata($ENV{'form.url'},'title')
- .'</font>'."\n";
+ $result.='<font size=+1><b>Problem: </b>'.$ENV{'form.probTitle'}.'</font>'."\n";
#view individual student submission form - called using Javascript viewOneStudent
$result.=&jscriptNform($url,$symb);
@@ -1718,7 +1714,11 @@
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n".
'<input type="hidden" name="url" value="'.$url.'" />'."\n".
'<input type="hidden" name="command" value="editgrades" />'."\n".
- '<input type="hidden" name="section" value="'.$ENV{'form.section'}.'" />'."\n";
+ '<input type="hidden" name="section" value="'.$ENV{'form.section'}.'" />'."\n".
+ '<input type="hidden" name="lastCmd" value="'.$ENV{'form.lastCmd'}.'" />'."\n".
+ '<input type="hidden" name="lastSec" value="'.$ENV{'form.lastSec'}.'" />'."\n".
+ '<input type="hidden" name="probTitle" value="'.$ENV{'form.probTitle'}.'" />'."\n";
+
$result.='<h3>Assign Common Grade To ';
if ($ENV{'form.section'} eq 'all') {
$result.='Class </h3>';
@@ -1729,12 +1729,6 @@
}
$result.= '<table border=0><tr><td bgcolor="#777777">'."\n".
'<table border=0><tr bgcolor="#ffffdd"><td>';
-# $result.='To assign the same score for all the students use the radio buttons or '.
-# 'text box below. To assign scores individually fill in the score boxes for '.
-# 'each student in the table below. <font color="red">A part that has already '.
-# 'been graded does not get changed using the radio buttons or text box. '.
-# 'If needed, it has to be changed individually.</font>';
-# $result.='</td></tr><tr><td>';
#radio buttons/text box for assigning points for a section or class.
#handles different parts of a problem
my ($partlist,$handgrade) = &response_type($ENV{'form.url'});
@@ -1884,10 +1878,8 @@
my $symb=$ENV{'form.symb'};
my $url =$ENV{'form.url'};
my $title='<h3><font color="#339933">Current Grade Status</font></h3>';
- $title.='<font size=+1><b>Problem: </b>'.
- &Apache::lonnet::metadata($ENV{'form.url'},'title').'</font><br />'."\n";
+ $title.='<font size=+1><b>Problem: </b>'.$ENV{'form.probTitle'}.'</font><br />'."\n";
$title.='<font size=+1><b>Section: </b>'.$ENV{'form.section'}.'</font>'."\n";
- $title.= &show_grading_menu_form ($symb,$url);
my $result= '<table border="0"><tr><td bgcolor="#777777">'."\n";
$result.= '<table border="0"><tr bgcolor="#deffff">'.
'<td rowspan=2><b>Username</b></td><td rowspan=2><b>Fullname</b></td>'."\n";
@@ -1987,6 +1979,7 @@
my $awarded = $ENV{'form.GD_'.$user.'_'.$part.'_'.$type};
if ($awarded ne '' && $awarded ne $old_aw) {
$newrecord{'resource.'.$part.'.'.$type}= $awarded;
+ $newrecord{'resource.'.$part.'regrader'}="$ENV{'user.name'}:$ENV{'user.domain'}";
$updateflag=1;
}
$result .= '<td align="center">'.$old_aw.' </td>'.
@@ -1996,12 +1989,12 @@
$result .= '</tr>'."\n";
if ($updateflag) {
$count++;
- $newrecord{'resource.regrader'}="$ENV{'user.name'}:$ENV{'user.domain'}";
&Apache::lonnet::cstore(\%newrecord,$symb,$ENV{'request.course.id'},
$udom,$user);
}
}
- $result .= '</table></td></tr></table>'."\n";
+ $result .= '</table></td></tr></table>'."\n".
+ &show_grading_menu_form ($symb,$url);
my $msg = '<b>Number of records updated = '.$rec_update.
' for '.$count.' student'.($count <= 1 ? '' : 's').'.</b><br />'.
'<b>Total number of students = '.$ENV{'form.total'}.'</b><br />';
@@ -2025,6 +2018,48 @@
#
#-------------------------- Next few routines handles grading by csv upload
#
+#--- Menu to upload a csv scores ---
+sub upcsvScores_form {
+ my ($request) = shift;
+ my ($symb,$url)=&get_symb_and_url($request);
+ if (!$symb) {return '';}
+ my $result =<<CSVFORMJS;
+<script type="text/javascript" language="javascript">
+ function checkUpload(formname) {
+ if (formname.upfile.value == "") {
+ alert("Please use the browse button to select a file from your local directory.");
+ return false;
+ }
+ formname.submit();
+ if (navigator.appName !="Netscape") {self.close()}; //if netscape if appears to close before submit!!!
+ // any suggestion how to get around this??
+ }
+ </script>
+CSVFORMJS
+ $ENV{'form.probTitle'} = &Apache::lonnet::metadata($url,'title');
+ $result.='<table width=100% border=0><tr><td bgcolor=#777777>'."\n";
+ $result.='<table width=100% border=0><tr bgcolor="#e6ffff"><td>'."\n";
+ $result.=' <b>Specify a file containing the class scores for problem - '.$ENV{'form.probTitle'}.
+ '.</b></td></tr>'."\n";
+ $result.='<tr bgcolor=#ffffe6><td>'."\n";
+ my $upfile_select=&Apache::loncommon::upfile_select_html();
+ $result.=<<ENDUPFORM;
+<form method="post" enctype="multipart/form-data" action="/adm/grades" name="gradesupload" target="LONcatInfo">
+<input type="hidden" name="symb" value="$symb" />
+<input type="hidden" name="url" value="$url" />
+<input type="hidden" name="command" value="csvuploadmap" />
+<input type="hidden" name="probTitle" value="$ENV{'form.probTitle'}" />
+$upfile_select
+<br /><input type="button" onClick="javascript:checkUpload(this.form);" value="Upload Scores" />
+<input type="button" value="Cancel" onClick="self.close()">
+
+</form>
+ENDUPFORM
+ $result.='</td></tr></table>'."\n";
+ $result.='</td></tr></table>'."\n";
+ return $result;
+}
+
#--- Javascript to handle csv upload
sub csvupload_javascript_reverse_associate {
return(<<ENDPICK);
@@ -2109,8 +2144,7 @@
}
my $result='<table border="0">';
- $result.='<tr><td colspan=3><font size=+1><b>Problem: </b>'.&Apache::lonnet::metadata($url,'title')
- .'</font></td></tr>';
+ $result.='<tr><td colspan=3><font size=+1><b>Problem: </b>'.$ENV{'form.probTitle'}.'</font></td></tr>';
my ($partlist,$handgrade) = &response_type($url);
my ($resptype,$hdgrade)=('','no');
for (sort keys(%$handgrade)) {
@@ -2141,6 +2175,9 @@
value="$ENV{'form.upfile_associate'}" />
<input type="hidden" name="symb" value="$symb" />
<input type="hidden" name="url" value="$url" />
+<input type="hidden" name="lastCmd" value="$ENV{'form.lastCmd'}" />
+<input type="hidden" name="lastSec" value="$ENV{'form.lastSec'}" />
+<input type="hidden" name="probTitle" value="$ENV{'form.probTitle'}" />
<input type="hidden" name="command" value="csvuploadassign" />
<hr />
<script type="text/javascript" language="Javascript">
@@ -2181,6 +2218,7 @@
my ($request)= @_;
my ($symb,$url)=&get_symb_and_url($request);
if (!$symb) {return '';}
+
my $datatoken;
if (!$ENV{'form.datatoken'}) {
$datatoken=&Apache::loncommon::upfile_store($request);
@@ -2209,6 +2247,8 @@
}
}
&csvuploadmap_footer($request,$i,$keyfields);
+ $request->print(&show_grading_menu_form($symb,$url));
+
return '';
}
@@ -2272,182 +2312,10 @@
#------------- end of section for handling csv file upload ---------
#
#-------------------------------------------------------------------
-
-#-------------------------- Menu interface -------------------------
#
-#--- Show a Grading Menu button - Calls the next routine ---
-sub show_grading_menu_form {
- my ($symb,$url)=@_;
- my $result.='<form action="/adm/grades" method="post">'."\n".
- '<input type="hidden" name="symb" value="'.$symb.'" />'."\n".
- '<input type="hidden" name="url" value="'.$url.'" />'."\n".
- '<input type="hidden" name="command" value="gradingmenu" />'."\n".
- '<input type="submit" name="submit" value="Grading Menu" />'."\n".
- '</form>'."\n";
- return $result;
-}
-
-#--- Displays the main menu page -------
-sub gradingmenu {
- my ($request) = @_;
- my ($symb,$url)=&get_symb_and_url($request);
- if (!$symb) {return '';}
- my $result='<h3> <font color="#339933">Select a Grading Method</font></h3>';
- $result.='<table border="0">';
- $result.='<tr><td colspan=3><font size=+1><b>Problem: </b>'.
- &Apache::lonnet::metadata($ENV{'form.url'},'title').'</font></td></tr>';
- my ($partlist,$handgrade) = &response_type($url);
- my ($resptype,$hdgrade)=('','no');
- for (sort keys(%$handgrade)) {
- my ($responsetype,$handgrade)=split(/:/,$$handgrade{$_});
- $resptype = $responsetype;
- $hdgrade = $handgrade if ($handgrade eq 'yes');
- $result.='<tr><td><b>Part </b>'.(split(/_/))[0].'</td>'.
- '<td><b>Type: </b>'.$responsetype.'</td>'.
- '<td><b>Handgrade: </b>'.$handgrade.'</font></td></tr>';
- }
- $result.='</table>';
- $result.=&view_edit_entire_class_form($symb,$url).'<br />';
- $result.=&upcsvScores_form($symb,$url).'<br />';
- $result.=&viewGradeaStu_form($symb,$url,$resptype,$hdgrade).'<br />';
- $result.=&gradeByPage_form($symb,$url,$resptype,$hdgrade).'<br />';
- $result.=&verifyReceipt_form($symb,$url)
- if ((&Apache::lonnet::allowed('mgr',$ENV{'request.course.id'})) && ($symb));
-
- return $result;
-}
-
-#--- Menu for grading a section or the whole class ---
-sub view_edit_entire_class_form {
- my ($symb,$url)=@_;
- my ($classlist,$sections,undef) = &getclasslist('all','0');
- my $result.='<table width=100% border=0><tr><td bgcolor=#777777>'."\n";
- $result.='<table width=100% border=0><tr bgcolor="#e6ffff"><td>'."\n";
- $result.=' <b>Grade Entire Section or Class</b></td></tr>'."\n";
- $result.='<tr bgcolor=#ffffe6><td>'."\n";
- $result.='<form action="/adm/grades" method="post">'."\n".
- '<input type="hidden" name="symb" value="'.$symb.'" />'."\n".
- '<input type="hidden" name="url" value="'.$url.'" />'."\n".
- '<input type="hidden" name="command" value="viewgrades" />'."\n";
- $result.=' <b>Select section:</b> <select name="section">'."\n";
- if (ref($sections)) {
- foreach (sort (@$sections)) {
- $result.= '<option>'.$_.'</option>'."\n";
- }
- }
- $result.='<option selected="on">all</select>'."<br />\n";
- $result.=' <input type="button" onClick="submit();" value="Grade" /></form>'."\n";
- $result.='</td></tr></table>'."\n";
- $result.='</td></tr></table>'."\n";
- return $result;
-}
-
-#--- Menu to upload a csv scores ---
-sub upcsvScores_form {
- my ($symb,$url) = @_;
- if (!$symb) {return '';}
- my $result = '<script type="text/javascript" language="javascript">'."\n".
- ' function checkUpload(formname) {'."\n".
- ' if (formname.upfile.value == "") {'."\n".
- ' alert("Please use the browse button to select a file from your local directory.");'."\n".
- ' return false;'."\n".
- ' }'."\n".
- ' formname.submit();'."\n".
- ' }'."\n".
- '</script>'."\n";
-
- $result.='<table width=100% border=0><tr><td bgcolor=#777777>'."\n";
- $result.='<table width=100% border=0><tr bgcolor="#e6ffff"><td>'."\n";
- $result.=' <b>Specify a file containing the class scores for above resource</b></td></tr>'."\n";
- $result.='<tr bgcolor=#ffffe6><td>'."\n";
- my $upfile_select=&Apache::loncommon::upfile_select_html();
- $result.=<<ENDUPFORM;
-<form method="post" enctype="multipart/form-data" action="/adm/grades" name="gradesupload">
-<input type="hidden" name="symb" value="$symb" />
-<input type="hidden" name="url" value="$url" />
-<input type="hidden" name="command" value="csvuploadmap" />
-$upfile_select
-<br /> <input type="button" onClick="javascript:checkUpload(this.form);" value="Upload Grades" />
-</form>
-ENDUPFORM
- $result.='</td></tr></table>'."\n";
- $result.='</td></tr></table>'."\n";
- return $result;
-}
-
-#--- Handgrading problems ---
-sub viewGradeaStu_form {
- my ($symb,$url,$response,$handgrade) = @_;
- my ($classlist,$sections) = &getclasslist('all','0');
- my $result.='<table width=100% border=0><tr><td bgcolor=#777777>'."\n";
- $result.='<table width=100% border=0><tr bgcolor="#e6ffff"><td>'."\n";
- $result.=' <b>';
- $result.=($handgrade eq 'yes' ? 'View/Grade' : 'View').' an Individual Student\'s Submission</b></td></tr>'."\n";
- $result.='<tr bgcolor=#ffffe6><td>'."\n";
- $result.='<form action="/adm/grades" method="post">'."\n".
- '<input type="hidden" name="symb" value="'.$symb.'" />'."\n".
- '<input type="hidden" name="url" value="'.$url.'" />'."\n".
- '<input type="hidden" name="response" value="'.$response.'" />'."\n".
- '<input type="hidden" name="handgrade" value="'.$handgrade.'" />'."\n".
- '<input type="hidden" name="showgrading" value="yes" />'."\n".
- '<input type="hidden" name="command" value="submission" />'."\n";
-
- $result.=' <b>Select section:</b> <select name="section">'."\n";
- if (ref($sections)) {
- foreach (sort (@$sections)) {$result.='<option>'.$_.'</option>'."\n";}
- }
- $result.= '<option selected="on">all</select>'."\n";
- $result.=' <b>Display students who has: </b>'.
- '<input type="radio" name="submitonly" value="yes" checked> submitted'.
- '<input type="radio" name="submitonly" value="all"> everybody <br />';
- if (ref($sections)) {
- $result.=' (Section "no" implies the students were not assigned a section.)<br />'
- if (grep /no/,@$sections);
- }
-
-
- $result.='<br /> <input type="button" onClick="submit();" value="';
- if ($handgrade eq 'yes') {
- $result.="View/Grade";
- } else {
- $result.="View";
- }
- $result.='" />'."\n".'</form>'."\n";
- $result.='</td></tr></table>'."\n";
- $result.='</td></tr></table>'."\n";
- return $result;
-}
-
-#--- Handgrading problems by page/sequence for each student ---
-sub gradeByPage_form {
- my ($symb,$url,$response,$handgrade) = @_;
- my ($classlist,$sections) = &getclasslist('all','0');
- my $result.='<table width=100% border=0><tr><td bgcolor=#777777>'."\n";
- $result.='<table width=100% border=0><tr bgcolor="#e6ffff"><td>'."\n";
- $result.=' <b>';
- $result.='Handgrade an Individual Student\'s by Page/Sequence</b></td></tr>'."\n";
- $result.='<tr bgcolor=#ffffe6><td>'."\n";
- $result.='<form action="/adm/grades" method="post">'."\n".
- '<input type="hidden" name="symb" value="'.$symb.'" />'."\n".
- '<input type="hidden" name="url" value="'.$url.'" />'."\n".
- '<input type="hidden" name="response" value="'.$response.'" />'."\n".
- '<input type="hidden" name="handgrade" value="'.$handgrade.'" />'."\n".
- '<input type="hidden" name="showgrading" value="yes" />'."\n".
- '<input type="hidden" name="command" value="pickStudentPage" />'."\n";
-
- $result.=' <b>Select section:</b> <select name="section">'."\n";
- if (ref($sections)) {
- foreach (sort (@$sections)) {$result.='<option>'.$_.'</option>'."\n";}
- }
- $result.= '<option selected="on">all</select>'."\n";
-
- $result.='<br /> <input type="button" onClick="submit();" value="';
- $result.='View/Grade'.'" />'."\n".'</form>'."\n";
- $result.='</td></tr></table>'."\n";
- $result.='</td></tr></table>'."\n";
- return $result;
-}
-
+#-------------- Next few routines handles grading by page/sequence
+#
+#--- Select a page/sequence and a student to grade
sub pickStudentPage {
my ($request) = shift;
@@ -2470,8 +2338,7 @@
var selection=null;
for (var i=0; i<radioButton.length; i++) {
if (radioButton[i].checked) {
- selection=radioButton[i].value;
- return selection;
+ return radioButton[i].value;
}
}
return selection;
@@ -2481,15 +2348,14 @@
var selection=null;
for (var i=0; i<selectOne.length; i++) {
if (selectOne[i].selected) {
- selection=selectOne[i].value;
- return selection;
+ return selectOne[i].value;
}
}
}
</script>
LISTJAVASCRIPT
- my ($symb,$url) = &get_symb_and_url();
+ my ($symb,$url) = &get_symb_and_url($request);
my $cdom = $ENV{"course.$ENV{'request.course.id'}.domain"};
my $cnum = $ENV{"course.$ENV{'request.course.id'}.num"};
my $getsec = $ENV{'form.section'} eq '' ? 'all' : $ENV{'form.section'};
@@ -2517,19 +2383,27 @@
$result.='<input type="hidden" name="title'.$ctr.'" value="'.$showtitle.'" />'."\n";
$ctr++;
}
- $result.='<input type="hidden" name="page" />'."\n";
- $result.='<input type="hidden" name="title" />'."\n";
+ $result.='<input type="hidden" name="page" />'."\n".
+ '<input type="hidden" name="title" />'."\n";
$result.=' <b>View Problems: </b><input type="radio" name="vProb" value="no" checked /> no '."\n".
'<input type="radio" name="vProb" value="yes" /> yes '."<br>\n";
+
$result.=' <b>Submission Details: </b>'.
'<input type="radio" name="lastSub" value="none" /> none'."\n".
'<input type="radio" name="lastSub" value="datesub" checked /> dates and submissions'."\n".
'<input type="radio" name="lastSub" value="all" /> all details'."\n";
+
$result.='<input type="hidden" name="section" value="'.$getsec.'" />'."\n".
- '<input type="hidden" name="command" value="displayPage" />'."\n".
- '<input type="hidden" name="url" value="'.$url.'" />'."\n".
- '<input type="hidden" name="symb" value="'.$symb.'" />'."<br><br>\n";
+ '<input type="hidden" name="command" value="displayPage" />'."\n".
+ '<input type="hidden" name="url" value="'.$url.'" />'."\n".
+ '<input type="hidden" name="symb" value="'.$symb.'" />'."<br><br>\n".
+ '<input type="hidden" name="lastCmd" value="'.$ENV{'form.lastCmd'}.'" />'."\n".
+ '<input type="hidden" name="lastSec" value="'.$ENV{'form.lastSec'}.'" />'."\n";
+
+ $result.='<br /> <input type="button" '.
+ 'onClick="javascript:checkPickOne(this.form);"value="Submit" /><br />'."\n";
+
$request->print($result);
my $studentTable.=' <b>Select a Student you wish to grade</b><br>'.
@@ -2620,10 +2494,12 @@
return \@titles,\%symbx;
}
+#
+#--- Displays a page/sequence w/wo problems, w/wo submissions
sub displayPage {
my ($request) = shift;
- my ($symb,$url) = &get_symb_and_url();
+ my ($symb,$url) = &get_symb_and_url($request);
my $cdom = $ENV{"course.$ENV{'request.course.id'}.domain"};
my $cnum = $ENV{"course.$ENV{'request.course.id'}.num"};
my $getsec = $ENV{'form.section'} eq '' ? 'all' : $ENV{'form.section'};
@@ -2648,12 +2524,14 @@
$map->map_finish());
my $studentTable='<form action="/adm/grades" method="post" name="gradePage">'."\n".
- '<input type="hidden" name="command" value="gradeByPage" />'."\n".
- '<input type="hidden" name="student" value="'.$ENV{'form.student'}.'" />'."\n".
- '<input type="hidden" name="page" value="'.$pageTitle.'" />'."\n".
- '<input type="hidden" name="title" value="'.$ENV{'form.title'}.'" />'."\n".
- '<input type="hidden" name="url" value="'.$url.'" />'."\n".
- '<input type="hidden" name="symb" value="'.$symb.'" />'."\n";
+ '<input type="hidden" name="command" value="gradeByPage" />'."\n".
+ '<input type="hidden" name="student" value="'.$ENV{'form.student'}.'" />'."\n".
+ '<input type="hidden" name="page" value="'.$pageTitle.'" />'."\n".
+ '<input type="hidden" name="title" value="'.$ENV{'form.title'}.'" />'."\n".
+ '<input type="hidden" name="url" value="'.$url.'" />'."\n".
+ '<input type="hidden" name="symb" value="'.$symb.'" />'."\n".
+ '<input type="hidden" name="lastCmd" value="'.$ENV{'form.lastCmd'}.'" />'."\n".
+ '<input type="hidden" name="lastSec" value="'.$ENV{'form.lastSec'}.'" />'."\n";
my $checkIcon = '<img src="'.$request->dir_config('lonIconsURL').
'/check.gif" height="16" border="0" />';
@@ -2674,7 +2552,7 @@
if (ref($curRes) && $curRes->is_problem() && !$curRes->randomout) {
my $parts = $curRes->parts();
- if (scalar(@{$parts}) > 1) { shift @{$parts}; }
+ $parts = &temp_parts_fix($parts); # remove line when lonnavmap is fixed
my $title = $curRes->compTitle();
my $symbx = $curRes->symb();
$studentTable.='<tr bgcolor="#ffffe6"><td align="center" valign="top" >'.$question.
@@ -2722,10 +2600,13 @@
'<b>Part:</b> '.$partid.' '.
$record{"$version:resource.$partid.award"}.'/'.
$record{"$version:resource.$partid.solved"}.'<br />' : '';
+ $displaySub[2].=(exists $record{"$version:resource.$partid.regrader"}) ?
+ $record{"$version:resource.$partid.regrader"}.' (<b>Part:</b> '.$partid.')' : '';
}
- $displaySub[1].=(exists $record{"$version:resource.regrader"}) ?
- 'Manually graded by '.$record{"$version:resource.regrader"} : '';
- $studentTable.='<td>'.$displaySub[0].' </td><td>'.$displaySub[1].' </td></tr>';
+ $displaySub[2].=(exists $record{"$version:resource.regrader"}) ?
+ $record{"$version:resource.regrader"} : '';
+ $studentTable.='<td>'.$displaySub[0].' </td><td>'.$displaySub[1].
+ ($displaySub[2] eq '' ? '' : 'Manually graded by '.$displaySub[2]).' </td></tr>';
}
$studentTable.='</table></td></tr></table>';
}
@@ -2748,7 +2629,6 @@
$curRes = $iterator->next();
$ctr++;
}
- $navmap->init();
$studentTable.='</td></tr></table></td></tr></table>'."\n".
' <input type="button" value="Save" '.
@@ -2760,6 +2640,18 @@
return '';
}
+sub temp_parts_fix { #remove sub once lonnavmap is fixed
+ my $parts = shift;
+ my %seen = ();
+ my @correctParts = ();
+ foreach (@{$parts}) {
+ next if ($seen{$_} > 0);
+ $seen{$_}++;
+ push @correctParts,$_;
+ }
+ return \@correctParts;
+}
+
sub updateGradeByPage {
my ($request) = shift;
@@ -2801,7 +2693,7 @@
if (ref($curRes) && $curRes->is_problem() && !$curRes->randomout) {
my $parts = $curRes->parts();
- if (scalar(@{$parts}) > 1) { shift @{$parts}; }
+ $parts = &temp_parts_fix($parts); # remove line when lonnavmap is fixed
my $title = $curRes->compTitle();
my $symbx = $curRes->symb();
$studentTable.='<tr bgcolor="#ffffe6"><td align="center" valign="top" >'.$question.
@@ -2844,11 +2736,11 @@
}
$newrecord{'resource.'.$partid.'.awarded'} = $partial if $partial ne '';
$newrecord{'resource.'.$partid.'.solved'} = $score;
+ $newrecord{'resource.'.$partid.'.regrader'}="$ENV{'user.name'}:$ENV{'user.domain'}";
$changeflag++;
}
if (scalar(keys(%newrecord)) > 0) {
- $newrecord{'resource.regrader'}="$ENV{'user.name'}:$ENV{'user.domain'}";
&Apache::lonnet::cstore(\%newrecord,$symbx,$ENV{'request.course.id'},
$udom,$uname);
}
@@ -2860,7 +2752,6 @@
$curRes = $iterator->next();
$ctr++;
}
- $navmap->init();
$studentTable.='</td></tr></table></td></tr></table>';
$studentTable.=($changeflag == 0 ? 'No score was changed or updated.' :
@@ -2872,41 +2763,181 @@
return '';
}
+#-------- end of section for handling grading by page/sequence ---------
+#
+#-------------------------------------------------------------------
-#--- Form to input a receipt number ---
-sub verifyReceipt_form {
- my ($symb,$url) = @_;
- my $result = '<script type="text/javascript" language="javascript">'."\n".
- ' function checkEntry(formname) {'."\n".
- ' var receipt = formname.receipt.value;'."\n".
- ' if (isNaN(receipt) || receipt == "") {'."\n".
- ' alert("Please enter a receipt number given by a student in the box.");'."\n".
- ' return false;'."\n".
- ' }'."\n".
- ' formname.submit();'."\n".
- ' }'."\n".
- '</script>'."\n";
+#-------------------------- Menu interface -------------------------
+#
+#--- Show a Grading Menu button - Calls the next routine ---
+sub show_grading_menu_form {
+ my ($symb,$url)=@_;
+ my $result.='<form action="/adm/grades" method="post">'."\n".
+ '<input type="hidden" name="symb" value="'.$symb.'" />'."\n".
+ '<input type="hidden" name="url" value="'.$url.'" />'."\n".
+ '<input type="hidden" name="lastCmd" value="'.$ENV{'form.lastCmd'}.'" />'."\n".
+ '<input type="hidden" name="lastSec" value="'.$ENV{'form.lastSec'}.'" />'."\n".
+ '<input type="hidden" name="command" value="gradingmenu" />'."\n".
+ '<input type="submit" name="submit" value="Grading Menu" />'."\n".
+ '</form>'."\n";
+ return $result;
+}
- my $hostver=unpack("%32C*",$Apache::lonnet::perlvar{'lonHostID'});
+#--- Displays the main menu page -------
+sub gradingmenu {
+ my ($request) = @_;
+ my ($symb,$url)=&get_symb_and_url($request);
+ if (!$symb) {return '';}
- $result.='<table width=100% border=0><tr><td bgcolor=#777777>'."\n";
- $result.='<table width=100% border=0><tr><td bgcolor=#e6ffff>'."\n";
- $result.=' <b>Verify a Submission Receipt Issued by this Server</td></tr>'."\n";
- $result.='<tr bgcolor=#ffffe6><td>'."\n";
- $result.='<form action="/adm/grades" method="post" name="verifyform">'."\n";
- $result.=' <tt>'.$hostver.'-<input type="text" name="receipt" size="4"></tt><br />'."\n";
- $result.=' <input type="button" onClick="javascript:checkEntry(this.form);"'.
- ' value="Verify Receipt">'."\n";
- $result.='<input type="hidden" name="command" value="verify">'."\n";
- if ($ENV{'form.url'}) {
- $result.='<input type="hidden" name="url" value="'.$ENV{'form.url'}.'" />';
+ $request->print(<<GRADINGMENUJS);
+<script type="text/javascript" language="javascript">
+ function checkChoice(formname) {
+ var cmd = formname.command;
+ formname.lastCmd.value = radioSelection(formname.command);
+ formname.lastSec.value = pullDownSelection(formname.section);
+ if (cmd[0].checked || cmd[1].checked || cmd[2].checked) {
+ formname.submit();
+ }
+
+ if (cmd[3].checked) {
+ var url = "/adm/grades?command=csvform&symb="+formname.symb.value+"&url="+formname.url.value;
+ var options = "width=620,height=340,screenx=70,screeny=75,";
+ options += "resizable=no,scrollbars=no,status=no,";
+ options += "menubar=no,toolbar=no,location=no,directories=no";
+ var newWin = window.open(url, "CSVFile", options);
+ newWin.focus();
+ }
+
+ if (cmd[4].checked) {
+ if (!checkReceiptNo(formname,'notOK')) { return false;}
+ formname.submit();
+ }
}
- if ($ENV{'form.symb'}) {
- $result.='<input type="hidden" name="symb" value="'.$ENV{'form.symb'}.'" />';
+
+ function checkReceiptNo(formname,nospace) {
+ var receiptNo = formname.receipt.value;
+ var checkOpt = false;
+ if (nospace == "OK" && isNaN(receiptNo)) {checkOpt = true;}
+ if (nospace == "notOK" && (isNaN(receiptNo) || receiptNo == "")) {checkOpt = true;}
+ if (checkOpt) {
+ alert("Please enter a receipt number given by a student in the receipt box.");
+ formname.receipt.value = "";
+ formname.receipt.focus();
+ return false;
+ }
+ formname.command[4].checked = true;
+ return true;
}
- $result.='</form>';
- $result.='</td></tr></table>'."\n";
- $result.='</td></tr></table>'."\n";
+
+ function radioSelection(radioButton) {
+ var selection=null;
+ for (var i=0; i<radioButton.length; i++) {
+ if (radioButton[i].checked) {
+ return radioButton[i].value;
+ }
+ }
+ return selection;
+ }
+
+ function pullDownSelection(selectOne) {
+ var selection="";
+ for (var i=0; i<selectOne.length; i++) {
+ if (selectOne[i].selected) {
+ return selectOne[i].value;
+ }
+ }
+ }
+</script>
+GRADINGMENUJS
+
+ my $probTitle = &Apache::lonnet::metadata($ENV{'form.url'},'title');
+ my $result='<h3> <font color="#339933">Manual Grading/View Submission</font></h3>'.
+ '<table border="0">'.
+ '<tr><td colspan=3><font size=+1><b>Problem: </b>'.$probTitle.'</font></td></tr>';
+ my ($partlist,$handgrade) = &response_type($url);
+ my ($resptype,$hdgrade)=('','no');
+ for (sort keys(%$handgrade)) {
+ my ($responsetype,$handgrade)=split(/:/,$$handgrade{$_});
+ $resptype = $responsetype;
+ $hdgrade = $handgrade if ($handgrade eq 'yes');
+ $result.='<tr><td><b>Part </b>'.(split(/_/))[0].'</td>'.
+ '<td><b>Type: </b>'.$responsetype.'</td>'.
+ '<td><b>Handgrade: </b>'.$handgrade.'</font></td></tr>';
+ }
+ $result.='</table>';
+
+ my ($classlist,$sections) = &getclasslist('all','0');
+ my $lastCmd = ($ENV{'form.lastCmd'} eq '' ? 'pickStudentPage' : $ENV{'form.lastCmd'});
+ my $lastSec = ($ENV{'form.lastSec'} eq '' ? 'all' : $ENV{'form.lastSec'});
+
+ $result.='<form action="/adm/grades" method="post" name="gradingMenu">'."\n".
+ '<input type="hidden" name="symb" value="'.$symb.'" />'."\n".
+ '<input type="hidden" name="url" value="'.$url.'" />'."\n".
+ '<input type="hidden" name="response" value="'.$resptype.'" />'."\n".
+ '<input type="hidden" name="handgrade" value="'.$hdgrade.'" />'."\n".
+ '<input type="hidden" name="probTitle" value="'.$probTitle.'" />'."\n".
+ '<input type="hidden" name="lastCmd" value="" />'."\n".
+ '<input type="hidden" name="lastSec" value="" />'."\n".
+ '<input type="hidden" name="showgrading" value="yes" />'."\n";
+
+ $result.='<table width=100% border=0><tr><td bgcolor=#777777>'."\n".
+ '<table width=100% border=0><tr bgcolor="#e6ffff"><td>'."\n".
+ ' <b>Select a Grading/Viewing Option</b></td></tr>'."\n".
+ '<tr bgcolor=#ffffe6><td>'."\n";
+
+ $result.='<table width=100% border=0>'.
+ '<tr bgcolor="#ffffe6" valign="top"><td colspan="2">'.
+ '<input type="radio" name="command" value="pickStudentPage" '.
+ ($lastCmd eq 'pickStudentPage' ? 'checked' : '').'> '.
+ 'Handgrade/View Submission for a student by page/sequence</td></tr>'."\n".
+
+ '<tr bgcolor="#ffffe6"valign="top"><td colspan="2">'.
+ '<input type="radio" name="command" value="viewgrades" '.
+ ($lastCmd eq 'viewgrades' ? 'checked' : '').'> '.
+ 'Grade by section or class</td></tr>'."\n".
+
+ '<tr bgcolor="#ffffe6"valign="top"><td><input type="radio" name="command" value="submission" '.
+ ($lastCmd eq 'submission' ? 'checked' : '').'> '.
+ ($hdgrade eq 'yes' ? 'View/Grade essay response of' : 'View').
+ ' an individual student </td>'."\n".
+ '<td>--> For students who has: '.
+ '<input type="radio" name="submitonly" value="yes" checked> submitted'.
+ '<input type="radio" name="submitonly" value="all"> everybody</td></tr>'."\n".
+
+ '<tr bgcolor="#ffffe6"valign="top"><td colspan="2">'.
+ '<input type="radio" name="command" value="csvupload" '.
+ ($lastCmd eq 'csvupload' ? 'checked' : '').'> '.
+ 'Upload scores from file</td></tr>'."\n";
+
+ if ((&Apache::lonnet::allowed('mgr',$ENV{'request.course.id'})) && ($symb)) {
+ $result.='<tr bgcolor="#ffffe6"valign="top"><td>'.
+ '<input type="radio" name="command" value="verify" onSelect="javascript:this.form.receipt.focus()" '.
+ ($lastCmd eq 'verify' ? 'checked' : '').'> '.
+ 'Verify a submission receipt issued by this server</td>'.
+ '<td>--> Receipt no: '.unpack("%32C*",$Apache::lonnet::perlvar{'lonHostID'}).
+ '-<input type="text" name="receipt" size="4" onChange="javascript:checkReceiptNo(this.form,\'OK\')">'.
+ '</td></tr>'."\n";
+ }
+
+ $result.='<tr bgcolor="#ffffe6"valign="top"><td colspan="2"><br />'."\n".
+ ' Select section:</b> <select name="section">'."\n";
+ if (ref($sections)) {
+ foreach (sort (@$sections)) {$result.='<option value="'.$_.'" '.
+ ($lastSec eq $_ ? 'selected="on"' : '').'>'.$_.'</option>'."\n";}
+ }
+ $result.= '<option value="all" '.($lastSec eq 'all' ? 'selected="on"' : ''). '>all</select> '.
+ '<font color="red">(Applies to the first three options only.)</font>'."\n";
+ if (ref($sections)) {
+ $result.=' (Section "no" implies the students were not assigned a section.)<br />'
+ if (grep /no/,@$sections);
+ }
+ $result.='</td></tr>';
+
+ $result.='<tr bgcolor="#ffffe6"><td colspan="2"><br />'.
+ '<input type="button" onClick="javascript:checkChoice(this.form);" value="View/Grade" />'."\n".
+ '</form></td></tr></table>'."\n".
+ '</td></tr></table>'."\n".
+ '</td></tr></table>'."\n";
return $result;
}
@@ -2961,9 +2992,6 @@
$Apache::grades::viewgrades=&Apache::lonnet::allowed('vgr',$ENV{'request.course.id'});
if ($command eq 'submission') {
($ENV{'form.student'} eq '' ? &listStudents($request) : &submission($request,0,0));
-# if ($command eq 'submission') {
-# &listStudents($request) if ($ENV{'form.student'} eq '');
-# &submission($request,0,0) if ($ENV{'form.student'} ne '');
} elsif ($command eq 'pickStudentPage') {
&pickStudentPage($request);
} elsif ($command eq 'displayPage') {
@@ -2982,6 +3010,8 @@
$request->print(&editgrades($request));
} elsif ($command eq 'verify') {
$request->print(&verifyreceipt($request));
+ } elsif ($command eq 'csvform') {
+ $request->print(&upcsvScores_form($request));
} elsif ($command eq 'csvupload') {
$request->print(&csvupload($request));
} elsif ($command eq 'viewclasslist') {
--ng1047663991--