--- loncom/homework/grades.pm 2007/10/09 09:16:04 1.447
+++ loncom/homework/grades.pm 2007/10/11 20:25:34 1.452
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# The LON-CAPA Grading handler
#
-# $Id: grades.pm,v 1.447 2007/10/09 09:16:04 foxr Exp $
+# $Id: grades.pm,v 1.452 2007/10/11 20:25:34 banghart Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -56,8 +56,9 @@ my %first_bubble_line = (); # First bubb
sub save_bubble_lines {
-
+ &Apache::lonnet::logthis("Saving bubble_lines...");
foreach my $line (keys(%bubble_lines_per_response)) {
+ &Apache::lonnet::logthis("Saving form.scantron.bubblelines.$line value: $bubble_lines_per_response{$line}");
$env{"form.scantron.bubblelines.$line"} = $bubble_lines_per_response{$line};
$env{"form.scantron.first_bubble_line.$line"} =
$first_bubble_line{$line};
@@ -70,6 +71,7 @@ sub restore_bubble_lines {
%bubble_lines_per_response = ();
while ($env{"form.scantron.bubblelines.$line"}) {
my $value = $env{"form.scantron.bubblelines.$line"};
+ &Apache::lonnet::logthis("Restoring form.scantron.bubblelines.$line value: $value");
$bubble_lines_per_response{$line} = $value;
$first_bubble_line{$line} =
$env{"form.scantron.first_bubble_line.$line"};
@@ -85,7 +87,7 @@ sub get_response_bubbles {
my ($parsed_line, $response) = @_;
my $bubble_line = $first_bubble_line{$response};
- my $bubble_lines= $bubble_linse_per_response{$response};
+ my $bubble_lines= $bubble_lines_per_response{$response};
my $selected = "";
for (my $bline = 0; $bline < $bubble_lines; $bline++) {
@@ -473,8 +475,9 @@ COMMONJSFUNCTIONS
#--- Dumps the class list with usernames,list of sections,
#--- section, ids and fullnames for each user.
sub getclasslist {
- my ($getsec,$filterlist) = @_;
+ my ($getsec,$filterlist,$getgroup) = @_;
my @getsec;
+ my @getgroup;
my $stu_status = join(':',&Apache::loncommon::get_env_multiple('form.Status'));
if (!ref($getsec)) {
if ($getsec ne '' && $getsec ne 'all') {
@@ -484,10 +487,19 @@ sub getclasslist {
@getsec=@{$getsec};
}
if (grep(/^all$/,@getsec)) { undef(@getsec); }
+ if (!ref($getgroup)) {
+ if ($getgroup ne '' && $getgroup ne 'all') {
+ @getgroup=($getgroup);
+ }
+ } else {
+ @getgroup=@{$getgroup};
+ }
+ if (grep(/^all$/,@getgroup)) { undef(@getgroup); }
- my $classlist=&Apache::loncoursedata::get_classlist();
+ my ($classlist,$keylist)=&Apache::loncoursedata::get_classlist();
# Bail out if we were unable to get the classlist
return if (! defined($classlist));
+ &Apache::loncoursedata::get_group_memberships($classlist,$keylist);
#
my %sections;
my %fullnames;
@@ -504,18 +516,36 @@ sub getclasslist {
$classlist->{$student}->[&Apache::loncoursedata::CL_FULLNAME()];
my $status =
$classlist->{$student}->[&Apache::loncoursedata::CL_STATUS()];
+ my $group =
+ $classlist->{$student}->[&Apache::loncoursedata::CL_GROUP()];
# filter students according to status selected
if ($filterlist && (!($stu_status =~ /Any/))) {
if (!($stu_status =~ $status)) {
- delete ($classlist->{$student});
+ delete($classlist->{$student});
next;
}
}
+ # filter students according to groups selected
+ if (@getgroup) {
+ my $exclude = 1;
+ foreach my $grp(@getgroup) {
+ if ($group eq $grp) {
+ $exclude = 0;
+ } elsif (($grp eq 'none') && !$group) {
+ $exclude = 0;
+ }
+ }
+ if ($exclude) {
+ delete($classlist->{$student});
+ }
+ }
$section = ($section ne '' ? $section : 'none');
if (&canview($section)) {
if (!@getsec || grep(/^\Q$section\E$/,@getsec)) {
$sections{$section}++;
- $fullnames{$student}=$fullname;
+ if ($classlist->{$student}) {
+ $fullnames{$student}=$fullname;
+ }
} else {
delete($classlist->{$student});
}
@@ -766,8 +796,8 @@ sub listStudents {
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'};
+ my $getgroup = $env{'form.group'} eq '' ? 'all' : $env{'form.group'};
my $submitonly= $env{'form.submitonly'} eq '' ? 'all' : $env{'form.submitonly'};
-
my $viewgrade = $env{'form.showgrading'} eq 'yes' ? 'View/Grade/Regrade' : 'View';
$env{'form.probTitle'} = $env{'form.probTitle'} eq '' ?
&Apache::lonnet::gettitle($symb) : $env{'form.probTitle'};
@@ -867,7 +897,7 @@ LISTJAVASCRIPT
'value="Next->" />
'."\n";
$gradeTable.=&check_buttons();
$gradeTable.='';
- my ($classlist, undef, $fullname) = &getclasslist($getsec,'1');
+ my ($classlist, undef, $fullname) = &getclasslist($getsec,'1',$getgroup);
$gradeTable.='
'.
'';
my $loop = 0;
@@ -942,7 +972,7 @@ LISTJAVASCRIPT
$ctr++;
my $section = $classlist->{$student}->[&Apache::loncoursedata::CL_SECTION()];
-
+ my $group = $classlist->{$student}->[&Apache::loncoursedata::CL_GROUP()];
if ( $perm{'vgr'} eq 'F' ) {
$gradeTable.=' ' if ($ctr%2 ==1);
$gradeTable.=''.$ctr.' | '.
@@ -950,7 +980,7 @@ LISTJAVASCRIPT
$student.':'.$$fullname{$student}.':::SECTION'.$section.
') " /> '."\n".''.
&nameUserString(undef,$$fullname{$student},$uname,$udom).
- ' '.$section.' | '."\n";
+ ' '.$section.'/'.$group.''."\n";
if ($env{'form.showgrading'} eq 'yes' && $submitonly ne 'all') {
foreach (sort keys(%status)) {
@@ -1782,7 +1812,6 @@ sub build_section_inputs {
# --------------------------- show submissions of a student, option to grade
sub submission {
my ($request,$counter,$total) = @_;
-
my ($uname,$udom) = ($env{'form.student'},$env{'form.userdom'});
$udom = ($udom eq '' ? $env{'user.domain'} : $udom); #has form.userdom changed for a student?
my $usec = &Apache::lonnet::getsection($udom,$uname,$env{'request.course.id'});
@@ -5714,10 +5743,11 @@ SCANTRONFORM
my $line = 0;
while (defined($env{"form.scantron.bubblelines.$line"})) {
+ &Apache::lonnet::logthis("Saving chunk for $line");
my $chunk =
''."\n";
- $chunk +=
- ''."\n";
+ $chunk .=
+ ''."\n";
$result .= $chunk;
$line++;
}
@@ -5779,6 +5809,8 @@ sub scantron_validate_file {
}
my $currentphase=$env{'form.validatepass'};
+ &Apache::lonnet::logthis("Phase: $currentphase");
+
my $stop=0;
while (!$stop && $currentphase < scalar(@validate_phases)) {
$r->print(" Validating ".$validate_phases[$currentphase]." ");
@@ -6401,7 +6433,7 @@ ENDSCRIPT
$r->print('');
foreach my $question (@{$arg}) {
- my $selected = &get_response_bubbles($scan_record, $quesion);
+ my $selected = &get_response_bubbles($scan_record, $question);
&scantron_bubble_selector($r,$scan_config,$question);
}
} else {
@@ -6435,8 +6467,9 @@ sub scantron_bubble_selector {
if ($scmode eq 'number' || $scmode eq 'letter') { $max=10; }
-
- my $lines = $bubble_lines_per_response{$quest};
+ my $response = $quest-1;
+ my $lines = $bubble_lines_per_response{$response};
+ &Apache::lonnet::logthis("Question $quest, lines: $lines");
my $total_lines = $lines*2;
my @alphabet=('A'..'Z');
@@ -6700,12 +6733,14 @@ sub scantron_validate_doublebubble {
=cut
sub scantron_get_maxbubble {
-
+ &Apache::lonnet::logthis("get_max_bubble");
if (defined($env{'form.scantron_maxbubble'}) &&
$env{'form.scantron_maxbubble'}) {
+ &Apache::lonnet::logthis("cached");
&restore_bubble_lines();
return $env{'form.scantron_maxbubble'};
}
+ &Apache::lonnet::logthis("computing");
my (undef, undef, $sequence) =
&Apache::lonnet::decode_symb($env{'form.selectpage'});
@@ -7660,9 +7695,9 @@ function sanitycheck() {
-
-
-
+
+
+
|