--- loncom/interface/lonmenu.pm 2003/04/03 14:44:01 1.51 +++ loncom/interface/lonmenu.pm 2003/04/18 01:20:25 1.64 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.51 2003/04/03 14:44:01 www Exp $ +# $Id: lonmenu.pm,v 1.64 2003/04/18 01:20:25 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -45,6 +45,10 @@ use Apache::lonhtmlcommon(); use Apache::loncommon; use Apache::File; use vars qw(@desklines $readdesk); +my @inlineremote; +my $font; +my $tabbg; +my $pgbg; # ============================= This gets called at the top of the body section @@ -52,13 +56,31 @@ sub menubuttons { my $forcereg=shift; my $target =shift; my $registration=shift; + my $navmaps=''; + my $reloadlink=''; + my $escurl=&Apache::lonnet::escape($ENV{'REQUEST_URI'}); + my $escsymb=&Apache::lonnet::escape($ENV{'request.symb'}); if ($ENV{'browser.interface'} eq 'textual') { # Textual display only + if ($ENV{'request.course.id'}) { + $navmaps=(<Navigate Contents +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 +ENDRELOAD + } + } my $output=(< // BEGIN LON-CAPA Internal -Main Menu
+Main Menu +$reloadlink $navmaps
@@ -67,18 +89,67 @@ ENDMAINMENU return $output."
"; } elsif ($ENV{'environment.remote'} eq 'off') { # Remote Control is switched off - my $output=(< +Navigate Contents +ENDNAVREM + 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 +ENDRELOAD + } + } + my $reg=''; + if ($registration) { + $reg=&innerregister($forcereg,$target); + } + return (< // BEGIN LON-CAPA Internal -Main Menu -Launch Remote Control + + + +$reloadlink +$navmaps + + +
+Main Menu + + +Launch Remote Control
+$reg ENDINLINEMENU - if ($registration) { $output.=&innerregister($forcereg,$target); } - return $output."
"; } else { return ''; } @@ -98,6 +169,7 @@ sub registerurl { "\n\n"; } if (($ENV{'browser.interface'} eq 'textual') || + ($ENV{'environment.remote'} eq 'off') || ((($ENV{'request.publicaccess'}) || (!&Apache::lonnet::is_on_map($ENV{'REQUEST_URI'}))) && (!$forcereg))) { @@ -125,15 +197,33 @@ sub innerregister { my $textual=($textinter || $noremote); + @inlineremote=(); + undef @inlineremote; + my $reopen=&Apache::lonmenu::reopenmenu(); my $newmail=''; + if (($textual) && ($ENV{'request.symb'}) && ($ENV{'request.course.id'})) { + my ($mapurl,$rid,$resurl)=split(/\_\_\_/,$ENV{'request.symb'}); + $newmail=$ENV{'course.'.$ENV{'request.course.id'}.'.description'}; + my $maptitle=&Apache::lonnet::gettitle($mapurl); + my $restitle=&Apache::lonnet::gettitle($resurl); + if ($maptitle) { + $newmail.=', '.$maptitle; + } + if ($restitle) { + $newmail.=': '.$restitle; + } + $newmail.='   '; + } if (&Apache::lonmsg::newmail()) { $newmail=($textual? 'You have new messages
': 'swmenu.setstatus("you have","messages");'); } my $timesync=($textual?'':'swmenu.syncclock(1000*'.time.');'); + my $tablestart=($noremote?'':''); + my $tableend=($noremote?'
':''); # ============================================================================= # ============================ This is for URLs that actually can be registered if (($ENV{'REQUEST_URI'}!~/^\/(res\/)*adm\//) || ($forcereg)) { @@ -218,7 +308,7 @@ sub innerregister { my $menuitems=(< // BEGIN LON-CAPA Internal @@ -247,12 +339,12 @@ $utility $timesync $newmail -$buttons -$hwkadd -$editbutton +$tablestart +$inlinebuttons +$tableend $form ENDREGTEXT @@ -364,6 +456,8 @@ sub startupremote { # The Remote actually gets launched! # my $configmenu=&rawconfig(); + my $esclowerurl=&Apache::lonnet::escape($lowerurl); + return(< @@ -393,7 +487,7 @@ function wait() { $configmenu window.location='$lowerurl'; } else { - alert("Remote Control timed out. It is possible that it was blocked by pop-up window filters."); + window.location='/adm/remote?action=collapse&url=$esclowerurl'; } } else { wheelswitch(); @@ -402,7 +496,7 @@ function wait() { } function main() { - canceltim=setTimeout('tim=1;',60000); + canceltim=setTimeout('tim=1;',30000); window.status='-'; wait(); } @@ -471,7 +565,10 @@ sub clear { unless (($ENV{'browser.interface'} eq 'textual') || ($ENV{'environment.remote'} eq 'off')) { return "\n".qq(window.status+='.';swmenu.clearbut($row,$col);); - } else { return ''; } + } else { + $inlineremote[10*$row+$col]=''; + return ''; + } } # ============================================ Switch a button or create a link @@ -492,18 +589,23 @@ sub switch { if ($nobreak==2) { return ''; } my $text=$top.' '.$bot; $text=~s/\- //; - return "\n".($nobreak?' ':'
'). - ''.$text.' '. + $inlineremote[10*$row+$col]="\n".($nobreak?' ':'
'). + ''.$text.' '. ($nobreak?'':$desc); } else { # Inline Remote if ($nobreak==2) { return ''; } my $text=$top.' '.$bot; $text=~s/\- //; - return "\n".($nobreak?' ':'
'). - ''.$text.' '. - ($nobreak?'':$desc); + $inlineremote[10*$row+$col]="\n". + ($nobreak==3?''.$text.''. + ($nobreak?'':''.$desc.'').($nobreak!=1?'':''); } + return ''; } sub secondlevel { @@ -528,6 +630,13 @@ sub openmenu { return "window.open(".$nothing.",'".$menuname."');"; } +sub inlinemenu { + @inlineremote=(); + undef @inlineremote; + &rawconfig(1); + return join('',map { (defined($_)?$_:'') } @inlineremote); +} + sub rawconfig { my $textualoverride=shift; my $output=''; @@ -679,13 +788,21 @@ function gocmd(url,cmd) { this.document.server.submit(); } } + +function catalog_info() { + loncatinfo=window.open(window.location.pathname+'.meta',"LONcatInfo",'height=320,width=280,resizeable=yes,scrollbars=yes,location=no,menubar=no,toolbar=no'); +} + +function chat_win() { + lonchat=window.open('/res/adm/pages/chatroom.html',"LONchat",'height=320,width=280,resizeable=yes,location=no,menubar=no,toolbar=no'); +} ENDUTILITY } sub serverform { return(< +
@@ -702,10 +819,28 @@ sub handler { $r->send_http_header; return OK if $r->header_only; - my $utility=&utilityfunctions(); my $form=&serverform(); my $bodytag=&Apache::loncommon::bodytag('Main Menu'); -# ------------------------------------------------------------ Print the screen + my $function='student'; + if ($ENV{'request.role'}=~/^(cc|in|ta|ep)/) { + $function='coordinator'; + } + if ($ENV{'request.role'}=~/^(su|dc|ad|li)/) { + $function='admin'; + } + if (($ENV{'request.role'}=~/^(au|ca)/) || + ($ENV{'REQUEST_URI'}=~/^(\/priv|\~)/)) { + $function='author'; + } + my $domain=&Apache::loncommon::determinedomain(); + $pgbg=&Apache::loncommon::designparm($function.'.pgbg',$domain); + $tabbg=&Apache::loncommon::designparm($function.'.tabbg',$domain); + $font=&Apache::loncommon::designparm($function.'.font',$domain); +# ---- Print the screen, pretent to be in text mode to generate text-based menu + unless ($ENV{'brower.interface'} eq 'textual') { + $ENV{'environment.remote'}='off'; + } + my $utility=&utilityfunctions(); $r->print(< LON-CAPA Main Menu @@ -715,7 +850,7 @@ $utility $bodytag ENDHEADER - $r->print(&rawconfig(1).$form); + $r->print(''.&inlinemenu().'
'.$form); $r->print(''); return OK; }