From c339c931f68696895f66755289f323f8ad859bf9 Mon Sep 17 00:00:00 2001 From: i-just Date: Thu, 30 Oct 2025 12:23:21 +0100 Subject: [PATCH 1/7] handle propagate required --- src/Field.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Field.php b/src/Field.php index 3ba2eb9..2f5c750 100644 --- a/src/Field.php +++ b/src/Field.php @@ -372,6 +372,7 @@ private static function adjustFieldValues( } if ($resave) { + $owner->propagateRequired = false; Craft::$app->getElements()->saveElement($owner, false, $propagate, false); } } @@ -1881,4 +1882,12 @@ public function setEnableSourceEditingForNonAdmins(bool $value): void { $this->sourceEditingGroups = $value ? '*' : ['__ADMINS__']; } + + /** + * @inheritdoc + */ + public function handlePropagateRequired(ElementInterface $element, ElementInterface $siteElement): void + { + self::entryManager($this)->duplicateNestedElements($element, $siteElement, force: true); + } } From b0f3e83215e95e04a6d546575f79dc06032dbf1d Mon Sep 17 00:00:00 2001 From: i-just Date: Thu, 30 Oct 2025 12:38:18 +0100 Subject: [PATCH 2/7] propagate required only for cms 5.9.0+ --- src/Field.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Field.php b/src/Field.php index 2f5c750..45f5cff 100644 --- a/src/Field.php +++ b/src/Field.php @@ -372,7 +372,9 @@ private static function adjustFieldValues( } if ($resave) { - $owner->propagateRequired = false; + if (version_compare(Craft::$app->getVersion(), '5.9.0', '>=')) { + $owner->propagateRequired = false; + } Craft::$app->getElements()->saveElement($owner, false, $propagate, false); } } @@ -1888,6 +1890,8 @@ public function setEnableSourceEditingForNonAdmins(bool $value): void */ public function handlePropagateRequired(ElementInterface $element, ElementInterface $siteElement): void { - self::entryManager($this)->duplicateNestedElements($element, $siteElement, force: true); + if (version_compare(Craft::$app->getVersion(), '5.9.0', '>=')) { + self::entryManager($this)->duplicateNestedElements($element, $siteElement, force: true); + } } } From 9ec6994f4dee70cc2bc65f1cddde06962e00d138 Mon Sep 17 00:00:00 2001 From: i-just Date: Thu, 30 Oct 2025 12:55:09 +0100 Subject: [PATCH 3/7] phpstan --- src/Field.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Field.php b/src/Field.php index 45f5cff..1fac635 100644 --- a/src/Field.php +++ b/src/Field.php @@ -373,6 +373,7 @@ private static function adjustFieldValues( if ($resave) { if (version_compare(Craft::$app->getVersion(), '5.9.0', '>=')) { + /** @phpstan-ignore-next-line */ $owner->propagateRequired = false; } Craft::$app->getElements()->saveElement($owner, false, $propagate, false); @@ -1891,6 +1892,7 @@ public function setEnableSourceEditingForNonAdmins(bool $value): void public function handlePropagateRequired(ElementInterface $element, ElementInterface $siteElement): void { if (version_compare(Craft::$app->getVersion(), '5.9.0', '>=')) { + /** @phpstan-ignore-next-line */ self::entryManager($this)->duplicateNestedElements($element, $siteElement, force: true); } } From 6800749a58f200afd642bdc8c04756806f83d319 Mon Sep 17 00:00:00 2001 From: i-just Date: Mon, 10 Nov 2025 08:00:21 +0100 Subject: [PATCH 4/7] changed method name --- src/Field.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Field.php b/src/Field.php index 1fac635..fe73e80 100644 --- a/src/Field.php +++ b/src/Field.php @@ -1889,11 +1889,12 @@ public function setEnableSourceEditingForNonAdmins(bool $value): void /** * @inheritdoc */ - public function handlePropagateRequired(ElementInterface $element, ElementInterface $siteElement): void + public function propagateValue(ElementInterface $from, ElementInterface $to): void { + parent::propagateValue($from, $to); if (version_compare(Craft::$app->getVersion(), '5.9.0', '>=')) { /** @phpstan-ignore-next-line */ - self::entryManager($this)->duplicateNestedElements($element, $siteElement, force: true); + self::entryManager($this)->duplicateNestedElements($from, $to, force: true); } } } From d1ef4fd45496c587b4ff701521c80305dbff6283 Mon Sep 17 00:00:00 2001 From: brandonkelly Date: Thu, 20 Nov 2025 15:44:21 -0800 Subject: [PATCH 5/7] Don't do anything special for propagateAll Nested entries will be duplicated regardless of whether the target site has a value when propagateAll is true --- src/Field.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Field.php b/src/Field.php index 55f1692..66779aa 100644 --- a/src/Field.php +++ b/src/Field.php @@ -1915,7 +1915,10 @@ public function setEnableSourceEditingForNonAdmins(bool $value): void public function propagateValue(ElementInterface $from, ElementInterface $to): void { parent::propagateValue($from, $to); - if (version_compare(Craft::$app->getVersion(), '5.9.0', '>=')) { + + if (!$from->propagateAll) { + // NestedElementManager won't duplicate the nested entries automatically, + // because the field has a value in the target site (the HTML content), so isValueEmpty() is false. /** @phpstan-ignore-next-line */ self::entryManager($this)->duplicateNestedElements($from, $to, force: true); } From 0232556a2cff527253d2fd2cace39ac5d9f5ea1b Mon Sep 17 00:00:00 2001 From: brandonkelly Date: Thu, 20 Nov 2025 15:47:02 -0800 Subject: [PATCH 6/7] Release note [ci skip] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ebf688..e19aa61 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Release Notes for CKEditor for Craft CMS +## Unreleased + +- Fixed a bug where CKEditor field values weren’t always getting propagated to other sites (with duplicated nested entries) when creating a new element. ([#479](https://github.com/craftcms/ckeditor/pull/479)) + ## 4.11.0 - 2025-11-19 - Statically-rendered CKEditor fields are now shown in read-only mode. ([#466](https://github.com/craftcms/ckeditor/pull/466)) From 0dd87e70eb2d02952711428f69d1755d15ddfc3a Mon Sep 17 00:00:00 2001 From: brandonkelly Date: Thu, 20 Nov 2025 15:48:01 -0800 Subject: [PATCH 7/7] Ignore parent::propagateValue() --- src/Field.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Field.php b/src/Field.php index 66779aa..e8abfc1 100644 --- a/src/Field.php +++ b/src/Field.php @@ -1914,6 +1914,7 @@ public function setEnableSourceEditingForNonAdmins(bool $value): void */ public function propagateValue(ElementInterface $from, ElementInterface $to): void { + /** @phpstan-ignore-next-line */ parent::propagateValue($from, $to); if (!$from->propagateAll) {