Diff for /loncom/interface/lonmenu.pm between versions 1.239.4.3 and 1.239.4.4

version 1.239.4.3, 2008/12/30 18:39:03 version 1.239.4.4, 2009/05/13 03:26:11
Line 1444  sub hidden_button_check { Line 1444  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 1459  sub roles_selector { Line 1459  sub roles_selector {
         }          }
     }      }
     if ($is_cc) {      if ($is_cc) {
           &get_all_courseroles($cdom,$cnum,\%courseroles,\%seccount);
         my %adv_roles =          my %adv_roles =
              &Apache::lonnet::get_course_adv_roles($env{'request.course.id'},1);               &Apache::lonnet::get_course_adv_roles($env{'request.course.id'},1);
         foreach my $role (keys(%adv_roles)) {          foreach my $role (keys(%adv_roles)) {
Line 1488  sub roles_selector { Line 1489  sub roles_selector {
             push(@{$courseroles{'st'}},keys(%sections_count));              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 1545  sub roles_selector { Line 1547  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.239.4.3  
changed lines
  Added in v.1.239.4.4


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