--- loncom/interface/lonmenu.pm 2012/11/08 18:37:44 1.390 +++ loncom/interface/lonmenu.pm 2012/11/16 23:37:16 1.392 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.390 2012/11/08 18:37:44 raeburn Exp $ +# $Id: lonmenu.pm,v 1.392 2012/11/16 23:37:16 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -446,7 +446,7 @@ sub innerregister { if ($env{'request.course.id'} && $env{'request.symb'} eq '') { $resurl = $env{'request.noversionuri'}; } - + if ( $env{'request.symb'} && $env{'request.course.id'} ) { (my $mapurl, my $rid, $resurl) = &Apache::lonnet::decode_symb(&Apache::lonnet::symbread()); @@ -478,6 +478,29 @@ sub innerregister { &Apache::lonhtmlcommon::clear_breadcrumbs(); &Apache::lonhtmlcommon::add_breadcrumb(@crumbs); + } elsif ($env{'request.course.id'}) { + my $courseurl = &Apache::lonnet::courseid_to_courseurl($env{'request.course.id'}); + if ($env{'request.noversionuri'} =~ m{^\Q/uploaded$courseurl/supplemental/\E(default|\d+)/}) { + my $crstype = &Apache::loncommon::course_type(); + &Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'}); + if ($env{'form.folderpath'}) { + my ($trail) = + &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype); + return $trail; + } else { + &Apache::lonhtmlcommon::clear_breadcrumbs(); + &Apache::lonhtmlcommon::add_breadcrumb( + {text => "Supplemental $crstype Content", + href => "javascript:gopost('/adm/supplemental','')"}); + if ($env{'httpref.'.$env{'request.noversionuri'}} ne '') { + &Apache::lonhtmlcommon::add_breadcrumb({text => 'View Resource'}); + } + return &Apache::lonhtmlcommon::docs_breadcrumbs(undef,$crstype); + } + } else { + &Apache::lonhtmlcommon::clear_breadcrumbs(); + &Apache::lonhtmlcommon::add_breadcrumb({text => 'View Resource'}); + } } elsif (! $const_space){ #a situation when we're looking at a resource outside of context of a #course or construction space (e.g. with cumulative rights) @@ -492,15 +515,8 @@ sub innerregister { || $forcereg ); my ($cdom,$cnum,%perms,$cfile,$switchserver,$home,$forceedit, $forceview,$editbutton); - if ($env{'request.noversionuri'} =~ m{^/adm/($match_domain)/($match_username)/aboutme$}) { - ($cfile,$home,$switchserver,$forceedit,$forceview) = - &Apache::lonnet::can_edit_resource($env{'request.noversionuri'},$cnum,$cdom, - &Apache::lonnet::clutter($resurl),$env{'request.symb'},$group); - if (($cfile) && ($home ne '') && ($home ne 'no_host')) { - $editbutton = &get_editbutton($cfile,$home,$switchserver, - $forceedit,$forceview,$forcereg); - } - } elsif ($env{'request.role'} !~/^(aa|ca|au)/) { + if (($resurl =~ m{^/?adm/($match_domain)/($match_username)/aboutme$}) || + ($env{'request.role'} !~/^(aa|ca|au)/)) { $editbutton = &prepare_functions($resurl,$forcereg,$group); } if ($editbutton eq '') { @@ -763,19 +779,15 @@ sub prepare_functions { # Determine whether or not to display 'Edit' icon/button # if ($resurl =~ m{^/?adm/($match_domain)/($match_username)/aboutme$}) { -# -# This applies to a user's own about me page -# - my ($sdom,$sname) = ($1,$2); my $file=&Apache::lonnet::declutter($env{'request.filename'}); - if (($sdom eq $env{'user.domain'}) && ($sname eq $env{'user.name'})) { - ($cfile,$home,$switchserver,$forceedit,$forceview) = - &Apache::lonnet::can_edit_resource($file,$cnum,$cdom, - &Apache::lonnet::clutter($resurl),$env{'request.symb'},$group); - $editbutton = &get_editbutton($cfile,$env{'user.home'},$switchserver, + ($cfile,$home,$switchserver,$forceedit,$forceview) = + &Apache::lonnet::can_edit_resource($file,$cnum,$cdom, + &Apache::lonnet::clutter($resurl),$env{'request.symb'},$group); + if (($cfile) && ($home ne '') && ($home ne 'no_host')) { + $editbutton = &get_editbutton($cfile,$home,$switchserver, $forceedit,$forceview,$forcereg); } - } elsif ((!$editbutton) && (!$env{'request.course.id'}) && + } elsif ((!$env{'request.course.id'}) && ($env{'user.author'}) && ($env{'request.filename'}) && ($env{'request.role'} !~/^(aa|ca|au)/)) { # @@ -786,7 +798,6 @@ sub prepare_functions { ($cfile,$home,$switchserver,$forceedit,$forceview) = &Apache::lonnet::can_edit_resource($file,$cnum,$cdom, &Apache::lonnet::clutter($resurl),$env{'request.symb'},$group); - # Turn the button on or off if (($cfile) && ($home ne '') && ($home ne 'no_host')) { $editbutton = &get_editbutton($cfile,$home,$switchserver, $forceedit,$forceview,$forcereg); @@ -830,7 +841,7 @@ sub prepare_functions { # This applies to about me page for users in a course if ($env{'request.course.id'}) { - if ($resurl =~ m{^adm/($match_domain)/($match_username)/aboutme$}) { + if ($resurl =~ m{^/?adm/($match_domain)/($match_username)/aboutme$}) { my ($sdom,$sname) = ($1,$2); unless (&Apache::lonnet::is_course($sdom,$sname)) { &switch('','',6,4,'mail-message-new-22x22.png','Message to user', @@ -838,7 +849,9 @@ sub prepare_functions { "go('/adm/email?compose=individual&recname=$sname&recdom=$sdom')", 'Send message to specific user'); } - if (&Apache::lonnet::in_course($sdom,$sname,$cdom,$cnum)) { + my $hideprivileged = 1; + if (&Apache::lonnet::in_course($sdom,$sname,$cdom,$cnum,undef, + $hideprivileged)) { foreach my $priv ('vsa','vgr','srm') { $perms{$priv} = &Apache::lonnet::allowed($priv,$env{'request.course.id'}); if (!$perms{$priv} && $env{'request.course.sec'} ne '') { @@ -898,7 +911,7 @@ sub advtools_crumbs { } elsif ($env{'request.noversionuri'} !~ m{^/adm/(navmaps|viewclasslist)(\?|$)}) { &Apache::lonhtmlcommon::add_breadcrumb_tool( 'advtools', @funcs[61,71,72,73,74,92]); - } + } } # ================================================================== Raw Config