$dhtml_menus[$form['delta']['#value']], '#title' => t('Use the DHTML effect'), '#type' => 'checkbox', '#weight' => -3 ); $form['#validate']['_dhtml_menu_form_block_validate'] = '_dhtml_menu_form_block_validate'; } } /** * Save the DHTML options * * @ingroup form */ function _dhtml_menu_form_block_validate(&$form, $form_state) { $delta = $form_state['values']['delta']; if ($delta == 1 and $form_state['values']['module'] == 'user') { $delta = 'navigation'; } $dhtml_menus = variable_get('dhtml_menus_menus', array()); $dhtml_menus[$delta] = $form_state['values']['dhtml_menu']; variable_set('dhtml_menus_menus', $dhtml_menus); } /** * Implementation of hook_menu(). */ function dhtml_menu_menu() { $items['admin/settings/dhtml_menu'] = array( 'access arguments' => array('access administration pages'), 'description' => 'Adds new menus with DHTML to reduce page refreshes', 'file' => 'dhtml_menu.admin.inc', 'title' => 'DHTML Menu', 'page callback' => 'drupal_get_form', 'page arguments' => array('_dhtml_menu_settings'), ); return $items; } /** * Implementation of hook_preprocess(). * Change the normal behaviour ('theming') of hook_block(). * * @ingroup themable */ function dhtml_menu_preprocess_block(&$variables) { $delta = $variables['block']->delta; if ($delta == 1 and $variables['block']->module == 'user') { $delta = 'navigation'; } // Get the dhtml_menus_menus variable $dhtml_menus = variable_get('dhtml_menus_menus', array()); // If the menu has the DHTML menu option enabled, // replace the entire block content to its DHTML equivalent if (!empty($dhtml_menus[$delta])) { include_once drupal_get_path('module', 'dhtml_menu') .'/dhtml_menu.inc'; $variables['block']->content = _dhtml_menu_build_menu($delta); } } /** * Implementation of hook_theme(). */ function dhtml_menu_theme($existing, $type) { $theme['dhtml_menu_item'] = array( 'arguments' => array('item' => array(), 'id' => NULL), 'file' => 'dhtml_menu.inc' ); $theme['dhtml_menu_tree'] = array( 'arguments' => array('tree' => array(), 'parent' => NULL, 'pid' => NULL), 'file' => 'dhtml_menu.inc' ); return $theme; }