Diff for /loncom/interface/lonmenu.pm between versions 1.369.2.67 and 1.369.2.68

version 1.369.2.67, 2016/12/01 16:53:15 version 1.369.2.68, 2017/01/22 17:10:28
Line 2360  sub roles_selector { Line 2360  sub roles_selector {
     my ($cdom,$cnum,$httphost) = @_;      my ($cdom,$cnum,$httphost) = @_;
     my $crstype = &Apache::loncommon::course_type();      my $crstype = &Apache::loncommon::course_type();
     my $now = time;      my $now = time;
     my (%courseroles,%seccount,%courseprivs);      my (%courseroles,%seccount,%courseprivs,%roledesc);
     my $is_cc;      my $is_cc;
     my ($js,$form,$switcher);      my ($js,$form,$switcher);
     my $ccrole;      my $ccrole;
Line 2410  sub roles_selector { Line 2410  sub roles_selector {
     if ($is_cc) {      if ($is_cc) {
         &get_all_courseroles($cdom,$cnum,\%courseroles,\%seccount,\%courseprivs);          &get_all_courseroles($cdom,$cnum,\%courseroles,\%seccount,\%courseprivs);
     } elsif ($env{'request.role'} =~ m{^\Qcr/$cdom/$cdom-domainconfig/\E(\w+)\.\Q/$cdom/$cnum\E}) {      } elsif ($env{'request.role'} =~ m{^\Qcr/$cdom/$cdom-domainconfig/\E(\w+)\.\Q/$cdom/$cnum\E}) {
         &get_customadhoc_roles($cdom,$cnum,\%courseroles,\%seccount,\%courseprivs,$privref);          &get_customadhoc_roles($cdom,$cnum,\%courseroles,\%seccount,\%courseprivs,\%roledesc,$privref);
     } else {      } else {
         my %gotnosection;          my %gotnosection;
         foreach my $item (keys(%env)) {          foreach my $item (keys(%env)) {
Line 2464  sub roles_selector { Line 2464  sub roles_selector {
     }      }
     if ((keys(%seccount) > 1) || ($numdiffsec > 1)) {      if ((keys(%seccount) > 1) || ($numdiffsec > 1)) {
         my @submenu;          my @submenu;
         $js = &jump_to_role($cdom,$cnum,\%seccount,\%courseroles,\%courseprivs,$privref);          $js = &jump_to_role($cdom,$cnum,\%seccount,\%courseroles,\%courseprivs,\%roledesc,$privref);
         $form =           $form = 
             '<form name="rolechooser" method="post" action="'.$httphost.'/adm/roles">'."\n".              '<form name="rolechooser" method="post" action="'.$httphost.'/adm/roles">'."\n".
             '  <input type="hidden" name="destinationurl" value="'.              '  <input type="hidden" name="destinationurl" value="'.
Line 2506  sub roles_selector { Line 2506  sub roles_selector {
                 if ($include) {                  if ($include) {
                     my $rolename;                      my $rolename;
                     if ($role =~ m{^cr/$cdom/$cdom\-domainconfig/(\w+)(?:/\w+|$)}) {                      if ($role =~ m{^cr/$cdom/$cdom\-domainconfig/(\w+)(?:/\w+|$)}) {
                         $rolename = &mt('Helpdesk [_1]',$1);                          $rolename = $roledesc{$role};
                           if ($rolename eq '') {
                               $rolename = &mt('Helpdesk [_1]',$1);
                           }
                     } else {                      } else {
                         $rolename = &Apache::lonnet::plaintext($role);                          $rolename = &Apache::lonnet::plaintext($role);
                     }                      }
Line 2593  sub get_all_courseroles { Line 2596  sub get_all_courseroles {
 }  }
   
 sub get_customadhoc_roles {  sub get_customadhoc_roles {
     my ($cdom,$cnum,$courseroles,$seccount,$courseprivs,$privref) = @_;      my ($cdom,$cnum,$courseroles,$seccount,$courseprivs,$roledesc,$privref) = @_;
     unless ((ref($courseroles) eq 'HASH') && (ref($seccount) eq 'HASH') &&      unless ((ref($courseroles) eq 'HASH') && (ref($seccount) eq 'HASH') &&
             (ref($courseprivs) eq 'HASH')) {              (ref($courseprivs) eq 'HASH') && (ref($roledesc) eq 'HASH')) {
         return;          return;
     }      }
     if ($env{'environment.adhocroles.'.$cdom} ne '') {      if ($env{"user.role.dh./$cdom/"}) {
         my @customroles = split(/,/,$env{'environment.adhocroles.'.$cdom});          my ($start,$end)=split(/\./,$env{"user.role.dh./$cdom/"});
         if (@customroles > 1) {          my $now = time;
             if ($env{"user.role.dh./$cdom/"}) {          if (!($start && ($now<$start)) && !($end && ($now>$end))) {
                 my ($start,$end)=split(/\./,$env{"user.role.dh./$cdom/"});              my ($possroles,$description) = &Apache::lonnet::get_my_adhocroles($cdom.'_'.$cnum);
                 my $now = time;              my %available;
                 if (!($start && ($now<$start)) & !($end && ($now>$end))) {              if (ref($possroles) eq 'ARRAY') {
                   map { $available{$_} = 1; } @{$possroles};
               }
               my %domdefaults = &Apache::lonnet::get_domain_defaults($cdom);
               if (ref($domdefaults{'adhocroles'}) eq 'HASH') {
                   if (keys(%{$domdefaults{'adhocroles'}})) {
                     my $numsec = 1;                      my $numsec = 1;
                     my @sections;                      my @sections;
                     my ($allseclist,$cached) =                      my ($allseclist,$cached) =
Line 2616  sub get_customadhoc_roles { Line 2624  sub get_customadhoc_roles {
                         }                          }
                     } else {                      } else {
                         my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum);                          my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum);
                         $numsec += scalar(keys(%sections_count));                          @sections = sort(keys(%sections_count));
                         $allseclist = join(',',sort(keys(%sections_count)));                          $numsec += scalar(@sections);
                           $allseclist = join(',',@sections);
                         &Apache::lonnet::do_cache_new('courseseclist',$cdom.'_'.$cnum,$allseclist);                          &Apache::lonnet::do_cache_new('courseseclist',$cdom.'_'.$cnum,$allseclist);
                     }                      }
                     my (%adhoc,$gotprivs);                      my (%adhoc,$gotprivs);
                     my $prefix = "cr/$cdom/$cdom".'-domainconfig';                      my $prefix = "cr/$cdom/$cdom".'-domainconfig';
                     foreach my $role (@customroles) {                      foreach my $role (keys(%{$domdefaults{'adhocroles'}})) {
                         next if (($role eq '') || ($role =~ /\W/));                          next if (($role eq '') || ($role =~ /\W/));
                         $seccount->{"$prefix/$role"} = $numsec;                          $seccount->{"$prefix/$role"} = $numsec;
                         $courseroles->{"$prefix/$role"} = \@sections;                          $roledesc->{"$prefix/$role"} = $description->{$role};  
                         if ((ref($privref) eq 'ARRAY') && (@{$privref} > 0)) {                          if ((ref($privref) eq 'ARRAY') && (@{$privref} > 0)) {
                             if (exists($env{"user.priv.$prefix/$role./$cdom/$cnum./"})) {                              if (exists($env{"user.priv.$prefix/$role./$cdom/$cnum./"})) {
                                 $courseprivs->{"$prefix/$role./$cdom/$cnum./"} =                                  $courseprivs->{"$prefix/$role./$cdom/$cnum./"} =
Line 2646  sub get_customadhoc_roles { Line 2655  sub get_customadhoc_roles {
                                         foreach my $key (keys(%roledefs)) {                                          foreach my $key (keys(%roledefs)) {
                                             (undef,my $rolename) = split(/_/,$key);                                              (undef,my $rolename) = split(/_/,$key);
                                             if ($rolename ne '') {                                              if ($rolename ne '') {
                                                 $adhoc{$rolename} = $roledefs{$key};                                                  my ($systempriv,$domainpriv,$coursepriv) = split(/\_/,$roledefs{$key});
                                                   $coursepriv = &Apache::lonnet::course_adhocrole_privs($rolename,$cdom,$cnum,$coursepriv);
                                                   $adhoc{$rolename} = join('_',($systempriv,$domainpriv,$coursepriv));
                                             }                                              }
                                         }                                          }
                                         &Apache::lonnet::do_cache_new('adhocroles',$cdom,\%adhoc);                                          &Apache::lonnet::do_cache_new('adhocroles',$cdom,\%adhoc);
Line 2659  sub get_customadhoc_roles { Line 2670  sub get_customadhoc_roles {
                                      split(/\_/,$adhoc{$role});                                       split(/\_/,$adhoc{$role});
                             }                              }
                         }                          }
                           if ($available{$role}) {
                               $courseroles->{"$prefix/$role"} = \@sections;
                           }
                     }                      }
                 }                  }
             }              }
Line 2668  sub get_customadhoc_roles { Line 2682  sub get_customadhoc_roles {
 }  }
   
 sub jump_to_role {  sub jump_to_role {
     my ($cdom,$cnum,$seccount,$courseroles,$courseprivs,$privref) = @_;      my ($cdom,$cnum,$seccount,$courseroles,$courseprivs,$roledesc,$privref) = @_;
     my %lt = &Apache::lonlocal::texthash(      my %lt = &Apache::lonlocal::texthash(
                 this => 'This role has section(s) associated with it.',                  this => 'This role has section(s) associated with it.',
                 ente => 'Enter a specific section.',                  ente => 'Enter a specific section.',

Removed from v.1.369.2.67  
changed lines
  Added in v.1.369.2.68


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