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/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 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/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; + }); + })(); 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 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