'admin/settings/simplemenu', 'title' => t('SimpleMenu'), 'description' => t('Select the menu to display.'), 'callback' => 'drupal_get_form', 'callback arguments' => array('simplemenu_admin_settings'), 'access' => user_access('administer simplemenu') ); } return $items; } /** * Implementation of hook_footer() */ function simplemenu_footer() { global $theme; $exclusions = variable_get('simplemenu_exclusions', array()); 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'); if ($simplemenu_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='), 'effect' => variable_get('simplemenu_effect', 'opacity'), 'effectSpeed' => variable_get('simplemenu_effect_speed', 'fast'), 'element' => variable_get('simplemenu_element', 'body'), 'hideDelay' => variable_get('simplemenu_hide_delay', 800), 'placement' => variable_get('simplemenu_element_method', 'prepend'), ); 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'); } } /** * Implementation of hook_perm(). */ function simplemenu_perm() { return array('view simplemenu', 'administer simplemenu'); } /** * SimpleMenu settings page. */ function simplemenu_admin_settings() { if (module_exists('menu')) { $form['default_menu']['simplemenu_menu'] = array( '#type' => 'select', '#title' => t('Menu'), '#options' => menu_parent_options(0), '#default_value' => variable_get('simplemenu_menu', 1), '#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' => 'original', 'blackblue' => 'black & blue', 'custom' => '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', '#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'), '#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['default_menu']['advanced']['simplemenu_element_method'] = array( '#type' => 'radios', '#title' => t('Attach method'), '#options' => drupal_map_assoc(array('prepend', 'append')), '#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' => t('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.'), ); $form['default_menu']['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['default_menu']['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['default_menu']['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.') ); return system_settings_form($form); } /** * Render an HTML list of links for a given menu. */ function simplemenu_get_menu() { $output = ''; // if a user turned off menu module but SimpleMenu was previously set // reset variable so a menu appears if (module_exists('menu')) { $menu = simplemenu_menu_tree(variable_get('simplemenu_menu', 1)); } else { $menu = simplemenu_menu_tree(1); } if (!$menu) { $menu = '