rails_email_preview 0.1.7 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
![CMS integration screenshot](http://screencloud.net//img/screenshots/b000595dbd13ae061373fd1473f113ba.png)
|
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
|