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

version 1.369.2.68, 2017/01/22 17:10:28 version 1.369.2.74, 2019/02/22 01:57:36
Line 499  sub secondary_menu { Line 499  sub secondary_menu {
                         next if ($item->[2] eq 'mgr' && !$canmgr);                          next if ($item->[2] eq 'mgr' && !$canmgr);
                         next if ($item->[2] eq 'vcg' && !$canviewgrps);                          next if ($item->[2] eq 'vcg' && !$canviewgrps);
                         next if ($item->[2] eq 'crsedit' && !$canedit && !$canvieweditor);                          next if ($item->[2] eq 'crsedit' && !$canedit && !$canvieweditor);
                           next if ($item->[2] eq 'params' && !$canmodpara && !$canviewpara);
                           next if ($item->[2] eq 'author' && !$author);
                           next if ($item->[2] eq 'cca' && !$canmodifycoauthor);
                         push(@scndsub,$item);                           push(@scndsub,$item); 
                     }                      }
                 }                  }
Line 528  sub secondary_menu { Line 531  sub secondary_menu {
                 } else {                  } else {
                     $$menuitem[0] =~ s{\?register=1}{};                      $$menuitem[0] =~ s{\?register=1}{};
                 }                  }
                   $$menuitem[0] = &HTML::Entities::encode($$menuitem[0],'&<>"');
             }              }
             $menu .= &prep_menuitem(\@$menuitem);              $menu .= &prep_menuitem(\@$menuitem);
         }          }
Line 546  sub secondary_menu { Line 550  sub secondary_menu {
             my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'};              my $londocroot = $Apache::lonnet::perlvar{'lonDocRoot'};
             ($escurl = $env{'request.filename'}) =~ s{^\Q$londocroot\E}{};              ($escurl = $env{'request.filename'}) =~ s{^\Q$londocroot\E}{};
             $escurl  = &escape($escurl);              $escurl  = &escape($escurl);
         }              }
         $menu =~ s/\[url\]/$escurl/g;          $menu =~ s/\[url\]/$escurl/g;
         $menu =~ s/\[symb\]/$escsymb/g;          $menu =~ s/\[symb\]/$escsymb/g;
     }      }
Line 635  sub build_submenu { Line 639  sub build_submenu {
                     next unless (($env{'user.name'} ne '') && ($env{'user.domain'} ne ''));                      next unless (($env{'user.name'} ne '') && ($env{'user.domain'} ne ''));
                     $href =~ s/\[domain\]/$env{'user.domain'}/g;                      $href =~ s/\[domain\]/$env{'user.domain'}/g;
                     $href =~ s/\[user\]/$env{'user.name'}/g;                      $href =~ s/\[user\]/$env{'user.name'}/g;
                   } elsif (($href =~ m{^/adm/preferences\?}) && ($href =~ /\[returnurl\]/)) {
                       my $returnurl = $ENV{'REQUEST_URI'};
                       if ($ENV{'REQUEST_URI'} =~ m{/adm/preferences\?action=(?:changedomcoord|authorsettings)\&returnurl=([^\&]+)$}) {
                           $returnurl = $1;
                       }
                       if (($returnurl =~ m{^/adm/createuser($|\?action=)}) ||
                           ($returnurl =~ m{^/priv/$match_domain/$match_username}) ||
                           ($returnurl =~ m{^/res(/?$|/$match_domain/$match_username)})) {
                           $returnurl =~ s{\?.*$}{};
                           $returnurl = '&amp;returnurl='.&HTML::Entities::encode($returnurl,'"<>&\'');
                       } else {
                           undef($returnurl);
                       }
                       $href =~ s/\[returnurl\]/$returnurl/;
                 }                  }
                 unless (($href eq '') || ($href =~ /^\#/)) {                  unless (($href eq '') || ($href =~ /^\#/)) {
                     $target = ' target="_top"';                      $target = ' target="_top"';
Line 1469  sub prepare_functions { Line 1487  sub prepare_functions {
     }      }
   
     my $editbutton = '';      my $editbutton = '';
       my $viewsrcbutton = '';
 #  #
 # Determine whether or not to display 'Edit' icon/button  # Determine whether or not to display 'Edit' or 'View Source' icon/button
 #  #
     if ($resurl =~ m{^/?adm/($match_domain)/($match_username)/aboutme$}) {      if ($resurl =~ m{^/?adm/($match_domain)/($match_username)/aboutme$}) {
         my $file=&Apache::lonnet::declutter($env{'request.filename'});          my $file=&Apache::lonnet::declutter($env{'request.filename'});
Line 1501  sub prepare_functions { Line 1520  sub prepare_functions {
 # This applies in course context  # This applies in course context
 #  #
         if (($perms{'mdc'}) &&          if (($perms{'mdc'}) &&
             (($resurl eq "/public/$cdom/$cnum/syllabus") ||              (($resurl =~ m{^/?public/$cdom/$cnum/syllabus}) ||
             ($resurl =~ m{^/uploaded/$cdom/$cnum/portfolio/syllabus/}))) {              ($resurl =~ m{^/?uploaded/$cdom/$cnum/portfolio/syllabus/}))) {
             $cfile = $resurl;              if ($resurl =~ m{^/}) {
                   $cfile = $resurl;
               } else {
                   $cfile = "/$resurl";
               }
             $home = &Apache::lonnet::homeserver($cnum,$cdom);              $home = &Apache::lonnet::homeserver($cnum,$cdom);
             if ($env{'form.forceedit'}) {              if ($env{'form.forceedit'}) {
                 $forceview = 1;                  $forceview = 1;
Line 1540  sub prepare_functions { Line 1563  sub prepare_functions {
                     $editbutton = &get_editbutton($cfile,$home,$switchserver,                      $editbutton = &get_editbutton($cfile,$home,$switchserver,
                                                   $forceedit,$forceview,$forcereg);                                                    $forceedit,$forceview,$forcereg);
                 }                  }
                   if ((($cfile eq '') || (!$editbutton)) &&
                       ($resurl =~ /$LONCAPA::assess_re/)) {
                       my $showurl = &Apache::lonnet::clutter($resurl);
                       if ((&Apache::lonnet::allowed('cre','/')) &&
                           (&Apache::lonnet::metadata($resurl,'sourceavail') eq 'open')) {
                           $viewsrcbutton = 1;
                       } elsif (&Apache::lonnet::allowed('vxc',$env{'request.course.id'})) {
                           if ($showurl =~ m{^\Q/res/$cdom/\E($match_username)/}) {
                               my $auname = $1;
                               if (($env{'request.course.adhocsrcaccess'} ne '') &&
                                   (grep(/^\Q$auname\E$/,split(/,/,$env{'request.course.adhocsrcaccess'})))) {
                                   $viewsrcbutton = 1;
                               } elsif ((&Apache::lonnet::metadata($resurl,'sourceavail') eq 'open') &&
                                        (&Apache::lonnet::allowed('bre','/'))) {
                                   $viewsrcbutton = 1;
                               }
                           }
                       }
                       if ($viewsrcbutton) {
                           &switch('','',6,1,'pcstr.png','View Source','resource[_2]','open_source()',
                                   'View source code');
                       }
                   }
             }              }
         }          }
     }      }
Line 2156  return (<<ENDUTILITY) Line 2202  return (<<ENDUTILITY)
   
 $dc_popup_cid  $dc_popup_cid
   
 function go(url) {  
    if (url!='' && url!= null) {  
        currentURL = null;  
        currentSymb= null;  
        var lcHostname = setLCHost();  
        window.location.href=lcHostname+url;  
    }  
 }  
   
 $jumptores  $jumptores
   
 function gopost(url,postdata) {  function gopost(url,postdata) {
Line 2601  sub get_customadhoc_roles { Line 2638  sub get_customadhoc_roles {
             (ref($courseprivs) eq 'HASH') && (ref($roledesc) eq 'HASH')) {              (ref($courseprivs) eq 'HASH') && (ref($roledesc) eq 'HASH')) {
         return;          return;
     }      }
     if ($env{"user.role.dh./$cdom/"}) {      my $is_helpdesk = 0;
         my ($start,$end)=split(/\./,$env{"user.role.dh./$cdom/"});      my $now = time;
         my $now = time;      foreach my $role ('dh','da') {
         if (!($start && ($now<$start)) && !($end && ($now>$end))) {          if ($env{"user.role.$role./$cdom/"}) {
             my ($possroles,$description) = &Apache::lonnet::get_my_adhocroles($cdom.'_'.$cnum);              my ($start,$end)=split(/\./,$env{"user.role.$role./$cdom/"});
             my %available;              if (!($start && ($now<$start)) && !($end && ($now>$end))) {
             if (ref($possroles) eq 'ARRAY') {                  $is_helpdesk = 1;
                 map { $available{$_} = 1; } @{$possroles};                  last;
             }              }
             my %domdefaults = &Apache::lonnet::get_domain_defaults($cdom);          }
             if (ref($domdefaults{'adhocroles'}) eq 'HASH') {      }
                 if (keys(%{$domdefaults{'adhocroles'}})) {      if ($is_helpdesk) {
                     my $numsec = 1;          my ($possroles,$description) = &Apache::lonnet::get_my_adhocroles($cdom.'_'.$cnum);
                     my @sections;          my %available;
                     my ($allseclist,$cached) =          if (ref($possroles) eq 'ARRAY') {
                         &Apache::lonnet::is_cached_new('courseseclist',$cdom.'_'.$cnum);              map { $available{$_} = 1; } @{$possroles};
                     if (defined($cached)) {          }
                         if ($allseclist ne '') {          my %domdefaults = &Apache::lonnet::get_domain_defaults($cdom);
                             @sections = split(/,/,$allseclist);          if (ref($domdefaults{'adhocroles'}) eq 'HASH') {
                             $numsec += scalar(@sections);              if (keys(%{$domdefaults{'adhocroles'}})) {
                         }                  my $numsec = 1;
                     } else {                  my @sections;
                         my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum);                  my ($allseclist,$cached) =
                         @sections = sort(keys(%sections_count));                      &Apache::lonnet::is_cached_new('courseseclist',$cdom.'_'.$cnum);
                   if (defined($cached)) {
                       if ($allseclist ne '') {
                           @sections = split(/,/,$allseclist);
                         $numsec += scalar(@sections);                          $numsec += scalar(@sections);
                         $allseclist = join(',',@sections);  
                         &Apache::lonnet::do_cache_new('courseseclist',$cdom.'_'.$cnum,$allseclist);  
                     }                      }
                     my (%adhoc,$gotprivs);                  } else {
                     my $prefix = "cr/$cdom/$cdom".'-domainconfig';                      my %sections_count = &Apache::loncommon::get_sections($cdom,$cnum);
                     foreach my $role (keys(%{$domdefaults{'adhocroles'}})) {                      @sections = sort(keys(%sections_count));
                         next if (($role eq '') || ($role =~ /\W/));                      $numsec += scalar(@sections);
                         $seccount->{"$prefix/$role"} = $numsec;                      $allseclist = join(',',@sections);
                         $roledesc->{"$prefix/$role"} = $description->{$role};                        &Apache::lonnet::do_cache_new('courseseclist',$cdom.'_'.$cnum,$allseclist);
                         if ((ref($privref) eq 'ARRAY') && (@{$privref} > 0)) {                  }
                             if (exists($env{"user.priv.$prefix/$role./$cdom/$cnum./"})) {                  my (%adhoc,$gotprivs);
                                 $courseprivs->{"$prefix/$role./$cdom/$cnum./"} =                  my $prefix = "cr/$cdom/$cdom".'-domainconfig';
                                     $env{"user.priv.$prefix/$role./$cdom/$cnum./"};                  foreach my $role (keys(%{$domdefaults{'adhocroles'}})) {
                                 $courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/"} =                      next if (($role eq '') || ($role =~ /\W/));
                                     $env{"user.priv.$prefix/$role./$cdom/$cnum./$cdom/"};                      $seccount->{"$prefix/$role"} = $numsec;
                                 $courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/$cnum"} =                      $roledesc->{"$prefix/$role"} = $description->{$role};  
                                     $env{"user.priv.$prefix/$role./$cdom/$cnum./$cdom/$cnum"};                      if ((ref($privref) eq 'ARRAY') && (@{$privref} > 0)) {
                             } else {                          if (exists($env{"user.priv.$prefix/$role./$cdom/$cnum./"})) {
                                 unless ($gotprivs) {                              $courseprivs->{"$prefix/$role./$cdom/$cnum./"} =
                                     my ($adhocroles,$privscached) =                                  $env{"user.priv.$prefix/$role./$cdom/$cnum./"};
                                         &Apache::lonnet::is_cached_new('adhocroles',$cdom);                              $courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/"} =
                                     if ((defined($privscached)) && (ref($adhocroles) eq 'HASH')) {                                  $env{"user.priv.$prefix/$role./$cdom/$cnum./$cdom/"};
                                         %adhoc = %{$adhocroles};                              $courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/$cnum"} =
                                     } else {                                  $env{"user.priv.$prefix/$role./$cdom/$cnum./$cdom/$cnum"};
                                         my $confname = &Apache::lonnet::get_domainconfiguser($cdom);                          } else {
                                         my %roledefs = &Apache::lonnet::dump('roles',$cdom,$confname,'rolesdef_');                              unless ($gotprivs) {
                                         foreach my $key (keys(%roledefs)) {                                  my ($adhocroles,$privscached) =
                                             (undef,my $rolename) = split(/_/,$key);                                      &Apache::lonnet::is_cached_new('adhocroles',$cdom);
                                             if ($rolename ne '') {                                  if ((defined($privscached)) && (ref($adhocroles) eq 'HASH')) {
                                                 my ($systempriv,$domainpriv,$coursepriv) = split(/\_/,$roledefs{$key});                                      %adhoc = %{$adhocroles};
                                                 $coursepriv = &Apache::lonnet::course_adhocrole_privs($rolename,$cdom,$cnum,$coursepriv);                                  } else {
                                                 $adhoc{$rolename} = join('_',($systempriv,$domainpriv,$coursepriv));                                      my $confname = &Apache::lonnet::get_domainconfiguser($cdom);
                                             }                                      my %roledefs = &Apache::lonnet::dump('roles',$cdom,$confname,'rolesdef_');
                                       foreach my $key (keys(%roledefs)) {
                                           (undef,my $rolename) = split(/_/,$key);
                                           if ($rolename ne '') {
                                               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);  
                                     }                                      }
                                     $gotprivs = 1;                                      &Apache::lonnet::do_cache_new('adhocroles',$cdom,\%adhoc);
                                 }                                  }
                                 ($courseprivs->{"$prefix/$role./$cdom/$cnum./"},                                  $gotprivs = 1;
                                  $courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/"},  
                                  $courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/$cnum"}) =  
                                      split(/\_/,$adhoc{$role});  
                             }                              }
                               ($courseprivs->{"$prefix/$role./$cdom/$cnum./"},
                                $courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/"},
                                $courseprivs->{"$prefix/$role./$cdom/$cnum./$cdom/$cnum"}) =
                                    split(/\_/,$adhoc{$role});
                         }                          }
                         if ($available{$role}) {                      }
                             $courseroles->{"$prefix/$role"} = \@sections;                      if ($available{$role}) {
                         }                          $courseroles->{"$prefix/$role"} = \@sections;
                     }                      }
                 }                  }
             }              }

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


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