From fe47919c0b9000b87ff84334bb5a6d874161f836 Mon Sep 17 00:00:00 2001
From: Scott Euser <scotteuser@gmail.com>
Date: Sat, 19 Apr 2025 10:43:35 +0100
Subject: [PATCH 1/2] Fix plugins to have accurate parents

---
 .../src/Plugin/AiContentSuggestions/Readability.php       | 4 ++--
 .../src/Plugin/AiContentSuggestions/Summarise.php         | 4 ++--
 .../src/Plugin/AiContentSuggestions/Taxonomy.php          | 6 +++---
 .../src/Plugin/AiContentSuggestions/Title.php             | 4 ++--
 .../src/Plugin/AiContentSuggestions/Tone.php              | 8 ++++----
 5 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Readability.php b/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Readability.php
index 80e6730a3..1a74036c2 100644
--- a/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Readability.php
+++ b/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Readability.php
@@ -83,7 +83,7 @@ final class Readability extends AiContentSuggestionsPluginBase {
       '#type' => 'textarea',
       '#required' => TRUE,
       '#default_value' => $prompt ?? $this->defaultPrompt . PHP_EOL,
-      '#parents' => [$this->getPluginId(), $this->getPluginId() . '_prompt'],
+      '#parents' => ['plugins', $this->getPluginId(), $this->getPluginId() . '_prompt'],
       '#states' => [
         'visible' => [
           ':input[name="' . $this->getPluginId() . '[' . $this->getPluginId() . '_enabled' . ']"]' => ['checked' => TRUE],
@@ -96,7 +96,7 @@ final class Readability extends AiContentSuggestionsPluginBase {
    * {@inheritdoc}
    */
   public function saveSettingsForm(array &$form, FormStateInterface $form_state): void {
-    $value = $form_state->getValue($this->getPluginId());
+    $value = $form_state->getValue(['plugins', $this->getPluginId()]);
     $prompt = $value[$this->getPluginId() . '_prompt'];
     $this->promptConfig->set($this->getPluginId(), $prompt)->save();
   }
diff --git a/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Summarise.php b/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Summarise.php
index 1d6e58d17..4b35df568 100644
--- a/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Summarise.php
+++ b/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Summarise.php
@@ -69,7 +69,7 @@ final class Summarise extends AiContentSuggestionsPluginBase {
       '#type' => 'textarea',
       '#required' => TRUE,
       '#default_value' => $prompt ?? $this->defaultPrompt . PHP_EOL,
-      '#parents' => [$this->getPluginId(), $this->getPluginId() . '_prompt'],
+      '#parents' => ['plugins', $this->getPluginId(), $this->getPluginId() . '_prompt'],
       '#states' => [
         'visible' => [
           ':input[name="' . $this->getPluginId() . '[' . $this->getPluginId() . '_enabled' . ']"]' => ['checked' => TRUE],
@@ -82,7 +82,7 @@ final class Summarise extends AiContentSuggestionsPluginBase {
    * {@inheritdoc}
    */
   public function saveSettingsForm(array &$form, FormStateInterface $form_state): void {
-    $value = $form_state->getValue($this->getPluginId());
+    $value = $form_state->getValue(['plugins', $this->getPluginId()]);
     $prompt = $value[$this->getPluginId() . '_prompt'];
     $this->promptConfig->set($this->getPluginId(), $prompt)->save();
   }
diff --git a/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Taxonomy.php b/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Taxonomy.php
index 70eba2203..2a16d6237 100644
--- a/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Taxonomy.php
+++ b/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Taxonomy.php
@@ -134,7 +134,7 @@ final class Taxonomy extends AiContentSuggestionsPluginBase {
       '#type' => 'textarea',
       '#required' => TRUE,
       '#default_value' => $prompt ?? $this->defaultOpenPrompt . PHP_EOL,
-      '#parents' => [$this->getPluginId(), $this->getPluginId() . '_prompt_open'],
+      '#parents' => ['plugins', $this->getPluginId(), $this->getPluginId() . '_prompt_open'],
       '#states' => [
         'visible' => [
           ':input[name="' . $this->getPluginId() . '[' . $this->getPluginId() . '_enabled' . ']"]' => ['checked' => TRUE],
@@ -147,7 +147,7 @@ final class Taxonomy extends AiContentSuggestionsPluginBase {
       '#type' => 'textarea',
       '#required' => TRUE,
       '#default_value' => $prompt ?? $this->defaultFromVocPrompt . PHP_EOL,
-      '#parents' => [$this->getPluginId(), $this->getPluginId() . '_prompt_from_voc'],
+      '#parents' => ['plugins', $this->getPluginId(), $this->getPluginId() . '_prompt_from_voc'],
       '#states' => [
         'visible' => [
           ':input[name="' . $this->getPluginId() . '[' . $this->getPluginId() . '_enabled' . ']"]' => ['checked' => TRUE],
@@ -160,7 +160,7 @@ final class Taxonomy extends AiContentSuggestionsPluginBase {
    * {@inheritdoc}
    */
   public function saveSettingsForm(array &$form, FormStateInterface $form_state): void {
-    $value = $form_state->getValue($this->getPluginId());
+    $value = $form_state->getValue(['plugins', $this->getPluginId()]);
     $prompt_open = $value[$this->getPluginId() . '_prompt_open'];
     $this->promptConfig->set($this->getPluginId() . '_open', $prompt_open)->save();
     $prompt_from_voc = $value[$this->getPluginId() . '_prompt_from_voc'];
diff --git a/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Title.php b/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Title.php
index 3bc9e7628..c41721838 100644
--- a/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Title.php
+++ b/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Title.php
@@ -69,7 +69,7 @@ final class Title extends AiContentSuggestionsPluginBase {
       '#type' => 'textarea',
       '#required' => TRUE,
       '#default_value' => $prompt ?? $this->defaultPrompt . PHP_EOL,
-      '#parents' => [$this->getPluginId(), $this->getPluginId() . '_prompt'],
+      '#parents' => ['plugins', $this->getPluginId(), $this->getPluginId() . '_prompt'],
       '#states' => [
         'visible' => [
           ':input[name="' . $this->getPluginId() . '[' . $this->getPluginId() . '_enabled' . ']"]' => ['checked' => TRUE],
@@ -82,7 +82,7 @@ final class Title extends AiContentSuggestionsPluginBase {
    * {@inheritdoc}
    */
   public function saveSettingsForm(array &$form, FormStateInterface $form_state): void {
-    $value = $form_state->getValue($this->getPluginId());
+    $value = $form_state->getValue(['plugins', $this->getPluginId()]);
     $prompt = $value[$this->getPluginId() . '_prompt'];
     $this->promptConfig->set($this->getPluginId(), $prompt)->save();
   }
diff --git a/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Tone.php b/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Tone.php
index 58a9a6ee5..c5233b7b7 100644
--- a/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Tone.php
+++ b/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Tone.php
@@ -199,7 +199,7 @@ final class Tone extends AiContentSuggestionsPluginBase {
       '#type' => 'textarea',
       '#required' => TRUE,
       '#default_value' => $prompt ?? $this->defaultPrompt . PHP_EOL,
-      '#parents' => [$this->getPluginId(), $this->getPluginId() . '_prompt'],
+      '#parents' => ['plugins', $this->getPluginId(), $this->getPluginId() . '_prompt'],
       '#states' => [
         'visible' => [
           ':input[name="' . $this->getPluginId() . '[' . $this->getPluginId() . '_enabled' . ']"]' => ['checked' => TRUE],
@@ -213,7 +213,7 @@ final class Tone extends AiContentSuggestionsPluginBase {
       $vocabulary_options[$vocabulary->id()] = $vocabulary->label();
     }
     $form[$this->getPluginId()][$this->getPluginId() . '_taxonomy_enabled'] = [
-      '#parents' => [$this->getPluginId(), $this->getPluginId() . '_taxonomy_enabled'],
+      '#parents' => ['plugins', $this->getPluginId(), $this->getPluginId() . '_taxonomy_enabled'],
       '#type' => 'checkbox',
       '#title' => $this->t('Choose own vocabulary for tone of voice options.'),
       '#description' => $this->t('Keeping this unselected falls back to default tone of voice options (Friendly, Professional, High school, College, Five year old).'),
@@ -226,7 +226,7 @@ final class Tone extends AiContentSuggestionsPluginBase {
     ];
 
     $form[$this->getPluginId()][$this->getPluginId() . '_taxonomy'] = [
-      '#parents' => [$this->getPluginId(), $this->getPluginId() . '_taxonomy'],
+      '#parents' => ['plugins', $this->getPluginId(), $this->getPluginId() . '_taxonomy'],
       '#type' => 'select',
       '#title' => $this->t('Choose vocabulary for tone options'),
       '#options' => $vocabulary_options,
@@ -245,7 +245,7 @@ final class Tone extends AiContentSuggestionsPluginBase {
    * {@inheritdoc}
    */
   public function saveSettingsForm(array &$form, FormStateInterface $form_state): void {
-    $value = $form_state->getValue($this->getPluginId());
+    $value = $form_state->getValue(['plugins', $this->getPluginId()]);
     $taxonomy = $value[$this->getPluginId() . '_taxonomy'];
     $this->toneConfig->set($this->getPluginId() . '_taxonomy', $taxonomy)->save();
     $taxonomy_enabled = $value[$this->getPluginId() . '_taxonomy_enabled'];
-- 
GitLab


From 88e8a903679c163b6ed15a2c97aee0ed38e488c7 Mon Sep 17 00:00:00 2001
From: Scott Euser <scotteuser@gmail.com>
Date: Sat, 19 Apr 2025 10:44:37 +0100
Subject: [PATCH 2/2] Nitpick that doesn't deserve its own issue

---
 .../src/Plugin/AiContentSuggestions/Title.php                   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Title.php b/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Title.php
index c41721838..0138d4bab 100644
--- a/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Title.php
+++ b/modules/ai_content_suggestions/src/Plugin/AiContentSuggestions/Title.php
@@ -65,7 +65,7 @@ final class Title extends AiContentSuggestionsPluginBase {
     parent::buildSettingsForm($form);
     $prompt = $this->promptConfig->get($this->getPluginId());
     $form[$this->getPluginId()][$this->getPluginId() . '_prompt'] = [
-      '#title' => $this->t('suggest Title prompt', []),
+      '#title' => $this->t('Suggest Title prompt', []),
       '#type' => 'textarea',
       '#required' => TRUE,
       '#default_value' => $prompt ?? $this->defaultPrompt . PHP_EOL,
-- 
GitLab