Mailspring/examples/N1-Composer-Templates
Drew Regitsky 2e1056f49e refactor(templates): major additions and refactoring for the Templates plugin.
Summary:
Adds several new features to the templates plugin, fixes some existing bugs, and
refactors existing code.

New Plugin Features/Fixes:
- Changes the templates editor in preferences to allow variables to be entered with
 `{{brackets}}`. Handles many contenteditable complexities to implement.
- Better interaction for renaming and deleting of templates in the editor.
- Changes tabbing behavior when using templates. Tabbing between variables now wraps
  around, and typing tab from outside a variable region highlights the closest region.
- Prevents "Enter" key in the composer when inside a variable region, and strips all
  formatting/tags from within the region - this prevents major contenteditable issues
  that can result in inline CSS in the style of our variable regions, which will not be
  removed when sending.
- Shows a warning when choosing a template if it will replace existing text in a draft.
- Prevents invalid characters in template names (due to filenames, esp. on Windows),
  and shows an error message. Strips these characters from draft titles when making a
  template.
- Fixes a bug where TemplateStore's initialization code was being called multiple times.

New N1 code:
- Several new methods in `DOMUtils` useful for working with contenteditable.
- Implement some missing methods in `Editor`

Refactor:
- Major refactor/rewrite of template composer extension to use new DOMUtils methods
  and simplify the logic (while adding new functionality).

Remaining issues:
- `preferences-tempaltes.cjsx` and `template-editor.coffee` should be rewritten in ES6
  for consistency
- Need tests for new DOMUtils functions and for new Templates plugin code.

Test Plan: manual, need to update specs

Reviewers: evan, bengotow

Reviewed By: evan, bengotow

Subscribers: juan

Differential Revision: https://phab.nylas.com/D2382
2015-12-29 15:11:04 -08:00
..
assets feat(templates): Final examples package is in - templates! 2015-10-03 14:05:47 -07:00
lib refactor(templates): major additions and refactoring for the Templates plugin. 2015-12-29 15:11:04 -08:00
spec refactor(templates): major additions and refactoring for the Templates plugin. 2015-12-29 15:11:04 -08:00
stylesheets refactor(templates): major additions and refactoring for the Templates plugin. 2015-12-29 15:11:04 -08:00
icon.png fix(sync): Request all labels / folders to avoid paging and missing inbox 2015-10-03 23:53:59 -07:00
package.json fix(templates): Example now depends on underscore 2015-12-07 17:33:51 -08:00
README.md fix(examples): small fixes in READMEs 2015-12-01 15:59:00 -08:00
screenshot.png Convert Composer Template example to ES6 2015-11-14 22:12:06 -08:00

Composer Templates

Create templates you can use to pre-fill the N1 composer - never type the same email again! Templates live in the ~/.nylas/templates directory on your computer. Each template is an HTML file - the name of the file is the name of the template, and it's contents are the default message body.

If you include HTML <code> tags in your template, you can create regions that you can jump between and fill easily. Give <code> tags the var class to mark them as template regions. Add the empty class to make them dark yellow. When you send your message, <code> tags are always stripped so the recipient never sees any highlighting.

This example is a good starting point for plugins that want to extend the composer experience.

Install this plugin

  1. Download and run N1

  2. From the menu, select Developer > Install a Plugin Manually... The dialog will default to this examples directory. Just choose the package to install it!

    When you install packages, they're moved to ~/.nylas/packages, and N1 runs apm install on the command line to fetch dependencies listed in the package's package.json