Skip to content

Commit

Permalink
Merge pull request alphagov#7161 from alphagov/0-world-news-story-js-…
Browse files Browse the repository at this point in the history
…bugfix

Fix a JS error by always rendering the foreign language only field
  • Loading branch information
dnkrj authored Dec 19, 2022
2 parents 1e76201 + 1cddcbb commit 3ebb9f1
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 50 deletions.
10 changes: 3 additions & 7 deletions app/assets/javascripts/admin/modules/edition-form.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,23 +45,19 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};

if (!select) { return }

var container = form.querySelector('.edition-form--locale-fields')
var container = form.querySelector('.app-view-edit-edition__locale-field')
var localeCheckbox = container.querySelector('#edition_create_foreign_language_only-0')
var localeSelect = container.querySelector('#edition_primary_locale')
var newArticleTypeId = '4'

if (select.value !== newArticleTypeId) {
container.style.display = 'none'
}

select.addEventListener('change', function () {
if (select.value !== newArticleTypeId) {
container.style.display = 'none'
container.classList.add('app-view-edit-edition__locale-field--hidden')
localeCheckbox.value = '0'
localeCheckbox.checked = false
localeSelect.value = ''
} else {
container.style.display = 'block'
container.classList.remove('app-view-edit-edition__locale-field--hidden')
}
})
}
Expand Down
4 changes: 4 additions & 0 deletions app/assets/stylesheets/admin/views/_edit-edition.scss
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,7 @@
margin: govuk-spacing(6) + 5 govuk-spacing(2) 0 0;
margin-bottom: 0;
}

.app-view-edit-edition__locale-field--hidden {
display: none;
}
74 changes: 36 additions & 38 deletions app/views/admin/editions/_locale_fields.html.erb
Original file line number Diff line number Diff line change
@@ -1,39 +1,37 @@
<% if edition.locale_can_be_changed? %>
<div class="edition-form--locale-fields">
<%= render "govuk_publishing_components/components/checkboxes", {
name: "edition[create_foreign_language_only]",
id: "edition_create_foreign_language_only",
heading: "Foreign language only #{edition.model_name.human.downcase}",
heading_size: "l",
no_hint_text: true,
error_items: errors_for_input(edition.errors, :create_foreign_language_only),
items: [
{
label: "Create a foreign language only #{edition.model_name.human.downcase}",
value: "1",
checked: form.object.primary_locale != "en",
conditional: (render "govuk_publishing_components/components/select", {
id: "edition_primary_locale",
name: "edition[primary_locale]",
label: "Document language",
heading_size: "s",
full_width: true,
allow_blank: true,
errors: errors_for(edition.errors, :primary_locale),
options: ([nil] + options_for_locales(Locale.non_english)).map do |language, value|
{
text: language,
value: value,
selected: edition.primary_locale == value
}
end
})
}
]
} %>
<div class="app-view-edit-edition__locale-field <%= "app-view-edit-edition__locale-field--hidden" unless edition.locale_can_be_changed? && (edition.is_a?(Consultation) || edition.is_a?(NewsArticle) && edition.world_news_story?) %>">
<%= render "govuk_publishing_components/components/checkboxes", {
name: "edition[create_foreign_language_only]",
id: "edition_create_foreign_language_only",
heading: "Foreign language only #{edition.model_name.human.downcase}",
heading_size: "l",
no_hint_text: true,
error_items: errors_for_input(edition.errors, :create_foreign_language_only),
items: [
{
label: "Create a foreign language only #{edition.model_name.human.downcase}",
value: "1",
checked: form.object.primary_locale != "en",
conditional: (render "govuk_publishing_components/components/select", {
id: "edition_primary_locale",
name: "edition[primary_locale]",
label: "Document language",
heading_size: "s",
full_width: true,
allow_blank: true,
errors: errors_for(edition.errors, :primary_locale),
options: ([nil] + options_for_locales(Locale.non_english)).map do |language, value|
{
text: language,
value: value,
selected: edition.primary_locale == value
}
end
})
}
]
} %>

<% if edition.is_a?(NewsArticle) %>
<p class="govuk-body govuk-!-font-weight-bold">Warning: News stories without an English version cannot have other translations.</p>
<% end %>
</div>
<% end %>
<% if edition.is_a?(NewsArticle) %>
<p class="govuk-body govuk-!-font-weight-bold">Warning: News stories without an English version cannot have other translations.</p>
<% end %>
</div>
10 changes: 5 additions & 5 deletions spec/javascripts/admin/modules/edition-form.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ describe('GOVUK.Modules.EditionForm', function () {
</div>
</div>
<div class="edition-form--locale-fields">
<div class="app-view-edit-edition__locale-field app-view-edit-edition__locale-field--hidden">
<input type="checkbox" name="edition[create_foreign_language_only]" id="edition_create_foreign_language_only-0" value="0" checked="checked">
<select name="edition[primary_locale]" id="edition_primary_locale" class="govuk-select gem-c-select__select--full-width">
Expand Down Expand Up @@ -56,9 +56,9 @@ describe('GOVUK.Modules.EditionForm', function () {
})

it('should hide the locale fields when a NewsArticle is not a WorldNewsStory', function () {
var localeFields = form.querySelector('.edition-form--locale-fields')
var localeFields = form.querySelector('.app-view-edit-edition__locale-field')

expect(localeFields.style.display).toEqual('none')
expect(localeFields.classList).toContain('app-view-edit-edition__locale-field--hidden')
})

it('should render the locale fields when the WorldNewsStory is selected', function () {
Expand All @@ -67,9 +67,9 @@ describe('GOVUK.Modules.EditionForm', function () {
select.value = '4'
select.dispatchEvent(new Event('change'))

var localeFields = form.querySelector('.edition-form--locale-fields')
var localeFields = form.querySelector('.app-view-edit-edition__locale-field')

expect(localeFields.style.display).toEqual('block')
expect(localeFields.style.display).not.toContain('app-view-edit-edition__locale-field--hidden')
})

it('should reset the locale checkbox and select values when WorldNewsStory is deselected', function () {
Expand Down

0 comments on commit 3ebb9f1

Please sign in to comment.