--- loncom/homework/grades.pm 2007/10/09 09:16:04 1.447 +++ loncom/homework/grades.pm 2007/10/11 21:27:50 1.453 @@ -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.453 2007/10/11 21:27:50 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,40 @@ 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 + my @stu_groups = split(/,/,$group); + if (@getgroup) { + my $exclude = 1; + foreach my $grp(@getgroup) { + foreach my $stu_group(@stu_groups) { + if ($stu_group eq $grp) { + $exclude = 0; + } + } + if (($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 +800,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 +901,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 +976,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.=''. @@ -950,7 +984,7 @@ LISTJAVASCRIPT $student.':'.$$fullname{$student}.':::SECTION'.$section. ') " />  '."\n".''."\n"; + ' '.$section.'/'.$group.''."\n"; if ($env{'form.showgrading'} eq 'yes' && $submitonly ne 'all') { foreach (sort keys(%status)) { @@ -1782,7 +1816,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 +5747,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 +5813,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 +6437,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 +6471,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 +6737,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 +7699,9 @@ function sanitycheck() {
-
-
-
+
+
+

'.$ctr.' '. &nameUserString(undef,$$fullname{$student},$uname,$udom). - ' '.$section.'