You are here

function content_menu_form_alter in Content Menu 8

Same name and namespace in other branches
  1. 7 content_menu.module \content_menu_form_alter()

Implements hook_form_alter().

Improve menu item management for node edit forms.

File

./content_menu.module, line 379

Code

function content_menu_form_alter(&$form, &$form_state, $form_id) {
  if (isset($form['#node_edit_form'])) {

    // Add link to menu overview / admin form to menu fieldset.
    if (user_access('administer menu')) {
      if ($form['#node_edit_form'] && isset($form['menu'])) {
        $menu = explode(':', $form['menu']['link']['parent']['#default_value']);
        $form['menu']['link']['menu_admin_link'] = array(
          '#type' => 'markup',
          '#markup' => l(t('Manage menu structure') . ' …', 'admin/structure/menu/manage/' . $menu[0], array(
            'attributes' => array(
              'target' => '_blank',
            ),
          )),
        );
      }
    }
    if (isset($form['menu'])) {
      if (isset($_GET['menu_link_path']) && $_GET['menu_link_path'] == 'menu-dummy') {

        // If this node is being created to replace a menu dummy, substitute the usual menu form for a description of what will happen.
        $form['menu']['enabled']['#access'] = FALSE;
        $form['menu']['link']['#access'] = FALSE;
        $trail = content_menu_get_menu_trail($_GET['menu_mlid']);
        $form['menu']['menu_dummy_replace'] = array(
          '#markup' => t('A link to this node will replace the menu dummy at <br> %trail', array(
            '%trail' => implode(' » ', $trail),
          )),
        );
        $form['title']['#default_value'] = $form['title_field']['und']['0']['value']['#default_value'] = $_GET['menu_title'];
      }
      else {

        // Hide description field from menu item fieldset.
        $form['menu']['link']['description']['#access'] = FALSE;

        // Pre-Populate menu item fields, if given via querystring.
        if (isset($_GET['menu_title'])) {
          $menu_item = content_menu_get_menu_item_from_querystring();

          // Set node form's menu item input field according to query string input.
          $form['menu']['enabled']['#default_value'] = 1;
          $form['menu']['link']['hidden']['#value'] = $menu_item['hidden'];
          $form['menu']['link']['link_title']['#default_value'] = $menu_item['title'];
          $form['menu']['link']['parent']['#default_value'] = $menu_item['name'] . ':' . $menu_item['plid'];
          $form['menu']['link']['weight']['#default_value'] = $menu_item['weight'];
          $form['title']['#default_value'] = $form['title_field']['und']['0']['value']['#default_value'] = $menu_item['title'];
        }
      }
    }
  }
}