aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authorYuji Yaginuma <yuuji.yaginuma@gmail.com>2018-01-23 19:05:09 +0900
committerGitHub <noreply@github.com>2018-01-23 19:05:09 +0900
commitd25c2e7c4c88440154087a08fa79ba0bf3038ba3 (patch)
tree19815a5d6e9520f9d7213eb8c8ef2db308c9e70e /railties
parent04edd9e819c258507ad462353dc7f06b7f2576b7 (diff)
parent77453cfa28d4c271475fd53d36a8357bcdfbfee7 (diff)
downloadrails-d25c2e7c4c88440154087a08fa79ba0bf3038ba3.tar.gz
rails-d25c2e7c4c88440154087a08fa79ba0bf3038ba3.tar.bz2
rails-d25c2e7c4c88440154087a08fa79ba0bf3038ba3.zip
Merge pull request #31750 from morygonzalez/consider-locale_selector-missing
Fix locale_selector JS bug in ActionMailer Preview
Diffstat (limited to 'railties')
-rw-r--r--railties/lib/rails/templates/rails/mailers/email.html.erb21
1 files changed, 16 insertions, 5 deletions
diff --git a/railties/lib/rails/templates/rails/mailers/email.html.erb b/railties/lib/rails/templates/rails/mailers/email.html.erb
index 44c400a7e6..2a41c29602 100644
--- a/railties/lib/rails/templates/rails/mailers/email.html.erb
+++ b/railties/lib/rails/templates/rails/mailers/email.html.erb
@@ -95,14 +95,16 @@
</dd>
<% end %>
+ <dt>Format:</dt>
<% if @email.multipart? %>
- <dt>Format:</dt>
<dd>
<select id="part" onchange="refreshBody();">
<option <%= request.format == Mime[:html] ? 'selected' : '' %> value="<%= part_query('text/html') %>">View as HTML email</option>
<option <%= request.format == Mime[:text] ? 'selected' : '' %> value="<%= part_query('text/plain') %>">View as plain-text email</option>
</select>
</dd>
+ <% else %>
+ <dd id="mime_type" data-mime-type="<%= part_query(@email.mime_type) %>"><%= @email.mime_type == 'text/html' ? 'HTML email' : 'plain-text email' %></dd>
<% end %>
<% if I18n.available_locales.count > 1 %>
@@ -131,15 +133,24 @@
function refreshBody() {
var part_select = document.querySelector('select#part');
var locale_select = document.querySelector('select#locale');
- var part_param = part_select.options[part_select.selectedIndex].value;
- var locale_param = locale_select.options[locale_select.selectedIndex].value;
var iframe = document.getElementsByName('messageBody')[0];
- iframe.contentWindow.location = '?' + part_param + '&' + locale_param;
+ var part_param = part_select ?
+ part_select.options[part_select.selectedIndex].value :
+ document.querySelector('#mime_type').dataset.mimeType;
+ var locale_param = locale_select ? locale_select.options[locale_select.selectedIndex].value : null;
+ var fresh_location;
+ if (locale_param) {
+ fresh_location = '?' + part_param + '&' + locale_param;
+ } else {
+ fresh_location = '?' + part_param;
+ }
+ iframe.contentWindow.location = fresh_location;
if (history.replaceState) {
var url = location.pathname.replace(/\.(txt|html)$/, '');
var format = /html/.test(part_param) ? '.html' : '.txt';
- window.history.replaceState({}, '', url + format + '?' + locale_param);
+ var state_to_replace = locale_param ? (url + format + '?' + locale_param) : (url + format);
+ window.history.replaceState({}, '', state_to_replace);
}
}
</script>