rails_email_preview 0.2.9 → 0.2.10
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/README.md +6 -6
- data/app/views/integrations/cms/_customize_cms_for_rails_email_preview.html.slim +25 -24
- data/config/initializers/rails_email_preview.rb +6 -10
- data/lib/rails_email_preview.rb +12 -1
- data/lib/rails_email_preview/integrations/comfortable_mexica_sofa.rb +14 -12
- data/lib/rails_email_preview/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d66ba0f93f6cd3a1832c10f9b0ee96d264cbcc1c
|
4
|
+
data.tar.gz: 5e2869ecf1bf1882d35c0717b30d2eeac3611ec1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea278d1bc029a4691f8e1ade7943b62f7685c4f44fda6599c310776d9fa1d5f153abcd8c92a180ac8a6503eb6f329c394c5591af4329d6a2619d05ca57eb3708
|
7
|
+
data.tar.gz: 60d526c9f9686bd64ce7cac42d71b908d991fca59a7efca29555779c3881cb70f7c7ce640904f2559df643d755d6f80871de09046c880643ad1f1c8a6c232a96
|
data/README.md
CHANGED
@@ -17,7 +17,7 @@ How to
|
|
17
17
|
|
18
18
|
Add to Gemfile
|
19
19
|
|
20
|
-
gem 'rails_email_preview', '~> 0.2'
|
20
|
+
gem 'rails_email_preview', '~> 0.2.10'
|
21
21
|
|
22
22
|
REP handles setup for you:
|
23
23
|
|
@@ -119,10 +119,10 @@ Views
|
|
119
119
|
|
120
120
|
You can render all REP views inside your app layout (this will need styling to look nice if you don't use bootstrap):
|
121
121
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
122
|
+
Rails.application.config.to_prepare do
|
123
|
+
# Use admin layout with REP (this will also make app routes accessible within REP):
|
124
|
+
RailsEmailPreview.layout = 'admin'
|
125
|
+
end
|
126
126
|
|
127
127
|
REP allows you to customize some of the element classes via `RailsEmailPreview.style`:
|
128
128
|
|
@@ -150,7 +150,7 @@ Authentication & authorization
|
|
150
150
|
------------------------------
|
151
151
|
|
152
152
|
You can specify the parent controller for REP controller, and it will inherit all before filters.
|
153
|
-
Note that this must be placed before any other references to REP application controller in the initializer:
|
153
|
+
Note that this must be placed before any other references to REP application controller in the initializer (and before `layout=` call):
|
154
154
|
|
155
155
|
RailsEmailPreview.parent_controller = 'Admin::ApplicationController' # default: '::ApplicationController'
|
156
156
|
|
@@ -1,33 +1,34 @@
|
|
1
1
|
-# When rendering inside rails_email_preview hide nav, and hide irrelevant things from the form
|
2
2
|
ruby:
|
3
3
|
snippet = @snippet || @record.is_a?(Cms::Snippet) && @record
|
4
|
-
if snippet
|
5
|
-
p = ::RailsEmailPreview::Integrations::ComfortableMexicanSofa.rep_email_params_from_snippet(snippet)
|
4
|
+
if snippet && (p = ::RailsEmailPreview::Integrations::ComfortableMexicanSofa.rep_email_params_from_snippet(snippet))
|
6
5
|
show_url = rails_email_preview.rep_raw_email_url(p.merge part_type: 'text/html')
|
7
6
|
end
|
8
|
-
javascript:
|
9
|
-
jQuery(function($) {
|
10
|
-
if (window.parent && /email/.test(parent.location.href)) {
|
11
|
-
// Hide nav:
|
12
|
-
$('.left-column,.right-column').hide();
|
13
|
-
$('.center-column').css('margin', 0);
|
14
|
-
$('.page-header h2').html(
|
15
|
-
"Editing email" +
|
16
|
-
" <a class='btn btn-primary' href='#{show_url}'>#{t 'rep.view_link'}</a>"
|
17
|
-
)
|
18
7
|
|
19
|
-
|
20
|
-
|
8
|
+
- if show_url.present?
|
9
|
+
javascript:
|
10
|
+
jQuery(function($) {
|
11
|
+
if (window.parent && (new RegExp('#{rails_email_preview.rep_root_path}')).test(parent.location.href)) {
|
12
|
+
// Hide nav:
|
13
|
+
$('.left-column,.right-column').hide();
|
14
|
+
$('.center-column').css('margin', 0);
|
15
|
+
$('.page-header h2').html(
|
16
|
+
"Editing email" +
|
17
|
+
" <a class='btn btn-primary' href='#{show_url}'>#{t 'rep.view_link'}</a>"
|
18
|
+
)
|
21
19
|
|
22
|
-
|
23
|
-
|
24
|
-
control('content').find('.control-label').text("Body");
|
20
|
+
// Snippet form:
|
21
|
+
var control = function(name) { return $('[name^="snippet[' + name + ']"]').closest('.control-group'); };
|
25
22
|
|
26
|
-
|
27
|
-
|
28
|
-
|
23
|
+
// retext labels
|
24
|
+
control('label').find('.control-label').text("Subject");
|
25
|
+
control('content').find('.control-label').text("Body");
|
29
26
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
27
|
+
// hide identifier and categories
|
28
|
+
control('identifier').hide();
|
29
|
+
control('category_ids').hide()
|
30
|
+
|
31
|
+
// Do not mess with identifier
|
32
|
+
$('[data-slug]').removeAttr('data-slug');
|
33
|
+
}
|
34
|
+
});
|
@@ -13,6 +13,9 @@ require 'rails_email_preview'
|
|
13
13
|
#
|
14
14
|
# # do not show Send Email button
|
15
15
|
# config.enable_send_email = false
|
16
|
+
#
|
17
|
+
# # You can specify a controller for RailsEmailPreview::ApplicationController to inherit from:
|
18
|
+
# config.parent_controller = 'Admin::ApplicationController' # default: '::ApplicationController'
|
16
19
|
#end
|
17
20
|
|
18
21
|
#= REP + Comfortable Mexican Sofa integration
|
@@ -20,17 +23,10 @@ require 'rails_email_preview'
|
|
20
23
|
# # enable comfortable_mexican_sofa integration:
|
21
24
|
# require 'rails_email_preview/integrations/comfortable_mexica_sofa'
|
22
25
|
|
23
|
-
#= Application-specific (layout, permissions, customizations)
|
24
|
-
#
|
25
|
-
# # You can specify a controller for RailsEmailPreview::ApplicationController to inherit from:
|
26
|
-
# RailsEmailPreview.parent_controller = 'Admin::ApplicationController' # default: '::ApplicationController'
|
27
|
-
#
|
28
|
-
# # Render REP inside a custom layout (set to 'application' to use app layout, default is REP's own layout)
|
29
|
-
# RailsEmailPreview::EmailsController.layout 'admin'
|
30
|
-
|
31
26
|
Rails.application.config.to_prepare do
|
32
|
-
#
|
33
|
-
#
|
27
|
+
# Render REP inside a custom layout (set to 'application' to use app layout, default is REP's own layout)
|
28
|
+
# This will also make application routes accessible from within REP:
|
29
|
+
# RailsEmailPreview.layout = 'admin'
|
34
30
|
|
35
31
|
# Auto-load preview classes from:
|
36
32
|
RailsEmailPreview.preview_classes = Dir[Rails.root.join 'app/mailer_previews/*_preview.rb'].map { |p|
|
data/lib/rails_email_preview.rb
CHANGED
@@ -37,6 +37,14 @@ module RailsEmailPreview
|
|
37
37
|
}
|
38
38
|
|
39
39
|
class << self
|
40
|
+
def layout=(layout)
|
41
|
+
[::RailsEmailPreview::ApplicationController, ::RailsEmailPreview::EmailsController].each { |ctrl| ctrl.layout layout }
|
42
|
+
if layout && layout !~ %r(^rails_email_preview/)
|
43
|
+
# inline application routes if using an app layout
|
44
|
+
inline_main_app_routes!
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
40
48
|
def run_before_render(mail, preview_class_name, mailer_action)
|
41
49
|
(defined?(@hooks) && @hooks[:before_render] || []).each do |block|
|
42
50
|
block.call(mail, preview_class_name, mailer_action)
|
@@ -48,7 +56,10 @@ module RailsEmailPreview
|
|
48
56
|
end
|
49
57
|
|
50
58
|
def inline_main_app_routes!
|
51
|
-
::RailsEmailPreview::
|
59
|
+
unless ::RailsEmailPreview::EmailsController.instance_variable_get(:@inlined_routes)
|
60
|
+
::RailsEmailPreview::EmailsController.helper ::RailsEmailPreview::MainAppRouteDelegator
|
61
|
+
::RailsEmailPreview::EmailsController.instance_variable_set(:@inlined_routes, true)
|
62
|
+
end
|
52
63
|
end
|
53
64
|
|
54
65
|
def setup
|
@@ -17,6 +17,7 @@ module RailsEmailPreview
|
|
17
17
|
# cms_email_subject(name: "Alice") #=> "Welcome, Alice!"
|
18
18
|
def cms_email_subject(interpolation = {})
|
19
19
|
snippet_id = "email-#{cms_email_id}"
|
20
|
+
return '(no subject)' unless Cms::Snippet.where(identifier: snippet_id).exists?
|
20
21
|
[I18n.locale, I18n.default_locale].compact.each do |locale|
|
21
22
|
site = Cms::Site.find_by_locale(locale)
|
22
23
|
snippet = site.snippets.find_by_identifier(snippet_id)
|
@@ -44,14 +45,17 @@ module RailsEmailPreview
|
|
44
45
|
# Will also render an "✎ Edit text" link if used from
|
45
46
|
def cms_email_snippet(snippet_id = self.cms_email_id)
|
46
47
|
snippet_id = "email-#{snippet_id}"
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
48
|
+
if Cms::Snippet.where(identifier: snippet_id).exists?
|
49
|
+
site = Cms::Site.find_by_locale(I18n.locale)
|
50
|
+
# Fallback default locale: (# prefill)
|
51
|
+
unless (content = cms_snippet_content(snippet_id, site).presence)
|
52
|
+
default_site = Cms::Site.find_by_locale(I18n.default_locale)
|
53
|
+
fallback_content = cms_snippet_content(snippet_id, default_site).presence
|
54
|
+
end
|
55
|
+
result = (content || fallback_content).to_s
|
56
|
+
else
|
57
|
+
result = ''
|
53
58
|
end
|
54
|
-
result = (content || fallback_content).to_s
|
55
59
|
|
56
60
|
# If rendering in preview from admin, add edit/create lnk
|
57
61
|
if cms_email_edit_link?
|
@@ -73,10 +77,8 @@ module RailsEmailPreview
|
|
73
77
|
})
|
74
78
|
end
|
75
79
|
|
76
|
-
result = safe_join ["<table class='rep-edit-link'><tr><td>".html_safe,
|
77
|
-
|
78
|
-
"</td></tr></table>".html_safe,
|
79
|
-
"\n\n", result]
|
80
|
+
result = safe_join ["<table class='rep-edit-link'><tr><td>".html_safe, cms_edit_email_snippet_link(cms_path),
|
81
|
+
"</td></tr></table>".html_safe, "\n\n", result]
|
80
82
|
end
|
81
83
|
result
|
82
84
|
end
|
@@ -87,7 +89,7 @@ module RailsEmailPreview
|
|
87
89
|
|
88
90
|
def self.rep_email_params_from_snippet(snippet)
|
89
91
|
id_prefix = 'email-'
|
90
|
-
return unless snippet && snippet.identifier.starts_with?(id_prefix)
|
92
|
+
return unless snippet && snippet.identifier && snippet.identifier.starts_with?(id_prefix)
|
91
93
|
mailer_cl, act = snippet.identifier[id_prefix.length..-1].split('-')
|
92
94
|
mailer_cl += '_preview'
|
93
95
|
{ mail_class: mailer_cl,
|
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.2.
|
4
|
+
version: 0.2.10
|
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-08-
|
11
|
+
date: 2013-08-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -136,8 +136,8 @@ dependencies:
|
|
136
136
|
- - '>='
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
139
|
-
description:
|
140
|
-
|
139
|
+
description: Rails engine to preview, test send, and edit application email in browser.
|
140
|
+
i18n support, premailer integration, and more.
|
141
141
|
email: glex.spb@gmail.com
|
142
142
|
executables: []
|
143
143
|
extensions: []
|