From 74e264dd342c9ca1f34195dc04c4bcce3026c805 Mon Sep 17 00:00:00 2001
From: ahmad-alyasaki <a.alyasaki@sprintive.com>
Date: Wed, 9 Oct 2024 16:20:02 +0300
Subject: [PATCH 1/7] Issue #3479645: Customize field editing text

---
 config/schema/editing_helper.schema.yml |  7 ++++
 editing_helper.module                   | 49 ++++++++++++++++++++++++-
 2 files changed, 54 insertions(+), 2 deletions(-)
 create mode 100755 config/schema/editing_helper.schema.yml

diff --git a/config/schema/editing_helper.schema.yml b/config/schema/editing_helper.schema.yml
new file mode 100755
index 0000000..b3a9ff8
--- /dev/null
+++ b/config/schema/editing_helper.schema.yml
@@ -0,0 +1,7 @@
+field.field.*.*.*.third_party.editing_helper:
+  type: mapping
+  label: "Field settings for tablefield_required"
+  mapping:
+    editing_helper_description:
+      type: string
+      label: "Editing Helper Description"
diff --git a/editing_helper.module b/editing_helper.module
index 2ff31a5..f7c42e9 100644
--- a/editing_helper.module
+++ b/editing_helper.module
@@ -6,7 +6,9 @@
  */
 
 use Drupal\block_content\BlockContentInterface;
+use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Routing\RouteMatchInterface;
+use Drupal\field\Entity\FieldConfig;
 
 /**
  * Implements hook_help().
@@ -20,6 +22,46 @@ function editing_helper_help($route_name, RouteMatchInterface $route_match) {
   }
 }
 
+/**
+ * Implements hook_form_FORM_ID_alter().
+ */
+function editing_helper_form_field_config_edit_form_alter(array &$form, FormStateInterface $form_state) {
+  /** @var \Drupal\field\Entity\FieldConfig $field_config */
+  $field_config = $form_state->getFormObject()->getEntity();
+
+  $editing_helper_description = $field_config->getThirdPartySettings('editing_helper');
+
+  $form['editing_helper_description'] = [
+    '#type' => 'textarea',
+    '#title' => t('Editing Helper Description.'),
+    '#default_value' => $editing_helper_description["editing_helper_description"] ?? '',
+    '#description' => t('Instructions to present to the user below this field on the editing form.
+    Allowed HTML tags'),
+  ];
+
+  $form['#entity_builders'][] = 'editing_helper_form_builder';
+}
+
+/**
+ * Update the field configuration once form is saved.
+ *
+ * @param \Drupal\field\Entity\FieldConfig $config
+ *   The field configuration entity.
+ * @param array $form
+ *   The complete form array.
+ * @param \Drupal\Core\Form\FormStateInterface $form_state
+ *   The current state of the form.
+ */
+function editing_helper_form_builder(FieldConfig $config, array &$form, FormStateInterface $form_state) {
+
+  $editing_helper_description = $form_state->getValue('editing_helper_description');
+  if ($editing_helper_description) {
+    $config->setThirdPartySetting('editing_helper', 'editing_helper_description', $editing_helper_description);
+    return;
+  }
+  $config->unsetThirdPartySetting('editing_helper', 'editing_helper_description');
+}
+
 /**
  * Implements hook_preprocess_block().
  */
@@ -34,7 +76,7 @@ function editing_helper_preprocess_block(array &$variables) {
 
   // Check if the block is a field or views block.
   if ($plugin_id) {
-    [$block_type, $block_info] = explode(':', $plugin_id) + [NULL, NULL];
+    [$block_type, $block_info, $block_bundle, $block_field] = explode(':', $plugin_id) + [NULL, NULL];
 
     switch ($block_type) {
       case 'block_content':
@@ -47,8 +89,11 @@ function editing_helper_preprocess_block(array &$variables) {
         break;
 
       case 'field_block':
+        $field_config = FieldConfig::loadByName($block_info, $block_bundle, $block_field);
+        $editing_helper_description = $field_config->getThirdPartySettings('editing_helper');
+
         $variables["attributes"]["class"][] = "editing-helper-block editing-helper-field";
-        $help_text = $config->get('view_field_text');
+        $help_text = !empty($editing_helper_description) ? $editing_helper_description["editing_helper_description"] : $config->get('view_field_text');
         break;
 
       case 'views_block':
-- 
GitLab


From b4ae0e51cdda7c742e1aa8f8f1b6f6d45db911bf Mon Sep 17 00:00:00 2001
From: ahmad-alyasaki <a.alyasaki@sprintive.com>
Date: Wed, 9 Oct 2024 16:46:31 +0300
Subject: [PATCH 2/7] Issue #3479653: Add default config description for views

---
 editing_helper.module                  | 12 +++++++++++-
 src/Form/HelpDescriptionConfigForm.php | 13 +++++++++++++
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/editing_helper.module b/editing_helper.module
index f7c42e9..3e510d9 100644
--- a/editing_helper.module
+++ b/editing_helper.module
@@ -105,6 +105,16 @@ function editing_helper_preprocess_block(array &$variables) {
           // Get the current display.
           $display = $view->getDisplay($view_display);
 
+          switch ($view->get('base_field')) {
+            case 'nid':
+              $help_default_text = $config->get('view_node_text');
+              break;
+
+            case 'tid':
+              $help_default_text = $config->get('view_taxonomy_text');
+              break;
+          }
+
           $extenders = $display["display_options"]["display_extenders"]["editing_helper_display_extender"];
           if (!isset($extenders)) {
             return;
@@ -112,7 +122,7 @@ function editing_helper_preprocess_block(array &$variables) {
 
           // Retrieve the settings of our plugins using our custom plugin method.
           $description_values = $extenders["view_description_helper"]["description"];
-          $help_text = $description_values;
+          $help_text = !empty($description_values) ? $description_values : $help_default_text;
         }
         break;
     }
diff --git a/src/Form/HelpDescriptionConfigForm.php b/src/Form/HelpDescriptionConfigForm.php
index 2583fb0..0ae8c1c 100644
--- a/src/Form/HelpDescriptionConfigForm.php
+++ b/src/Form/HelpDescriptionConfigForm.php
@@ -64,6 +64,17 @@ class HelpDescriptionConfigForm extends ConfigFormBase {
       '#title' => $this->t('View Field Text'),
       '#default_value' => $config->get('view_field_text'),
     ];
+    $form['help_config']['view_node_text'] = [
+      '#type' => 'textarea',
+      '#title' => $this->t('View Node Text'),
+      '#default_value' => $config->get('view_node_text'),
+    ];
+    $form['help_config']['view_taxonomy_text'] = [
+      '#type' => 'textarea',
+      '#title' => $this->t('View Taxonomy Term Text'),
+      '#default_value' => $config->get('view_taxonomy_text'),
+    ];
+
     return parent::buildForm($form, $form_state);
   }
 
@@ -82,6 +93,8 @@ class HelpDescriptionConfigForm extends ConfigFormBase {
       ->set('block_inline_text', $form_state->getValue('block_inline_text'))
       ->set('block_reusable_text', $form_state->getValue('block_reusable_text'))
       ->set('view_field_text', $form_state->getValue('view_field_text'))
+      ->set('view_node_text', $form_state->getValue('view_node_text'))
+      ->set('view_taxonomy_text', $form_state->getValue('view_taxonomy_text'))
       ->save();
     $this->messenger()->addStatus($this->t("Seeds Layout configuration has been saved successfully"));
   }
-- 
GitLab


From d31cab50fe1ee7f63109402c3b6b1ba975307033 Mon Sep 17 00:00:00 2001
From: ahmad-alyasaki <a.alyasaki@sprintive.com>
Date: Wed, 9 Oct 2024 17:02:14 +0300
Subject: [PATCH 3/7] Issue #3479663: Ability to add custom text instead of the
 static one

---
 editing_helper.module                  | 3 ++-
 src/Form/HelpDescriptionConfigForm.php | 7 +++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/editing_helper.module b/editing_helper.module
index 3e510d9..0c9f229 100644
--- a/editing_helper.module
+++ b/editing_helper.module
@@ -130,6 +130,7 @@ function editing_helper_preprocess_block(array &$variables) {
 
   // Add the help wrapper with the computed help text.
   if (!empty($help_text) && $current_user->hasPermission('access to editing helper')) {
+    $block_title = (string) $config->get('block_title');
     $variables['title_prefix']['help_wrapper'] = [
       '#type' => 'container',
       '#attributes' => ['class' => ['help-wrapper']],
@@ -137,7 +138,7 @@ function editing_helper_preprocess_block(array &$variables) {
       'toggle_help_button' => [
         '#type' => 'html_tag',
         '#tag' => 'button',
-        '#value' => t('Want Help!'),
+        '#value' => $block_title ? $block_title : t('Want Help!'),
         '#attributes' => [
           'class' => ['toggle-help'],
           'type' => 'button',
diff --git a/src/Form/HelpDescriptionConfigForm.php b/src/Form/HelpDescriptionConfigForm.php
index 0ae8c1c..de00ae2 100644
--- a/src/Form/HelpDescriptionConfigForm.php
+++ b/src/Form/HelpDescriptionConfigForm.php
@@ -49,6 +49,12 @@ class HelpDescriptionConfigForm extends ConfigFormBase {
       '#tree' => FALSE,
     ];
 
+    $form['help_config']['block_title'] = [
+      '#type' => 'textfield',
+      '#title' => $this->t('Block Title'),
+      '#default_value' => $config->get('block_title'),
+    ];
+
     $form['help_config']['block_inline_text'] = [
       '#type' => 'textarea',
       '#title' => $this->t('Block Inline Text'),
@@ -90,6 +96,7 @@ class HelpDescriptionConfigForm extends ConfigFormBase {
    */
   public function submitForm(array &$form, FormStateInterface $form_state) {
     $this->config('editing_helper.help_config')
+      ->set('block_title', $form_state->getValue('block_title'))
       ->set('block_inline_text', $form_state->getValue('block_inline_text'))
       ->set('block_reusable_text', $form_state->getValue('block_reusable_text'))
       ->set('view_field_text', $form_state->getValue('view_field_text'))
-- 
GitLab


From 9bd92a5590bc5f7a0048f13a556d30acb6ba8808 Mon Sep 17 00:00:00 2001
From: ahmad-alyasaki <a.alyasaki@sprintive.com>
Date: Thu, 10 Oct 2024 10:43:54 +0300
Subject: [PATCH 4/7] Issue #3479817: Uncaught PHP Exception Error: "Call to a
 member function getThirdPartySettings() on null"

---
 editing_helper.module | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/editing_helper.module b/editing_helper.module
index 0c9f229..5d9a126 100644
--- a/editing_helper.module
+++ b/editing_helper.module
@@ -90,10 +90,12 @@ function editing_helper_preprocess_block(array &$variables) {
 
       case 'field_block':
         $field_config = FieldConfig::loadByName($block_info, $block_bundle, $block_field);
-        $editing_helper_description = $field_config->getThirdPartySettings('editing_helper');
+        if (!is_null($field_config)) {
+          $editing_helper_description = $field_config->getThirdPartySettings('editing_helper');
 
-        $variables["attributes"]["class"][] = "editing-helper-block editing-helper-field";
-        $help_text = !empty($editing_helper_description) ? $editing_helper_description["editing_helper_description"] : $config->get('view_field_text');
+          $variables["attributes"]["class"][] = "editing-helper-block editing-helper-field";
+          $help_text = !empty($editing_helper_description) ? $editing_helper_description["editing_helper_description"] : $config->get('view_field_text');
+        }
         break;
 
       case 'views_block':
-- 
GitLab


From 4b875970728cfdcf430989fcd22895b4b585107f Mon Sep 17 00:00:00 2001
From: Mohammad AbulQader <mohd@sprintive.con>
Date: Tue, 29 Oct 2024 21:36:12 +0300
Subject: [PATCH 5/7] Issue #3484458 by hamzadwaya: Delete Console.error from
 js

---
 assets/js/editing-helper.js | 2 --
 1 file changed, 2 deletions(-)

diff --git a/assets/js/editing-helper.js b/assets/js/editing-helper.js
index fe3ecf0..79231cf 100644
--- a/assets/js/editing-helper.js
+++ b/assets/js/editing-helper.js
@@ -41,8 +41,6 @@
             // Mark the element as having the event listener attached
             parentElement.setAttribute("data-listener-attached", "true");
           }
-        } else {
-          console.error("Help content not found within the parent element!");
         }
       });
     },
-- 
GitLab


From debb846f9c7b7a8b2c083d8d1e66ecc941e2ed26 Mon Sep 17 00:00:00 2001
From: hamza dwaya <60245-hamzadwaya@users.noreply.drupalcode.org>
Date: Wed, 30 Oct 2024 12:41:57 +0000
Subject: [PATCH 6/7] Update file editing_helper.module

---
 editing_helper.module | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/editing_helper.module b/editing_helper.module
index 5d9a126..85cc2af 100644
--- a/editing_helper.module
+++ b/editing_helper.module
@@ -76,8 +76,8 @@ function editing_helper_preprocess_block(array &$variables) {
 
   // Check if the block is a field or views block.
   if ($plugin_id) {
-    [$block_type, $block_info, $block_bundle, $block_field] = explode(':', $plugin_id) + [NULL, NULL];
-
+    $parts = explode(':', $plugin_id) + [NULL, NULL, NULL, NULL];
+    [$block_type, $block_info, $block_bundle, $block_field] = $parts;
     switch ($block_type) {
       case 'block_content':
         $variables["attributes"]["class"][] = "editing-helper-block editing-helper-block-content";
-- 
GitLab


From e83609e72db5fdf69defef59b27c254a90d48a81 Mon Sep 17 00:00:00 2001
From: hamza dwaya <60245-hamzadwaya@users.noreply.drupalcode.org>
Date: Wed, 30 Oct 2024 14:36:51 +0000
Subject: [PATCH 7/7] Issue #3484610: Fix Warning Message Warning: Undefined
 array key 3 in editing_helper_preprocess_block

---
 editing_helper.module | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/editing_helper.module b/editing_helper.module
index 85cc2af..862b6a2 100644
--- a/editing_helper.module
+++ b/editing_helper.module
@@ -76,8 +76,7 @@ function editing_helper_preprocess_block(array &$variables) {
 
   // Check if the block is a field or views block.
   if ($plugin_id) {
-    $parts = explode(':', $plugin_id) + [NULL, NULL, NULL, NULL];
-    [$block_type, $block_info, $block_bundle, $block_field] = $parts;
+    [$block_type, $block_info, $block_bundle, $block_field] = explode(':', $plugin_id) + [NULL, NULL, NULL, NULL];
     switch ($block_type) {
       case 'block_content':
         $variables["attributes"]["class"][] = "editing-helper-block editing-helper-block-content";
-- 
GitLab