Skip to content

Commit 739f94b

Browse files
Merge pull request #605 from magento/MC-35389
MC-35389: Support same site
2 parents 31615a1 + 591d9a1 commit 739f94b

File tree

8 files changed

+114
-15
lines changed

8 files changed

+114
-15
lines changed

app/code/Magento/PageBuilder/view/adminhtml/web/js/content-type/observable-updater/attributes.js

Lines changed: 33 additions & 9 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/js/content-type/observable-updater/html.js

Lines changed: 6 additions & 1 deletion
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/js/master-format/render/frame.js

Lines changed: 3 additions & 1 deletion
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/js/utils/directives.js

Lines changed: 25 additions & 1 deletion
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/observable-updater/attributes.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* See COPYING.txt for license details.
44
*/
55

6+
import Config from "../../config";
67
import {ContentTypeConfigAppearanceElementInterface} from "../../content-type-config.types";
78
import ConverterPool from "../../converter/converter-pool";
89
import {DataObject} from "../../data-store";
@@ -29,6 +30,7 @@ export default function generate(
2930
if ("read" === attributeConfig.persistence_mode) {
3031
continue;
3132
}
33+
// @ts-ignore
3234
let value;
3335
if (!!attributeConfig.static) {
3436
value = attributeConfig.value;
@@ -39,7 +41,15 @@ export default function generate(
3941
if (converterPool.get(converter)) {
4042
value = converterPool.get(converter).toDom(attributeConfig.var, data);
4143
}
42-
attributeData[attributeConfig.name] = value;
44+
45+
// Replacing src attribute with data-tmp-src to prevent img requests in iframe during master format rendering
46+
if (attributeConfig.name === "src" && !value.indexOf("{{media url=") && Config.getMode() !== "Preview") {
47+
attributeData["data-tmp-" + attributeConfig.name] = value;
48+
// @ts-ignore
49+
Object.defineProperty(attributeData, attributeConfig.name, { get() { return value; } });
50+
} else {
51+
attributeData[attributeConfig.name] = value;
52+
}
4353
}
4454

4555
attributeData["data-element"] = elementName;

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/content-type/observable-updater/html.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
* See COPYING.txt for license details.
44
*/
55

6+
import Config from "../../config";
67
import {ContentTypeConfigAppearanceElementInterface} from "../../content-type-config.types";
78
import ConverterPool from "../../converter/converter-pool";
89
import {DataObject} from "../../data-store";
10+
import { replaceWithDataSrc } from "../../utils/directives";
911
import {get} from "../../utils/object";
1012

1113
/**
@@ -33,5 +35,11 @@ export default function generate(
3335
if (typeof value === "string" && !value.length && config.html.placeholder) {
3436
value = config.html.placeholder;
3537
}
38+
39+
// Replacing src attribute with data-tmp-src to prevent img requests in iframe during master format rendering
40+
if (Config.getMode() !== "Preview" && typeof value === "string" && value.indexOf("{{media url=") !== -1) {
41+
value = replaceWithDataSrc(value);
42+
}
43+
3644
return value;
3745
}

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/master-format/render/frame.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import ConfigInterface from "../../config.types";
1313
import ContentTypeCollectionInterface from "../../content-type-collection.types";
1414
import createContentType from "../../content-type-factory";
1515
import ContentTypeInterface from "../../content-type.types";
16-
import decodeAllDataUrlsInString from "../../utils/directives";
16+
import decodeAllDataUrlsInString, { replaceWithSrc } from "../../utils/directives";
1717
import filterHtml from "../filter-html";
1818
import { TreeItem } from "./serialize";
1919

@@ -160,7 +160,7 @@ function render(message: {stageId: string, tree: TreeItem}) {
160160
observer.disconnect();
161161
ko.cleanNode(element);
162162
const filtered: JQuery = filterHtml($(element));
163-
const output = decodeAllDataUrlsInString(filtered.html());
163+
const output = replaceWithSrc(decodeAllDataUrlsInString(filtered.html()));
164164
resolve(output);
165165
});
166166

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/utils/directives.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,3 +131,29 @@ export function convertMediaDirectivesToUrls(html: string): string {
131131
}
132132
return html;
133133
}
134+
135+
/**
136+
* Replace data-src attribute with src.
137+
*
138+
* @param {string} html
139+
* @returns {string}
140+
*/
141+
export function replaceWithSrc(html: string): string {
142+
return html.replace(
143+
new RegExp("data-tmp-src=\"\{\{", "g"),
144+
"src=\"{{",
145+
);
146+
}
147+
148+
/**
149+
* Replace src attribute with data-tmp-src.
150+
*
151+
* @param {string} html
152+
* @returns {string}
153+
*/
154+
export function replaceWithDataSrc(html: string): string {
155+
return html.replace(
156+
new RegExp("src=\"\{\{", "g"),
157+
"data-tmp-src=\"{{",
158+
);
159+
}

0 commit comments

Comments
 (0)