diff --git a/app/assets/javascripts/legislation_admin.js b/app/assets/javascripts/legislation_admin.js index c4692014f..45d8723f4 100644 --- a/app/assets/javascripts/legislation_admin.js +++ b/app/assets/javascripts/legislation_admin.js @@ -2,21 +2,21 @@ "use strict"; App.LegislationAdmin = { initialize: function() { - $("input[type='checkbox'][data-disable-date]").on({ + $(".legislation-process-form").find("[name$='enabled]'],[name$='[published]']").on({ change: function() { - var checkbox, date_selector, parent; + var checkbox; checkbox = $(this); - parent = $(this).parents(".row:eq(0)"); - date_selector = $(this).data("disable-date"); - parent.find("input[type='text'][id^='" + date_selector + "']").each(function() { + + checkbox.closest("fieldset").find("input[type='text']").each(function() { if (checkbox.is(":checked")) { $(this).removeAttr("disabled"); } else { - $(this).val(""); + $(this).prop("disabled", true); } }); } - }); + }).trigger("change"); + $("#nested_question_options").on("cocoon:after-insert", function() { App.Globalize.refresh_visible_translations(); }); diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 7aca741dd..da217b874 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -13,6 +13,7 @@ @import "dashboard"; @import "legislation"; @import "legislation_process"; +@import "legislation_process_form"; @import "community"; @import "stats"; @import "custom"; diff --git a/app/assets/stylesheets/layout.scss b/app/assets/stylesheets/layout.scss index dabfb2330..c089d3b3d 100644 --- a/app/assets/stylesheets/layout.scss +++ b/app/assets/stylesheets/layout.scss @@ -1074,6 +1074,10 @@ form { &.error { margin-bottom: rem-calc(1); } + + &:disabled { + background-color: $input-background-disabled; + } } [type="checkbox"] + label, diff --git a/app/assets/stylesheets/legislation_process_form.scss b/app/assets/stylesheets/legislation_process_form.scss new file mode 100644 index 000000000..14ccdf86e --- /dev/null +++ b/app/assets/stylesheets/legislation_process_form.scss @@ -0,0 +1,35 @@ +.legislation-process-form { + fieldset { + margin: $fieldset-padding 0; + padding-bottom: $fieldset-padding; + position: relative; + + &::after { + border-bottom: $fieldset-border; + bottom: 0; + content: ""; + display: block; + margin-left: rem-calc(16); + position: absolute; + width: calc(100% - #{2 * rem-calc(16)}); + + @include breakpoint(small only) { + margin-left: rem-calc(10); + width: calc(100% - #{2 * rem-calc(10)}); + } + } + + > :last-child { + float: left !important; + } + + legend { + margin-bottom: 0; + + > * { + display: block; + font-weight: normal; + } + } + } +} diff --git a/app/views/admin/legislation/processes/_form.html.erb b/app/views/admin/legislation/processes/_form.html.erb index 9c5945334..16bfb5daf 100644 --- a/app/views/admin/legislation/processes/_form.html.erb +++ b/app/views/admin/legislation/processes/_form.html.erb @@ -1,14 +1,14 @@ <%= render "shared/globalize_locales", resource: @process %> -<%= translatable_form_for [:admin, @process] do |f| %> +<%= translatable_form_for [:admin, @process], html: { class: "legislation-process-form" } do |f| %> <%= render "shared/errors", resource: @process %> -
-
- -

<%= t("admin.legislation.processes.form.draft_phase_description") %>

-
+
+ + <%= t("admin.legislation.processes.form.draft_phase") %> + <%= t("admin.legislation.processes.form.draft_phase_description") %> +
<%= f.text_field :draft_start_date, @@ -26,14 +26,12 @@
<%= f.check_box :draft_phase_enabled, checked: @process.draft_phase.enabled?, label: t("admin.legislation.processes.form.enabled") %>
+
-
-
-
- -
- -
+
+ + <%= t("admin.legislation.processes.form.process") %> +
<%= f.text_field :start_date, @@ -51,14 +49,12 @@
<%= f.check_box :published, checked: @process.published?, label: t("admin.legislation.processes.form.enabled") %>
+
-
-
-
- -
- -
+
+ + <%= t("admin.legislation.processes.form.debate_phase") %> +
<%= f.text_field :debate_start_date, @@ -76,14 +72,12 @@
<%= f.check_box :debate_phase_enabled, checked: @process.debate_phase.enabled?, label: t("admin.legislation.processes.form.enabled") %>
+
-
-
-
- -
- -
+
+ + <%= t("admin.legislation.processes.form.proposals_phase") %> +
<%= f.text_field :proposals_phase_start_date, @@ -101,14 +95,12 @@
<%= f.check_box :proposals_phase_enabled, checked: @process.proposals_phase.enabled?, label: t("admin.legislation.processes.form.enabled") %>
+
-
-
-
- -
- -
+
+ + <%= t("admin.legislation.processes.form.allegations_phase") %> +
<%= f.text_field :allegations_start_date, @@ -126,11 +118,9 @@
<%= f.check_box :allegations_phase_enabled, checked: @process.allegations_phase.enabled?, label: t("admin.legislation.processes.form.enabled") %>
+
-
-
-
- +
<%= f.text_field :draft_publication_date, value: format_date_for_calendar_form(@process.draft_publication_date), @@ -140,11 +130,9 @@
<%= f.check_box :draft_publication_enabled, checked: @process.draft_publication.enabled?, label: t("admin.legislation.processes.form.enabled") %>
+
-
-
-
- +
<%= f.text_field :result_publication_date, value: format_date_for_calendar_form(@process.result_publication_date), @@ -154,11 +142,9 @@
<%= f.check_box :result_publication_enabled, checked: @process.result_publication.enabled?, label: t("admin.legislation.processes.form.enabled") %>
+
-
-
-
- +
<%= render "documents/nested_documents", documentable: @process, f: f %>
diff --git a/spec/system/admin/legislation/processes_spec.rb b/spec/system/admin/legislation/processes_spec.rb index 822240489..1397f9feb 100644 --- a/spec/system/admin/legislation/processes_spec.rb +++ b/spec/system/admin/legislation/processes_spec.rb @@ -240,6 +240,44 @@ describe "Admin collaborative legislation" do expect(page).not_to have_content "Draft publication" end + scenario "Enabling/disabling a phase enables/disables its date fields", :js do + process.update!(published: false) + + visit edit_admin_legislation_process_path(process) + + expect(page).to have_field "start_date", disabled: true + expect(page).to have_field "end_date", disabled: true + + check "legislation_process[published]" + fill_in "start_date", with: "07/07/2007" + fill_in "end_date", with: "08/08/2008" + uncheck "legislation_process[published]" + + expect(page).to have_field "start_date", disabled: true + expect(page).to have_field "end_date", disabled: true + + check "legislation_process[published]" + + expect(page).to have_field "start_date", disabled: false, with: "07/07/2007" + expect(page).to have_field "end_date", disabled: false, with: "08/08/2008" + end + + scenario "Enabling/disabling a phase does not enable/disable another phase date fields", :js do + process.update!(draft_phase_enabled: false, draft_publication_enabled: false) + + visit edit_admin_legislation_process_path(process) + + expect(page).to have_field "draft_start_date", disabled: true + expect(page).to have_field "draft_end_date", disabled: true + expect(page).to have_field "draft_publication_date", disabled: true + + check "legislation_process[draft_phase_enabled]" + + expect(page).to have_field "draft_start_date", disabled: false + expect(page).to have_field "draft_end_date", disabled: false + expect(page).to have_field "draft_publication_date", disabled: true + end + scenario "Change proposal categories" do visit edit_admin_legislation_process_path(process) within(".admin-content") { click_link "Proposals" }