--- loncom/interface/lonmenu.pm 2009/07/09 08:53:39 1.272 +++ loncom/interface/lonmenu.pm 2009/08/12 18:38:04 1.279 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.272 2009/07/09 08:53:39 droeschl Exp $ +# $Id: lonmenu.pm,v 1.279 2009/08/12 18:38:04 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". ''.$text. @@ -1061,6 +1123,7 @@ sub openmenu { sub inlinemenu { undef(@inlineremote); undef(%category_members); +# calling rawconfig with "1" will evaluate mydesk.tab, even if there is no active remote control &rawconfig(1); my $output=''; for (my $col=1; $col<=2; $col++) { @@ -1092,6 +1155,11 @@ sub inlinemenu { } sub rawconfig { +# +# This evaluates mydesk.tab +# Need to add more positions and more privileges to deal with all +# menu items. +# my $textualoverride=shift; my $output=''; unless ($env{'environment.remote'} eq 'off') { @@ -1126,9 +1194,12 @@ sub rawconfig { $prt=~s/\$requested_domain/$requested_domain/g; if ($category_names{$cat}!~/\w/) { $cat='oth'; } my $type = &Apache::loncommon::course_type(); - if ($type eq 'Group') { - $desc = &convert_menu_function($desc,$type); - } +# +# I don't think we support this +# +# if ($type eq 'Group') { +# $desc = &convert_menu_function($desc,$type); +# } if ($pro eq 'clear') { $output.=&clear($row,$col); } elsif ($pro eq 'any') { @@ -1207,16 +1278,14 @@ sub rawconfig { $output.=&clear($row,$col); next; } - } elsif ($prt eq 'reqcrs') { - my $showreqcrs = 0; - foreach my $type ('official','unofficial') { - if (&Apache::lonnet::usertools_access($env{'user.name'}, - $env{'user.domain'}, - $type,undef,'requestcourses')) { - $showreqcrs = 1; - last; - } + } elsif (($prt eq 'reqcrsnsc') || ($prt eq 'reqcrsshc')) { + if (($prt eq 'reqcrsnsc') && ($show_course)) { + next; + } + if (($prt eq 'reqcrsshc') && (!$show_course)) { + next; } + my $showreqcrs = &check_for_rcrs(); if (!$showreqcrs) { $output.=&clear($row,$col); next; @@ -1237,6 +1306,19 @@ sub rawconfig { return $output; } +sub check_for_rcrs { + my $showreqcrs = 0; + foreach my $type ('official','unofficial','community') { + if (&Apache::lonnet::usertools_access($env{'user.name'}, + $env{'user.domain'}, + $type,undef,'requestcourses')) { + $showreqcrs = 1; + last; + } + } + return $showreqcrs; +} + # ======================================================================= Close sub close { @@ -1244,6 +1326,7 @@ sub close { my $menuname = &get_menu_name(); return(< +// ENDCLOSE } @@ -1498,18 +1582,21 @@ sub get_nav_status { return $navstatus; } -#FIXME this needs to move into mydesktab and the other locations +#FIXME this needs to move into mydesk.tab and the other locations # the text is generated -sub convert_menu_function { - my ($rolename,$type) = @_; - if ($type eq 'Group') { - $rolename =~ s/student/member/g; - $rolename =~ s/group/team/g; - $rolename =~ s/course/group/g; - $rolename =~ s/Course/Group/g; - } - return $rolename; -} +# +# We currently do not support this anyway. +# +#sub convert_menu_function { +# my ($rolename,$type) = @_; +# if ($type eq 'Group') { +# $rolename =~ s/student/member/g; +# $rolename =~ s/group/team/g; +# $rolename =~ s/course/group/g; +# $rolename =~ s/Course/Group/g; +# } +# return $rolename; +#} sub hidden_button_check { my $hidden; @@ -1687,8 +1774,9 @@ sub jump_to_role { ' numsec['.$i.'] = "'.$seccount->{$items[$i]}.'";'."\n"; } } - my $output = <<"END"; + return <<"END"; END - return $output; } 500 Internal Server Error

    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

    More information about this error may be available in the server error log.