From 4aaba21791d75b668e176c3bc999a3437a9aeb00 Mon Sep 17 00:00:00 2001 From: Arnaud Levy <contact@arnaudlevy.com> Date: Wed, 28 Jun 2023 08:33:49 +0200 Subject: [PATCH] Fix #1061 --- .../websites/pages_controller.rb | 5 ++ .../website/page/accessibility.rb | 52 ++++++++++++++++++- .../blocks/templates/files/_snippet.html.erb | 1 - .../special_pages/_accessibility.html.erb | 6 +++ config/routes/admin/communication.rb | 1 + 5 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 app/views/admin/communication/websites/pages/show/special_pages/_accessibility.html.erb diff --git a/app/controllers/admin/communication/websites/pages_controller.rb b/app/controllers/admin/communication/websites/pages_controller.rb index 3015ca457..884bfd595 100644 --- a/app/controllers/admin/communication/websites/pages_controller.rb +++ b/app/controllers/admin/communication/websites/pages_controller.rb @@ -58,6 +58,11 @@ class Admin::Communication::Websites::PagesController < Admin::Communication::We redirect_back(fallback_location: [:admin, @object]) end + def generate + @page.generate + redirect_back(fallback_location: [:admin, @page]) + end + def new @page.website = @website breadcrumb diff --git a/app/models/communication/website/page/accessibility.rb b/app/models/communication/website/page/accessibility.rb index b2a97fa5d..edc79a634 100644 --- a/app/models/communication/website/page/accessibility.rb +++ b/app/models/communication/website/page/accessibility.rb @@ -51,5 +51,55 @@ class Communication::Website::Page::Accessibility < Communication::Website::Page def is_listed_among_children? false end - + + def generate + headings.destroy_all + blocks.destroy_all + heading = generate_heading 'Déclaration d\'accessibilité' + generate_block(heading, :files, { + description: "<p>#{website} s'engage à rendre son site internet accessible conformément à l'article 47 de la loi n° 2005-102 du 11 février 2005.</p><p>Cette déclaration d'accessibilité s'applique au site #{website.url}.</p>", + elements: [ + { title: "Schéma pluriannuel d’accessibilité", file: {} }, + { title: "Plan annuel d’accessibilité", file: {} }, + ] + }) + heading = generate_heading 'Résultats des tests' + generate_block(heading, :key_figures, { + description: "<p>Le contre-audit de conformité, finalisé le 00/00/0000 par la société [nom de la société], révèle que :</p>", + elements:[ + { number: nil, unit: "%", description: "de conformité au RGAA" }, + { number: nil, unit: "", description: "critères applicables sur un total de 106" } + ] + }) + heading = generate_heading 'État de conformité' + generate_block(heading, :chapter, { + text: "<p>Le site #{website} (#{website.url}) est <b>[non conforme, partiellement conforme, totalement conforme]</b> avec le référentiel général d’amélioration de l’accessibilité (RGAA), version 4 en raison des non-conformités et des dérogations énumérées ci-dessous.</p>" + }) + heading = generate_heading 'Contenus non accessibles' + generate_block(heading, :chapter, { + text: "<p>Les contenus listés ci-dessous ne sont pas accessibles pour les raisons suivantes.<br></p><p><b>Dérogations pour charge disproportionnée</b></p><ul><li></li></ul><p><b>Contenus non soumis à l'obligation d'accessibilité</b></p><ul><li></li></ul>" + }) + heading = generate_heading 'Établissement de cette déclaration d\'accessibilité' + generate_block(heading, :chapter, { + text: "<p>Cette déclaration a été établie le <b>00/00/0000</b>.<br></p><p>Technologies utilisées pour la réalisation du site :</p><ul>\n<li>HTML5</li>\n<li>CSS</li>\n<li>Javascript</li>\n<li>Hugo</li>\n</ul><p>Agents utilisateurs et technologies d'assistance utilisés pour vérifier l'accessibilité :</p><ul>\n<li>NVDA</li>\n<li>VoiceOver</li>\n</ul><p>La vérification de l'accessibilité a été effectuée au travers de tests manuels, assistés par les outils suivants :</p><ul>\n<li>Accessibility Insights for Web</li>\n<li>ArcToolkit</li>\n<li>Assistant RGAA</li>\n<li>Axe DevTool</li>\n<li>Color Contrast Analyser</li>\n<li>eAccessibility (PDF accessibility checker)</li>\n<li>Inspecteur de composants</li>\n<li>Web Developer Toolbar</li>\n<li>WCAG Contrast checker</li>\n<li>Validateur HTML du W3C</li>\n</ul><ul>\n</ul><p>Pages du site ayant fait l'objet de la vérification de conformité</p><ul>\n<li></li>\n</ul>" + }) + heading = generate_heading 'Environnement de test' + generate_block(heading, :chapter, { + text: "<p>Les vérifications de restitution de contenus ont été réalisées sur la base de la combinaison fournie par la base de référence du RGAA, avec les versions suivantes :</p><ul>\n<li>Sur ordinateur MacOS avec Google Chrome et VoiceOver</li>\n<li>Sur ordinateur MacOS avec Safari et VoiceOver</li>\n<li>Sur ordinateur Windows avec Firefox et NVDA</li>\n<li>Sur mobile Android avec Google Chrome et Talkback</li>\n</ul>" + }) + heading = generate_heading 'Voies de recours' + generate_block(heading, :chapter, { + text: "<p>Si vous avez signalé au responsable du site internet un défaut d'accessibilité qui vous empêche d'accéder à un contenu ou à un des services du portail et n'avez pas obtenu de réponse satisfaisante, vous êtes en droit de :</p><p><b></b></p><ul>\n<li><p><a href=\"https://formulaire.defenseurdesdroits.fr/\" target=\"_blank\">Écrire un message au Défenseur des droits</a> (formulaire en ligne) ;</p></li>\n<li><p>Contacter le <a href=\"https://www.defenseurdesdroits.fr/saisir/delegues\" target=\"_blank\">délégué du Défenseur des droits dans votre région</a> ;</p></li>\n<li><p>Envoyer un courrier postal (gratuit, ne pas mettre de timbre) à cette adresse : Défenseur des droits - Libre réponse 71120 - 75342 Paris CEDEX 07.</p></li>\n</ul><ul>\n</ul>" + }) + end + + protected + + def generate_heading(title) + headings.create(university: university, title: title) + end + + def generate_block(heading, kind, data) + blocks.create(university: university, heading: heading, template_kind: kind, data: data.to_json) + end end diff --git a/app/views/admin/communication/blocks/templates/files/_snippet.html.erb b/app/views/admin/communication/blocks/templates/files/_snippet.html.erb index a1bbb1484..963bf1f2e 100644 --- a/app/views/admin/communication/blocks/templates/files/_snippet.html.erb +++ b/app/views/admin/communication/blocks/templates/files/_snippet.html.erb @@ -1,6 +1,5 @@ <ul class="list-unstyled"> <% block.template.elements.first(2).each do |element| %> - <% next unless element.blob %> <li><%= element.title %></li> <% end %> </ul> \ No newline at end of file diff --git a/app/views/admin/communication/websites/pages/show/special_pages/_accessibility.html.erb b/app/views/admin/communication/websites/pages/show/special_pages/_accessibility.html.erb new file mode 100644 index 000000000..ec3ff2841 --- /dev/null +++ b/app/views/admin/communication/websites/pages/show/special_pages/_accessibility.html.erb @@ -0,0 +1,6 @@ +<% #if about.blocks.none? && about.headings.none? %> + <%= link_to 'Générer le modèle de déclaration', + generate_admin_communication_website_page_path(about), + method: :post, + class: button_classes %> +<% #end %> \ No newline at end of file diff --git a/config/routes/admin/communication.rb b/config/routes/admin/communication.rb index babb107ff..2bf8317ec 100644 --- a/config/routes/admin/communication.rb +++ b/config/routes/admin/communication.rb @@ -25,6 +25,7 @@ namespace :communication do post :duplicate post :connect post :disconnect + post :generate end end resources :categories, controller: 'websites/categories', path: '/:lang/categories' do -- GitLab