ability to set new themes now

This commit is contained in:
Ted Serbinski 2007-11-22 04:43:47 +00:00
parent 3d8955fb48
commit ebb1ab6ce1
7 changed files with 78 additions and 116 deletions

View File

@ -35,4 +35,5 @@ jQuery Superfish: http://users.tpg.com.au/j_birch/plugins/superfish/
- new CHANGELOG to keep track of changes - new CHANGELOG to keep track of changes
- #156256 upgrade to SuperFish 1.3 - #156256 upgrade to SuperFish 1.3
- upgrade to bgIframe 2.1.1 (for IE6 compatibility with forms) - 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 - 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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 179 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 895 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 893 B

View File

@ -1,102 +1,50 @@
/* $Id$ */ /* $Id$ */
#simplemenu
{ /* There is a version of this file commented in great detail for educational purposes here:
background:#ddd; * http://users.tpg.com.au/j_birch/plugins/superfish/superfish.commented.css
color:#333; */
/*** ESSENTIAL STYLES ***/
#simplemenu, #simplemenu * {
margin:0; margin:0;
padding: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; list-style:none;
position:relative;
margin:0;
padding:0;
z-index:9999;
text-align: left;
} }
#simplemenu {
#simplemenu a line-height:1.0;
{
color:#333;
display:block;
float:left;
padding:.3em 2em .3em .6em;
text-decoration:none;
background:#ddd;
} }
#simplemenu ul {
#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;
position:absolute; position:absolute;
margin:0; top:-999em;
padding:0;
z-index:9999;
width:14em; width:14em;
background:#ddd;
border:1px solid #999;
} }
#simplemenu ul li,
#simplemenu li:hover,#simplemenu li.sfHover,#simplemenu a:focus,#simplemenu a:hover,#simplemenu a:active #simplemenu a {
{ width: 100%;
background:#3875d7;
color:#fff;
} }
#simplemenu li {
#simplemenu li:hover ul,#simplemenu li.sfHover ul float:left;
{ position:relative;
left:-1px; z-index:99;
top:20px;
} }
#simplemenu a {
#simplemenu li:hover li ul,#simplemenu li.sfHover li ul 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; top:-999em;
} }
#simplemenu li li:hover ul,
#simplemenu li li:hover ul,#simplemenu li li.sfHover ul ul#simplemenu li li.sfHover ul {
{
left:14em; left:14em;
top:-1px; top:-1px;
width:14em;
} }
.superfish li:hover ul,
#simplemenu li li .superfish li li:hover ul {
{ top: -999em;
background:#ddd;
float:none;
border:none;
} }
#simplemenu li li a
{
float:none;
padding-right:0;
}

View File

@ -24,15 +24,15 @@ $(document).ready(function() {
// Build menu // Build menu
$('#simplemenu') $('#simplemenu')
.append(simplemenu) .append(simplemenu)
.superfish() .superfish( { speed: 'fast' } )
.find(">li[ul]") .find(">li:has(ul)")
.mouseover(function(){ .mouseover(function(){
$("ul", this).bgiframe({opacity:false}); $("ul", this).bgIframe({opacity:false});
}) })
.find("a") .find("a")
.focus(function(){ .focus(function(){
$("ul", $("#simplemenu>li[ul]")).bgiframe({opacity:false}); $("ul", $(".nav>li:has(ul)")).bgIframe({opacity:false});
}); });
$('#simplemenu').children('li.expanded').addClass('root'); $('#simplemenu').children('li.expanded').addClass('root');
}); });

View File

@ -12,7 +12,7 @@
function simplemenu_menu($may_cache) { function simplemenu_menu($may_cache) {
$items = array(); $items = array();
if ($may_cache) { if ($may_cache) {
$items[] = array( $items[] = array(
'path' => 'admin/settings/simplemenu', 'path' => 'admin/settings/simplemenu',
'title' => t('SimpleMenu'), 'title' => t('SimpleMenu'),
@ -35,16 +35,21 @@ function simplemenu_footer() {
if (user_access('view simplemenu') && !$exclusions[$theme]) { if (user_access('view simplemenu') && !$exclusions[$theme]) {
global $theme, $custom_theme; global $theme, $custom_theme;
$path = drupal_get_path('module', 'simplemenu'); $path = drupal_get_path('module', 'simplemenu');
$simplemenu_theme = variable_get('simplemenu_theme', 'original');
drupal_add_css($path .'/simplemenu.css'); 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 // 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 // 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='), 'basePath' => base_path() . (variable_get('clean_url', 0) ? '' : '?q='),
'placement' => variable_get('simplemenu_element_method', 'prepend'), 'placement' => variable_get('simplemenu_element_method', 'prepend'),
'element' => variable_get('simplemenu_element', 'body') 'element' => variable_get('simplemenu_element', 'body')
); );
drupal_add_js(array('simplemenu' => $settings), 'setting'); drupal_add_js(array('simplemenu' => $settings), 'setting');
drupal_add_js('var simplemenu = '. drupal_to_js(simplemenu_get_menu()) .';', 'inline'); drupal_add_js('var simplemenu = '. drupal_to_js(simplemenu_get_menu()) .';', 'inline');
drupal_add_js($path .'/simplemenu.js'); drupal_add_js($path .'/simplemenu.js');
@ -69,21 +74,29 @@ function simplemenu_admin_settings() {
'#default_value' => variable_get('simplemenu_menu', 1), '#default_value' => variable_get('simplemenu_menu', 1),
'#description' => t('Select the menu to display.') '#description' => t('Select the menu to display.')
); );
$form['default_menu']['simplemenu_devel'] = array( $form['default_menu']['simplemenu_devel'] = array(
'#type' => 'checkbox', '#type' => 'checkbox',
'#title' => t('Add devel module links'), '#title' => t('Add devel module links'),
'#default_value' => variable_get('simplemenu_devel', 0), '#default_value' => variable_get('simplemenu_devel', 0),
'#description' => t('Add devel module links for those users that can access the devel module.') '#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( $form['default_menu']['advanced'] = array(
'#type' => 'fieldset', '#type' => 'fieldset',
'#title' => t('Advanced settings'), '#title' => t('Advanced settings'),
'#collapsible' => TRUE, '#collapsible' => TRUE,
'#collapsed' => TRUE '#collapsed' => TRUE
); );
$form['default_menu']['advanced']['simplemenu_element'] = array( $form['default_menu']['advanced']['simplemenu_element'] = array(
'#type' => 'textfield', '#type' => 'textfield',
'#title' => t('CSS selector to attach menu to'), '#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. <em>Example: body, #primary, div.my-class</em>'), '#description' => t('A valid CSS selector to attach the menu to. <em>Example: body, #primary, div.my-class</em>'),
'#required' => TRUE '#required' => TRUE
); );
$form['default_menu']['advanced']['simplemenu_element_method'] = array( $form['default_menu']['advanced']['simplemenu_element_method'] = array(
'#type' => 'radios', '#type' => 'radios',
'#title' => 'Attach method', '#title' => 'Attach method',
'#options' => drupal_map_assoc(array('prepend', 'append', 'replace')), '#options' => drupal_map_assoc(array('prepend', 'append', 'replace')),
'#default_value' => variable_get('simplemenu_element_method', 'prepend'), '#default_value' => variable_get('simplemenu_element_method', 'prepend'),
'#description' => t('Choose how the menu should be attached to the above selector.'), '#description' => t('Choose how the menu should be attached to the above selector.'),
'#required' => TRUE '#required' => TRUE
); );
$form['default_menu']['advanced']['simplemenu_exclusions'] = array( $form['default_menu']['advanced']['simplemenu_exclusions'] = array(
'#type' => 'checkboxes', '#type' => 'checkboxes',
'#title' => 'Theme exclusions', '#title' => 'Theme exclusions',
'#options' => drupal_map_assoc(array_keys(list_themes())), '#options' => drupal_map_assoc(array_keys(list_themes())),
'#default_value' => variable_get('simplemenu_exclusions', array()), '#default_value' => variable_get('simplemenu_exclusions', array()),
'#description' => t('Select which themes to <strong>not</strong> display the menu. Use this when you have a theme that displays its own admin navigation.'), '#description' => t('Select which themes to <strong>not</strong> display the menu. Use this when you have a theme that displays its own admin navigation.'),
); );
return system_settings_form($form); return system_settings_form($form);
} }
@ -117,18 +130,18 @@ function simplemenu_admin_settings() {
*/ */
function simplemenu_get_menu() { function simplemenu_get_menu() {
$output = ''; $output = '';
$menu = simplemenu_menu_tree(variable_get('simplemenu_menu', 1)); $menu = simplemenu_menu_tree(variable_get('simplemenu_menu', 1));
if (!$menu) { if (!$menu) {
$menu = '<li><a href="'. url('admin/settings/simplemenu') .'">'. t('No menu items found. Try a different menu as the default.') .'</a></li>'; $menu = '<li><a href="'. url('admin/settings/simplemenu') .'">'. t('No menu items found. Try a different menu as the default.') .'</a></li>';
} }
$output .= simplemenu_get_devel(); $output .= simplemenu_get_devel();
$output .= $menu; $output .= $menu;
return $output; return $output;
} }
/** /**
* Custom implementation of menu_tree(). * Custom implementation of menu_tree().
@ -148,7 +161,7 @@ function simplemenu_menu_tree($pid = 1) {
} }
return $output; return $output;
} }
/** /**
* Custom implementation of theme_menu_tree() to call our custom menu above. * Custom implementation of theme_menu_tree() to call our custom menu above.
@ -157,7 +170,7 @@ function simplemenu_theme_menu_tree($pid = 1) {
if ($tree = simplemenu_menu_tree($pid)) { if ($tree = simplemenu_menu_tree($pid)) {
return '<ul>'. $tree .'</ul>'; return '<ul>'. $tree .'</ul>';
} }
} }
/** /**
* Return a list of devel module links if the module is enabled * Return a list of devel module links if the module is enabled
@ -165,7 +178,7 @@ function simplemenu_theme_menu_tree($pid = 1) {
*/ */
function simplemenu_get_devel() { function simplemenu_get_devel() {
$output = ''; $output = '';
if (variable_get('simplemenu_devel', 0) && module_exists('devel')) { if (variable_get('simplemenu_devel', 0) && module_exists('devel')) {
if (user_access('access devel information')) { if (user_access('access devel information')) {
$links[] = l('Devel settings', 'admin/settings/devel', array('title' => t('Adjust module settings for devel module'))); $links[] = l('Devel settings', 'admin/settings/devel', array('title' => t('Adjust module settings for devel module')));
@ -181,12 +194,12 @@ function simplemenu_get_devel() {
// True only if devel_node_access enabled. // True only if devel_node_access enabled.
$links[] = l('Node access summary', 'devel/node_access/summary'); $links[] = l('Node access summary', 'devel/node_access/summary');
} }
$output = '<li class="expanded"><a href="'. url('admin/settings/devel') .'">'. t('Devel module') .'</a><ul>'; $output = '<li class="expanded"><a href="'. url('admin/settings/devel') .'">'. t('Devel module') .'</a><ul>';
$output .= '<li class="leaf">'. implode($links, '</li><li class="leaf">') .'</li>'; $output .= '<li class="leaf">'. implode($links, '</li><li class="leaf">') .'</li>';
$output .= '</ul></li>'; $output .= '</ul></li>';
} }
} }
return $output; return $output;
} }