From 18f4b720a8ca06285add66303c86db841bb80391 Mon Sep 17 00:00:00 2001 From: Alexis Wilke Date: Tue, 13 Apr 2010 01:19:04 +0000 Subject: [PATCH] * Many fixes as found in many issues. [#565736] [#412500] [#421732] [#766466] * Passed through coder (fixed tabs, missing spaces) * Added missing hook_uninstall() function to delete variables * Fixed some formatting in code (.module, .inc, .css, .js) --- simplemenu.admin.inc | 157 +++++++++++++++++++++++++++++++++++ simplemenu.css | 53 +++++++----- simplemenu.info | 7 ++ simplemenu.install | 13 ++- simplemenu.js | 43 +++++----- simplemenu.module | 193 ++++++++++--------------------------------- 6 files changed, 272 insertions(+), 194 deletions(-) create mode 100644 simplemenu.admin.inc diff --git a/simplemenu.admin.inc b/simplemenu.admin.inc new file mode 100644 index 00000000..d0b618fa --- /dev/null +++ b/simplemenu.admin.inc @@ -0,0 +1,157 @@ + 'fieldset', + '#title' => t('Menu settings'), + '#collapsible' => TRUE, + '#collapsed' => FALSE, + ); + + if (module_exists('menu')) { + $form['default_menu']['simplemenu_menu'] = array( + '#type' => 'select', + '#title' => t('Menu'), + '#options' => menu_parent_options(menu_get_menus(), array( 'mlid' => 0 )), // return complete tree; + '#default_value' => variable_get('simplemenu_menu', 'navigation:0'), + '#description' => t('Select the menu to display.'), + ); + } + + if (module_exists('devel')) { + $form['default_menu']['simplemenu_devel'] = array( + '#type' => 'checkbox', + '#title' => t('Add devel module links'), + '#default_value' => variable_get('simplemenu_devel', 0), + '#description' => t('Add devel module links for those users that can access the devel module.'), + ); + } + + $form['default_menu']['simplemenu_theme'] = array( + '#type' => 'select', + '#title' => t('Theme'), + '#options' => array( + 'original' => t('original'), + 'blackblue' => t('black & blue'), + 'custom' => t('custom'), + ), + '#default_value' => variable_get('simplemenu_theme', 'original'), + '#description' => t('Select which theme to use. If you specify custom, you need to define CSS in your theme.'), + ); + + + // advanced options + $form['advanced'] = array( + '#type' => 'fieldset', + '#title' => t('Advanced settings'), + '#collapsible' => TRUE, + '#collapsed' => TRUE, + ); + + $form['advanced']['simplemenu_uid1'] = array( + '#type' => 'checkbox', + '#title' => t('Show to User ID 1'), + '#description' => t('Check this option to enable simplemenu for user 1 (superuser/administration). This is useful if you want to use a different menu (such as admin_menu) for the superuser/admin and simplemenu for others.'), + '#default_value' => variable_get('simplemenu_uid1', 1), + ); + + $form['advanced']['simplemenu_element'] = array( + '#type' => 'textfield', + '#title' => t('CSS selector to attach menu to'), + '#default_value' => variable_get('simplemenu_element', 'body'), + '#description' => t('A valid CSS selector to attach the menu to. Example: body, #primary, div.my-class'), + '#required' => TRUE, + ); + + $form['advanced']['simplemenu_element_method'] = array( + '#type' => 'radios', + '#title' => t('Attach method'), + '#options' => array( + 'prepend' => t('Prepend'), + 'append' => t('Append'), + ), + '#default_value' => variable_get('simplemenu_element_method', 'prepend'), + '#description' => t('Choose how the menu should be attached to the above selector.'), + '#required' => TRUE, + ); + + // when someone has many themes, this list grows big! + $themes = list_themes(); + $use_list = count($themes) > 15; + $form['advanced']['simplemenu_exclusions'] = array( + '#type' => $use_list ? 'select' : 'checkboxes', + '#title' => t('Theme exclusions'), + '#options' => drupal_map_assoc(array_keys($themes)), + '#multiple' => $use_list, + '#default_value' => variable_get('simplemenu_exclusions', array()), + '#description' => t('Select which themes to not display the menu. Use this when you have a theme that displays its own admin navigation.'), + ); + + $form['advanced']['simplemenu_hide_delay'] = array( + '#type' => 'textfield', + '#title' => t('Hide delay'), + '#size' => 4, + '#default_value' => variable_get('simplemenu_hide_delay', 800), + '#description' => t('How long (in milliseconds) should a menu still appear after losing focus.'), + ); + + $form['advanced']['simplemenu_effect'] = array( + '#type' => 'radios', + '#title' => t('Show effect'), + '#options' => array( + 'opacity' => t('Fade'), + 'height' => t('Slide'), + 'none' => t('None') + ), + '#default_value' => variable_get('simplemenu_effect', 'opacity'), + '#description' => t('The effect used when displaying a menu.'), + ); + + $form['advanced']['simplemenu_effect_speed'] = array( + '#type' => 'radios', + '#title' => t('Show speed'), + '#options' => array('slow' => t('Slow'), 'medium' => t('Medium'), 'fast' => t('Fast')), + '#default_value' => variable_get('simplemenu_effect_speed', 'fast'), + '#description' => t('The speed of the effect, not used when "none" is set to show effect.'), + ); + + $form['advanced']['simplemenu_detect_popop'] = array( + '#type' => 'checkbox', + '#title' => t('Detect pop-up windows'), + '#default_value' => variable_get('simplemenu_detect_popop', 1), + '#description' => t("Choose whether SimpleMenu should attempt to detect if it is inside of a pop-up window. If enabled, SimpleMenu will not display if it is inside of a pop-up window."), + ); + + $form['advanced']['simplemenu_visibility_operator'] = array( + '#type' => 'radios', + '#title' => t('Show block on specific pages'), + '#default_value' => variable_get('simplemenu_visibility_operator', 0), + '#options' => array( + 0 => t('Show on every page except the listed pages.'), + 1 => t('Show on only the listed pages.'), + ), + ); + + $form['advanced']['simplemenu_visibility_pages'] = array( + '#type' => 'textarea', + '#title' => t('Pages'), + '#default_value' => variable_get('simplemenu_visibility_pages', ''), + '#description' => t("Enter one page per line as Drupal paths. The '*' character is a wildcard. Example paths are %blog for the blog page and %blog-wildcard for every personal blog. %front is the front page.", + array('%blog' => 'blog', '%blog-wildcard' => 'blog/*', '%front' => '')), + '#wysiwyg' => FALSE, + ); + + return system_settings_form($form); +} + + diff --git a/simplemenu.css b/simplemenu.css index 6e44cbb3..ea63d736 100644 --- a/simplemenu.css +++ b/simplemenu.css @@ -6,49 +6,58 @@ /*** ESSENTIAL STYLES ***/ #simplemenu, #simplemenu * { - margin:0; - padding:0; - list-style:none; + margin: 0; + padding: 0; + list-style: none; } + #simplemenu { - line-height:1.0; - position: relative; - z-index: 9999; + line-height: 1.0; + position: relative; + z-index: 9999; } + #simplemenu ul { - position:absolute; - top:-999em; - width:14em; - font-size:1em; - line-height:1em; + position: absolute; + top: -999em; + width: 14em; + font-size: 1em; + line-height: 1em; } + #simplemenu ul li, #simplemenu a { - width: 100%; + width: 100%; } + #simplemenu li { - float:left; - position:relative; - z-index:99; + float: left; + position: relative; + z-index: 99; } + #simplemenu a { - display:block; + display: block; } + #simplemenu li:hover ul, ul#simplemenu li.sfHover ul { - left:0px; - top:21px; + left: 0px; + top: 21px; } + #simplemenu li:hover li ul, #simplemenu li.sfHover li ul { - top:-999em; + top: -999em; } + #simplemenu li li:hover ul, ul#simplemenu li li.sfHover ul { - left:14em; - top:-1px; + left: 14em; + top: -1px; } + .superfish li:hover ul, .superfish li li:hover ul { - top: -999em; + top: -999em; } diff --git a/simplemenu.info b/simplemenu.info index 129bff7a..581c103f 100644 --- a/simplemenu.info +++ b/simplemenu.info @@ -2,3 +2,10 @@ name = SimpleMenu description = Creates a menu bar that is displayed at the top of every page. core = 6.x + +; Information added by drupal.org packaging script on 2009-04-02 +version = "6.x-1.x-dev" +core = "6.x" +project = "simplemenu" +datestamp = "1238675022" + diff --git a/simplemenu.install b/simplemenu.install index 0e4f1765..a23b0bc3 100644 --- a/simplemenu.install +++ b/simplemenu.install @@ -1,14 +1,23 @@ li:has(ul)") - .mouseover(function(){ - $("ul", this).bgIframe(); - }) - .find("a") - .focus(function(){ - $("ul", $(".nav>li:has(ul)")).bgIframe(); - }) - .end() - .end() - .find("a") - .removeAttr('title'); + }) + .find(">li:has(ul)") + .mouseover(function(){ + $("ul", this).bgIframe(); + }) + .find("a") + .focus(function(){ + $("ul", $(".nav>li:has(ul)")).bgIframe(); + }) + .end() + .end() + .find("a") + .removeAttr('title'); - $('#simplemenu').children('li.expanded').addClass('root'); + $('#simplemenu').children('li.expanded').addClass('root'); }; @@ -60,4 +65,4 @@ Drupal.behaviors.simplemenuAttach = function(context) { * * Version 2.1.1 */ -(function($){$.fn.bgIframe=$.fn.bgiframe=function(s){if($.browser.msie&&/6.0/.test(navigator.userAgent)){s=$.extend({top:'auto',left:'auto',width:'auto',height:'auto',opacity:true,src:'javascript:false;'},s||{});var prop=function(n){return n&&n.constructor==Number?n+'px':n;},html='