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