auto_menutitle.module in Auto Menu Title 8
Same filename and directory in other branches
Allows content types to set default value of 'Provide a menu link' checkbox.
File
auto_menutitle.moduleView source
<?php
/**
* @file
* Allows content types to set default value of 'Provide a menu link' checkbox.
*/
use Drupal\Core\Form\FormStateInterface;
/**
* Implements hook_form_FORM_ID_alter().
*/
function auto_menutitle_form_node_type_form_alter(&$form, FormStateInterface $form_state) {
// Add checkbox for setting the default value.
$type = $form['type']['#default_value'];
$form['menu']['auto_menutitle'] = [
'#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' => \Drupal::state()
->get('auto_menutitle_' . $type),
'#weight' => -1,
];
$form['#validate'][] = 'auto_menutitle_node_type_form_validate';
foreach (array_keys($form['actions']) as $action) {
if ($action != 'preview' && isset($form['actions'][$action]['#type']) && $form['actions'][$action]['#type'] === 'submit') {
$form['actions'][$action]['#submit'][] = 'auto_menutitle_node_form_submit';
}
}
}
/**
* Form validation handler for auto_menutitle_form_node_type_form_alter().
*/
function auto_menutitle_node_type_form_validate(array &$form, FormStateInterface $form_state) {
if ($form_state
->getValues()['auto_menutitle']) {
// Get the selected menu(s)
$selected = [];
foreach ($form_state
->getValue('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_state
->setErrorByName('menu_options', t('To %menu_link you must also select one or more %available_menus.', [
'%menu_link' => t('Provide menu link'),
'%available_menus' => t('Available Menus'),
]));
}
}
}
/**
* Submit handler to save value.
*/
function auto_menutitle_node_form_submit($form, FormStateInterface $form_state) {
$type = $form_state
->getFormObject()
->getEntity()
->get("type");
\Drupal::state()
->set('auto_menutitle_' . $type, $form_state
->getValues()['auto_menutitle']);
}
/**
* Implements hook_form_BASE_FORM_ID_alter().
*/
function auto_menutitle_form_node_form_alter(&$form, FormStateInterface $form_state) {
$node = $form_state
->getFormObject()
->getEntity();
// Only set default value for new nodes, leave existing nodes alone (as users
// might have manually set them)
if ($node
->isNew()) {
// This is a new node.
$type = $node
->getType();
$form['menu']['enabled']['#default_value'] = \Drupal::state()
->get('auto_menutitle_' . $type);
}
}
Functions
Name![]() |
Description |
---|---|
auto_menutitle_form_node_form_alter | Implements hook_form_BASE_FORM_ID_alter(). |
auto_menutitle_form_node_type_form_alter | Implements hook_form_FORM_ID_alter(). |
auto_menutitle_node_form_submit | Submit handler to save value. |
auto_menutitle_node_type_form_validate | Form validation handler for auto_menutitle_form_node_type_form_alter(). |