Implement revision changes UI

This commit is contained in:
Paul Chavard 2021-06-18 11:15:10 +02:00
parent 0d25f52309
commit 9d3416af53
5 changed files with 82 additions and 27 deletions

View file

@ -61,3 +61,7 @@
.mb-2 {
margin-bottom: 2 * $default-spacer;
}
.mb-1 {
margin-bottom: $default-spacer;
}

View file

@ -1,40 +1,44 @@
.card.mb-4
%h2.card-title Publiez votre démarche
= form_tag admin_procedure_publish_path(procedure_id: procedure.id), method: :put, class: 'form' do
%p.mb-4 Publiez votre démarche, et partagez la à vos usagers. Aucune modification ne sera possible.
%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",
data: { debounce: true, url: admin_procedure_publish_validate_path(procedure)},
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.
%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,
- if procedure.draft_changed?
%p.mb-4 Publiez une nouvelle version de votre démarche. Les changements suivants seront appliqués :
= render partial: 'revision_changes', locals: { changes: procedure.revision_changes }
- else
%p.mb-4 Publiez votre démarche, et partagez la à vos usagers. Aucune modification ne sera possible.
%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-control',
class: 'form',
pattern: '^[a-z0-9_-]{3,200}$',
title: "De 3 à 200 caractères; minuscules, chiffres et tiret seulement",
data: { debounce: true, url: admin_procedure_publish_validate_path(procedure)},
autocomplete: 'off',
placeholder: 'https://exemple.gouv.fr/ma_demarche')
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.
%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')
- procedure.validate(:publication)
- errors = procedure.errors
-# Ignore the :taken error if the path can be claimed
- if errors.details[:path]&.pluck(:error)&.include?(:taken) && @procedure.path_available?(administrateur, procedure.path)
- if errors.details[:path]&.pluck(:error)&.include?(:taken) && procedure.path_available?(administrateur, procedure.path)
- errors.delete(:path)
- options = { class: "button primary", id: 'publish' }
- if errors.details[:path].present?
- options[:disabled] = :disabled
.flex.justify-end
= submit_tag procedure_publish_text(@procedure, :submit), options
= submit_tag procedure_publish_text(procedure, :submit), options

View file

@ -0,0 +1,34 @@
%ul
- changes.each do |change|
- case change[:op]
- when :add
%li.mb-1= "Le champ « #{change[:label]} » a été ajouté."
- when :remove
%li.mb-1= "Le champ « #{change[:label]} » a été supprimé."
- when :update
- case change[:attribute]
- when :libelle
%li.mb-1= "Le libellé du champ « #{change[:label]} » a changé en « #{change[:to]} »."
- when :type_champ
%li.mb-1= "Le type du champ « #{change[:label]} » a changé. Il est maintenant de type « #{t("activerecord.attributes.type_de_champ.type_champs.#{change[:to]}")} »."
- when :description
%li.mb-1= "La description du champ « #{change[:label]} » a changé. La nouvelle description est « #{change[:to]} »."
- when :mandatory
- if change[:from] == false
%li.mb-1= "Le champ « #{change[:label]} » est maintenant obligatoire."
- else
%li.mb-1= "Le champ « #{change[:label]} » n'est plus obligatoire."
- when :piece_justificative_template
%li.mb-1= "Le champ « #{change[:label]} » a changé de modèle de pièce justificative."
- when :drop_down_options
- added = change[:to].sort - change[:from].sort
- removed = change[:from].sort - change[:to].sort
%li.mb-1
= "Les options de sélection du champ « #{change[:label]} » ont changé."
%ul
- if added.present?
%li= "Valeurs ajoutés : #{added.map{ |term| "« #{term.strip} »" }.join(", ")}."
- if removed.present?
%li= "Valeurs supprimés : #{removed.map{ |term| "« #{term.strip} »" }.join(", ")}."
- if changes.any? { |change| change[:op] == :move }
%li.mb-1 Des champs ont changé de position

View file

@ -14,6 +14,9 @@
- if @procedure.close? || @procedure.depubliee?
%p.mb-4 Cette démarche est <strong>close</strong> et nest donc plus accessible par le public. Vous pouvez la réactiver :
= render partial: 'publication_form', locals: { procedure: @procedure, administrateur: @current_administrateur }
- elsif @procedure.draft_changed?
%p.mb-4 Cette démarche est déjà <strong>publiée</strong>. Elle a été <strong>modifiée</strong> depuis sa publication. Vous pouvez publier les changements effectués dans une nouvelle version de cette démarche :
= render partial: 'publication_form', locals: { procedure: @procedure, administrateur: @current_administrateur }
- elsif @procedure.publiee?
%p Cette démarche est <strong>publiée</strong>, certains éléments ne peuvent plus être modifiés.
Pour y accéder vous pouvez utiliser le lien :

View file

@ -29,6 +29,16 @@
%span.icon.archive
Clore
- if @procedure.draft_changed?
= link_to 'Publier les modifications', admin_procedure_publication_path(@procedure), class: 'button primary', id: 'publish-procedure-link', data: { disable_with: "Publication..." }
- if @procedure.draft_changed?
.container
.card.featured
.card-title
Des champs ont été changés
= render partial: 'revision_changes', locals: { changes: @procedure.revision_changes }
.container
%h2.procedure-admin-explanation Indispensable avant publication
.procedure-grid
@ -41,7 +51,7 @@
%p.card-admin-subtitle Logo, nom, description
%p.button Modifier
- if !@procedure.locked?
- if !@procedure.locked? || @procedure.feature_enabled?(:procedure_revisions)
= link_to champs_admin_procedure_path(@procedure), class: 'card-admin' do
- if @procedure.draft_types_de_champ.count > 0
%div
@ -159,7 +169,7 @@
%p.card-admin-subtitle Notifications automatiques
%p.button Modifier
- if !@procedure.locked?
- if !@procedure.locked? || @procedure.feature_enabled?(:procedure_revisions)
= link_to annotations_admin_procedure_path(@procedure), class: 'card-admin' do
- if @procedure.draft_types_de_champ_private.present?
%div