--- loncom/interface/loncommon.pm 2024/10/06 20:12:05 1.1075.2.161.2.30 +++ loncom/interface/loncommon.pm 2024/10/08 20:39:54 1.1075.2.161.2.31 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # a pile of common routines # -# $Id: loncommon.pm,v 1.1075.2.161.2.30 2024/10/06 20:12:05 raeburn Exp $ +# $Id: loncommon.pm,v 1.1075.2.161.2.31 2024/10/08 20:39:54 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -6419,15 +6419,18 @@ sub bodytag { my $funclist; if (($env{'environment.remote'} eq 'on') && ($env{'request.state'} ne 'construct')) { - $bodytag .= Apache::lonhtmlcommon::scripttag(Apache::lonmenu::utilityfunctions($httphost), 'start')."\n". - Apache::lonmenu::serverform(); - my $forbodytag; - &Apache::lonmenu::prepare_functions($env{'request.noversionuri'}, - $forcereg,$args->{'group'}, - $args->{'bread_crumbs'}, - $advtoolsref,'','',\$forbodytag); - unless (ref($args->{'bread_crumbs'}) eq 'ARRAY') { - $funclist = $forbodytag; + unless ($args->{'switchserver'}) { + $bodytag .= Apache::lonhtmlcommon::scripttag(Apache::lonmenu::utilityfunctions($httphost), 'start')."\n". + Apache::lonmenu::serverform(); + my $forbodytag; + &Apache::lonmenu::prepare_functions($env{'request.noversionuri'}, + $forcereg,$args->{'group'}, + $args->{'bread_crumbs'}, + $advtoolsref,'','',\$forbodytag); + unless (ref($args->{'bread_crumbs'}) eq 'ARRAY') { + $funclist = $forbodytag; + } + $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); } } else { @@ -6435,8 +6438,12 @@ sub bodytag { # $titleinfo = &CSTR_pageheader(); #FIXME: Will be removed once all scripts have their own calls # } - $bodytag .= Apache::lonhtmlcommon::scripttag( - Apache::lonmenu::utilityfunctions($httphost), 'start'); + my $need_endlcint; + unless ($args->{'switchserver'}) { + $bodytag .= Apache::lonhtmlcommon::scripttag( + Apache::lonmenu::utilityfunctions($httphost), 'start'); + $need_endlcint = 1; + } my $collapsible; if ($args->{'collapsible_header'} ne '') { @@ -6475,6 +6482,9 @@ END } $bodytag .= qq|
$left $role
$realm $dc_info
|; + if ($need_endlcint) { + $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); + } return $bodytag; } @@ -6492,6 +6502,9 @@ END #if directed to not display the secondary menu, don't. if ($args->{'no_secondary_menu'}) { + if ($need_endlcint) { + $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); + } return $bodytag; } #don't show menus for public users @@ -6506,7 +6519,9 @@ END $args->{'links_target'}); } $bodytag .= Apache::lonmenu::serverform(); - $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); + if ($need_endlcint) { + $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); + } if ($env{'request.state'} eq 'construct') { $bodytag .= &Apache::lonmenu::innerregister($forcereg, $args->{'bread_crumbs'},'','',$hostname, @@ -6526,11 +6541,13 @@ END $bodytag .= $forbodytag; } } - }else{ - # this is to seperate menu from content when there's no secondary + } else { + # this is to separate menu from content when there's no secondary # menu. Especially needed for public accessible ressources. $bodytag .= '
'; - $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); + if ($need_endlcint) { + $bodytag .= Apache::lonhtmlcommon::scripttag('', 'end'); + } } if ($args->{'collapsible_header'} ne '') { $bodytag .= $args->{'collapsible_header'}. @@ -6544,12 +6561,17 @@ END # Top frame rendering, Remote is up # + my $linkattr; + if ($args->{'links_disabled'}) { + $linkattr = 'class="LCisDisabled" aria-disabled="true"'; + } + my $help=($no_inline_link?'' - :&Apache::loncommon::top_nav_help('Help')); + :&top_nav_help('Help',$linkattr)); # Explicit link to get inline menu my $menu= ($no_inline_link?'' - :''.&mt('Switch to Inline Menu Mode').''); + :''.&mt('Switch to Inline Menu Mode').''); if ($dc_info) { $dc_info = qq|($dc_info)|; @@ -6557,8 +6579,12 @@ END my $name = &plainname($env{'user.name'},$env{'user.domain'}); unless ($public) { + my $class = 'LC_menubuttons_link'; + if ($args->{'links_disabled'}) { + $class .= ' LCisDisabled'; + } $name = &aboutmewrapper($name,$env{'user.name'},$env{'user.domain'}, - undef,'LC_menubuttons_link'); + undef,$class); } unless ($env{'form.inhibitmenu'}) { @@ -8912,7 +8938,7 @@ sub headtag { $inhibitprint = &print_suppression(); } - if (!$args->{'frameset'}) { + if (!$args->{'frameset'} && !$args->{'switchserver'}) { $result .= &Apache::lonhtmlcommon::htmlareaheaders(); } if ($args->{'force_register'}) { @@ -8920,7 +8946,8 @@ sub headtag { } if (!$args->{'no_nav_bar'} && !$args->{'only_body'} - && !$args->{'frameset'}) { + && !$args->{'frameset'} + && !$args->{'switchserver'}) { $result .= &help_menu_js($httphost); $result.=&modal_window(); $result.=&togglebox_script();