Diff for /loncom/interface/lonnavdisplay.pm between versions 1.22.4.10.2.6 and 1.43

version 1.22.4.10.2.6, 2025/05/28 04:40:55 version 1.43, 2024/07/02 02:13:19
Line 39  use Apache::lonnet; Line 39  use Apache::lonnet;
 use Apache::lonlocal;  use Apache::lonlocal;
 use Apache::londocs();  use Apache::londocs();
 use Apache::lonuserstate;  use Apache::lonuserstate;
 use LONCAPA;  use LONCAPA::ltiutils;
   
 sub handler {  sub handler {
     my $r = shift;      my $r = shift;
Line 55  sub real_handler { Line 55  sub real_handler {
         return OK;          return OK;
     }      }
   
     # Check for critical messages and redirect if present.      # Check for critical messages and redirect if present.  
     my ($redirect,$url) = &Apache::loncommon::critical_redirect(300,'contents');      my ($redirect,$url) = &Apache::loncommon::critical_redirect(300,'contents');
     if ($redirect) {      if ($redirect) {
         &Apache::loncommon::content_type($r,'text/html');          &Apache::loncommon::content_type($r,'text/html');
Line 85  sub real_handler { Line 85  sub real_handler {
         $cnum = $env{'course.'.$cid.'.num'};          $cnum = $env{'course.'.$cid.'.num'};
         $cdom = $env{'course.'.$cid.'.domain'};          $cdom = $env{'course.'.$cid.'.domain'};
     }      }
     if (($result eq 'main') || ($result eq 'both')) {          if (($result eq 'main') || ($result eq 'both')) {
         &Apache::loncommon::content_type($r,'text/html');          &Apache::loncommon::content_type($r,'text/html');
         $r->send_http_header;          $r->send_http_header;
         &startpage($r);          &startpage($r);
Line 126  ENDCLOSE Line 126  ENDCLOSE
         }          }
     }      }
   
       my $course_type = &Apache::loncommon::course_type();
       if (($course_type eq 'Placement') && (!$env{'request.role.adv'})) { 
           my $furl = &Apache::lonpageflip::first_accessible_resource();
           if ($result eq 'update') {
               &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
               $r->print($closure.&Apache::loncommon::end_page());
               return OK;
           } else {
               unless ($furl eq '/adm/navmaps') {
                   &Apache::loncommon::content_type($r,'text/html');
                   $r->header_out(Location => $furl);
                   return REDIRECT;
               }
           }
       }
   
       if ($env{'request.lti.login'}) {
           if ($env{'request.lti.uri'} ne '') {
               my $cid = $env{'request.course.id'};
               my $cnum = $env{'course.'.$cid.'.num'};
               my $cdom = $env{'course.'.$cid.'.domain'};
               my ($scope,$url) = &LONCAPA::ltiutils::lti_provider_scope($env{'request.lti.uri'},$cdom,$cnum);
               if (($scope eq 'map') || ($scope eq 'resource')) {
                   &Apache::loncommon::content_type($r,'text/html');
                   $r->header_out(Location => $url);
                   return REDIRECT;
               }
           }
       }
   
     # Create the nav map      # Create the nav map
     my $navmap = Apache::lonnavmaps::navmap->new();      my $navmap = Apache::lonnavmaps::navmap->new();
   
     if (!defined($navmap)) {      if (!defined($navmap)) {
         if (($result eq 'main') || ($result eq 'both')) {          if ($result eq 'update') {
             &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);              &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
             $r->print($closure.&Apache::loncommon::end_page());              $r->print($closure.&Apache::loncommon::end_page());
         }          }
Line 140  ENDCLOSE Line 170  ENDCLOSE
         return HTTP_NOT_ACCEPTABLE;          return HTTP_NOT_ACCEPTABLE;
     }      }
   
     if (($result eq 'main') || ($result eq 'both')) {      if ($result eq 'update') {
         $r->rflush();          $r->rflush();
         &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);          &Apache::lonhtmlcommon::Close_PrgWin($r,\%prog_state);
         $r->print($closure);          $r->print($closure);
Line 152  ENDCLOSE Line 182  ENDCLOSE
         &startpage($r);          &startpage($r);
     }      }
   
     &startContentScreen($r,'navmaps');      &startContentScreen($r,'navmaps',$course_type);
     unless (($result eq 'main') || ($result eq 'both')) {      unless ($result eq 'update') {
         $r->rflush();          $r->rflush();
     }      }
   
Line 317  ENDCLOSE Line 347  ENDCLOSE
     # If no resources were printed, print a reassuring message so the      # If no resources were printed, print a reassuring message so the
     # user knows there was no error.      # user knows there was no error.
     if ($renderArgs->{'counter'} == 0) {      if ($renderArgs->{'counter'} == 0) {
         my $noresmsg;  
         if ($showOnlyHomework) {          if ($showOnlyHomework) {
             $noresmsg = &mt('All homework is currently completed.');              $r->print("<p><span class=\"LC_info\">".&mt("All homework is currently completed.")."</span></p>");
         } else { # both jumpToFirstHomework and normal use the same: course must be empty          } else { # both jumpToFirstHomework and normal use the same: course must be empty
             $noresmsg = &mt('This course is empty.');              $r->print("<p><span class=\"LC_info\">".&mt("This course is empty.")."</span></p>");
             if (($renderArgs->{'deeplinknolist'}) &&  
                 ($env{'request.course.deeponlyprot'})) {  
                 my ($linkprot,$currmatch,$othermatches,@names);  
                 if ($env{'request.linkprot'}) {  
                     ($linkprot) = split(/:/,$env{'request.linkprot'});  
                 }  
                 foreach my $launcher (split(/&/,$env{'request.course.deeponlyprot'})) {  
                     my ($name,$itemnums) = split(/:/,$launcher);  
                     my @nums = split(/,/,$itemnums);  
                     if (($linkprot) &&  
                         (grep(/^\Q$linkprot\E$/,@nums))) {  
                         $currmatch = &LONCAPA::unescape($name);  
                         if (@nums > 1) {  
                             $othermatches = 1;  
                         }  
                     } else {  
                         push(@names,&LONCAPA::unescape($name));  
                     }  
                 }  
                 my $cnum = $env{'course.'.$env{'request.course.id'}.'.num'};  
                 my $cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};  
                 my $has_supp = &Apache::lonnet::has_unhidden_suppfiles($cnum,$cdom);  
                 if ($linkprot) {  
                     if ($currmatch) {  
                         if ($has_supp) {  
                             $noresmsg = &mt('No main content available when accessed using the link you followed from [_1].',  
                                             $currmatch);  
                         } else {  
                             $noresmsg = &mt('No content available when accessed using the link you followed from [_1].',  
                                             $currmatch);  
                         }  
                         if ($othermatches) {  
                             $noresmsg = '<br />';  
                             if ($has_supp) {  
                                 $noresmsg .= &mt('Main content may be available by following a different link from [_1].',  
                                                  $currmatch);  
                             } else {  
                                 $noresmsg .= &mt('Content may be available by following a different link from [_1].',  
                                                  $currmatch);  
                             }  
                         }  
                     } else {  
                         if ($has_supp) {  
                             $noresmsg = &mt('No main content available using the link you followed.');  
                         } else {  
                             $noresmsg = &mt('No content available using the link you followed.');  
                         }  
                     }  
                 } elsif (@names > 0) {  
                     if ($has_supp) {  
                         $noresmsg = &mt('No main content available from direct login to this course.');  
                     } else {  
                         $noresmsg = &mt('No content available from direct login to this course.');  
                     }  
                 }  
                 if (@names == 1) {  
                     $noresmsg .= '<br />';  
                     if ($has_supp) {  
                         $noresmsg .= &mt('Main content is likely available by following links from [_1]',  
                                          $names[0]);  
                     } else {  
                         $noresmsg .= &mt('Content is likely available by following links from [_1]',  
                                          $names[0]);  
                     }  
                 } elsif (@names > 1) {  
                     $noresmsg .= '<br />';  
                     if ($has_supp) {  
                         $noresmsg .= &mt('Main content is likely available by following links from the following: [_1]',  
                                          join(', ',@names));  
                     } else {  
                         $noresmsg .= &mt('Content is likely available by following links from the following: [_1]',  
                                          join(', ',@names));  
                     }  
                 }  
             }  
         }          }
         $r->print('<p><span class="LC_info">'.$noresmsg.'</span></p>');  
     }      }
     &endContentScreen($r);      &endContentScreen($r);
     $r->print(&Apache::loncommon::end_page());      $r->print(&Apache::loncommon::end_page());
Line 428  sub startpage { Line 381  sub startpage {
 }  }
   
 sub startContentScreen {  sub startContentScreen {
     my ($r,$mode)=@_;      my ($r,$mode,$course_type)=@_;
   
     $r->print("\n".'<ul class="LC_TabContentBigger" id="mainnav">'."\n");      $r->print("\n".'<ul class="LC_TabContentBigger" id="mainnav">'."\n");
     $r->print('<li'.(($mode eq 'navmaps')?' class="active"':'').'><a href="/adm/navmaps"><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.&mt('Main Content').'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b></a></li>'."\n");      $r->print('<li'.(($mode eq 'navmaps')?' class="active"':'').'><a href="/adm/navmaps"><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.&mt('Main Content').'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b></a></li>'."\n");
Line 443  sub startContentScreen { Line 396  sub startContentScreen {
     if ($supptab) {      if ($supptab) {
         $r->print('<li '.(($mode eq 'supplemental')?' class="active"':'').'><a href="/adm/supplemental"><b>'.&mt('Supplemental Content').'</b></a></li>');          $r->print('<li '.(($mode eq 'supplemental')?' class="active"':'').'><a href="/adm/supplemental"><b>'.&mt('Supplemental Content').'</b></a></li>');
     }      }
     $r->print('<li'.(($mode eq 'coursesearch')?' class="active"':'').'><a href="/adm/searchcourse"><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.&mt('Content Search').'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b></a></li>'."\n");      unless ($course_type eq 'Placement') {
           $r->print('<li'.(($mode eq 'coursesearch')?' class="active"':'').'><a href="/adm/searchcourse"><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.&mt('Content Search').'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b></a></li>'."\n");
           $r->print('<li'.(($mode eq 'courseindex')?' class="active"':'').'><a href="/adm/indexcourse"><b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.&mt('Content Index').'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</b></a></li>'."\n");
       }
     $r->print("\n".'</ul>'."\n");      $r->print("\n".'</ul>'."\n");
     $r->print('<div class="LC_Box" style="clear:both;margin:0;"><div id="maincoursedoc" style="margin:0 0;padding:0 0;"><div class="LC_ContentBox" id="mainCourseDocuments" style="display: block;">');      $r->print('<div class="LC_Box" style="clear:both;margin:0;"><div id="maincoursedoc" style="margin:0 0;padding:0 0;"><div class="LC_ContentBox" id="mainCourseDocuments" style="display: block;">');
 }  }

Removed from v.1.22.4.10.2.6  
changed lines
  Added in v.1.43


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