--- loncom/interface/lonmenu.pm 2003/04/17 14:51:31 1.61 +++ loncom/interface/lonmenu.pm 2003/06/04 22:05:22 1.74 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.61 2003/04/17 14:51:31 www Exp $ +# $Id: lonmenu.pm,v 1.74 2003/06/04 22:05:22 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -143,6 +143,9 @@ $navmaps <td bgcolor="$tabbg"> <a href="/adm/remote?action=launch&url=$escurl" target="_top"> <font color="$font">Launch Remote Control</font></a></td> +<td bgcolor="$tabbg"> +<img align="right" src="/adm/lonIcons/minilogo.gif" /> +<b>LON-CAPA</b></td> </tr> </table> <script> @@ -155,13 +158,24 @@ ENDINLINEMENU } } +# ===== Early call to LONCAPAreg for long-running pages, preferably used right +# ===== before $r->rflush() + +sub regflush { + return '<script type="text/javascript">'.&loadevents.'</script>'; +} + # ====================================== This gets called in the header section sub registerurl { my $forcereg=shift; my $target = shift; my $result = ''; - + if ($ENV{'REQUEST_URI'} eq '/res/adm/pages/menu.html') { return ''; } + my $force_title=''; + if ($ENV{'request.state'} eq 'construct') { + $force_title=&Apache::lonxml::display_title(); + } if ($target eq 'edit') { $result .="<script type=\"text/javascript\">\n". "if (typeof swmenu != 'undefined') {swmenu.currentURL=null;}\n". @@ -173,13 +187,35 @@ sub registerurl { ((($ENV{'request.publicaccess'}) || (!&Apache::lonnet::is_on_map($ENV{'REQUEST_URI'}))) && (!$forcereg))) { - return $result. - '<script type="text/javascript">function LONCAPAreg(){;} function LONCAPAstale(){}</script>'; + my $loadfunction=''; + my $inlineloadfunction=''; + my $unloadfunction=''; + unless (($ENV{'browser.interface'} eq 'textual') || + ($ENV{'environment.remote'} eq 'off') || + ($ENV{'request.publicaccess'})) { + my $reopen=&Apache::lonmenu::reopenmenu(); + $loadfunction='swmenu='.$reopen.'swmenu.windowloaded(self.name);window.focus();'; + $inlineloadfunction=®flush(); + $unloadfunction='swmenu='.$reopen.'swmenu.windowunloaded(self.name);'; + } + return $result.(<<ENDFUNCTIONS); +<script type="text/javascript"> +function LONCAPAreg() { + $loadfunction +} + +function LONCAPAstale() { + $unloadfunction +} +</script> +$inlineloadfunction +$force_title +ENDFUNCTIONS } # Graphical display after login only if ($Apache::lonxml::registered && !$forcereg) { return ''; } $result.=&innerregister($forcereg,$target); - return $result; + return $result.$force_title; } # =========== This gets called in order to register a URL, both with the Remote @@ -189,6 +225,7 @@ sub innerregister { my $forcereg=shift; my $target = shift; my $result = ''; + if ($ENV{'REQUEST_URI'} eq '/res/adm/pages/menu.html') { return ''; } $Apache::lonxml::registered=1; @@ -203,9 +240,12 @@ sub innerregister { my $reopen=&Apache::lonmenu::reopenmenu(); my $newmail=''; + if ($noremote) { + $newmail='<table bgcolor="'.$pgbg.'" border="0" cellspacing="3" cellpadding="3" width="100%"><tr><td bgcolor="'.$tabbg.'">'; + } 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'}; + $newmail.=$ENV{'course.'.$ENV{'request.course.id'}.'.description'}; my $maptitle=&Apache::lonnet::gettitle($mapurl); my $restitle=&Apache::lonnet::gettitle($resurl); if ($maptitle) { @@ -221,6 +261,9 @@ sub innerregister { '<b><a href="/adm/communicate">You have new messages</a></b><br />': 'swmenu.setstatus("you have","messages");'); } + if ($noremote) { + $newmail.='</td></tr></table>'; + } my $timesync=($textual?'':'swmenu.syncclock(1000*'.time.');'); my $tablestart=($noremote?'<table bgcolor="'.$pgbg.'" border="0" cellspacing="3" cellpadding="3" width="100%">':''); my $tableend=($noremote?'</table>':''); @@ -344,7 +387,7 @@ $inlinebuttons $tableend $form <script> -//END LON-CAPA Internal +// END LON-CAPA Internal </script> ENDREGTEXT @@ -358,6 +401,7 @@ var swmenu=null; function LONCAPAreg() { swmenu=$reopen; + swmenu.windowloaded(self.name); swmenu.clearTimeout(swmenu.menucltim); $timesync $newmail @@ -385,7 +429,7 @@ var swmenu=null; 'clearbut(2,1);clearbut(2,3);clearbut(8,1);clearbut(8,2);clearbut(8,3);'+ 'clearbut(9,1);clearbut(9,2);clearbut(9,3);clearbut(6,3);clearbut(6,1)', 2000); - + swmenu.windowunloaded(self.name); } // END LON-CAPA Internal @@ -409,6 +453,7 @@ var swmenu=null; function LONCAPAreg() { swmenu=$reopen + swmenu.windowloaded(self.name); $timesync swmenu.currentStale=1; swmenu.clearbut(2,1); @@ -425,6 +470,8 @@ var swmenu=null; } function LONCAPAstale() { + swmenu=$reopen + swmenu.windowunloaded(self.name); } // END LON-CAPA Internal @@ -437,10 +484,12 @@ ENDDONOTREGTHIS } sub loadevents() { + if ($ENV{'REQUEST_URI'} eq '/res/adm/pages/menu.html') { return ''; } return 'LONCAPAreg();'; } sub unloadevents() { + if ($ENV{'REQUEST_URI'} eq '/res/adm/pages/menu.html') { return ''; } return 'LONCAPAstale();'; } @@ -553,6 +602,7 @@ ENDRESIZE window.status='Opening LON-CAPA Remote Control'; var menu=window.open("/res/adm/pages/menu.html","$menuname", "height=350,width=150,scrollbars=no,menubar=no,top=5,left=5,screenX=5,screenY=5"); +self.name='loncapaclient'; ENDOPEN return '<script>'.$returnval.'</script>'; } @@ -590,7 +640,7 @@ sub switch { my $text=$top.' '.$bot; $text=~s/\- //; $inlineremote[10*$row+$col]="\n".($nobreak?' ':'<br />'). - '<a href="javascript:'.$act.';" target="_top">'.$text.'</a> '. + '<a href="javascript:'.$act.';">'.$text.'</a> '. ($nobreak?'':$desc); } else { # Inline Remote @@ -600,7 +650,7 @@ sub switch { $inlineremote[10*$row+$col]="\n". ($nobreak==3?'<td width="50%" colspan="2" align="right"':'<tr><td'). ' bgcolor="'.$tabbg.'"'.($nobreak==1?' width="50%" colspan="2"':''). - '"><a href="javascript:'.$act.';" target="_top"><font color="'.$font.'"'. + '"><a href="javascript:'.$act.';"><font color="'.$font.'"'. ($nobreak?' size="+1"':''). '>'.$text.'</font></a></td>'. ($nobreak?'':'<td colspan="3" width="80%"><font color="'.$font.'" size="-1">'.$desc.'</font>').($nobreak!=1?'</tr>':''); @@ -802,7 +852,7 @@ ENDUTILITY sub serverform { return(<<ENDSERVERFORM); -<form name="server" action="/adm/logout" method="post"> +<form name="server" action="/adm/logout" method="post" target="_top"> <input type="hidden" name="postdata" value="none" /> <input type="hidden" name="command" value="none" /> <input type="hidden" name="url" value="none" />