Fix the retrieval of the contents of a CKEditor form field
authorAlexander Ebert <ebert@woltlab.com>
Tue, 9 May 2023 14:19:41 +0000 (16:19 +0200)
committerAlexander Ebert <ebert@woltlab.com>
Tue, 9 May 2023 14:19:41 +0000 (16:19 +0200)
Fixes #5480

ts/WoltLabSuite/Core/Form/Builder/Field/Ckeditor.ts [new file with mode: 0644]
wcfsetup/install/files/js/WoltLabSuite/Core/Form/Builder/Field/Ckeditor.js [new file with mode: 0644]
wcfsetup/install/files/lib/system/form/builder/field/wysiwyg/WysiwygFormField.class.php

diff --git a/ts/WoltLabSuite/Core/Form/Builder/Field/Ckeditor.ts b/ts/WoltLabSuite/Core/Form/Builder/Field/Ckeditor.ts
new file mode 100644 (file)
index 0000000..e7ff2eb
--- /dev/null
@@ -0,0 +1,29 @@
+/**
+ * Data handler for CKEditor.
+ *
+ * @author Alexander Ebert
+ * @copyright 2001-2023 WoltLab GmbH
+ * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @since 6.0
+ */
+
+import Field from "./Field";
+import { FormBuilderData } from "../Data";
+import { dispatchToCkeditor } from "WoltLabSuite/Core/Component/Ckeditor/Event";
+import { getCkeditorById } from "WoltLabSuite/Core/Component/Ckeditor";
+
+export class Ckeditor extends Field {
+  protected _getData(): FormBuilderData {
+    const ckeditor = getCkeditorById(this._fieldId)!;
+
+    return {
+      [this._fieldId]: ckeditor.getHtml(),
+    };
+  }
+
+  destroy(): void {
+    dispatchToCkeditor(this._field!).destroy();
+  }
+}
+
+export default Ckeditor;
diff --git a/wcfsetup/install/files/js/WoltLabSuite/Core/Form/Builder/Field/Ckeditor.js b/wcfsetup/install/files/js/WoltLabSuite/Core/Form/Builder/Field/Ckeditor.js
new file mode 100644 (file)
index 0000000..113113f
--- /dev/null
@@ -0,0 +1,27 @@
+/**
+ * Data handler for CKEditor.
+ *
+ * @author Alexander Ebert
+ * @copyright 2001-2023 WoltLab GmbH
+ * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @since 6.0
+ */
+define(["require", "exports", "tslib", "./Field", "WoltLabSuite/Core/Component/Ckeditor/Event", "WoltLabSuite/Core/Component/Ckeditor"], function (require, exports, tslib_1, Field_1, Event_1, Ckeditor_1) {
+    "use strict";
+    Object.defineProperty(exports, "__esModule", { value: true });
+    exports.Ckeditor = void 0;
+    Field_1 = tslib_1.__importDefault(Field_1);
+    class Ckeditor extends Field_1.default {
+        _getData() {
+            const ckeditor = (0, Ckeditor_1.getCkeditorById)(this._fieldId);
+            return {
+                [this._fieldId]: ckeditor.getHtml(),
+            };
+        }
+        destroy() {
+            (0, Event_1.dispatchToCkeditor)(this._field).destroy();
+        }
+    }
+    exports.Ckeditor = Ckeditor;
+    exports.default = Ckeditor;
+});
index 1ce91a39c5e81a150d0ab3bab510d5a9fd71fffc..15d88f925311cf56c9d8928539446b6b294184e8 100644 (file)
@@ -89,7 +89,7 @@ final class WysiwygFormField extends AbstractFormField implements
     /**
      * @inheritDoc
      */
-    protected $javaScriptDataHandlerModule = 'WoltLabSuite/Core/Form/Builder/Field/Value';
+    protected $javaScriptDataHandlerModule = 'WoltLabSuite/Core/Form/Builder/Field/Ckeditor';
 
     /**
      * @inheritDoc