0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-01-20 22:42:53 -05:00
Independent technology for modern publishing, memberships, subscriptions and newsletters.
Find a file
Kevin Ansfield a801352c7f Added email card and replacement handling to member emails
no issue

- adjusted mega's post serializer to get full email contents
  - fetch `mobiledoc` from the API rather than the pre-rendered `html` and `plaintext`
  - re-generate `html` using the mobiledoc renderer with an "email" target so that the email-only card content is included
  - re-generate `plaintext` from the newly generated email html

- added replacement handling to mega's `getEmailData` function
  - find all of our `%%{replacement "fallback"}%%` instances in the html template and push them into a replacements array with the respective property on the member instance and desired fallback
  - transform the replacement for Mailgun compatibility. Mailgun uses `%recipient.variable_name%` for its template variables so we need to replace our custom replacement string with the compatible version. Our replacements system allows for the same replacement (`{subscriber_name}`) to be used multiple times and have different fallbacks, Mailgun doesn't support fallbacks so for each replacement we also need an indexed `variable_name` part so that we can put our fallbacks in the correct place
  - perform the same Mailgun template transformation for the plaintext version except we re-use the replacements array to avoid bloating the API request to Mailgun with duplicate template variables for every recipient
  - swapped `reduce` for a plain loop for easier readability
2020-04-17 10:23:03 +01:00
.github Enabled FORCE_COLOR for CI tests 2020-04-16 11:01:27 +01:00
content Updated Casper to v3.0.12 2020-04-07 11:12:52 +01:00
core Added email card and replacement handling to member emails 2020-04-17 10:23:03 +01:00
test Fixed regression test for tag edit redirects 2020-04-16 22:10:28 +12:00
.editorconfig Removed Makefile settings from .editorconfig 2019-07-31 17:21:16 +08:00
.eslintignore Moved grunt-eslint to npm script executing eslint (#10474) 2019-02-11 13:26:06 +01:00
.eslintrc.json Switched to eslint-plugin-ghost (#9835) 2018-09-17 20:49:30 +02:00
.gitattributes Enforced unix line endings (#9871) 2018-10-23 10:59:09 +02:00
.gitignore Move tests from core to root (#11700) 2020-03-30 16:26:47 +01:00
.gitmodules Switched to using relative urls for submodules 2018-12-10 16:56:35 +00:00
.npmignore Added changelog.md to .npmignore 2020-04-07 11:53:40 +01:00
config.development.json Removed local setting fron config.dev.json 2019-07-22 13:21:02 +08:00
Gruntfile.js Switched to custom GitHub Action for a release 2020-04-03 13:37:33 +01:00
index.js Integrated Sentry error tracking 2020-02-03 13:43:43 +00:00
LICENSE 2020 2020-01-06 10:51:18 +01:00
MigratorConfig.js Moved ghost-version to lib 2017-12-14 22:14:55 +01:00
package.json Update dependency express-session to v1.17.1 2020-04-17 05:14:11 +00:00
PRIVACY.md Updated links to docs (#10941) 2019-07-22 18:17:50 +08:00
README.md Updated README with GitHub Actions badge 2020-03-05 10:03:13 +00:00
renovate.json Move tests from core to root (#11700) 2020-03-30 16:26:47 +01:00
SECURITY.md Updated links to docs (#10941) 2019-07-22 18:17:50 +08:00
yarn.lock Update dependency express-session to v1.17.1 2020-04-17 05:14:11 +00:00

Ghost

Ghost.org | Features | Showcase | Forum | Documentation | Contributing | Twitter

Downloads Latest release Build status Contributors OpenCollective

 

Fiercely independent, professional publishing. Ghost is the most popular open source, headless Node.js CMS which already works with all the tools you know and love.

Ghost(Pro)

The easiest way to deploy Ghost is with our official Ghost(Pro) managed service. You can have a fresh instance up and running in a couple of clicks with a worldwide CDN, backups, security and maintenance all done for you.

Not only will it save you hours of maintenance per month, but all revenue goes to the Ghost Foundation, which funds the maintenance and further development of Ghost itself. So youll be supporting open source software and getting a great service! Alternatively if you'd like to support us, we're very grateful to all our backers on Open Collective ❤️

If you prefer to run on your own infrastructure, we also provide 1-off installs and managed support and maintenance plans via Ghost(Valet) - which can save a substantial amount of developer time and resources.

 

Quickstart Install

If you want to run your own instance of Ghost, in most cases the best way is to use our CLI tool

$ npm install ghost-cli -g

 

Then, if installing locally add the local flag to get up and running in under a minute - Local install docs

$ ghost install local

 

or on a server run the full install, including automatic SSL setup using LetsEncrypt - Production install docs

$ ghost install

 

Check out our official documentation for more information about our recommended hosting stack & properly upgrading Ghost, plus everything you need to develop your own Ghost themes or work with our API.

 

Getting Help

You can find answers to a huge variety of questions, along with a large community of helpful developers over on the Ghost forum - replies are generally very quick. Ghost(Pro) customers also have access to 24/7 email support.

To stay up to date with all the latest news and product updates, make sure you subscribe to our blog — or you can always follow us on Twitter, if you prefer your updates bite-sized and facetious. 🎷🐢

 

Contributors & Advanced Developers

For anyone wishing to contribute to Ghost or to hack/customise core files we recommend following our full development setup guides: General Contributor Guide | Developer Setup Instructions | Admin Client development guide

 

Copyright & License

Copyright (c) 2013-2020 Ghost Foundation - Released under the MIT license. Ghost and the Ghost Logo are trademarks of Ghost Foundation Ltd. Please see our trademark policy for info on acceptable usage.