Diff for /loncom/interface/lonquickgrades.pm between versions 1.113 and 1.118

version 1.113, 2017/12/31 15:49:03 version 1.118, 2020/09/01 03:35:54
Line 83  sub real_handler { Line 83  sub real_handler {
   
     my $reinitresult;      my $reinitresult;
   
       if ($env{'request.course.id'}) {
           my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
           my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
           my ($blocked,$blocktext) =
               &Apache::loncommon::blocking_status('grades',$cnum,$cdom);
           if ($blocked) {
               my $checkrole = "cm./$cdom/$cnum";
               if ($env{'request.course.sec'} ne '') {
                   $checkrole .= "/$env{'request.course.sec'}";
               }
               unless ((&Apache::lonnet::allowed('evb',undef,undef,$checkrole)) &&
                       ($env{'request.role'} !~ m{^st\./$cdom/$cnum})) {
                   &grades_blocked($r,$blocktext,$showPoints);
                   return OK;
               }
           }
       }
   
     unless ($cangrade) {      unless ($cangrade) {
         # Check for critical messages and redirect if present.          # Check for critical messages and redirect if present.
         my ($redirect,$url) = &Apache::loncommon::critical_redirect(300,'grades');          my ($redirect,$url) = &Apache::loncommon::critical_redirect(300,'grades');
Line 204  ENDCLOSE Line 222  ENDCLOSE
             $r->print('<p><span class="LC_warning">'.&mt("Unknown Student/Employee ID: [_1]",$stdid).'</span></p>');              $r->print('<p><span class="LC_warning">'.&mt("Unknown Student/Employee ID: [_1]",$stdid).'</span></p>');
             $stdid='';              $stdid='';
         }          }
           if (($uname eq '') && ($udom eq '')) {
               $uname = $env{'user.name'};
               $udom = $env{'user.domain'};
           }
         $r->print('<form method="post" name="quickform" action="/adm/quickgrades">');          $r->print('<form method="post" name="quickform" action="/adm/quickgrades">');
         my $chooseopt=&Apache::loncommon::select_dom_form($udom,'udom').' '.          my $chooseopt=&Apache::loncommon::select_dom_form($udom,'udom').' '.
            &Apache::loncommon::selectstudent_link('quickform','uname','udom');             &Apache::loncommon::selectstudent_link('quickform','uname','udom');
Line 219  ENDCLOSE Line 241  ENDCLOSE
     }      }
     $r->rflush();      $r->rflush();
   
     my $notshowSPRSlink =  
         (($env{'course.'.$env{'request.course.id'}.'.grading'} eq 'external')  
       || ($env{'course.'.$env{'request.course.id'}.'.grading'} eq 'externalnototals'));  
     my $notshowTotals=      my $notshowTotals=
         $env{'course.'.$env{'request.course.id'}.'.grading'} eq 'externalnototals';          $env{'course.'.$env{'request.course.id'}.'.grading'} eq 'externalnototals';
     my $showCategories=      my $showCategories=
Line 230  ENDCLOSE Line 249  ENDCLOSE
     my ($navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted)=      my ($navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted)=
        &getData($showPoints,$uname,$udom);         &getData($showPoints,$uname,$udom);
   
     if ($showCategories) {      if (ref($navmap)) {
        &outputCategories($r,$showPoints,$notshowTotals,          if ($showCategories) {
                  $navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted);              &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);
           }
     } else {      } else {
        &outputTable($r,$showPoints,$notshowTotals,          if ($cangrade) { $r->print("\n</form>\n"); }
                  $navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted);          my $requrl = $r->uri;
           $env{'user.error.msg'} = "$requrl:bre:0:0:Navmap initialization failed.";
           return HTTP_NOT_ACCEPTABLE;
     }      }
     if ($cangrade) { $r->print("\n</form>\n"); }      if ($cangrade) { $r->print("\n</form>\n"); }
     &endGradeScreen($r);      &endGradeScreen($r);
Line 243  ENDCLOSE Line 269  ENDCLOSE
   
 }  }
   
   sub grades_blocked {
       my ($r,$blocktext,$caller) = @_;
       my $title = 'Points Display';
       if ($caller eq 'spreadsheet') {
           $title = 'Spreadsheet';
       } elsif ($env{'course.'.$env{'request.course.id'}.'.grading'} ne 'standard') {
           $title = 'Completed Problems Display';
       }
       my $brcrum = [{href=>"/adm/quickgrades",text => $title}];
       &Apache::lonhtmlcommon::clear_breadcrumbs();
       &Apache::lonhtmlcommon::add_breadcrumb({href=>'/adm/quickgrades',
                                               text=> $title});
       my $breadcrumbs = &Apache::lonhtmlcommon::breadcrumbs($title);
       &Apache::loncommon::content_type($r,'text/html');
       &Apache::loncommon::no_cache($r);
       $r->send_http_header;
       $r->print(&Apache::loncommon::start_page($title).
                 $breadcrumbs.
                 $blocktext.
                 &Apache::loncommon::end_page());
       return;
   }
   
 sub getStudentCatGrade {  sub getStudentCatGrade {
     my ($uname,$udom,%categories)=@_;      my ($uname,$udom,%categories)=@_;
     my ($navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted)=      my ($navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted)=
Line 291  sub startGradeScreen { Line 340  sub startGradeScreen {
       || ($env{'course.'.$env{'request.course.id'}.'.grading'} eq 'categories'));        || ($env{'course.'.$env{'request.course.id'}.'.grading'} eq 'categories'));
     my $notshowTotals=      my $notshowTotals=
         $env{'course.'.$env{'request.course.id'}.'.grading'} eq 'externalnototals';          $env{'course.'.$env{'request.course.id'}.'.grading'} eq 'externalnototals';
       my $showSPRSlink =
           $env{'course.'.$env{'request.course.id'}.'.grading'} eq 'spreadsheet';
     my $showCategories=      my $showCategories=
         $env{'course.'.$env{'request.course.id'}.'.grading'} eq 'categories';          $env{'course.'.$env{'request.course.id'}.'.grading'} eq 'categories';
    
       my $allowed_to_view = &Apache::lonnet::allowed('vgr',$env{'request.course.id'});
       if ((!$allowed_to_view) && ($env{'request.course.sec'} ne '')) {
           $allowed_to_view = &Apache::lonnet::allowed('vgr',
                                  "$env{'request.course.id'}/$env{'request.course.sec'}");
       }
   
     my $allowed_to_view =  &Apache::lonnet::allowed('vgr',$env{'request.course.id'});      my $allowed_to_edit = &Apache::lonnet::allowed('mgr',$env{'request.course.id'});
     my $allowed_to_edit =  &Apache::lonnet::allowed('mgr',$env{'request.course.id'});      if ((!$allowed_to_edit) && ($env{'request.course.sec'} ne '')) {
           $allowed_to_edit = &Apache::lonnet::allowed('mgr',
                                  "$env{'request.course.id'}/$env{'request.course.sec'}");
       }
   
     if ($allowed_to_view) {      if ($allowed_to_view) {
        my @notes;         my @notes;
Line 303  sub startGradeScreen { Line 363  sub startGradeScreen {
        push(@notes,&mt('Students do not see link to spreadsheet.')) if ($notshowSPRSlink);         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);         push(@notes,&mt('Students will see points based on problem weights.')) if ($showPoints);
        push(@notes,&mt('Students will see points based on categories.')) if ($showCategories);         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'));         push(@notes, &Apache::lonhtmlcommon::coursepreflink(&mt('Grade display settings'),'grading'));
        $r->print(&Apache::loncommon::head_subbox(join('&nbsp;&nbsp;',@notes)));         $r->print(&Apache::loncommon::head_subbox(join('&nbsp;&nbsp;',@notes)));
     }      }
Line 343  sub startGradeScreen { Line 404  sub startGradeScreen {
 sub endGradeScreen {  sub endGradeScreen {
    my ($r)=@_;     my ($r)=@_;
    $r->print('</div></div></div>'.&Apache::loncommon::end_page());     $r->print('</div></div></div>'.&Apache::loncommon::end_page());
      return;
 }  }
   
 # -----------  # -----------
Line 415  sub getData { Line 477  sub getData {
     # Create the nav map      # Create the nav map
     my $navmap = Apache::lonnavmaps::navmap->new($uname,$udom);      my $navmap = Apache::lonnavmaps::navmap->new($uname,$udom);
   
       if (!defined($navmap)) {
           return ();
       }
   
     my $res = $navmap->firstResource(); # temp resource to access constants      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);
Line 444  sub getData { Line 510  sub getData {
         if ($curRes == $iterator->BEGIN_MAP()) {$depth++;}          if ($curRes == $iterator->BEGIN_MAP()) {$depth++;}
         if ($curRes == $iterator->END_MAP()) { $depth--; }          if ($curRes == $iterator->END_MAP()) { $depth--; }
   
         if (ref($curRes) && $curRes->is_gradable() && !$curRes->randomout)          if (ref($curRes) && $curRes->is_gradable() && !$curRes->randomout && 
               ($curRes->deeplink ne 'absent'))
         {          {
             # Get number of correct, incorrect parts              # Get number of correct, incorrect parts
             my $parts = $curRes->parts();              my $parts = $curRes->parts();
Line 642  sub outputTable { Line 709  sub outputTable {
     }      }
   
     $r->print(&Apache::loncommon::end_data_table());      $r->print(&Apache::loncommon::end_data_table());
       return;
 }  }
   
 #  #

Removed from v.1.113  
changed lines
  Added in v.1.118


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