--- loncom/interface/lonmenu.pm 2012/12/27 05:34:07 1.403 +++ loncom/interface/lonmenu.pm 2013/04/24 02:43:59 1.411 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.403 2012/12/27 05:34:07 raeburn Exp $ +# $Id: lonmenu.pm,v 1.411 2013/04/24 02:43:59 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 @@ -837,23 +847,15 @@ sub prepare_functions { # This applies in course context # if (($resurl eq "/public/$cdom/$cnum/syllabus") && ($perms{'mdc'})) { - if ($env{'course.'.$env{'request.course.id'}.'.externalsyllabus'} =~ /\w/) { - &switch('','',6,1,'pcstr.png','Edit', - 'resource[_2]', - "go('/adm/courseprefs?phase=display&actions=courseinfo')", - 'Edit this resource'); - $editbutton = 1; + $cfile = $resurl; + $home = &Apache::lonnet::homeserver($cnum,$cdom); + if ($env{'form.forceedit'}) { + $forceview = 1; } else { - $cfile = $resurl; - $home = &Apache::lonnet::homeserver($cnum,$cdom); - if ($env{'form.forceedit'}) { - $forceview = 1; - } else { - $forceedit = 1; - } - $editbutton = &get_editbutton($cfile,$home,$switchserver, - $forceedit,$forceview,$forcereg); + $forceedit = 1; } + $editbutton = &get_editbutton($cfile,$home,$switchserver, + $forceedit,$forceview,$forcereg); } elsif (($resurl eq '/adm/extresedit') && (($env{'form.symb'}) || ($env{'form.folderpath'}))) { ($cfile,$home,$switchserver,$forceedit,$forceview) = @@ -864,7 +866,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 +928,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 +981,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]); } } @@ -1662,11 +1664,7 @@ sub roles_selector { } } } - if ($crstype eq 'Community') { - $switchtext = &mt('Switch community role') - } else { - $switchtext = &mt('Switch course role') - } + $switchtext = &mt('Switch role'); my @roles_order = ($ccrole,'in','ta','ep','ad','st'); my $numdiffsec; if (keys(%seccount) == 1) { @@ -1788,6 +1786,7 @@ sub get_all_courseroles { push(@{$courseroles->{'st'}},keys(%sections_count)); $seccount->{'st'} = scalar(keys(%sections_count)); } + $seccount->{'st'} ++; # Increment for a section-less student role. my $rolehash = { 'roles' => $courseroles, 'seccount' => $seccount, @@ -1992,7 +1991,6 @@ sub countdown_timer { } my $duedate = &Apache::lonnet::EXT("resource.0.duedate"); my @interval=&Apache::lonnet::EXT("resource.0.interval"); - my $hastimeleft; if (@interval > 1) { my $first_access=&Apache::lonnet::get_first_access($interval[1]); if ($first_access > 0) {