Packages
pow
1.0.31
1.0.39
1.0.38
1.0.37
1.0.36
1.0.35
1.0.34
1.0.33
1.0.32
1.0.31
1.0.30
1.0.29
1.0.28
1.0.27
1.0.26
1.0.25
1.0.24
1.0.23
1.0.22
1.0.21
1.0.20
1.0.19
1.0.18
1.0.17
1.0.16
1.0.15
1.0.14
1.0.13
1.0.12
1.0.11
1.0.10
1.0.9
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
1.0.0-rc.4
1.0.0-rc.3
1.0.0-rc.2
1.0.0-rc.1
1.0.0-rc.0
0.1.0-rc.1
0.1.0-alpha.8
0.1.0-alpha.7
retired
0.1.0-alpha.6
0.1.0-alpha.5
0.1.0-alpha.4
0.1.0-alpha.3
0.1.0-alpha.2
0.1.0-alpha.1
0.1.0-alpha
Robust user authentication solution
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
lib/pow/phoenix/mailer/template.ex
defmodule Pow.Phoenix.Mailer.Template do
@moduledoc """
Module that builds mailer templates for Phoenix templates using EEx with
`Phoenix.HTML.Engine`.
## Usage
defmodule PowExtension.Phoenix.Mailer.MailTemplate do
use Pow.Phoenix.Mailer.Template
template :mail, "Subject line", "Text content", "<p>HTML content</p>"
end
"""
@doc false
defmacro __using__(_opts) do
quote do
use Pow.Phoenix.Mailer.Component
import unquote(__MODULE__)
import Phoenix.HTML.{Link, Tag}
end
end
defstruct [:subject, :text, :html]
@doc """
Generate template functions.
This macro that will compile a mailer template from the provided binaries,
and add the compiled versions to `render/2` functions. The `text/1` and
`html/1` outputs the binaries. A `subject/1` function will be added too.
"""
@spec template(atom(), binary(), binary(), binary()) :: Macro.t()
defmacro template(action, subject, text, html) do
quoted_subject = EEx.compile_string(subject)
quoted_text = EEx.compile_string(text)
quoted_html = EEx.compile_string(html, engine: Phoenix.HTML.Engine, line: 1, trim: true)
quote do
def unquote(action)(var!(assigns)) do
struct!(unquote(__MODULE__),
subject: unquote(quoted_subject),
text: unquote(quoted_text),
html: unquote(quoted_html)
)
end
def subject(unquote(action)), do: unquote(subject)
def text(unquote(action)), do: unquote(text)
def html(unquote(action)), do: unquote(html)
end
end
end