Skip to content

Commit 323bc2d

Browse files
authored
Merge pull request #164 from magento-obsessive-owls/owls-ce
[Owls] PageBuilder Bug Fixes with core changes
2 parents 1e390c0 + ed8601f commit 323bc2d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+863
-2088
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,5 @@
44
**.d.js
55
/dev/tests/acceptance/vendor
66
static-error-log.xml
7+
.DS_Store
8+
.vscode

CONTRIBUTING.md

Lines changed: 6 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,5 @@
11
# Contributing to Magento 2 code
22

3-
<!--{% comment %}-->
4-
## Navigation
5-
6-
1. [Introduction]
7-
2. [Installation guide]
8-
3. **Contribution guide**
9-
1. [Overview](#overview)
10-
1. [Contribution requirements](#contribution-requirements)
11-
1. [Contribution process](#contribution-process)
12-
1. [Code of Conduct](#code-of-conduct)
13-
4. [Developer documentation]
14-
5. [Roadmap and known issues]
15-
6. [How to create custom PageBuilder content type container]
16-
17-
[Introduction]: docs/introduction.md
18-
[Installation guide]: docs/install.md
19-
[Developer documentation]: docs/developer-documentation.md
20-
[Roadmap and Known Issues]: docs/roadmap.md
21-
[How to create custom PageBuilder content type container]: docs/how-to-create-custom-content-type-container.md
22-
<!--{% endcomment %}-->
23-
24-
<!-- {% raw %} -->
253
## Overview
264

275
Contributions to the Magento 2 codebase are done using the fork & pull model.
@@ -31,25 +9,23 @@ Contributions can take the form of new components/features, changes to existing
319

3210
The Magento 2 development team will review all issues and contributions submitted by the community of developers in the first in, first out order. During the review we might require clarifications from the contributor. If there is no response from the contributor for two weeks, the issue is closed.
3311

34-
3512
## Contribution requirements
3613

3714
1. Contributions must adhere to [Magento coding standards](http://devdocs.magento.com/guides/v2.0/coding-standards/bk-coding-standards.html).
3815
2. Pull requests (PRs) must be accompanied by a meaningful description of their purpose. Comprehensive descriptions increase the chances of a pull request to be merged quickly and without additional clarification requests.
3916
3. Commits must be accompanied by meaningful commit messages.
4017
4. PRs which include bug fixing, must be accompanied with step-by-step description of how to reproduce the bug.
41-
3. PRs which include new logic or new features must be submitted along with:
42-
* Unit/integration test coverage where applicable.
43-
* Updated documentation in the module directory `app/code/PageBuilder/docs`.
44-
4. For large features or changes, please [open an issue](https://github.com/magento/magento2/issues) and discuss first. This may prevent duplicate or unnecessary effort, and it may gain you some additional contributors.
45-
5. All automated tests are passed successfully locally. After PR submitted Magento team will run builds on continuous integration environment.
18+
5. PRs which include new logic or new features must be submitted along with:
19+
* Unit/integration test coverage where applicable.
20+
* Updated documentation in the `docs` directory at the root level.
21+
6. For large features or changes, please [open an issue](https://github.com/magento/magento2/issues) and discuss first. This may prevent duplicate or unnecessary effort, and it may gain you some additional contributors.
22+
7. All automated tests are passed successfully locally. After PR submitted Magento team will run builds on continuous integration environment.
4623

4724
## Contribution process
4825

4926
If you are a new GitHub user, we recommend that you create your own [free github account](https://github.com/signup/free). By doing that, you will be able to collaborate with the Magento 2 development team, “fork” the Magento 2 project and be able to easily send “pull requests”.
5027

51-
1. Search current [listed issues](https://github.com/magento/magento2-page-builder/issues) on GitHub (open or closed) and [list of known issues](docs/roadmap.md#Known Issues) on our roadmap for similar proposals of intended contribution before starting work on a new contribution.
52-
2. Please contact us in Slack chanel if you want to work on issue from [list of known issues](docs/roadmap.md#Known Issues).
28+
1. Search current [listed issues](https://github.com/magento/magento2-page-builder/issues) on GitHub (open or closed) before starting work on a new contribution.
5329
2. Review the [Contributor License Agreement](https://magento.com/legaldocuments/mca) if this is your first time contributing.
5430
3. Create and test your work.
5531
4. Fork the Magento 2 repository according to [Fork a repository instructions](http://devdocs.magento.com/guides/v2.0/contributor-guide/contributing.html#fork) and when you are ready to send us a pull request – follow [Create a pull request instructions](http://devdocs.magento.com/guides/v2.0/contributor-guide/contributing.html#pull_request). Instructions written for `https://github.com/magento/magento2` repository, but they also apply to `https://github.com/magento/magento2-page-builder`.
@@ -59,5 +35,3 @@ If you are a new GitHub user, we recommend that you create your own [free github
5935

6036
Please note that this project is released with a Contributor Code of Conduct. We expect you to agree to its terms when participating in this project.
6137
The full text is available in the repository [Wiki](https://github.com/magento/magento2/wiki/Magento-Code-of-Conduct).
62-
63-
<!-- {% endraw %} -->

README.md

Lines changed: 48 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -9,72 +9,77 @@ The PageBuilder Early Access Program (EAP) gives partners the following perks:
99
* Explore PageBuilder extension points to build custom modules and integrations for 3rd party services, such as Facebook, Instagram, etc.
1010
* Try out PageBuilder customization options and extend its functionality beyond its default features.
1111
* Preview PageBuilder to prepare a migration plan from BlueFoot 1.0 to PageBuilder.
12-
12+
1313
**Note:**
1414
*This program should not be used to design and launch a production website using early code.*
1515

1616
## Installation
1717

1818
We offer one method for installing PageBuilder:
1919

20+
* As a [Composer package] - use this option if you do not plan to contribute to the PageBuilder code repository.
21+
* Using the [GitHub repository] - use this option to install PageBuilder from the GitHub repository and contribute to the code.
2022

21-
* Using the [GitHub repository] - use this option to install PageBuilder from the GitHub repository and contribute to the code
23+
[Composer package]: docs/install-pagebuilder.md#composer-installation
24+
[GitHub repository]: docs/install-pagebuilder.md#github-installation
2225

23-
[Composer package]: docs/install.md#composer-installation
24-
[GitHub repository]: docs/install.md#github-installation
26+
<!-- {% comment %} -->
2527

2628
## Developer documentation
2729

28-
This project repository contains PageBuilder developer documentation on the following topics:
29-
30-
1. [Architecture overview]
31-
1. [BlueFoot to PageBuilder data migration]
32-
1. [Third-party content type migration]
33-
1. [Iconography]
34-
1. [Module integration]
35-
1. [Additional data configuration]
36-
1. [Content type configuration]
37-
1. [How to add a new content type]
38-
1. [Events]
39-
1. [Bindings]
40-
1. [Master format]
41-
1. [Visual select]
42-
1. [Custom Toolbar]
43-
44-
[Architecture overview]: docs/architecture-overview.md
45-
[BlueFoot to PageBuilder data migration]: docs/bluefoot-data-migration.md
46-
[Third-party content type migration]: docs/new-content-type-example.md
47-
[Iconography]: docs/iconography.md
48-
[Module integration]: docs/module-integration.md
49-
[Additional data configuration]: docs/custom-configuration.md
50-
[Content type configuration]: docs/content-type-configuration.md
51-
[How to add a new content type]: docs/how-to-add-new-content-type.md
52-
[Events]: docs/events.md
53-
[Bindings]: docs/bindings.md
54-
[Master format]: docs/master-format.md
55-
[Visual select]: docs/visual-select.md
56-
[Custom Toolbar]: docs/toolbar.md
30+
### Getting Started
5731

58-
## Contribute to PageBuilder
32+
1. [Introduction](docs/getting-started/introduction.md)
33+
2. [Install Page Builder](docs/getting-started/install-pagebuilder.md)
34+
3. [Activate Page Builder](docs/getting-started/activate-pagebuilder.md)
35+
36+
### Customizations
37+
38+
* [Block chooser](docs/customizations/block-chooser.md)
39+
* [Full-width page layouts](docs/customizations/full-width-page-layouts.md)
40+
* [Responsive layouts](docs/customizations/responsive-layouts.md)
41+
* [Storefront customization](docs/customizations/storefront-customization.md)
42+
* [Visual selects](docs/customizations/visual-selects.md)
43+
* [Additional data configuration](docs/customizations/additional-data-configuration.md)
44+
* [Product conditions](docs/customizations/product-conditions.md)
45+
* [Server-side rendered previews](docs/customizations/server-side-rendered-previews.md)
46+
47+
### How Tos
48+
49+
* [How to develop a new content type](docs/how-to/how-to-develop-new-content-type.md)
50+
* [How to develop a container content type](docs/how-to/how-to-develop-container-content-type.md)
51+
* [How to use the Image Uploader](docs/how-to/how-to-use-image-uploader.md)
52+
* [How to add inline text editing](docs/how-to/how-to-add-inline-text-editing.md)
53+
* [How to add a custom toolbar](docs/how-to/how-to-add-custom-toolbar.md)
54+
* [How to convert product attribute fields to use Page Builder](docs/how-to/how-to-convert-product-attributes-to-use-pagebuilder.md)
55+
* [How to store a component master format as a widget-directive](docs/how-to/how-to-store-master-format-as-widget-directive.md)
56+
57+
### Reference
5958

60-
We appreciate any and all contributions to PageBuilder.
61-
A good place to start is by looking at our [features roadmap] and list of [known issues].
59+
* [Architecture](docs/reference/architecture.md)
60+
* [Events](docs/reference/events.md)
61+
* [Knockout bindings](docs/reference/knockout-bindings.md)
62+
* [Configuration](docs/reference/configuration.md)
63+
* [Master format](docs/reference/master-format.md)
6264

63-
If you are interested in contributing to this repository, please see our [Contribution Guide].
65+
### Migration
66+
67+
* [Migrate from BlueFoot](docs/migration/migrate-from-bluefoot.md)
68+
* [Migrate custom content types from BlueFoot](docs/migration/migrate-custom-content-types-from-bluefoot.md)
69+
70+
<!-- {% endcomment %} -->
71+
72+
## Contribute to PageBuilder
73+
74+
We appreciate any and all contributions to PageBuilder. If you are interested in contributing to this repository, please see our [Contribution Guide].
6475

6576
[Contribution Guide]: CONTRIBUTING.md
66-
[features roadmap]: docs/roadmap.md#planned-features-and-functionality
67-
[known issues]: docs/roadmap.md#known-issues
6877

6978
## PageBuilder updates from the Magento core team
7079

7180
The PageBuilder team updates the code every 2 weeks.
7281
**These changes may introduce breaking changes.**
7382

74-
To help you prepare for these changes, we are publishing a [roadmap] of features and issues that we are going to work on in the following months.
75-
76-
[roadmap]: docs/roadmap.md
77-
7883
## Provide feedback
7984

8085
We want to hear what you think of PageBuilder!

app/code/Magento/PageBuilder/Test/Mftf/Section/PageBuilderBannerSection.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
<element name="messageContent" type="text" selector="(//div[@data-role='banner'])[{{arg1}}]//div[@data-element='wrapper']//div[@data-element='content']//p[.='{{arg2}}']" parameterized="true"/>
3535
<element name="noMessageContent" type="text" selector="(//div[@data-role='banner'])[{{arg1}}]//div[@data-element='wrapper']//div[@data-element='content'][.='Edit Banner Text'][not(*)]" parameterized="true"/>
3636
<element name="messageContentTextArea" type="text" selector="(//div[@data-role='banner'])[{{arg1}}]//div[@data-element='wrapper']//div[@data-element='content'][.='{{arg2}}']" parameterized="true"/>
37+
<element name="messageContentTextAreaImage" type="text" selector="(//div[@data-role='banner'])[{{arg1}}]//div[@data-element='wrapper']//div[@data-element='content']//img[contains(@src, {{arg2}})]" parameterized="true"/>
3738
<element name="messageContentTextAreaTextWidget" type="text" selector="(//div[@data-role='banner'])[{{arg1}}]//div[@data-element='content']//a[contains(@href,'{{arg2}}{{arg3}}')]" parameterized="true"/>
3839
<element name="messageContentText" type="text" selector="(//div[@data-role='banner'])[{{arg1}}]//div[@data-element='content']//*[contains(text(),'{{arg2}}')]" parameterized="true"/>
3940
<element name="messageContentHeightJS" type="text" selector="return document.evaluate(&quot;(//div[@data-role='banner'])[{{arg1}}]//div[@data-element='content']//div[contains(text(),'{{arg2}}')]&quot;, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.clientHeight;" parameterized="true"/>
@@ -100,6 +101,7 @@
100101
<element name="showOverlay" type="button" selector="(//div[contains(@class,'pagebuilder-banner') and @data-element='main'])[{{arg1}}][@data-show-overlay='{{arg2}}']" parameterized="true"/>
101102
<element name="overlayColorAndTransparency" type="button" selector="(//div[contains(@class,'pagebuilder-banner') and @data-element='main'])[{{arg1}}]//div[@data-element='overlay'][contains(@style,'background-color: rgba({{arg2}}, {{arg3}});')]" parameterized="true"/>
102103
<element name="transparentOverlay" type="button" selector="(//div[contains(@class,'pagebuilder-banner') and @data-element='main'])[{{arg1}}]//div[@data-element='overlay'][contains(@style,'background-color: transparent;')]" parameterized="true"/>
104+
<element name="inlineWYSIWYGEditorWithTag" type="text" selector="(//div[contains(@class,'pagebuilder-banner') and @data-element='main'])[{{arg1}}]//div[contains(@class,'inline-wysiwyg')]//{{arg2}}" parameterized="true"/>
103105
<!-- Advanced Configuration -->
104106
<element name="alignment" type="text" selector="(//div[contains(@class,'pagebuilder-banner') and @data-element='main'])[{{arg1}}]//div[@data-element='wrapper'][contains(@style,'text-align: {{arg2}};')]" parameterized="true"/>
105107
<element name="noAlignment" type="text" selector="(//div[contains(@class,'pagebuilder-banner') and @data-element='main'])[{{arg1}}]//div[@data-element='wrapper'][not(contains(@style,'text-align:'))]" parameterized="true"/>

app/code/Magento/PageBuilder/Test/Mftf/Section/PageBuilderImageSection.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
<element name="backgroundImageSource" type="text" selector="//div[contains(@style,'{{var1}}')]" parameterized="true"/>
4343
<element name="imageDisplay" type="button" selector="figure[data-role='image']"/>
4444
<element name="imageElement" type="button" selector="figure[data-role='image'] img:nth-child({{arg1}})" parameterized="true"/>
45-
<element name="imageElementCSS" type="text" selector="figure[data-role=image] img" />
45+
<element name="imageElementCSS" type="text" selector="figure[data-role=image] img"/>
4646
<element name="imageHasAltText" type="button" selector="img.pagebuilder-mobile-hidden[alt='{{arg1}}']" parameterized="true"/>
4747
<element name="imageHasCaption" type="button" selector="figcaption"/>
4848
<element name="imageHasTitleTag" type="button" selector="img.pagebuilder-mobile-hidden[title='{{arg1}}']" parameterized="true"/>

app/code/Magento/PageBuilder/Test/Mftf/Section/PageBuilderSliderSection.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090
<element name="messageContent" type="text" selector="(//div[@data-role='slide'])[{{arg1}}]//div[@data-element='content']//p[.='{{arg2}}']" parameterized="true"/>
9191
<element name="noMessageContent" type="text" selector="(//div[@data-role='slide'])[{{arg1}}]//div[@data-element='wrapper']//div[@data-element='content'][not(*)]" parameterized="true"/>
9292
<element name="messageContentTextArea" type="text" selector="(//div[@data-role='slide'])[{{arg1}}]//div[@data-element='wrapper']//div[@data-element='content'][.='{{arg2}}']" parameterized="true"/>
93+
<element name="messageContentTextAreaImage" type="text" selector="(//div[@data-role='slide'])[{{arg1}}]//div[@data-element='wrapper']//div[@data-element='content']//img[contains(@src, {{arg2}})]" parameterized="true"/>
9394
<element name="messageContentTextAreaTextWidget" type="text" selector="(//div[@data-role='slide'])[{{arg1}}]//div[@data-element='content']//a[contains(@href,'{{arg2}}{{arg3}}')]" parameterized="true"/>
9495
<element name="messageContentText" type="text" selector="(//div[@data-role='slide'])[{{arg1}}]//div[@data-element='content']//*[contains(text(),'{{arg2}}')]" parameterized="true"/>
9596
<element name="messageContentHeightJS" type="text" selector="return document.evaluate(&quot;(//div[@data-role='slide'])[{{arg1}}]//div[@data-element='content']//*[contains(text(),'{{arg2}}')]&quot;, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.clientHeight;" parameterized="true"/>
@@ -159,6 +160,7 @@
159160
<element name="showOverlay" type="button" selector="(//div[@data-role='slide'])[{{arg1}}][@data-show-overlay='{{arg2}}']" parameterized="true"/>
160161
<element name="overlayColorAndTransparency" type="button" selector="(//div[@data-role='slide'])[{{arg1}}]//div[@data-element='overlay' or contains(@class,'pagebuilder-overlay')][contains(@style,'background-color: rgba({{arg2}}, {{arg3}});')]" parameterized="true"/>
161162
<element name="transparentOverlay" type="button" selector="(//div[@data-role='slide'])[{{arg1}}]//div[@data-element='overlay' or contains(@class,'pagebuilder-overlay')][contains(@style,'background-color: transparent;')]" parameterized="true"/>
163+
<element name="inlineWYSIWYGEditorWithTag" type="text" selector="(//div[@data-role='slide'])[{{arg1}}]//div[contains(@class,'inline-wysiwyg')]//{{arg2}}" parameterized="true"/>
162164
<!-- Advanced Configuration -->
163165
<element name="posterAlignment" type="text" selector="(//div[@data-role='slide'])[{{arg1}}]//div[@class='pagebuilder-slide-wrapper'][contains(@style,'text-align: {{arg2}};')]" parameterized="true"/>
164166
<element name="posterNoAlignment" type="text" selector="(//div[@data-role='slide'])[{{arg1}}]//div[@class='pagebuilder-slide-wrapper'][not(contains(@style,'text-align:'))]" parameterized="true"/>

app/code/Magento/PageBuilder/Test/Mftf/Section/PageBuilderTextSection.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
<element name="textInImportantStyle" type="text" selector="(//div[contains(@class,'pagebuilder-text')])[{{arg1}}]//div[contains(normalize-space(@class), 'cms-content-important') and text()='{{arg2}}']" parameterized="true"/>
2828
<element name="emptyTextInImportantStyle" type="text" selector="(//div[contains(@class,'pagebuilder-text')])[{{arg1}}]//div[contains(normalize-space(@class), 'cms-content-important')]" parameterized="true"/>
2929
<element name="imageSource" type="text" selector="(//div[contains(@class,'pagebuilder-text')])[{{arg1}}]//img[contains(@src,'{{var1}}')]" parameterized="true"/>
30+
<element name="inlineWYSIWYGEditorWithTag" type="text" selector="(//div[contains(@class,'pagebuilder-text')])[{{arg1}}]//div[contains(@class,'inline-wysiwyg')]//{{arg2}}" parameterized="true"/>
3031
<!-- Advanced Configuration -->
3132
<element name="alignment" type="text" selector="(//div[contains(@class,'pagebuilder-text')])[{{arg1}}]/div[contains(@style,'text-align: {{arg2}};')]" parameterized="true"/>
3233
<element name="noAlignment" type="text" selector="(//div[contains(@class,'pagebuilder-text')])[{{arg1}}]/div[not(contains(@style,'text-align:'))]" parameterized="true"/>
@@ -68,6 +69,7 @@
6869
<element name="notHidden" type="text" selector="(//div[@data-role='text'])[{{arg1}}][not(contains(@style, 'display: none'))]" parameterized="true"/>
6970
<element name="baseJs" type="text" selector="document.querySelectorAll('[data-role=\'text\']')[{{arg1}}]" parameterized="true"/>
7071
<element name="textAreaWidget" type="text" selector="(//div[@data-role='text'])[{{arg1}}]//a[contains(@href,'{{arg2}}{{arg3}}{{arg4}}')]" parameterized="true"/>
72+
<element name="messageContentTextAreaImage" type="text" selector="(//div[@data-role='text'])[{{arg1}}]//img[contains(@src, {{arg2}})]" parameterized="true"/>
7173
<element name="textWidget" type="text" selector="(//div[@data-role='text'])[{{arg1}}]//a[contains(@href,'{{arg2}}{{arg3}}')]" parameterized="true"/>
7274
<element name="textAreaText" type="text" selector="(//div[@data-role='text'])[{{arg1}}][contains(text(),'{{arg2}}')]" parameterized="true"/>
7375
<element name="textAreaVariable" type="text" selector="(//div[@data-role='text'])[{{arg1}}]//a[contains(@href,'{{arg2}}{{arg3}}')]" parameterized="true"/>

0 commit comments

Comments
 (0)