You are here

auto_menutitle.module in Auto Menu Title 7

Same filename and directory in other branches
  1. 8 auto_menutitle.module
  2. 6.2 auto_menutitle.module

Allows content types to set the default value of the 'Provide a menu link' checkbox.

File

auto_menutitle.module
View source
<?php

/**
 * @file
 * Allows content types to set the default value of the 'Provide a menu link'
 * checkbox.
 */

/**
 * Implements hook_form_FORM_ID_alter().
 */
function auto_menutitle_form_node_type_form_alter(&$form, &$form_state, $form_id) {

  // Add checkbox for setting the default value
  $type = $form['#node_type']->type;
  $form['menu']['auto_menutitle'] = array(
    '#type' => 'checkbox',
    '#title' => t('Provide a menu link by default'),
    '#description' => t('Tick this box to create menu links for this content type by default.'),
    '#default_value' => variable_get('auto_menutitle_' . $type, 0),
    '#weight' => -1,
  );
  $form['#validate'][] = 'auto_menutitle_node_type_form_validate';
}

/**
 * Form validation handler for auto_menutitle_form_node_type_form_alter().
 */
function auto_menutitle_node_type_form_validate($form, &$form_state) {
  if ($form_state['values']['auto_menutitle']) {

    // Get the selected menu(s)
    $selected = array();
    foreach ($form_state['values']['menu_options'] as $menu) {
      if ($menu !== 0) {
        $selected[] = $menu;
      }
    }

    // Display error if menu link is provided by default, but no menu was selected
    if (empty($selected)) {
      form_set_error('menu_options', t("To 'Provide a menu link by default' you must also select one or more 'Available menus'."));
    }
  }
}

/**
 * Implements hook_form_BASE_FORM_ID_alter().
 */
function auto_menutitle_form_node_form_alter(&$form, &$form_state, $form_id) {

  // Only set default value for new nodes, leave existing nodes alone (as users
  // might have manually set them)
  if (empty($form['nid']['#value'])) {
    $type = $form['#node']->type;
    $form['menu']['enabled']['#default_value'] = variable_get('auto_menutitle_' . $type, 0);
  }
}