function domain_menus_form_alter in Domain Menus for Domains 3.x
Same name and namespace in other branches
- 9.x domain_menus.module \domain_menus_form_alter()
- 9.1.x domain_menus.module \domain_menus_form_alter()
Implements hook_form_alter().
File
- ./
domain_menus.module, line 84 - Domain menus implementation through entity create, delete, and access customizations.
Code
function domain_menus_form_alter(&$form, FormStateInterface $form_state, $form_id) {
if ($form_id == 'menu_add_form' || $form_id == 'menu_edit_form') {
if (\Drupal::currentUser()
->hasPermission('administer menu')) {
$menu = $form_state
->getFormObject()
->getEntity();
$menu_auto_created = $menu
->getThirdPartySetting('domain_menus', 'auto-created', 0);
if ($menu_auto_created != 1) {
$options = _domain_menus_domain_options();
$default_value = $menu
->getThirdPartySetting('domain_menus', 'domains', []);
$form['domain_menus_menu_domains'] = array(
'#type' => 'checkboxes',
'#title' => t('Domain(s)'),
'#description' => t('Select the domain assignment of this menu. Leave empty if menu should not be considered a domain menu.'),
'#options' => $options,
'#default_value' => $default_value,
);
$form['actions']['submit']['#submit'][] = "_domain_menus_menu_form_submit";
}
}
}
// Make add menu link use Domain Menus autocomplete selection handler that filters by domain.
if (!empty(_domain_menus_get_setting('domain_menus_filter_node_autocomplete'))) {
if ($form_id == 'menu_link_content_menu_link_content_form') {
$menu_link_content = $form_state
->getFormObject()
->getEntity();
$menu_name = $menu_link_content
->getMenuName();
$menu = Menu::load($menu_name);
if (_domain_menus_is_domain_menu($menu)) {
$type = $form['link']['widget'][0]['uri']['#type'] ?? null;
if ($type == 'entity_autocomplete') {
$domain_id = $menu
->getThirdPartySetting('domain_menus', 'domains');
// Use Drupal\domain_menus\Plugin\EntityReferenceSelection\DomainMenusSelection.
$form['link']['widget'][0]['uri']['#selection_handler'] = 'domain_menus:node';
$form['link']['widget'][0]['uri']['#selection_settings']['domain_id'] = $domain_id;
}
}
}
}
}