--- loncom/interface/lonmenu.pm 2012/12/27 00:24:45 1.401
+++ loncom/interface/lonmenu.pm 2013/01/03 20:16:22 1.407
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines to control the menu
#
-# $Id: lonmenu.pm,v 1.401 2012/12/27 00:24:45 raeburn Exp $
+# $Id: lonmenu.pm,v 1.407 2013/01/03 20:16:22 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -248,7 +248,6 @@ sub primary_menu {
if (ref($primary_submenu{$title}) eq 'ARRAY') {
foreach my $item (@{$primary_submenu{$title}}) {
next if (($item->[2] eq 'wishlist') && (!$env{'user.adv'}));
- next if (($item->[2] eq 'reqcrs') && (!&check_for_rcrs()));
next if ((($item->[2] eq 'portfolio') ||
($item->[2] eq 'blog')) &&
(!&Apache::lonnet::usertools_access('','',$item->[2],
@@ -326,6 +325,15 @@ sub secondary_menu {
my $canmgr = &Apache::lonnet::allowed('mgr', $crs_sec);
my $author = &getauthor();
+ my ($canmodifycoauthor);
+ if ($env{'request.role'} eq "au./$env{'user.domain'}/") {
+ my $extent = "$env{'user.domain'}/$env{'user.name'}";
+ if ((&Apache::lonnet::allowed('cca',$extent)) ||
+ (&Apache::lonnet::allowed('caa',$extent))) {
+ $canmodifycoauthor = 1;
+ }
+ }
+
my %groups = &Apache::lonnet::get_active_groups(
$env{'user.domain'}, $env{'user.name'},
$env{'course.' . $env{'request.course.id'} . '.domain'},
@@ -337,7 +345,7 @@ sub secondary_menu {
# evaluate conditions
next if ref($menuitem) ne 'ARRAY';
next if $$menuitem[4] ne 'always'
- && $$menuitem[4] ne 'author'
+ && ($$menuitem[4] ne 'author' && $$menuitem[4] ne 'cca')
&& !$env{'request.course.id'};
next if $$menuitem[4] =~ /^mdc/
&& !$canedit;
@@ -362,6 +370,8 @@ sub secondary_menu {
&& !%groups;
next if $$menuitem[4] eq 'author'
&& !$author;
+ next if $$menuitem[4] eq 'cca'
+ && !$canmodifycoauthor;
if ($$menuitem[3] eq 'Roles' && $env{'request.course.id'}) {
# special treatment for role selector
@@ -864,7 +874,15 @@ sub prepare_functions {
$forceedit,$forceview,$forcereg,
$env{'form.title'},$env{'form.suppurl'});
}
- } elsif ($resurl !~ m{^/?adm/($match_domain)/($match_username)/aboutme$}) {
+ } elsif (($resurl =~ m{^/?adm/viewclasslist$}) &&
+ (&Apache::lonnet::allowed('opa',$env{'request.course.id'}))) {
+ ($cfile,$home,$switchserver,$forceedit,$forceview) =
+ &Apache::lonnet::can_edit_resource($resurl,$cnum,$cdom,$resurl,
+ $env{'form.symb'});
+ $editbutton = &get_editbutton($cfile,$home,$switchserver,
+ $forceedit,$forceview,$forcereg);
+ } elsif (($resurl !~ m{^/?adm/($match_domain)/($match_username)/aboutme$}) &&
+ ($resurl ne '/cgi-bin/printout.pl')) {
if ($env{'request.filename'}) {
my $file=&Apache::lonnet::declutter($env{'request.filename'});
($cfile,$home,$switchserver,$forceedit,$forceview) =
@@ -918,14 +936,6 @@ sub prepare_functions {
'Add records');
}
}
- } elsif ($resurl =~ m{^/?adm/viewclasslist}) {
-# This applies to viewclasslist page for users in a course
- if (&Apache::lonnet::allowed('opa',$env{'request.course.id'})) {
- &switch('','',6,4,'pparm.png','Settings',
- '',
- "go('/adm/courseprefs?actions=classlists&phase=display')",
- 'Student-viewable classlist options');
- }
}
if (($env{'form.folderpath'} =~ /^supplemental/) &&
(&Apache::lonnet::allowed('mdc',$env{'request.course.id'})) &&
@@ -979,7 +989,7 @@ sub advtools_crumbs {
'advtools', @funcs[61,71,72,73,74,92]);
} elsif ($env{'request.noversionuri'} eq '/adm/viewclasslist') {
&Apache::lonhtmlcommon::add_breadcrumb_tool(
- 'advtools', @funcs[64]);
+ 'advtools', $funcs[61]);
}
}
@@ -1663,12 +1673,18 @@ sub roles_selector {
}
}
if ($crstype eq 'Community') {
- $switchtext = &mt('Switch community role to...')
+ $switchtext = &mt('Switch community role')
} else {
- $switchtext = &mt('Switch course role to...')
+ $switchtext = &mt('Switch course role')
}
my @roles_order = ($ccrole,'in','ta','ep','ad','st');
- if (keys(%courseroles) > 1) {
+ my $numdiffsec;
+ if (keys(%seccount) == 1) {
+ foreach my $key (keys(%seccount)) {
+ $numdiffsec = $seccount{$key};
+ }
+ }
+ if ((keys(%seccount) > 1) || ($numdiffsec > 1)) {
my @submenu;
$js = &jump_to_role($cdom,$cnum,\%seccount,\%courseroles,\%courseprivs,$priv);
$form =
@@ -1677,19 +1693,42 @@ sub roles_selector {
&HTML::Entities::encode($destinationurl).'" />'."\n".
' '."\n".
' '."\n".
- ' '."\n".
- ''."\n";
+ ' '."\n";
+ if ($destsymb ne '') {
+ $form .= ' '."\n";
+ }
+ $form .= ''."\n";
foreach my $role (@roles_order) {
+ my $include;
if (defined($courseroles{$role})) {
+ if ($env{'request.role'} =~ m{^\Q$role\E}) {
+ if ($seccount{$role} > 1) {
+ $include = 1;
+ }
+ } else {
+ $include = 1;
+ }
+ }
+ if ($include) {
push(@submenu,['javascript:adhocRole('."'$role'".')',
&Apache::lonnet::plaintext($role,$crstype)]);
}
}
foreach my $role (sort(keys(%courseroles))) {
if ($role =~ /^cr/) {
- push(@submenu,['javascript:adhocRole('."'$role'".')',
- &Apache::lonnet::plaintext($role)]);
-
+ my $include;
+ if ($env{'request.role'} =~ m{^\Q$role\E}) {
+ if ($seccount{$role} > 1) {
+ $include = 1;
+ }
+ } else {
+ $include = 1;
+ }
+ if ($include) {
+ push(@submenu,['javascript:adhocRole('."'$role'".')',
+ &Apache::lonnet::plaintext($role)]);
+ }
}
}
if (@submenu > 0) {