From db467c58bec6df5139b3a3a184d4a2d89e2558ee Mon Sep 17 00:00:00 2001 From: Emmanuel Raviart <emmanuel@raviart.com> Date: Mon, 26 Jul 2021 22:30:25 +0200 Subject: [PATCH] Add Matomo configurations. --- example.env | 4 ++++ src/lib/auditors/config.ts | 17 +++++++++++++++++ src/lib/server/config.ts | 4 ++++ src/lib/sessions.ts | 2 ++ src/routes/__layout.svelte | 18 ++++++++++++++++-- 5 files changed, 43 insertions(+), 2 deletions(-) diff --git a/example.env b/example.env index 95ed0770f..6a5c600a4 100644 --- a/example.env +++ b/example.env @@ -37,6 +37,10 @@ JSON_DIR="../openfisca-france-json" # Matomo analytics configuration # MATOMO_SITE_ID=123 # MATOMO_URL="https://MATOMO_SERVER/" +# Prepend the site domain to the page title when tracking (optional, default = false). +# MATOMO_PREPEND_DOMAIN=true +# Track visitors accross a domain (for example, example.com & its subdomains (optional). +# MATOMO_SUBDOMAINS="*.DOMAIN" # OAuth2 configuration # OAUTH2_CLIENT_ID="OAUTH2_CLIENT_ID" diff --git a/src/lib/auditors/config.ts b/src/lib/auditors/config.ts index 990cea6ae..dc0c3d724 100644 --- a/src/lib/auditors/config.ts +++ b/src/lib/auditors/config.ts @@ -132,6 +132,15 @@ function auditMatomo(audit: Audit, dataUnknown: unknown, const errors: { [key: string]: unknown } = {} const remainingKeys = new Set(Object.keys(data)) + audit.attribute( + data, + "prependDomain", + true, + errors, + remainingKeys, + auditSwitch([auditTrimString, auditStringToBoolean], auditBoolean), + auditSetNullish(false), + ) audit.attribute( data, "siteId", @@ -142,6 +151,14 @@ function auditMatomo(audit: Audit, dataUnknown: unknown, auditInteger, auditRequire, ) + audit.attribute( + data, + "subdomains", + true, + errors, + remainingKeys, + auditTrimString, + ) audit.attribute( data, "url", diff --git a/src/lib/server/config.ts b/src/lib/server/config.ts index 31328536f..63cf27513 100644 --- a/src/lib/server/config.ts +++ b/src/lib/server/config.ts @@ -14,7 +14,9 @@ export interface Config { hiddenEntitiesKeyPlural?: string[] jsonDir: string matomo?: { + prependDomain?: boolean siteId: number + subdomains?: string url: string } oauth2?: { @@ -49,7 +51,9 @@ const [validConfig, error] = validateConfig({ hiddenEntitiesKeyPlural: process.env["HIDDEN_ENTITIES"], jsonDir: process.env["JSON_DIR"], matomo: process.env["MATOMO_SITE_ID"] && process.env["MATOMO_URL"] ? { + prependDomain: process.env["MATOMO_PREPEND_DOMAIN"], siteId: process.env["MATOMO_SITE_ID"], + subdomains: process.env["MATOMO_SUBDOMAINS"], url: process.env["MATOMO_URL"], } : null, oauth2: process.env["OAUTH2_CLIENT_ID"] diff --git a/src/lib/sessions.ts b/src/lib/sessions.ts index 75fee1248..bdc73f7f3 100644 --- a/src/lib/sessions.ts +++ b/src/lib/sessions.ts @@ -18,7 +18,9 @@ export interface Session { hiddenEntitiesKeyPlural?: string[] leafParametersName: Set<string> matomo?: { + prependDomain?: boolean siteId: number + subdomains?: string url: string } metadata: Metadata diff --git a/src/routes/__layout.svelte b/src/routes/__layout.svelte index bab05f426..c0d4c5e1a 100644 --- a/src/routes/__layout.svelte +++ b/src/routes/__layout.svelte @@ -70,7 +70,6 @@ setContext("inputInstantsByVariableName", inputInstantsByVariableName) const matomoConfig = $session.matomo - let matomoPaq = [] const reform = writable({}) setContext("reform", reform) @@ -107,6 +106,16 @@ // @ts-expect-error const _paq = window._paq /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ + if (matomoConfig.subdomains !== undefined) { + _paq.push(["setCookieDomain", matomoConfig.subdomains]) + _paq.push(["setDomains", matomoConfig.subdomains]) + } + _paq.push([ + "setDocumentTitle", + matomoConfig.prependDomain + ? document.domain + "/" + document.title + : document.title, + ]) _paq.push(["trackPageView"]) _paq.push(["enableLinkTracking"]) ;(function () { @@ -141,7 +150,12 @@ // @ts-expect-error const _paq = window._paq _paq.push(["setCustomUrl", url]) - _paq.push(["setDocumentTitle", document.title]) + _paq.push([ + "setDocumentTitle", + matomoConfig.prependDomain + ? document.domain + "/" + document.title + : document.title, + ]) _paq.push(["trackPageView"]) } -- GitLab