diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 81e1d47..66b66e3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -276,15 +276,15 @@ The following will inject the action link (or button) into the e-mail: {{ end }} ``` -A good practice is to describe action in footer in case of problem when displaying button and CSS +A good practice is to describe action in footer in case of problem when displaying button and CSS. The text for the description is provided through the `TroubleText` field of the `Product` struct. The text may contain a placeholder `{ACTION}` which is expected to be replaced with the text of the button. The default value of `TroubleText` is `If you’re having trouble with the button '{ACTION}', copy and paste the URL below into your web browser.` ```html -{{ with .Email.Body.Actions }} +{{ with .Email.Body.Actions }} {{ range $action := . }} {{ end }} diff --git a/README.md b/README.md index 5742bba..79d0acd 100644 --- a/README.md +++ b/README.md @@ -157,7 +157,7 @@ To customize the `Copyright`, override it when initializing `Hermes` within your // Configure hermes by setting a theme and your product info h := hermes.Hermes{ // Optional Theme - // Theme: new(Default) + // Theme: new(Default) Product: hermes.Product{ // Appears in header & footer of e-mails Name: "Hermes", @@ -168,6 +168,20 @@ h := hermes.Hermes{ } ``` +To use a custom fallback text at the end of the email, change the `TroubleText` field of the `hermes.Product` struct. The default value is `If you’re having trouble with the button '{ACTION}', copy and paste the URL below into your web browser.`. The `{ACTION}` placeholder will be replaced with the corresponding text of the supplied action button: + +```go +// Configure hermes by setting a theme and your product info +h := hermes.Hermes{ + // Optional Theme + // Theme: new(Default) + Product: hermes.Product{ + // Custom trouble text + TroubleText: "If the {ACTION}-button is not working for you, just copy and paste the URL below into your web browser." + }, +} +``` + ## Elements Hermes supports injecting custom elements such as dictionaries, tables and action buttons into e-mails. diff --git a/default.go b/default.go index 19d5f83..c632288 100644 --- a/default.go +++ b/default.go @@ -346,7 +346,7 @@ func (dt *Default) HTMLTemplate() string { {{ range $action := . }} diff --git a/hermes.go b/hermes.go index 374ca20..d76d5f2 100644 --- a/hermes.go +++ b/hermes.go @@ -33,10 +33,11 @@ const TDRightToLeft TextDirection = "rtl" // Product represents your company product (brand) // Appears in header & footer of e-mails type Product struct { - Name string - Link string // e.g. https://matcornic.github.io - Logo string // e.g. https://matcornic.github.io/img/logo.png - Copyright string // Copyright © 2017 Hermes. All rights reserved. + Name string + Link string // e.g. https://matcornic.github.io + Logo string // e.g. https://matcornic.github.io/img/logo.png + Copyright string // Copyright © 2017 Hermes. All rights reserved. + TroubleText string // TroubleText is the sentence at the end of the email for users having trouble with the button (default to `If you’re having trouble with the button '{ACTION}', copy and paste the URL below into your web browser.`) } // Email is the email containing a body @@ -120,8 +121,9 @@ func setDefaultHermesValues(h *Hermes) error { Theme: new(Default), TextDirection: defaultTextDirection, Product: Product{ - Name: "Hermes", - Copyright: "Copyright © 2017 Hermes. All rights reserved.", + Name: "Hermes", + Copyright: "Copyright © 2017 Hermes. All rights reserved.", + TroubleText: "If you’re having trouble with the button '{ACTION}', copy and paste the URL below into your web browser.", }, } // Merge the given hermes engine configuration with default one diff --git a/hermes_test.go b/hermes_test.go index 47bc131..87d3ef9 100644 --- a/hermes_test.go +++ b/hermes_test.go @@ -102,7 +102,7 @@ func (ed *SimpleExample) assertHTMLContent(t *testing.T, r string) { assert.Contains(t, r, "http://hermes-link.com", "Product: Should find the link of the product in email") assert.Contains(t, r, "Copyright © Hermes-Test", "Product: Should find the Copyright of the product in email") assert.Contains(t, r, "http://www.duchess-france.org/wp-content/uploads/2016/01/gopher.png", "Product: Should find the logo of the product in email") - + assert.Contains(t, r, "If you’re having trouble with the button 'Confirm your account', copy and paste the URL below into your web browser.", "Product: Should find the trouble text in email") // Assert on email body assert.Contains(t, r, "Hi Jon Snow", "Name: Should find the name of the person") assert.Contains(t, r, "Welcome to Hermes", "Intro: Should have intro")
-

If you’re having trouble with the button '{{ $action.Button.Text }}', copy and paste the URL below into your web browser.

+

{{$.Hermes.Product.TroubleText | replace "{ACTION}" $action.Button.Text}}

{{ $action.Button.Link }}

-

If you’re having trouble with the button '{{ $action.Button.Text }}', copy and paste the URL below into your web browser.

+

{{$.Hermes.Product.TroubleText | replace "{ACTION}" $action.Button.Text}}

{{ $action.Button.Link }}