--- loncom/interface/lonmenu.pm 2003/07/05 10:07:11 1.80 +++ loncom/interface/lonmenu.pm 2003/09/17 16:50:58 1.89 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.80 2003/07/05 10:07:11 www Exp $ +# $Id: lonmenu.pm,v 1.89 2003/09/17 16:50:58 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -44,15 +44,29 @@ use Apache::Constants qw(:common); use Apache::lonhtmlcommon(); use Apache::loncommon; use Apache::File; +use Apache::lonlocal; + use vars qw(@desklines $readdesk); + + my @inlineremote; my $font; my $tabbg; my $pgbg; +# ================================================================ Little texts + +sub initlittle { + return &Apache::lonlocal::texthash('ret' => 'Return to Last Location', + 'nav' => 'Navigate Contents', + 'main' => 'Main Menu', + 'launch' => 'Launch Remote Control'); +} + # ============================= This gets called at the top of the body section sub menubuttons { + &Apache::lonlocal::reroutetrans(); my $forcereg=shift; my $target =shift; my $registration=shift; @@ -62,16 +76,17 @@ sub menubuttons { my $escsymb=&Apache::lonnet::escape($ENV{'request.symb'}); if ($ENV{'browser.interface'} eq 'textual') { # Textual display only + my %lt=&initlittle(); if ($ENV{'request.course.id'}) { $navmaps=(<Navigate Contents +$lt{'nav'} ENDNAV if (($ENV{'REQUEST_URI'}=~/^\/adm\//) && ($ENV{'REQUEST_URI'}!~/^\/adm\/wrapper\//) && ($ENV{'REQUEST_URI'}!~/^\/adm\/.*\/(smppg|bulletinboard|aboutme)(\?|$)/)) { my $escreload=&Apache::lonnet::escape('return:'); $reloadlink=(<Return to Last Location +$lt{'ret'} ENDRELOAD } } @@ -79,7 +94,7 @@ ENDRELOAD -Main Menu +$lt{'main'} $reloadlink $navmaps
'.$force_title; @@ -193,6 +211,7 @@ sub registerurl { # =========== and in the body of the document sub innerregister { + &Apache::lonlocal::reroutetrans(); my $forcereg=shift; my $target = shift; my $result = ''; @@ -215,7 +234,7 @@ sub innerregister { $newmail='
'; } if (($textual) && ($ENV{'request.symb'}) && ($ENV{'request.course.id'})) { - my ($mapurl,$rid,$resurl)=split(/\_\_\_/,$ENV{'request.symb'}); + my ($mapurl,$rid,$resurl)=&Apache::lonnet::decode_symb($ENV{'request.symb'}); $newmail.=$ENV{'course.'.$ENV{'request.course.id'}.'.description'}; my $maptitle=&Apache::lonnet::gettitle($mapurl); my $restitle=&Apache::lonnet::gettitle($resurl); @@ -334,7 +353,6 @@ c&8&1 c&8&2 s&8&3&prt.gif&prepare&printout&gopost('/adm/printout',currentURL)&Prepare a printable document s&9&1&sbkm.gif&set&bookmark&set_bookmark()&Set a bookmark for this resource&2 -s&9&2&vbkm.gif&view&bookmark&edit_bookmarks()&Use or edit my bookmark collection&2 s&9&3&anot.gif&anno-&tations&annotate()&Make notes and annotations about this resource&2 ENDMENUITEMS unless ($ENV{'REQUEST_URI'}=~/\/(bulletinboard|smppg|navmaps|syllabus|aboutme)(\?|$)/) { @@ -377,6 +395,8 @@ $form ENDREGTEXT # Registered, graphical output } else { + my $requri=(split(/\?/,$ENV{'REQUEST_URI'}))[0]; + $requri=&Apache::lonnet::unescape($requri); $result = (< @@ -389,8 +409,8 @@ var swmenu=null; $timesync $newmail $buttons - swmenu.currentURL=window.location.pathname; - swmenu.reloadURL=window.location.pathname+window.location.search; + swmenu.currentURL="$requri"; + swmenu.reloadURL=swmenu.currentURL+window.location.search; swmenu.currentSymb="$ENV{'request.symb'}"; swmenu.reloadSymb="$ENV{'request.symb'}"; swmenu.currentStale=0; @@ -608,6 +628,9 @@ sub switch { my ($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc,$nobreak)=@_; $act=~s/\$uname/$uname/g; $act=~s/\$udom/$udom/g; + $top=&mt($top); + $bot=&mt($bot); + $desc=&mt($desc); unless (($ENV{'browser.interface'} eq 'textual') || ($ENV{'environment.remote'} eq 'off')) { # Remote @@ -714,7 +737,7 @@ sub rawconfig { $output.=&secondlevel( $uname,$udom,$rol,$crs,$pub,$con,$row,$col,$prt,$img,$top,$bot,$act,$desc); } - } elsif (($pro=~/p(\w+)/) && ($prt)) { + } elsif (($pro=~/^p(\w+)/) && ($prt)) { if (&Apache::lonnet::allowed($1,$prt)) { $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc); } @@ -722,6 +745,14 @@ sub rawconfig { if ($ENV{'request.course.fn'}) { $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc); } + } elsif ($pro =~ /^course_(.*)$/) { + # Check for permissions inside of a course + if (($ENV{'request.course.id'}) && + (&Apache::lonnet::allowed($1,$ENV{'request.course.id'}. + ($ENV{'request.course.sec'}?'/'.$ENV{'request.course.sec'}:'')) + )) { + $output.=switch($uname,$udom,$row,$col,$img,$top,$bot,$act,$desc); + } } elsif ($pro eq 'author') { if ($author) { if ((($prt eq 'rca') && ($ENV{'request.role'}=~/^ca/)) || @@ -848,6 +879,8 @@ sub handler { $r->send_http_header; return OK if $r->header_only; + &Apache::lonlocal::clearreroutetrans(); + my $form=&serverform(); my $bodytag=&Apache::loncommon::bodytag('Main Menu'); my $function='student'; @@ -880,6 +913,7 @@ $utility $bodytag ENDHEADER $r->print(''.&inlinemenu().'
'.$form); + $r->print(&Apache::lonlocal::endreroutetrans()); $r->print(''); return OK; }