From 27be5f247a033178262a851395b74dfac58b9897 Mon Sep 17 00:00:00 2001
From: psf_ <aaaaa976@gmail.com>
Date: Wed, 11 Sep 2024 15:23:29 +0200
Subject: [PATCH] Fix error by empty script parameters configuration

---
 src/Plugin/Field/FieldWidget/ScriptWidget.php | 23 +++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

diff --git a/src/Plugin/Field/FieldWidget/ScriptWidget.php b/src/Plugin/Field/FieldWidget/ScriptWidget.php
index 8000604..1ac91e5 100644
--- a/src/Plugin/Field/FieldWidget/ScriptWidget.php
+++ b/src/Plugin/Field/FieldWidget/ScriptWidget.php
@@ -76,7 +76,7 @@ class ScriptWidget extends WidgetBase implements ContainerFactoryPluginInterface
    * {@inheritdoc}
    */
   public function settingsForm(array $form, FormStateInterface $form_state): array {
-    $parameters = $this->getSetting('parameters');
+    $parameters = $this->getScriptParameters();
     $parameters = $this->cleanParameters($parameters);
     $element['parameters'] = [
       '#type' => 'multivalue',
@@ -115,7 +115,7 @@ class ScriptWidget extends WidgetBase implements ContainerFactoryPluginInterface
    * {@inheritdoc}
    */
   public function settingsSummary(): array {
-    $parameters = $this->getSetting('parameters');
+    $parameters = $this->getScriptParameters();
     $parameters = $this->cleanParameters($parameters);
     if (empty($parameters)) {
       return [''];
@@ -159,7 +159,7 @@ class ScriptWidget extends WidgetBase implements ContainerFactoryPluginInterface
    * {@inheritdoc}
    */
   public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state): array {
-    $parameters = $this->getSetting('parameters');
+    $parameters = $this->getScriptParameters();
     $parameters = $this->cleanParameters($parameters);
     $element['value'] = $element + [
       '#type' => 'textarea',
@@ -270,7 +270,7 @@ class ScriptWidget extends WidgetBase implements ContainerFactoryPluginInterface
    * Callback to add parameters to javascript runtime.
    */
   public function loadJavascriptParameters() {
-    $parameterFields = $this->getSetting('parameters');
+    $parameterFields = $this->getScriptParameters();
     $parameterFields = $this->cleanParameters($parameterFields);
     foreach ($parameterFields as $parameterField) {
       if (isset($parameterField["name"])) {
@@ -299,4 +299,19 @@ class ScriptWidget extends WidgetBase implements ContainerFactoryPluginInterface
     }
   }
 
+  /**
+   * Get script parameters description.
+   *
+   * @return array
+   *   Parameters array.
+   */
+  protected function getScriptParameters() {
+    $parameters = $this->getSetting('parameters');
+    if (empty($parameters)) {
+      return [];
+    }
+
+    return $parameters;
+  }
+
 }
-- 
GitLab