--- loncom/interface/lonmenu.pm 2009/07/08 18:36:26 1.271
+++ loncom/interface/lonmenu.pm 2009/08/20 20:49:59 1.280
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines to control the menu
#
-# $Id: lonmenu.pm,v 1.271 2009/07/08 18:36:26 droeschl Exp $
+# $Id: lonmenu.pm,v 1.280 2009/08/20 20:49:59 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -143,6 +143,10 @@ use vars qw(@desklines %category_names %
my @inlineremote;
+#
+# This routine returns a translated hash for the menu items in the top inline menu row
+# Probably should be in mydesk.tab
+
sub initlittle {
return &Apache::lonlocal::texthash('ret' => 'Return to Last Location',
'nav' => 'Navigate Contents',
@@ -161,8 +165,10 @@ sub initlittle {
sub menubuttons {
my $forcereg=shift;
- my $registration=shift;
my $titletable=shift;
+#
+# Early-out for pages that should not have a menu, triggered by query string "inhibitmenu=yes"
+#
&Apache::loncommon::get_unprocessed_cgi($ENV{'QUERY_STRING'},
['inhibitmenu']);
if (($env{'form.inhibitmenu'} eq 'yes') ||
@@ -179,6 +185,9 @@ sub menubuttons {
my $role_selector;
my $showgroups=0;
my ($cnum,$cdom);
+#
+# if the URL is hidden, symbs and the non-versioned version of the URL would be encrypted
+#
my $escurl=&escape(&Apache::lonenc::check_encrypt($env{'request.noversionuri'}));
my $escsymb=&escape(&Apache::lonenc::check_encrypt($env{'request.symb'}));
@@ -187,6 +196,9 @@ sub menubuttons {
$logo.'" alt="LON-CAPA Logo" class="LC_noBorder" />';
if ($env{'request.state'} eq 'construct') {
+#
+# We are in construction space
+#
if (($env{'request.noversionuri'} eq '') || (!defined($env{'request.noversionuri'}))) {
my $returnurl = $env{'request.filename'};
$returnurl =~ s:^/home/([^/]+)/public_html/(.*)$:/priv/$1/$2:;
@@ -194,6 +206,9 @@ sub menubuttons {
}
}
if ($env{'request.course.id'}) {
+#
+# We are in a course
+#
$cnum = $env{'course.'.$env{'request.course.id'}.'.num'};
$cdom = $env{'course.'.$env{'request.course.id'}.'.domain'};
my %coursegroups;
@@ -272,24 +287,20 @@ ENDRELOAD
$lt{'ret'}
ENDCRELOAD
}
- my $reg='';
- if ($registration) {
- $reg=&innerregister($forcereg,$titletable);
- }
- my $form=&serverform();
- my $utility=&utilityfunctions();
-
- my $messagelink = "";
- if(&Apache::lonmsg::mynewmail()){
- $messagelink = 'Message(new)'
- }else{
- $messagelink = 'Message'
- }
- my $helplink=&Apache::loncommon::top_nav_help('Help');
+ my $reg = $forcereg ? &innerregister($forcereg,$titletable) : '';
+ my $form = &serverform();
+ my $utility = &utilityfunctions();
+
+ #Prepare the message link that indicates the arrival of new mail
+ my $messagelink = Apache::lonmsg::mynewmail() ? "Message (new)" : "Message";
+ $messagelink = ''
+ . mt($messagelink) .'';
+
+ my $helplink = &Apache::loncommon::top_nav_help('Help');
return (<
-// BEGIN LON-CAPA Internal
//
@@ -346,8 +357,14 @@ sub registerurl {
(!&Apache::lonnet::is_on_map(
&unescape($env{'request.noversionuri'})))) &&
(!$forcereg))) {
- return $result.
- ''.$force_title;
+ return
+ $result
+ .''
+ .$force_title;
}
# Graphical display after login only
if ($env{'request.registered'} && !$forcereg) { return ''; }
@@ -373,12 +390,13 @@ sub innerregister {
my $reopen=&Apache::lonmenu::reopenmenu();
my $newmail='';
- my $breadcrumb;
if (&Apache::lonmsg::newmail() && !$noremote) {
# We have new mail and remote is up
$newmail= 'swmenu.setstatus("you have","messages");';
}
+
+ my $breadcrumb;
if ($noremote
&& ($env{'request.symb'})
&& ($env{'request.course.id'})) {
@@ -453,6 +471,9 @@ sub innerregister {
}
if ($env{'user.author'}) {
if ($env{'request.role'}=~/^(aa|ca|au)/) {
+#
+# We have the role of an author
+#
# Set defaults for authors
my ($top,$bottom) = ('con-','struct');
my $action = "go('/priv/".$env{'user.name'}."');";
@@ -481,6 +502,11 @@ sub innerregister {
$noeditbutton = 0;
}
}
+#
+# We are an author for some stuff, but currently do not have the role of author.
+# Figure out if we have authoring privileges for the resource we are looking at.
+# This should maybe become a privilege check in lonnet
+#
##
## Determine if user can edit url.
##
@@ -539,6 +565,9 @@ sub innerregister {
# Prepare the rest of the buttons
my $menuitems;
if ($const_space) {
+#
+# We are in construction space
+#
my ($uname,$thisdisfn) =
($env{'request.filename'}=~m|^/home/([^/]+)/public_html/(.*)|);
my $currdir = '/priv/'.$uname.'/'.$thisdisfn;
@@ -548,6 +577,9 @@ sub innerregister {
$currdir =~ s|[^/]+$||;
my $cleandisfn = &Apache::loncommon::escape_single($thisdisfn);
my $esc_currdir = &Apache::loncommon::escape_single($currdir);
+#
+# Probably should be in mydesk.tab
+#
$menuitems=(< 0){
$menuitems.="&anno-[_1]&tations[_1]&annotate()&";
$menuitems.="Make notes and annotations about this resource&&1\n";
+ unless ($noremote) {
+ my $showreqcrs = &check_for_rcrs();
+ if ($showreqcrs) {
+ $menuitems.="s&8&1&rcrs.gif&request[_1]&course[_16]".
+ "&go('/adm/requestcourse')&Course requests\n";
+ }
+ }
unless ($env{'request.noversionuri'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme)(\?|$)/) {
if (!$env{'request.enc'}) {
$menuitems.=(<
+//
ENDREGTHIS
}
@@ -732,6 +777,7 @@ ENDDONOTREGTEXT
$result = (<
+//
ENDDONOTREGTHIS
}
@@ -826,6 +873,7 @@ sub startupremote {
my $message=&mt('"Waiting for Remote Control window to load: "+[_1]','waited');
return(<
+//
ENDREMOTESTARTUP
}
@@ -883,8 +932,10 @@ ENDREMOTESTARTUP
sub setflags() {
return(<
+//
ENDSETFLAGS
}
@@ -893,7 +944,9 @@ sub maincall() {
if ($env{'environment.remote'} eq 'off') { return ''; }
return(<
+//
ENDMAINCALL
}
@@ -935,7 +988,12 @@ sub reopenmenu {
sub open {
my $returnval='';
if ($env{'environment.remote'} eq 'off') {
- return '';
+ return
+ '';
}
my $menuname = &get_menu_name();
@@ -948,11 +1006,13 @@ sub open {
#}
#ENDRESIZE
# }
- $returnval.=(<
ENDOPEN
return '';
}
@@ -963,6 +1023,7 @@ ENDOPEN
sub clear {
my ($row,$col)=@_;
unless ($env{'environment.remote'} eq 'off') {
+ if (($row<1) || ($row>13)) { return ''; }
return "\n".qq(window.status+='.';swmenu.clearbut($row,$col););
} else {
$inlineremote[10*$row+$col]='';
@@ -988,6 +1049,7 @@ sub switch {
$category_members{$cat}.=':'.$idx;
unless ($env{'environment.remote'} eq 'off') {
+ if (($row<1) || ($row>13)) { return ''; }
# Remote
return "\n".
qq(window.status+='.';swmenu.switchbutton($row,$col,"$img","$top","$bot","$act","$desc"););
@@ -1005,7 +1067,7 @@ sub switch {
&Apache::loncommon::lonhttpdurl('/res/adm/pages/'.$img).
'" align="'.($nobreak==3?'right':'left').'" class="LC_noBorder" />';
if ($env{'browser.interface'} eq 'faketextual') {
-# Accessibility
+# Main Menu
if ($nobreak==3) {
$inlineremote[$idx]="\n".
'