diff options
author | Yuji Yaginuma <yuuji.yaginuma@gmail.com> | 2018-01-23 19:05:09 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-23 19:05:09 +0900 |
commit | d25c2e7c4c88440154087a08fa79ba0bf3038ba3 (patch) | |
tree | 19815a5d6e9520f9d7213eb8c8ef2db308c9e70e /railties/lib | |
parent | 04edd9e819c258507ad462353dc7f06b7f2576b7 (diff) | |
parent | 77453cfa28d4c271475fd53d36a8357bcdfbfee7 (diff) | |
download | rails-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/lib')
-rw-r--r-- | railties/lib/rails/templates/rails/mailers/email.html.erb | 21 |
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> |