1.0.3 • Published 12 months ago

surge-grapesjs-preset-mautic v1.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months ago

GrapesJS Preset Mautic

All Contributors

This preset configures GrapesJS to be used as a Mautic Builder with some unique features and blocks.

Plugin to add GrapesJS features

  • 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

Options

OptionDescriptionDefault
sourceEditActivate source code editiontrue
sourceEditBtnLabelLabel for source code button save'Edit'
sourceCancelBtnLabelLabel for source code button cancel'Cancel'
sourceEditModalTitleTitle for source code modal'Edit code'
deleteAssetConfirmTextLabel for asset deletion confirm'Are you sure?'
showLayersManagerShow Layers Manager panelfalse
combineSettingsAndSmShow settings combined with the Style Managertrue
showImportButtonShow Import code buttonfalse
defaultPanelSet the panel that should be open by default: Button ids'open-blocks'
categorySectionLabelCategory 'section' label'Sections'
categoryBlockLabelCategory 'block' label'Blocks'
dynamicContentModalTitleTitle for Dynamic Content modal'Edit Dynamic Content'

Summary

  • Plugin name: grapesjs-preset-mautic

Download

  • GIT
    • git clone https://github.com/mautic/grapesjs-preset-mautic.git

Usage

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 */ }),
  ],
});

Development

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

Dependencies

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. https://github.com/mautic/mautic/issues/10331

Logging

How to log

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');

Changing the log level

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,
  };

Dynamic Content

  • Takes HTML from the Dynamic Content popup and adds it to the canvas based on the text (html) or mj-text (mjml) component.

How to test a preset pull request

  1. Build the preset: npm run build (done by author)
  2. Create a PR (done by author)
  3. Fork the repo: gh repo fork mautic/grapesjs-preset-mautic
  4. Clone the repo: gh repo clone USERNAME/grapesjs-preset-mautic && gh pr checkout PRNUMBER>
  5. Change into the plugin directory: e.g. cd mautic/plugins/GrapesJSBuilderBundle
  6. 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).
  7. 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';
  8. 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

  9. Install the global dependency (make sure it is v1): npm install parcel@1
  10. Install the project depencencies: npm install
  11. Build the JS code of the plugin 'plugin-grapesjs-builder' in the dev mode (not minified): npm run build-dev
  12. Test the code locally. Make sure nothing is cached. Recommended way is using the incognito mode. E.g. https://mautic.ddev.site/s/emails
  13. Check the browser console if you find errors. They help a lot with debugging!

License

MIT

Contributors ✨

Thanks goes to these wonderful people (emoji key):

This project follows the all-contributors specification. Contributions of any kind welcome!

1.0.3

12 months ago