Merge branch 'dev' into new_design_edit_attestation
This commit is contained in:
commit
62e04a6ca9
33 changed files with 304 additions and 1145 deletions
|
@ -7,6 +7,13 @@
|
|||
margin-bottom: $default-spacer * 2;
|
||||
background: #FFFFFF;
|
||||
|
||||
.notice {
|
||||
font-size: 16px;
|
||||
color: #666666;
|
||||
margin-top: -8px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.card-title {
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
|
|
|
@ -12,6 +12,14 @@
|
|||
margin-bottom: 4 * $default-spacer;
|
||||
}
|
||||
|
||||
.ml-1 {
|
||||
margin-left: $default-spacer;
|
||||
}
|
||||
|
||||
.pl-0 {
|
||||
padding-left: 0px !important;
|
||||
}
|
||||
|
||||
.numbers-delimiter {
|
||||
display: inline-block;
|
||||
width: 5px;
|
||||
|
|
|
@ -68,3 +68,7 @@
|
|||
// scss-lint:enable VendorPrefix
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
html.scroll-margins-for-sticky-footer {
|
||||
scroll-padding: 0 0 100px 0;
|
||||
}
|
||||
|
|
|
@ -14,6 +14,23 @@
|
|||
}
|
||||
}
|
||||
|
||||
.procedure-admin-listing-container {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
padding-left: 16px;
|
||||
padding-right: 16px;
|
||||
max-width: 1072px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.container {
|
||||
a {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
|
||||
.procedure-admin-explanation {
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
|
|
|
@ -3,6 +3,46 @@ module NewAdministrateur
|
|||
before_action :retrieve_procedure, only: [:champs, :annotations, :edit, :monavis, :update_monavis, :jeton, :update_jeton]
|
||||
before_action :procedure_locked?, only: [:champs, :annotations]
|
||||
|
||||
ITEMS_PER_PAGE = 25
|
||||
|
||||
def index
|
||||
@procedures_publiees = paginated_published_procedures
|
||||
@procedures_draft = paginated_draft_procedures
|
||||
@procedures_closed = paginated_closed_procedures
|
||||
@procedures_publiees_count = current_administrateur.procedures.publiees.count
|
||||
@procedures_draft_count = current_administrateur.procedures.brouillons.count
|
||||
@procedures_closed_count = current_administrateur.procedures.closes.count
|
||||
@statut = params[:statut]
|
||||
@statut.blank? ? @statut = 'publiees' : @statut = params[:statut]
|
||||
end
|
||||
|
||||
def paginated_published_procedures
|
||||
current_administrateur
|
||||
.procedures
|
||||
.publiees
|
||||
.page(params[:page])
|
||||
.per(ITEMS_PER_PAGE)
|
||||
.order(published_at: :desc)
|
||||
end
|
||||
|
||||
def paginated_draft_procedures
|
||||
current_administrateur
|
||||
.procedures
|
||||
.brouillons
|
||||
.page(params[:page])
|
||||
.per(ITEMS_PER_PAGE)
|
||||
.order(created_at: :desc)
|
||||
end
|
||||
|
||||
def paginated_closed_procedures
|
||||
current_administrateur
|
||||
.procedures
|
||||
.closes
|
||||
.page(params[:page])
|
||||
.per(ITEMS_PER_PAGE)
|
||||
.order(created_at: :desc)
|
||||
end
|
||||
|
||||
def apercu
|
||||
@dossier = procedure_without_control.new_dossier
|
||||
@tab = apercu_tab
|
||||
|
@ -56,6 +96,19 @@ module NewAdministrateur
|
|||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
procedure = current_administrateur.procedures.find(params[:id])
|
||||
|
||||
if procedure.can_be_deleted_by_administrateur?
|
||||
procedure.discard_and_keep_track!(current_administrateur)
|
||||
|
||||
flash.notice = 'Démarche supprimée'
|
||||
redirect_to admin_procedures_draft_path
|
||||
else
|
||||
render json: {}, status: 403
|
||||
end
|
||||
end
|
||||
|
||||
def monavis
|
||||
end
|
||||
|
||||
|
|
|
@ -264,6 +264,11 @@ type Demarche {
|
|||
"""
|
||||
after: String
|
||||
|
||||
"""
|
||||
Si présent, permet de filtrer les dossiers archivés ou non
|
||||
"""
|
||||
archived: Boolean
|
||||
|
||||
"""
|
||||
Returns the elements in the list that come before the specified cursor.
|
||||
"""
|
||||
|
|
|
@ -37,6 +37,7 @@ module Types
|
|||
argument :created_since, GraphQL::Types::ISO8601DateTime, required: false, description: "Dossiers déposés depuis la date."
|
||||
argument :updated_since, GraphQL::Types::ISO8601DateTime, required: false, description: "Dossiers mis à jour depuis la date."
|
||||
argument :state, Types::DossierType::DossierState, required: false, description: "Dossiers avec statut."
|
||||
argument :archived, Boolean, required: false, description: "Si présent, permet de filtrer les dossiers archivés ou non"
|
||||
end
|
||||
|
||||
field :champ_descriptors, [Types::ChampDescriptorType], null: false, method: :types_de_champ
|
||||
|
@ -54,13 +55,17 @@ module Types
|
|||
Loaders::Record.for(Service).load(object.service_id)
|
||||
end
|
||||
|
||||
def dossiers(updated_since: nil, created_since: nil, state: nil, order:)
|
||||
def dossiers(updated_since: nil, created_since: nil, state: nil, archived: nil, order:)
|
||||
dossiers = object.dossiers.state_not_brouillon.for_api_v2
|
||||
|
||||
if state.present?
|
||||
dossiers = dossiers.where(state: state)
|
||||
end
|
||||
|
||||
if !archived.nil?
|
||||
dossiers = dossiers.where(archived: archived)
|
||||
end
|
||||
|
||||
if updated_since.present?
|
||||
dossiers = dossiers.updated_since(updated_since).order_by_updated_at(order)
|
||||
else
|
||||
|
|
|
@ -72,19 +72,6 @@ module DossierHelper
|
|||
end
|
||||
end
|
||||
|
||||
# On the 22/01/2020, a technical error on the demarches-simplifees.fr
|
||||
# instance caused some files attached to some dossiers to be deleted.
|
||||
#
|
||||
# This method returns true if the dossier contained attachments
|
||||
# whose files were deleted during this incident.
|
||||
def has_lost_attachments(dossier)
|
||||
if dinum_instance?
|
||||
dossiers_with_lost_attachments_ids.include?(dossier.id)
|
||||
else
|
||||
false
|
||||
end
|
||||
end
|
||||
|
||||
def status_badge(state)
|
||||
status_text = dossier_display_state(state, lower: true)
|
||||
status_class = state.tr('_', '-')
|
||||
|
@ -114,16 +101,4 @@ module DossierHelper
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def dinum_instance?
|
||||
# rubocop:disable DS/ApplicationName
|
||||
ENV['APP_HOST']&.ends_with?('demarches-simplifiees.fr')
|
||||
# rubocop:enable DS/ApplicationName
|
||||
end
|
||||
|
||||
def dossiers_with_lost_attachments_ids
|
||||
@@ids ||= YAML.load_file(Rails.root.join('config', 'dossiers-with-lost-attachments.yml'))
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
!!! 5
|
||||
%html{ lang: "fr" }
|
||||
%html{ lang: "fr", class: yield(:root_class) }
|
||||
%head
|
||||
%meta{ "http-equiv": "Content-Type", content: "text/html; charset=UTF-8" }
|
||||
%meta{ "http-equiv": "X-UA-Compatible", content: "IE=edge" }
|
||||
|
|
|
@ -145,7 +145,7 @@
|
|||
<tr>
|
||||
<td style="word-wrap:break-word;font-size:0px;padding:0px 20px 0px 20px;padding-top:0px;padding-bottom:0px;" align="center">
|
||||
<div class="" style="cursor:auto;color:#55575d;font-family:Helvetica, Arial, sans-serif;font-size:11px;line-height:22px;text-align:center;">
|
||||
#{APPLICATION_NAME} est un service fourni par la DINUM et incubé par beta.gouv.fr
|
||||
<%= "#{APPLICATION_NAME}" %> est un service fourni par la DINUM et incubé par beta.gouv.fr
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
- content_for(:root_class, 'scroll-margins-for-sticky-footer')
|
||||
|
||||
= render partial: 'new_administrateur/breadcrumbs',
|
||||
locals: { steps: [link_to('Démarches', admin_procedures_path),
|
||||
link_to(@procedure.libelle, admin_procedure_path(@procedure)),
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
- procedures.each do |procedure|
|
||||
.card
|
||||
.flex.justify-between
|
||||
.flex
|
||||
- if procedure.logo.present?
|
||||
= image_tag procedure.logo, alt: procedure.libelle, width: '100'
|
||||
.flex.column.ml-1
|
||||
.card-title
|
||||
= link_to procedure.libelle, admin_procedure_path(procedure), style: 'color: black;'
|
||||
= link_to(procedure_lien(procedure), procedure_lien(procedure), class: 'procedure-lien mb-1')
|
||||
|
||||
%div
|
||||
%p.notice N° #{procedure.id}
|
||||
%p.notice créée le #{procedure.created_at.strftime('%d/%m/%Y')}
|
||||
- if procedure.published_at.present?
|
||||
%p.notice publiée le #{procedure.published_at.strftime('%d/%m/%Y')}
|
||||
- if procedure.closed_at.present?
|
||||
%p.notice archivée le #{procedure.closed_at.strftime('%d/%m/%Y')}
|
||||
|
||||
.flex.justify-between
|
||||
%div
|
||||
- if feature_enabled?(:administrateur_routage)
|
||||
%span.icon.person
|
||||
%span.badge.baseline= procedure.groupe_instructeurs.count
|
||||
- else
|
||||
%span.icon.person
|
||||
%span.badge.baseline= procedure.instructeurs.count
|
||||
|
||||
%span.icon.folder
|
||||
%span.badge.baseline= procedure.dossiers.count
|
||||
|
||||
%div
|
||||
= link_to admin_procedure_path(procedure), class: 'button mr-1 edit-procedure' do
|
||||
%span.icon.edit
|
||||
Modifier
|
||||
.dropdown
|
||||
.button.dropdown-button.procedures-actions-btn
|
||||
Actions
|
||||
.dropdown-content.fade-in-down
|
||||
%ul.dropdown-items.pl-0
|
||||
- if !procedure.close?
|
||||
%li
|
||||
= link_to sanitize_url(procedure.brouillon? ? commencer_test_url(path: procedure.path) : commencer_url(path: procedure.path)), target: :blank, rel: :noopener do
|
||||
%span.icon.in-progress
|
||||
.dropdown-description
|
||||
%h4 Tester
|
||||
%li
|
||||
= link_to admin_procedure_clone_path(procedure.id), class: 'clone-btn', data: { method: :put } do
|
||||
%span.icon.new-folder
|
||||
.dropdown-description
|
||||
%h4 Cloner
|
||||
|
||||
- if procedure.publiee?
|
||||
%li
|
||||
= link_to admin_procedure_archive_path(procedure_id: procedure.id), method: :put, data: { confirm: "Voulez-vous vraiment clore la démarche ? \nLes dossiers en cours pourront être instruits, mais aucun nouveau dossier ne pourra plus être déposé.", disable_with: "Archivage..."} do
|
||||
%span.icon.archive
|
||||
.dropdown-description
|
||||
%h4 Clore
|
||||
|
||||
- if procedure.brouillon?
|
||||
%li
|
||||
= link_to admin_procedure_path(procedure), method: :delete, data: { confirm: "Voulez-vous vraiment supprimer la démarche ? \nToute suppression est définitive et s'appliquera aux éventuels autres administrateurs de cette démarche !" } do
|
||||
%span.icon.refuse
|
||||
.dropdown-description
|
||||
%h4 Supprimer
|
||||
|
||||
- else
|
||||
%li
|
||||
= link_to admin_procedure_publication_path(procedure) do
|
||||
%span.icon.unarchive
|
||||
.dropdown-description
|
||||
%h4 Réactiver
|
||||
|
|
@ -1,3 +1,5 @@
|
|||
- content_for(:root_class, 'scroll-margins-for-sticky-footer')
|
||||
|
||||
= render partial: 'new_administrateur/breadcrumbs',
|
||||
locals: { steps: [link_to('Démarches', admin_procedures_path),
|
||||
link_to(@procedure.libelle, admin_procedure_path(@procedure)),
|
||||
|
|
22
app/views/new_administrateur/procedures/index.html.haml
Normal file
22
app/views/new_administrateur/procedures/index.html.haml
Normal file
|
@ -0,0 +1,22 @@
|
|||
.sub-header
|
||||
.procedure-admin-listing-container
|
||||
= link_to "Nouvelle Démarche", new_admin_procedure_path, id: 'new-procedure', class: 'button primary'
|
||||
.container
|
||||
|
||||
%ul.tabs
|
||||
= tab_item(t('pluralize.published', count: @procedures_publiees.count), admin_procedures_path(statut: 'publiees'), active: @statut == 'publiees', badge: number_with_html_delimiter(@procedures_publiees_count))
|
||||
= tab_item('En test', admin_procedures_path(statut: 'brouillons'), active: @statut == 'brouillons', badge: number_with_html_delimiter(@procedures_draft_count))
|
||||
= tab_item(t('pluralize.closed', count: @procedures_closed.count), admin_procedures_path(statut: 'archivees'), active: @statut == 'archivees', badge: number_with_html_delimiter(@procedures_closed_count))
|
||||
|
||||
.container#procedures{ data: { item_count: @statut === "publiees" ? @procedures_publiees_count : @statut === "brouillons" ? @procedures_draft_count : @procedures_closed_count } }
|
||||
- if @statut === "publiees"
|
||||
= render partial: "procedures_list", locals: { procedures: @procedures_publiees }
|
||||
= paginate @procedures_publiees
|
||||
|
||||
- if @statut === "brouillons"
|
||||
= render partial: "procedures_list", locals: { procedures: @procedures_draft }
|
||||
= paginate @procedures_draft
|
||||
|
||||
- if @statut === "archivees"
|
||||
= render partial: "procedures_list", locals: { procedures: @procedures_closed }
|
||||
= paginate @procedures_closed
|
|
@ -1,3 +1,5 @@
|
|||
- content_for(:root_class, 'scroll-margins-for-sticky-footer')
|
||||
|
||||
= render partial: 'new_administrateur/breadcrumbs',
|
||||
locals: { steps: [link_to('Démarches', admin_procedures_path),
|
||||
'Nouvelle'] }
|
||||
|
|
|
@ -12,13 +12,18 @@
|
|||
%span.icon.in-progress
|
||||
Tester
|
||||
|
||||
- if @procedure.publiee? || @procedure.brouillon?
|
||||
= link_to admin_procedure_publication_path(@procedure), class: 'button' do
|
||||
%span.icon.reply
|
||||
Envoyer une copie
|
||||
|
||||
- if !@procedure.publiee?
|
||||
= link_to 'Publier', admin_procedure_publication_path(@procedure), class: 'button primary', id: 'publish-procedure-link', data: { disable_with: "Publication..." }
|
||||
|
||||
- if @procedure.locked?
|
||||
= link_to admin_procedure_archive_path(procedure_id: @procedure.id), method: :put, class: 'button', data: { confirm: "Voulez-vous vraiment archiver la démarche ? \nLes dossiers en cours pourront être instruits, mais aucun nouveau dossier ne pourra plus être déposé.", disable_with: "Archivage..."} do
|
||||
- if @procedure.locked? && !@procedure.close?
|
||||
= link_to admin_procedure_archive_path(procedure_id: @procedure.id), method: :put, class: 'button', data: { confirm: "Voulez-vous vraiment clore la démarche ? \nLes dossiers en cours pourront être instruits, mais aucun nouveau dossier ne pourra plus être déposé.", disable_with: "Archivage..."} do
|
||||
%span.icon.archive
|
||||
Archiver
|
||||
Clore
|
||||
|
||||
.container
|
||||
%h2.procedure-admin-explanation Indispensable avant publication
|
||||
|
|
|
@ -24,7 +24,5 @@
|
|||
.tab-title Formulaire
|
||||
- champs = dossier.champs.includes(:type_de_champ)
|
||||
- if champs.any? || dossier.procedure.routee?
|
||||
- if has_lost_attachments(dossier)
|
||||
= render partial: "shared/dossiers/lost_attachments", locals: { dossier: dossier, profile: profile }
|
||||
.card
|
||||
= render partial: "shared/dossiers/champs", locals: { champs: champs, dossier: dossier, demande_seen_at: demande_seen_at, profile: profile }
|
||||
|
|
|
@ -1,56 +0,0 @@
|
|||
-# haml-lint:disable ApplicationNameLinter
|
||||
- post_mortem_url = 'https://demarches-simplifiees.gitbook.io/articles-demarches-simplifiees-fr/2020/incident-de-production-du-21-janvier-2020'
|
||||
-# haml-lint:enable ApplicationNameLinter
|
||||
- if profile == 'usager'
|
||||
/# Message for Usager
|
||||
.card.warning
|
||||
.card-title Des pièces jointes de votre dossier peuvent être manquantes.
|
||||
%p
|
||||
Suite à un
|
||||
= link_to 'incident', post_mortem_url, target: '_blank'
|
||||
survenu le 21 janvier, #{APPLICATION_NAME} a perdu par erreur une partie des pièces jointes de votre dossier. L’administration en charge de votre dossier a été prévenue.
|
||||
|
||||
- if dossier.read_only?
|
||||
%p
|
||||
Si nécessaire,
|
||||
= succeed '.' do
|
||||
%strong
|
||||
l’administration vous contactera pour renvoyer les pièces jointes en question
|
||||
- else
|
||||
%p
|
||||
Si une ou plusieurs pièces jointes manquent, nous vous invitons à
|
||||
= link_to modifier_dossier_path(dossier) do
|
||||
= succeed '.' do
|
||||
%strong renvoyer les pièces jointes manquantes
|
||||
|
||||
%p Nous nous excusons pour la gêne occasionnée.
|
||||
|
||||
- else
|
||||
/# Message for Instructeurs
|
||||
.card.warning
|
||||
.card-title Des pièces jointes de ce dossier peuvent être manquantes.
|
||||
%p
|
||||
Suite à un
|
||||
= link_to 'incident', post_mortem_url, target: '_blank'
|
||||
survenu le 21 janvier, #{APPLICATION_NAME} a perdu par erreur une partie des pièces jointes de ce dossier.
|
||||
|
||||
- if dossier.read_only?
|
||||
%p
|
||||
Si une ou plusieurs pièces jointes essentielles manquent, nous vous invitons à :
|
||||
%ol
|
||||
%li repasser ce dossier en construction ;
|
||||
%li<
|
||||
= link_to 'contacter le demandeur ', messagerie_instructeur_dossier_path(dossier.procedure, dossier)
|
||||
pour lui demander de
|
||||
= succeed '.' do
|
||||
%strong renvoyer les pièces jointes nécessaires
|
||||
- else
|
||||
%p
|
||||
Si une ou plusieurs pièces jointes manquent, nous vous invitons à
|
||||
= succeed ',' do
|
||||
= link_to 'contacter le demandeur', messagerie_instructeur_dossier_path(dossier.procedure, dossier)
|
||||
pour lui demander de
|
||||
= succeed '.' do
|
||||
%strong renvoyer les pièces jointes nécessaires
|
||||
|
||||
%p Le demandeur de ce dossier a également été prévenu. Nous nous excusons pour la gêne occasionnée.
|
|
@ -1,3 +1,4 @@
|
|||
- content_for(:root_class, 'scroll-margins-for-sticky-footer')
|
||||
- content_for(:title, "Modification du brouillon nº #{@dossier.id} (#{@dossier.procedure.libelle})")
|
||||
|
||||
- content_for :footer do
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue