diff options
author | Hitoshi Nakashima <morygonzalez@gmail.com> | 2018-01-20 12:07:51 +0900 |
---|---|---|
committer | Hitoshi Nakashima <morygonzalez@gmail.com> | 2018-01-23 09:32:49 +0900 |
commit | 77453cfa28d4c271475fd53d36a8357bcdfbfee7 (patch) | |
tree | d3851e660ccc565f8513c0fc98d612eda9a83086 /railties/lib | |
parent | cf1c48478d1f48d763c3bee92d6bc6cfb3e63dba (diff) | |
download | rails-77453cfa28d4c271475fd53d36a8357bcdfbfee7.tar.gz rails-77453cfa28d4c271475fd53d36a8357bcdfbfee7.tar.bz2 rails-77453cfa28d4c271475fd53d36a8357bcdfbfee7.zip |
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> |