diff --git a/config/install/simplify.global.yml b/config/install/simplify.global.yml index d7b3d1c12990cad346d07630326dbe82b9f332d2..9d99f148ec3ba1d37b5146a2e1091d1283b43d93 100644 --- a/config/install/simplify.global.yml +++ b/config/install/simplify.global.yml @@ -4,5 +4,6 @@ simplify_users_global: [] simplify_comments_global: [] simplify_eck_global: [] simplify_taxonomies_global: [] +simplify_menu_links_global: [] simplify_blocks_global: [] simplify_profiles_global: [] diff --git a/config/schema/simplify.schema.yml b/config/schema/simplify.schema.yml index 1cc163332a824914b70ee13b805aa12877390d19..e1c0a8603105201e02fe16c407a67691b6471b06 100644 --- a/config/schema/simplify.schema.yml +++ b/config/schema/simplify.schema.yml @@ -35,6 +35,12 @@ simplify.global: sequence: type: string label: 'Taxonomy setting' + simplify_menu_links_global: + type: sequence + label: 'Menu links settings' + sequence: + type: string + label: 'Menu link setting' simplify_blocks_global: type: sequence label: 'Blocks settings' diff --git a/simplify.module b/simplify.module index 1ca6d20f213da9eee4430286119abe569d43dbd6..69139b19d046833fb0bb6d6f666c798a50f40c99 100644 --- a/simplify.module +++ b/simplify.module @@ -289,6 +289,35 @@ function simplify_form_taxonomy_term_form_alter(&$form, FormStateInterface $form simplify_hide_fields($fields, $form); } +/** + * Implements hook_form_FORM_ID_alter() for menu_link_content_form(). + */ +function simplify_form_menu_link_edit_alter(&$form, FormStateInterface $form_state) { + simplify_form_menu_link_content_form_alter($form, $form_state); +} + +/** + * Implements hook_form_BASE_FORM_ID_alter() for menu_link_content_form(). + * + * Overrides the menu link creation form to hide elements depending on settings. + */ +function simplify_form_menu_link_content_form_alter(&$form, FormStateInterface $form_state) { + $form['#after_build'][] = 'simplify_form_menu_link_content_form_after_build'; +} + +/** + * Helper to hide fields after executing theme hooks. + */ +function simplify_form_menu_link_content_form_after_build(array $form) { + // Get array of fields to hide. + $fields = _simplify_get_config_value('simplify_menu_links_global'); + + // Hide fields. + simplify_hide_fields($fields, $form); + + return $form; +} + /** * Implements hook_form_FORM_ID_alter() for block_add_block_form(). * @@ -512,6 +541,13 @@ function simplify_get_fields($type) { } break; + // Menu links. + case 'menu_links': + $fields['menu_parent'] = t('Parent link'); + $fields['menu_link_description'] = t('Description'); + $fields['menu_link_display_settings'] = t('Display settings'); + break; + // Blocks. case 'blocks': // Drupal core: @@ -602,6 +638,24 @@ function simplify_hide_field(string $field, array &$form) { $form['revision_information']['#attributes']['class'][] = 'visually-hidden'; break; + // Menu parent. + case 'menu_parent': + $form['menu_parent']['#wrapper_attributes']['class'][] = 'visually-hidden'; + $form['menu_parent']['#group'] = ''; + break; + + // Menu description. + case 'menu_link_description': + $form['menu_link_description']['#wrapper_attributes']['class'][] = 'visually-hidden'; + $form['menu_link_description']['#group'] = ''; + break; + + // Menu dsiplay settings. + case 'menu_link_display_settings': + $form['menu_link_display_settings']['#wrapper_attributes']['class'][] = 'visually-hidden'; + $form['menu_link_display_settings']['#group'] = ''; + break; + default: $form[$field]['#attributes']['class'][] = 'visually-hidden'; } diff --git a/src/Form/SimplifyAdminForm.php b/src/Form/SimplifyAdminForm.php index 7c68287baa71e0294952534332496cb8bf09cd46..6a1b08425f3d4001964e6018e822ad3791dec861 100644 --- a/src/Form/SimplifyAdminForm.php +++ b/src/Form/SimplifyAdminForm.php @@ -134,6 +134,22 @@ class SimplifyAdminForm extends ConfigFormBase { ]; } + // Menu links. + if ($this->moduleHandler->moduleExists('menu_link_content')) { + $form['menu'] = [ + '#type' => 'details', + '#title' => $this->t('Menu link'), + '#description' => $this->t("These fields will be hidden from <em>all</em> menu link forms."), + '#open' => TRUE, + ]; + $form['menu']['simplify_menu_links_global'] = [ + '#type' => 'checkboxes', + '#title' => $this->t('Simplify the following options'), + '#options' => simplify_get_fields('menu_links'), + '#default_value' => _simplify_get_config_value('simplify_menu_links_global'), + ]; + } + // Blocks. if ($this->moduleHandler->moduleExists('block')) { $form['blocks'] = [ @@ -191,6 +207,8 @@ class SimplifyAdminForm extends ConfigFormBase { $this->getFormValue($form_state, 'simplify_eck_global')))) ->set('simplify_taxonomies_global', array_keys(array_filter( $this->getFormValue($form_state, 'simplify_taxonomies_global')))) + ->set('simplify_menu_links_global', array_keys(array_filter( + $this->getFormValue($form_state, 'simplify_menu_links_global')))) ->set('simplify_blocks_global', array_keys(array_filter( $this->getFormValue($form_state, 'simplify_blocks_global')))) ->set('simplify_profiles_global', array_keys(array_filter(