--- loncom/interface/lonmenu.pm 2003/06/23 19:08:03 1.79 +++ loncom/interface/lonmenu.pm 2003/09/21 21:40:06 1.93 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.79 2003/06/23 19:08:03 www Exp $ +# $Id: lonmenu.pm,v 1.93 2003/09/21 21:40:06 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); @@ -229,7 +248,7 @@ sub innerregister { } if (&Apache::lonmsg::newmail()) { $newmail=($textual? - 'You have new messages
': + 'You have new messages
': 'swmenu.setstatus("you have","messages");'); } if ($noremote) { @@ -332,16 +351,14 @@ s&2&3&forw.gif&forward&&gopost('/adm/fli c&6&3 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)(\?|$)/) { $menuitems.=(< @@ -389,8 +408,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 +627,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 +736,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 +744,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/)) || @@ -844,10 +874,12 @@ ENDSERVERFORM sub handler { my $r = shift; - $r->content_type('text/html'); + &Apache::loncommon::content_type($r,'text/html'); $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 +912,7 @@ $utility $bodytag ENDHEADER $r->print(''.&inlinemenu().'
'.$form); + $r->print(&Apache::lonlocal::endreroutetrans()); $r->print(''); return OK; }