diff --git a/README.txt b/README.txt index be25bebc..4bd47195 100644 --- a/README.txt +++ b/README.txt @@ -35,4 +35,5 @@ jQuery Superfish: http://users.tpg.com.au/j_birch/plugins/superfish/ - new CHANGELOG to keep track of changes - #156256 upgrade to SuperFish 1.3 - upgrade to bgIframe 2.1.1 (for IE6 compatibility with forms) -- remove RTL option; this conflicts with other changes and is properly implemented in Drupal 6 \ No newline at end of file +- remove RTL option; this conflicts with other changes and is properly implemented in Drupal 6 +- new option to select which theme to style SimpleMenu with, or provide a custom one \ No newline at end of file diff --git a/down-green.gif b/down-green.gif deleted file mode 100644 index 215ecc33..00000000 Binary files a/down-green.gif and /dev/null differ diff --git a/left-green.gif b/left-green.gif deleted file mode 100644 index 1929b376..00000000 Binary files a/left-green.gif and /dev/null differ diff --git a/right-green.gif b/right-green.gif deleted file mode 100644 index 1513ee27..00000000 Binary files a/right-green.gif and /dev/null differ diff --git a/simplemenu.css b/simplemenu.css index d84a919d..95c8ba99 100644 --- a/simplemenu.css +++ b/simplemenu.css @@ -1,102 +1,50 @@ /* $Id$ */ -#simplemenu -{ - background:#ddd; - color:#333; + +/* There is a version of this file commented in great detail for educational purposes here: + * http://users.tpg.com.au/j_birch/plugins/superfish/superfish.commented.css + */ + +/*** ESSENTIAL STYLES ***/ +#simplemenu, #simplemenu * { margin:0; padding:0; - border-bottom:1px solid #999; - font:11px Verdana, Helvetica, sans-serif; - left:0; - position:absolute; - top:0; - width:100%; - height:20px; - z-index:9999; -} - -#simplemenu li -{ - background:#ddd; - border-right:1px solid #999; - border-left:1px solid #eee; - float:left; list-style:none; - position:relative; - margin:0; - padding:0; - z-index:9999; - text-align: left; } - -#simplemenu a -{ - color:#333; - display:block; - float:left; - padding:.3em 2em .3em .6em; - text-decoration:none; - background:#ddd; +#simplemenu { + line-height:1.0; } - -#simplemenu li.expanded > a -{ - background:url(right-green.gif) no-repeat 97%; - padding-right:2em; -} - -#simplemenu li.root > a -{ - font-weight:700; - background:url(down-green.gif) no-repeat 97%; -} - -#simplemenu li ul -{ - float:none; - top:-999em; +#simplemenu ul { position:absolute; - margin:0; - padding:0; - z-index:9999; + top:-999em; width:14em; - background:#ddd; - border:1px solid #999; } - -#simplemenu li:hover,#simplemenu li.sfHover,#simplemenu a:focus,#simplemenu a:hover,#simplemenu a:active -{ - background:#3875d7; - color:#fff; +#simplemenu ul li, +#simplemenu a { + width: 100%; } - -#simplemenu li:hover ul,#simplemenu li.sfHover ul -{ - left:-1px; - top:20px; +#simplemenu li { + float:left; + position:relative; + z-index:99; } - -#simplemenu li:hover li ul,#simplemenu li.sfHover li ul -{ +#simplemenu a { + display:block; +} +#simplemenu li:hover ul, +ul#simplemenu li.sfHover ul { + left:0px; + top:21px; +} +#simplemenu li:hover li ul, +#simplemenu li.sfHover li ul { top:-999em; } - -#simplemenu li li:hover ul,#simplemenu li li.sfHover ul -{ +#simplemenu li li:hover ul, +ul#simplemenu li li.sfHover ul { left:14em; top:-1px; - width:14em; } - -#simplemenu li li -{ - background:#ddd; - float:none; - border:none; +.superfish li:hover ul, +.superfish li li:hover ul { + top: -999em; } - -#simplemenu li li a -{ - float:none; - padding-right:0; -} \ No newline at end of file diff --git a/simplemenu.js b/simplemenu.js index 7baf121c..92cae848 100644 --- a/simplemenu.js +++ b/simplemenu.js @@ -24,15 +24,15 @@ $(document).ready(function() { // Build menu $('#simplemenu') .append(simplemenu) - .superfish() - .find(">li[ul]") + .superfish( { speed: 'fast' } ) + .find(">li:has(ul)") .mouseover(function(){ - $("ul", this).bgiframe({opacity:false}); + $("ul", this).bgIframe({opacity:false}); }) .find("a") .focus(function(){ - $("ul", $("#simplemenu>li[ul]")).bgiframe({opacity:false}); - }); + $("ul", $(".nav>li:has(ul)")).bgIframe({opacity:false}); + }); $('#simplemenu').children('li.expanded').addClass('root'); }); diff --git a/simplemenu.module b/simplemenu.module index 7300b117..02ed6414 100644 --- a/simplemenu.module +++ b/simplemenu.module @@ -12,7 +12,7 @@ function simplemenu_menu($may_cache) { $items = array(); - if ($may_cache) { + if ($may_cache) { $items[] = array( 'path' => 'admin/settings/simplemenu', 'title' => t('SimpleMenu'), @@ -35,16 +35,21 @@ function simplemenu_footer() { if (user_access('view simplemenu') && !$exclusions[$theme]) { global $theme, $custom_theme; $path = drupal_get_path('module', 'simplemenu'); + $simplemenu_theme = variable_get('simplemenu_theme', 'original'); drupal_add_css($path .'/simplemenu.css'); - - $settings = array( + + if ($theme != 'custom') { + drupal_add_css($path .'/themes/'. $simplemenu_theme .'/'. $simplemenu_theme .'.css'); + } + + $settings = array( // pass in base path to the JS file // url() handles appending ?q= but in this case, we need to pass in the variable so the menus work when mod_rewrite is off 'basePath' => base_path() . (variable_get('clean_url', 0) ? '' : '?q='), 'placement' => variable_get('simplemenu_element_method', 'prepend'), 'element' => variable_get('simplemenu_element', 'body') ); - + drupal_add_js(array('simplemenu' => $settings), 'setting'); drupal_add_js('var simplemenu = '. drupal_to_js(simplemenu_get_menu()) .';', 'inline'); drupal_add_js($path .'/simplemenu.js'); @@ -69,21 +74,29 @@ function simplemenu_admin_settings() { '#default_value' => variable_get('simplemenu_menu', 1), '#description' => t('Select the menu to display.') ); - + $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' => drupal_map_assoc(array('original', '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.') + ); + $form['default_menu']['advanced'] = array( - '#type' => 'fieldset', + '#type' => 'fieldset', '#title' => t('Advanced settings'), '#collapsible' => TRUE, '#collapsed' => TRUE ); - + $form['default_menu']['advanced']['simplemenu_element'] = array( '#type' => 'textfield', '#title' => t('CSS selector to attach menu to'), @@ -91,24 +104,24 @@ function simplemenu_admin_settings() { '#description' => t('A valid CSS selector to attach the menu to. Example: body, #primary, div.my-class'), '#required' => TRUE ); - + $form['default_menu']['advanced']['simplemenu_element_method'] = array( '#type' => 'radios', - '#title' => 'Attach method', + '#title' => 'Attach method', '#options' => drupal_map_assoc(array('prepend', 'append', 'replace')), '#default_value' => variable_get('simplemenu_element_method', 'prepend'), '#description' => t('Choose how the menu should be attached to the above selector.'), '#required' => TRUE ); - + $form['default_menu']['advanced']['simplemenu_exclusions'] = array( '#type' => 'checkboxes', - '#title' => 'Theme exclusions', + '#title' => 'Theme exclusions', '#options' => drupal_map_assoc(array_keys(list_themes())), '#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.'), - ); - + ); + return system_settings_form($form); } @@ -117,18 +130,18 @@ function simplemenu_admin_settings() { */ function simplemenu_get_menu() { $output = ''; - + $menu = simplemenu_menu_tree(variable_get('simplemenu_menu', 1)); - + if (!$menu) { $menu = '