├── .github ├── .metadata.json ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE │ └── bug_report.md └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── CODE_OF_CONDUCT.md ├── COPYING.txt ├── LICENSE.txt ├── README.md ├── custom-module-form.png ├── custom-module-panel.png ├── index.js ├── lib ├── files.js ├── placeholders.js └── questions.js ├── package-lock.json ├── package.json ├── pb-custom.gif ├── pb-extension.gif └── templates ├── banner └── [VENDOR] │ └── [MODULE] │ ├── .gitignore │ ├── README.md │ ├── composer.json │ ├── etc │ └── module.xml │ ├── registration.php │ └── view │ ├── adminhtml │ ├── pagebuilder │ │ └── content_type │ │ │ └── [CONTENTTYPELC].xml │ ├── ui_component │ │ └── pagebuilder_[CONTENTTYPELC]_form.xml │ └── web │ │ ├── css │ │ └── source │ │ │ ├── _module.less │ │ │ └── content-type │ │ │ └── [CONTENTTYPELC] │ │ │ ├── _collage-center.less │ │ │ ├── _collage-right.less │ │ │ ├── _default.less │ │ │ ├── _import.less │ │ │ └── _poster.less │ │ └── template │ │ └── content-type │ │ └── [CONTENTTYPELC] │ │ ├── collage-centered │ │ ├── master.html │ │ └── preview.html │ │ ├── collage-left │ │ ├── master.html │ │ └── preview.html │ │ ├── collage-right │ │ ├── master.html │ │ └── preview.html │ │ └── poster │ │ ├── master.html │ │ └── preview.html │ └── frontend │ └── web │ └── css │ └── source │ ├── _module.less │ └── content-type │ └── [CONTENTTYPELC] │ ├── _collage-center.less │ ├── _collage-left.less │ ├── _collage-right.less │ ├── _default.less │ ├── _import.less │ └── _poster.less ├── block └── [VENDOR] │ └── [MODULE] │ ├── .gitignore │ ├── README.md │ ├── composer.json │ ├── etc │ └── module.xml │ ├── registration.php │ └── view │ ├── adminhtml │ ├── pagebuilder │ │ └── content_type │ │ │ └── [CONTENTTYPELC].xml │ ├── ui_component │ │ ├── pagebuilder_[CONTENTTYPELC]_form.xml │ │ └── pagebuilder_block_select_grid.xml │ └── web │ │ ├── css │ │ └── source │ │ │ ├── _module.less │ │ │ └── content-type │ │ │ └── [CONTENTTYPELC] │ │ │ ├── _default.less │ │ │ └── _import.less │ │ └── template │ │ └── content-type │ │ └── [CONTENTTYPELC] │ │ └── default │ │ ├── master.html │ │ └── preview.html │ └── frontend │ └── web │ └── css │ └── source │ ├── _module.less │ └── content-type │ └── [CONTENTTYPELC] │ ├── _default.less │ └── _import.less ├── button-item └── [VENDOR] │ └── [MODULE] │ ├── .gitignore │ ├── README.md │ ├── composer.json │ ├── etc │ └── module.xml │ ├── registration.php │ └── view │ ├── adminhtml │ ├── pagebuilder │ │ └── content_type │ │ │ └── [CONTENTTYPESC].xml │ ├── ui_component │ │ └── pagebuilder_[CONTENTTYPESC]_form.xml │ └── web │ │ ├── css │ │ └── source │ │ │ ├── _module.less │ │ │ └── content-type │ │ │ └── [CONTENTTYPELC] │ │ │ ├── _default.less │ │ │ └── _import.less │ │ └── template │ │ └── content-type │ │ └── [CONTENTTYPELC] │ │ └── default │ │ ├── master.html │ │ └── preview.html │ └── frontend │ └── web │ └── css │ └── source │ ├── _module.less │ └── content-type │ └── [CONTENTTYPELC] │ ├── _default.less │ └── _import.less ├── buttons └── [VENDOR] │ └── [MODULE] │ ├── .gitignore │ ├── README.md │ ├── composer.json │ ├── etc │ └── module.xml │ ├── registration.php │ └── view │ ├── adminhtml │ ├── pagebuilder │ │ └── content_type │ │ │ └── [CONTENTTYPELC].xml │ ├── ui_component │ │ └── pagebuilder_[CONTENTTYPELC]_form.xml │ └── web │ │ ├── css │ │ └── source │ │ │ ├── _module.less │ │ │ └── content-type │ │ │ └── [CONTENTTYPELC] │ │ │ ├── _default.less │ │ │ └── _import.less │ │ └── template │ │ └── content-type │ │ └── [CONTENTTYPELC] │ │ ├── inline │ │ ├── master.html │ │ └── preview.html │ │ └── stacked │ │ ├── master.html │ │ └── preview.html │ └── frontend │ └── web │ └── css │ └── source │ ├── _module.less │ └── content-type │ └── [CONTENTTYPELC] │ ├── _default.less │ └── _import.less ├── column-group └── [VENDOR] │ └── [MODULE] │ ├── .gitignore │ ├── README.md │ ├── composer.json │ ├── etc │ └── module.xml │ ├── registration.php │ └── view │ ├── adminhtml │ ├── pagebuilder │ │ └── content_type │ │ │ └── [CONTENTTYPESC].xml │ └── web │ │ ├── css │ │ └── source │ │ │ ├── _module.less │ │ │ └── content-type │ │ │ └── [CONTENTTYPELC] │ │ │ ├── _default.less │ │ │ └── _import.less │ │ └── template │ │ └── content-type │ │ └── [CONTENTTYPELC] │ │ └── default │ │ ├── master.html │ │ └── preview.html │ └── frontend │ └── web │ └── css │ └── source │ ├── _module.less │ └── content-type │ └── [CONTENTTYPELC] │ ├── _default.less │ └── _import.less ├── column └── [VENDOR] │ └── [MODULE] │ ├── .gitignore │ ├── README.md │ ├── composer.json │ ├── etc │ └── module.xml │ ├── registration.php │ └── view │ ├── adminhtml │ ├── pagebuilder │ │ └── content_type │ │ │ └── [CONTENTTYPELC].xml │ ├── ui_component │ │ └── pagebuilder_[CONTENTTYPELC]_form.xml │ └── web │ │ ├── css │ │ └── source │ │ │ ├── _module.less │ │ │ └── content-type │ │ │ └── [CONTENTTYPELC] │ │ │ ├── _default.less │ │ │ └── _import.less │ │ └── template │ │ └── content-type │ │ └── [CONTENTTYPELC] │ │ └── full-height │ │ ├── master.html │ │ └── preview.html │ └── frontend │ └── web │ └── css │ └── source │ ├── _module.less │ └── content-type │ └── [CONTENTTYPELC] │ ├── _default.less │ └── _import.less ├── custom └── [VENDOR] │ └── [MODULE] │ ├── .gitignore │ ├── README.md │ ├── composer.json │ ├── etc │ ├── adminhtml │ │ └── di.xml │ └── module.xml │ ├── registration.php │ └── view │ ├── adminhtml │ ├── layout │ │ └── pagebuilder_[VENDORLC]_[CONTENTTYPELC]_form.xml │ ├── pagebuilder │ │ └── content_type │ │ │ └── [VENDORLC]_[CONTENTTYPELC].xml │ ├── ui_component │ │ └── pagebuilder_[VENDORLC]_[CONTENTTYPELC]_form.xml │ └── web │ │ ├── css │ │ ├── images │ │ │ └── content-type │ │ │ │ └── [VENDORLC]-[CONTENTTYPELC] │ │ │ │ └── appearance │ │ │ │ ├── appearance1-[CONTENTTYPELC].svg │ │ │ │ ├── appearance2-[CONTENTTYPELC].svg │ │ │ │ └── icon-[CONTENTTYPELC].svg │ │ └── source │ │ │ ├── _module.less │ │ │ └── content-type │ │ │ └── [VENDORLC]-[CONTENTTYPELC] │ │ │ ├── _default.less │ │ │ └── _import.less │ │ ├── js │ │ └── content-type │ │ │ └── [VENDORLC]-[CONTENTTYPELC] │ │ │ └── preview.js │ │ └── template │ │ └── content-type │ │ └── [VENDORLC]-[CONTENTTYPELC] │ │ └── default │ │ ├── master.html │ │ └── preview.html │ └── frontend │ └── web │ └── css │ └── source │ ├── _module.less │ └── content-type │ └── [VENDORLC]-[CONTENTTYPELC] │ ├── _default.less │ └── _import.less ├── divider └── [VENDOR] │ └── [MODULE] │ ├── .gitignore │ ├── README.md │ ├── composer.json │ ├── etc │ └── module.xml │ ├── registration.php │ └── view │ ├── adminhtml │ ├── pagebuilder │ │ └── content_type │ │ │ └── [CONTENTTYPELC].xml │ ├── ui_component │ │ └── pagebuilder_[CONTENTTYPELC]_form.xml │ └── web │ │ ├── css │ │ └── source │ │ │ ├── _module.less │ │ │ └── content-type │ │ │ └── [CONTENTTYPELC] │ │ │ ├── _default.less │ │ │ └── _import.less │ │ └── template │ │ └── content-type │ │ └── [CONTENTTYPELC] │ │ └── default │ │ ├── master.html │ │ └── preview.html │ └── frontend │ └── web │ └── css │ └── source │ ├── _module.less │ └── content-type │ └── [CONTENTTYPELC] │ ├── _default.less │ └── _import.less ├── heading └── [VENDOR] │ └── [MODULE] │ ├── .gitignore │ ├── README.md │ ├── composer.json │ ├── etc │ └── module.xml │ ├── registration.php │ └── view │ ├── adminhtml │ ├── pagebuilder │ │ └── content_type │ │ │ └── [CONTENTTYPELC].xml │ ├── ui_component │ │ └── pagebuilder_[CONTENTTYPELC]_form.xml │ └── web │ │ ├── css │ │ └── source │ │ │ ├── _module.less │ │ │ └── content-type │ │ │ └── [CONTENTTYPELC] │ │ │ ├── _default.less │ │ │ └── _import.less │ │ └── template │ │ └── content-type │ │ └── [CONTENTTYPELC] │ │ └── default │ │ ├── master.html │ │ └── preview.html │ └── frontend │ └── web │ └── css │ └── source │ ├── _module.less │ └── content-type │ └── [CONTENTTYPELC] │ ├── _default.less │ └── _import.less ├── html └── [VENDOR] │ └── [MODULE] │ ├── .gitignore │ ├── README.md │ ├── composer.json │ ├── etc │ └── module.xml │ ├── registration.php │ └── view │ ├── adminhtml │ ├── pagebuilder │ │ └── content_type │ │ │ └── [CONTENTTYPELC].xml │ ├── ui_component │ │ └── pagebuilder_[CONTENTTYPELC]_form.xml │ └── web │ │ ├── css │ │ └── source │ │ │ ├── _module.less │ │ │ └── content-type │ │ │ └── [CONTENTTYPELC] │ │ │ ├── _default.less │ │ │ └── _import.less │ │ └── template │ │ └── content-type │ │ └── [CONTENTTYPELC] │ │ └── default │ │ ├── master.html │ │ └── preview.html │ └── frontend │ └── web │ └── css │ └── source │ ├── _module.less │ └── content-type │ └── [CONTENTTYPELC] │ ├── _default.less │ └── _import.less ├── image └── [VENDOR] │ └── [MODULE] │ ├── .gitignore │ ├── README.md │ ├── composer.json │ ├── etc │ └── module.xml │ ├── registration.php │ └── view │ ├── adminhtml │ ├── pagebuilder │ │ └── content_type │ │ │ └── [CONTENTTYPELC].xml │ ├── ui_component │ │ └── pagebuilder_[CONTENTTYPELC]_form.xml │ └── web │ │ ├── css │ │ └── source │ │ │ ├── _module.less │ │ │ └── content-type │ │ │ └── [CONTENTTYPELC] │ │ │ ├── _default.less │ │ │ └── _import.less │ │ └── template │ │ └── content-type │ │ └── [CONTENTTYPELC] │ │ └── full-width │ │ ├── master.html │ │ └── preview.html │ └── frontend │ └── web │ └── css │ └── source │ ├── _module.less │ └── content-type │ └── [CONTENTTYPELC] │ ├── _default.less │ └── _import.less ├── map └── [VENDOR] │ └── [MODULE] │ ├── .gitignore │ ├── README.md │ ├── composer.json │ ├── etc │ └── module.xml │ ├── registration.php │ └── view │ ├── adminhtml │ ├── pagebuilder │ │ └── content_type │ │ │ └── [CONTENTTYPELC].xml │ ├── ui_component │ │ ├── pagebuilder_[CONTENTTYPELC]_form.xml │ │ └── pagebuilder_map_location_form.xml │ └── web │ │ ├── css │ │ └── source │ │ │ ├── _module.less │ │ │ └── content-type │ │ │ └── [CONTENTTYPELC] │ │ │ ├── _default.less │ │ │ └── _import.less │ │ └── template │ │ └── content-type │ │ └── [CONTENTTYPELC] │ │ └── default │ │ ├── master.html │ │ └── preview.html │ └── frontend │ └── web │ └── css │ └── source │ ├── _module.less │ └── content-type │ └── [CONTENTTYPELC] │ ├── _default.less │ └── _import.less ├── products └── [VENDOR] │ └── [MODULE] │ ├── .gitignore │ ├── README.md │ ├── composer.json │ ├── etc │ └── module.xml │ ├── registration.php │ └── view │ ├── adminhtml │ ├── pagebuilder │ │ └── content_type │ │ │ └── [CONTENTTYPELC].xml │ ├── ui_component │ │ ├── pagebuilder_[CONTENTTYPELC]_form.xml │ │ └── pagebuilder_products_carousel_form.xml │ └── web │ │ ├── css │ │ └── source │ │ │ ├── _module.less │ │ │ └── content-type │ │ │ └── [CONTENTTYPELC] │ │ │ ├── _carousel.less │ │ │ ├── _default.less │ │ │ ├── _import.less │ │ │ └── _swatches.less │ │ └── template │ │ └── content-type │ │ └── [CONTENTTYPELC] │ │ └── grid │ │ ├── master.html │ │ └── preview.html │ └── frontend │ └── web │ └── css │ └── source │ ├── _module.less │ └── content-type │ └── [CONTENTTYPELC] │ ├── _carousel.less │ ├── _default.less │ └── _import.less ├── row └── [VENDOR] │ └── [MODULE] │ ├── .gitignore │ ├── README.md │ ├── composer.json │ ├── etc │ └── module.xml │ ├── registration.php │ └── view │ ├── adminhtml │ ├── pagebuilder │ │ └── content_type │ │ │ └── [CONTENTTYPELC].xml │ ├── ui_component │ │ └── pagebuilder_[CONTENTTYPELC]_form.xml │ └── web │ │ ├── css │ │ └── source │ │ │ ├── _module.less │ │ │ └── content-type │ │ │ └── [CONTENTTYPELC] │ │ │ ├── _contained.less │ │ │ ├── _default.less │ │ │ ├── _full-width.less │ │ │ └── _import.less │ │ └── template │ │ └── content-type │ │ └── [CONTENTTYPELC] │ │ ├── contained │ │ ├── master.html │ │ └── preview.html │ │ ├── full-bleed │ │ ├── master.html │ │ └── preview.html │ │ └── full-width │ │ ├── master.html │ │ └── preview.html │ └── frontend │ └── web │ └── css │ └── source │ ├── _module.less │ └── content-type │ └── [CONTENTTYPELC] │ ├── _contained.less │ ├── _full-bleed.less │ ├── _full-width.less │ └── _import.less ├── slide └── [VENDOR] │ └── [MODULE] │ ├── .gitignore │ ├── README.md │ ├── composer.json │ ├── etc │ └── module.xml │ ├── registration.php │ └── view │ ├── adminhtml │ ├── pagebuilder │ │ └── content_type │ │ │ └── [CONTENTTYPELC].xml │ ├── ui_component │ │ └── pagebuilder_[CONTENTTYPELC]_form.xml │ └── web │ │ ├── css │ │ └── source │ │ │ ├── _module.less │ │ │ └── content-type │ │ │ └── [CONTENTTYPELC] │ │ │ ├── _collage-center.less │ │ │ ├── _collage-left.less │ │ │ ├── _collage-right.less │ │ │ ├── _default.less │ │ │ ├── _import.less │ │ │ └── _poster.less │ │ └── template │ │ └── content-type │ │ └── [CONTENTTYPELC] │ │ ├── collage-centered │ │ ├── master.html │ │ └── preview.html │ │ ├── collage-left │ │ ├── master.html │ │ └── preview.html │ │ ├── collage-right │ │ ├── master.html │ │ └── preview.html │ │ └── poster │ │ ├── master.html │ │ └── preview.html │ └── frontend │ └── web │ └── css │ └── source │ ├── _module.less │ └── content-type │ └── [CONTENTTYPELC] │ ├── _collage-center.less │ ├── _collage-left.less │ ├── _collage-right.less │ ├── _default.less │ ├── _import.less │ └── _poster.less ├── slider └── [VENDOR] │ └── [MODULE] │ ├── .gitignore │ ├── README.md │ ├── composer.json │ ├── etc │ └── module.xml │ ├── registration.php │ └── view │ ├── adminhtml │ ├── pagebuilder │ │ └── content_type │ │ │ └── [CONTENTTYPELC].xml │ ├── ui_component │ │ └── pagebuilder_[CONTENTTYPELC]_form.xml │ └── web │ │ ├── css │ │ └── source │ │ │ ├── _module.less │ │ │ └── content-type │ │ │ └── [CONTENTTYPELC] │ │ │ ├── _default.less │ │ │ └── _import.less │ │ └── template │ │ └── content-type │ │ └── [CONTENTTYPELC] │ │ └── default │ │ ├── master.html │ │ └── preview.html │ └── frontend │ └── web │ └── css │ └── source │ ├── _module.less │ └── content-type │ └── [CONTENTTYPELC] │ ├── _default.less │ └── _import.less ├── tab-item └── [VENDOR] │ └── [MODULE] │ ├── .gitignore │ ├── README.md │ ├── composer.json │ ├── etc │ └── module.xml │ ├── registration.php │ └── view │ ├── adminhtml │ ├── pagebuilder │ │ └── content_type │ │ │ └── [CONTENTTYPESC].xml │ ├── ui_component │ │ └── pagebuilder_[CONTENTTYPESC]_form.xml │ └── web │ │ ├── css │ │ └── source │ │ │ ├── _module.less │ │ │ └── content-type │ │ │ └── [CONTENTTYPELC] │ │ │ ├── _default.less │ │ │ └── _import.less │ │ └── template │ │ └── content-type │ │ └── [CONTENTTYPELC] │ │ └── default │ │ ├── master.html │ │ └── preview.html │ └── frontend │ └── web │ └── css │ └── source │ ├── _module.less │ └── content-type │ └── [CONTENTTYPELC] │ ├── _default.less │ └── _import.less ├── tabs └── [VENDOR] │ └── [MODULE] │ ├── .gitignore │ ├── README.md │ ├── composer.json │ ├── etc │ └── module.xml │ ├── registration.php │ └── view │ ├── adminhtml │ ├── pagebuilder │ │ └── content_type │ │ │ └── [CONTENTTYPELC].xml │ ├── ui_component │ │ └── pagebuilder_[CONTENTTYPELC]_form.xml │ └── web │ │ ├── css │ │ └── source │ │ │ ├── _module.less │ │ │ └── content-type │ │ │ └── [CONTENTTYPELC] │ │ │ ├── _default.less │ │ │ └── _import.less │ │ └── template │ │ └── content-type │ │ └── [CONTENTTYPELC] │ │ └── default │ │ ├── master.html │ │ └── preview.html │ └── frontend │ └── web │ └── css │ └── source │ ├── _module.less │ └── content-type │ └── [CONTENTTYPELC] │ ├── _default.less │ └── _import.less ├── text └── [VENDOR] │ └── [MODULE] │ ├── .gitignore │ ├── README.md │ ├── composer.json │ ├── etc │ └── module.xml │ ├── registration.php │ └── view │ ├── adminhtml │ ├── pagebuilder │ │ └── content_type │ │ │ └── [CONTENTTYPELC].xml │ ├── ui_component │ │ └── pagebuilder_[CONTENTTYPELC]_form.xml │ └── web │ │ ├── css │ │ └── source │ │ │ ├── _module.less │ │ │ └── content-type │ │ │ └── [CONTENTTYPELC] │ │ │ ├── _default.less │ │ │ └── _import.less │ │ └── template │ │ └── content-type │ │ └── [CONTENTTYPELC] │ │ └── default │ │ ├── master.html │ │ └── preview.html │ └── frontend │ └── web │ └── css │ └── source │ ├── _module.less │ └── content-type │ └── [CONTENTTYPELC] │ ├── _default.less │ └── _import.less └── video └── [VENDOR] └── [MODULE] ├── .gitignore ├── README.md ├── composer.json ├── etc └── module.xml ├── registration.php └── view ├── adminhtml ├── pagebuilder │ └── content_type │ │ └── [CONTENTTYPELC].xml ├── ui_component │ └── pagebuilder_[CONTENTTYPELC]_form.xml └── web │ ├── css │ └── source │ │ ├── _module.less │ │ └── content-type │ │ └── [CONTENTTYPELC] │ │ ├── _default.less │ │ └── _import.less │ └── template │ └── content-type │ └── [CONTENTTYPELC] │ └── default │ ├── master.html │ └── preview.html └── frontend └── web └── css └── source ├── _module.less └── content-type └── [CONTENTTYPELC] ├── _default.less └── _import.less /.github/.metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "templateVersion": "0.2", 3 | "product": { 4 | "name": "Page Builder", 5 | "description": "Scaffolding CLI for Page Builder modules." 6 | }, 7 | "contacts": { 8 | "team": { 9 | "name": "Commerce Docs", 10 | "DL": "Grp-commerce-docs", 11 | "slackChannel": "#commerce-docs" 12 | } 13 | }, 14 | "ticketTracker": { 15 | "functionalJiraQueue": { 16 | "projectKey": "COMDOX", 17 | "component": "Maintenance" 18 | }, 19 | "securityJiraQueue": { 20 | "projectKey": "MAGREQ", 21 | "component": "Commerce M2" 22 | } 23 | }, 24 | "productionCodeBranches": ["master"] 25 | } -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Description 4 | 9 | 10 | 11 | 12 | ## How and where has this been tested? 13 | - **How this was tested:** 14 | - **Browser(s) and OS(s) this was tested with:** 15 | 16 | ## Screenshots 17 | 18 | 19 | 20 | ## To-do list 21 | 22 | - [ ] If my change impacts other components, I have tested to make sure they don't break. 23 | - [ ] If my change impacts documentation, I have updated the documentation accordingly. 24 | - [ ] I have read the [CONTRIBUTING document](/.github/CONTRIBUTING.md). 25 | 26 | - [ ] This pull request is ready to merge. 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | **/node_modules/* 3 | .DS_Store 4 | .vscode 5 | .history/ 6 | -------------------------------------------------------------------------------- /COPYING.txt: -------------------------------------------------------------------------------- 1 | Copyright © 2013-present Magento, Inc. 2 | 3 | Each Magento source file included in this distribution is licensed under OSL 3.0 or the Magento Enterprise Edition (MEE) license 4 | 5 | http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) 6 | Please see LICENSE.txt for the full text of the OSL 3.0 license or contact license@magentocommerce.com for a copy. 7 | 8 | Subject to Licensee's payment of fees and compliance with the terms and conditions of the MEE License, the MEE License supersedes the OSL 3.0 license for each source file. 9 | Please see LICENSE_EE.txt for the full text of the MEE License or visit http://magento.com/legal/terms/enterprise. -------------------------------------------------------------------------------- /custom-module-form.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/commerce-docs/pbmodules/96b1c52e02c87df753c1d663740bf5db8c608205/custom-module-form.png -------------------------------------------------------------------------------- /custom-module-panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/commerce-docs/pbmodules/96b1c52e02c87df753c1d663740bf5db8c608205/custom-module-panel.png -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | /* 4 | Copyright © Magento, Inc. All rights reserved. 5 | See COPYING.txt for license details. 6 | */ 7 | 8 | const clear = require('clear'); 9 | const chalk = require('chalk'); 10 | const {textSync} = require('figlet'); 11 | const questions = require('./lib/questions'); 12 | const files = require('./lib/files'); 13 | const placeholders = require('./lib/placeholders'); 14 | 15 | // Clear terminal and display ASCII art 16 | clear(); 17 | console.log( 18 | chalk.greenBright(textSync("PB Modules", {horizontalLayout: "fitted", font: "Standard"})) 19 | ); 20 | 21 | const start = async () => { 22 | try { 23 | const moduleAnswers = await questions.askModuleQuestions(); 24 | const {vendor, templateType, contentType} = moduleAnswers; 25 | 26 | placeholders.setupPlaceholders(moduleAnswers, vendor, contentType); 27 | files.copyTemplate(vendor, templateType, contentType); 28 | files.replaceFileNamePlaceholders(moduleAnswers); 29 | files.replaceFileContentPlaceholders(moduleAnswers); 30 | } catch (e) { 31 | console.log(`${chalk.red('Please correct the following errors noted above and try again.')}`); 32 | console.error(`${chalk.red(e)}`); 33 | } finally { 34 | console.log(`${chalk.white('✔ Page Builder module complete!')}`); 35 | } 36 | }; 37 | 38 | start(); 39 | -------------------------------------------------------------------------------- /lib/placeholders.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright © Magento, Inc. All rights reserved. 3 | See COPYING.txt for license details. 4 | */ 5 | 6 | module.exports = { 7 | 8 | /** 9 | * Set up additional placeholders for templates and comments. 10 | * 11 | * @param {object} moduleAnswers 12 | * @param {string} vendor 13 | * @param {string} contentType 14 | */ 15 | setupPlaceholders(moduleAnswers, vendor, contentType) { 16 | 17 | moduleAnswers.VENDORLC = vendor.toLowerCase(); 18 | moduleAnswers.CONTENTTYPELC = contentType.toLowerCase(); 19 | moduleAnswers.CONTENTTYPESC = contentType.replace(/-/g, "_").toLowerCase(); 20 | 21 | moduleAnswers.FRONTEND_STYLES_SOURCE = `Source: Magento/PageBuilder/view/frontend/web/css/source/content-type/${moduleAnswers.CONTENTTYPELC}/` 22 | moduleAnswers.ADMIN_STYLES_SOURCE = `Source: Magento/PageBuilder/view/adminhtml/web/css/source/content-type/${moduleAnswers.CONTENTTYPELC}/` 23 | moduleAnswers.OVERRIDE_DEFAULT_STYLES_COMMENT = 'Override the DEFAULT appearance styles here.'; 24 | moduleAnswers.OVERRIDE_STYLES_COMMENT = 'Override the appearance styles for'; 25 | 26 | moduleAnswers.MODULE_LESS_COMMENT_ADMIN = 'This file is the convention for exporting your admin style sheets.'; 27 | moduleAnswers.MODULE_LESS_COMMENT_FRONTEND = 'This file is the convention for exporting your frontend style sheets.'; 28 | moduleAnswers.IMPORT_LESS_COMMENT = 'This file imports all appearance less files.'; 29 | moduleAnswers.DEFAULT_LESS_COMMENT = 'Default appearance styles.'; 30 | moduleAnswers.EXAMPLE_FIELD_COMMENT = 'Example extension field. Remove or reconfigure as needed.'; 31 | moduleAnswers.CONFIG_COMMENT = 'Add or change styles, attributes, elements, and appearances as needed.'; 32 | moduleAnswers.REMOVE_COMMENT = 'Be sure to remove any appearances, elements, and template references you are not overriding.'; 33 | 34 | moduleAnswers.MASTER_TEMPLATE_COMMENT = 35 | `By default, this template is not in use. If you need to override and use it, 36 | you must also change the appearance master_template reference in the config file 37 | to point to THIS appearance template instead of the native Magento_PageBuilder template.`; 38 | moduleAnswers.PREVIEW_TEMPLATE_COMMENT = 39 | `By default, this template is not in use. If you need to override and use it, 40 | you must also change the appearance preview_template reference in the config file 41 | to point to THIS appearance template instead of the native Magento_PageBuilder template.`; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "page-builder-modules-scaffolder", 3 | "version": "0.0.1", 4 | "description": "Page Builder command line interface for scaffolding new modules for content types.", 5 | "author": "Adobe, Inc., Bruce Denham (bdenham@adobe.com)", 6 | "repository": "https://github.com/commerce-docs/pbmodules", 7 | "license": "osl-3.0", 8 | "main": "index.js", 9 | "bin": { 10 | "pbmodules": "index.js" 11 | }, 12 | "dependencies": { 13 | "chalk": "^4.0.0", 14 | "clear": "^0.1.0", 15 | "figlet": "^1.4.0", 16 | "inquirer": "^7.1.0", 17 | "shelljs": "^0.8.5" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /pb-custom.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/commerce-docs/pbmodules/96b1c52e02c87df753c1d663740bf5db8c608205/pb-custom.gif -------------------------------------------------------------------------------- /pb-extension.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/commerce-docs/pbmodules/96b1c52e02c87df753c1d663740bf5db8c608205/pb-extension.gif -------------------------------------------------------------------------------- /templates/banner/[VENDOR]/[MODULE]/.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | **/node_modules/* 3 | **.js.map 4 | **.d.js 5 | static-error-log.xml 6 | .DS_Store 7 | .vscode 8 | .history/ 9 | -------------------------------------------------------------------------------- /templates/banner/[VENDOR]/[MODULE]/README.md: -------------------------------------------------------------------------------- 1 | # [VENDOR]_[MODULE] 2 | 3 | [MODULEDESCRIPTION] 4 | 5 | This is an extension of the [CONTENTTYPE] content type. 6 | -------------------------------------------------------------------------------- /templates/banner/[VENDOR]/[MODULE]/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "[VENDOR]_[MODULE]", 3 | "version": "0.0.1", 4 | "description": "[MODULEDESCRIPTION]", 5 | "require": { 6 | "magento/framework": "*", 7 | "magento/module-page-builder": "*", 8 | "php": "~7.3.0||~7.4.0" 9 | }, 10 | "type": "magento2-module", 11 | "license": [ 12 | "proprietary" 13 | ], 14 | "autoload": { 15 | "files": [ 16 | "registration.php" 17 | ] 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /templates/banner/[VENDOR]/[MODULE]/etc/module.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /templates/banner/[VENDOR]/[MODULE]/registration.php: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | 25 | 28 | 29 | 30 | 31 | 32 | 33 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /templates/banner/[VENDOR]/[MODULE]/view/adminhtml/ui_component/pagebuilder_[CONTENTTYPELC]_form.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 |
9 | 10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | -------------------------------------------------------------------------------- /templates/banner/[VENDOR]/[MODULE]/view/adminhtml/web/css/source/_module.less: -------------------------------------------------------------------------------- 1 | // 2 | // [MODULE_LESS_COMMENT_ADMIN] 3 | // ______________________________________________________________________ 4 | 5 | @import 'content-type/[CONTENTTYPELC]/_import.less'; -------------------------------------------------------------------------------- /templates/banner/[VENDOR]/[MODULE]/view/adminhtml/web/css/source/content-type/[CONTENTTYPELC]/_collage-center.less: -------------------------------------------------------------------------------- 1 | // 2 | // [CONTENTTYPE]: [OVERRIDE_STYLES_COMMENT] COLLAGE-CENTER here. 3 | // [ADMIN_STYLES_SOURCE]_collage-center.less 4 | // ___________________________________________________________________ 5 | -------------------------------------------------------------------------------- /templates/banner/[VENDOR]/[MODULE]/view/adminhtml/web/css/source/content-type/[CONTENTTYPELC]/_collage-right.less: -------------------------------------------------------------------------------- 1 | // 2 | // [CONTENTTYPE]: [OVERRIDE_STYLES_COMMENT] COLLAGE-RIGHT here. 3 | // [ADMIN_STYLES_SOURCE]_collage-right.less 4 | // ___________________________________________________________________ 5 | -------------------------------------------------------------------------------- /templates/banner/[VENDOR]/[MODULE]/view/adminhtml/web/css/source/content-type/[CONTENTTYPELC]/_default.less: -------------------------------------------------------------------------------- 1 | // 2 | // [CONTENTTYPE]: [OVERRIDE_DEFAULT_STYLES_COMMENT] 3 | // [ADMIN_STYLES_SOURCE]_default.less 4 | // ___________________________________________________________________ 5 | -------------------------------------------------------------------------------- /templates/banner/[VENDOR]/[MODULE]/view/adminhtml/web/css/source/content-type/[CONTENTTYPELC]/_import.less: -------------------------------------------------------------------------------- 1 | // /** 2 | // * Copyright © Magento, Inc. All rights reserved. 3 | // * See COPYING.txt for license details. 4 | // */ 5 | 6 | // 7 | // _import imports all appearance less files 8 | // _____________________________________________ 9 | 10 | @import './_default.less'; 11 | @import './_poster.less'; 12 | @import './_collage-center'; 13 | @import './_collage-right.less'; 14 | -------------------------------------------------------------------------------- /templates/banner/[VENDOR]/[MODULE]/view/adminhtml/web/css/source/content-type/[CONTENTTYPELC]/_poster.less: -------------------------------------------------------------------------------- 1 | // 2 | // [CONTENTTYPE]: [OVERRIDE_STYLES_COMMENT] POSTER here. 3 | // [ADMIN_STYLES_SOURCE]_poster.less 4 | // ___________________________________________________________________ 5 | -------------------------------------------------------------------------------- /templates/banner/[VENDOR]/[MODULE]/view/adminhtml/web/template/content-type/[CONTENTTYPELC]/collage-left/preview.html: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 |
13 | 14 |
22 |
26 | 27 | 28 | 29 |
30 |
31 |
32 |
40 |
41 |
42 |