Merge pull request #7747 from betagouv/feat/7718

ETQ Usager, je souhaite voir le footer au design DSFR
This commit is contained in:
mfo 2022-09-19 13:56:57 +02:00 committed by GitHub
commit dd85b5c35c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 144 additions and 120 deletions

View file

@ -1,4 +1,6 @@
// Push the timestamps column to the right of the row // Push the timestamps column to the right of the row
@import "colors";
.admin-procedures-list-timestamps { .admin-procedures-list-timestamps {
margin-left: auto; margin-left: auto;
} }
@ -8,4 +10,8 @@
// See https://stackoverflow.com/questions/57516373/image-stretching-in-flexbox-in-safari // See https://stackoverflow.com/questions/57516373/image-stretching-in-flexbox-in-safari
.admin-procedures-list-row.infos { .admin-procedures-list-row.infos {
align-items: flex-start; align-items: flex-start;
a {
color: $blue-france-500;
}
} }

View file

@ -11,6 +11,10 @@
margin-bottom: 2 * $default-spacer; margin-bottom: 2 * $default-spacer;
} }
.optional-on-small-screens {
color: #FFFFFF;
}
@media (max-width: 450px) { @media (max-width: 450px) {
.optional-on-small-screens { .optional-on-small-screens {
display: none; display: none;

View file

@ -45,15 +45,15 @@ strong {
font-weight: bold; font-weight: bold;
} }
a {
color: $blue-france-500;
}
a[target="_blank"]::after { a[target="_blank"]::after {
content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAQElEQVR42qXKwQkAIAxDUUdxtO6/RBQkQZvSi8I/pL4BoGw/XPkh4XigPmsUgh0626AjRsgxHTkUThsG2T/sIlzdTsp52kSS1wAAAABJRU5ErkJggg==); content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAQElEQVR42qXKwQkAIAxDUUdxtO6/RBQkQZvSi8I/pL4BoGw/XPkh4XigPmsUgh0626AjRsgxHTkUThsG2T/sIlzdTsp52kSS1wAAAABJRU5ErkJggg==);
margin: 0 3px 0 5px; margin: 0 3px 0 5px;
} }
a {
color: $blue-france-500;
}
em { em {
font-style: italic; font-style: italic;
} }

View file

@ -1,6 +1,6 @@
@import "colors"; @import "colors";
// override default text underline of dsfr // override default text underline of dsfr
body [href] { body [href]:not([class^="fr-"]):not(.fr-footer__bottom-copy *) {
background-image: none; background-image: none;
} }
@ -11,6 +11,9 @@ select {
background: $white; background: $white;
} }
#footer a {
color: #333333;
}
// with Marianne font, weight of font is less bolder, so bold it up // with Marianne font, weight of font is less bolder, so bold it up
.button.primary { .button.primary {
font-weight: bold; font-weight: bold;

View file

@ -3,13 +3,6 @@
@import "mixins"; @import "mixins";
@import "placeholders"; @import "placeholders";
footer {
background-color: $light-grey;
border-top: 1px solid $border-grey;
bottom: 0;
width: 100%;
}
.landing-footer { .landing-footer {
@include vertical-padding(72px); @include vertical-padding(72px);
} }

View file

@ -16,3 +16,4 @@
@import '@gouvfr/dsfr/dist/component/search/search.css'; @import '@gouvfr/dsfr/dist/component/search/search.css';
@import '@gouvfr/dsfr/dist/component/translate/translate.css'; @import '@gouvfr/dsfr/dist/component/translate/translate.css';
@import '@gouvfr/dsfr/dist/component/header/header.css'; @import '@gouvfr/dsfr/dist/component/header/header.css';
@import '@gouvfr/dsfr/dist/component/footer/footer.css';

View file

@ -1,19 +1,7 @@
%ul.fr-footer__bottom-list
%nav{ 'aria-label': t('links.footer.nav_aria', application_name: APPLICATION_NAME) } %li.fr-footer__bottom-item
%ul.footer-row.footer-bottom-line.footer-site-links = link_to t("links.footer.accessibilite.label"), t("links.footer.accessibilite.url"), title: t("links.footer.accessibilite.title"), class: "fr-footer__bottom-link", rel: "noopener noreferrer"
%li.footer-link-accessibilite> %li.fr-footer__bottom-item
= link_to t("links.footer.accessibilite.label"), t("links.footer.accessibilite.url"), title: t("links.footer.accessibilite.title"), class: "footer-link", target: "_blank", rel: "noopener noreferrer" = link_to t("links.footer.mentions_legales.label"), t("links.footer.mentions_legales.url"), title: t("links.footer.mentions_legales.title"), class: "fr-footer__bottom-link", rel: "noopener noreferrer"
%li.footer-link-cgu> %li.fr-footer__bottom-item
= link_to t("links.footer.cgu.label"), t("links.footer.cgu.url"), title: t("links.footer.cgu.title"), class: "footer-link", target: "_blank", rel: "noopener noreferrer" = link_to t("links.footer.cookies.title"), suivi_path, title: t("links.footer.aide.title"), class: "fr-footer__bottom-link"
%li.footer-link-mentions-legales>
= link_to t("links.footer.mentions_legales.label"), t("links.footer.mentions_legales.url"), title: t("links.footer.mentions_legales.title"), class: "footer-link", target: "_blank", rel: "noopener noreferrer"
%li.footer-link-doc>
= link_to t("links.footer.doc.label"), t("links.footer.doc.url"), title: t("links.footer.doc.title"), class: "footer-link", target: "_blank", rel: "noopener noreferrer"
%li.footer-link-code>
= link_to t("links.footer.code.label"), t("links.footer.code.url"), title: t("links.footer.code.title"), class: "footer-link", target: "_blank", rel: "noopener noreferrer"
%li.footer-link-contact>
= contact_link t("links.footer.contact_technique.label"), dossier_id: dossier&.id, title: t("links.footer.contact_technique.title"), class: "footer-link"
%li.footer-link-aide>
= link_to t("links.footer.aide.label"), t("links.footer.aide.url"), title: t("links.footer.aide.title"), class: "footer-link", target: "_blank", rel: "noopener noreferrer"
%li.footer-link-solidarite-numerique>
= link_to t("links.footer.solidarite_numerique.label"), t("links.footer.solidarite_numerique.url"), title: t("links.footer.solidarite_numerique.title"), class: "footer-link", target: "_blank", rel: "noopener noreferrer"

View file

@ -1,63 +1,88 @@
%footer.procedure-footer %footer.fr-footer#footer{ role: "contentinfo" }
.container - service = procedure.service
- service = procedure.service .fr-footer__top
- if service.present? .fr-container
%nav{ 'aria-label': t('users.procedure_footer.aria_label', procedure_name: dossier.present? ? dossier.procedure.libelle : 'la procédure en ligne') } .fr-grid-row.fr-grid-row--start.fr-grid-row--gutters
.footer-row.footer-columns .fr-col-12.fr-col-sm-4.fr-col-md-4
.footer-column %h3.fr-footer__top-cat= I18n.t('users.procedure_footer.contact.header')
%p.footer-header= I18n.t('users.procedure_footer.managed_by.header') %ul.fr-footer__top-list
%ul - if dossier.present? && dossier.messagerie_available?
%li %li
= service.nom = link_to I18n.t('users.procedure_footer.contact.in_app_mail.link'), messagerie_dossier_path(dossier), class: 'fr-footer__top-link'
%br - elsif service.present?
= service.organisme
%br
= string_to_html(service.adresse, wrapper_tag = 'span')
.footer-column
%p.footer-header= I18n.t('users.procedure_footer.contact.header')
%ul
%li %li
- if dossier.present? && dossier.messagerie_available? = link_to I18n.t('users.procedure_footer.contact.email.link', service_email: service.email), "mailto:#{service.email}", class: 'fr-footer__top-link'
= I18n.t('users.procedure_footer.contact.in_app_mail.prefix') %li
= link_to I18n.t('users.procedure_footer.contact.in_app_mail.link'), messagerie_dossier_path(dossier) - horaires = "#{I18n.t('users.procedure_footer.contact.schedule.prefix')}#{formatted_horaires(service.horaires)}"
- else = link_to service.telephone_url, class: 'fr-footer__top-link' do
= I18n.t('users.procedure_footer.contact.email.prefix') = I18n.t('users.procedure_footer.contact.phone.link', service_telephone: service.telephone)
= link_to service.email, "mailto:#{service.email}" %br
= horaires
%li
= link_to I18n.t('users.procedure_footer.contact.stats.link'), statistiques_path(procedure.path), class: 'fr-footer__top-link', rel: 'noopener'
- if service.telephone.present?
- politiques = politiques_conservation_de_donnees(procedure)
- if politiques.present?
.fr-col-12.fr-col-sm-4.fr-col-md-4
%h3.fr-footer__top-cat= I18n.t('users.procedure_footer.legals.header')
%ul.fr-footer__top-list
- politiques.each do |politique|
%li %li
= I18n.t('users.procedure_footer.contact.phone.prefix') = link_to t("users.procedure_footer.legals.data_retention_url"), class: "fr-footer__top-link" do
= link_to service.telephone, service.telephone_url = politique
- if procedure.deliberation.attached?
%li %li
- horaires = "#{I18n.t('users.procedure_footer.contact.schedule.prefix')}#{formatted_horaires(service.horaires)}" = link_to url_for(procedure.deliberation), rel: 'noopener', class: 'fr-footer__top-link' do
= simple_format(horaires, {}, wrapper_tag: 'span') = I18n.t("users.procedure_footer.legals.terms")
- else
%li %li
= I18n.t('users.procedure_footer.contact.stats.prefix') = link_to I18n.t("users.procedure_footer.legals.terms"), procedure.cadre_juridique, rel: 'noopener', class: 'fr-footer__top-link'
= link_to I18n.t('users.procedure_footer.contact.stats.cta'), statistiques_path(procedure.path)
- if procedure.lien_dpo.present?
%li
= link_to url_or_email_to_lien_dpo(procedure), rel: 'noopener', class: 'fr-footer__top-link' do
= I18n.t("users.procedure_footer.legals.dpo")
- politiques = politiques_conservation_de_donnees(procedure) .fr-col-12.fr-col-sm-4.fr-col-md-4
- if politiques.present? %h3.fr-footer__top-cat= I18n.t('users.procedure_footer.dematerialisation.header')
.footer-column %ul.fr-footer__top-list
%p.footer-header= I18n.t('users.procedure_footer.legals.header') %li
%ul = link_to t('users.procedure_footer.dematerialisation.title_1'), commencer_dossier_vide_path(path: procedure.path), rel: 'noopener', class: 'fr-footer__top-link'
- politiques.each do |politique| %li
%li= politique = link_to t('users.procedure_footer.dematerialisation.title_2'),t('users.procedure_footer.dematerialisation.link'), rel: 'noopener', class: 'fr-footer__top-link'
- if procedure.deliberation.attached?
%li
= link_to url_for(procedure.deliberation), target: '_blank', rel: 'noopener' do
= I18n.t("users.procedure_footer.legals.terms")
- else
%li
= link_to I18n.t("users.procedure_footer.legals.terms"), procedure.cadre_juridique, target: '_blank', rel: 'noopener'
- if procedure.lien_dpo.present? .fr-container
%li .fr-footer__body
= link_to url_or_email_to_lien_dpo(procedure), target: '_blank', rel: 'noopener' do .fr-footer__brand.fr-enlarge-link
= I18n.t("users.procedure_footer.legals.dpo") = link_to t("links.provider.url"), title: t("links.provider.title"), 'aria-label': t("links.provider.name") do
%p.fr-logo
premier
%br
ministre
= render partial: 'users/general_footer_row', locals: { dossier: dossier } - if service.present?
.fr-footer__content
%p.fr-footer__content-desc
= I18n.t('users.procedure_footer.managed_by.header')
= "#{service.nom},"
= "#{service.organisme},"
= string_to_html(service.adresse, wrapper_tag = 'span')
%ul.fr-footer__content-list
%li.fr-footer__content-item
= link_to t('users.procedure_footer.official_links.legifrance.title'), t('users.procedure_footer.official_links.legifrance.url'), class: 'fr-footer__content-link', target: '_blank'
%li.fr-footer__content-item
= link_to t('users.procedure_footer.official_links.gouvernement.title'), t('users.procedure_footer.official_links.gouvernement.url'), class: 'fr-footer__content-link', target: '_blank'
%li.fr-footer__content-item
= link_to t('users.procedure_footer.official_links.service_public.title'), t('users.procedure_footer.official_links.service_public.url'), class: 'fr-footer__content-link', target: '_blank'
%li.fr-footer__content-item
= link_to t('users.procedure_footer.official_links.data_gouv.title'), t('users.procedure_footer.official_links.data_gouv.url'), class: 'fr-footer__content-link', target: '_blank'
.fr-footer__bottom
= render partial: 'users/general_footer_row', locals: { dossier: dossier }
.fr-footer__bottom-copy
%p
Sauf mention contraire, tous les contenus de ce site sont sous
%a{ href: "https://github.com/etalab/licence-ouverte/blob/master/LO.md", target:"_blank" } licence etalab-2.0
%br

View file

@ -2,7 +2,7 @@
.container .container
= image_tag('user/envoi-dossier.svg', alt: '', class: 'mt-8') = image_tag('user/envoi-dossier.svg', alt: '', class: 'mt-8')
%h1.mt-4.mb-3.mx-0= t('views.users.dossiers.merci.thanks') %h1.mt-4.mb-3.mx-0= t('views.users.dossiers.merci.thanks')
%p.send.m-2.text-lg %h2.send.m-2.text-lg
= t('views.users.dossiers.merci.dossier_send_l1') = t('views.users.dossiers.merci.dossier_send_l1')
%strong= procedure.libelle %strong= procedure.libelle
= t('views.users.dossiers.merci.dossier_send_l2') = t('views.users.dossiers.merci.dossier_send_l2')

View file

@ -4,7 +4,7 @@
- if !dossier_submission_is_closed?(@dossier) - if !dossier_submission_is_closed?(@dossier)
= form_for @dossier.individual, url: update_identite_dossier_path(@dossier), html: { class: "form" } do |f| = form_for @dossier.individual, url: update_identite_dossier_path(@dossier), html: { class: "form" } do |f|
%h1= t('views.users.dossiers.identite.identity_data') %h2.huge-title= t('views.users.dossiers.identite.identity_data')
%p.mb-1= t('views.users.dossiers.identite.complete_data') %p.mb-1= t('views.users.dossiers.identite.complete_data')

View file

@ -2,7 +2,7 @@
- if !dossier_submission_is_closed?(@dossier) - if !dossier_submission_is_closed?(@dossier)
= form_for current_user, url: siret_dossier_path(@dossier), html: { class: 'form', method: 'post' } do |f| = form_for current_user, url: siret_dossier_path(@dossier), html: { class: 'form', method: 'post' } do |f|
%h1 Identifier votre établissement %h2.huge-title Identifier votre établissement
%p.mb-1 Merci de remplir le numéro de SIRET de votre entreprise, administration ou association pour commencer la démarche. %p.mb-1 Merci de remplir le numéro de SIRET de votre entreprise, administration ou association pour commencer la démarche.

View file

@ -17,9 +17,7 @@ en:
title: "Accessibility declaration" title: "Accessibility declaration"
url: "https://doc.demarches-simplifiees.fr/declaration-daccessibilite" url: "https://doc.demarches-simplifiees.fr/declaration-daccessibilite"
aide: aide:
label: "Help"
title: "Frequently Asked Questions" title: "Frequently Asked Questions"
url: "https://faq.demarches-simplifiees.fr"
api_doc: api_doc:
label: "API Documentation" label: "API Documentation"
title: "API Documentation" title: "API Documentation"
@ -39,9 +37,6 @@ en:
contact: contact:
label: "Contact" label: "Contact"
title: "Contact us" title: "Contact us"
contact_technique:
label: "Technical contact"
title: "Technical contact for bug report or security feedback"
doc: doc:
label: "Documentation" label: "Documentation"
title: "Our Documentation" title: "Our Documentation"
@ -74,9 +69,6 @@ en:
label: "Security" label: "Security"
title: "Security policy" title: "Security policy"
url: "https://github.com/betagouv/demarches-simplifiees.fr/blob/main/SECURITY.md" url: "https://github.com/betagouv/demarches-simplifiees.fr/blob/main/SECURITY.md"
stats:
label: "Statistics"
title: "Statistics about demarches-simplifiees"
status_page: status_page:
label: "Disponibility" label: "Disponibility"
title: "Disponibility and availability" title: "Disponibility and availability"
@ -88,7 +80,3 @@ en:
label: "Online workshop registration" label: "Online workshop registration"
title: "Registration for our online workshop" title: "Registration for our online workshop"
url: "https://app.livestorm.co/demarches-simplifiees" url: "https://app.livestorm.co/demarches-simplifiees"
solidarite_numerique:
label: "Do you need assistance with your digital file?"
title: "Do you need assistance with your online process ?"
url: "https://www.solidarite-numerique.fr/cartographie/"

View file

@ -92,3 +92,7 @@ fr:
label: "Besoin d'aide avec vos démarches en ligne ?" label: "Besoin d'aide avec vos démarches en ligne ?"
title: "Avez-vous besoin d'aide concernant vos démarchez informatisées, essayez solidarite-numerique.fr" title: "Avez-vous besoin d'aide concernant vos démarchez informatisées, essayez solidarite-numerique.fr"
url: "https://www.solidarite-numerique.fr/cartographie/" url: "https://www.solidarite-numerique.fr/cartographie/"
cookies:
label: Gestion des cookies
title: Gestion des cookies

View file

@ -1,25 +1,22 @@
en: en:
users: users:
procedure_footer: procedure_footer:
aria_label: "Know more about %{procedure_name}"
managed_by: managed_by:
header: 'This procedure is managed by :' header: 'This procedure is managed by :'
contact: contact:
header: 'Ask a question about your file :' header: 'Ask a question about your file :'
in_app_mail: in_app_mail:
prefix: 'Directly :' link: "Direclty via the chat"
link: "via the chat"
email: email:
prefix: 'By mail :' link: "Direcly by email %{service_email}"
phone: phone:
prefix: 'By phone :' link: 'By phone %{service_telephone}'
schedule: schedule:
prefix: 'Hours : ' prefix: 'Hours : '
stats: stats:
prefix: 'Stats :' link: "See the procedure's stats"
cta: "see the procedure's stats"
legals: legals:
header: "Legals :" header: "Legals :"
data_retention: "Within %{application_name} : %{duree_conservation_dossiers_dans_ds} months" data_retention: "%{application_name} : %{duree_conservation_dossiers_dans_ds} months"
terms: "Laws regarding this data collection" terms: "Laws regarding this data collection"
dpo: "Contact the Data Protection Officer" dpo: "Contact the Data Protection Officer"

View file

@ -1,25 +1,41 @@
fr: fr:
users: users:
procedure_footer: procedure_footer:
aria_label: "En savoir plus sur %{procedure_name}"
managed_by: managed_by:
header: 'Cette démarche est gérée par :' header: 'Cette démarche est gérée par'
contact: contact:
header: 'Poser une question sur votre dossier :' header: 'Poser une question sur votre dossier'
in_app_mail: in_app_mail:
prefix: 'Directement :' link: "Directement par la messagerie"
link: "par la messagerie"
email: email:
prefix: 'Par email :' link: "Directement par courriel : %{service_email}"
phone: phone:
prefix: 'Par téléphone :' link: 'Par téléphone au %{service_telephone}'
schedule: schedule:
prefix: 'Horaires : ' prefix: "Horaires d'ouverture : "
stats: stats:
prefix: 'Statistiques :' link: "Voir les statistiques de la démarche"
cta: "voir les statistiques de la démarche"
legals: legals:
header: "Cadre juridique :" header: "Cadre juridique"
data_retention: "Dans %{application_name} : %{duree_conservation_dossiers_dans_ds} mois" data_retention: "%{application_name} : %{duree_conservation_dossiers_dans_ds} mois"
data_retention_url: "https://doc.demarches-simplifiees.fr/pour-aller-plus-loin/archivage-longue-duree-des-demarches"
terms: "Texte cadrant la demande d'information" terms: "Texte cadrant la demande d'information"
dpo: "Contacter le Délégué à la Protection des Données" dpo: "Contacter le Délégué à la Protection des Données"
official_links:
legifrance:
title: legifrance.gouv.fr
url: "https://legifrance.gouv.fr"
gouvernement:
title: gouvernement.fr
url: "https://gouvernement.fr"
service_public:
title: service-public.fr
url: "https://service-public.fr"
data_gouv:
title: data.gouv.fr
url: "https://data.gouv.fr"
dematerialisation:
header: Dematérialisation
title_1: Accès au formulaire PDF à imprimer
title_2: Les démarches administratives en ligne
link: "https://www.solidarite-numerique.fr/cartographie/"

View file

@ -8,7 +8,7 @@ RSpec.describe ConservationDeDonneesHelper, type: :helper do
let(:dans_ds) { 3 } let(:dans_ds) { 3 }
let(:hors_ds) { 6 } let(:hors_ds) { 6 }
it { is_expected.to eq(["Dans #{APPLICATION_NAME} : 3 mois"]) } it { is_expected.to eq(["#{APPLICATION_NAME} : 3 mois"]) }
end end
context "when the retention time is not set" do context "when the retention time is not set" do

View file

@ -16,7 +16,6 @@ describe 'users/procedure_footer.html.haml', type: :view do
it "affiche les liens usuels requis" do it "affiche les liens usuels requis" do
expect(subject).to have_link("Accessibilité") expect(subject).to have_link("Accessibilité")
expect(subject).to have_link("CGU")
expect(subject).to have_link("Mentions légales") expect(subject).to have_link("Mentions légales")
end end