You are here

function _menu_item_container_form_menu_edit_item_alter in Menu item container 7

Same name and namespace in other branches
  1. 6 menu_item_container.admin.inc \_menu_item_container_form_menu_edit_item_alter()

Implements hook_form_FORM_ID_alter().

1 call to _menu_item_container_form_menu_edit_item_alter()
menu_item_container_form_menu_edit_item_alter in ./menu_item_container.module
Implements hook_form_FORM_ID_alter().

File

./menu_item_container.admin.inc, line 84
Provides infrequently-used functions for menu item containers.

Code

function _menu_item_container_form_menu_edit_item_alter(&$form, &$form_state) {

  // Get the paramters of menu_edit_item().
  list(, , $type, $item, $menu) = $form['#parameters'];

  // We only need to alter the forms for menu item containers.
  if (!isset($form['#parameters'][5]) || $form['#parameters'][5] != 'menu_item_container_edit' || isset($item['module']) && $item['module'] != 'menu_item_container') {
    return;
  }
  if ($type == 'add') {

    // Find the next possible container ID so each path is unique.
    $result = db_query('SELECT link_path FROM {menu_links} WHERE module = "menu_item_container"');
    $new_id = 1;
    while ($row = db_fetch_array($result)) {
      $id = str_replace('menu-item-container/', '', $row['link_path']);
      if ($id >= $new_id) {
        $new_id = $id + 1;
      }
    }

    // This is an add form, initialize the menu item.
    $item = $form['menu']['original_item']['#value'];
    $item['link_path'] = 'menu-item-container/' . $new_id;
    $item['module'] = 'menu_item_container';
    $item['expanded'] = 1;
    foreach (array(
      'link_path',
      'module',
    ) as $key) {
      $form['menu'][$key] = array(
        '#type' => 'value',
        '#value' => $item[$key],
      );
    }
    $form['menu']['original_item'] = array(
      '#type' => 'value',
      '#value' => $item,
    );
  }
  elseif ($item['module'] != 'menu_item_container') {
    return;
  }

  // Add an additional class to the fieldset.
  $form['menu']['#attributes']['class'] .= ' menu-item-container-form';

  // Update the link_path item.
  unset($form['menu']['_path']);
  $form['menu']['link_path'] = array(
    '#type' => 'hidden',
    '#default_value' => $item['link_path'],
  );

  // Add a delete button, accessible on "edit" forms.
  $form['delete'] = array(
    '#type' => 'submit',
    '#value' => t('Delete'),
    '#access' => $item['mlid'],
    '#submit' => array(
      'menu_item_container_delete_submit',
    ),
    '#weight' => 10,
  );
  $form['menu']['link_title']['#title'] = t('Menu container title');
  $form['menu']['link_title']['#description'] = t('The text corresponding to this container that should appear in the menu.');
  $form['menu']['description']['#description'] = t('The description displayed when hovering over a menu container.');
  $form['menu']['enabled']['#description'] = t('Menu containers that are not enabled will not be listed in any menu.');
  $form['menu']['expanded']['#type'] = 'hidden';
  $form['menu']['expanded']['#default_value'] = 1;

  // Override validate and submit handlers.
  $key = array_search('menu_edit_item_validate', $form['#validate']);
  unset($form['#validate'][$key]);
  $key = array_search('menu_edit_item_submit', $form['#submit']);
  $form['#submit'][$key] = 'menu_item_container_edit_submit';
  return $form;
}