Merge pull request #3287 from betagouv/improve-publish-draft

Improve publish draft
This commit is contained in:
Mathieu Magnin 2019-01-17 14:25:45 +01:00 committed by GitHub
commit feb340697a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 63 additions and 42 deletions

View file

@ -6,7 +6,7 @@ module NewGestionnaire
ITEMS_PER_PAGE = 25 ITEMS_PER_PAGE = 25
def index def index
@procedures = current_gestionnaire.visible_procedures.order(archived_at: :desc, published_at: :desc) @procedures = current_gestionnaire.visible_procedures.order(archived_at: :desc, published_at: :desc, created_at: :desc)
dossiers = current_gestionnaire.dossiers dossiers = current_gestionnaire.dossiers
@dossiers_count_per_procedure = dossiers.all_state.group(:procedure_id).reorder(nil).count @dossiers_count_per_procedure = dossiers.all_state.group(:procedure_id).reorder(nil).count

View file

@ -10,7 +10,7 @@ module ProcedureHelper
end end
def procedure_libelle(procedure) def procedure_libelle(procedure)
parts = procedure.brouillon? ? [content_tag(:span, 'démarche non publiée', class: 'badge')] : [] parts = procedure.brouillon? ? [content_tag(:span, 'démarche en test', class: 'badge')] : []
parts << procedure.libelle parts << procedure.libelle
safe_join(parts, ' ') safe_join(parts, ' ')
end end

View file

@ -68,6 +68,7 @@ class Procedure < ApplicationRecord
before_save :update_juridique_required before_save :update_juridique_required
before_save :update_durees_conservation_required before_save :update_durees_conservation_required
before_create :ensure_path_exists
include AASM include AASM
@ -452,4 +453,12 @@ class Procedure < ApplicationRecord
times.percentile(p).ceil times.percentile(p).ceil
end end
end end
def ensure_path_exists
if Flipflop.publish_draft?
if self.path.nil?
self.path = SecureRandom.uuid
end
end
end
end end

View file

@ -11,20 +11,6 @@
= f.text_area :description, rows: '6', placeholder: 'Description du projet', class: 'form-control' = f.text_area :description, rows: '6', placeholder: 'Description du projet', class: 'form-control'
- if !@procedure.locked? - if !@procedure.locked?
- if Flipflop.publish_draft?
.form-group
%h4 Lien public*
.procedure-lien
%span.prefix
= commencer_test_url(path: '')
= f.text_field :path, value: @path, class: 'form-control', data: { remote: true, debounce: true, url: admin_procedures_available_path, params: { id: @procedure.id }.to_query(:procedure) }
%p.unavailable-path-message.text-warning
- if @availability != Procedure::PATH_AVAILABLE
= render partial: 'unavailable', locals: { availability: @availability }
%p.help-block
%i.fa.fa-info-circle
Afin de faciliter laccès à la démarche, vous êtes invité à personnaliser ladresse d'accès public. C'est ce lien qu'il va falloir communiquer aux usagers souhaitant faire la démarche.
.form-group .form-group
%h4 Conservation des données %h4 Conservation des données
= f.label :duree_conservation_dossiers_dans_ds, "Sur demarches-simplifiees.fr* (durée en mois après le début de linstruction)" = f.label :duree_conservation_dossiers_dans_ds, "Sur demarches-simplifiees.fr* (durée en mois après le début de linstruction)"

View file

@ -3,7 +3,10 @@
%li{ class: @draft_class } %li{ class: @draft_class }
%a{ :href => "#{url_for :admin_procedures_draft}" } %a{ :href => "#{url_for :admin_procedures_draft}" }
%h5.text-primary %h5.text-primary
Brouillons - if Flipflop.publish_draft?
En test
- else
Brouillons
%li{ class: @active_class } %li{ class: @active_class }
%a{ :href => "#{url_for :admin_procedures}" } %a{ :href => "#{url_for :admin_procedures}" }

View file

@ -4,7 +4,7 @@
%br %br
Si vous voulez lutiliser, lancienne démarche sera archivée lors de la publication de la démarche (plus accessible du public). Si vous voulez lutiliser, lancienne démarche sera archivée lors de la publication de la démarche (plus accessible du public).
- when Procedure::PATH_NOT_AVAILABLE_BROUILLON - when Procedure::PATH_NOT_AVAILABLE_BROUILLON
Un brouillon de démarche existe déjà avec ce lien. Une démarche en test existe déjà avec ce lien.
- when Procedure::PATH_NOT_AVAILABLE - when Procedure::PATH_NOT_AVAILABLE
Ce lien est déjà utilisé par une démarche. Ce lien est déjà utilisé par une démarche.
%br %br

View file

@ -42,25 +42,45 @@
%i.fa.fa-remove %i.fa.fa-remove
Annuler Annuler
- if @procedure.locked?
#procedure_locked
.alert.alert-info
Cette démarche a été publiée, certains éléments ne peuvent plus être modifiés.
.lien-demarche .lien-demarche
%h3 Lien démarche %h3
- if @procedure.brouillon_avec_lien?
Test et publication
- else
Publication
%div{ style: 'margin-top: 30px;' } %div{ style: 'margin-top: 30px;' }
- if @procedure.archivee? - if @procedure.archivee?
.alert.alert-info Cette démarche est <strong>archivée</strong> et nest donc plus accessible par le public.
Cette démarche est archivée et nest donc pas accessible par le public.
- elsif @procedure.publiee? - elsif @procedure.publiee?
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 :
= link_to procedure_lien(@procedure), sanitize_url(procedure_lien(@procedure)), target: :blank = link_to procedure_lien(@procedure), sanitize_url(procedure_lien(@procedure)), target: :blank
%br %br
%br %br
Attention, diffusez toujours le <strong>lien complet</strong> affiché ci-dessus, et non pas un lien générique vers demarches-simplifiees.fr. Ne dites pas non plus aux usagers de se rendre sur le site générique demarches-simplifiees.fr, donnez-leur toujours le lien complet. Attention, diffusez toujours le <strong>lien complet</strong> affiché ci-dessus, et non pas un lien générique vers demarches-simplifiees.fr. Ne dites pas non plus aux usagers de se rendre sur le site générique demarches-simplifiees.fr, donnez-leur toujours le lien complet.
- elsif @procedure.brouillon_avec_lien? - elsif @procedure.brouillon_avec_lien?
- if @procedure.gestionnaires.present? && @procedure.service.present? - if @procedure.gestionnaires.present? && @procedure.service.present?
= link_to procedure_lien(@procedure), sanitize_url(procedure_lien(@procedure)), target: :blank %p
Cette démarche est actuellement <strong>en test</strong>,
pour y accéder vous pouvez utiliser le lien :
= link_to procedure_lien(@procedure), sanitize_url(procedure_lien(@procedure)), target: :blank
%p
Tout personne ayant la connaissance de ce lien pourra ainsi remplir des dossiers sur votre démarche.
%br
%h4 Ce que vous pouvez faire lorsque vous êtes en test
%p
Profitez de la phase de test pour tester la saisie de dossiers, ainsi que toutes les fonctionnalités associées (instruction, emails automatiques, attestations, etc.).
%p
Vous pouvez effectuer toutes les modifications que vous souhaitez sur votre démarche pendant cette phase de test.
%p
Les dossiers qui seront remplis pendant la phase de test seront automatiquement supprimés lors de la modification ou la publication de votre démarche.
%br
%h4 Ce qui se passe lorsque vous passez en publication
%p
Une fois que vous êtes prêt à publier définitivement votre démarche, cliquez sur le bouton "Publier" pour choisir le lien définitif de votre démarche, les modifications sur la démarches ne seront alors plus possibles.
- else - else
.alert.alert-info .alert.alert-info
Pour pouvoir tester cette démarche, vous devez dabord lui affecter Pour pouvoir tester cette démarche, vous devez dabord lui affecter

View file

@ -11,13 +11,16 @@
#procedure-list #procedure-list
%a#draft-procedures{ :href => "#{url_for :admin_procedures_draft}" } %a#draft-procedures{ :href => "#{url_for :admin_procedures_draft}" }
.procedure-list-element{ class: @draft_class } .procedure-list-element{ class: @draft_class }
Brouillons - if Flipflop.publish_draft?
En test
- else
Brouillons
.badge.progress-bar-default .badge.progress-bar-default
= current_administrateur.procedures.brouillons.count = current_administrateur.procedures.brouillons.count
%a#active-procedures{ :href => "#{url_for :admin_procedures}" } %a#active-procedures{ :href => "#{url_for :admin_procedures}" }
.procedure-list-element{ class: @active_class } .procedure-list-element{ class: @active_class }
Actives Publiées
.badge.progress-bar-success .badge.progress-bar-success
= current_administrateur.procedures.publiees.count = current_administrateur.procedures.publiees.count

View file

@ -12,7 +12,10 @@
#procedure-list #procedure-list
%a#onglet-infos{ href: url_for(admin_procedure_path(@procedure)) } %a#onglet-infos{ href: url_for(admin_procedure_path(@procedure)) }
.procedure-list-element{ class: ('active' if active == 'Informations') } .procedure-list-element{ class: ('active' if active == 'Informations') }
Publication - if @procedure.brouillon_avec_lien?
Test et publication
- else
Publication
%a#onglet-description{ href: url_for(edit_admin_procedure_path(@procedure)) } %a#onglet-description{ href: url_for(edit_admin_procedure_path(@procedure)) }
.procedure-list-element{ class: ('active' if active == 'Description') } .procedure-list-element{ class: ('active' if active == 'Description') }

View file

@ -38,7 +38,7 @@ as well as a link to its edit page.
<% end %> <% end %>
<% if procedure.publiee? && procedure.dossiers.empty? %> <% if procedure.publiee? && procedure.dossiers.empty? %>
<%= link_to 'passer en brouillon', draft_manager_procedure_path(procedure), method: :post, class: 'button' %> <%= link_to 'repasser en test', draft_manager_procedure_path(procedure), method: :post, class: 'button' %>
<% end %> <% end %>
<%= link_to 'supprimer la démarche', hide_manager_procedure_path(procedure), method: :post, class: 'button', data: { confirm: "Confirmez-vous la suppression de la démarche ?" } %> <%= link_to 'supprimer la démarche', hide_manager_procedure_path(procedure), method: :post, class: 'button', data: { confirm: "Confirmez-vous la suppression de la démarche ?" } %>

View file

@ -3,7 +3,10 @@
.flex.justify-between .flex.justify-between
%ul.breadcrumbs %ul.breadcrumbs
%li %li
= link_to dossier.procedure.libelle.truncate_words(10), gestionnaire_procedure_path(dossier.procedure), title: dossier.procedure.libelle = link_to gestionnaire_procedure_path(dossier.procedure), title: dossier.procedure.libelle do
- if dossier.procedure.brouillon?
%span.badge démarche en test
= dossier.procedure.libelle.truncate_words(10)
%li %li
= "Dossier nº #{dossier.id}" = "Dossier nº #{dossier.id}"
.mixed-buttons-bar .mixed-buttons-bar

View file

@ -723,7 +723,7 @@ describe Admin::ProceduresController, type: :controller do
let(:path) { procedure_owned.path } let(:path) { procedure_owned.path }
it { it {
expect(response.body).to include('Un brouillon de démarche existe déjà avec ce lien.') expect(response.body).to include('Une démarche en test existe déjà avec ce lien.')
} }
end end

View file

@ -150,7 +150,7 @@ feature 'As an administrateur I wanna create a new procedure', js: true do
find('#publish-procedure').click find('#publish-procedure').click
within '#publish-modal' do within '#publish-modal' do
expect(page).to have_field('procedure_path', with: 'lien-de-la-procedure') expect(page).to have_field('procedure_path')
click_on 'publish' click_on 'publish'
end end

View file

@ -2,9 +2,6 @@ module ProcedureSpecHelper
def fill_in_dummy_procedure_details(fill_path: true) def fill_in_dummy_procedure_details(fill_path: true)
fill_in 'procedure_libelle', with: 'libelle de la procedure' fill_in 'procedure_libelle', with: 'libelle de la procedure'
fill_in 'procedure_description', with: 'description de la procedure' fill_in 'procedure_description', with: 'description de la procedure'
if fill_path
fill_in 'procedure_path', with: 'lien-de-la-procedure'
end
fill_in 'procedure_cadre_juridique', with: 'cadre juridique' fill_in 'procedure_cadre_juridique', with: 'cadre juridique'
fill_in 'procedure_duree_conservation_dossiers_dans_ds', with: '3' fill_in 'procedure_duree_conservation_dossiers_dans_ds', with: '3'
fill_in 'procedure_duree_conservation_dossiers_hors_ds', with: '6' fill_in 'procedure_duree_conservation_dossiers_hors_ds', with: '6'

View file

@ -26,21 +26,18 @@ feature 'Administrateurs can edit procedures', js: true do
administrateur: administrateur) administrateur: administrateur)
end end
scenario 'the administrator can edit the libelle and the path' do scenario 'the administrator can edit the libelle' do
visit admin_procedures_draft_path visit admin_procedures_draft_path
click_on procedure.libelle click_on procedure.libelle
click_on 'Description' click_on 'Description'
expect(page).to have_field('procedure_libelle', with: procedure.libelle) expect(page).to have_field('procedure_libelle', with: procedure.libelle)
expect(page).to have_field('procedure_path', with: procedure.path)
fill_in('procedure_libelle', with: 'Ma petite démarche') fill_in('procedure_libelle', with: 'Ma petite démarche')
fill_in('procedure_path', with: 'nouveau-lien-demarche')
click_on 'Enregistrer' click_on 'Enregistrer'
expect(page).to have_field('procedure_libelle', with: 'Ma petite démarche') expect(page).to have_field('procedure_libelle', with: 'Ma petite démarche')
expect(page).to have_field('procedure_path', with: 'nouveau-lien-demarche')
end end
end end

View file

@ -72,7 +72,7 @@ describe 'admin/procedures/show.html.haml', type: :view do
end end
describe 'procedure link is present' do describe 'procedure link is present' do
it { expect(rendered).to have_content('Cette démarche est archivée et nest donc pas accessible par le public.') } it { expect(rendered).to have_content('Cette démarche est archivée et nest donc plus accessible par le public.') }
end end
end end
end end