--- loncom/interface/lonquickgrades.pm 2022/10/19 18:09:04 1.124 +++ loncom/interface/lonquickgrades.pm 2024/12/10 04:52:30 1.128 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Quick Student Grades Display # -# $Id: lonquickgrades.pm,v 1.124 2022/10/19 18:09:04 raeburn Exp $ +# $Id: lonquickgrades.pm,v 1.128 2024/12/10 04:52:30 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -170,7 +170,7 @@ ENDCLOSE if ($reinitresult eq 'supp') { $possdel = 1; } - my ($supplemental,$refs_updated) = &Apache::lonnet::get_supplemental($cnum,$cdom,'',$possdel); + my ($supplemental,$refs_updated) = &Apache::loncommon::get_supplemental($cnum,$cdom,'',$possdel); unless ($refs_updated) { &Apache::loncommon::set_supp_httprefs($cnum,$cdom,$supplemental); } @@ -261,8 +261,19 @@ ENDCLOSE my $showCategories= $env{'course.'.$env{'request.course.id'}.'.grading'} eq 'categories'; + my $usec; + if ($cangrade) { + if (($uname eq $env{'user.name'}) && ($udom eq $env{'user.domain'})) { + $usec = $env{'request.course.sec'}; + } else { + $usec = &Apache::lonnet::getsection($udom,$uname,$env{'request.course.id'}); + } + } else { + $usec = $env{'request.course.sec'}; + } + my ($navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts, - $topLevelRight,$topLevelAttempted) = &getData($showPoints,$uname,$udom); + $topLevelRight,$topLevelAttempted) = &getData($showPoints,$uname,$udom,$usec); if (ref($navmap)) { if ($showCategories) { @@ -270,9 +281,26 @@ ENDCLOSE $totalRight,$totalAttempted,$topLevelParts,$topLevelRight, $topLevelAttempted); } else { - &outputTable($r,$showPoints,$notshowTotals,$navmap,$totalParts,$totalPossible, - $totalRight,$totalAttempted,$topLevelParts,$topLevelRight, - $topLevelAttempted); + my $nostdtotals; + if ($showPoints) { + if ($env{'course.'.$env{'request.course.id'}.'.grading'} eq 'standard') { + my $hidetotals = $env{'course.'.$env{'request.course.id'}.'.hidetotals'}; + if ($hidetotals eq 'all') { + $nostdtotals = 1; + } elsif ($hidetotals ne '') { + if ($usec ne '') { + my %secnototals; + map { $secnototals{$_} = 1; } split(/,/,$hidetotals); + if ($secnototals{$usec}) { + $nostdtotals = 1; + } + } + } + } + } + &outputTable($r,$showPoints,$notshowTotals,$nostdtotals,$navmap, + $totalParts,$totalPossible,$totalRight,$totalAttempted, + $topLevelParts,$topLevelRight,$topLevelAttempted); } } else { if ($cangrade) { $r->print("\n\n"); } @@ -309,9 +337,9 @@ sub grades_blocked { } sub getStudentCatGrade { - my ($uname,$udom,%categories)=@_; + my ($uname,$udom,$usec,%categories)=@_; my ($navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted)= - &getData(1,$uname,$udom); + &getData(1,$uname,$udom,$usec); return &output_category_table(undef,0,$navmap,0,%categories); } @@ -327,11 +355,13 @@ sub getAllStudentData { my $usernameidx = &Apache::loncoursedata::CL_SNAME(); my $domainidx = &Apache::loncoursedata::CL_SDOM(); my $fullnameidx = &Apache::loncoursedata::CL_FULLNAME(); + my $sectionidx = &Apache::loncoursedata::CL_SECTION(); foreach my $key (keys(%{$classlist})) { my $student = $classlist->{$key}; my $perc=&getStudentCatGrade($classlist->{$student}->[$usernameidx], $classlist->{$student}->[$domainidx], + $classlist->{$student}->[$sectionidx], %categories); } } @@ -350,6 +380,8 @@ sub startGradeScreen { my $showPoints = $env{'course.'.$env{'request.course.id'}.'.grading'} eq 'standard'; + my $hidetotals = + $env{'course.'.$env{'request.course.id'}.'.hidetotals'}; my $notshowSPRSlink = (($env{'course.'.$env{'request.course.id'}.'.grading'} eq 'external') || ($env{'course.'.$env{'request.course.id'}.'.grading'} eq 'externalnototals') @@ -378,6 +410,20 @@ sub startGradeScreen { push(@notes,&mt('Students do not see total points.')) if ($notshowTotals); push(@notes,&mt('Students do not see link to spreadsheet.')) if ($notshowSPRSlink); push(@notes,&mt('Students will see points based on problem weights.')) if ($showPoints); + if (($showPoints) && ($hidetotals ne '')) { + if ($hidetotals eq 'all') { + push(@notes,&mt('Students do not see course totals.')); + } else { + my @secs = split(/,/,$hidetotals); + if (@secs == 1) { + push(@notes,&mt('Students in section [_1] do not see course totals.', + $hidetotals)); + } elsif (@secs > 1) { + push(@notes,&mt('Students in sections [_1] do not see course totals.', + join(', ',@secs))); + } + } + } push(@notes,&mt('Students will see points based on categories.')) if ($showCategories); push(@notes,&mt('Students will see link to spreadsheet.')) if ($showSPRSlink); push(@notes, &Apache::lonhtmlcommon::coursepreflink(&mt('Grade display settings'),'grading')); @@ -488,10 +534,10 @@ sub excel_finish { sub getData { - my ($showPoints,$uname,$udom)=@_; + my ($showPoints,$uname,$udom,$usec)=@_; # Create the nav map - my $navmap = Apache::lonnavmaps::navmap->new($uname,$udom); + my $navmap = Apache::lonnavmaps::navmap->new($uname,$udom,$usec); if (!defined($navmap)) { return (); @@ -636,8 +682,8 @@ sub getData { sub outputTable { - my ($r,$showPoints,$notshowTotals,$navmap,$totalParts,$totalPossible,$totalRight, - $totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted)=@_; + my ($r,$showPoints,$notshowTotals,$nostdtotals,$navmap,$totalParts,$totalPossible, + $totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted)=@_; my @start = (255, 255, 192); my @end = (0, 192, 0); @@ -723,16 +769,18 @@ sub outputTable { # show totals (if applicable), close table # if ($showPoints) { - my $maxHelpLink = &Apache::loncommon::help_open_topic("Quick_Grades_Possibly_Correct"); + unless ($nostdtotals) { + my $maxHelpLink = &Apache::loncommon::help_open_topic("Quick_Grades_Possibly_Correct"); - $title = $showPoints ? "Points" : "Parts Done"; - my $totaltitle = $showPoints ? &mt("Awarded Total Points") : &mt("Total Parts Done"); - $r->print(&Apache::loncommon::start_data_table_row() - .''.$totaltitle.': '.$totalRight.'
'); - $r->print(&mt('Max Possible To Date')." $maxHelpLink: $totalPossible
"); - $title = $showPoints ? "Points" : "Parts"; - $r->print(&mt("Total $title In Course").': '.$totalParts.'' - .&Apache::loncommon::end_data_table_row()); + $title = $showPoints ? "Points" : "Parts Done"; + my $totaltitle = $showPoints ? &mt("Awarded Total Points") : &mt("Total Parts Done"); + $r->print(&Apache::loncommon::start_data_table_row() + .''.$totaltitle.': '.$totalRight.'
'); + $r->print(&mt('Max Possible To Date')." $maxHelpLink: $totalPossible
"); + $title = $showPoints ? "Points" : "Parts"; + $r->print(&mt("Total $title In Course").': '.$totalParts.'' + .&Apache::loncommon::end_data_table_row()); + } } $r->print(&Apache::loncommon::end_data_table());