diff --git a/app/views/administrateurs/procedures/_unpublished_changes_navbar.html.haml b/app/views/administrateurs/procedures/_unpublished_changes_navbar.html.haml
deleted file mode 100644
index 97158037e..000000000
--- a/app/views/administrateurs/procedures/_unpublished_changes_navbar.html.haml
+++ /dev/null
@@ -1,9 +0,0 @@
-.sticky-header.sticky-header-warning
- .fr-container
- %p.flex.justify-between.align-center.fr-text-default--warning
- %span
- = dsfr_icon("fr-icon-warning-fill fr-mr-1v")
- = t('.intro_html').html_safe
- %span.no-wrap
- = link_to t('.see_changes'), admin_procedure_path(procedure), class: 'fr-btn fr-btn--secondary fr-mr-2w'
- = link_to t('.publish_changes'), admin_procedure_publish_revision_path(procedure), class: 'fr-btn', method: :post, data: { disable_with: "Publication...", confirm: 'Êtes-vous sûr de vouloir publier les modifications ?' }
diff --git a/app/views/administrateurs/procedures/_unpublished_changes_sticky_header.html.haml b/app/views/administrateurs/procedures/_unpublished_changes_sticky_header.html.haml
new file mode 100644
index 000000000..af2ec32b4
--- /dev/null
+++ b/app/views/administrateurs/procedures/_unpublished_changes_sticky_header.html.haml
@@ -0,0 +1,10 @@
+.sticky-header.sticky-header-warning
+ .fr-container
+ %p.flex.justify-between.align-center.fr-text-default--warning
+ %span
+ = dsfr_icon("fr-icon-warning-fill fr-mr-1v")
+ = t('.intro_html').html_safe
+ %span.no-wrap
+ = link_to t('.see_changes'), admin_procedure_path(procedure), class: 'fr-btn fr-btn--secondary fr-mr-2w'
+ = link_to_if procedure.draft_revision.valid? && procedure.valid?(:publication), t('.publish_changes'), admin_procedure_publish_revision_path(procedure), class: 'fr-btn', method: :put, data: { disable_with: "Publication...", confirm: 'Êtes-vous sûr de vouloir publier les modifications ?' } do
+ %button.fr-btn{ disabled: "disabled" }= t('.publish_changes')
diff --git a/app/views/administrateurs/procedures/champs.html.haml b/app/views/administrateurs/procedures/champs.html.haml
index fb85b6aee..e2a33167f 100644
--- a/app/views/administrateurs/procedures/champs.html.haml
+++ b/app/views/administrateurs/procedures/champs.html.haml
@@ -1,7 +1,7 @@
- if @procedure.draft_changed?
- content_for(:sticky_header) do
- = render partial: 'administrateurs/procedures/unpublished_changes_navbar', locals: { procedure: @procedure }
+ = render partial: 'administrateurs/procedures/unpublished_changes_sticky_header', locals: { procedure: @procedure }
= render partial: 'administrateurs/breadcrumbs',
locals: { steps: [['Démarches', admin_procedures_back_path(@procedure)],
[@procedure.libelle.truncate_words(10), admin_procedure_path(@procedure)],
diff --git a/app/views/administrateurs/types_de_champ/_insert.turbo_stream.haml b/app/views/administrateurs/types_de_champ/_insert.turbo_stream.haml
index ccf49114e..7a246c79a 100644
--- a/app/views/administrateurs/types_de_champ/_insert.turbo_stream.haml
+++ b/app/views/administrateurs/types_de_champ/_insert.turbo_stream.haml
@@ -52,7 +52,7 @@
- if @procedure.draft_changed?
= turbo_stream.update "sticky-header" do
- = render partial: "administrateurs/procedures/unpublished_changes_navbar", locals: { procedure: @procedure }
+ = render partial: "administrateurs/procedures/unpublished_changes_sticky_header", locals: { procedure: @procedure }
- else
= turbo_stream.update "sticky-header", ""
diff --git a/config/locales/views/administrateurs/procedures/en.yml b/config/locales/views/administrateurs/procedures/en.yml
index 24fb5ebe0..0f043ce36 100644
--- a/config/locales/views/administrateurs/procedures/en.yml
+++ b/config/locales/views/administrateurs/procedures/en.yml
@@ -71,7 +71,7 @@ en:
path_not_available:
owner: This URL is identical to another of your published procedures. If you publish this procedure, the old one will be unpublished and will no longer be accessible to the public.
not_owner: This URL is identical to another procedure, you must modify it.
- unpublished_changes_navbar:
+ unpublished_changes_sticky_header:
intro_html: Changes made will only be visible after the next publication
see_changes: View changes
publish_changes: Publish changes
diff --git a/config/locales/views/administrateurs/procedures/fr.yml b/config/locales/views/administrateurs/procedures/fr.yml
index 18c934906..320daad34 100644
--- a/config/locales/views/administrateurs/procedures/fr.yml
+++ b/config/locales/views/administrateurs/procedures/fr.yml
@@ -71,7 +71,7 @@ fr:
path_not_available:
owner: Cette url est identique à celle d’une autre de vos démarches publiées. Si vous publiez cette démarche, l’ancienne sera dépubliée et ne sera plus accessible au public.
not_owner: Cette url est identique à celle d’une autre démarche, vous devez la modifier afin de pouvoir publier votre démarche.
- unpublished_changes_navbar:
+ unpublished_changes_sticky_header:
intro_html: Les modifications effectuées ne seront visibles qu'à la prochaine publication
see_changes: Voir les modifications
publish_changes: Publier les modifications
diff --git a/spec/system/administrateurs/types_de_champ_spec.rb b/spec/system/administrateurs/types_de_champ_spec.rb
index b25e64087..e2852ac84 100644
--- a/spec/system/administrateurs/types_de_champ_spec.rb
+++ b/spec/system/administrateurs/types_de_champ_spec.rb
@@ -368,6 +368,7 @@ describe 'As an administrateur I can edit types de champ', js: true do
fill_in 'Libellé du champ', with: 'Premier champ'
expect(page).to have_selector('.sticky-header.sticky-header-warning')
expect(page).to have_content("Les modifications effectuées ne seront visibles qu'à la prochaine publication")
+ expect(page).to have_link('Publier les modifications')
expect(page).to have_field('Libellé du champ', with: 'Premier champ')
@@ -378,6 +379,8 @@ describe 'As an administrateur I can edit types de champ', js: true do
within all('.type-de-champ').last do
fill_in 'Libellé du champ', with: 'Deuxième champ'
+ select 'Choix simple', from: 'Type de champ'
+ fill_in "Options de la liste", with: "" # make tdc invalid
end
expect(page).to have_field('Libellé du champ', with: 'Premier champ')
@@ -385,20 +388,17 @@ describe 'As an administrateur I can edit types de champ', js: true do
expect(page).to have_selector('.sticky-header.sticky-header-warning')
expect(page).to have_content("Les modifications effectuées ne seront visibles qu'à la prochaine publication")
+ expect(page).to have_button('Publier les modifications', disabled: true)
- # Supprimer les champs
+ # Supprime dernier champ
+ all('.fr-btn--tertiary-no-outline[title="Supprimer le champ"]').last.click
+ page.driver.browser.switch_to.alert.accept rescue nil
- 2.times do
- initial_count = page.all('.type-de-champ').count
+ expect(page).to have_selector('.type-de-champ', count: 1, wait: 5)
+ click_on "Publier les modifications"
- first('.fr-btn--tertiary-no-outline[title="Supprimer le champ"]').click
-
- page.driver.browser.switch_to.alert.accept rescue nil
-
- expect(page).to have_selector('.type-de-champ', count: initial_count - 1, wait: 5)
- end
-
- expect(page).not_to have_selector('.sticky-header.sticky-header-warning')
+ page.driver.browser.switch_to.alert.accept
+ expect(page).to have_content("démarche publiée")
unpublished_procedure = create(:procedure)
visit champs_admin_procedure_path(unpublished_procedure)