Skip to content

Commit f6cafe5

Browse files
Merge branch 'MC-35104' of github.com:magento-epam/magento2-page-builder into 513_content-snapshot-dynamic-block
2 parents 93fc036 + 0bef983 commit f6cafe5

File tree

6 files changed

+159
-32
lines changed

6 files changed

+159
-32
lines changed

app/code/Magento/PageBuilder/view/adminhtml/web/js/content-type-menu/edit.js

Lines changed: 4 additions & 0 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/preview.js

Lines changed: 19 additions & 0 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-menu/edit.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export default class Edit {
2929
*/
3030
public open(): void {
3131
const contentTypeData = this.dataStore.getState();
32-
32+
events.trigger("contentType:editBefore", { contentType: this.instance } );
3333
events.trigger("form:renderAfter", {
3434
data: contentTypeData,
3535
appearances: this.instance.config.appearances,

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,7 @@ export default class Preview implements PreviewInterface {
310310
public onOptionVisibilityToggle(): void {
311311
const display = this.contentType.dataStore.get<boolean>("display");
312312
this.contentType.dataStore.set("display", !display);
313+
this.dispatchContentTypeVisibilityEvents(this.contentType, !display);
313314
}
314315

315316
/**
@@ -496,6 +497,25 @@ export default class Preview implements PreviewInterface {
496497
events.trigger(originalContentType.config.name + ":duplicateAfter", duplicateEventParams);
497498
}
498499

500+
/**
501+
* Dispatch content type visibility events
502+
*
503+
* @param {ContentTypeInterface | ContentTypeCollectionInterface} contentType
504+
* @param {boolean} visibility
505+
*/
506+
protected dispatchContentTypeVisibilityEvents(
507+
contentType: ContentTypeInterface | ContentTypeCollectionInterface,
508+
visibility: boolean,
509+
) {
510+
const visibilityEventParams = {
511+
contentType,
512+
visibility,
513+
};
514+
515+
events.trigger("contentType:visibilityAfter", visibilityEventParams);
516+
events.trigger(contentType.config.name + ":visibilityAfter", visibilityEventParams);
517+
}
518+
499519
/**
500520
* Bind events
501521
*/
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
/**
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
define(['underscore'], function (_) {
7+
'use strict';
8+
9+
return {
10+
11+
/**
12+
* Sets up event attributes and action depending on name and args
13+
*
14+
* @param {String} name
15+
* @param {Array} args
16+
*/
17+
18+
build: function (name, args) {
19+
var arrayName = name.split(':'),
20+
action = '',
21+
eventAttributes = {},
22+
event;
23+
24+
if (_.isUndefined(args)) {
25+
return;
26+
}
27+
28+
switch (arrayName[arrayName.length - 1]) {
29+
case 'duplicateAfter':
30+
action = 'duplicate';
31+
break;
32+
33+
case 'removeAfter':
34+
action = 'remove';
35+
break;
36+
37+
case 'createAfter':
38+
action = 'create';
39+
break;
40+
41+
case 'editBefore':
42+
action = 'edit';
43+
break;
44+
45+
case 'visibilityAfter':
46+
action = args.visibility ? 'show' : 'hide';
47+
break;
48+
49+
default:
50+
break;
51+
}
52+
53+
if (!_.isUndefined(args.contentType)) {
54+
eventAttributes = args.contentType.config;
55+
} else if (!_.isUndefined(args.originalContentType)) {
56+
eventAttributes = args.originalContentType.config;
57+
}
58+
59+
if (action !== '' && !_.isEmpty(eventAttributes)) {
60+
event = {
61+
element: eventAttributes.label,
62+
type: eventAttributes.name,
63+
action: action,
64+
widget: {
65+
name: eventAttributes.form,
66+
type: eventAttributes['menu_section']
67+
},
68+
feature: 'page-builder-tracker'
69+
};
70+
}
71+
72+
return event;
73+
}
74+
};
75+
});

app/code/Magento/PageBuilderAdminAnalytics/view/adminhtml/web/js/page-builder/events-mixin.js

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

6-
define(['underscore'], function (_underscore) {
7-
'use strict';
8-
9-
return function (target) {
10-
var originalTarget = target.trigger,
11-
isAdminAnalyticsEnabled;
12-
13-
/**
14-
* Invokes custom code to track information regarding Page Builder usage
15-
*
16-
* @param {String} name
17-
* @param {Array} args
18-
*/
19-
20-
target.trigger = function (name, args) {
21-
originalTarget.apply(originalTarget, [name, args]);
22-
isAdminAnalyticsEnabled =
23-
!_underscore.isUndefined(window.digitalData) &&
24-
!_underscore.isUndefined(window._satellite);
25-
26-
if (name.indexOf('readyAfter') !== -1 && isAdminAnalyticsEnabled) {
27-
window.digitalData.page.url = window.location.href;
28-
window.digitalData.page.attributes = {
29-
editedWithPageBuilder: 'true'
30-
};
31-
window._satellite.track('page');
32-
}
33-
};
6+
define(['underscore', 'Magento_PageBuilderAdminAnalytics/js/page-builder/event-builder'],
7+
function (_, EventBuilder) {
8+
'use strict';
9+
10+
return function (target) {
11+
var originalTarget = target.trigger,
12+
isAdminAnalyticsEnabled,
13+
event;
14+
15+
/**
16+
* Invokes custom code to track information regarding Page Builder usage
17+
*
18+
* @param {String} name
19+
* @param {Array} args
20+
*/
21+
22+
target.trigger = function (name, args) {
23+
originalTarget.apply(originalTarget, [name, args]);
24+
isAdminAnalyticsEnabled =
25+
!_.isUndefined(window.digitalData) &&
26+
!_.isUndefined(window._satellite);
3427

35-
return target;
36-
};
37-
});
28+
if (name.indexOf('readyAfter') !== -1 && isAdminAnalyticsEnabled) {
29+
window.digitalData.page.url = window.location.href;
30+
window.digitalData.page.attributes = {
31+
editedWithPageBuilder: 'true'
32+
};
33+
window._satellite.track('page');
34+
}
35+
36+
event = EventBuilder.build(name, args);
37+
38+
if (isAdminAnalyticsEnabled && !_.isUndefined(window.digitalData.event) && !_.isUndefined(event)) {
39+
window.digitalData.event.push(event);
40+
window._satellite.track('event');
41+
}
42+
};
43+
44+
return target;
45+
};
46+
});

0 commit comments

Comments
 (0)