Diff for /loncom/interface/lonmenu.pm between versions 1.260 and 1.266

version 1.260, 2009/04/23 17:28:59 version 1.266, 2009/05/18 16:29:55
Line 51  described at http://www.lon-capa.org. Line 51  described at http://www.lon-capa.org.
   
 =over  =over
   
 =item show_course()  
   
 Little texts  Little texts
   
 =item initlittle()  =item initlittle()
Line 150  use vars qw(@desklines %category_names % Line 148  use vars qw(@desklines %category_names %
   
 my @inlineremote;  my @inlineremote;
   
   
   
 sub show_course {  
     my $course = !$env{'user.adv'};  
     if (!$env{'user.adv'}) {  
  foreach my $env (keys(%env)) {  
     next if ($env !~ m/^user\.priv\./);  
     if ($env !~ m/^user\.priv\.(?:st|cm)/) {  
  $course = 0;  
  last;  
     }  
  }  
     }  
     return $course;  
 }  
   
 sub initlittle {  sub initlittle {
     return &Apache::lonlocal::texthash('ret' => 'Return to Last Location',      return &Apache::lonlocal::texthash('ret' => 'Return to Last Location',
        'nav' => 'Navigate Contents',         'nav' => 'Navigate Contents',
        'main' => 'Main Menu',         'main' => 'Main Menu',
                                        'roles' => (&show_course()?                                         'roles' => (&Apache::loncommon::show_course()?
                                                     'Courses':'Roles'),                                                      'Courses':'Roles'),
                                        'other' => 'Other Roles',                                         'other' => 'Other Roles',
                                        'docs' => 'Edit Course',                                         'docs' => 'Edit Course',
Line 369  $utility Line 351  $utility
  <li>$helplink</li>   <li>$helplink</li>
  <li><a href="/adm/logout" target="_top">$lt{'exit'}</a></li>   <li><a href="/adm/logout" target="_top">$lt{'exit'}</a></li>
 </ol>  </ol>
 <ol id="LC_TabMainMenuContent">  <ul id="LC_TabMainMenuContent">
 <li><a href="/adm/menu" target="_top">$lt{'main'}</a></li>  <li><a href="/adm/menu" target="_top">$lt{'main'}</a></li>
 $reloadlink  $reloadlink
 $navmaps  $navmaps
 $docs  $docs
 $groups  $groups
 $role_selector  $role_selector
 </ol>  </ul>
 $form  $form
 <script type="text/javascript">  <script type="text/javascript">
 // END LON-CAPA Internal  // END LON-CAPA Internal
 </script>  </script>
 <br clear="all" />  
 $reg  $reg
 ENDINLINEMENU  ENDINLINEMENU
     } else {      } else {
Line 989  sub load_remote_msg { Line 970  sub load_remote_msg {
         ($env{'environment.remote'} eq 'off')) { return ''; }          ($env{'environment.remote'} eq 'off')) { return ''; }
   
     my $esclowerurl=&escape($lowerurl);      my $esclowerurl=&escape($lowerurl);
     my $link=&mt('<a href="[_1]">Continue</a> on in Inline Menu mode',      my $link=&mt('[_1]Continue[_2] on in Inline Menu mode'
  "/adm/remote?action=collapse&amp;url=$esclowerurl");                  ,'<a href="/adm/remote?action=collapse&amp;url='.$esclowerurl.'">'
                   ,'</a>');
     return(<<ENDREMOTEFORM);      return(<<ENDREMOTEFORM);
 <p>  <p>
 <form name="wheel">  <form name="wheel">
Line 1206  sub rawconfig { Line 1188  sub rawconfig {
     my $uname=$env{'user.name'};      my $uname=$env{'user.name'};
     my $udom=$env{'user.domain'};      my $udom=$env{'user.domain'};
     my $adv=$env{'user.adv'};      my $adv=$env{'user.adv'};
     my $show_course=&show_course();      my $show_course=&Apache::loncommon::show_course();
     my $author=$env{'user.author'};      my $author=$env{'user.author'};
     my $crs='';      my $crs='';
     if ($env{'request.course.id'}) {      if ($env{'request.course.id'}) {
Line 1628  sub hidden_button_check { Line 1610  sub hidden_button_check {
 sub roles_selector {  sub roles_selector {
     my ($cdom,$cnum) = @_;      my ($cdom,$cnum) = @_;
     my $now = time;      my $now = time;
     my (%courseroles,%seccount,%gotnosection);      my (%courseroles,%seccount);
     my $is_cc;      my $is_cc;
     my $role_selector;      my $role_selector;
     if ($env{'user.role.cc./'.$cdom.'/'.$cnum}) {      if ($env{'user.role.cc./'.$cdom.'/'.$cnum}) {
Line 1643  sub roles_selector { Line 1625  sub roles_selector {
         }          }
     }      }
     if ($is_cc) {      if ($is_cc) {
         my %adv_roles =          &get_all_courseroles($cdom,$cnum,\%courseroles,\%seccount);
              &Apache::lonnet::get_course_adv_roles($env{'request.course.id'},1);  
         foreach my $role (keys(%adv_roles)) {  
             my ($urole,$usec) = split(/:/,$role);  
             if (!$gotnosection{$urole}) {  
                 $seccount{$urole} ++;  
                 $gotnosection{$urole} = 1;  
             }  
             if (ref($courseroles{$urole}) eq 'ARRAY') {  
                 if ($usec ne '') {  
                     if (!grep(/^Q$usec\E$/,@{$courseroles{$urole}})) {  
                         push(@{$courseroles{$urole}},$usec);  
                         $seccount{$urole} ++;  
                     }  
                 }  
             } else {  
                 @{$courseroles{$urole}} = ();  
                 if ($usec ne '') {  
                     $seccount{$urole} ++;  
                     push(@{$courseroles{$urole}},$usec);  
                 }  
             }  
         }  
         my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum);  
         @{$courseroles{'st'}} = ();  
         if (keys(%sections_count) > 0) {  
             push(@{$courseroles{'st'}},keys(%sections_count));  
         }  
     } else {      } else {
           my %gotnosection;
         foreach my $item (keys(%env)) {          foreach my $item (keys(%env)) {
             if ($item =~ m-^user\.role\.([^.]+)\./\Q$cdom\E/\Q$cnum\E/?(\w*)$-) {              if ($item =~ m-^user\.role\.([^.]+)\./\Q$cdom\E/\Q$cnum\E/?(\w*)$-) {
                 my $role = $1;                  my $role = $1;
Line 1687  sub roles_selector { Line 1643  sub roles_selector {
                 }                  }
                 if (ref($courseroles{$role}) eq 'ARRAY') {                  if (ref($courseroles{$role}) eq 'ARRAY') {
                     if ($sec ne '') {                      if ($sec ne '') {
                         if (!grep(/^Q$sec\E$/,@{$courseroles{$role}})) {                          if (!grep(/^\Q$sec\E$/,@{$courseroles{$role}})) {
                             push(@{$courseroles{$role}},$sec);                              push(@{$courseroles{$role}},$sec);
                             $seccount{$role} ++;                              $seccount{$role} ++;
                         }                          }
Line 1729  sub roles_selector { Line 1685  sub roles_selector {
     return $role_selector;      return $role_selector;
 }  }
   
   sub get_all_courseroles {
       my ($cdom,$cnum,$courseroles,$seccount) = @_;
       unless ((ref($courseroles) eq 'HASH') && (ref($seccount) eq 'HASH')) {
           return;
       }
       my ($result,$cached) = 
           &Apache::lonnet::is_cached_new('getcourseroles',$cdom.'_'.$cnum);
       if (defined($cached)) {
           if (ref($result) eq 'HASH') {
               if ((ref($result->{'roles'}) eq 'HASH') && 
                   (ref($result->{'seccount'}) eq 'HASH')) {
                   %{$courseroles} = %{$result->{'roles'}};
                   %{$seccount} = %{$result->{'seccount'}};
                   return;
               }
           }
       }
       my %gotnosection;
       my %adv_roles =
            &Apache::lonnet::get_course_adv_roles($env{'request.course.id'},1);
       foreach my $role (keys(%adv_roles)) {
           my ($urole,$usec) = split(/:/,$role);
           if (!$gotnosection{$urole}) {
               $seccount->{$urole} ++;
               $gotnosection{$urole} = 1;
           }
           if (ref($courseroles->{$urole}) eq 'ARRAY') {
               if ($usec ne '') {
                   if (!grep(/^Q$usec\E$/,@{$courseroles->{$urole}})) {
                       push(@{$courseroles->{$urole}},$usec);
                       $seccount->{$urole} ++;
                   }
               }
           } else {
               @{$courseroles->{$urole}} = ();
               if ($usec ne '') {
                   $seccount->{$urole} ++;
                   push(@{$courseroles->{$urole}},$usec);
               }
           }
       }
       my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum,['st']);
       @{$courseroles->{'st'}} = ();
       if (keys(%sections_count) > 0) {
           push(@{$courseroles->{'st'}},keys(%sections_count));
           $seccount->{'st'} = scalar(keys(%sections_count)); 
       }
       my $rolehash = {
                        'roles'    => $courseroles,
                        'seccount' => $seccount,
                      };
       &Apache::lonnet::do_cache_new('getcourseroles',$cdom.'_'.$cnum,$rolehash);
       return;
   }
   
 sub jump_to_role {  sub jump_to_role {
     my ($cdom,$cnum,$seccount,$courseroles) = @_;      my ($cdom,$cnum,$seccount,$courseroles) = @_;
     my %lt = &Apache::lonlocal::texthash(      my %lt = &Apache::lonlocal::texthash(

Removed from v.1.260  
changed lines
  Added in v.1.266


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