Merge pull request #798 from sgmap/print
Allow accompagnateurs to print a Dossier
This commit is contained in:
commit
8e39db409d
12 changed files with 169 additions and 1 deletions
1
app/assets/images/icons/printer.svg
Normal file
1
app/assets/images/icons/printer.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<svg width="22" height="22" viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>ic_form</title><defs><rect id="a" x="3" y="8" width="18" height="7" rx="1"/><path d="M7 3h10a1 1 0 0 1 1 1v2H6V4a1 1 0 0 1 1-1z" id="b"/><path d="M0 0h12v6a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V0z" id="c"/></defs><g fill="none" fill-rule="evenodd"><path d="M-1-1h24v24H-1z"/><g transform="translate(-1 -1)"><use fill="#FFF" xlink:href="#a"/><rect stroke="#4393F3" stroke-width="2" x="2" y="7" width="20" height="9" rx="1"/></g><g transform="translate(-1 -1)"><use fill="#FFF" xlink:href="#b"/><path stroke="#4393F3" stroke-width="2" d="M7 2h10a2 2 0 0 1 2 2v3H5V4a2 2 0 0 1 2-2z"/></g><g transform="translate(5 13)"><use fill="#FFF" xlink:href="#c"/><path stroke="#4393F3" stroke-width="2" d="M-1-1h14v7a2 2 0 0 1-2 2H1a2 2 0 0 1-2-2v-7z"/><rect fill="#4393F3" x="1" y="4" width="6" height="1.5" rx=".75"/><rect fill="#4393F3" x="1" y="1.5" width="10" height="1.5" rx=".75"/></g></g></svg>
|
After Width: | Height: | Size: 1,014 B |
|
@ -92,6 +92,10 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.icon-only i {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.dropdown-content {
|
.dropdown-content {
|
||||||
|
|
|
@ -56,4 +56,8 @@ i {
|
||||||
&.lock {
|
&.lock {
|
||||||
background-image: image-url("icons/lock.svg");
|
background-image: image-url("icons/lock.svg");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.printer {
|
||||||
|
background-image: image-url("icons/printer.svg");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,3 +7,4 @@
|
||||||
// = require select2
|
// = require select2
|
||||||
// = require typeahead
|
// = require typeahead
|
||||||
// = require_tree .
|
// = require_tree .
|
||||||
|
// = stub "print"
|
||||||
|
|
25
app/assets/stylesheets/new_design/print.scss
Normal file
25
app/assets/stylesheets/new_design/print.scss
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
@import "colors";
|
||||||
|
@import "fonts";
|
||||||
|
|
||||||
|
body {
|
||||||
|
font-family: "Muli";
|
||||||
|
}
|
||||||
|
|
||||||
|
.subtitle {
|
||||||
|
margin-top: -20px;
|
||||||
|
color: $grey;
|
||||||
|
}
|
||||||
|
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
text-align: left;
|
||||||
|
|
||||||
|
&.header-section {
|
||||||
|
padding-top: 1.2em;
|
||||||
|
font-size: 1.2em;
|
||||||
|
}
|
||||||
|
}
|
|
@ -83,6 +83,11 @@ module NewGestionnaire
|
||||||
redirect_to annotations_privees_dossier_path(dossier.procedure, dossier)
|
redirect_to annotations_privees_dossier_path(dossier.procedure, dossier)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def print
|
||||||
|
@dossier = dossier
|
||||||
|
render layout: "print"
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def dossier
|
def dossier
|
||||||
|
|
18
app/views/layouts/print.html.haml
Normal file
18
app/views/layouts/print.html.haml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
%html
|
||||||
|
%head
|
||||||
|
%meta{ "http-equiv": "Content-Type", content: "text/html; charset=UTF-8" }
|
||||||
|
%meta{ "http-equiv": "X-UA-Compatible", content: "IE=edge" }
|
||||||
|
%meta{ name: "viewport", content: "width=device-width, initial-scale=1" }
|
||||||
|
= csrf_meta_tags
|
||||||
|
|
||||||
|
%title
|
||||||
|
= t("dynamics.page_title")
|
||||||
|
|
||||||
|
= favicon_link_tag(image_url("favicons/16x16.png"), type: "image/png", sizes: "16x16")
|
||||||
|
= favicon_link_tag(image_url("favicons/32x32.png"), type: "image/png", sizes: "32x32")
|
||||||
|
= favicon_link_tag(image_url("favicons/96x96.png"), type: "image/png", sizes: "96x96")
|
||||||
|
|
||||||
|
= stylesheet_link_tag "new_design/print", media: "all"
|
||||||
|
|
||||||
|
%body
|
||||||
|
= yield
|
|
@ -7,6 +7,8 @@
|
||||||
%li
|
%li
|
||||||
= "Dossier nº #{dossier.id}"
|
= "Dossier nº #{dossier.id}"
|
||||||
%div
|
%div
|
||||||
|
= link_to print_dossier_path(dossier.procedure, dossier), target: "_blank", class: "button icon-only" do
|
||||||
|
%i.printer>
|
||||||
= render partial: "new_gestionnaire/procedures/dossier_actions", locals: { procedure: dossier.procedure, dossier: dossier, dossier_is_followed: current_gestionnaire&.follow?(dossier) }
|
= render partial: "new_gestionnaire/procedures/dossier_actions", locals: { procedure: dossier.procedure, dossier: dossier, dossier_is_followed: current_gestionnaire&.follow?(dossier) }
|
||||||
= render partial: "state_button", locals: { dossier: dossier }
|
= render partial: "state_button", locals: { dossier: dossier }
|
||||||
%ul.tabs
|
%ul.tabs
|
||||||
|
|
106
app/views/new_gestionnaire/dossiers/print.html.haml
Normal file
106
app/views/new_gestionnaire/dossiers/print.html.haml
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
%h1= "Dossier nº #{@dossier.id}"
|
||||||
|
%h1.subtitle= "Procédure : #{@dossier.procedure.libelle}"
|
||||||
|
|
||||||
|
%h2 Identité du demandeur
|
||||||
|
|
||||||
|
- if @dossier.entreprise.present?
|
||||||
|
= render partial: "identite_entreprise", locals: { entreprise: @dossier.entreprise }
|
||||||
|
|
||||||
|
- if @dossier.individual.present?
|
||||||
|
= render partial: "identite_individual", locals: { individual: @dossier.individual }
|
||||||
|
|
||||||
|
%h2 Formulaire
|
||||||
|
|
||||||
|
- champs = @dossier.ordered_champs.decorate
|
||||||
|
- if champs.any?
|
||||||
|
= render partial: "champs", locals: { champs: champs }
|
||||||
|
|
||||||
|
- if @dossier.procedure.use_api_carto
|
||||||
|
%h3 Cartographie
|
||||||
|
- if @dossier.quartier_prioritaires.any?
|
||||||
|
%h4 Quartiers prioritaires
|
||||||
|
%table
|
||||||
|
- @dossier.quartier_prioritaires.each do |q|
|
||||||
|
%tr
|
||||||
|
%td= q.nom
|
||||||
|
|
||||||
|
- if @dossier.cadastres.any?
|
||||||
|
%h4 Parcelles cadastrales
|
||||||
|
%table
|
||||||
|
- @dossier.cadastres.each do |p|
|
||||||
|
%tr
|
||||||
|
%td= "Parcelle n° #{p.numero} - Feuille #{p.code_arr} #{p.section} #{p.feuille}"
|
||||||
|
|
||||||
|
- if @dossier.procedure.cerfa_flag? || @dossier.types_de_piece_justificative.any?
|
||||||
|
%h3 Pièces jointes
|
||||||
|
|
||||||
|
%table
|
||||||
|
- if @dossier.procedure.cerfa_flag?
|
||||||
|
%tr
|
||||||
|
%th Formulaire :
|
||||||
|
%td
|
||||||
|
- if @dossier.cerfa_available?
|
||||||
|
Pièce fournie
|
||||||
|
- else
|
||||||
|
Pièce non fournie
|
||||||
|
|
||||||
|
- @dossier.procedure.types_de_piece_justificative.each do |type_de_piece_justificative|
|
||||||
|
%tr
|
||||||
|
%th= "#{type_de_piece_justificative.libelle} :"
|
||||||
|
%td
|
||||||
|
- pj = @dossier.retrieve_last_piece_justificative_by_type(type_de_piece_justificative.id)
|
||||||
|
- if pj.present?
|
||||||
|
Pièce fournie
|
||||||
|
- else
|
||||||
|
Pièce non fournie
|
||||||
|
|
||||||
|
%h2 Annotations privées
|
||||||
|
|
||||||
|
- if @dossier.ordered_champs_private.present?
|
||||||
|
%table
|
||||||
|
- @dossier.champs_private.each do |champ|
|
||||||
|
%tr
|
||||||
|
%th
|
||||||
|
= champ.libelle
|
||||||
|
%td
|
||||||
|
= champ.value
|
||||||
|
- else
|
||||||
|
Aucune annotation privée
|
||||||
|
|
||||||
|
%h2 Avis
|
||||||
|
|
||||||
|
- if @dossier.avis.present?
|
||||||
|
%table
|
||||||
|
- @dossier.avis.each do |avis|
|
||||||
|
%tr
|
||||||
|
%th
|
||||||
|
= "Avis de #{avis.email_to_display}"
|
||||||
|
- if avis.confidentiel?
|
||||||
|
(confidentiel)
|
||||||
|
%td
|
||||||
|
- if avis.answer.present?
|
||||||
|
= avis.answer
|
||||||
|
- else
|
||||||
|
En attente de réponse
|
||||||
|
- else
|
||||||
|
Aucun avis
|
||||||
|
|
||||||
|
%h2 Messagerie
|
||||||
|
|
||||||
|
%table
|
||||||
|
- @dossier.commentaires.each do |commentaire|
|
||||||
|
%tr
|
||||||
|
%th
|
||||||
|
= render partial: 'commentaire_issuer', locals: { commentaire: commentaire, current_gestionnaire: current_gestionnaire }
|
||||||
|
- if ![current_gestionnaire.email, @dossier.user.email, 'contact@tps.apientreprise.fr'].include?(commentaire.email)
|
||||||
|
(invité)
|
||||||
|
%br
|
||||||
|
= I18n.l(commentaire.created_at.localtime, format: 'le %d/%m/%Y à %H:%M')
|
||||||
|
%td
|
||||||
|
%p= sanitize(commentaire.body)
|
||||||
|
- if file = commentaire.piece_justificative
|
||||||
|
%br
|
||||||
|
= file.original_filename
|
||||||
|
|
||||||
|
%script{ type: "text/javascript" }
|
||||||
|
window.print();
|
|
@ -15,6 +15,7 @@
|
||||||
%i.bubble
|
%i.bubble
|
||||||
%i.attachment
|
%i.attachment
|
||||||
%i.lock
|
%i.lock
|
||||||
|
%i.printer
|
||||||
|
|
||||||
%h1 Formulaires
|
%h1 Formulaires
|
||||||
|
|
||||||
|
|
|
@ -8,4 +8,4 @@ Rails.application.config.assets.version = '1.0'
|
||||||
|
|
||||||
# Precompile additional assets.
|
# Precompile additional assets.
|
||||||
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
|
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
|
||||||
Rails.application.config.assets.precompile += %w(print.css new_design/new_application.css new_design/application.js)
|
Rails.application.config.assets.precompile += %w(print.css new_design/new_application.css new_design/print.css new_design/application.js)
|
||||||
|
|
|
@ -258,6 +258,7 @@ Rails.application.routes.draw do
|
||||||
get 'position'
|
get 'position'
|
||||||
end
|
end
|
||||||
post 'avis' => 'dossiers#create_avis'
|
post 'avis' => 'dossiers#create_avis'
|
||||||
|
get 'print' => 'dossiers#print'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue