rails_email_preview 0.1.7 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +6 -2
- data/README.md +26 -28
- data/app/controllers/rails_email_preview/application_controller.rb +2 -2
- data/app/controllers/rails_email_preview/emails_controller.rb +1 -1
- data/app/helpers/rails_email_preview/rep_urls_helper.rb +10 -0
- data/app/views/rails_email_preview/emails/_email_iframe.html.slim +1 -1
- data/app/views/rails_email_preview/emails/_options.html.slim +2 -2
- data/app/views/rails_email_preview/emails/index.html.slim +1 -1
- data/app/views/rails_email_preview/emails/show.html.slim +1 -1
- data/config/initializers/rails_email_preview.rb +21 -19
- data/config/routes.rb +7 -9
- data/lib/generators/rails_email_preview/install_generator.rb +1 -2
- data/lib/rails_email_preview.rb +12 -1
- data/lib/rails_email_preview/main_app_route_delegator.rb +14 -0
- data/lib/rails_email_preview/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9ef1fc8ffd22f2ccd7e15c77984a3daa0ac5acd
|
4
|
+
data.tar.gz: d456a66d74d63d7dea3ad69a0e640b2cc2496e92
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e86ba0b33764680726530b9fe0061997d0b9fd3ddcf6b7502a811b160ebd0b03b7d6296f493db2a18a92199f81a552969c1d5598d5a00f830746d844dfc96f3
|
7
|
+
data.tar.gz: cbcb488141a9ff3249074e6a01e632ab00fa0d01cc399999ce735785b3267226af226d7c7b630034939fdf6c722cf0a46ce8c228bce3aa97f839746e384c48ca
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -12,7 +12,7 @@ How to
|
|
12
12
|
|
13
13
|
Add to Gemfile
|
14
14
|
|
15
|
-
gem 'rails_email_preview', '~> 0.
|
15
|
+
gem 'rails_email_preview', '~> 0.2.0'
|
16
16
|
|
17
17
|
REP handles setup for you:
|
18
18
|
|
@@ -55,32 +55,29 @@ Routing
|
|
55
55
|
|
56
56
|
You can access REP urls like this:
|
57
57
|
|
58
|
-
|
59
|
-
|
58
|
+
# engine root:
|
59
|
+
rails_email_preview.rep_root_url
|
60
|
+
# list of emails (same as root):
|
61
|
+
rails_email_preview.rep_emails_url
|
62
|
+
# email show:
|
63
|
+
rails_email_preview.rep_email_url(mail_class: "user_mailer", mail_action: "welcome")
|
64
|
+
|
60
65
|
Email editing
|
61
66
|
-------------
|
62
67
|
|
63
68
|
You can use [comfortable_mexican_sofa](https://github.com/comfy/comfortable-mexican-sofa) for storing and editing emails.
|
64
|
-
REP comes with
|
69
|
+
REP comes with an integration for it -- see [CMS Guide](https://github.com/glebm/rails_email_preview/wiki/Edit-Emails-with-Comfortable-Mexican-Sofa).
|
65
70
|
|
66
71
|

|
67
72
|
|
68
73
|
|
69
|
-
Premailer
|
74
|
+
Premailer
|
70
75
|
---------------------
|
71
76
|
|
72
77
|
[Premailer](https://github.com/alexdunae/premailer) automatically translates standard CSS rules into old-school inline styles. Integration can be done by using the <code>before_render</code> hook.
|
73
78
|
|
74
79
|
To integrate Premailer with your Rails app you can use either [actionmailer_inline_css](https://github.com/ndbroadbent/actionmailer_inline_css) or [premailer-rails](https://github.com/fphilipe/premailer-rails).
|
75
|
-
|
76
|
-
For [actionmailer_inline_css](https://github.com/ndbroadbent/actionmailer_inline_css), add to `RailsEmailPreview.setup`:
|
77
|
-
|
78
|
-
config.before_render { |message| ActionMailer::InlineCssHook.delivering_email(message) }
|
79
|
-
|
80
|
-
For [premailer-rails](https://github.com/fphilipe/premailer-rails), add to `RailsEmailPreview.setup`:
|
81
|
-
|
82
|
-
config.before_render { |message| Premailer::Rails::Hook.delivering_email(message) }
|
83
|
-
|
80
|
+
Simply uncomment the relevant options in [the initializer](https://github.com/glebm/rails_email_preview/blob/master/config/initializers/rails_email_preview.rb). *initializer is generated during `rails g rails_email_preview:install`*
|
84
81
|
|
85
82
|
I18n
|
86
83
|
-------------
|
@@ -102,30 +99,31 @@ Views
|
|
102
99
|
|
103
100
|
You can render all REP views inside your own layout:
|
104
101
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
When using a layout other than the default, that layout has to access all route helpers via `main_app`, e.g. `main_app.login_url`.
|
110
|
-
This is due to how [isolated engines](http://edgeapi.rubyonrails.org/classes/Rails/Engine.html#label-Isolated+Engine) work in Rails.
|
111
|
-
|
112
|
-
You can also override any individual view by placing a file with the same path in your project's `app/views`, e.g. `app/views/rails_email_preview/emails/index.html.slim`.
|
113
|
-
|
114
|
-
*Pull requests adding view hooks are welcome!*
|
102
|
+
# # Use admin layout with REP:
|
103
|
+
# RailsEmailPreview::ApplicationController.layout 'admin'
|
104
|
+
# # If you are using a custom layout, you will want to make app routes available to REP:
|
105
|
+
# Rails.application.config.to_prepare { RailsEmailPreview.inline_main_app_routes! }
|
115
106
|
|
107
|
+
You can also override any individual view by placing a file with the same path in your project's `app/views`,
|
108
|
+
e.g. `app/views/rails_email_preview/emails/index.html.slim`. *PRs accepted* if you need hooks.
|
116
109
|
|
117
110
|
Authentication & authorization
|
118
111
|
------------------------------
|
119
112
|
|
120
|
-
|
113
|
+
You can specify the parent controller for REP controller, and it will inherit all before filters.
|
114
|
+
Note that this must be placed before any other references to REP application controller in the initializer:
|
115
|
+
|
116
|
+
RailsEmailPreview.parent_controller = 'Admin::ApplicationController' # default: '::ApplicationController'
|
117
|
+
|
118
|
+
Alternatively, to have custom rules just for REP you can:
|
121
119
|
|
122
120
|
Rails.application.config.to_prepare do
|
123
121
|
RailsEmailPreview::ApplicationController.module_eval do
|
124
|
-
before_filter :
|
122
|
+
before_filter :check_rep_permissions
|
125
123
|
|
126
124
|
private
|
127
|
-
def
|
128
|
-
render status: 403 unless current_user
|
125
|
+
def check_rep_permissions
|
126
|
+
render status: 403 unless current_user && can_manage_emails?(current_user)
|
129
127
|
end
|
130
128
|
end
|
131
129
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class RailsEmailPreview::EmailsController < RailsEmailPreview::ApplicationController
|
1
|
+
class RailsEmailPreview::EmailsController < ::RailsEmailPreview::ApplicationController
|
2
2
|
include ERB::Util
|
3
3
|
before_filter :load_preview_class, except: :index
|
4
4
|
before_filter :set_email_preview_locale
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module RepUrlsHelper
|
2
|
+
# to make it easy to change root url without breaking backwards compatibility, declare them here as aliases
|
3
|
+
def rep_root_url
|
4
|
+
rails_email_preview.rep_emails_url
|
5
|
+
end
|
6
|
+
|
7
|
+
def rep_root_path
|
8
|
+
rails_email_preview.rep_emails_path
|
9
|
+
end
|
10
|
+
end
|
@@ -12,5 +12,5 @@ javascript:
|
|
12
12
|
}
|
13
13
|
|
14
14
|
pre#loading-el.lead #{icon 'spinner', 'spin'} Loading...
|
15
|
-
iframe#src-iframe[src=rails_email_preview.
|
15
|
+
iframe#src-iframe[src=rails_email_preview.rep_raw_email_url(params.slice(:mail_class, :mail_action, :part_type).merge(email_locale: @email_locale))
|
16
16
|
width="100%" height=1 onLoad="iFrameLoad('src-iframe')" style="border:none;padding:0;margin:0"]
|
@@ -1,9 +1,9 @@
|
|
1
1
|
p.btn-group
|
2
2
|
- { 'text/html' => 'HTML', 'text/plain' => 'Text', 'raw' => 'Raw'}.each do |mime, label|
|
3
|
-
a.btn.btn-link href=rails_email_preview.
|
3
|
+
a.btn.btn-link href=rails_email_preview.rep_email_url(params.merge(part_type: mime)) class=('active' if @part_type == mime)
|
4
4
|
= label
|
5
5
|
br
|
6
6
|
p.btn-group
|
7
7
|
- I18n.available_locales.each do |locale|
|
8
|
-
a.btn.btn-link href=rails_email_preview.
|
8
|
+
a.btn.btn-link href=rails_email_preview.rep_email_url(params.merge(part_type: @part_type, email_locale: locale)) class=('active' if @email_locale == locale.to_s)
|
9
9
|
= locale
|
@@ -6,5 +6,5 @@ ul.list-unstyled
|
|
6
6
|
ul.list-group
|
7
7
|
- m.constantize.instance_methods(false).map(&:to_s).each do |method|
|
8
8
|
li.list-group-item
|
9
|
-
a href=rails_email_preview.
|
9
|
+
a href=rails_email_preview.rep_email_url(mail_class: m.to_s.underscore, mail_action: method.to_s, email_locale: @email_locale)
|
10
10
|
= method.to_s.humanize
|
@@ -1,29 +1,31 @@
|
|
1
1
|
require 'rails_email_preview'
|
2
2
|
|
3
|
-
|
3
|
+
#= Premailer
|
4
|
+
#
|
5
|
+
# # process preview with premailer-rails:
|
4
6
|
# RailsEmailPreview.before_render { |message| Premailer::Rails::Hook.delivering_email(message) }
|
5
|
-
|
6
|
-
# with actionmailer-inline-css
|
7
|
+
# # process preview with actionmailer-inline-css:
|
7
8
|
# RailsEmailPreview.before_render { |message| ActionMailer::InlineCssHook.delivering_email(message) }
|
8
9
|
|
10
|
+
#= Comfortable Mexican Sofa
|
11
|
+
#
|
12
|
+
# # enable comfortable_mexican_sofa integration:
|
13
|
+
# require 'rails_email_preview/integrations/comfortable_mexica_sofa'
|
14
|
+
|
15
|
+
#= Application-specific
|
16
|
+
#
|
17
|
+
# # You can specify a controller for RailsEmailPreview::ApplicationController to inherit from:
|
18
|
+
# RailsEmailPreview.parent_controller = 'Admin::ApplicationController' # default: '::ApplicationController'
|
19
|
+
#
|
20
|
+
# # Render REP inside a custom layout (set to 'application' to use app layout, default is REP's own layout)
|
21
|
+
# RailsEmailPreview::ApplicationController.layout 'admin'
|
22
|
+
|
9
23
|
Rails.application.config.to_prepare do
|
10
|
-
#
|
24
|
+
# # If you use a *custom layout*, make route helpers available to REP:
|
25
|
+
# RailsEmailPreview.inline_main_app_routes!
|
26
|
+
|
27
|
+
# Auto-load preview classes from:
|
11
28
|
RailsEmailPreview.preview_classes = Dir['app/mailer_previews/*_preview.rb'].map { |p|
|
12
29
|
File.basename(p, '.rb').camelize
|
13
30
|
}
|
14
|
-
|
15
|
-
# Use a custom layout
|
16
|
-
# RailsEmailPreview::ApplicationController.layout 'admin'
|
17
|
-
|
18
|
-
# Add authorization
|
19
|
-
# RailsEmailPreview::ApplicationController.module_eval do
|
20
|
-
# before_filter :check_permissions
|
21
|
-
# private
|
22
|
-
# def check_permissions
|
23
|
-
# render status: 403 unless current_user.try(:admin?)
|
24
|
-
# end
|
25
|
-
# end
|
26
31
|
end
|
27
|
-
|
28
|
-
# Uncomment this to enable comfortable_mexican_sofa integration
|
29
|
-
# require 'rails_email_preview/integrations/comfortable_mexica_sofa'
|
data/config/routes.rb
CHANGED
@@ -1,11 +1,9 @@
|
|
1
1
|
RailsEmailPreview::Engine.routes.draw do
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
:to => 'emails#show',
|
10
|
-
:mail_class => %r([\w/]+)
|
2
|
+
get '/' => 'emails#index', as: :rep_emails
|
3
|
+
|
4
|
+
get 'raw/:mail_class/:mail_action' => 'emails#show_raw', as: :rep_raw_email
|
5
|
+
get ':mail_class/:mail_action' => 'emails#show', as: :rep_email
|
6
|
+
|
7
|
+
# define alias for the root url as part of stable api
|
8
|
+
get '/' => 'emails#index', as: :rep_root
|
11
9
|
end
|
@@ -10,8 +10,7 @@ module RailsEmailPreview
|
|
10
10
|
|
11
11
|
def generate_routing
|
12
12
|
route "mount RailsEmailPreview::Engine, at: 'emails'"
|
13
|
-
log "# You can access REP urls like this:
|
14
|
-
rails_email_preview.root_url #=> '/emails'"
|
13
|
+
log "# You can access REP urls like this: rails_email_preview.rep_emails_url #=> '/emails'"
|
15
14
|
end
|
16
15
|
end
|
17
16
|
end
|
data/lib/rails_email_preview.rb
CHANGED
@@ -1,6 +1,13 @@
|
|
1
1
|
require 'rails_email_preview/engine'
|
2
|
+
require 'rails_email_preview/main_app_route_delegator'
|
3
|
+
require 'rails_email_preview/version'
|
2
4
|
|
3
5
|
module RailsEmailPreview
|
6
|
+
|
7
|
+
mattr_accessor :parent_controller
|
8
|
+
self.parent_controller = '::ApplicationController'
|
9
|
+
|
10
|
+
# auto-loading configured in initializer
|
4
11
|
mattr_accessor :preview_classes
|
5
12
|
|
6
13
|
class << self
|
@@ -14,6 +21,10 @@ module RailsEmailPreview
|
|
14
21
|
((@hooks ||= {})[:before_render] ||= []) << block
|
15
22
|
end
|
16
23
|
|
24
|
+
def inline_main_app_routes!
|
25
|
+
::RailsEmailPreview::ApplicationController.helper ::RailsEmailPreview::MainAppRouteDelegator
|
26
|
+
end
|
27
|
+
|
17
28
|
def setup
|
18
29
|
yield self
|
19
30
|
end
|
@@ -22,7 +33,7 @@ module RailsEmailPreview
|
|
22
33
|
# = Editing settings
|
23
34
|
# edit link is rendered inside an iframe, so these options are provided for simple styling
|
24
35
|
mattr_accessor :edit_link_text
|
25
|
-
self.edit_link_text
|
36
|
+
self.edit_link_text = '✎ Edit Text'
|
26
37
|
mattr_accessor :edit_link_style
|
27
38
|
self.edit_link_style = <<-CSS.strip.gsub(/\n+/m, ' ')
|
28
39
|
display: block;
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module RailsEmailPreview::MainAppRouteDelegator
|
2
|
+
# delegate url helpers to main_app
|
3
|
+
def method_missing(method, *args, &block)
|
4
|
+
if method.to_s =~ /_(?:path|url)$/ && main_app.respond_to?(method)
|
5
|
+
main_app.send(method, *args)
|
6
|
+
else
|
7
|
+
super
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def respond_to?(method)
|
12
|
+
super || main_app.respond_to?(method)
|
13
|
+
end
|
14
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_email_preview
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gleb Mazovetskiy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-06-
|
11
|
+
date: 2013-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -106,6 +106,7 @@ files:
|
|
106
106
|
- app/controllers/rails_email_preview/application_controller.rb
|
107
107
|
- app/controllers/rails_email_preview/emails_controller.rb
|
108
108
|
- app/helpers/rails_email_preview/emails_helper.rb
|
109
|
+
- app/helpers/rails_email_preview/rep_urls_helper.rb
|
109
110
|
- app/views/integrations/cms/_customize_cms_for_rails_email_preview.html.slim
|
110
111
|
- app/views/layouts/rails_email_preview/application.html.slim
|
111
112
|
- app/views/rails_email_preview/emails/_email_iframe.html.slim
|
@@ -117,6 +118,7 @@ files:
|
|
117
118
|
- lib/generators/rails_email_preview/update_previews_generator.rb
|
118
119
|
- lib/rails_email_preview/engine.rb
|
119
120
|
- lib/rails_email_preview/integrations/comfortable_mexica_sofa.rb
|
121
|
+
- lib/rails_email_preview/main_app_route_delegator.rb
|
120
122
|
- lib/rails_email_preview/version.rb
|
121
123
|
- lib/rails_email_preview.rb
|
122
124
|
- config/initializers/rails_email_preview.rb
|