소스 검색

ability to set new themes now

Ted Serbinski 17 년 전
부모
커밋
ebb1ab6ce1
7개의 변경된 파일78개의 추가작업 그리고 116개의 파일을 삭제
  1. 2 1
      README.txt
  2. BIN
      down-green.gif
  3. BIN
      left-green.gif
  4. BIN
      right-green.gif
  5. 33 85
      simplemenu.css
  6. 5 5
      simplemenu.js
  7. 38 25
      simplemenu.module

+ 2 - 1
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
+- 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

BIN
down-green.gif


BIN
left-green.gif


BIN
right-green.gif


+ 33 - 85
simplemenu.css

@@ -1,102 +1,50 @@
 /* $Id$ */
-#simplemenu
-{
-	background:#ddd;
-	color:#333;
-	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;
+/* 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;
-	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 li.expanded > a
-{
-	background:url(right-green.gif) no-repeat 97%;
-	padding-right:2em;
+	list-style:none;
 }
-
-#simplemenu li.root > a
-{
-	font-weight:700;
-	background:url(down-green.gif) no-repeat 97%;
+#simplemenu {
+	line-height:1.0;
 }
-
-#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;
-}

+ 5 - 5
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');    
 });           

+ 38 - 25
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. <em>Example: body, #primary, div.my-class</em>'),
     '#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 <strong>not</strong> 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 = '<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 .= $menu;
-  
+
   return $output;
-}      
+}
 
 /**
  * Custom implementation of menu_tree().
@@ -148,7 +161,7 @@ function simplemenu_menu_tree($pid = 1) {
   }
 
   return $output;
-}                    
+}
 
 /**
  * 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)) {
     return '<ul>'. $tree .'</ul>';
   }
-}   
+}
 
 /**
  * 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() {
   $output = '';
-  
+
   if (variable_get('simplemenu_devel', 0) && module_exists('devel')) {
     if (user_access('access devel information')) {
       $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.
         $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="leaf">'. implode($links, '</li><li class="leaf">') .'</li>';
       $output .= '</ul></li>';
     }
   }
-  
+
   return $output;
 }