Merge pull request #10433 from colinux/faqs-wording
FAQ: précise périmètre d'application de DS
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 9 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 17 KiB |
|
@ -21,7 +21,7 @@ class FAQController < ApplicationController
|
|||
application_base_url: Current.application_base_url,
|
||||
application_name: Current.application_name,
|
||||
contact_email: Current.contact_email
|
||||
}
|
||||
}.merge(dynamic_substitutions)
|
||||
|
||||
FAQsLoaderService.new(substitutions)
|
||||
end
|
||||
|
@ -36,4 +36,13 @@ class FAQController < ApplicationController
|
|||
rescue KeyError
|
||||
raise ActionController::RoutingError.new("FAQ not found: #{path}")
|
||||
end
|
||||
|
||||
# Hash of dynamic values used for substitutions.
|
||||
# The values are fetched from or calculated into the Rails cache.
|
||||
def dynamic_substitutions
|
||||
{
|
||||
# Example:
|
||||
# procedures_count: Rails.cache.fetch("faq/procedures_count", expires_in: 1.day) { helpers.number_with_delimiter(Procedure.publiee.count, delimiter: ' ') },
|
||||
}
|
||||
end
|
||||
end
|
||||
|
|
|
@ -37,5 +37,20 @@ module Redcarpet
|
|||
def image(link, title, alt)
|
||||
view_context.image_tag(link, title:, alt:, loading: :lazy)
|
||||
end
|
||||
|
||||
# rubocop:disable Rails/OutputSafety
|
||||
def block_quote(raw_html)
|
||||
if raw_html =~ /^<p>\[!(INFO|WARNING)\]\n/
|
||||
state = Regexp.last_match(1).downcase.to_sym
|
||||
content = raw_html.sub(/^<p>\[!(?:INFO|WARNING)\]\n/, '<p>')
|
||||
component = Dsfr::AlertComponent.new(state:, heading_level: "h2", extra_class_names: "fr-my-3w")
|
||||
component.render_in(view_context) do |c|
|
||||
c.with_body { content.html_safe }
|
||||
end
|
||||
else
|
||||
view_context.content_tag(:blockquote, raw_html.html_safe)
|
||||
end
|
||||
end
|
||||
# rubocop:enable Rails/OutputSafety
|
||||
end
|
||||
end
|
||||
|
|
|
@ -9,13 +9,13 @@ class FAQsLoaderService
|
|||
def initialize(substitutions)
|
||||
@substitutions = substitutions
|
||||
|
||||
@faqs_by_path ||= Rails.cache.fetch(["faqs_data", ApplicationVersion.current, substitutions], expires_in: 1.week) do
|
||||
@faqs_by_path ||= Rails.cache.fetch(["faqs_data", ApplicationVersion.current, substitutions], expires_in: 1.day) do
|
||||
load_faqs
|
||||
end
|
||||
end
|
||||
|
||||
def find(path)
|
||||
Rails.cache.fetch(["faq", path, ApplicationVersion.current, substitutions], expires_in: 1.week) do
|
||||
Rails.cache.fetch(["faq", path, ApplicationVersion.current, substitutions], expires_in: 1.day) do
|
||||
file_path = @faqs_by_path.fetch(path).fetch(:file_path)
|
||||
|
||||
parse_with_substitutions(file_path)
|
||||
|
|
|
@ -9,6 +9,16 @@ title: "Comment trouver ma démarche ?"
|
|||
|
||||
# Comment trouver ma démarche ?
|
||||
|
||||
> [!INFO]
|
||||
> *%{application_name}* est un service de la direction interministérielle du numérique, service du Premier ministre.
|
||||
|
||||
> Ce site ne dispose pas d’un annuaire comprenant l’ensemble des démarches administratives en ligne. Vous pouvez retrouver des informations soit :
|
||||
|
||||
> - sur le site [service-public.fr](https://www.service-public.fr) : site officiel d'information sur les démarches administratives
|
||||
> - sur le site internet de l’administration concernée (ministère, organisme, préfecture, mairie…)
|
||||
|
||||
> Pour effectuer un dépôt sur %{application_name} vous devez notamment disposer d’un lien qui vous a été communiqué par l’administration.
|
||||
|
||||
## 1. Trouver le lien de votre démarche
|
||||
|
||||
Pour déposer un dossier sur %{application_name}, il est nécessaire de disposer du lien de la démarche qui vous intéresse. Il ressemble à un lien de cette forme :
|
||||
|
@ -55,5 +65,3 @@ Pour commencer un nouveau dossier sur une démarche déjà réalisée, [connecte
|
|||
Pour connaitre le nouveau lien vers la démarche en ligne, nous vous invitons à contacter le service en charge de la démarche. Vous trouverez les informations de contact en bas du formulaire dans la partie **« Poser une questions sur la démarche »** (en cliquant sur le numéro de dossier).
|
||||
|
||||
![Image montrant comment trouver les informations de contact d’une démarche](faq/usager-procedure-close-focus-contact.png)
|
||||
|
||||
|
|
@ -27,8 +27,7 @@ Pour changer l’adresse email associée à votre compte, suivez les étapes sui
|
|||
3. Dans l’encadré _« Coordonnées »_, renseignez la nouvelle adresse email que vous souhaitez utiliser. Puis cliquez sur _« Changer mon adresse »_. **Attention** : Cette adresse ne doit pas être déjà utilisée par un autre compte sur %{application_name}.
|
||||
![Section Coordonées avec formulaire de modification d’email](faq/usager-edit-email.png)
|
||||
|
||||
4. Ouvrez la boîte email de votre nouvelle adresse, et cliquez sur le lien de confirmation que nous vous avons envoyé.<br>
|
||||
![Capture d’écran de l’email de confirmation de changement d’adresse email](faq/usager-confirm-update-email.png)
|
||||
4. Ouvrez la boîte email de votre nouvelle adresse, et cliquez sur le lien de confirmation que nous vous avons envoyé.
|
||||
|
||||
## Si l’adresse est déjà utilisée par un autre compte
|
||||
|
||||
|
|
|
@ -32,4 +32,28 @@ RSpec.describe Redcarpet::TrustedRenderer do
|
|||
expect(renderer.render(markdown)).to include('<a href="mailto:user@example.com">user@example.com</a>')
|
||||
end
|
||||
end
|
||||
|
||||
context 'with block_quote DSFR alert' do
|
||||
it 'renders [!INFO] blocks as DSFR info alerts' do
|
||||
markdown = "> [!INFO]\n> This is an information alert with *emphasis*."
|
||||
expected_html = <<~HTML
|
||||
<div class='fr-alert fr-alert--info fr-my-3w'>
|
||||
<h2 class="fr-alert__title">Information : </h2>
|
||||
<p>This is an information alert with <em>emphasis</em>.</p>
|
||||
</div>
|
||||
HTML
|
||||
expect(renderer.render(markdown).delete("\n")).to include(expected_html.delete("\n"))
|
||||
end
|
||||
|
||||
it 'renders [!WARNING] blocks as DSFR warning alerts' do
|
||||
markdown = "> [!WARNING]\n> This is a warning alert."
|
||||
expected_html = <<~HTML
|
||||
<div class='fr-alert fr-alert--warning fr-my-3w'>
|
||||
<h2 class="fr-alert__title">Attention : </h2>
|
||||
<p>This is a warning alert.</p>
|
||||
</div>
|
||||
HTML
|
||||
expect(renderer.render(markdown).delete("\n")).to include(expected_html.delete("\n"))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|