Skip to content

Commit a582931

Browse files
committed
#419: Nested Links If User Adds Link Attribute & Link Widget to Banner/Slide, backward compatibility, mftf align.
1 parent a4060e0 commit a582931

File tree

4 files changed

+18
-7
lines changed

4 files changed

+18
-7
lines changed

app/code/Magento/PageBuilder/Test/Mftf/Test/AdminPageBuilderBannerCommonTest/BannerCannotHaveInlineWysiwygWidgetAndLinkUrlTest.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@
170170
<argument name="widget" value="TinyMCEWidgetCMSPageLink"/>
171171
<argument name="page" value="$$createCMSPageA.identifier$$"/>
172172
</actionGroup>
173+
<click selector="{{PageBuilderPanel.searchPanel}}" stepKey="unfocusOnInlineWYSIWYGEditorArea"/>
173174
<seeElement selector="{{PageBuilderStage.modal(PageBuilderBannerMessageInvalidWidgetProperty.stageErrorMessage)}}" stepKey="seeNestingWidgetCorrectErrorModal"/>
174175
<actionGroup ref="confirmRemovalModal" stepKey="confirmNestingWidgetModal"/>
175176
<!-- Checks for Widget (placeholder) within the WYSIWYG with regex -->
@@ -188,6 +189,7 @@
188189
<argument name="textToDisplay" value="{{ExternalLink.googleUrl}}"/>
189190
<argument name="wysiwygArea" value=""/>
190191
</actionGroup>
192+
<click selector="{{PageBuilderPanel.searchPanel}}" stepKey="unfocusOnInlineWYSIWYGEditorAreaAddLink"/>
191193
<seeElement selector="{{PageBuilderStage.modal(PageBuilderBannerMessageInvalidProperty.stageErrorMessage)}}" stepKey="seeNestingLinkCorrectErrorModal"/>
192194
<actionGroup ref="confirmRemovalModal" stepKey="confirmNestingLinkModal"/>
193195
<!-- Checks for A tags within the WYSIWYG with regex -->
@@ -218,6 +220,7 @@
218220
<click selector="{{WYSIWYGInsertLinkModal.okButton}}" stepKey="clickInlineWYSIWYGLinkModalOkButton"/>
219221
<waitForElementNotVisible selector="{{WYSIWYGInsertLinkModal.modal}}" stepKey="waitForInlineWYSIWYGInsertLinkModalGone"/>
220222
<waitForPageLoad stepKey="waitForInlineWYSIWYGStorageRoot"/>
223+
<click selector="{{PageBuilderPanel.searchPanel}}" stepKey="unfocusOnInlineWYSIWYGEditorAreaAddImageLink"/>
221224
<seeElement selector="{{PageBuilderStage.modal(PageBuilderBannerMessageInvalidProperty.stageErrorMessage)}}" stepKey="seeNestingImageLinkCorrectErrorModal"/>
222225
<actionGroup ref="confirmRemovalModal" stepKey="confirmNestingImageLinkModal"/>
223226
<!-- Checks for A tags within the TinyMCE with regex -->

app/code/Magento/PageBuilder/Test/Mftf/Test/AdminPageBuilderSlideItemCommonTest/SlideItemCannotHaveInlineWysiwygWidgetAndLinkUrlTest.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@
171171
<argument name="widget" value="TinyMCEWidgetCMSPageLink"/>
172172
<argument name="page" value="$$createCMSPageA.identifier$$"/>
173173
</actionGroup>
174+
<click selector="{{PageBuilderPanel.searchPanel}}" stepKey="unfocusOnInlineWYSIWYGEditorArea"/>
174175
<seeElement selector="{{PageBuilderStage.modal(PageBuilderSlideItemMessageInvalidProperty.stageErrorMessage)}}" stepKey="seeNestingWidgetCorrectErrorModal"/>
175176
<actionGroup ref="confirmRemovalModal" stepKey="confirmNestingWidgetModal"/>
176177
<!-- Checks for Widget (placeholder) within the WYSIWYG with regex -->
@@ -189,6 +190,7 @@
189190
<argument name="textToDisplay" value="{{ExternalLink.googleUrl}}"/>
190191
<argument name="wysiwygArea" value=""/>
191192
</actionGroup>
193+
<click selector="{{PageBuilderPanel.searchPanel}}" stepKey="unfocusOnInlineWYSIWYGEditorAreaAddLink"/>
192194
<seeElement selector="{{PageBuilderStage.modal(PageBuilderSlideItemMessageInvalidProperty.stageErrorMessage)}}" stepKey="seeNestingLinkCorrectErrorModal"/>
193195
<actionGroup ref="confirmRemovalModal" stepKey="confirmNestingLinkModal"/>
194196
<!-- Checks for A tags within the WYSIWYG with regex -->
@@ -219,6 +221,7 @@
219221
<click selector="{{WYSIWYGInsertLinkModal.okButton}}" stepKey="clickInlineWYSIWYGLinkModalOkButton"/>
220222
<waitForElementNotVisible selector="{{WYSIWYGInsertLinkModal.modal}}" stepKey="waitForInlineWYSIWYGInsertLinkModalGone"/>
221223
<waitForPageLoad stepKey="waitForInlineWYSIWYGStorageRoot"/>
224+
<click selector="{{PageBuilderPanel.searchPanel}}" stepKey="unfocusOnInlineWYSIWYGEditorAreaAddImageLink"/>
222225
<seeElement selector="{{PageBuilderStage.modal(PageBuilderSlideItemMessageInvalidProperty.stageErrorMessage)}}" stepKey="seeNestingImageLinkCorrectErrorModal"/>
223226
<actionGroup ref="confirmRemovalModal" stepKey="confirmNestingImageLinkModal"/>
224227
<!-- Checks for A tags within the TinyMCE with regex -->

app/code/Magento/PageBuilder/view/adminhtml/web/js/content-type/slide/preview.js

Lines changed: 6 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/content-type/slide/preview.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import ko from "knockout";
1010
import $t from "mage/translate";
1111
import events from "Magento_PageBuilder/js/events";
1212
import mageUtils from "mageUtils";
13+
import {Editor} from "tinymce";
1314
import _ from "underscore";
1415
import "vimeoWrapper";
1516
import {PreviewSortableSortUpdateEventParams} from "../../binding/sortable-children.types";
@@ -427,7 +428,11 @@ export default class Preview extends BasePreview {
427428

428429
if (focus) {
429430
wysiwygConfig.adapter.settings.auto_focus = this.element.id;
430-
wysiwygConfig.adapter.settings.init_instance_callback = () => {
431+
wysiwygConfig.adapter.settings.init_instance_callback = (editor: Editor) => {
432+
editor.on("blur", () => {
433+
nestingLinkDialog(this.contentType.dataStore, this.wysiwyg, "content", "link_url");
434+
nestingWidgetDialog(this.contentType.dataStore, this.wysiwyg, "content", "link_url");
435+
});
431436
_.defer(() => {
432437
this.element.blur();
433438
this.element.focus();
@@ -488,8 +493,6 @@ export default class Preview extends BasePreview {
488493
const dataStore = this.contentType.dataStore.getState();
489494
const imageObject = (dataStore[this.config.additional_data.uploaderConfig.dataScope] as object[])[0] || {};
490495
events.trigger(`image:${this.contentType.id}:assignAfter`, imageObject);
491-
nestingLinkDialog(this.contentType.dataStore, this.wysiwyg, "content", "link_url");
492-
nestingWidgetDialog(this.contentType.dataStore, this.wysiwyg, "content", "link_url");
493496
});
494497

495498
// Remove wysiwyg before assign new instance.

0 commit comments

Comments
 (0)