Merge branch 'dev' into 4537-Description-des-entrées-du-env.example

This commit is contained in:
Keirua 2019-11-20 16:07:12 +01:00 committed by GitHub
commit c2035ba797
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 94 additions and 83 deletions

View file

@ -130,6 +130,10 @@
} }
} }
.state-button {
display: inline-block;
}
.dropdown { .dropdown {
display: inline-block; display: inline-block;
position: relative; position: relative;
@ -213,10 +217,13 @@
} }
} }
&.selected, &:not(.inactive) {
&:hover:not(.inactive) {
background: $light-grey;
cursor: pointer; cursor: pointer;
&:hover,
&.selected {
background: $light-grey;
}
} }
&.danger { &.danger {

View file

@ -150,6 +150,8 @@ $header-mobile-breakpoint: 550px;
} }
button { button {
@extend %outline;
padding: 9px; padding: 9px;
border: none; border: none;
background: none; background: none;

View file

@ -143,18 +143,19 @@ module Users
errors = update_dossier_and_compute_errors errors = update_dossier_and_compute_errors
if errors.present? if passage_en_construction? && errors.blank?
@dossier.en_construction!
NotificationMailer.send_initiated_notification(@dossier).deliver_later
return redirect_to(merci_dossier_path(@dossier))
elsif errors.present?
flash.now.alert = errors flash.now.alert = errors
render :brouillon
else else
if save_draft? flash.now.notice = 'Votre brouillon a bien été sauvegardé.'
flash.now.notice = 'Votre brouillon a bien été sauvegardé.' end
render :brouillon
else respond_to do |format|
@dossier.en_construction! format.html { render :brouillon }
NotificationMailer.send_initiated_notification(@dossier).deliver_later format.json { head :ok }
redirect_to merci_dossier_path(@dossier)
end
end end
end end
@ -368,7 +369,7 @@ module Users
end end
def save_draft? def save_draft?
dossier.brouillon? && params[:save_draft] dossier.brouillon? && !params[:submit_draft]
end end
end end
end end

View file

@ -1,5 +1,5 @@
%span.dropdown.print-menu-opener %span.dropdown.print-menu-opener
%button.button.dropdown-button.icon-only %button.button.dropdown-button.icon-only{ title: 'imprimer' }
%span.icon.printer %span.icon.printer
%ul.print-menu.dropdown-content %ul.print-menu.dropdown-content
%li %li
@ -20,5 +20,5 @@
= render partial: "instructeurs/procedures/dossier_actions", locals: { procedure: dossier.procedure, dossier: dossier, dossier_is_followed: current_instructeur&.follow?(dossier) } = render partial: "instructeurs/procedures/dossier_actions", locals: { procedure: dossier.procedure, dossier: dossier, dossier_is_followed: current_instructeur&.follow?(dossier) }
%span.state-button .state-button
= render partial: "state_button", locals: { dossier: dossier } = render partial: "state_button", locals: { dossier: dossier }

View file

@ -1,4 +1,4 @@
%span.dropdown .dropdown
-# Dropdown button title -# Dropdown button title
%button.button.primary.dropdown-button{ class: button_or_label_class(dossier) } %button.button.primary.dropdown-button{ class: button_or_label_class(dossier) }
= dossier_display_state dossier = dossier_display_state dossier

View file

@ -1,4 +1,4 @@
%span.dropdown.invite-user-action .dropdown.invite-user-action
%button.button.dropdown-button %button.button.dropdown-button
%span.icon.person %span.icon.person
- if dossier.invites.count > 0 - if dossier.invites.count > 0

View file

@ -1,4 +1,4 @@
%span.dropdown.header-menu-opener .dropdown.header-menu-opener
%button.button.dropdown-button.header-menu-button %button.button.dropdown-button.header-menu-button
= image_tag "icons/account-circle.svg", title: "Mon compte" = image_tag "icons/account-circle.svg", title: "Mon compte"
%ul.header-menu.dropdown-content %ul.header-menu.dropdown-content
@ -8,30 +8,30 @@
- if administration_signed_in? - if administration_signed_in?
%li %li
= link_to manager_root_path, class: "menu-item menu-link" do = link_to manager_root_path, class: "menu-item menu-link" do
= image_tag "icons/super-admin.svg" = image_tag "icons/super-admin.svg", alt: ''
Passer en super-admin Passer en super-admin
- if multiple_devise_profile_connect? - if multiple_devise_profile_connect?
- if user_signed_in? && nav_bar_profile != :user - if user_signed_in? && nav_bar_profile != :user
%li %li
= link_to dossiers_path, class: "menu-item menu-link" do = link_to dossiers_path, class: "menu-item menu-link" do
= image_tag "icons/switch-profile.svg" = image_tag "icons/switch-profile.svg", alt: ''
Passer en usager Passer en usager
- if instructeur_signed_in? && nav_bar_profile != :instructeur - if instructeur_signed_in? && nav_bar_profile != :instructeur
%li %li
= link_to instructeur_procedures_path, class: "menu-item menu-link" do = link_to instructeur_procedures_path, class: "menu-item menu-link" do
= image_tag "icons/switch-profile.svg" = image_tag "icons/switch-profile.svg", alt: ''
Passer en instructeur Passer en instructeur
- if administrateur_signed_in? && nav_bar_profile != :administrateur - if administrateur_signed_in? && nav_bar_profile != :administrateur
%li %li
= link_to admin_procedures_path, class: "menu-item menu-link" do = link_to admin_procedures_path, class: "menu-item menu-link" do
= image_tag "icons/switch-profile.svg" = image_tag "icons/switch-profile.svg", alt: ''
Passer en administrateur Passer en administrateur
%li %li
= link_to profil_path, class: "menu-item menu-link" do = link_to profil_path, class: "menu-item menu-link" do
= image_tag "icons/switch-profile.svg" = image_tag "icons/switch-profile.svg", alt: ''
Voir mon profil Voir mon profil
%li %li
= link_to destroy_user_session_path, method: :delete, class: "menu-item menu-link" do = link_to destroy_user_session_path, method: :delete, class: "menu-item menu-link" do
= image_tag "icons/sign-out.svg" = image_tag "icons/sign-out.svg", alt: ''
Se déconnecter Se déconnecter

View file

@ -38,7 +38,7 @@
= form_tag instructeur_recherche_path, method: :get, class: "form" do = form_tag instructeur_recherche_path, method: :get, class: "form" do
= text_field_tag "q", "#{@search_terms if @search_terms.present?}", placeholder: "Rechercher un dossier" = text_field_tag "q", "#{@search_terms if @search_terms.present?}", placeholder: "Rechercher un dossier"
%button{ title: "Rechercher" } %button{ title: "Rechercher" }
= image_tag "icons/search-blue.svg" = image_tag "icons/search-blue.svg", alt: ''
- if nav_bar_profile == :user && user_signed_in? && current_user.dossiers.count > 2 - if nav_bar_profile == :user && user_signed_in? && current_user.dossiers.count > 2
%li %li
@ -46,7 +46,7 @@
= form_tag recherche_dossiers_path, method: :post, class: "form" do = form_tag recherche_dossiers_path, method: :post, class: "form" do
= text_field_tag :dossier_id, "", placeholder: "Numéro de dossier" = text_field_tag :dossier_id, "", placeholder: "Numéro de dossier"
%button{ title: "Rechercher" } %button{ title: "Rechercher" }
= image_tag "icons/search-blue.svg" = image_tag "icons/search-blue.svg", alt: ''
- if instructeur_signed_in? || user_signed_in? - if instructeur_signed_in? || user_signed_in?
%li %li
@ -60,15 +60,14 @@
= link_to "Connexion", new_user_session_path, class: "button secondary" = link_to "Connexion", new_user_session_path, class: "button secondary"
%li %li
.header-help - if dossier.present? && nav_bar_profile == :user
- if dossier.present? && nav_bar_profile == :user = render partial: 'shared/help/help_dropdown_dossier', locals: { dossier: dossier }
= render partial: 'shared/help/help_dropdown_dossier', locals: { dossier: dossier }
- elsif procedure.present? && (nav_bar_profile == :user || nav_bar_profile == :guest) - elsif procedure.present? && (nav_bar_profile == :user || nav_bar_profile == :guest)
= render partial: 'shared/help/help_dropdown_procedure', locals: { procedure: procedure } = render partial: 'shared/help/help_dropdown_procedure', locals: { procedure: procedure }
- elsif nav_bar_profile == :instructeur - elsif nav_bar_profile == :instructeur
= render partial: 'shared/help/help_dropdown_instructeur' = render partial: 'shared/help/help_dropdown_instructeur'
- else - else
= render partial: 'shared/help/help_button' = render partial: 'shared/help/help_button'

View file

@ -16,7 +16,7 @@
%th.libelle{ class: repetition ? 'padded' : '' } %th.libelle{ class: repetition ? 'padded' : '' }
= "#{c.libelle} :" = "#{c.libelle} :"
%td.rich-text %td.rich-text
%span{ class: highlight_if_unseen_class(demande_seen_at, c.updated_at) } %div{ class: highlight_if_unseen_class(demande_seen_at, c.updated_at) }
- case c.type_champ - case c.type_champ
- when TypeDeChamp.type_champs.fetch(:carte) - when TypeDeChamp.type_champs.fetch(:carte)
= render partial: "shared/champs/carte/show", locals: { champ: c } = render partial: "shared/champs/carte/show", locals: { champ: c }

View file

@ -2,13 +2,13 @@
= render partial: "shared/dossiers/submit_is_over", locals: { dossier: dossier } = render partial: "shared/dossiers/submit_is_over", locals: { dossier: dossier }
- if apercu - if apercu
- form_options = { url: '', method: :get, html: { class: 'form', multipart: true } } - form_options = { url: '', method: :get }
- elsif dossier.brouillon? - elsif dossier.brouillon?
- form_options = { url: brouillon_dossier_url(dossier), method: :patch, html: { class: 'form', multipart: true } } - form_options = { url: brouillon_dossier_url(dossier), method: :patch }
- else - else
- form_options = { url: modifier_dossier_url(dossier), method: :patch, html: { class: 'form', multipart: true } } - form_options = { url: modifier_dossier_url(dossier), method: :patch }
= form_for dossier, form_options do |f| = form_for dossier, form_options.merge({ html: { id: 'dossier-edit-form', class: 'form', multipart: true } }) do |f|
.prologue .prologue
%p.mandatory-explanation %p.mandatory-explanation
@ -43,13 +43,14 @@
- if dossier.brouillon? - if dossier.brouillon?
= f.button 'Enregistrer le brouillon', = f.button 'Enregistrer le brouillon',
formnovalidate: true, formnovalidate: true,
name: :save_draft,
value: true, value: true,
class: 'button send secondary', class: 'button send secondary',
data: { 'disable-with': "Envoi en cours…" } data: { 'disable-with': "Envoi en cours…" }
- if dossier.can_transition_to_en_construction? - if dossier.can_transition_to_en_construction?
= f.button 'Déposer le dossier', = f.button 'Déposer le dossier',
name: :submit_draft,
value: true,
class: 'button send primary', class: 'button send primary',
disabled: !current_user.owns?(dossier), disabled: !current_user.owns?(dossier),
data: { 'disable-with': "Envoi en cours…" } data: { 'disable-with': "Envoi en cours…" }

View file

@ -7,7 +7,7 @@
%div %div
= f.file_field :piece_jointe, id: 'piece_jointe', direct_upload: true = f.file_field :piece_jointe, id: 'piece_jointe', direct_upload: true
%label{ for: :piece_jointe } %label{ for: :piece_jointe }
.notice %span.notice
(taille max : 20 Mo) (taille max : 20 Mo)
%div %div

View file

@ -1,7 +1,7 @@
- if commentaire.sent_by_system? - if commentaire.sent_by_system?
= image_tag('icons/mail.svg', class: 'person-icon') = image_tag('icons/mail.svg', class: 'person-icon', alt: '')
- elsif commentaire.sent_by?(connected_user) - elsif commentaire.sent_by?(connected_user)
= image_tag('icons/account-circle.svg', class: 'person-icon') = image_tag('icons/account-circle.svg', class: 'person-icon', alt: '')
- else - else
= image_tag('icons/blue-person.svg', class: 'person-icon') = image_tag('icons/blue-person.svg', class: 'person-icon', alt: '')

View file

@ -1,5 +1,5 @@
.dropdown.help-dropdown .dropdown.help-dropdown
.button.primary.dropdown-button Aide %button.button.primary.dropdown-button Aide
.dropdown-content.fade-in-down .dropdown-content.fade-in-down
%ul.dropdown-items %ul.dropdown-items
- title = dossier.brouillon? ? "Besoin daide pour remplir votre dossier ?" : "Une question sur votre dossier ?" - title = dossier.brouillon? ? "Besoin daide pour remplir votre dossier ?" : "Une question sur votre dossier ?"

View file

@ -1,5 +1,5 @@
.dropdown.help-dropdown .dropdown.help-dropdown
.button.primary.dropdown-button Aide %button.button.primary.dropdown-button Aide
.dropdown-content.fade-in-down .dropdown-content.fade-in-down
%ul.dropdown-items %ul.dropdown-items
= render partial: 'shared/help/dropdown_items/faq_item' = render partial: 'shared/help/dropdown_items/faq_item'

View file

@ -4,7 +4,7 @@
- has_actions = has_delete_action || has_new_dossier_action - has_actions = has_delete_action || has_new_dossier_action
- if has_actions - if has_actions
%span.dropdown.user-dossier-actions .dropdown.user-dossier-actions
%button.button.dropdown-button %button.button.dropdown-button
Actions Actions
.dropdown-content.fade-in-down .dropdown-content.fade-in-down

View file

@ -3,8 +3,9 @@
- content_for :footer do - content_for :footer do
= render partial: "users/procedure_footer", locals: { procedure: @dossier.procedure, dossier: @dossier } = render partial: "users/procedure_footer", locals: { procedure: @dossier.procedure, dossier: @dossier }
.dossier-header.sub-header #dossier-draft
.container .dossier-header.sub-header
= render partial: "shared/dossiers/header", locals: { dossier: @dossier, apercu: false } .container
= render partial: "shared/dossiers/header", locals: { dossier: @dossier, apercu: false }
= render partial: "shared/dossiers/edit", locals: { dossier: @dossier, apercu: false } = render partial: "shared/dossiers/edit", locals: { dossier: @dossier, apercu: false }

View file

@ -30,26 +30,26 @@
%th.status-col Statut %th.status-col Statut
%th.updated-at-col Mis à jour %th.updated-at-col Mis à jour
%th %th
%tbody %tbody
- @dossiers.each do |dossier| - @dossiers.each do |dossier|
%tr{ data: { 'dossier-id': dossier.id } } %tr{ data: { 'dossier-id': dossier.id } }
%td.folder-col %td.folder-col
= link_to(url_for_dossier(dossier), class: 'cell-link') do = link_to(url_for_dossier(dossier), class: 'cell-link') do
%span.icon.folder %span.icon.folder
%td.number-col %td.number-col
= link_to(url_for_dossier(dossier), class: 'cell-link') do = link_to(url_for_dossier(dossier), class: 'cell-link') do
= dossier.id = dossier.id
%td %td
= link_to(url_for_dossier(dossier), class: 'cell-link') do = link_to(url_for_dossier(dossier), class: 'cell-link') do
= procedure_libelle(dossier.procedure) = procedure_libelle(dossier.procedure)
%td.status-col %td.status-col
= link_to(url_for_dossier(dossier), class: 'cell-link') do = link_to(url_for_dossier(dossier), class: 'cell-link') do
= render partial: 'shared/dossiers/status_badge', locals: { dossier: dossier } = render partial: 'shared/dossiers/status_badge', locals: { dossier: dossier }
%td.updated-at-col %td.updated-at-col
= link_to(url_for_dossier(dossier), class: 'cell-link') do = link_to(url_for_dossier(dossier), class: 'cell-link') do
= try_format_date(dossier.updated_at) = try_format_date(dossier.updated_at)
%td.action-col.action-col %td.action-col.action-col
= render partial: 'dossier_actions', locals: { dossier: dossier } = render partial: 'dossier_actions', locals: { dossier: dossier }
= paginate(@dossiers) = paginate(@dossiers)
- if current_user.feedbacks.empty? || current_user.feedbacks.last.created_at < 1.month.ago - if current_user.feedbacks.empty? || current_user.feedbacks.last.created_at < 1.month.ago

View file

@ -13,7 +13,7 @@
.auth-options .auth-options
%div %div
= f.check_box :remember_me, as: :boolean = f.check_box :remember_me
= f.label :remember_me, "Se souvenir de moi", class: 'remember-me' = f.label :remember_me, "Se souvenir de moi", class: 'remember-me'
.text-right .text-right

View file

@ -100,38 +100,38 @@ describe Users::DossiersController, type: :controller do
let(:user) { create(:user) } let(:user) { create(:user) }
let(:asked_dossier) { create(:dossier) } let(:asked_dossier) { create(:dossier) }
let(:ensure_authorized) { :forbid_invite_submission! } let(:ensure_authorized) { :forbid_invite_submission! }
let(:draft) { false } let(:submit) { true }
before do before do
@controller.params = @controller.params.merge(dossier_id: asked_dossier.id, save_draft: draft) @controller.params = @controller.params.merge(dossier_id: asked_dossier.id, submit_draft: submit)
allow(@controller).to receive(:current_user).and_return(user) allow(@controller).to receive(:current_user).and_return(user)
allow(@controller).to receive(:redirect_to) allow(@controller).to receive(:redirect_to)
end end
context 'when a user save their own draft' do context 'when a user save their own draft' do
let(:asked_dossier) { create(:dossier, user: user) } let(:asked_dossier) { create(:dossier, user: user) }
let(:draft) { true } let(:submit) { false }
it_behaves_like 'does not redirect nor flash' it_behaves_like 'does not redirect nor flash'
end end
context 'when a user submit their own dossier' do context 'when a user submit their own dossier' do
let(:asked_dossier) { create(:dossier, user: user) } let(:asked_dossier) { create(:dossier, user: user) }
let(:draft) { false } let(:submit) { true }
it_behaves_like 'does not redirect nor flash' it_behaves_like 'does not redirect nor flash'
end end
context 'when an invite save the draft for a dossier where they where invited' do context 'when an invite save the draft for a dossier where they where invited' do
before { create(:invite, dossier: asked_dossier, user: user) } before { create(:invite, dossier: asked_dossier, user: user) }
let(:draft) { true } let(:submit) { false }
it_behaves_like 'does not redirect nor flash' it_behaves_like 'does not redirect nor flash'
end end
context 'when an invite submit a dossier where they where invited' do context 'when an invite submit a dossier where they where invited' do
before { create(:invite, dossier: asked_dossier, user: user) } before { create(:invite, dossier: asked_dossier, user: user) }
let(:draft) { false } let(:submit) { true }
it_behaves_like 'redirects and flashes' it_behaves_like 'redirects and flashes'
end end
@ -394,7 +394,7 @@ describe Users::DossiersController, type: :controller do
} }
} }
end end
let(:payload) { submit_payload } let(:payload) { submit_payload.merge(submit_draft: true) }
subject do subject do
Timecop.freeze(now) do Timecop.freeze(now) do
@ -480,7 +480,7 @@ describe Users::DossiersController, type: :controller do
it { expect(flash.alert).to eq(['Le champ l doit être rempli.']) } it { expect(flash.alert).to eq(['Le champ l doit être rempli.']) }
context 'and the user saves a draft' do context 'and the user saves a draft' do
let(:payload) { submit_payload.merge(save_draft: true) } let(:payload) { submit_payload.except(:submit_draft) }
it { expect(response).to render_template(:brouillon) } it { expect(response).to render_template(:brouillon) }
it { expect(flash.notice).to eq('Votre brouillon a bien été sauvegardé.') } it { expect(flash.notice).to eq('Votre brouillon a bien été sauvegardé.') }
@ -510,7 +510,7 @@ describe Users::DossiersController, type: :controller do
let!(:invite) { create(:invite, dossier: dossier, user: user) } let!(:invite) { create(:invite, dossier: dossier, user: user) }
context 'and the invite saves a draft' do context 'and the invite saves a draft' do
let(:payload) { submit_payload.merge(save_draft: true) } let(:payload) { submit_payload.except(:submit_draft) }
before do before do
first_champ.type_de_champ.update(mandatory: true, libelle: 'l') first_champ.type_de_champ.update(mandatory: true, libelle: 'l')