--- loncom/interface/lonmenu.pm 2010/08/25 12:38:45 1.338 +++ loncom/interface/lonmenu.pm 2022/07/07 15:28:08 1.526 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Routines to control the menu # -# $Id: lonmenu.pm,v 1.338 2010/08/25 12:38:45 wenzelju Exp $ +# $Id: lonmenu.pm,v 1.526 2022/07/07 15:28:08 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -26,8 +26,6 @@ # http://www.lon-capa.org/ # # -# There is one parameter controlling the action of this module: -# =head1 NAME @@ -35,7 +33,8 @@ Apache::lonmenu =head1 SYNOPSIS -Coordinates the response to clicking an image. +Loads contents of /home/httpd/lonTabs/mydesk.tab, +used to generate inline menu, and Main Menu page. This is part of the LearningOnline Network with CAPA project described at http://www.lon-capa.org. @@ -74,10 +73,19 @@ It is set to 'done' in the BEGIN block o =item @primary_menu The elements of this array reference arrays that are made up of the components -of those lines of mydesk.tab that start with prim. +of those lines of mydesk.tab that start with prim:. It is used by primary_menu() to generate the corresponding menu. It gets filled in the BEGIN block of this module. +=item %primary_sub_menu + +The keys of this hash reference are the names of items in the primary_menu array +which have sub-menus. For each key, the corresponding value is a reference to +an array containing components extracted from lines in mydesk.tab which begin +with primsub:. +This hash, which is used by primary_menu to generate sub-menus, is populated in +the BEGIN block. + =item @secondary_menu The elements of this array reference arrays that are made up of the components @@ -91,23 +99,65 @@ It gets filled in the BEGIN block of thi =over -=item prep_menuitems(\@menuitem) +=item prep_menuitems(\@menuitem,$target,$listclass,$linkattr) This routine wraps a menuitem in proper HTML. It is used by primary_menu() and secondary_menu(). =item primary_menu() -This routine evaluates @primary_menu and returns XHTML for the menu -that contains following links: About, Message, Roles, Help, Logout +This routine evaluates @primary_menu and returns a two item array, +with the array elements containing XHTML for the left and right sides of +the menu that contains the following links: About, Message, Roles, Help, Logout @primary_menu is filled within the BEGIN block of this module with -entries from mydesk.tab +entries from mydesk.tab =item secondary_menu() Same as primary_menu() but operates on @secondary_menu. -=item show_return_link() +=item create_submenu() + +Creates XHTML for unordered list of sub-menu items which belong to a +particular top-level menu item. Uses hover pseudo class in css to display +dropdown list when mouse hovers over top-level item. Support for IE6 +(no hover psuedo class) via LC_hoverable class for
'; + $menu .= '
'; + if ($type eq 'map') { + $lt{'miss'} .= &mt('Submissions are missing for [quant,_1,question part,question parts] in this folder.',$missing); + } else { + $lt{'miss'} .= &mt('Submissions are missing for [quant,_1,part] in this question.',$missing); + } + if ($missing > 1) { + $lt{'miss'} .= ' '.&mt('If you confirm you are done you will be unable to submit answers for them.').''; + } else { + $lt{'miss'} .= ' '.&mt('If you confirm you are done you will be unable to submit an answer for it.').'
'; + } + } + $donebuttontext = &HTML::Entities::encode($donebuttontext,'<>&"'); + if ($proctor) { + if ($height !~ /^\d+$/) { + $height = 400; + if ($missing) { + $height += 60; + } + } + if ($width !~ /^\d+$/) { + $width = 400; + if ($missing) { + $width += 60; + } + } + return <$lt{'preamble'} $lt{$type}
+ $lt{'miss'} +$lt{'proctor'}
+ +$lt{'cancel'}
+';
+ }
+ return < $lt{'preamble'} $lt{$type} $lt{'miss'} $lt{'okdone'} $lt{'cancel'} The server encountered an internal error or
misconfiguration and was unable to complete
your request. Please contact the server administrator at
root@localhost to inform them of the time this error occurred,
and the actions you performed just before this error. More information about this error may be available
in the server error log.'.&mt('Set a link to wishlist').'
'.
- '';
-
- # remove all \n for inserting on javascript document.write
- $in_page_wishlistlink1 =~ s/\n//g;
- $in_page_wishlistlink2 =~ s/\n//g;
- $in_page_wishlistlink3 =~ s/\n//g;
+ my $jumptores = &Apache::lonhtmlcommon::javascript_jumpto_resource();
- my $end_page_wishlistlink =
- &Apache::loncommon::end_page({'js_ready' => 1});
+ my $esc_url=&escape($currenturl);
+ my $esc_symb=&escape($currentsymb);
+ my $newname = &mt('New Name');
+
+ my $countdown = &countdown_toggle_js();
+
+ my ($ltitarget,$deeplinktarget);
+ if ($env{'request.lti.login'}) {
+ $ltitarget = $env{'request.lti.target'};
+ }
+ if ($env{'request.deeplink.login'}) {
+ $deeplinktarget = $env{'request.deeplink.target'};
+ }
+
+ my $annotateurl = '/adm/annotation';
+ if ($httphost) {
+ $annotateurl = '/adm/annotations';
+ }
+ my $hostvar = '
+function setLCHost() {
+ var lcHostname="";
+';
+ if ($httphost =~ m{^https?\://}) {
+ $hostvar .= ' var lcServer="'.$httphost.'";'."\n".
+ ' var hostReg = /^https?:\/\/([^\/]+)$/i;'."\n".
+ ' var match = hostReg.exec(lcServer);'."\n".
+ ' if (match.length) {'."\n".
+ ' if (match[1] == location.hostname) {'."\n".
+ ' lcHostname=lcServer;'."\n".
+ ' }'."\n".
+ ' }'."\n";
+ }
+
+ $hostvar .= ' return lcHostname;'."\n".
+'}'."\n";
return (<Internal Server Error