You are here

function menu_target_edit_form_extra_elements in Menu target 7

Same name and namespace in other branches
  1. 8 menu_target.admin.inc \menu_target_edit_form_extra_elements()

Adds extra form elements to either node_form or menu_item_edit_form.

See also

menu_target_form_alter()

1 call to menu_target_edit_form_extra_elements()
menu_target_form_alter in ./menu_target.module
Implements hook_form_alter().

File

./menu_target.admin.inc, line 14
Allows content editors to choose wether or not to open menu items in a new window

Code

function menu_target_edit_form_extra_elements(&$form, $node_form) {
  if ($node_form) {
    $type = $form['#node']->type;
    $enabled_menus = variable_get('menu_options_' . $type);
    if (empty($enabled_menus) || empty(array_filter($enabled_menus))) {
      return;
    }
  }

  // Only add extra form elements if the menu target functionality is enabled.
  if (variable_get('menu_target_enabled', 1)) {
    $mlid = $node_form ? $form['menu']['link']['mlid']['#value'] : $form['mlid']['#value'];

    // Has this setting been enabled for this content?
    $default = $mlid == 0 ? 0 : (bool) _menu_target_retarget_link($mlid);

    // Create the form array.
    $target = array(
      '#type' => 'checkbox',
      '#title' => t('Open this link in a new window'),
      '#default_value' => $default,
    );

    // Depanding on the form type, this element is placed in the
    // appropriate place in the form tree.
    if ($node_form) {
      $form['menu']['link']['target'] = $target;
    }
    else {

      // This is the menu item edit form.
      // Restructure the form in order to place the new target form element
      // just below the 'expanded' checkbox.
      $_form = $form;
      $form = array();
      foreach ($_form as $key => $element) {
        $form[$key] = $_form[$key];
        if ($key == 'expanded') {
          $form['target'] = $target;
        }
      }
    }

    // Add our own submit callback to the form.
    array_unshift($form['#submit'], '_menu_target_edit_form_extra_elements_submit');
  }
}