Diff for /loncom/interface/lonquickgrades.pm between versions 1.45 and 1.54

version 1.45, 2008/12/11 14:55:15 version 1.54, 2010/12/03 15:21:35
Line 25 Line 25
 #  #
 # http://www.lon-capa.org/  # http://www.lon-capa.org/
 #  #
 # Created Nov. 14, 2002 by Jeremy Bowers  
   
 package Apache::lonquickgrades;  package Apache::lonquickgrades;
   
Line 65  sub real_handler { Line 64  sub real_handler {
     my $showPoints =       my $showPoints = 
         $env{'course.'.$env{'request.course.id'}.'.grading'} eq 'standard';          $env{'course.'.$env{'request.course.id'}.'.grading'} eq 'standard';
     my $notshowSPRSlink =       my $notshowSPRSlink = 
         $env{'course.'.$env{'request.course.id'}.'.grading'} eq 'external';          (($env{'course.'.$env{'request.course.id'}.'.grading'} eq 'external')
         || ($env{'course.'.$env{'request.course.id'}.'.grading'} eq 'externalnototals'));
       my $notshowTotals=
           $env{'course.'.$env{'request.course.id'}.'.grading'} eq 'externalnototals';
       my $showCategories=
           $env{'course.'.$env{'request.course.id'}.'.grading'} eq 'categories';
   
     # Create the nav map  
     my $navmap = Apache::lonnavmaps::navmap->new();  
   
     if (!defined($navmap)) {  
         my $requrl = $r->uri;  
         $env{'user.error.msg'} = "$requrl:bre:0:0:Navamp initialization failed.";  
         return HTTP_NOT_ACCEPTABLE;  
     }  
   
     # Keep this hash in sync with %statusIconMap in lonnavmaps; they  
     # should match color/icon  
     my $res = $navmap->firstResource(); # temp resource to access constants  
    
     # Header      # Header
     my $title = $showPoints ? "Points Display" : "Completed Problems Display";      my $title = "Grading and Statistics";#$showPoints ? "Points Display" : "Completed Problems Display";
  my @brcrum = [{href=>"/adm/quickgrades",text => "Points Display"}];      my $brcrum = [{href=>"/adm/quickgrades",text => "Points Display"}];
     $r->print(&Apache::loncommon::start_page($title,undef,{bread_crumbs => @brcrum}));      $r->print(&Apache::loncommon::start_page($title,undef,
                                               {'bread_crumbs' => $brcrum})
                );
   
       $r->print(&Apache::lonhtmlcommon::coursepreflink(&mt('Grade display settings'),'grading'));
   
     if (!$showPoints && !$notshowSPRSlink ) {      if (!$showPoints && !$notshowSPRSlink ) {
         $r->print('<p>'          $r->print('<p>'
Line 98  sub real_handler { Line 94  sub real_handler {
   
     $r->rflush();      $r->rflush();
   
     # End navmap using boilerplate  #    my $uname='korte';
   #    my $udom='gerd';
   
       my $uname;
       my $udom;
   
       my ($navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted)=
          &getData($showPoints,$uname,$udom);
   
       if ($showCategories) {
          &outputCategories($r,$showPoints,$notshowTotals,
                    $navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted);
       } else {
          &outputTable($r,$showPoints,$notshowTotals,
                    $navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted);
       }
       return OK;
   
   }
   
   sub getData {
   
       my ($showPoints,$uname,$udom)=@_;
   
       &Apache::lonnet::logthis("About to call with $uname $udom");
   
       # Create the nav map
       my $navmap = Apache::lonnavmaps::navmap->new($uname,$udom);
   
       my $res = $navmap->firstResource(); # temp resource to access constants
   
     my $iterator = $navmap->getIterator(undef, undef, undef, 1);      my $iterator = $navmap->getIterator(undef, undef, undef, 1);
     my $depth = 1;      my $depth = 1;
Line 213  sub real_handler { Line 238  sub real_handler {
         }          }
         $curRes = $iterator->next();          $curRes = $iterator->next();
     }      }
       return ($navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted);
   }
   
     $iterator = $navmap->getIterator(undef, undef, undef, 1);  #
     $depth = 1;  # Outputting everything.
     $iterator->next(); # ignore first BEGIN_MAP  #
     $curRes = $iterator->next();  
   sub outputTable {
   
       my ($r,$showPoints,$notshowTotals,
              $navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted)=@_;
   
     my @start = (255, 255, 192);      my @start = (255, 255, 192);
     my @end   = (0, 192, 0);      my @end   = (0, 192, 0);
Line 228  sub real_handler { Line 259  sub real_handler {
     $r->print(&Apache::loncommon::start_data_table()      $r->print(&Apache::loncommon::start_data_table()
              .&Apache::loncommon::start_data_table_header_row()               .&Apache::loncommon::start_data_table_header_row()
              .'<th>'.&mt('Folder').'</th>');               .'<th>'.&mt('Folder').'</th>');
     $title = &mt($showPoints ? "Points Scored" : "Done");      my $title = &mt($showPoints ? "Points Scored" : "Done");
     if ($totalAttempted) {      if ($totalAttempted) {
  $title .= " / " . &mt("Attempted");          $title .= " / " . &mt("Attempted");
     }      }
     $r->print("<th>$title / ".&mt('Total').'</td>'      $r->print("<th>$title".($notshowTotals?'':" / ".&mt('Total')).'</th>'
              .&Apache::loncommon::end_data_table_header_row());               .&Apache::loncommon::end_data_table_header_row());
   #
   # Output of folder scores
   #
   
       my $iterator = $navmap->getIterator(undef, undef, undef, 1);
       my $depth = 1;
       $iterator->next(); # ignore first BEGIN_MAP
       my $curRes = $iterator->next();
   
     while ($depth > 0) {      while ($depth > 0) {
         if ($curRes == $iterator->BEGIN_MAP()) {$depth++;}          if ($curRes == $iterator->BEGIN_MAP()) {$depth++;}
         if ($curRes == $iterator->END_MAP()) { $depth--; }          if ($curRes == $iterator->END_MAP()) { $depth--; }
Line 248  sub real_handler { Line 288  sub real_handler {
             if ($total > 0) {              if ($total > 0) {
                 my $ratio;                  my $ratio;
                 $ratio = $correct / $total;                  $ratio = $correct / $total;
                 my $color = mixColors(\@start, \@end, $ratio);                  my $color = &mixColors(\@start, \@end, $ratio);
                 $r->print(&Apache::loncommon::start_data_table_row()                  $r->print(&Apache::loncommon::start_data_table_row()
                          .'<td style="background-color:'.$color.';">');                           .'<td style="background-color:'.$color.';">');
                                   
Line 260  sub real_handler { Line 300  sub real_handler {
     $r->print('<td valign="top">'      $r->print('<td valign="top">'
                              .$thisIndent                               .$thisIndent
                              .'<span class="LC_nobreak">'                               .'<span class="LC_nobreak">'
                              .$correct.' / '.$attempted.' / '.$total                               .$correct.' / '.$attempted.($notshowTotals?'':' / '.$total)
                              .'</span></td>'                               .'</span></td>'
                              .&Apache::loncommon::end_data_table_row()                               .&Apache::loncommon::end_data_table_row()
                     );                      );
Line 268  sub real_handler { Line 308  sub real_handler {
     $r->print('<td valign="top">'      $r->print('<td valign="top">'
                              .$thisIndent                               .$thisIndent
                              .'<span class="LC_nobreak">'                               .'<span class="LC_nobreak">'
                              .$correct.' / '.$total                               .$correct.($notshowTotals?'':' / '.$total)
                              .'</span></td>'                               .'</span></td>'
                              .&Apache::loncommon::end_data_table_row());                               .&Apache::loncommon::end_data_table_row());
  }   }
Line 289  sub real_handler { Line 329  sub real_handler {
                  .&Apache::loncommon::end_data_table_row());                   .&Apache::loncommon::end_data_table_row());
     }      }
   
   #
   # show totals (if applicable), close table
   #
     if ($showPoints) {      if ($showPoints) {
  my $maxHelpLink = Apache::loncommon::help_open_topic("Quick_Grades_Possibly_Correct");          my $maxHelpLink = Apache::loncommon::help_open_topic("Quick_Grades_Possibly_Correct");
   
  $title = $showPoints ? "Points" : "Parts Done";          $title = $showPoints ? "Points" : "Parts Done";
  my $totaltitle = $showPoints ? &mt("Awarded Total Points") : &mt("Total Parts Done");          my $totaltitle = $showPoints ? &mt("Awarded Total Points") : &mt("Total Parts Done");
  $r->print(&Apache::loncommon::start_data_table_row()          $r->print(&Apache::loncommon::start_data_table_row()
                  .'<td colspan="2" align="right">'.$totaltitle.': <b>'.$totalRight.'</b><br>');                   .'<td colspan="2" align="right">'.$totaltitle.': <b>'.$totalRight.'</b><br />');
  $r->print(&mt("Max Possible To Date")." $maxHelpLink: <b>$totalPossible</b><br>");          $r->print(&mt('Max Possible To Date')." $maxHelpLink: <b>$totalPossible</b><br />");
  $title = $showPoints ? "Points" : "Parts";          $title = $showPoints ? "Points" : "Parts";
  $r->print(&mt("Total $title In Course").': <b>'.$totalParts.'</b></td>'          $r->print(&mt("Total $title In Course").': <b>'.$totalParts.'</b></td>'
                  .&Apache::loncommon::end_data_table_row());                   .&Apache::loncommon::end_data_table_row());
     }      }
   
     $r->print(&Apache::loncommon::end_data_table()      $r->print(&Apache::loncommon::end_data_table()
              .&Apache::loncommon::end_page());               .&Apache::loncommon::end_page());
   
     return OK;  }
   
   #
   # Outputting category-based grades.
   #
   
   sub outputCategories {
   
       my ($r,$showPoints,$notshowTotals,
              $navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted)=@_;
 }  }
   
 # Pass this two refs to arrays for the start and end color, and a number  # Pass this two refs to arrays for the start and end color, and a number
 # from 0 to 1 for how much of the latter you want to mix in. It will  # from 0 to 1 for how much of the latter you want to mix in. It will
 # return a string ready to show ("#FFC309");  # return a string ready to show ("#FFC309");
   
 sub mixColors {  sub mixColors {
     my $start = shift;      my $start = shift;
     my $end = shift;      my $end = shift;

Removed from v.1.45  
changed lines
  Added in v.1.54


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>