You are here

function i18n_menu_form_node_form_alter in Internationalization 7

Implements hook_form_node_form_alter().

Add language to menu settings of the node form, as well as setting defaults to match the translated item's menu settings.

File

i18n_menu/i18n_menu.module, line 812
Internationalization (i18n) submodule: Menu translation.

Code

function i18n_menu_form_node_form_alter(&$form, &$form_state, $form_id) {
  if (isset($form['menu'])) {
    $node = $form['#node'];
    $link = $node->menu;
    if (!empty($link['mlid'])) {

      // Preserve the menu item language whatever it is.
      $form['menu']['link']['language'] = array(
        '#type' => 'value',
        '#value' => $link['language'],
      );
    }
    elseif (i18n_menu_node_supported_type($node->type)) {

      // Set menu language to node language but only if it is a supported node type.
      $form['menu']['link']['language'] = array(
        '#type' => 'value',
        '#value' => $node->language,
      );
    }
    else {
      $form['menu']['link']['language'] = array(
        '#type' => 'value',
        '#value' => LANGUAGE_NONE,
      );
    }

    // Customized must be set to 1 to save language.
    $form['menu']['link']['customized'] = array(
      '#type' => 'value',
      '#value' => 1,
    );
  }
}