Merge pull request #7446 from betagouv/feat/7274

ETQ admin, je souhaite visualiser le recap des modifications apportées lorsque ma démarche close
This commit is contained in:
Kara Diaby 2022-06-08 14:54:04 +02:00 committed by GitHub
commit 1cbdfe3d66
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 53 additions and 37 deletions

View file

@ -233,17 +233,19 @@ module Administrateurs
@procedure.assign_attributes(publish_params) @procedure.assign_attributes(publish_params)
if @procedure.draft_changed? if @procedure.draft_changed? && !@procedure.close?
@procedure.publish_revision! @procedure.publish_revision!
flash.notice = "Nouvelle version de la démarche publiée" flash.notice = "Nouvelle version de la démarche publiée"
redirect_to admin_procedure_path(@procedure) elsif @procedure.draft_changed? && @procedure.close?
@procedure.publish_or_reopen!(current_administrateur)
@procedure.publish_revision!
flash.notice = "Démarche publiée"
elsif @procedure.publish_or_reopen!(current_administrateur) elsif @procedure.publish_or_reopen!(current_administrateur)
flash.notice = "Démarche publiée" flash.notice = "Démarche publiée"
redirect_to admin_procedure_path(@procedure)
else else
flash.alert = @procedure.errors.full_messages flash.alert = @procedure.errors.full_messages
redirect_to admin_procedure_path(@procedure)
end end
redirect_to admin_procedure_path(@procedure)
end end
def transfert def transfert

View file

@ -405,7 +405,7 @@ class Procedure < ApplicationRecord
end end
def draft_changed? def draft_changed?
publiee? && published_revision.different_from?(draft_revision) && revision_changes.present? !brouillon? && published_revision.different_from?(draft_revision) && revision_changes.present?
end end
def revision_changes def revision_changes

View file

@ -8,37 +8,17 @@
- publication_errors.each do |_attribute, full_messages| - publication_errors.each do |_attribute, full_messages|
%p= full_messages.to_sentence %p= full_messages.to_sentence
- if procedure.draft_changed? - if !procedure.close? && procedure.draft_changed?
%p.mb-4 Publiez une nouvelle version de votre démarche. Les modifications suivantes seront appliquées : %p.mb-4 Publiez une nouvelle version de votre démarche. Les modifications suivantes seront appliquées :
= render partial: 'revision_changes', locals: { changes: procedure.revision_changes } = render partial: 'revision_changes', locals: { changes: procedure.revision_changes }
- elsif procedure.close? && procedure.draft_changed?
%p.mb-4 Publiez une nouvelle version de votre démarche. Les modifications suivantes seront appliquées :
= render partial: 'revision_changes', locals: { changes: procedure.revision_changes }
= render partial: 'publication_form_inputs', locals: { procedure: procedure, closed_procedures: @closed_procedures }
- else - else
%p.mb-4 Publiez votre démarche, et partagez la à vos usagers. Aucune modification ne sera possible. = render partial: 'publication_form_inputs', locals: { procedure: procedure, closed_procedures: @closed_procedures }
%p Personnalisez le lien public de la démarche pour en faciliter laccès (<strong>obligatoire pour publier votre démarche</strong>) :
%p.empty-text
= commencer_url(path: '')
= text_field_tag(:path, procedure.path,
id: 'procedure_path',
label: 'Adresse de diffusion',
placeholder: 'chemin-de-la-démarche',
required: true,
class: 'form',
pattern: '^[a-z0-9_-]{3,200}$',
title: "De 3 à 200 caractères; minuscules, chiffres et tiret seulement",
autocomplete: 'off',
style: 'width: 300px; display: inline;')
.text-info.mb-4
Attention, diffusez toujours le <strong>lien complet</strong> affiché ci-dessus, et non pas un lien générique vers #{APPLICATION_NAME}. Ne dites pas non plus aux usagers de se rendre sur le site générique #{APPLICATION_NAME}, donnez-leur toujours le lien complet.
- if @closed_procedures.present?
%h2.card-title Cette démarche remplace une close ? Si oui, veuillez indiquer le n° de la démarche remplacée
= select_tag :old_procedure, options_for_select(@closed_procedures), include_blank: true
%h2.card-title Diffusion de la démarche
%p Où les utilisateurs trouveront-ils le lien de la démarche ? Typiquement, il sagit dune page de votre site web.
%p.center
= text_field_tag(:lien_site_web, procedure.lien_site_web,
required: true,
class: 'form-control',
autocomplete: 'off',
placeholder: 'https://exemple.gouv.fr/ma_demarche')
.flex.justify-end .flex.justify-end
= submit_tag procedure_publish_label(procedure, :submit), { disabled: publication_errors.present?, class: "button primary", id: 'publish' } = submit_tag procedure_publish_label(procedure, :submit), { disabled: publication_errors.present?, class: "button primary", id: 'publish' }

View file

@ -0,0 +1,27 @@
%p.mb-4{ :class => ("mt-4" if procedure.close? && procedure.draft_changed?) } Publiez votre démarche, et partagez la à vos usagers.
%p Personnalisez le lien public de la démarche pour en faciliter laccès (<strong>obligatoire pour publier votre démarche</strong>) :
%p.empty-text
= commencer_url(path: '')
= text_field_tag(:path, procedure.path,
id: 'procedure_path',
label: 'Adresse de diffusion',
placeholder: 'chemin-de-la-démarche',
required: true,
class: 'form',
pattern: '^[a-z0-9_-]{3,200}$',
title: "De 3 à 200 caractères; minuscules, chiffres et tiret seulement",
autocomplete: 'off',
style: 'width: 300px; display: inline;')
.text-info.mb-4
Attention, diffusez toujours le <strong>lien complet</strong> affiché ci-dessus, et non pas un lien générique vers #{APPLICATION_NAME}. Ne dites pas non plus aux usagers de se rendre sur le site générique #{APPLICATION_NAME}, donnez-leur toujours le lien complet.
- if closed_procedures.present?
%h2.card-title Cette démarche remplace une close ? Si oui, veuillez indiquer le n° de la démarche remplacée
= select_tag :old_procedure, options_for_select(@closed_procedures), include_blank: true
%h2.card-title Diffusion de la démarche
%p Où les utilisateurs trouveront-ils le lien de la démarche ? Typiquement, il sagit dune page de votre site web.
%p.center
= text_field_tag(:lien_site_web, procedure.lien_site_web,
required: true,
class: 'form-control',
autocomplete: 'off',
placeholder: 'https://exemple.gouv.fr/ma_demarche')

View file

@ -25,7 +25,7 @@
- if !@procedure.publiee? && !@procedure.close? && !@procedure.depubliee? - if !@procedure.publiee? && !@procedure.close? && !@procedure.depubliee?
= link_to 'Publier', admin_procedure_publication_path(@procedure), class: 'button primary', id: 'publish-procedure-link', data: { disable_with: "Publication..." } = link_to 'Publier', admin_procedure_publication_path(@procedure), class: 'button primary', id: 'publish-procedure-link', data: { disable_with: "Publication..." }
- if @procedure.close? || @procedure.depubliee? - if (@procedure.close? || @procedure.depubliee?) && !@procedure.draft_changed?
= link_to 'Réactiver', admin_procedure_publication_path(@procedure), class: 'button primary', id: 'publish-procedure-link', data: { disable_with: "Publication..." } = link_to 'Réactiver', admin_procedure_publication_path(@procedure), class: 'button primary', id: 'publish-procedure-link', data: { disable_with: "Publication..." }
- if @procedure.locked? && !@procedure.close? - if @procedure.locked? && !@procedure.close?

View file

@ -98,10 +98,11 @@ describe 'Publishing a procedure', js: true do
end end
end end
context 'when a procedure is de-published' do context 'when a procedure is closed with revision changes' do
let!(:tdc) { { type_champ: :text, libelle: 'nouveau champ' } }
let!(:procedure) do let!(:procedure) do
create(:procedure_with_dossiers, create(:procedure_with_dossiers,
:unpublished, :closed,
:with_path, :with_path,
:with_type_de_champ, :with_type_de_champ,
:with_service, :with_service,
@ -109,14 +110,20 @@ describe 'Publishing a procedure', js: true do
administrateur: administrateur) administrateur: administrateur)
end end
before do
Flipper.enable(:procedure_revisions, procedure)
procedure.draft_revision.add_type_de_champ(tdc)
end
scenario 'an admin can publish it again' do scenario 'an admin can publish it again' do
visit admin_procedures_path(statut: "archivees") visit admin_procedures_path(statut: "archivees")
click_on procedure.libelle click_on procedure.libelle
find('#publish-procedure-link').click find('#publish-procedure-link').click
expect(page).to have_text('Les modifications suivantes seront appliquées')
expect(find_field('procedure_path').value).to eq procedure.path expect(find_field('procedure_path').value).to eq procedure.path
fill_in 'lien_site_web', with: 'http://some.website' fill_in 'lien_site_web', with: 'http://some.website'
click_on 'Publier' find('#publish').click
expect(page).to have_text('Démarche publiée') expect(page).to have_text('Démarche publiée')
expect(page).to have_selector('#preview-procedure') expect(page).to have_selector('#preview-procedure')