From 01bb96feb3604d2ce63959b5154cef22ab39d506 Mon Sep 17 00:00:00 2001
From: AstonVictor <victor93g@gmail.com>
Date: Thu, 17 Apr 2025 11:00:14 +0300
Subject: [PATCH 1/3] Issue #2876574 - Support menu links

---
 config/install/simplify.global.yml |  1 +
 config/schema/simplify.schema.yml  |  6 ++++
 simplify.module                    | 48 ++++++++++++++++++++++++++++++
 src/Form/SimplifyAdminForm.php     | 18 +++++++++++
 4 files changed, 73 insertions(+)

diff --git a/config/install/simplify.global.yml b/config/install/simplify.global.yml
index d7b3d1c..9d99f14 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 1cc1633..e1c0a86 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 1ca6d20..355b0d5 100644
--- a/simplify.module
+++ b/simplify.module
@@ -289,6 +289,29 @@ 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.
+ *
+ * Alters the menu_link_edit form by organizing form elements into different
+ * 'details' sections.
+ */
+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) {
+  // Get array of fields to hide.
+  $fields = _simplify_get_config_value('simplify_menu_links_global');
+
+  // Hide fields.
+  simplify_hide_fields($fields, $form);
+}
+
 /**
  * Implements hook_form_FORM_ID_alter() for block_add_block_form().
  *
@@ -512,6 +535,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 +632,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']['#attributes']['class'][] = 'visually-hidden';
+      $form['menu_parent']['#group'] = '';
+      break;
+
+    // Menu description.
+    case 'menu_link_description':
+      $form['menu_link_description']['#attributes']['class'][] = 'visually-hidden';
+      $form['menu_link_description']['#group'] = '';
+      break;
+
+    // Menu dsiplay settings.
+    case 'menu_link_display_settings':
+      $form['menu_link_display_settings']['#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 7c68287..6a1b084 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(
-- 
GitLab


From 005b75d963690e6f08219ef7ab3ab2dec6ad097a Mon Sep 17 00:00:00 2001
From: AstonVictor <victor93g@gmail.com>
Date: Thu, 17 Apr 2025 11:18:40 +0300
Subject: [PATCH 2/3] Issue #2876574 - Support menu links

---
 simplify.module | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/simplify.module b/simplify.module
index 355b0d5..efccf0a 100644
--- a/simplify.module
+++ b/simplify.module
@@ -305,11 +305,20 @@ function simplify_form_menu_link_edit_alter(&$form, FormStateInterface $form_sta
  * 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;
 }
 
 /**
@@ -634,19 +643,19 @@ function simplify_hide_field(string $field, array &$form) {
 
     // Menu parent.
     case 'menu_parent':
-      $form['menu_parent']['#attributes']['class'][] = 'visually-hidden';
+      $form['menu_parent']['#wrapper_attributes']['class'][] = 'visually-hidden';
       $form['menu_parent']['#group'] = '';
       break;
 
     // Menu description.
     case 'menu_link_description':
-      $form['menu_link_description']['#attributes']['class'][] = 'visually-hidden';
+      $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']['#attributes']['class'][] = 'visually-hidden';
+      $form['menu_link_display_settings']['#wrapper_attributes']['class'][] = 'visually-hidden';
       $form['menu_link_display_settings']['#group'] = '';
       break;
 
-- 
GitLab


From 1c62108d4140a218299702d2a3f322770040fd73 Mon Sep 17 00:00:00 2001
From: AstonVictor <victor93g@gmail.com>
Date: Thu, 17 Apr 2025 12:50:20 +0300
Subject: [PATCH 3/3] Issue #2876574 - Update comment

---
 simplify.module | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/simplify.module b/simplify.module
index efccf0a..69139b1 100644
--- a/simplify.module
+++ b/simplify.module
@@ -290,10 +290,7 @@ function simplify_form_taxonomy_term_form_alter(&$form, FormStateInterface $form
 }
 
 /**
- * Implements hook_form_FORM_ID_alter() for menu_link_content_form.
- *
- * Alters the menu_link_edit form by organizing form elements into different
- * 'details' sections.
+ * 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);
-- 
GitLab