rails_email_preview 0.2.6 → 0.2.7
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 +20 -3
- data/app/helpers/rails_email_preview/emails_helper.rb +23 -2
- data/app/views/integrations/cms/_customize_cms_for_rails_email_preview.html.slim +5 -7
- data/app/views/rails_email_preview/emails/_format_nav.html.slim +2 -2
- data/app/views/rails_email_preview/emails/_i18n_nav.html.slim +1 -1
- data/app/views/rails_email_preview/emails/index.html.slim +4 -4
- data/app/views/rails_email_preview/emails/show.html.slim +12 -10
- data/lib/rails_email_preview.rb +13 -0
- data/lib/rails_email_preview/integrations/comfortable_mexica_sofa.rb +14 -4
- data/lib/rails_email_preview/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 737f667f2755587a5e1058c0b23ebd67f2b1b9cb
|
4
|
+
data.tar.gz: 0501a6d93155acc2cd89b7c7d2d8c50fa28ff92b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70d12a90a5f9a4988fc4374ef33011f88ccd8905d3c505c9f70567549720251fe93fb5e00419cfc5e3c01d637bca5e38db0154006976daadd05332d700a4fac4
|
7
|
+
data.tar.gz: d27179e2f3e89963fe4005a48cdfb53d84aa36c10352f88ec972fbb62813e4d3d4b5910659e920cbd0b768cae3014261299adcbed93fb10b26084555f32602e6
|
data/README.md
CHANGED
@@ -9,7 +9,7 @@ Preview:
|
|
9
9
|
List:
|
10
10
|
![screenshot][rep-nav-screenshot]
|
11
11
|
|
12
|
-
REP can use the application styles and comes with
|
12
|
+
REP can use the application styles and comes with [simple styles][rep-show-default-screenshot] by default (default markup for [twbs/bootstrap](twbs/bootstrap) 3).
|
13
13
|
*These screenshots are from [Zuigo](http://zuigo.com/), a platform to organize & discover events; using REP default markup and app styles*
|
14
14
|
|
15
15
|
How to
|
@@ -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'
|
21
21
|
|
22
22
|
REP handles setup for you:
|
23
23
|
|
@@ -116,7 +116,24 @@ If you are using `Resque::Mailer` or `Devise::Async`, you can automatically add
|
|
116
116
|
Views
|
117
117
|
---------------------
|
118
118
|
|
119
|
-
|
119
|
+
REP allows you to customize some of the classes via `RailsEmailPreview.style`:
|
120
|
+
|
121
|
+
{
|
122
|
+
btn_default_class: 'btn btn-default',
|
123
|
+
btn_active_class: 'btn btn-primary active',
|
124
|
+
btn_group_class: 'btn-group',
|
125
|
+
list_group_class: 'list-group',
|
126
|
+
list_group_item_class: 'list-group-item',
|
127
|
+
panel_class: 'panel',
|
128
|
+
row_class: 'row',
|
129
|
+
column_class: 'col-%{n}'
|
130
|
+
}
|
131
|
+
|
132
|
+
E.g., to change column class from `col-` to `column-` everywhere where REP uses columns:
|
133
|
+
|
134
|
+
RailsEmailPreview.style[:column_class] = 'column-%{n}'
|
135
|
+
|
136
|
+
If you want to really integrate REP, ou can render all its views inside your own layout (this will need styling to look nice if you don't use bootstrap):
|
120
137
|
|
121
138
|
# # Use admin layout with REP:
|
122
139
|
# RailsEmailPreview::ApplicationController.layout 'admin'
|
@@ -9,12 +9,12 @@ module RailsEmailPreview::EmailsHelper
|
|
9
9
|
|
10
10
|
def change_locale_attr(locale)
|
11
11
|
{href: rails_email_preview.rep_email_url(params.merge(part_type: @part_type, email_locale: locale)),
|
12
|
-
class: (
|
12
|
+
class: rep_btn_class(@email_locale == locale.to_s)}
|
13
13
|
end
|
14
14
|
|
15
15
|
def change_format_attr(mime)
|
16
16
|
{href: rails_email_preview.rep_email_url(params.merge(part_type: mime)),
|
17
|
-
class: (
|
17
|
+
class: rep_btn_class(@part_type == mime)}
|
18
18
|
end
|
19
19
|
|
20
20
|
def locale_name(locale)
|
@@ -67,4 +67,25 @@ module RailsEmailPreview::EmailsHelper
|
|
67
67
|
cols[1].reverse!
|
68
68
|
cols
|
69
69
|
end
|
70
|
+
|
71
|
+
# style
|
72
|
+
def rep_style
|
73
|
+
RailsEmailPreview.style
|
74
|
+
end
|
75
|
+
|
76
|
+
def rep_btn_class(active = false)
|
77
|
+
rep_style[:"btn_#{active ? 'active' : 'default'}_class"]
|
78
|
+
end
|
79
|
+
|
80
|
+
def rep_row_class
|
81
|
+
rep_style[:row_class]
|
82
|
+
end
|
83
|
+
|
84
|
+
def rep_col_class(n)
|
85
|
+
rep_style[:column_class] % {n: n}
|
86
|
+
end
|
87
|
+
|
88
|
+
def rep_btn_group_class
|
89
|
+
rep_style[:btn_group_class]
|
90
|
+
end
|
70
91
|
end
|
@@ -1,11 +1,9 @@
|
|
1
1
|
-# When rendering inside rails_email_preview hide nav, and hide irrelevant things from the form
|
2
2
|
ruby:
|
3
|
-
|
4
|
-
if
|
5
|
-
|
6
|
-
|
7
|
-
url_params[:mail_class] += '_preview'
|
8
|
-
show_url = rails_email_preview.rep_raw_email_url url_params
|
3
|
+
snippet = @snippet || @record.is_a?(Cms::Snippet) && @record
|
4
|
+
if snippet
|
5
|
+
p = ::RailsEmailPreview::Integrations::ComfortableMexicanSofa.rep_email_params_from_snippet(snippet)
|
6
|
+
show_url = rails_email_preview.rep_raw_email_url(p.merge part_type: 'text/html')
|
9
7
|
end
|
10
8
|
javascript:
|
11
9
|
jQuery(function($) {
|
@@ -15,7 +13,7 @@ javascript:
|
|
15
13
|
$('.center-column').css('margin', 0);
|
16
14
|
$('.page-header h2').html(
|
17
15
|
"Editing email" +
|
18
|
-
" <a href='#{show_url}'>#{t 'rep.view_link'}</a>"
|
16
|
+
" <a class='btn btn-primary' href='#{show_url}'>#{t 'rep.view_link'}</a>"
|
19
17
|
)
|
20
18
|
|
21
19
|
// Snippet form:
|
@@ -4,15 +4,15 @@ h1
|
|
4
4
|
- previews_group = proc do |m|
|
5
5
|
- capture do
|
6
6
|
h2 = preview_class_human_name(m)
|
7
|
-
ul
|
7
|
+
ul class=rep_style[:list_group_class]
|
8
8
|
- email_methods(m).each do |method|
|
9
|
-
li
|
9
|
+
li class=rep_style[:list_group_item_class]
|
10
10
|
a href=rails_email_preview.rep_email_url(mail_class: m.to_s.underscore, mail_action: method.to_s, email_locale: @email_locale)
|
11
11
|
= method.to_s.humanize
|
12
12
|
|
13
|
-
|
13
|
+
div class=rep_row_class
|
14
14
|
- split_in_halves(@preview_class_names) { |c| email_methods(c).length }.each do |classes|
|
15
|
-
|
15
|
+
div class=rep_col_class(6)
|
16
16
|
- classes.each do |class_name|
|
17
17
|
= previews_group.call(class_name)
|
18
18
|
|
@@ -1,19 +1,21 @@
|
|
1
1
|
.rep-email-show#email-show
|
2
|
-
|
2
|
+
div class=rep_row_class
|
3
3
|
.pull-left
|
4
4
|
ul.breadcrumb
|
5
5
|
li: a href=rails_email_preview.rep_emails_url(email_locale: @email_locale) #{t 'rep.breadcrumb_list'}
|
6
6
|
li.active: a href=(request.url) = current_email_name
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
8
|
+
div class=rep_style[:panel_class]
|
9
|
+
div class=rep_style[:row_class]
|
10
|
+
-# From, To, Subject and other headers
|
11
|
+
div class=rep_col_class(8)
|
12
|
+
= render 'rails_email_preview/emails/headers'
|
13
|
+
-# Locale, format and actions
|
14
|
+
div class=rep_col_class(4)
|
15
|
+
ul.list-unstyled.text-right.rep-email-options
|
16
|
+
li= render 'rails_email_preview/emails/i18n_nav'
|
17
|
+
li= render 'rails_email_preview/emails/send_form' if RailsEmailPreview.enable_send_email
|
18
|
+
li= render 'rails_email_preview/emails/format_nav'
|
17
19
|
|
18
20
|
-# actual email content, rendered in an iframe to prevent browser styles from interfering
|
19
21
|
.margin-right
|
data/lib/rails_email_preview.rb
CHANGED
@@ -20,6 +20,19 @@ module RailsEmailPreview
|
|
20
20
|
mattr_accessor :enable_send_email
|
21
21
|
self.enable_send_email = true
|
22
22
|
|
23
|
+
# some easy visual settings
|
24
|
+
mattr_accessor :style
|
25
|
+
self.style = {
|
26
|
+
btn_default_class: 'btn btn-default',
|
27
|
+
btn_active_class: 'btn btn-primary active',
|
28
|
+
btn_group_class: 'btn-group',
|
29
|
+
list_group_class: 'list-group',
|
30
|
+
list_group_item_class: 'list-group-item',
|
31
|
+
panel_class: 'panel',
|
32
|
+
row_class: 'row',
|
33
|
+
column_class: 'col-%{n}'
|
34
|
+
}
|
35
|
+
|
23
36
|
class << self
|
24
37
|
def run_before_render(mail, preview_class_name, mailer_action)
|
25
38
|
(defined?(@hooks) && @hooks[:before_render] || []).each do |block|
|
@@ -18,15 +18,15 @@ module RailsEmailPreview
|
|
18
18
|
def cms_email_subject(interpolation = {})
|
19
19
|
snippet_id = "email-#{cms_email_id}"
|
20
20
|
[I18n.locale, I18n.default_locale].compact.each do |locale|
|
21
|
-
site
|
21
|
+
site = Cms::Site.find_by_locale(locale)
|
22
22
|
snippet = site.snippets.find_by_identifier(snippet_id)
|
23
23
|
next unless snippet.try(:content).present?
|
24
24
|
|
25
25
|
# interpolate even if keys/values are missing
|
26
|
-
title
|
26
|
+
title = snippet.label.to_s
|
27
27
|
interpolation = interpolation.stringify_keys
|
28
28
|
# set all missing values to ''
|
29
|
-
title.scan(/%{([^}]+)}/) { |m| interpolation[m[0]] ||= ''}
|
29
|
+
title.scan(/%{([^}]+)}/) { |m| interpolation[m[0]] ||= '' }
|
30
30
|
# remove all missing keys
|
31
31
|
subject = title % interpolation.symbolize_keys.delete_if { |k, v| title !~ /%{#{k}}/ }
|
32
32
|
|
@@ -60,7 +60,7 @@ module RailsEmailPreview
|
|
60
60
|
|
61
61
|
cms_path = if snippet
|
62
62
|
unless content
|
63
|
-
fallback_snippet
|
63
|
+
fallback_snippet = default_site.snippets.find_by_identifier(snippet_id)
|
64
64
|
prefill_from_default = {label: fallback_snippet.label, content: fallback_snippet.content}
|
65
65
|
end
|
66
66
|
edit_cms_admin_site_snippet_path(site_id: site.id, id: snippet.id,
|
@@ -84,6 +84,16 @@ module RailsEmailPreview
|
|
84
84
|
def cms_edit_email_snippet_link(path)
|
85
85
|
link_to(RailsEmailPreview.edit_link_text, path, style: RailsEmailPreview.edit_link_style.html_safe, 'onClick' => '')
|
86
86
|
end
|
87
|
+
|
88
|
+
def self.rep_email_params_from_snippet(snippet)
|
89
|
+
id_prefix = 'email-'
|
90
|
+
return unless snippet && snippet.identifier.starts_with?(id_prefix)
|
91
|
+
mailer_cl, act = snippet.identifier[id_prefix.length..-1].split('-')
|
92
|
+
mailer_cl += '_preview'
|
93
|
+
{ mail_class: mailer_cl,
|
94
|
+
mail_action: act,
|
95
|
+
email_locale: snippet.site.locale}
|
96
|
+
end
|
87
97
|
end
|
88
98
|
end
|
89
99
|
end
|