Diff for /loncom/interface/lonquickgrades.pm between versions 1.104 and 1.127

version 1.104, 2014/05/20 20:32:16 version 1.127, 2024/01/05 19:10:30
Line 37  use Apache::lonnet; Line 37  use Apache::lonnet;
 use Apache::grades;  use Apache::grades;
 use Apache::loncoursedata;  use Apache::loncoursedata;
 use Apache::lonstudentassessment;  use Apache::lonstudentassessment;
   use Apache::lonuserstate;
   
 use Time::HiRes;  use Time::HiRes;
 use Spreadsheet::WriteExcel;  use Spreadsheet::WriteExcel;
Line 62  sub handler { Line 63  sub handler {
 sub real_handler {  sub real_handler {
     my $r = shift;      my $r = shift;
   
     # Check for critical messages and redirect if present.    
     my ($redirect,$url) = &Apache::loncommon::critical_redirect(300);  
     if ($redirect) {  
         &Apache::loncommon::content_type($r,'text/html');  
         $r->header_out(Location => $url);  
         return REDIRECT;  
     }  
   
     &Apache::loncommon::get_unprocessed_cgi($ENV{QUERY_STRING});      &Apache::loncommon::get_unprocessed_cgi($ENV{QUERY_STRING});
   
     # Handle header-only request      # Handle header-only request
Line 83  sub real_handler { Line 76  sub real_handler {
         return OK;          return OK;
     }      }
   
     # Send header, don't cache this page      my $cangrade=&Apache::lonnet::allowed('mgr');
     &Apache::loncommon::no_cache($r);  
     $r->send_http_header;  
   
     my $showPoints =      my $showPoints =
         (($env{'course.'.$env{'request.course.id'}.'.grading'} eq 'standard')          (($env{'course.'.$env{'request.course.id'}.'.grading'} eq 'standard')
       || ($env{'course.'.$env{'request.course.id'}.'.grading'} eq 'categories'));        || ($env{'course.'.$env{'request.course.id'}.'.grading'} eq 'categories'));
     my $notshowSPRSlink =  
         (($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';  
   
       my $reinitresult;
   
     my $title = "Grading and Statistics";#$showPoints ? "Points Display" : "Completed Problems Display";      if ($env{'request.course.id'}) {
     my $brcrum = [{href=>"/adm/quickgrades",text => "Points Display"}];          my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
     $r->print(&Apache::loncommon::start_page($title,undef,          my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
                                             {'bread_crumbs' => $brcrum})          my $clientip = &Apache::lonnet::get_requestor_ip($r);
              );          my ($blocked,$blocktext) =
               &Apache::loncommon::blocking_status('grades',$clientip,$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) {
           # Check for critical messages and redirect if present.
           my ($redirect,$url) = &Apache::loncommon::critical_redirect(300,'grades');
           if ($redirect) {
               &Apache::loncommon::content_type($r,'text/html');
               $r->header_out(Location => $url);
               return REDIRECT;
           }
   
           # Check if course needs to be re-initialized
           my $loncaparev = $r->dir_config('lonVersion');
           ($reinitresult,my @reinit) = &Apache::loncommon::needs_coursereinit($loncaparev);
   
           if ($reinitresult eq 'switch') {
               &Apache::loncommon::content_type($r,'text/html');
               $r->send_http_header;
               $r->print(&Apache::loncommon::check_release_result(@reinit));
               return OK;
           }
           my ($cid,$cnum,$cdom);
           if ($reinitresult) {
               $cid = $env{'request.course.id'};
               $cnum = $env{'course.'.$cid.'.num'};
               $cdom = $env{'course.'.$cid.'.domain'};
           }
           if (($reinitresult eq 'main') || ($reinitresult eq 'both')) {
               &Apache::loncommon::content_type($r,'text/html');
               $r->send_http_header;
               &startpage($r,$showPoints);
               my $preamble = '<div id="LC_update_'.$cid.'" class="LC_info">'.
                              '<br />'.
                              &mt('Your course session is being updated because of recent changes by course personnel.').
                              ' '.&mt('Please be patient').'.<br /></div>'.
                              '<div style="padding:0;clear:both;margin:0;border:0"></div>';
               %prog_state = &Apache::lonhtmlcommon::Create_PrgWin($r,undef,$preamble);
               &Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Updating course'));
               $r->rflush();
               my ($furl,$ferr) = &Apache::lonuserstate::readmap("$cdom/$cnum");
               &Apache::lonhtmlcommon::Update_PrgWin($r,\%prog_state,&mt('Finished!')); 
               &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
               my $closure = <<ENDCLOSE;
   <script type="text/javascript">
   // <![CDATA[
   \$("#LC_update_$cid").hide('slow');
   // ]]>
   </script>
   ENDCLOSE
               if ($ferr) {
                   $r->print($closure.&Apache::loncommon::end_page());
                   my $requrl = $r->uri;
                   $env{'user.error.msg'}="$requrl:bre:0:0:Course not initialized";
                   $env{'user.reinit'} = 1;
                   return HTTP_NOT_ACCEPTABLE;
               } else {
                  $r->print($closure);
               }
           } elsif ((&Apache::loncommon::course_type() eq 'Placement') &&
                    (!$env{'request.role.adv'})) {
               my $furl = &Apache::lonpageflip::first_accessible_resource();
               &Apache::loncommon::content_type($r,'text/html');
               $r->header_out(Location => $furl);
               return REDIRECT;
           }
           if (($reinitresult eq 'supp') || ($reinitresult eq 'both')) {
               my $possdel;
               if ($reinitresult eq 'supp') {
                   $possdel = 1;
               }
               my ($supplemental,$refs_updated) = &Apache::loncommon::get_supplemental($cnum,$cdom,'',$possdel);
               unless ($refs_updated) {
                   &Apache::loncommon::set_supp_httprefs($cnum,$cdom,$supplemental);
               }
           }
       }
   
       unless (($reinitresult eq 'main') || ($reinitresult eq 'both')) {
           # Send header, don't cache this page
           &Apache::loncommon::no_cache($r);
           $r->send_http_header;
           &startpage($r,$showPoints);
       }
       $r->rflush();
   
     &startGradeScreen($r,'quick');      &startGradeScreen($r,'quick');
   
     my $cangrade=&Apache::lonnet::allowed('mgr');  
 #  #
 # Pick student  # Pick student
 #  #
Line 152  sub real_handler { Line 231  sub real_handler {
         if ($env{'form.udom'}) { $udom=$env{'form.udom'}; }          if ($env{'form.udom'}) { $udom=$env{'form.udom'}; }
         if ($env{'form.id'}) { $stdid=$env{'form.id'}; }          if ($env{'form.id'}) { $stdid=$env{'form.id'}; }
         if (($stdid) && ($udom)) {          if (($stdid) && ($udom)) {
             $uname=(&Apache::lonnet::idget($udom,$stdid))[1];              $uname=(&Apache::lonnet::idget($udom,[$stdid],'ids'))[1];
         }          }
         if (($stdid) && (!$uname)) {          if (($stdid) && (!$uname)) {
             $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 173  sub real_handler { Line 256  sub real_handler {
     }      }
     $r->rflush();      $r->rflush();
   
     my ($navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted)=      my $notshowTotals=
        &getData($showPoints,$uname,$udom);          $env{'course.'.$env{'request.course.id'}.'.grading'} eq 'externalnototals';
       my $showCategories=
           $env{'course.'.$env{'request.course.id'}.'.grading'} eq 'categories';
   
       my ($navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,
           $topLevelRight,$topLevelAttempted) = &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 {
               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 '') {
                           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'};
                           }
                           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 {      } 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);
     return OK;      return OK;
   }
   
   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 {
Line 217  sub getAllStudentData { Line 363  sub getAllStudentData {
     }      }
 }  }
   
   sub startpage {
       my ($r,$showPoints) = @_;
       my $title = "Grading and Statistics";#$showPoints ? "Points Display" : "Completed Problems Display";
       my $brcrum = [{href=>"/adm/quickgrades",text => "Points Display"}];
       $r->print(&Apache::loncommon::start_page($title,undef,
                                               {'bread_crumbs' => $brcrum})
                );
   }
   
 sub startGradeScreen {  sub startGradeScreen {
     my ($r,$mode)=@_;      my ($r,$mode)=@_;
   
     my $showPoints =      my $showPoints =
         $env{'course.'.$env{'request.course.id'}.'.grading'} eq 'standard';          $env{'course.'.$env{'request.course.id'}.'.grading'} eq 'standard';
       my $hidetotals =
           $env{'course.'.$env{'request.course.id'}.'.hidetotals'};
     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')        || ($env{'course.'.$env{'request.course.id'}.'.grading'} eq 'externalnototals')
       || ($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 $showCategories=      my $showSPRSlink =
           $env{'course.'.$env{'request.course.id'}.'.grading'} eq 'spreadsheet';
       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;
        push(@notes,&mt('Students do not see total points.')) if ($notshowTotals);         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 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);
          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 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 260  sub startGradeScreen { Line 442  sub startGradeScreen {
                                                                  &mt('Statistics and Reports').'</b></a></li>');                                                                   &mt('Statistics and Reports').'</b></a></li>');
   
        $r->print("\n".'<li'.($mode eq 'chart'?' class="active"':'').'><a href="/adm/statistics?reportSelected=student_assessment"><b>'.         $r->print("\n".'<li'.($mode eq 'chart'?' class="active"':'').'><a href="/adm/statistics?reportSelected=student_assessment"><b>'.
                                                                  &mt('Assessment Overview Chart').'</b></a></li>');                                                                   &mt('Assessment Chart').'</b></a></li>');
   
     }      }
     if ($allowed_to_edit) {      if ($allowed_to_edit) {
Line 279  sub startGradeScreen { Line 461  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 353  sub getData { Line 536  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 $deeplinkcond = 1;
       my $iterator = $navmap->getIterator(undef, undef, undef, 1, undef, undef, $deeplinkcond);
     my $depth = 1;      my $depth = 1;
     $iterator->next(); # ignore first BEGIN_MAP      $iterator->next(); # ignore first BEGIN_MAP
     my $curRes = $iterator->next();      my $curRes = $iterator->next();
       
     # General overview of the following: Walk along the course resources.      # General overview of the following: Walk along the course resources.
     # For every problem in the resource, tell its parent maps how many      # For every problem in the resource, tell its parent maps how many
     # parts and how many parts correct it has. After that, each map will      # parts and how many parts correct it has. After that, each map will
Line 381  sub getData { Line 569  sub getData {
     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--; }
           my ($deeplink,$nodeeplinkcheck,$symb);
         if (ref($curRes) && $curRes->is_problem() && !$curRes->randomout)          $nodeeplinkcheck = 1;
           if (ref($curRes)) {
               $symb = $curRes->symb();
               $deeplink = $curRes->deeplink('quickgrades');
               if ($deeplink eq 'absent') {
                   $nodeeplinkcheck = 0;
               }
           }
           if (ref($curRes) && $curRes->is_gradable() && !$curRes->randomout &&
               ($nodeeplinkcheck))
         {          {
             # Get number of correct, incorrect parts              # Get number of correct, incorrect parts
             my $parts = $curRes->parts();              my $parts = $curRes->parts();
Line 472  sub getData { Line 669  sub getData {
         }          }
         $curRes = $iterator->next();          $curRes = $iterator->next();
     }      }
     return ($navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted);      return ($navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,
               $topLevelParts,$topLevelRight,$topLevelAttempted);
 }  }
   
 #  #
Line 481  sub getData { Line 679  sub getData {
   
 sub outputTable {  sub outputTable {
   
     my ($r,$showPoints,$notshowTotals,      my ($r,$showPoints,$notshowTotals,$nostdtotals,$navmap,$totalParts,$totalPossible,
            $navmap,$totalParts,$totalPossible,$totalRight,$totalAttempted,$topLevelParts,$topLevelRight,$topLevelAttempted)=@_;          $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 503  sub outputTable { Line 701  sub outputTable {
 # Output of folder scores  # Output of folder scores
 #  #
   
     my $iterator = $navmap->getIterator(undef, undef, undef, 1);      my $deeplinkcond = 1;
       my $iterator = $navmap->getIterator(undef, undef, undef, 1, undef, undef, $deeplinkcond);
     my $depth = 1;      my $depth = 1;
     $iterator->next(); # ignore first BEGIN_MAP      $iterator->next(); # ignore first BEGIN_MAP
     my $curRes = $iterator->next();      my $curRes = $iterator->next();
Line 567  sub outputTable { Line 766  sub outputTable {
 # show totals (if applicable), close table  # show totals (if applicable), close table
 #  #
     if ($showPoints) {      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";              $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());
       return;
 }  }
   
 #  #
Line 633  sub dumpdata { Line 835  sub dumpdata {
   
 # Run through the map and get all data  # Run through the map and get all data
   
     my $iterator = $navmap->getIterator(undef, undef, undef, 1);      my $deeplinkcond = 1;
       my $iterator = $navmap->getIterator(undef, undef, undef, 1, undef, undef, $deeplinkcond);
     my $depth = 1;      my $depth = 1;
     $iterator->next(); # ignore first BEGIN_MAP      $iterator->next(); # ignore first BEGIN_MAP
     my $curRes = $iterator->next();      my $curRes = $iterator->next();

Removed from v.1.104  
changed lines
  Added in v.1.127


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>
500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.