From 437f73b4ce622ee95b37b3acc51b475063f00193 Mon Sep 17 00:00:00 2001 From: Pierre de La Morinerie Date: Tue, 22 Jan 2019 17:16:49 +0100 Subject: [PATCH 1/4] search: exclude more special characters --- app/services/dossier_search_service.rb | 2 +- spec/services/dossier_search_service_spec.rb | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/services/dossier_search_service.rb b/app/services/dossier_search_service.rb index bc57cfd64..8bb952085 100644 --- a/app/services/dossier_search_service.rb +++ b/app/services/dossier_search_service.rb @@ -39,7 +39,7 @@ class DossierSearchService def self.to_tsquery(search_terms) search_terms.strip - .gsub(/['?\\:&|!]/, "") # drop disallowed characters + .gsub(/['?\\:&|!<>\(\)]/, "") # drop disallowed characters .split(/\s+/) # split words .map { |x| "#{x}:*" } # enable prefix matching .join(" & ") diff --git a/spec/services/dossier_search_service_spec.rb b/spec/services/dossier_search_service_spec.rb index b0b05798f..d9c70d8d3 100644 --- a/spec/services/dossier_search_service_spec.rb +++ b/spec/services/dossier_search_service_spec.rb @@ -90,5 +90,11 @@ describe DossierSearchService do it { expect(subject.size).to eq(1) } end + + describe 'search with characters disallowed by the tsquery parser' do + let(:terms) { "'?\\:&!(OCTO) " } + + it { expect(subject.size).to eq(1) } + end end end From 23276cb9f95a56785cc33119f64dbd182f4b7389 Mon Sep 17 00:00:00 2001 From: Pierre de La Morinerie Date: Mon, 21 Jan 2019 14:19:17 +0000 Subject: [PATCH 2/4] commencer: add temporal context about the dossier Ref #2225 --- app/views/commencer/show.html.haml | 12 ++++++++++-- spec/views/commencer/show.html.haml_spec.rb | 2 ++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/app/views/commencer/show.html.haml b/app/views/commencer/show.html.haml index 5e71bbd19..df2325d3a 100644 --- a/app/views/commencer/show.html.haml +++ b/app/views/commencer/show.html.haml @@ -15,13 +15,21 @@ = link_to 'Commencer la démarche', url_for_new_dossier(@procedure), class: ['button large expand primary'] - elsif drafts.count == 1 && not_drafts.count == 0 + - dossier = drafts.first %h1 Vous avez déjà commencé à remplir un dossier - = link_to 'Continuer à remplir mon dossier', brouillon_dossier_path(drafts.first), class: ['button large expand primary'] + %p + Il y a #{time_ago_in_words(dossier.created_at)}, + vous avez commencé à remplir un dossier sur la démarche « #{dossier.procedure.libelle} ». + = link_to 'Continuer à remplir mon dossier', brouillon_dossier_path(dossier), class: ['button large expand primary'] = link_to 'Commencer un nouveau dossier', url_for_new_dossier(@procedure), class: ['button large expand'] - elsif not_drafts.count == 1 + - dossier = not_drafts.first %h1 Vous avez déjà déposé un dossier - = link_to 'Voir mon dossier', dossier_path(not_drafts.first), class: ['button large expand primary'] + %p + Il y a #{time_ago_in_words(dossier.en_construction_at)}, + vous avez déposé un dossier sur la démarche « #{dossier.procedure.libelle} ». + = link_to 'Voir mon dossier déposé', dossier_path(dossier), class: ['button large expand primary'] = link_to 'Commencer un nouveau dossier', url_for_new_dossier(@procedure), class: ['button large expand'] - else diff --git a/spec/views/commencer/show.html.haml_spec.rb b/spec/views/commencer/show.html.haml_spec.rb index 274b55f45..b07600502 100644 --- a/spec/views/commencer/show.html.haml_spec.rb +++ b/spec/views/commencer/show.html.haml_spec.rb @@ -45,6 +45,7 @@ RSpec.describe 'commencer/show.html.haml', type: :view do it 'renders a link to resume the pending draft' do subject + expect(rendered).to have_text(time_ago_in_words(brouillon.created_at)) expect(rendered).to have_link('Continuer à remplir mon dossier', href: brouillon_dossier_path(brouillon)) end end @@ -57,6 +58,7 @@ RSpec.describe 'commencer/show.html.haml', type: :view do it 'renders a link to the submitted dossier' do subject + expect(rendered).to have_text(time_ago_in_words(dossier.en_construction_at)) expect(rendered).to have_link('Voir mon dossier', href: dossier_path(dossier)) end end From b177df477ef5637e1def2eb94aecaa4a3d7208b8 Mon Sep 17 00:00:00 2001 From: Pierre de La Morinerie Date: Wed, 23 Jan 2019 15:23:10 +0000 Subject: [PATCH 3/4] analytics: send Matomo event when navigating using Turbolinks --- app/views/layouts/_matomo.html.haml | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/app/views/layouts/_matomo.html.haml b/app/views/layouts/_matomo.html.haml index 686be9450..0d8b58f16 100644 --- a/app/views/layouts/_matomo.html.haml +++ b/app/views/layouts/_matomo.html.haml @@ -1,11 +1,13 @@ :javascript var _paq = _paq || []; - /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ + // Configure Matomo analytics _paq.push(["setCookieDomain", "*.www.demarches-simplifiees.fr"]); _paq.push(["setDomains", ["*.www.demarches-simplifiees.fr"]]); _paq.push(["setDoNotTrack", true]); _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); + + // Load script from Matomo (function() { var u="//stats.data.gouv.fr/"; _paq.push(['setTrackerUrl', u+'piwik.php']); @@ -13,3 +15,20 @@ var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s); })(); + + // Send Matomo a new event when navigating to a new page using Turbolinks + // (see https://developer.matomo.org/guides/spa-tracking) + (function() { + var previousPageUrl = null; + addEventListener('turbolinks:load', function(event) { + if (previousPageUrl) { + var loadTimeMs = event.data.timing.visitEnd - event.data.timing.visitStart; + _paq.push(['setReferrerUrl', previousPageUrl]); + _paq.push(['setCustomUrl', '/' + window.location.href]); + _paq.push(['setDocumentTitle', document.title]); + _paq.push(['setGenerationTimeMs', loadTimeMs]); + _paq.push(['trackPageView']); + } + previousPageUrl = window.location.href; + }); + })(); From 5118f4d5f10e051df66349a1236f4ee14dee6aa0 Mon Sep 17 00:00:00 2001 From: emsnytech Date: Mon, 21 Jan 2019 14:29:31 +0100 Subject: [PATCH 4/4] =?UTF-8?q?Modification=20du=20texte=20d=E2=80=99infor?= =?UTF-8?q?mation=20vers=20les=20pages=20d=E2=80=99information=20sur=20int?= =?UTF-8?q?ernet?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Aujourd’hui, les administrateurs doivent proposer un lien vers un site internet dans la description de leur démarche. Toutefois, l’adresse qui est la plus importante à connaître, est le lien vers la page du site institutionnel sur laquelle les usager vont trouver le lien vers la démarche. Il est proposé de clarifier cette attente par une phrase plus précise. ( cela n'empêche pas de publier avec une adresse générique, car cette information n’est pas obligatoire, et être modifiée après publication). --- app/views/admin/procedures/_informations.html.haml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/admin/procedures/_informations.html.haml b/app/views/admin/procedures/_informations.html.haml index fecb2936c..6cb59133a 100644 --- a/app/views/admin/procedures/_informations.html.haml +++ b/app/views/admin/procedures/_informations.html.haml @@ -20,8 +20,8 @@ = f.number_field :duree_conservation_dossiers_hors_ds, class: 'form-control', placeholder: '6', required: true .form-group - %h4 Lien site internet - = f.text_field :lien_site_web, class: 'form-control', placeholder: 'https://www.exemple.fr/' + %h4 Où les usagers trouveront-ils le lien vers la démarche ? + = f.text_field :lien_site_web, class: 'form-control', placeholder: 'https://exemple.gouv.fr/ma_demarche' - if Flipflop.web_hook? .form-group