This preset configures GrapesJS to be used as a Mautic Builder with some unique features and blocks.
- Add function to edit source code
- Extend the original image and add a confirm dialog before removing it
- Option to hide/show Layers Manager
- Option to enable/disable Import code button
- Move Settings panel inside Style Manager panel
- Open Block Manager at launch
- Add Dynamic Content Block used in Mautic
Option | Description | Default |
---|---|---|
sourceEdit | Activate source code edition | true |
sourceEditBtnLabel | Label for source code button save | 'Edit' |
sourceCancelBtnLabel | Label for source code button cancel | 'Cancel' |
sourceEditModalTitle | Title for source code modal | 'Edit code' |
deleteAssetConfirmText | Label for asset deletion confirm | 'Are you sure?' |
showLayersManager | Show Layers Manager panel | false |
combineSettingsAndSm | Show settings combined with the Style Manager | true |
showImportButton | Show Import code button | false |
defaultPanel | Set the panel that should be open by default: Button ids | 'open-blocks' |
categorySectionLabel | Category 'section' label | 'Sections' |
categoryBlockLabel | Category 'block' label | 'Blocks' |
dynamicContentModalTitle | Title for Dynamic Content modal | 'Edit Dynamic Content' |
- Plugin name:
grapesjs-preset-mautic
- GIT
git clone https://github.com/mautic/grapesjs-preset-mautic.git
Directly in the browser
<link href="https://unpkg.com/grapesjs/dist/css/grapes.min.css" rel="stylesheet"/>
<script src="https://unpkg.com/grapesjs"></script>
<script src="path/to/grapesjs-preset-mautic.min.js"></script>
<div id="gjs"></div>
<script type="text/javascript">
var editor = grapesjs.init({
container: '#gjs',
// ...
plugins: ['grapesjs-preset-mautic'],
pluginsOpts: {
'grapesjs-preset-mautic': { /* options */ }
}
});
</script>
Modern javascript
import grapesjs from 'grapesjs';
import plugin from 'grapesjs-preset-mautic';
import 'grapesjs/dist/css/grapes.min.css';
const editor = grapesjs.init({
container : '#gjs',
// ...
plugins: [plugin],
pluginsOpts: {
[plugin]: { /* options */ }
}
// or
plugins: [
editor => plugin(editor, { /* options */ }),
],
});
Clone the repository
$ git clone https://github.com/mautic/grapesjs-preset-mautic.git
$ cd grapesjs-preset-mautic
Install dependencies
$ npm i
Start the dev server
$ npm start
Build the source and use js from build folder to your project
$ npm run build
Html needs to be beautified
for the click tracking to work. Therefore, we can not use the built in command: mjml-get-code
but we have to use mjml2html
directly.
beautify
option is deprecated in mjml-core and only available in mjml cli. mautic/mautic#10331
this.logger = new Logger(editor);
this.logger.debug('Some info for debugging', {param} );
this.logger.info('Some info for debugging');
this.logger.warning('Some info for debugging');
this.logger.error('Some info for debugging');
During development the log level can be set to debug in index.js
const config = {
showLayersManager: 0,
showImportButton: 0,
logFilter: 'log:debug',
// logFilter: 'log:info',
...opts,
};
- Takes HTML from the Dynamic Content popup and adds it to the canvas based on the text (html) or mj-text (mjml) component.
- Build the preset:
npm run build
(done by author) - Create a PR (done by author)
- Fork the repo:
gh repo fork mautic/grapesjs-preset-mautic
- Clone the repo:
gh repo clone USERNAME/grapesjs-preset-mautic && gh pr checkout PRNUMBER>
- Change into the plugin directory: e.g.
cd mautic/plugins/GrapesJSBuilderBundle
- Optional: Is the plugin code touched by this preset code change too? Checkout the correct plugin PR from github.com/mautic/mautic as well. E.g.
gh pr checkout PR
when you are in the Mautic directory (not the preset directory). - Change the code for the import path of the preset in
plugins/GrapesJsBuilderBundle/Assets/library/js/builder.service.js
to the local version of the preset. E.g.
// import grapesjsmautic from 'grapesjs-preset-mautic';
import grapesjsmautic from '../../../../../../grapesjs-preset-mautic/src';
- Change the code for the import path of the preset in
plugins/GrapesJsBuilderBundle/Assets/library/js/codeMode/codeEditor.js
to the local version of the preset. E.g.
import MjmlService from '../../../../../../../grapesjs-preset-mautic/dist/mjml/mjml.service';
import ContentService from '../../../../../../../grapesjs-preset-mautic/dist/content.service';
Locate the preset repo by starting from this location: plugins/GrapesJsBuilderBundle/Assets/library/js/. In the above example we assume that the preset is one folder above Mautic
- Install the global dependency (make sure it is v1):
npm install parcel@1
- Install the project depencencies:
npm install
- Build the JS code of the plugin 'plugin-grapesjs-builder' in the dev mode (not minified):
npm run build-dev
- Test the code locally. Make sure nothing is cached. Recommended way is using the incognito mode. E.g. https://mautic.ddev.site/s/emails
- Check the browser console if you find errors. They help a lot with debugging!
MIT
Thanks goes to these wonderful people (emoji key):
Disha P ๐ป |
Adrian ๐ป ๐ ๐ ๐ |
Irfan Hanfi ๐ป |
Ekkehard Gรผmbel ๐ |
John Linhart ๐ |
Volha Pivavarchyk ๐ |
Anna Munk ๐ป |
Patryk Gruszka ๐ |
This project follows the all-contributors specification. Contributions of any kind welcome!