--- loncom/interface/lonmenu.pm 2007/10/11 22:52:53 1.229 +++ loncom/interface/lonmenu.pm 2008/02/03 05:07:58 1.234 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.229 2007/10/11 22:52:53 albertel Exp $ +# $Id: lonmenu.pm,v 1.234 2008/02/03 05:07:58 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -54,13 +54,26 @@ my @inlineremote; # ================================================================ Little texts +sub show_course { + my $course = !$env{'user.adv'}; + if (!$env{'user.adv'}) { + foreach my $env (keys(%env)) { + next if ($env !~ m/^user\.priv\./); + if ($env !~ m/^user\.priv\.(?:st|cm)/) { + $course = 0; + last; + } + } + } + return $course; +} sub initlittle { return &Apache::lonlocal::texthash('ret' => 'Return to Last Location', 'nav' => 'Navigate Contents', 'main' => 'Main Menu', - 'roles' => ($env{'user.adv'}? - 'Roles':'Courses'), + 'roles' => (&show_course()? + 'Courses':'Roles'), 'docs' => 'Edit Course', 'exit' => 'Exit', 'login' => 'Log In', @@ -336,16 +349,18 @@ sub innerregister { } else { $newmail= 'swmenu.setstatus("you have","messages");'; } - } elsif (($textual) + } + if (($textual) && ($env{'request.symb'}) && ($env{'request.course.id'})) { $newmail.= ''; my ($mapurl,$rid,$resurl)= &Apache::lonnet::decode_symb(&Apache::lonnet::symbread()); - $newmail.=$env{'course.'.$env{'request.course.id'}.'.description'}; + my $coursetitle=$env{'course.'.$env{'request.course.id'}.'.description'}; + $newmail.=$coursetitle; my $maptitle=&Apache::lonnet::gettitle($mapurl); my $restitle=&Apache::lonnet::gettitle(&Apache::lonnet::symbread()); - if ($maptitle && $maptitle ne 'default.sequence') { + if ($maptitle && ($maptitle ne 'default.sequence') && ($maptitle ne $coursetitle)) { $newmail.=', '.$maptitle; } if ($restitle) { @@ -400,7 +415,7 @@ sub innerregister { ### my $editbutton = ''; if ($env{'user.author'}) { - if ($env{'request.role'}=~/^(ca|au)/) { + if ($env{'request.role'}=~/^(aa|ca|au)/) { # Set defaults for authors my ($top,$bottom) = ('con-','struct'); my $action = "go('/priv/".$env{'user.name'}."');"; @@ -413,6 +428,11 @@ sub innerregister { ($top,$bottom) = ('co con-','struct'); $action = "go('/priv/".$caname."');"; $desc = "Enter construction space as co-author"; + } elsif ($env{'request.role'} =~ /^aa/) { + ($cadom,$caname)=($env{'request.role'}=~/($match_domain)\/($match_username)$/); + ($top,$bottom) = ('co con-','struct'); + $action = "go('/priv/".$caname."');"; + $desc = "Enter construction space as assistant co-author"; } # Check that we are on the correct machine my $home = &Apache::lonnet::homeserver($caname,$cadom); @@ -795,12 +815,19 @@ sub load_remote_msg {

$link

ENDREMOTEFORM } + +sub get_menu_name { + my $hostid = $Apache::lonnet::perlvar{'lonHostID'}; + $hostid =~ s/\W//g; + return 'LCmenu'.$hostid; +} + # ================================================================= Reopen menu sub reopenmenu { if (($env{'browser.interface'} eq 'textual') || ($env{'environment.remote'} eq 'off')) { return ''; } - my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'}; + my $menuname = &get_menu_name(); my $nothing = &Apache::lonhtmlcommon::javascript_nothing(); return('window.open('.$nothing.',"'.$menuname.'","",false);'); } @@ -813,7 +840,7 @@ sub open { ($env{'environment.remote'} eq 'off')) { return ''; } - my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'}; + my $menuname = &get_menu_name(); # unless (shift eq 'unix') { # resizing does not work on linux because of virtual desktop sizes @@ -941,7 +968,7 @@ sub secondlevel { } sub openmenu { - my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'}; + my $menuname = &get_menu_name(); if (($env{'browser.interface'} eq 'textual') || ($env{'environment.remote'} eq 'off')) { return ''; } my $nothing = &Apache::lonhtmlcommon::javascript_nothing(); @@ -991,6 +1018,7 @@ sub rawconfig { my $uname=$env{'user.name'}; my $udom=$env{'user.domain'}; my $adv=$env{'user.adv'}; + my $show_course=&show_course(); my $author=$env{'user.author'}; my $crs=''; if ($env{'request.course.id'}) { @@ -1030,6 +1058,16 @@ sub rawconfig { $output.=&secondlevel( $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc,$cat); } + } elsif ($pro eq 'shc') { + if ($show_course) { + $output.=&secondlevel( + $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc,$cat); + } + } elsif ($pro eq 'nsc') { + if (!$show_course) { + $output.=&secondlevel( + $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc,$cat); + } } elsif (($pro=~/^p(\w+)/) && ($prt)) { if (&Apache::lonnet::allowed($1,$prt)) { $output.=&switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$cat); @@ -1054,11 +1092,12 @@ sub rawconfig { } elsif ($pro eq 'author') { if ($author) { if ((($prt eq 'rca') && ($env{'request.role'}=~/^ca/)) || + (($prt eq 'raa') && ($env{'request.role'}=~/^aa/)) || (($prt eq 'rau') && ($env{'request.role'}=~/^au/))) { # Check that we are on the correct machine my $cadom=$requested_domain; my $caname=$env{'user.name'}; - if ($prt eq 'rca') { + if (($prt eq 'rca') || ($prt eq 'raa')) { ($cadom,$caname)= ($env{'request.role'}=~/($match_domain)\/($match_username)$/); } @@ -1091,7 +1130,7 @@ sub rawconfig { sub close { if (($env{'browser.interface'} eq 'textual') || ($env{'environment.remote'} eq 'off')) { return ''; } - my $menuname='LCmenu'.$Apache::lonnet::perlvar{'lonHostID'}; + my $menuname = &get_menu_name(); return(< window.status='Accessing Remote Control'; @@ -1367,7 +1406,8 @@ sub hidden_button_check { if ($env{'request.role.adv'}) { return; } - return &Apache::lonnet::EXT('resource.0.buttonshide'); + my $buttonshide = &Apache::lonnet::EXT('resource.0.buttonshide'); + return $buttonshide; } # ================================================================ Main Program