version 1.109, 2003/07/02 15:30:21
|
version 1.113, 2003/07/14 14:29:07
|
Line 41 use Apache::style;
|
Line 41 use Apache::style;
|
use Apache::lonxml; |
use Apache::lonxml; |
use Apache::lonnet; |
use Apache::lonnet; |
use Apache::loncommon; |
use Apache::loncommon; |
|
use Apache::lonhtmlcommon; |
use Apache::lonnavmaps; |
use Apache::lonnavmaps; |
use Apache::lonhomework; |
use Apache::lonhomework; |
use Apache::loncoursedata; |
use Apache::loncoursedata; |
Line 129 sub getclasslist {
|
Line 130 sub getclasslist {
|
my (undef,undef,$end,$start,$id,$section,$fullname,$status)= |
my (undef,undef,$end,$start,$id,$section,$fullname,$status)= |
@{$classlist->{$_}}; |
@{$classlist->{$_}}; |
# filter students according to status selected |
# filter students according to status selected |
if ($filterlist && $ENV{'form.status'} ne 'Any') { |
if ($filterlist && $ENV{'form.Status'} ne 'Any') { |
if ($ENV{'form.status'} ne $status) { |
if ($ENV{'form.Status'} ne $status) { |
delete ($classlist->{$_}); |
delete ($classlist->{$_}); |
next; |
next; |
} |
} |
Line 367 sub listStudents {
|
Line 368 sub listStudents {
|
|
|
$request->print(<<LISTJAVASCRIPT); |
$request->print(<<LISTJAVASCRIPT); |
<script type="text/javascript" language="javascript"> |
<script type="text/javascript" language="javascript"> |
function checkSelect(checkBox) { |
function checkSelect(checkBox) { |
var ctr=0; |
var ctr=0; |
var sense=""; |
var sense=""; |
if (checkBox.length > 1) { |
if (checkBox.length > 1) { |
for (var i=0; i<checkBox.length; i++) { |
for (var i=0; i<checkBox.length; i++) { |
if (checkBox[i].checked) { |
if (checkBox[i].checked) { |
ctr++; |
ctr++; |
} |
} |
} |
} |
sense = "a student or group of students"; |
sense = "a student or group of students"; |
} else { |
} else { |
if (checkBox.checked) { |
if (checkBox.checked) { |
ctr = 1; |
ctr = 1; |
} |
} |
sense = "the student"; |
sense = "the student"; |
|
} |
|
if (ctr == 0) { |
|
alert("Please select "+sense+" before clicking on the $viewgrade button."); |
|
return false; |
|
} |
|
document.gradesub.submit(); |
} |
} |
if (ctr == 0) { |
|
alert("Please select "+sense+" before clicking on the $viewgrade button."); |
function reLoadList(formname) { |
return false; |
if (formname.saveStatusOld.value == pullDownSelection(formname.Status)) {return;} |
|
formname.command.value = 'submission'; |
|
formname.submit(); |
|
} |
|
|
|
function pullDownSelection(selectOne) { |
|
var selection=""; |
|
if (selectOne.length > 1) { |
|
for (var i=0; i<selectOne.length; i++) { |
|
if (selectOne[i].selected) { |
|
return selectOne[i].value; |
|
} |
|
} |
|
} else { |
|
if (selectOne.selected) return selectOne.value; |
|
} |
} |
} |
document.gradesub.submit(); |
|
} |
|
</script> |
</script> |
LISTJAVASCRIPT |
LISTJAVASCRIPT |
|
|
Line 405 LISTJAVASCRIPT
|
Line 425 LISTJAVASCRIPT
|
if ($ENV{'form.handgrade'} eq 'yes') { |
if ($ENV{'form.handgrade'} eq 'yes') { |
$gradeTable.='<input type="radio" name="lastSub" value="hdgrade" '.$checkhdgrade.' /> handgrade only'."\n"; |
$gradeTable.='<input type="radio" name="lastSub" value="hdgrade" '.$checkhdgrade.' /> handgrade only'."\n"; |
} |
} |
|
|
|
my $saveStatus = $ENV{'form.Status'} eq '' ? 'Active' : $ENV{'form.Status'}; |
|
$ENV{'form.Status'} = $saveStatus; |
|
|
$gradeTable.='<input type="radio" name="lastSub" value="lastonly" '.$checklastsub.' /> last sub only'."\n". |
$gradeTable.='<input type="radio" name="lastSub" value="lastonly" '.$checklastsub.' /> last sub only'."\n". |
'<input type="radio" name="lastSub" value="last" /> last sub & parts info'."\n". |
'<input type="radio" name="lastSub" value="last" /> last sub & parts info'."\n". |
'<input type="radio" name="lastSub" value="all" /> all details'."\n". |
'<input type="radio" name="lastSub" value="all" /> all details'."\n". |
Line 417 LISTJAVASCRIPT
|
Line 441 LISTJAVASCRIPT
|
'<input type="hidden" name="probTitle" value="'.$ENV{'form.probTitle'}.'" />'."\n". |
'<input type="hidden" name="probTitle" value="'.$ENV{'form.probTitle'}.'" />'."\n". |
'<input type="hidden" name="url" value="'.$url.'" />'."\n". |
'<input type="hidden" name="url" value="'.$url.'" />'."\n". |
'<input type="hidden" name="symb" value="'.$symb.'" />'."\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". |
'<input type="hidden" name="saveStatusOld" value="'.$saveStatus.'" />'."\n"; |
|
|
|
$gradeTable.='<b>Student Status:</b> '. |
|
&Apache::lonhtmlcommon::StatusOptions($saveStatus,undef,1,'javascript:reLoadList(this.form);').'<br />'; |
|
|
|
$gradeTable.='To '.lc($viewgrade).' a submission, click on the check box next to the student\'s name. Then '."\n". |
'click on the '.$viewgrade.' button. To view the submissions for a group of students, click'."\n". |
'click on the '.$viewgrade.' button. To view the submissions for a group of students, click'."\n". |
' on the check boxes for the group of students.<br />'."\n". |
' on the check boxes for the group of students.<br />'."\n". |
'<input type="hidden" name="command" value="processGroup" />'."\n". |
'<input type="hidden" name="command" value="processGroup" />'."\n"; |
'<input type="button" '."\n". |
$gradeTable.='<input type="button" '."\n". |
'onClick="javascript:checkSelect(this.form.stuinfo);" '."\n". |
'onClick="javascript:checkSelect(this.form.stuinfo);" '."\n". |
'value="'.$viewgrade.'" />'."\n"; |
'value="'.$viewgrade.'" />'."\n"; |
|
|
my (undef,undef,$fullname) = &getclasslist($getsec,$ENV{'form.showgrading'} eq 'yes' ? '1' : '0'); |
my (undef, undef, $fullname) = &getclasslist($getsec,'1'); |
|
|
$gradeTable.='<table border="0"><tr><td bgcolor="#777777">'. |
$gradeTable.='<table border="0"><tr><td bgcolor="#777777">'. |
'<table border="0"><tr bgcolor="#e6ffff">'. |
'<table border="0"><tr bgcolor="#e6ffff">'; |
'<td><b> Select </b></td><td><b> Fullname </b></td>'. |
my $loop = 0; |
'<td><b> Username </b></td><td><b> Domain </b></td>'; |
while ($loop < 2) { |
foreach (sort(@$partlist)) { |
$gradeTable.='<td><b> Select </b></td><td><b> Fullname </b>'. |
$gradeTable.='<td><b> Part '.(split(/_/))[0].' Status </b></td>'; |
'<font color="#999999">(Username)</font> </td>'; |
|
if ($ENV{'form.showgrading'} eq 'yes' && $submitonly ne 'all') { |
|
foreach (sort(@$partlist)) { |
|
$gradeTable.='<td><b> Part '.(split(/_/))[0].' Status </b></td>'; |
|
} |
|
} |
|
$loop++; |
} |
} |
$gradeTable.='</tr>'."\n"; |
$gradeTable.='</tr>'."\n"; |
|
|
my $ctr = 0; |
my $ctr = 0; |
foreach my $student (sort {lc($$fullname{$a}) cmp lc($$fullname{$b}) } keys %$fullname) { |
foreach my $student (sort {lc($$fullname{$a}) cmp lc($$fullname{$b}) } keys %$fullname) { |
my ($uname,$udom) = split(/:/,$student); |
my ($uname,$udom) = split(/:/,$student); |
my (%status) =&student_gradeStatus($url,$symb,$udom,$uname,$partlist); |
my %status = (); |
my $statusflg = ''; |
if ($ENV{'form.showgrading'} eq 'yes' && $submitonly ne 'all') { |
foreach (keys(%status)) { |
(%status) =&student_gradeStatus($url,$symb,$udom,$uname,$partlist); |
$statusflg = 1 if ($status{$_} ne 'nothing'); |
my $statusflg = ''; |
my ($foo,$partid,$foo1) = split(/\./,$_); |
foreach (keys(%status)) { |
if ($status{'resource.'.$partid.'.submitted_by'} ne '') { |
$statusflg = 1 if ($status{$_} ne 'nothing'); |
$statusflg = ''; |
my ($foo,$partid,$foo1) = split(/\./,$_); |
$gradeTable.='<input type="hidden" name="'. |
if ($status{'resource.'.$partid.'.submitted_by'} ne '') { |
$student.':submitted_by" value="'. |
$statusflg = ''; |
$status{'resource.'.$partid.'.submitted_by'}.'" />'; |
$gradeTable.='<input type="hidden" name="'. |
|
$student.':submitted_by" value="'. |
|
$status{'resource.'.$partid.'.submitted_by'}.'" />'; |
|
} |
} |
} |
|
next if ($statusflg eq '' && $submitonly eq 'yes'); |
} |
} |
next if ($statusflg eq '' && $submitonly eq 'yes'); |
|
|
|
$ctr++; |
$ctr++; |
if ( $perm{'vgr'} eq 'F' ) { |
if ( $perm{'vgr'} eq 'F' ) { |
$gradeTable.='<tr bgcolor="#ffffe6">'. |
$gradeTable.='<tr bgcolor="#ffffe6">' if ($ctr%2 ==1); |
'<td align="center"><input type=checkbox name="stuinfo" value="'. |
$gradeTable.='<td align="center"><input type=checkbox name="stuinfo" value="'. |
$student.':'.$$fullname{$student}.'"></td>'."\n". |
$student.':'.$$fullname{$student}.' "></td>'."\n". |
'<td> '.$$fullname{$student}.' </td>'."\n". |
'<td> '.$$fullname{$student}.' '."\n". |
'<td> '.$uname.' </td>'."\n". |
'<font color="#999999">('.$uname.')</font></td>'."\n"; |
'<td align="middle"> '.$udom.' </td>'."\n"; |
|
|
if ($ENV{'form.showgrading'} eq 'yes' && $submitonly ne 'all') { |
foreach (sort keys(%status)) { |
foreach (sort keys(%status)) { |
next if (/^resource.*?submitted_by$/); |
next if (/^resource.*?submitted_by$/); |
$gradeTable.='<td align="middle"> '.$status{$_}.' </td>'."\n"; |
$gradeTable.='<td align="middle"> '.$status{$_}.' </td>'."\n"; |
|
} |
} |
} |
$gradeTable.='</tr>'."\n"; |
$gradeTable.='</tr>'."\n" if ($ctr%2 ==0); |
} |
} |
} |
} |
|
if ($ctr%2 ==1) { |
|
$gradeTable.='<td> </td><td> </td>'; |
|
if ($ENV{'form.showgrading'} eq 'yes' && $submitonly ne 'all') { |
|
foreach (@$partlist) { |
|
$gradeTable.='<td> </td>'; |
|
} |
|
} |
|
$gradeTable.='</tr>'; |
|
} |
|
|
$gradeTable.='</table></td></tr></table>'. |
$gradeTable.='</table></td></tr></table>'. |
'<input type="button" '. |
'<input type="button" '. |
'onClick="javascript:checkSelect(this.form.stuinfo);" '. |
'onClick="javascript:checkSelect(this.form.stuinfo);" '. |
Line 479 LISTJAVASCRIPT
|
Line 527 LISTJAVASCRIPT
|
$gradeTable='<br /> <font color="red">There are no students currently enrolled.</font>'; |
$gradeTable='<br /> <font color="red">There are no students currently enrolled.</font>'; |
} else { |
} else { |
$gradeTable='<br /> <font color="red">'. |
$gradeTable='<br /> <font color="red">'. |
'No submissions found for this resource for any students. ('.$num_students.' checked for submissions</font><br />'; |
'No submissions found for this resource for any students. ('.$num_students. |
|
' checked for submissions</font><br />'; |
} |
} |
} elsif ($ctr == 1) { |
} elsif ($ctr == 1) { |
$gradeTable =~ s/type=checkbox/type=checkbox checked/; |
$gradeTable =~ s/type=checkbox/type=checkbox checked/; |
Line 1322 KEYWORDS
|
Line 1371 KEYWORDS
|
my $lastone = pop @col_fullnames; |
my $lastone = pop @col_fullnames; |
$msgfor .= ', '.(join ', ',@col_fullnames).' and '.$lastone.'.'; |
$msgfor .= ', '.(join ', ',@col_fullnames).' and '.$lastone.'.'; |
} |
} |
$msgfor =~ s/\'/\\'/g; #' stupid emacs |
$msgfor =~ s/\'/\\'/g; #' stupid emacs - no! javascript |
$result.='<tr><td bgcolor="#ffffff">'."\n". |
$result.='<tr><td bgcolor="#ffffff">'."\n". |
' <a href="javascript:msgCenter(document.SCORE,'.$counter. |
' <a href="javascript:msgCenter(document.SCORE,'.$counter. |
',\''.$msgfor.'\')"; TARGET=_self>'. |
',\''.$msgfor.'\')"; TARGET=_self>'. |
Line 1908 sub viewgrades {
|
Line 1957 sub viewgrades {
|
$result.='</table>'.'</td></tr></table>'.'</td></tr></table>'."\n". |
$result.='</table>'.'</td></tr></table>'.'</td></tr></table>'."\n". |
'<input type="hidden" name="totalparts" value="'.$ctsparts.'" />'; |
'<input type="hidden" name="totalparts" value="'.$ctsparts.'" />'; |
$result.='<input type="button" value="Reset" '. |
$result.='<input type="button" value="Reset" '. |
'onClick="javascript:resetEntry('.$ctsparts.');" TARGET=_self> '; |
'onClick="javascript:resetEntry('.$ctsparts.');" TARGET=_self>'; |
$result.='<input type="button" value="Submit Changes" '. |
# $result.=' <input type="button" value="Submit Changes" name="subButton1'. |
'onClick="javascript:submit();" TARGET=_self />'."\n"; |
# 'onClick="javascript:submit();" TARGET=_self />'."\n"; |
|
|
#table listing all the students in a section/class |
#table listing all the students in a section/class |
#header of table |
#header of table |
Line 1924 sub viewgrades {
|
Line 1973 sub viewgrades {
|
} |
} |
$result.= '<table border=0><tr><td bgcolor="#777777">'."\n". |
$result.= '<table border=0><tr><td bgcolor="#777777">'."\n". |
'<table border=0><tr bgcolor="#deffff">'. |
'<table border=0><tr bgcolor="#deffff">'. |
'<td><b>Fullname</b></td><td><b>Username</b></td><td><b>Domain</b></td>'."\n"; |
'<td><b>Fullname</b> <font color="#999999">(Username)</font></td>'."\n"; |
my (@parts) = sort(&getpartlist($url)); |
my (@parts) = sort(&getpartlist($url)); |
foreach my $part (@parts) { |
foreach my $part (@parts) { |
my $display=&Apache::lonnet::metadata($url,$part.'.display'); |
my $display=&Apache::lonnet::metadata($url,$part.'.display'); |
Line 1958 sub viewgrades {
|
Line 2007 sub viewgrades {
|
'onClick="javascript:submit();" TARGET=_self /></form>'."\n"; |
'onClick="javascript:submit();" TARGET=_self /></form>'."\n"; |
if (scalar(%$fullname) eq 0) { |
if (scalar(%$fullname) eq 0) { |
my $colspan=3+scalar(@parts); |
my $colspan=3+scalar(@parts); |
$result='<font color="red">There are no students in section "'.$ENV{'form.section'}.'" with enrollment status "'.$ENV{'form.status'}.'" to modify or grade.</font>'; |
$result='<font color="red">There are no students in section "'.$ENV{'form.section'}.'" with enrollment status "'.$ENV{'form.Status'}.'" to modify or grade.</font>'; |
} |
} |
$result.=&show_grading_menu_form($symb,$url); |
$result.=&show_grading_menu_form($symb,$url); |
return $result; |
return $result; |
Line 1972 sub viewstudentgrade {
|
Line 2021 sub viewstudentgrade {
|
my %record=&Apache::lonnet::restore($symb,$courseid,$udom,$uname); |
my %record=&Apache::lonnet::restore($symb,$courseid,$udom,$uname); |
my $result='<tr bgcolor="#ffffdd"><td>'. |
my $result='<tr bgcolor="#ffffdd"><td>'. |
'<a href="javascript:viewOneStudent(\''.$uname.'\',\''.$udom. |
'<a href="javascript:viewOneStudent(\''.$uname.'\',\''.$udom. |
'\')"; TARGET=_self>'.$fullname.'</a>'. |
'\')"; TARGET=_self>'.$fullname.'</a> '. |
'</td><td>'.$uname.'</td><td align="middle">'.$udom.'</td>'."\n"; |
'<font color="#999999">('.$uname.($ENV{'user.domain'} eq $udom ? '' : ':'.$udom).')</font></td>'."\n"; |
foreach my $apart (@$parts) { |
foreach my $apart (@$parts) { |
my ($part,$type) = &split_part_type($apart); |
my ($part,$type) = &split_part_type($apart); |
my $score=$record{"resource.$part.$type"}; |
my $score=$record{"resource.$part.$type"}; |
Line 2567 LISTJAVASCRIPT
|
Line 2616 LISTJAVASCRIPT
|
'<input type="radio" name="lastSub" value="all" /> all details'."\n"; |
'<input type="radio" name="lastSub" value="all" /> all details'."\n"; |
|
|
$result.='<input type="hidden" name="section" value="'.$getsec.'" />'."\n". |
$result.='<input type="hidden" name="section" value="'.$getsec.'" />'."\n". |
'<input type="hidden" name="status" value="'.$ENV{'form.status'}.'" />'."\n". |
'<input type="hidden" name="Status" value="'.$ENV{'form.Status'}.'" />'."\n". |
'<input type="hidden" name="command" value="displayPage" />'."\n". |
'<input type="hidden" name="command" value="displayPage" />'."\n". |
'<input type="hidden" name="url" value="'.$url.'" />'."\n". |
'<input type="hidden" name="url" value="'.$url.'" />'."\n". |
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n". |
'<input type="hidden" name="symb" value="'.$symb.'" />'."\n". |
Line 2614 sub getSymbMap {
|
Line 2663 sub getSymbMap {
|
my $navmap = Apache::lonnavmaps::navmap-> new($ENV{'request.course.fn'}.'.db', |
my $navmap = Apache::lonnavmaps::navmap-> new($ENV{'request.course.fn'}.'.db', |
$ENV{'request.course.fn'}.'_parms.db',1, 1); |
$ENV{'request.course.fn'}.'_parms.db',1, 1); |
|
|
my $res = $navmap->firstResource(); # temp resource to access constants |
#my $res = $navmap->firstResource(); # temp resource to access constants |
$navmap->init(); |
$navmap->init(); |
|
|
# End navmap using boilerplate |
# End navmap using boilerplate |
|
|
my $iterator = $navmap->getIterator(undef, undef, undef, 1); |
my $iterator = Apache::lonnavmaps::iterator->new($navmap, undef, undef, undef, 1, undef, 1); |
my $depth = 1; |
my $depth = 1; |
$iterator->next(); # ignore first BEGIN_MAP |
|
my $curRes = $iterator->next(); |
my $curRes = $iterator->next(); |
|
|
my %symbx = (); |
my %symbx = (); |
my @titles = (); |
my @titles = (); |
my $minder=0; |
my $minder=0; |
while ($depth > 0) { |
my $seenBeginMap = 0; |
if ($curRes == $iterator->BEGIN_MAP()) {$depth++;} |
while ($depth > 0 && !$seenBeginMap) { |
|
if ($curRes == $iterator->BEGIN_MAP()) {$depth++; $seenBeginMap = 1; } |
if ($curRes == $iterator->END_MAP()) { $depth--; } |
if ($curRes == $iterator->END_MAP()) { $depth--; } |
|
|
if (ref($curRes) && $curRes->is_map()) { |
if (ref($curRes) && $curRes->is_map()) { |
Line 3290 sub gradingmenu {
|
Line 3339 sub gradingmenu {
|
function checkChoice(formname) { |
function checkChoice(formname) { |
var cmd = formname.command; |
var cmd = formname.command; |
formname.saveState.value = "saveCmd="+radioSelection(cmd)+":saveSec="+pullDownSelection(formname.section)+ |
formname.saveState.value = "saveCmd="+radioSelection(cmd)+":saveSec="+pullDownSelection(formname.section)+ |
":saveSub="+radioSelection(formname.submitonly)+":saveStatus="+pullDownSelection(formname.status); |
":saveSub="+radioSelection(formname.submitonly)+":saveStatus="+pullDownSelection(formname.Status); |
if (cmd[0].checked || cmd[1].checked || cmd[2].checked || cmd[3].checked || cmd[4].checked) formname.submit(); |
if (cmd[0].checked || cmd[1].checked || cmd[2].checked || cmd[3].checked || cmd[4].checked) formname.submit(); |
if (cmd[5].checked) { |
if (cmd[5].checked) { |
if (!checkReceiptNo(formname,'notOK')) { return false;} |
if (!checkReceiptNo(formname,'notOK')) { return false;} |
Line 3428 GRADINGMENUJS
|
Line 3477 GRADINGMENUJS
|
} |
} |
$result.= '<option value="all" '.($saveSec eq 'all' ? 'selected="on"' : ''). '>all</select> '; |
$result.= '<option value="all" '.($saveSec eq 'all' ? 'selected="on"' : ''). '>all</select> '; |
|
|
$result.='Student Status:</b><select name="status">'. |
$result.='Student Status:</b>'.&Apache::lonhtmlcommon::StatusOptions($saveStatus,undef,1,undef); |
'<option value="Active" '.($saveStatus eq 'Active' ? 'selected' : '').'>Active</option>'. |
|
'<option value="Expired" '.($saveStatus eq 'Expired' ? 'selected' : '').'>Expired</option>'. |
|
'<option value="Any" '.($saveStatus eq 'Any' ? 'selected' : '').'>Any</option>'. |
|
'</select>'; |
|
|
|
$result.=' <font color="red">(Applies to the first three options only.)</font>'."\n"; |
$result.=' <font color="red">(Applies to the first three options only.)</font>'."\n"; |
|
|
if (ref($sections)) { |
if (ref($sections)) { |