Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/SiteContentDetector.php282
-rw-r--r--plugins/CoreAdminHome/CoreAdminHome.php2
-rw-r--r--plugins/CoreAdminHome/lang/en.json3
-rw-r--r--plugins/CoreAdminHome/stylesheets/jsTrackingGenerator.css4
-rw-r--r--plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.js184
-rw-r--r--plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.min.js14
-rw-r--r--plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue37
-rw-r--r--plugins/Installation/Controller.php28
-rw-r--r--plugins/Installation/Installation.php3
-rw-r--r--plugins/Installation/tests/UI/Installation_spec.js2
-rw-r--r--plugins/PrivacyManager/Controller.php20
-rw-r--r--plugins/PrivacyManager/lang/en.json5
-rw-r--r--plugins/PrivacyManager/templates/askingForConsent.twig12
-rw-r--r--plugins/PrivacyManager/tests/UI/PrivacyManager_ConsentManager_spec.js67
-rw-r--r--plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_ConsentManager_consent_default.png3
-rw-r--r--plugins/SitesManager/Controller.php71
-rw-r--r--plugins/SitesManager/lang/en.json4
-rw-r--r--plugins/SitesManager/templates/_siteWithoutDataTabs.twig38
-rw-r--r--plugins/SitesManager/templates/_trackingCodeEmail.twig20
-rw-r--r--plugins/Tour/API.php37
-rw-r--r--plugins/Tour/Engagement/Challenge.php18
-rw-r--r--plugins/Tour/Engagement/ChallengeSetupConsentManager.php77
-rw-r--r--plugins/Tour/Engagement/Challenges.php4
-rw-r--r--plugins/Tour/lang/en.json4
-rw-r--r--plugins/Tour/tests/System/ConsentManagerDetectionTest.php53
-rw-r--r--plugins/Tour/tests/UI/Tour_ConsentManager_spec.js29
-rw-r--r--plugins/Tour/tests/UI/expected-screenshots/Tour_ConsentManager_widget_initial.png3
-rw-r--r--tests/PHPUnit/Fixtures/DisableSiteContentDetection.php49
-rw-r--r--tests/PHPUnit/Fixtures/EmptySiteWithSiteContentDetection.php59
-rw-r--r--tests/PHPUnit/Fixtures/EmptySiteWithSiteContentDetectionGA3.php58
-rw-r--r--tests/PHPUnit/Fixtures/EmptySiteWithSiteContentDetectionGA4.php58
-rw-r--r--tests/PHPUnit/Fixtures/EmptySiteWithSiteContentDetectionGTM.php58
-rw-r--r--tests/PHPUnit/Framework/Mock/FakeSiteContentDetector.php30
-rw-r--r--tests/PHPUnit/Unit/SiteContentDetectorTest.php109
-rw-r--r--tests/UI/expected-screenshots/EmptySite_ConsentManager_emptySiteDashboard.png3
-rw-r--r--tests/UI/expected-screenshots/EmptySite_GA3_emptySiteDashboard.png3
-rw-r--r--tests/UI/expected-screenshots/EmptySite_GA4_emptySiteDashboard.png3
-rw-r--r--tests/UI/expected-screenshots/EmptySite_GTM_emptySiteDashboard.png3
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_admin_manage_tracking_code.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_dashboard3.png4
-rw-r--r--tests/UI/specs/EmptySite_ConsentManager_spec.js25
-rw-r--r--tests/UI/specs/EmptySite_GA3_spec.js24
-rw-r--r--tests/UI/specs/EmptySite_GA4_spec.js24
-rw-r--r--tests/UI/specs/EmptySite_GTM_spec.js24
44 files changed, 1442 insertions, 120 deletions
diff --git a/core/SiteContentDetector.php b/core/SiteContentDetector.php
new file mode 100644
index 0000000000..4aa2bc0cb3
--- /dev/null
+++ b/core/SiteContentDetector.php
@@ -0,0 +1,282 @@
+<?php
+/**
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik;
+
+use Piwik\Container\StaticContainer;
+
+/**
+ * This class provides detection functions for specific content on a site. It can be used to easily detect the
+ * presence of known third party code.
+ *
+ * Note: Calling the detect() method will create a HTTP request to the site to retrieve data, only the main site URL
+ * will be checked
+ *
+ * Usage:
+ *
+ * $contentDetector = SiteContentDetector::getInstance();
+ * $contentDetector->detectContent([SiteContentDetector::GA3]);
+ * if ($contentDetector->ga3) {
+ * // site is using GA3
+ * }
+ *
+ */
+class SiteContentDetector
+{
+
+ // Content types
+ const ALL_CONTENT = 1;
+ const CONSENT_MANAGER = 2;
+ const GA3 = 3;
+ const GA4 = 4;
+ const GTM = 5;
+
+ // Detection detail
+ public $consentManagerId; // Id of the detected consent manager, eg. 'osano'
+ public $consentManagerName; // Display name of the detected consent manager, eg. 'Osano'
+ public $consentManagerUrl; // Url for the configuration guide for the detected consent manager
+ public $isConnected = false; // True if the detected consent manager is already connected with Matomo
+ public $ga3; // True if GA3 was detected on the site
+ public $ga4; // True if GA4 was detected on the site
+ public $gtm; // True if GTM was detected on the site
+
+ private $siteData;
+ private $siteId;
+
+ /**
+ * @return SiteContentDetector
+ */
+ public static function getInstance(): SiteContentDetector
+ {
+ return StaticContainer::get('Piwik\SiteContentDetector');
+ }
+
+ /**
+ * Reset the detection properties
+ */
+ private function resetDetectionProperties() : void
+ {
+ $this->consentManagerId = null;
+ $this->consentManagerUrl = null;
+ $this->consentManagerName = null;
+ $this->isConnected;
+ $this->ga3 = false;
+ $this->ga4 = false;
+ $this->gtm = false;
+ }
+
+ /**
+ * This will query the site and populate the class properties with
+ * the details of the detected content
+ *
+ * @param array $detectContent Array of content type for which to check, defaults to all, limiting this list
+ * will speed up the detection check
+ * @param ?int $idSite Override the site ID, will use the site from the current request if null
+ * @param string|null $siteData String containing the site data to search, if blank then data will be retrieved
+ * from the current request site via cURL
+ * @param int $timeOut How long to wait for the site to response, defaults to 60 seconds
+ */
+ public function detectContent(array $detectContent = [SiteContentDetector::ALL_CONTENT],
+ ?int $idSite = null, ?string $siteData = null, int $timeOut = 60)
+ {
+
+ // If the site data was already retrieved and stored in this object and it is for the same site id and we're
+ // not being passed a specific sitedata parameter then avoid making another request and just return
+ if ($siteData === null && $this->siteData != null && $idSite == $this->siteId) {
+ return;
+ }
+
+ $this->resetDetectionProperties();
+
+ // No site data was passed or previously retrieved, so grab the current site main page as a string
+ if ($siteData === null) {
+
+
+ if ($idSite === null) {
+ if (!isset($_REQUEST['idSite'])) {
+ return;
+ }
+ $idSite = Common::getRequestVar('idSite', null, 'int');
+ if (!$idSite) {
+ return;
+ }
+ }
+
+ $url = Site::getMainUrlFor($idSite);
+ if (!$url) {
+ return;
+ }
+
+ try {
+ $siteData = Http::sendHttpRequestBy('curl', $url, $timeOut, null, null,
+ null, 0, false, true);
+ } catch (\Exception $e) {
+ }
+
+ }
+
+ // Abort if still no site data
+ if ($siteData === null || $siteData === '') {
+ return;
+ }
+
+ $this->siteData = $siteData;
+ $this->siteId = $idSite;
+
+ if (in_array(SiteContentDetector::CONSENT_MANAGER, $detectContent) || in_array(SiteContentDetector::ALL_CONTENT, $detectContent)) {
+ $this->detectConsentManager();
+ }
+
+ if (in_array(SiteContentDetector::GA3, $detectContent) || in_array(SiteContentDetector::ALL_CONTENT, $detectContent)) {
+ $this->detectGA3();
+ }
+
+ if (in_array(SiteContentDetector::GA4, $detectContent) || in_array(SiteContentDetector::ALL_CONTENT, $detectContent)) {
+ $this->detectGA4();
+ }
+
+ if (in_array(SiteContentDetector::GTM, $detectContent) || in_array(SiteContentDetector::ALL_CONTENT, $detectContent)) {
+ $this->detectGTM();
+ }
+
+ }
+
+ /**
+ * Detect known consent managers in the site data
+ *
+ * Populate this object's properties with the results
+ *
+ * @return void
+ */
+ private function detectConsentManager() : void
+ {
+
+ $defs = SiteContentDetector::getConsentManagerDefinitions();
+ if (!$defs) {
+ return;
+ }
+
+ foreach ($defs as $consentManagerId => $consentManagerDef) {
+ foreach ($consentManagerDef['detectStrings'] as $dStr) {
+ if (strpos($this->siteData, $dStr) !== false && array_key_exists($consentManagerId, $defs)) {
+ $this->consentManagerId = $consentManagerId;
+ $this->consentManagerName = $consentManagerDef['name'];
+ $this->consentManagerUrl = $consentManagerDef['url'];
+ break 2;
+ }
+ }
+ }
+
+ if (!isset($defs[$this->consentManagerId]['connectedStrings'])) {
+ return;
+ }
+
+ // If a consent manager was detected then perform an additional check to see if it has been connected to Matomo
+ foreach ($defs[$this->consentManagerId]['connectedStrings'] as $cStr) {
+ if (strpos($this->siteData, $cStr) !== false) {
+ $this->isConnected = true;
+ break;
+ }
+ }
+
+ }
+
+ /**
+ * Detect GA3 usage from the site data
+ *
+ * @return void
+ */
+ private function detectGA3() : void
+ {
+ if (strpos($this->siteData, '(i,s,o,g,r,a,m)') !== false) {
+ $this->ga3 = true;
+ }
+ }
+
+ /**
+ * Detect GA4 usage from the site data
+ *
+ * @return void
+ */
+ private function detectGA4() : void
+ {
+ if (strpos($this->siteData, 'gtag.js') !== false) {
+ $this->ga4 = true;
+ }
+ }
+
+ /**
+ * Detect GTM usage from the site data
+ *
+ * @return void
+ */
+ private function detectGTM() : void
+ {
+ if (strpos($this->siteData, 'gtm.js') !== false) {
+ $this->gtm = true;
+ }
+ }
+
+ /**
+ * Return an array of consent manager definitions which can be used to detect their presence on the site and show
+ * the associated guide links
+ *
+ * @return array[]
+ */
+ public static function getConsentManagerDefinitions() : array
+ {
+ return [
+
+ 'osano' => [
+ 'name' => 'Osano',
+ 'detectStrings' => ['osano.com'],
+ 'connectedStrings' => ["Osano.cm.addEventListener('osano-cm-consent-changed', (change) => { console.log('cm-change'); consentSet(change); });"],
+ 'url' => 'https://matomo.org/faq/how-to/using-osano-consent-manager-with-matomo',
+ ],
+
+ 'cookiebot' => [
+ 'name' => 'Cookiebot',
+ 'detectStrings' => ['cookiebot.com'],
+ 'connectedStrings' => ["typeof _paq === 'undefined' || typeof Cookiebot === 'undefined'"],
+ 'url' => 'https://matomo.org/faq/how-to/using-cookiebot-consent-manager-with-matomo',
+ ],
+
+ 'cookieyes' => [
+ 'name' => 'CookieYes',
+ 'detectStrings' => ['cookieyes.com'],
+ 'connectedStrings' => ['document.addEventListener("cookieyes_consent_update", function (eventData)'],
+ 'url' => 'https://matomo.org/faq/how-to/using-cookieyes-consent-manager-with-matomo',
+ ],
+
+ // Note: tarte au citron pro is configured server side so we cannot tell if it has been connected by
+ // crawling the website, however setup of Matomo with the pro version is automatic, so displaying the guide
+ // link for pro isn't necessary. Only the open source version is detected by this definition.
+ 'tarteaucitron' => [
+ 'name' => 'Tarte au Citron',
+ 'detectStrings' => ['tarteaucitron.js'],
+ 'connectedStrings' => ['tarteaucitron.user.matomoHost'],
+ 'url' => 'https://matomo.org/faq/how-to/using-tarte-au-citron-consent-manager-with-matomo',
+ ],
+
+ 'klaro' => [
+ 'name' => 'Klaro',
+ 'detectStrings' => ['klaro.js', 'kiprotect.com'],
+ 'connectedStrings' => ['KlaroWatcher()', "title: 'Matomo',"],
+ 'url' => 'https://matomo.org/faq/how-to/using-klaro-consent-manager-with-matomo',
+ ],
+
+ 'complianz' => [
+ 'name' => 'Complianz',
+ 'detectStrings' => ['complianz-gdpr'],
+ 'connectedStrings' => ["if (!cmplz_in_array( 'statistics', consentedCategories )) {
+ _paq.push(['forgetCookieConsentGiven']);"],
+ 'url' => 'https://matomo.org/faq/how-to/using-complianz-for-wordpress-consent-manager-with-matomo',
+ ],
+ ];
+ }
+}
diff --git a/plugins/CoreAdminHome/CoreAdminHome.php b/plugins/CoreAdminHome/CoreAdminHome.php
index a80ca1f6a9..3519d294cc 100644
--- a/plugins/CoreAdminHome/CoreAdminHome.php
+++ b/plugins/CoreAdminHome/CoreAdminHome.php
@@ -208,5 +208,7 @@ class CoreAdminHome extends \Piwik\Plugin
$translationKeys[] = 'CoreAdminHome_SinglePageApplicationDescription';
$translationKeys[] = 'CoreAdminHome_SecurityNotificationUserAcceptInviteBody';
$translationKeys[] = 'CoreAdminHome_SecurityNotificationUserDeclinedInviteBody';
+ $translationKeys[] = 'CoreAdminHome_JSTracking_ConsentManagerDetected';
+ $translationKeys[] = 'CoreAdminHome_JSTracking_ConsentManagerConnected';
}
}
diff --git a/plugins/CoreAdminHome/lang/en.json b/plugins/CoreAdminHome/lang/en.json
index 6bb367846f..05bb86396b 100644
--- a/plugins/CoreAdminHome/lang/en.json
+++ b/plugins/CoreAdminHome/lang/en.json
@@ -46,6 +46,9 @@
"JSTracking_CampaignNameParam": "Campaign Name parameter",
"JSTracking_CodeNoteBeforeClosingHead": "Make sure this code is on every page of your website. We recommend pasting it immediately before the closing %1$s tag.",
"JSTracking_CodeNoteBeforeClosingHeadEmail": "Make sure this code is embedded within a script element on every page of your website. We recommend pasting it immediately before the closing head tag.",
+ "JSTracking_ConsentManagerDetected": "%1$s consent manager was detected on your site. To learn about configuring Matomo to work with %1$s please visit %2$s",
+ "JSTracking_ConsentManagerConnected": "%1$s appears to already be configured to work with Matomo.",
+ "JSTracking_ConsentManagerEmailNote" : "Or you could directly embed the tracking code in your website instead:",
"JSTracking_CrossDomain": "By default, the visitor ID that identifies a unique visitor is stored in the browser's first party cookies which can only be accessed by pages on the same domain. Enabling cross domain linking lets you track all the actions and pageviews of a specific visitor into the same visit even when they view pages on several domains. Whenever a user clicks on a link to one of your website's alias URLs, it will append a URL parameter pk_vid forwarding the Visitor ID.",
"JSTracking_CrossDomain_NeedsMultipleDomains": "Note: To use cross domain linking, you must specify more than one domain name (URLs) for your website.",
"JSTracking_CustomCampaignQueryParam": "Use custom query parameter names for the campaign name and keyword",
diff --git a/plugins/CoreAdminHome/stylesheets/jsTrackingGenerator.css b/plugins/CoreAdminHome/stylesheets/jsTrackingGenerator.css
index b7dee89bdb..749984ccf0 100644
--- a/plugins/CoreAdminHome/stylesheets/jsTrackingGenerator.css
+++ b/plugins/CoreAdminHome/stylesheets/jsTrackingGenerator.css
@@ -26,3 +26,7 @@
#js-campaign-query-param-extra .input-field {
margin-top: 0;
}
+
+#javascript-email-button {
+ min-width: 250px;
+}
diff --git a/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.js b/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.js
index 9b92419dba..34b939101a 100644
--- a/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.js
+++ b/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.js
@@ -1018,58 +1018,58 @@ SmtpSettingsvue_type_script_lang_ts.render = SmtpSettingsvue_type_template_id_14
},
directiveName: 'matomoSmtpSettings'
}));
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue?vue&type=template&id=ab152b6e
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue?vue&type=template&id=49746c08
-var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_1 = {
+var JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_1 = {
id: "js-code-options"
};
-var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_3 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_3 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_4 = ["innerHTML"];
-var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_5 = ["innerHTML"];
+var JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_4 = ["innerHTML"];
+var JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_5 = ["innerHTML"];
-var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_6 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_6 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_7 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_7 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_8 = ["innerHTML"];
+var JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_8 = ["innerHTML"];
-var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_9 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_9 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_10 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_10 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_11 = ["innerHTML"];
+var JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_11 = ["innerHTML"];
-var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_12 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_12 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_13 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_13 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_14 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+var JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_14 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-wordpress/",
target: "_blank",
rel: "noopener"
}, "WordPress", -1);
-var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
+var JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
-var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_16 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+var JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_16 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "https://matomo.org/faq/new-to-piwik/how-do-i-integrate-matomo-with-squarespace-website/",
target: "_blank",
rel: "noopener"
}, "Squarespace", -1);
-var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_17 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
+var JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_17 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
-var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_18 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+var JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_18 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-wix/",
target: "_blank",
rel: "noopener"
}, "Wix", -1);
-var JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_19 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
+var JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_19 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
var _hoisted_20 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "https://matomo.org/faq/how-to-install/faq_19424/",
@@ -1108,94 +1108,97 @@ var _hoisted_28 = {
class: "valign-wrapper trackingHelpHeader matchWidth"
};
var _hoisted_29 = {
+ id: "javascript-email-button"
+};
+var _hoisted_30 = {
id: "javascript-text"
};
-var _hoisted_30 = ["textContent"];
-var _hoisted_31 = {
+var _hoisted_31 = ["textContent"];
+var _hoisted_32 = {
id: "optional-js-tracking-options"
};
-var _hoisted_32 = {
+var _hoisted_33 = {
id: "jsTrackAllSubdomainsInlineHelp",
class: "inline-help-node"
};
-var _hoisted_33 = ["innerHTML"];
var _hoisted_34 = ["innerHTML"];
-var _hoisted_35 = {
+var _hoisted_35 = ["innerHTML"];
+var _hoisted_36 = {
id: "jsTrackGroupByDomainInlineHelp",
class: "inline-help-node"
};
-var _hoisted_36 = {
+var _hoisted_37 = {
id: "jsTrackAllAliasesInlineHelp",
class: "inline-help-node"
};
-var _hoisted_37 = {
- id: "javascript-advanced-options"
-};
var _hoisted_38 = {
- id: "javascript-tracking-visitor-cv"
+ id: "javascript-advanced-options"
};
var _hoisted_39 = {
- class: "row"
+ id: "javascript-tracking-visitor-cv"
};
var _hoisted_40 = {
- class: "col s12 m3"
+ class: "row"
};
var _hoisted_41 = {
class: "col s12 m3"
};
var _hoisted_42 = {
+ class: "col s12 m3"
+};
+var _hoisted_43 = {
class: "col s12 m6 l3"
};
-var _hoisted_43 = ["onKeydown"];
-var _hoisted_44 = {
+var _hoisted_44 = ["onKeydown"];
+var _hoisted_45 = {
class: "col s12 m6 l3"
};
-var _hoisted_45 = ["onKeydown"];
-var _hoisted_46 = {
+var _hoisted_46 = ["onKeydown"];
+var _hoisted_47 = {
class: "row"
};
-var _hoisted_47 = {
+var _hoisted_48 = {
class: "col s12"
};
-var _hoisted_48 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+var _hoisted_49 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: "icon-add"
}, null, -1);
-var _hoisted_49 = {
+var _hoisted_50 = {
id: "jsCrossDomain",
class: "inline-help-node"
};
-var _hoisted_50 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var _hoisted_51 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var _hoisted_51 = {
+var _hoisted_52 = {
id: "jsDoNotTrackInlineHelp",
class: "inline-help-node"
};
-var _hoisted_52 = {
+var _hoisted_53 = {
key: 0
};
-var _hoisted_53 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var _hoisted_54 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var _hoisted_54 = ["innerHTML"];
-var _hoisted_55 = {
+var _hoisted_55 = ["innerHTML"];
+var _hoisted_56 = {
id: "js-campaign-query-param-extra"
};
-var _hoisted_56 = {
+var _hoisted_57 = {
class: "row"
};
-var _hoisted_57 = {
+var _hoisted_58 = {
class: "col s12"
};
-var _hoisted_58 = {
+var _hoisted_59 = {
class: "row"
};
-var _hoisted_59 = {
+var _hoisted_60 = {
class: "col s12"
};
-function JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_render(_ctx, _cache, $props, $setup, $data, $options) {
+function JsTrackingCodeGeneratorvue_type_template_id_49746c08_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
var _component_ContentBlock = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ContentBlock");
@@ -1207,15 +1210,15 @@ function JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_render(_ctx, _cach
"content-title": _ctx.translate('CoreAdminHome_JavaScriptTracking')
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
- return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTrackingIntro1')) + " ", 1), JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_2, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTrackingIntro2')) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTrackingIntro1')) + " ", 1), JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_2, JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTrackingIntro2')) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.jsTrackingIntro3a)
- }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_4), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_4), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(' ' + _ctx.jsTrackingIntro3b)
- }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_5), JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_6, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_7, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_5), JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_6, JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_7, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.jsTrackingIntro4a)
- }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_8), JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_9, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_8), JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_9, JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.jsTrackingIntro5)
- }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_11), JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_12, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_13, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_InstallationGuides')) + " : ", 1), JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_14, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_15, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_16, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_17, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_18, JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_hoisted_19, _hoisted_20, _hoisted_21, _hoisted_22, _hoisted_23, _hoisted_24, _hoisted_25, _hoisted_26]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_11), JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_12, JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_13, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_InstallationGuides')) + " : ", 1), JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_14, JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_15, JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_16, JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_17, JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_18, JsTrackingCodeGeneratorvue_type_template_id_49746c08_hoisted_19, _hoisted_20, _hoisted_21, _hoisted_22, _hoisted_23, _hoisted_24, _hoisted_25, _hoisted_26]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "site",
name: "js-tracker-website",
class: "jsTrackingCodeWebsite",
@@ -1224,21 +1227,21 @@ function JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_render(_ctx, _cach
return _ctx.site = $event;
}),
introduction: _ctx.translate('General_Website')
- }, null, 8, ["modelValue", "introduction"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_27, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_28, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_JsTrackingTag')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTracking_CodeNoteBeforeClosingHead', "</head>")), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("button", {
+ }, null, 8, ["modelValue", "introduction"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_27, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_28, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_JsTrackingTag')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTracking_CodeNoteBeforeClosingHead', "</head>")), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_29, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("button", {
class: "btn",
id: "emailJsBtn",
onClick: _cache[1] || (_cache[1] = function ($event) {
return _ctx.sendEmail();
})
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_EmailInstructionsButton')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_29, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("pre", {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_EmailInstructionsButton')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_30, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("pre", {
class: "codeblock",
textContent: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.trackingCode),
ref: "trackingCode"
- }, null, 8, _hoisted_30), [[_directive_select_on_focus, {}]])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_31, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_32, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, null, 8, _hoisted_31), [[_directive_select_on_focus, {}]])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_32, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_33, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.mergeSubdomainsDesc)
- }, null, 8, _hoisted_33), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, null, 8, _hoisted_34), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.learnMoreText)
- }, null, 8, _hoisted_34)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, _hoisted_35)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "checkbox",
name: "javascript-tracking-all-subdomains",
"model-value": _ctx.trackAllSubdomains,
@@ -1251,7 +1254,7 @@ function JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_render(_ctx, _cach
introduction: _ctx.translate('General_Options'),
title: "".concat(_ctx.translate('CoreAdminHome_JSTracking_MergeSubdomains'), " ").concat(_ctx.currentSiteName),
"inline-help": "#jsTrackAllSubdomainsInlineHelp"
- }, null, 8, ["model-value", "disabled", "introduction", "title"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_35, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTracking_GroupPageTitlesByDomainDesc1', _ctx.currentSiteHost)), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["model-value", "disabled", "introduction", "title"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_36, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTracking_GroupPageTitlesByDomainDesc1', _ctx.currentSiteHost)), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "checkbox",
name: "javascript-tracking-group-by-domain",
"model-value": _ctx.groupByDomain,
@@ -1263,7 +1266,7 @@ function JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_render(_ctx, _cach
disabled: _ctx.isLoading,
title: _ctx.translate('CoreAdminHome_JSTracking_GroupPageTitlesByDomain'),
"inline-help": "#jsTrackGroupByDomainInlineHelp"
- }, null, 8, ["model-value", "disabled", "title"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_36, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTracking_MergeAliasesDesc', _ctx.currentSiteAlias)), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["model-value", "disabled", "title"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_37, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTracking_MergeAliasesDesc', _ctx.currentSiteAlias)), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "checkbox",
name: "javascript-tracking-all-aliases",
"model-value": _ctx.trackAllAliases,
@@ -1296,7 +1299,7 @@ function JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_render(_ctx, _cach
onClick: _cache[7] || (_cache[7] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.showAdvanced = false;
}, ["prevent"]))
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Hide')), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showAdvanced]])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_37, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Hide')), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showAdvanced]])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_38, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "checkbox",
name: "javascript-tracking-visitor-cv-check",
"model-value": _ctx.trackCustomVars,
@@ -1308,32 +1311,32 @@ function JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_render(_ctx, _cach
disabled: _ctx.isLoading,
title: _ctx.translate('CoreAdminHome_JSTracking_VisitorCustomVars'),
"inline-help": _ctx.translate('CoreAdminHome_JSTracking_VisitorCustomVarsDesc')
- }, null, 8, ["model-value", "disabled", "title", "inline-help"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_38, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_39, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_40, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Name')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_41, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Value')), 1)]), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.customVars, function (customVar, index) {
+ }, null, 8, ["model-value", "disabled", "title", "inline-help"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_39, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_40, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_41, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Name')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_42, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Value')), 1)]), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.customVars, function (customVar, index) {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
class: "row",
key: index
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_42, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_43, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
type: "text",
class: "custom-variable-name",
onKeydown: function onKeydown($event) {
return _ctx.onCustomVarNameKeydown($event, index);
},
placeholder: "e.g. Type"
- }, null, 40, _hoisted_43)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_44, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ }, null, 40, _hoisted_44)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_45, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
type: "text",
class: "custom-variable-value",
onKeydown: function onKeydown($event) {
return _ctx.onCustomVarValueKeydown($event, index);
},
placeholder: "e.g. Customer"
- }, null, 40, _hoisted_45)])]);
- }), 128)), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_46, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_47, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 40, _hoisted_46)])]);
+ }), 128)), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_47, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_48, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "javascript:;",
onClick: _cache[9] || (_cache[9] = function ($event) {
return _ctx.addCustomVar();
}),
class: "add-custom-variable"
- }, [_hoisted_48, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Add')), 1)])])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.canAddMoreCustomVariables]])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.trackCustomVars]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_49, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTracking_CrossDomain')) + " ", 1), _hoisted_50, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTracking_CrossDomain_NeedsMultipleDomains')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, [_hoisted_49, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Add')), 1)])])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.canAddMoreCustomVariables]])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.trackCustomVars]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_50, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTracking_CrossDomain')) + " ", 1), _hoisted_51, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTracking_CrossDomain_NeedsMultipleDomains')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "checkbox",
name: "javascript-tracking-cross-domain",
"model-value": _ctx.crossDomain,
@@ -1347,7 +1350,7 @@ function JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_render(_ctx, _cach
disabled: _ctx.isLoading || !_ctx.hasManySiteUrls,
title: _ctx.translate('CoreAdminHome_JSTracking_EnableCrossDomainLinking'),
"inline-help": "#jsCrossDomain"
- }, null, 8, ["model-value", "disabled", "title"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_51, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTracking_EnableDoNotTrackDesc')) + " ", 1), _ctx.serverSideDoNotTrackEnabled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", _hoisted_52, [_hoisted_53, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTracking_EnableDoNotTrack_AlreadyEnabled')), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["model-value", "disabled", "title"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_52, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTracking_EnableDoNotTrackDesc')) + " ", 1), _ctx.serverSideDoNotTrackEnabled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", _hoisted_53, [_hoisted_54, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTracking_EnableDoNotTrack_AlreadyEnabled')), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "checkbox",
name: "javascript-tracking-do-not-track",
"model-value": _ctx.doNotTrack,
@@ -1375,7 +1378,7 @@ function JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_render(_ctx, _cach
id: "jsTrackCampaignParamsInlineHelp",
class: "inline-help-node",
innerHTML: _ctx.$sanitize(_ctx.jsTrackCampaignParamsInlineHelp)
- }, null, 8, _hoisted_54), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, _hoisted_55), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "checkbox",
name: "custom-campaign-query-params-check",
"model-value": _ctx.useCustomCampaignParams,
@@ -1387,7 +1390,7 @@ function JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_render(_ctx, _cach
disabled: _ctx.isLoading,
title: _ctx.translate('CoreAdminHome_JSTracking_CustomCampaignQueryParam'),
"inline-help": "#jsTrackCampaignParamsInlineHelp"
- }, null, 8, ["model-value", "disabled", "title"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_55, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_56, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_57, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["model-value", "disabled", "title"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_56, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_57, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_58, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "text",
name: "custom-campaign-name-query-param",
"model-value": _ctx.customCampaignName,
@@ -1398,7 +1401,7 @@ function JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_render(_ctx, _cach
}),
disabled: _ctx.isLoading,
title: _ctx.translate('CoreAdminHome_JSTracking_CampaignNameParam')
- }, null, 8, ["model-value", "disabled", "title"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_58, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_59, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["model-value", "disabled", "title"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_59, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_60, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "text",
name: "custom-campaign-keyword-query-param",
"model-value": _ctx.customCampaignKeyword,
@@ -1414,7 +1417,7 @@ function JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_render(_ctx, _cach
_: 1
}, 8, ["content-title"]);
}
-// CONCATENATED MODULE: ./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue?vue&type=template&id=ab152b6e
+// CONCATENATED MODULE: ./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue?vue&type=template&id=49746c08
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue?vue&type=script&lang=ts
@@ -1468,7 +1471,10 @@ var piwikPath = window.location.pathname.substring(0, window.location.pathname.l
customCampaignName: '',
customCampaignKeyword: '',
trackingCodeAbortController: null,
- isHighlighting: false
+ isHighlighting: false,
+ consentManagerName: '',
+ consentManagerUrl: '',
+ consentManagerIsConnected: false
};
},
components: {
@@ -1504,6 +1510,23 @@ var piwikPath = window.location.pathname.substring(0, window.location.pathname.l
this.isLoading = true;
promises.push(external_CoreHome_["AjaxHelper"].fetch({
module: 'API',
+ format: 'json',
+ method: 'Tour.detectConsentManager',
+ idSite: idSite,
+ filter_limit: '-1'
+ }).then(function (response) {
+ if (Object.prototype.hasOwnProperty.call(response, 'name')) {
+ _this.consentManagerName = response.name;
+ }
+
+ if (Object.prototype.hasOwnProperty.call(response, 'url')) {
+ _this.consentManagerUrl = response.url;
+ }
+
+ _this.consentManagerIsConnected = response.isConnected;
+ }));
+ promises.push(external_CoreHome_["AjaxHelper"].fetch({
+ module: 'API',
method: 'SitesManager.getSiteUrlsFromId',
idSite: idSite,
filter_limit: '-1'
@@ -1553,6 +1576,15 @@ var piwikPath = window.location.pathname.substring(0, window.location.pathname.l
var trackingCode = this.trackingCode;
trackingCode = trackingCode.replace(/<[^>]+>/g, '');
var bodyText = "".concat(Object(external_CoreHome_["translate"])('SitesManager_JsTrackingTagHelp'), ". ").concat(Object(external_CoreHome_["translate"])('CoreAdminHome_JSTracking_CodeNoteBeforeClosingHeadEmail', '\'head'), "\n").concat(trackingCode);
+
+ if (this.consentManagerName !== '' && this.consentManagerUrl !== '') {
+ bodyText += Object(external_CoreHome_["translate"])('CoreAdminHome_JSTracking_ConsentManagerDetected', this.consentManagerName, this.consentManagerUrl);
+
+ if (this.consentManagerIsConnected) {
+ bodyText += "\n".concat(Object(external_CoreHome_["translate"])('CoreAdminHome_JSTracking_ConsentManagerConnected', this.consentManagerName));
+ }
+ }
+
bodyText = encodeURIComponent(bodyText);
var linkText = "mailto:?subject=".concat(subjectLine, "&body=").concat(bodyText);
window.location.href = linkText;
@@ -1714,7 +1746,7 @@ var piwikPath = window.location.pathname.substring(0, window.location.pathname.l
-JsTrackingCodeGeneratorvue_type_script_lang_ts.render = JsTrackingCodeGeneratorvue_type_template_id_ab152b6e_render
+JsTrackingCodeGeneratorvue_type_script_lang_ts.render = JsTrackingCodeGeneratorvue_type_template_id_49746c08_render
/* harmony default export */ var JsTrackingCodeGenerator = (JsTrackingCodeGeneratorvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.adapter.ts
diff --git a/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.min.js b/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.min.js
index a9d8f4887f..1972a568a1 100644
--- a/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.min.js
+++ b/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.min.js
@@ -1,38 +1,38 @@
-(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["CoreAdminHome"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["CoreAdminHome"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var a=t[o]={i:o,l:!1,exports:{}};return e[o].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(o,a,function(t){return e[t]}.bind(null,a));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/CoreAdminHome/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"ArchivingSettings",(function(){return E})),n.d(t,"BrandingSettings",(function(){return Y})),n.d(t,"SmtpSettings",(function(){return te})),n.d(t,"JsTrackingCodeGenerator",(function(){return bt})),n.d(t,"ImageTrackingCodeGenerator",(function(){return Gt})),n.d(t,"TrackingFailures",(function(){return bn})),"undefined"!==typeof window){var o=window.document.currentScript,a=o&&o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);a&&(n.p=a[1])}var r=n("19dc"),i=n("8bbf"),l={class:"form-group row"},c={class:"col s12"},s={class:"col s12 m6"},d={class:"form-description",style:{"margin-left":"4px"}},u={for:"enableBrowserTriggerArchiving2"},m=["innerHTML"],g={class:"col s12 m6"},p=["innerHTML"],b={class:"form-group row"},h={class:"col s12"},j={class:"input-field col s12 m6"},f=["disabled"],v={class:"form-description"},O={class:"col s12 m6"},C={key:0,class:"form-help"},k={key:0},V=Object(i["createElementVNode"])("br",null,null,-1),S=Object(i["createElementVNode"])("br",null,null,-1),N=Object(i["createElementVNode"])("br",null,null,-1);function y(e,t,n,o,a,r){var y=Object(i["resolveComponent"])("SaveButton"),T=Object(i["resolveComponent"])("ContentBlock");return Object(i["openBlock"])(),Object(i["createBlock"])(T,{"content-title":e.translate("CoreAdminHome_ArchivingSettings"),anchor:"archivingSettings",class:"matomo-archiving-settings"},{default:Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("div",l,[Object(i["createElementVNode"])("h3",c,Object(i["toDisplayString"])(e.translate("General_AllowPiwikArchivingToTriggerBrowser")),1),Object(i["createElementVNode"])("div",s,[Object(i["createElementVNode"])("p",null,[Object(i["createElementVNode"])("label",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"radio",id:"enableBrowserTriggerArchiving1",name:"enableBrowserTriggerArchiving",value:"1","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.enableBrowserTriggerArchivingValue=t})},null,512),[[i["vModelRadio"],e.enableBrowserTriggerArchivingValue]]),Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.translate("General_Yes")),1),Object(i["createElementVNode"])("span",d,Object(i["toDisplayString"])(e.translate("General_Default")),1)])]),Object(i["createElementVNode"])("p",null,[Object(i["createElementVNode"])("label",u,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"radio",id:"enableBrowserTriggerArchiving2",name:"enableBrowserTriggerArchiving",value:"0","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.enableBrowserTriggerArchivingValue=t})},null,512),[[i["vModelRadio"],e.enableBrowserTriggerArchivingValue]]),Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.translate("General_No")),1),Object(i["createElementVNode"])("span",{class:"form-description",innerHTML:e.$sanitize(e.archivingTriggerDesc),style:{"margin-left":"4px"}},null,8,m)])])]),Object(i["createElementVNode"])("div",g,[Object(i["createElementVNode"])("div",{class:"form-help",innerHTML:e.$sanitize(e.archivingInlineHelp)},null,8,p)])]),Object(i["createElementVNode"])("div",b,[Object(i["createElementVNode"])("h3",h,Object(i["toDisplayString"])(e.translate("General_ReportsContainingTodayWillBeProcessedAtMostEvery")),1),Object(i["createElementVNode"])("div",j,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.todayArchiveTimeToLiveValue=t}),id:"todayArchiveTimeToLive",disabled:!e.isGeneralSettingsAdminEnabled},null,8,f),[[i["vModelText"],e.todayArchiveTimeToLiveValue]]),Object(i["createElementVNode"])("span",v,Object(i["toDisplayString"])(e.translate("General_RearchiveTimeIntervalOnlyForTodayReports")),1)]),Object(i["createElementVNode"])("div",O,[e.isGeneralSettingsAdminEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",C,[e.showWarningCron?(Object(i["openBlock"])(),Object(i["createElementBlock"])("strong",k,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("General_NewReportsWillBeProcessedByCron")),1),V,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_ReportsWillBeProcessedAtMostEveryHour"))+" "+Object(i["toDisplayString"])(e.translate("General_IfArchivingIsFastYouCanSetupCronRunMoreOften")),1),S])):Object(i["createCommentVNode"])("",!0),Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_SmallTrafficYouCanLeaveDefault",e.todayArchiveTimeToLiveDefault))+" ",1),N,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_MediumToHighTrafficItIsRecommendedTo",1800,3600)),1)])):Object(i["createCommentVNode"])("",!0)])]),Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(y,{saving:e.isLoading,onConfirm:t[3]||(t[3]=function(t){return e.save()})},null,8,["saving"])])])]})),_:1},8,["content-title"])}var T=n("a5a2"),A=Object(i["defineComponent"])({props:{enableBrowserTriggerArchiving:Boolean,showSegmentArchiveTriggerInfo:Boolean,isGeneralSettingsAdminEnabled:Boolean,showWarningCron:Boolean,todayArchiveTimeToLive:Number,todayArchiveTimeToLiveDefault:Number},components:{ContentBlock:r["ContentBlock"],SaveButton:T["SaveButton"]},data:function(){return{isLoading:!1,enableBrowserTriggerArchivingValue:this.enableBrowserTriggerArchiving?1:0,todayArchiveTimeToLiveValue:this.todayArchiveTimeToLive}},watch:{enableBrowserTriggerArchiving:function(e){this.enableBrowserTriggerArchivingValue=e?1:0},todayArchiveTimeToLive:function(e){this.todayArchiveTimeToLiveValue=e}},computed:{archivingTriggerDesc:function(){var e="";return e+=Object(r["translate"])("General_ArchivingTriggerDescription",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/docs/setup-auto-archiving/">',"</a>"),this.showSegmentArchiveTriggerInfo&&(e+=Object(r["translate"])("General_ArchivingTriggerSegment")),e},archivingInlineHelp:function(){var e=Object(r["translate"])("General_ArchivingInlineHelp");return e+="<br/>",e+=Object(r["translate"])("General_SeeTheOfficialDocumentationForMoreInformation",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/docs/setup-auto-archiving/">',"</a>"),e}},methods:{save:function(){var e=this;this.isLoading=!0,r["AjaxHelper"].post({module:"API",method:"CoreAdminHome.setArchiveSettings"},{enableBrowserTriggerArchiving:this.enableBrowserTriggerArchivingValue,todayArchiveTimeToLive:this.todayArchiveTimeToLiveValue}).then((function(){e.isLoading=!1;var t=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(t)})).finally((function(){e.isLoading=!1}))}}});A.render=y;var E=A,w=(Object(r["createAngularJsAdapter"])({component:E,scope:{enableBrowserTriggerArchiving:{angularJsBind:"<"},showSegmentArchiveTriggerInfo:{angularJsBind:"<"},isGeneralSettingsAdminEnabled:{angularJsBind:"<"},showWarningCron:{angularJsBind:"<"},todayArchiveTimeToLive:{angularJsBind:"<"},todayArchiveTimeToLiveDefault:{angularJsBind:"<"}},directiveName:"matomoArchivingSettings"}),{id:"logoSettings"}),_={id:"logoUploadForm",ref:"logoUploadForm",method:"post",enctype:"multipart/form-data",action:"index.php?module=CoreAdminHome&format=json&action=uploadCustomLogo"},H={key:0},D=["value"],B=Object(i["createElementVNode"])("input",{type:"hidden",name:"force_api_session",value:"1"},null,-1),L={key:0},x={key:0,class:"alert alert-warning uploaderror"},U={class:"row"},F={class:"col s12"},I=["src"],G={class:"row"},P={class:"col s12"},M=["src"],J={key:1},q=["innerHTML"],R={key:1},W={class:"alert alert-warning"};
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["CoreAdminHome"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["CoreAdminHome"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var a=t[o]={i:o,l:!1,exports:{}};return e[o].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(o,a,function(t){return e[t]}.bind(null,a));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/CoreAdminHome/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"ArchivingSettings",(function(){return E})),n.d(t,"BrandingSettings",(function(){return Y})),n.d(t,"SmtpSettings",(function(){return te})),n.d(t,"JsTrackingCodeGenerator",(function(){return ht})),n.d(t,"ImageTrackingCodeGenerator",(function(){return Gt})),n.d(t,"TrackingFailures",(function(){return hn})),"undefined"!==typeof window){var o=window.document.currentScript,a=o&&o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);a&&(n.p=a[1])}var r=n("19dc"),i=n("8bbf"),l={class:"form-group row"},c={class:"col s12"},s={class:"col s12 m6"},d={class:"form-description",style:{"margin-left":"4px"}},u={for:"enableBrowserTriggerArchiving2"},m=["innerHTML"],g={class:"col s12 m6"},p=["innerHTML"],b={class:"form-group row"},h={class:"col s12"},j={class:"input-field col s12 m6"},f=["disabled"],v={class:"form-description"},O={class:"col s12 m6"},C={key:0,class:"form-help"},k={key:0},V=Object(i["createElementVNode"])("br",null,null,-1),S=Object(i["createElementVNode"])("br",null,null,-1),N=Object(i["createElementVNode"])("br",null,null,-1);function y(e,t,n,o,a,r){var y=Object(i["resolveComponent"])("SaveButton"),T=Object(i["resolveComponent"])("ContentBlock");return Object(i["openBlock"])(),Object(i["createBlock"])(T,{"content-title":e.translate("CoreAdminHome_ArchivingSettings"),anchor:"archivingSettings",class:"matomo-archiving-settings"},{default:Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("div",l,[Object(i["createElementVNode"])("h3",c,Object(i["toDisplayString"])(e.translate("General_AllowPiwikArchivingToTriggerBrowser")),1),Object(i["createElementVNode"])("div",s,[Object(i["createElementVNode"])("p",null,[Object(i["createElementVNode"])("label",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"radio",id:"enableBrowserTriggerArchiving1",name:"enableBrowserTriggerArchiving",value:"1","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.enableBrowserTriggerArchivingValue=t})},null,512),[[i["vModelRadio"],e.enableBrowserTriggerArchivingValue]]),Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.translate("General_Yes")),1),Object(i["createElementVNode"])("span",d,Object(i["toDisplayString"])(e.translate("General_Default")),1)])]),Object(i["createElementVNode"])("p",null,[Object(i["createElementVNode"])("label",u,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"radio",id:"enableBrowserTriggerArchiving2",name:"enableBrowserTriggerArchiving",value:"0","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.enableBrowserTriggerArchivingValue=t})},null,512),[[i["vModelRadio"],e.enableBrowserTriggerArchivingValue]]),Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.translate("General_No")),1),Object(i["createElementVNode"])("span",{class:"form-description",innerHTML:e.$sanitize(e.archivingTriggerDesc),style:{"margin-left":"4px"}},null,8,m)])])]),Object(i["createElementVNode"])("div",g,[Object(i["createElementVNode"])("div",{class:"form-help",innerHTML:e.$sanitize(e.archivingInlineHelp)},null,8,p)])]),Object(i["createElementVNode"])("div",b,[Object(i["createElementVNode"])("h3",h,Object(i["toDisplayString"])(e.translate("General_ReportsContainingTodayWillBeProcessedAtMostEvery")),1),Object(i["createElementVNode"])("div",j,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.todayArchiveTimeToLiveValue=t}),id:"todayArchiveTimeToLive",disabled:!e.isGeneralSettingsAdminEnabled},null,8,f),[[i["vModelText"],e.todayArchiveTimeToLiveValue]]),Object(i["createElementVNode"])("span",v,Object(i["toDisplayString"])(e.translate("General_RearchiveTimeIntervalOnlyForTodayReports")),1)]),Object(i["createElementVNode"])("div",O,[e.isGeneralSettingsAdminEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",C,[e.showWarningCron?(Object(i["openBlock"])(),Object(i["createElementBlock"])("strong",k,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("General_NewReportsWillBeProcessedByCron")),1),V,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_ReportsWillBeProcessedAtMostEveryHour"))+" "+Object(i["toDisplayString"])(e.translate("General_IfArchivingIsFastYouCanSetupCronRunMoreOften")),1),S])):Object(i["createCommentVNode"])("",!0),Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_SmallTrafficYouCanLeaveDefault",e.todayArchiveTimeToLiveDefault))+" ",1),N,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_MediumToHighTrafficItIsRecommendedTo",1800,3600)),1)])):Object(i["createCommentVNode"])("",!0)])]),Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(y,{saving:e.isLoading,onConfirm:t[3]||(t[3]=function(t){return e.save()})},null,8,["saving"])])])]})),_:1},8,["content-title"])}var T=n("a5a2"),A=Object(i["defineComponent"])({props:{enableBrowserTriggerArchiving:Boolean,showSegmentArchiveTriggerInfo:Boolean,isGeneralSettingsAdminEnabled:Boolean,showWarningCron:Boolean,todayArchiveTimeToLive:Number,todayArchiveTimeToLiveDefault:Number},components:{ContentBlock:r["ContentBlock"],SaveButton:T["SaveButton"]},data:function(){return{isLoading:!1,enableBrowserTriggerArchivingValue:this.enableBrowserTriggerArchiving?1:0,todayArchiveTimeToLiveValue:this.todayArchiveTimeToLive}},watch:{enableBrowserTriggerArchiving:function(e){this.enableBrowserTriggerArchivingValue=e?1:0},todayArchiveTimeToLive:function(e){this.todayArchiveTimeToLiveValue=e}},computed:{archivingTriggerDesc:function(){var e="";return e+=Object(r["translate"])("General_ArchivingTriggerDescription",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/docs/setup-auto-archiving/">',"</a>"),this.showSegmentArchiveTriggerInfo&&(e+=Object(r["translate"])("General_ArchivingTriggerSegment")),e},archivingInlineHelp:function(){var e=Object(r["translate"])("General_ArchivingInlineHelp");return e+="<br/>",e+=Object(r["translate"])("General_SeeTheOfficialDocumentationForMoreInformation",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/docs/setup-auto-archiving/">',"</a>"),e}},methods:{save:function(){var e=this;this.isLoading=!0,r["AjaxHelper"].post({module:"API",method:"CoreAdminHome.setArchiveSettings"},{enableBrowserTriggerArchiving:this.enableBrowserTriggerArchivingValue,todayArchiveTimeToLive:this.todayArchiveTimeToLiveValue}).then((function(){e.isLoading=!1;var t=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(t)})).finally((function(){e.isLoading=!1}))}}});A.render=y;var E=A,w=(Object(r["createAngularJsAdapter"])({component:E,scope:{enableBrowserTriggerArchiving:{angularJsBind:"<"},showSegmentArchiveTriggerInfo:{angularJsBind:"<"},isGeneralSettingsAdminEnabled:{angularJsBind:"<"},showWarningCron:{angularJsBind:"<"},todayArchiveTimeToLive:{angularJsBind:"<"},todayArchiveTimeToLiveDefault:{angularJsBind:"<"}},directiveName:"matomoArchivingSettings"}),{id:"logoSettings"}),_={id:"logoUploadForm",ref:"logoUploadForm",method:"post",enctype:"multipart/form-data",action:"index.php?module=CoreAdminHome&format=json&action=uploadCustomLogo"},H={key:0},D=["value"],B=Object(i["createElementVNode"])("input",{type:"hidden",name:"force_api_session",value:"1"},null,-1),L={key:0},x={key:0,class:"alert alert-warning uploaderror"},U={class:"row"},F={class:"col s12"},I=["src"],M={class:"row"},G={class:"col s12"},P=["src"],J={key:1},q=["innerHTML"],R={key:1},W={class:"alert alert-warning"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function $(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("SaveButton"),s=Object(i["resolveComponent"])("ContentBlock"),d=Object(i["resolveDirective"])("form");return Object(i["openBlock"])(),Object(i["createBlock"])(s,{"content-title":e.translate("CoreAdminHome_BrandingSettings"),anchor:"brandingSettings"},{default:Object(i["withCtx"])((function(){return[Object(i["withDirectives"])(Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("p",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_CustomLogoHelpText")),1),Object(i["createVNode"])(l,{name:"useCustomLogo",uicontrol:"checkbox","model-value":e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onUseCustomLogoChange(t)}),title:e.translate("CoreAdminHome_UseCustomLogo"),"inline-help":e.help},null,8,["model-value","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",w,[Object(i["createElementVNode"])("form",_,[e.fileUploadEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",H,[Object(i["createElementVNode"])("input",{type:"hidden",name:"token_auth",value:e.tokenAuth},null,8,D),B,e.logosWriteable?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",L,[Object(i["createVNode"])(i["Transition"],{name:"fade-out"},{default:Object(i["withCtx"])((function(){return[e.showUploadError?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",x,Object(i["toDisplayString"])(e.translate("CoreAdminHome_LogoUploadFailed")),1)):Object(i["createCommentVNode"])("",!0)]})),_:1}),Object(i["createVNode"])(l,{uicontrol:"file",name:"customLogo","model-value":e.customLogo,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.onCustomLogoChange(t)}),title:e.translate("CoreAdminHome_LogoUpload"),"inline-help":e.translate("CoreAdminHome_LogoUploadHelp","JPG / PNG / GIF","110")},null,8,["model-value","title","inline-help"]),Object(i["createElementVNode"])("div",U,[Object(i["createElementVNode"])("div",F,[Object(i["createElementVNode"])("img",{src:e.pathUserLogoWithBuster,id:"currentLogo",style:{"max-height":"150px"},ref:"currentLogo"},null,8,I)])]),Object(i["createVNode"])(l,{uicontrol:"file",name:"customFavicon","model-value":e.customFavicon,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.onFaviconChange(t)}),title:e.translate("CoreAdminHome_FaviconUpload"),"inline-help":e.translate("CoreAdminHome_LogoUploadHelp","JPG / PNG / GIF","16")},null,8,["model-value","title","inline-help"]),Object(i["createElementVNode"])("div",G,[Object(i["createElementVNode"])("div",P,[Object(i["createElementVNode"])("img",{src:e.pathUserFaviconWithBuster,id:"currentFavicon",width:"16",height:"16",ref:"currentFavicon"},null,8,M)])])])):Object(i["createCommentVNode"])("",!0),e.logosWriteable?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",J,[Object(i["createElementVNode"])("div",{class:"alert alert-warning",innerHTML:e.$sanitize(e.logosNotWriteableWarning)},null,8,q)]))])):Object(i["createCommentVNode"])("",!0),e.fileUploadEnabled?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",R,[Object(i["createElementVNode"])("div",W,Object(i["toDisplayString"])(e.translate("CoreAdminHome_FileUploadDisabled","file_uploads=1")),1)]))],512)],512),[[i["vShow"],e.enabled]]),Object(i["createVNode"])(c,{onConfirm:t[3]||(t[3]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])],512),[[d]])]})),_:1},8,["content-title"])}var K=window,z=K.$,Q=Object(i["defineComponent"])({props:{fileUploadEnabled:{type:Boolean,required:!0},logosWriteable:{type:Boolean,required:!0},useCustomLogo:{type:Boolean,required:!0},pathUserLogoDirectory:{type:String,required:!0},pathUserLogo:{type:String,required:!0},pathUserLogoSmall:{type:String,required:!0},pathUserLogoSvg:{type:String,required:!0},hasUserLogo:{type:Boolean,required:!0},pathUserFavicon:{type:String,required:!0},hasUserFavicon:{type:Boolean,required:!0},isPluginsAdminEnabled:{type:Boolean,required:!0}},components:{Field:T["Field"],ContentBlock:r["ContentBlock"],SaveButton:T["SaveButton"]},directives:{Form:T["Form"]},data:function(){return{isLoading:!1,enabled:this.useCustomLogo,customLogo:this.pathUserLogo,customFavicon:this.pathUserFavicon,showUploadError:!1,currentLogoSrcExists:this.hasUserLogo,currentFaviconSrcExists:this.hasUserFavicon,currentLogoCacheBuster:(new Date).getTime(),currentFaviconCacheBuster:(new Date).getTime()}},computed:{tokenAuth:function(){return r["Matomo"].token_auth},logosNotWriteableWarning:function(){return Object(r["translate"])("CoreAdminHome_LogoNotWriteableInstruction","<code>".concat(this.pathUserLogoDirectory,"</code><br/>"),"".concat(this.pathUserLogo,", ").concat(this.pathUserLogoSmall,", ").concat(this.pathUserLogoSvg))},help:function(){if(this.isPluginsAdminEnabled){var e='"'.concat(Object(r["translate"])("General_GiveUsYourFeedback"),'"'),t='<a href="?module=CorePluginsAdmin&action=plugins" rel="noreferrer noopener" target="_blank">';return Object(r["translate"])("CoreAdminHome_CustomLogoFeedbackInfo",e,t,"</a>")}},pathUserLogoWithBuster:function(){return this.currentLogoSrcExists&&this.pathUserLogo?"".concat(this.pathUserLogo,"?").concat(this.currentLogoCacheBuster):""},pathUserFaviconWithBuster:function(){return this.currentFaviconSrcExists&&this.pathUserFavicon?"".concat(this.pathUserFavicon,"?").concat(this.currentFaviconCacheBuster):""}},methods:{onUseCustomLogoChange:function(e){this.enabled=e},onCustomLogoChange:function(e){this.customLogo=e,this.updateLogo()},onFaviconChange:function(e){this.customFavicon=e,this.updateLogo()},save:function(){var e=this;this.isLoading=!0,r["AjaxHelper"].post({module:"API",method:"CoreAdminHome.setBrandingSettings"},{useCustomLogo:this.enabled?"1":"0"}).then((function(){var e=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.isLoading=!1}))},updateLogo:function(){var e=this,t=!!this.customLogo,n=!!this.customFavicon;if(t||n){this.showUploadError=!1;var o="upload".concat((new Date).getTime()),a=z('<iframe name="'.concat(o,'" />'));a.css("display","none"),a.on("load",(function(){setTimeout((function(){var o=(z(a.contents()).find("body").html()||"").trim();"0"===o?e.showUploadError=!0:(t&&(e.currentLogoSrcExists=!0,e.currentLogoCacheBuster=(new Date).getTime()),n&&(e.currentFaviconSrcExists=!0,e.currentFaviconCacheBuster=(new Date).getTime())),"1"!==o&&"0"!==o||a.remove()}),1e3)})),z("body:first").append(a);var r=z(this.$refs.logoUploadForm);r.attr("target",o),r.submit(),this.customLogo="",this.customFavicon=""}}}});Q.render=$;var Y=Q,X=(Object(r["createAngularJsAdapter"])({component:Y,scope:{fileUploadEnabled:{angularJsBind:"<"},logosWriteable:{angularJsBind:"<"},useCustomLogo:{angularJsBind:"<"},pathUserLogoDirectory:{angularJsBind:"<"},pathUserLogo:{angularJsBind:"<"},pathUserLogoSmall:{angularJsBind:"<"},pathUserLogoSvg:{angularJsBind:"<"},hasUserLogo:{angularJsBind:"<"},pathUserFavicon:{angularJsBind:"<"},hasUserFavicon:{angularJsBind:"<"},isPluginsAdminEnabled:{angularJsBind:"<"}},directiveName:"matomoBrandingSettings"}),{id:"smtpSettings"});
+ */function $(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("SaveButton"),s=Object(i["resolveComponent"])("ContentBlock"),d=Object(i["resolveDirective"])("form");return Object(i["openBlock"])(),Object(i["createBlock"])(s,{"content-title":e.translate("CoreAdminHome_BrandingSettings"),anchor:"brandingSettings"},{default:Object(i["withCtx"])((function(){return[Object(i["withDirectives"])(Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("p",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_CustomLogoHelpText")),1),Object(i["createVNode"])(l,{name:"useCustomLogo",uicontrol:"checkbox","model-value":e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onUseCustomLogoChange(t)}),title:e.translate("CoreAdminHome_UseCustomLogo"),"inline-help":e.help},null,8,["model-value","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",w,[Object(i["createElementVNode"])("form",_,[e.fileUploadEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",H,[Object(i["createElementVNode"])("input",{type:"hidden",name:"token_auth",value:e.tokenAuth},null,8,D),B,e.logosWriteable?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",L,[Object(i["createVNode"])(i["Transition"],{name:"fade-out"},{default:Object(i["withCtx"])((function(){return[e.showUploadError?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",x,Object(i["toDisplayString"])(e.translate("CoreAdminHome_LogoUploadFailed")),1)):Object(i["createCommentVNode"])("",!0)]})),_:1}),Object(i["createVNode"])(l,{uicontrol:"file",name:"customLogo","model-value":e.customLogo,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.onCustomLogoChange(t)}),title:e.translate("CoreAdminHome_LogoUpload"),"inline-help":e.translate("CoreAdminHome_LogoUploadHelp","JPG / PNG / GIF","110")},null,8,["model-value","title","inline-help"]),Object(i["createElementVNode"])("div",U,[Object(i["createElementVNode"])("div",F,[Object(i["createElementVNode"])("img",{src:e.pathUserLogoWithBuster,id:"currentLogo",style:{"max-height":"150px"},ref:"currentLogo"},null,8,I)])]),Object(i["createVNode"])(l,{uicontrol:"file",name:"customFavicon","model-value":e.customFavicon,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.onFaviconChange(t)}),title:e.translate("CoreAdminHome_FaviconUpload"),"inline-help":e.translate("CoreAdminHome_LogoUploadHelp","JPG / PNG / GIF","16")},null,8,["model-value","title","inline-help"]),Object(i["createElementVNode"])("div",M,[Object(i["createElementVNode"])("div",G,[Object(i["createElementVNode"])("img",{src:e.pathUserFaviconWithBuster,id:"currentFavicon",width:"16",height:"16",ref:"currentFavicon"},null,8,P)])])])):Object(i["createCommentVNode"])("",!0),e.logosWriteable?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",J,[Object(i["createElementVNode"])("div",{class:"alert alert-warning",innerHTML:e.$sanitize(e.logosNotWriteableWarning)},null,8,q)]))])):Object(i["createCommentVNode"])("",!0),e.fileUploadEnabled?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",R,[Object(i["createElementVNode"])("div",W,Object(i["toDisplayString"])(e.translate("CoreAdminHome_FileUploadDisabled","file_uploads=1")),1)]))],512)],512),[[i["vShow"],e.enabled]]),Object(i["createVNode"])(c,{onConfirm:t[3]||(t[3]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])],512),[[d]])]})),_:1},8,["content-title"])}var K=window,z=K.$,Q=Object(i["defineComponent"])({props:{fileUploadEnabled:{type:Boolean,required:!0},logosWriteable:{type:Boolean,required:!0},useCustomLogo:{type:Boolean,required:!0},pathUserLogoDirectory:{type:String,required:!0},pathUserLogo:{type:String,required:!0},pathUserLogoSmall:{type:String,required:!0},pathUserLogoSvg:{type:String,required:!0},hasUserLogo:{type:Boolean,required:!0},pathUserFavicon:{type:String,required:!0},hasUserFavicon:{type:Boolean,required:!0},isPluginsAdminEnabled:{type:Boolean,required:!0}},components:{Field:T["Field"],ContentBlock:r["ContentBlock"],SaveButton:T["SaveButton"]},directives:{Form:T["Form"]},data:function(){return{isLoading:!1,enabled:this.useCustomLogo,customLogo:this.pathUserLogo,customFavicon:this.pathUserFavicon,showUploadError:!1,currentLogoSrcExists:this.hasUserLogo,currentFaviconSrcExists:this.hasUserFavicon,currentLogoCacheBuster:(new Date).getTime(),currentFaviconCacheBuster:(new Date).getTime()}},computed:{tokenAuth:function(){return r["Matomo"].token_auth},logosNotWriteableWarning:function(){return Object(r["translate"])("CoreAdminHome_LogoNotWriteableInstruction","<code>".concat(this.pathUserLogoDirectory,"</code><br/>"),"".concat(this.pathUserLogo,", ").concat(this.pathUserLogoSmall,", ").concat(this.pathUserLogoSvg))},help:function(){if(this.isPluginsAdminEnabled){var e='"'.concat(Object(r["translate"])("General_GiveUsYourFeedback"),'"'),t='<a href="?module=CorePluginsAdmin&action=plugins" rel="noreferrer noopener" target="_blank">';return Object(r["translate"])("CoreAdminHome_CustomLogoFeedbackInfo",e,t,"</a>")}},pathUserLogoWithBuster:function(){return this.currentLogoSrcExists&&this.pathUserLogo?"".concat(this.pathUserLogo,"?").concat(this.currentLogoCacheBuster):""},pathUserFaviconWithBuster:function(){return this.currentFaviconSrcExists&&this.pathUserFavicon?"".concat(this.pathUserFavicon,"?").concat(this.currentFaviconCacheBuster):""}},methods:{onUseCustomLogoChange:function(e){this.enabled=e},onCustomLogoChange:function(e){this.customLogo=e,this.updateLogo()},onFaviconChange:function(e){this.customFavicon=e,this.updateLogo()},save:function(){var e=this;this.isLoading=!0,r["AjaxHelper"].post({module:"API",method:"CoreAdminHome.setBrandingSettings"},{useCustomLogo:this.enabled?"1":"0"}).then((function(){var e=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.isLoading=!1}))},updateLogo:function(){var e=this,t=!!this.customLogo,n=!!this.customFavicon;if(t||n){this.showUploadError=!1;var o="upload".concat((new Date).getTime()),a=z('<iframe name="'.concat(o,'" />'));a.css("display","none"),a.on("load",(function(){setTimeout((function(){var o=(z(a.contents()).find("body").html()||"").trim();"0"===o?e.showUploadError=!0:(t&&(e.currentLogoSrcExists=!0,e.currentLogoCacheBuster=(new Date).getTime()),n&&(e.currentFaviconSrcExists=!0,e.currentFaviconCacheBuster=(new Date).getTime())),"1"!==o&&"0"!==o||a.remove()}),1e3)})),z("body:first").append(a);var r=z(this.$refs.logoUploadForm);r.attr("target",o),r.submit(),this.customLogo="",this.customFavicon=""}}}});Q.render=$;var Y=Q,X=(Object(r["createAngularJsAdapter"])({component:Y,scope:{fileUploadEnabled:{angularJsBind:"<"},logosWriteable:{angularJsBind:"<"},useCustomLogo:{angularJsBind:"<"},pathUserLogoDirectory:{angularJsBind:"<"},pathUserLogo:{angularJsBind:"<"},pathUserLogoSmall:{angularJsBind:"<"},pathUserLogoSvg:{angularJsBind:"<"},hasUserLogo:{angularJsBind:"<"},pathUserFavicon:{angularJsBind:"<"},hasUserFavicon:{angularJsBind:"<"},isPluginsAdminEnabled:{angularJsBind:"<"}},directiveName:"matomoBrandingSettings"}),{id:"smtpSettings"});
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Z(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("SaveButton"),s=Object(i["resolveComponent"])("ContentBlock"),d=Object(i["resolveDirective"])("form");return Object(i["openBlock"])(),Object(i["createBlock"])(s,{"content-title":e.translate("CoreAdminHome_EmailServerSettings"),anchor:"mailSettings"},{default:Object(i["withCtx"])((function(){return[Object(i["withDirectives"])(Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"mailUseSmtp",modelValue:e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.enabled=t}),title:e.translate("General_UseSMTPServerForEmail"),"inline-help":e.translate("General_SelectYesIfYouWantToSendEmailsViaServer")},null,8,["modelValue","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",X,[Object(i["createVNode"])(l,{uicontrol:"text",name:"mailHost","model-value":e.mailHost,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.onUpdateMailHost(t)}),title:e.translate("General_SmtpServerAddress")},null,8,["model-value","title"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailPort",modelValue:e.mailPort,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.mailPort=t}),title:e.translate("General_SmtpPort"),"inline-help":e.translate("General_OptionalSmtpPort")},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"select",name:"mailType",modelValue:e.mailType,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.mailType=t}),title:e.translate("General_AuthenticationMethodSmtp"),options:e.mailTypes,"inline-help":e.translate("General_OnlyUsedIfUserPwdIsSet")},null,8,["modelValue","title","options","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailUsername",modelValue:e.mailUsername,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.mailUsername=t}),title:e.translate("General_SmtpUsername"),"inline-help":e.translate("General_OnlyEnterIfRequired"),autocomplete:"off"},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"password",name:"mailPassword","model-value":e.mailPassword,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.onMailPasswordChange(t)}),onClick:t[6]||(t[6]=function(t){!e.passwordChanged&&t.target.select()}),title:e.translate("General_SmtpPassword"),"inline-help":e.passwordHelp,autocomplete:"off"},null,8,["model-value","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailFromAddress",modelValue:e.mailFromAddress,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.mailFromAddress=t}),title:e.translate("General_SmtpFromAddress"),"inline-help":e.translate("General_SmtpFromEmailHelp",e.mailHost),autocomplete:"off"},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailFromName",modelValue:e.mailFromName,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.mailFromName=t}),title:e.translate("General_SmtpFromName"),"inline-help":e.translate("General_NameShownInTheSenderColumn"),autocomplete:"off"},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"select",name:"mailEncryption",modelValue:e.mailEncryption,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.mailEncryption=t}),title:e.translate("General_SmtpEncryption"),options:e.mailEncryptions,"inline-help":e.translate("General_EncryptedSmtpTransport")},null,8,["modelValue","title","options","inline-help"])],512),[[i["vShow"],e.enabled]]),Object(i["createVNode"])(c,{onConfirm:t[10]||(t[10]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])],512),[[d]])]})),_:1},8,["content-title"])}var ee=Object(i["defineComponent"])({props:{mail:{type:Object,required:!0},mailTypes:{type:Object,required:!0},mailEncryptions:{type:Object,required:!0}},data:function(){var e=this.mail;return{isLoading:!1,enabled:"smtp"===e.transport,mailHost:e.host,passwordChanged:!1,mailPort:e.port,mailType:e.type,mailUsername:e.username,mailPassword:e.password?"******":"",mailFromAddress:e.noreply_email_address,mailFromName:e.noreply_email_name,mailEncryption:e.encryption}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"],SaveButton:T["SaveButton"]},directives:{Form:T["Form"]},computed:{passwordHelp:function(){var e="".concat(Object(r["translate"])("General_OnlyEnterIfRequiredPassword"),"<br/>"),t="".concat(Object(r["translate"])("General_WarningPasswordStored","<strong>","</strong>"),"<br/>");return"".concat(e,"\n").concat(t)}},methods:{onUpdateMailHost:function(e){this.mailHost=e,this.passwordChanged||(this.mailPassword="",this.passwordChanged=!0)},onMailPasswordChange:function(e){this.mailPassword=e,this.passwordChanged=!0},save:function(){var e=this;this.isLoading=!0;var t={mailUseSmtp:this.enabled?"1":"0",mailPort:this.mailPort,mailHost:this.mailHost,mailType:this.mailType,mailUsername:this.mailUsername,mailFromAddress:this.mailFromAddress,mailFromName:this.mailFromName,mailEncryption:this.mailEncryption};this.passwordChanged&&(t.mailPassword=this.mailPassword),r["AjaxHelper"].post({module:"CoreAdminHome",action:"setMailSettings"},t,{withTokenInUrl:!0}).then((function(){var e=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.isLoading=!1}))}}});ee.render=Z;var te=ee,ne=(Object(r["createAngularJsAdapter"])({component:te,scope:{mail:{angularJsBind:"<"},mailTypes:{angularJsBind:"<"},mailEncryptions:{angularJsBind:"<"}},directiveName:"matomoSmtpSettings"}),{id:"js-code-options"}),oe=Object(i["createElementVNode"])("br",null,null,-1),ae=Object(i["createElementVNode"])("br",null,null,-1),re=["innerHTML"],ie=["innerHTML"],le=Object(i["createElementVNode"])("br",null,null,-1),ce=Object(i["createElementVNode"])("br",null,null,-1),se=["innerHTML"],de=Object(i["createElementVNode"])("br",null,null,-1),ue=Object(i["createElementVNode"])("br",null,null,-1),me=["innerHTML"],ge=Object(i["createElementVNode"])("br",null,null,-1),pe=Object(i["createElementVNode"])("br",null,null,-1),be=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-wordpress/",target:"_blank",rel:"noopener"},"WordPress",-1),he=Object(i["createTextVNode"])(" | "),je=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-integrate-matomo-with-squarespace-website/",target:"_blank",rel:"noopener"},"Squarespace",-1),fe=Object(i["createTextVNode"])(" | "),ve=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-wix/",target:"_blank",rel:"noopener"},"Wix",-1),Oe=Object(i["createTextVNode"])(" | "),Ce=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/how-to-install/faq_19424/",target:"_blank",rel:"noopener"},"SharePoint",-1),ke=Object(i["createTextVNode"])(" | "),Ve=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-joomla/",target:"_blank",rel:"noopener"},"Joomla",-1),Se=Object(i["createTextVNode"])(" | "),Ne=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-my-shopify-store/",target:"_blank",rel:"noopener"},"Shopify",-1),ye=Object(i["createTextVNode"])(" | "),Te=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-use-matomo-analytics-within-gtm-google-tag-manager/",target:"_blank",rel:"noopener"},"Google Tag Manager",-1),Ae={id:"javascript-output-section"},Ee={class:"valign-wrapper trackingHelpHeader matchWidth"},we={id:"javascript-text"},_e=["textContent"],He={id:"optional-js-tracking-options"},De={id:"jsTrackAllSubdomainsInlineHelp",class:"inline-help-node"},Be=["innerHTML"],Le=["innerHTML"],xe={id:"jsTrackGroupByDomainInlineHelp",class:"inline-help-node"},Ue={id:"jsTrackAllAliasesInlineHelp",class:"inline-help-node"},Fe={id:"javascript-advanced-options"},Ie={id:"javascript-tracking-visitor-cv"},Ge={class:"row"},Pe={class:"col s12 m3"},Me={class:"col s12 m3"},Je={class:"col s12 m6 l3"},qe=["onKeydown"],Re={class:"col s12 m6 l3"},We=["onKeydown"],$e={class:"row"},Ke={class:"col s12"},ze=Object(i["createElementVNode"])("span",{class:"icon-add"},null,-1),Qe={id:"jsCrossDomain",class:"inline-help-node"},Ye=Object(i["createElementVNode"])("br",null,null,-1),Xe={id:"jsDoNotTrackInlineHelp",class:"inline-help-node"},Ze={key:0},et=Object(i["createElementVNode"])("br",null,null,-1),tt=["innerHTML"],nt={id:"js-campaign-query-param-extra"},ot={class:"row"},at={class:"col s12"},rt={class:"row"},it={class:"col s12"};
+ */function Z(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("SaveButton"),s=Object(i["resolveComponent"])("ContentBlock"),d=Object(i["resolveDirective"])("form");return Object(i["openBlock"])(),Object(i["createBlock"])(s,{"content-title":e.translate("CoreAdminHome_EmailServerSettings"),anchor:"mailSettings"},{default:Object(i["withCtx"])((function(){return[Object(i["withDirectives"])(Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"mailUseSmtp",modelValue:e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.enabled=t}),title:e.translate("General_UseSMTPServerForEmail"),"inline-help":e.translate("General_SelectYesIfYouWantToSendEmailsViaServer")},null,8,["modelValue","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",X,[Object(i["createVNode"])(l,{uicontrol:"text",name:"mailHost","model-value":e.mailHost,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.onUpdateMailHost(t)}),title:e.translate("General_SmtpServerAddress")},null,8,["model-value","title"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailPort",modelValue:e.mailPort,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.mailPort=t}),title:e.translate("General_SmtpPort"),"inline-help":e.translate("General_OptionalSmtpPort")},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"select",name:"mailType",modelValue:e.mailType,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.mailType=t}),title:e.translate("General_AuthenticationMethodSmtp"),options:e.mailTypes,"inline-help":e.translate("General_OnlyUsedIfUserPwdIsSet")},null,8,["modelValue","title","options","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailUsername",modelValue:e.mailUsername,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.mailUsername=t}),title:e.translate("General_SmtpUsername"),"inline-help":e.translate("General_OnlyEnterIfRequired"),autocomplete:"off"},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"password",name:"mailPassword","model-value":e.mailPassword,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.onMailPasswordChange(t)}),onClick:t[6]||(t[6]=function(t){!e.passwordChanged&&t.target.select()}),title:e.translate("General_SmtpPassword"),"inline-help":e.passwordHelp,autocomplete:"off"},null,8,["model-value","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailFromAddress",modelValue:e.mailFromAddress,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.mailFromAddress=t}),title:e.translate("General_SmtpFromAddress"),"inline-help":e.translate("General_SmtpFromEmailHelp",e.mailHost),autocomplete:"off"},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailFromName",modelValue:e.mailFromName,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.mailFromName=t}),title:e.translate("General_SmtpFromName"),"inline-help":e.translate("General_NameShownInTheSenderColumn"),autocomplete:"off"},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"select",name:"mailEncryption",modelValue:e.mailEncryption,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.mailEncryption=t}),title:e.translate("General_SmtpEncryption"),options:e.mailEncryptions,"inline-help":e.translate("General_EncryptedSmtpTransport")},null,8,["modelValue","title","options","inline-help"])],512),[[i["vShow"],e.enabled]]),Object(i["createVNode"])(c,{onConfirm:t[10]||(t[10]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])],512),[[d]])]})),_:1},8,["content-title"])}var ee=Object(i["defineComponent"])({props:{mail:{type:Object,required:!0},mailTypes:{type:Object,required:!0},mailEncryptions:{type:Object,required:!0}},data:function(){var e=this.mail;return{isLoading:!1,enabled:"smtp"===e.transport,mailHost:e.host,passwordChanged:!1,mailPort:e.port,mailType:e.type,mailUsername:e.username,mailPassword:e.password?"******":"",mailFromAddress:e.noreply_email_address,mailFromName:e.noreply_email_name,mailEncryption:e.encryption}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"],SaveButton:T["SaveButton"]},directives:{Form:T["Form"]},computed:{passwordHelp:function(){var e="".concat(Object(r["translate"])("General_OnlyEnterIfRequiredPassword"),"<br/>"),t="".concat(Object(r["translate"])("General_WarningPasswordStored","<strong>","</strong>"),"<br/>");return"".concat(e,"\n").concat(t)}},methods:{onUpdateMailHost:function(e){this.mailHost=e,this.passwordChanged||(this.mailPassword="",this.passwordChanged=!0)},onMailPasswordChange:function(e){this.mailPassword=e,this.passwordChanged=!0},save:function(){var e=this;this.isLoading=!0;var t={mailUseSmtp:this.enabled?"1":"0",mailPort:this.mailPort,mailHost:this.mailHost,mailType:this.mailType,mailUsername:this.mailUsername,mailFromAddress:this.mailFromAddress,mailFromName:this.mailFromName,mailEncryption:this.mailEncryption};this.passwordChanged&&(t.mailPassword=this.mailPassword),r["AjaxHelper"].post({module:"CoreAdminHome",action:"setMailSettings"},t,{withTokenInUrl:!0}).then((function(){var e=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.isLoading=!1}))}}});ee.render=Z;var te=ee,ne=(Object(r["createAngularJsAdapter"])({component:te,scope:{mail:{angularJsBind:"<"},mailTypes:{angularJsBind:"<"},mailEncryptions:{angularJsBind:"<"}},directiveName:"matomoSmtpSettings"}),{id:"js-code-options"}),oe=Object(i["createElementVNode"])("br",null,null,-1),ae=Object(i["createElementVNode"])("br",null,null,-1),re=["innerHTML"],ie=["innerHTML"],le=Object(i["createElementVNode"])("br",null,null,-1),ce=Object(i["createElementVNode"])("br",null,null,-1),se=["innerHTML"],de=Object(i["createElementVNode"])("br",null,null,-1),ue=Object(i["createElementVNode"])("br",null,null,-1),me=["innerHTML"],ge=Object(i["createElementVNode"])("br",null,null,-1),pe=Object(i["createElementVNode"])("br",null,null,-1),be=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-wordpress/",target:"_blank",rel:"noopener"},"WordPress",-1),he=Object(i["createTextVNode"])(" | "),je=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-integrate-matomo-with-squarespace-website/",target:"_blank",rel:"noopener"},"Squarespace",-1),fe=Object(i["createTextVNode"])(" | "),ve=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-wix/",target:"_blank",rel:"noopener"},"Wix",-1),Oe=Object(i["createTextVNode"])(" | "),Ce=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/how-to-install/faq_19424/",target:"_blank",rel:"noopener"},"SharePoint",-1),ke=Object(i["createTextVNode"])(" | "),Ve=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-joomla/",target:"_blank",rel:"noopener"},"Joomla",-1),Se=Object(i["createTextVNode"])(" | "),Ne=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-my-shopify-store/",target:"_blank",rel:"noopener"},"Shopify",-1),ye=Object(i["createTextVNode"])(" | "),Te=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-use-matomo-analytics-within-gtm-google-tag-manager/",target:"_blank",rel:"noopener"},"Google Tag Manager",-1),Ae={id:"javascript-output-section"},Ee={class:"valign-wrapper trackingHelpHeader matchWidth"},we={id:"javascript-email-button"},_e={id:"javascript-text"},He=["textContent"],De={id:"optional-js-tracking-options"},Be={id:"jsTrackAllSubdomainsInlineHelp",class:"inline-help-node"},Le=["innerHTML"],xe=["innerHTML"],Ue={id:"jsTrackGroupByDomainInlineHelp",class:"inline-help-node"},Fe={id:"jsTrackAllAliasesInlineHelp",class:"inline-help-node"},Ie={id:"javascript-advanced-options"},Me={id:"javascript-tracking-visitor-cv"},Ge={class:"row"},Pe={class:"col s12 m3"},Je={class:"col s12 m3"},qe={class:"col s12 m6 l3"},Re=["onKeydown"],We={class:"col s12 m6 l3"},$e=["onKeydown"],Ke={class:"row"},ze={class:"col s12"},Qe=Object(i["createElementVNode"])("span",{class:"icon-add"},null,-1),Ye={id:"jsCrossDomain",class:"inline-help-node"},Xe=Object(i["createElementVNode"])("br",null,null,-1),Ze={id:"jsDoNotTrackInlineHelp",class:"inline-help-node"},et={key:0},tt=Object(i["createElementVNode"])("br",null,null,-1),nt=["innerHTML"],ot={id:"js-campaign-query-param-extra"},at={class:"row"},rt={class:"col s12"},it={class:"row"},lt={class:"col s12"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function lt(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("ContentBlock"),s=Object(i["resolveDirective"])("select-on-focus");return Object(i["openBlock"])(),Object(i["createBlock"])(c,{anchor:"javaScriptTracking","content-title":e.translate("CoreAdminHome_JavaScriptTracking")},{default:Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("div",ne,[Object(i["createElementVNode"])("p",null,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTrackingIntro1"))+" ",1),oe,ae,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTrackingIntro2"))+" ",1),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.jsTrackingIntro3a)},null,8,re),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(" "+e.jsTrackingIntro3b)},null,8,ie),le,ce,Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.jsTrackingIntro4a)},null,8,se),de,ue,Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.jsTrackingIntro5)},null,8,me),ge,pe,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("SitesManager_InstallationGuides"))+" : ",1),be,he,je,fe,ve,Oe,Ce,ke,Ve,Se,Ne,ye,Te]),Object(i["createVNode"])(l,{uicontrol:"site",name:"js-tracker-website",class:"jsTrackingCodeWebsite",modelValue:e.site,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.site=t}),introduction:e.translate("General_Website")},null,8,["modelValue","introduction"]),Object(i["createElementVNode"])("div",Ae,[Object(i["createElementVNode"])("div",Ee,[Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("General_JsTrackingTag")),1),Object(i["createElementVNode"])("p",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CodeNoteBeforeClosingHead","</head>")),1)]),Object(i["createElementVNode"])("button",{class:"btn",id:"emailJsBtn",onClick:t[1]||(t[1]=function(t){return e.sendEmail()})},Object(i["toDisplayString"])(e.translate("SitesManager_EmailInstructionsButton")),1)]),Object(i["createElementVNode"])("div",we,[Object(i["withDirectives"])(Object(i["createElementVNode"])("pre",{class:"codeblock",textContent:Object(i["toDisplayString"])(e.trackingCode),ref:"trackingCode"},null,8,_e),[[s,{}]])])]),Object(i["createElementVNode"])("div",He,[Object(i["createElementVNode"])("div",De,[Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.mergeSubdomainsDesc)},null,8,Be),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.learnMoreText)},null,8,Le)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-all-subdomains","model-value":e.trackAllSubdomains,"onUpdate:modelValue":t[2]||(t[2]=function(t){e.trackAllSubdomains=t,e.updateTrackingCode()}),disabled:e.isLoading,introduction:e.translate("General_Options"),title:"".concat(e.translate("CoreAdminHome_JSTracking_MergeSubdomains")," ").concat(e.currentSiteName),"inline-help":"#jsTrackAllSubdomainsInlineHelp"},null,8,["model-value","disabled","introduction","title"])]),Object(i["createElementVNode"])("div",xe,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_GroupPageTitlesByDomainDesc1",e.currentSiteHost)),1),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-group-by-domain","model-value":e.groupByDomain,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.groupByDomain=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_GroupPageTitlesByDomain"),"inline-help":"#jsTrackGroupByDomainInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("div",Ue,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_MergeAliasesDesc",e.currentSiteAlias)),1),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-all-aliases","model-value":e.trackAllAliases,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.trackAllAliases=t,e.updateTrackingCode()}),disabled:e.isLoading,title:"".concat(e.translate("CoreAdminHome_JSTracking_MergeAliases")," ").concat(e.currentSiteName),"inline-help":"#jsTrackAllAliasesInlineHelp"},null,8,["model-value","disabled","title"])]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-noscript","model-value":e.trackNoScript,"onUpdate:modelValue":t[5]||(t[5]=function(t){e.trackNoScript=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_TrackNoScript")},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("Mobile_Advanced")),1),Object(i["createElementVNode"])("p",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[6]||(t[6]=Object(i["withModifiers"])((function(t){return e.showAdvanced=!0}),["prevent"]))},Object(i["toDisplayString"])(e.translate("General_Show")),513),[[i["vShow"],!e.showAdvanced]]),Object(i["withDirectives"])(Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[7]||(t[7]=Object(i["withModifiers"])((function(t){return e.showAdvanced=!1}),["prevent"]))},Object(i["toDisplayString"])(e.translate("General_Hide")),513),[[i["vShow"],e.showAdvanced]])]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Fe,[Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-visitor-cv-check","model-value":e.trackCustomVars,"onUpdate:modelValue":t[8]||(t[8]=function(t){e.trackCustomVars=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_VisitorCustomVars"),"inline-help":e.translate("CoreAdminHome_JSTracking_VisitorCustomVarsDesc")},null,8,["model-value","disabled","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Ie,[Object(i["createElementVNode"])("div",Ge,[Object(i["createElementVNode"])("div",Pe,Object(i["toDisplayString"])(e.translate("General_Name")),1),Object(i["createElementVNode"])("div",Me,Object(i["toDisplayString"])(e.translate("General_Value")),1)]),(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.customVars,(function(t,n){return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",{class:"row",key:n},[Object(i["createElementVNode"])("div",Je,[Object(i["createElementVNode"])("input",{type:"text",class:"custom-variable-name",onKeydown:function(t){return e.onCustomVarNameKeydown(t,n)},placeholder:"e.g. Type"},null,40,qe)]),Object(i["createElementVNode"])("div",Re,[Object(i["createElementVNode"])("input",{type:"text",class:"custom-variable-value",onKeydown:function(t){return e.onCustomVarValueKeydown(t,n)},placeholder:"e.g. Customer"},null,40,We)])])})),128)),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",$e,[Object(i["createElementVNode"])("div",Ke,[Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[9]||(t[9]=function(t){return e.addCustomVar()}),class:"add-custom-variable"},[ze,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_Add")),1)])])],512),[[i["vShow"],e.canAddMoreCustomVariables]])],512),[[i["vShow"],e.trackCustomVars]]),Object(i["createElementVNode"])("div",Qe,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CrossDomain"))+" ",1),Ye,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CrossDomain_NeedsMultipleDomains")),1)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-cross-domain","model-value":e.crossDomain,"onUpdate:modelValue":t[10]||(t[10]=function(t){e.crossDomain=t,e.updateTrackingCode(),e.onCrossDomainToggle()}),disabled:e.isLoading||!e.hasManySiteUrls,title:e.translate("CoreAdminHome_JSTracking_EnableCrossDomainLinking"),"inline-help":"#jsCrossDomain"},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("div",Xe,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_EnableDoNotTrackDesc"))+" ",1),e.serverSideDoNotTrackEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("span",Ze,[et,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_EnableDoNotTrack_AlreadyEnabled")),1)])):Object(i["createCommentVNode"])("",!0)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-do-not-track","model-value":e.doNotTrack,"onUpdate:modelValue":t[11]||(t[11]=function(t){e.doNotTrack=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_EnableDoNotTrack"),"inline-help":"#jsDoNotTrackInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-disable-cookies","model-value":e.disableCookies,"onUpdate:modelValue":t[12]||(t[12]=function(t){e.disableCookies=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_DisableCookies"),"inline-help":e.translate("CoreAdminHome_JSTracking_DisableCookiesDesc")},null,8,["model-value","disabled","title","inline-help"]),Object(i["createElementVNode"])("div",{id:"jsTrackCampaignParamsInlineHelp",class:"inline-help-node",innerHTML:e.$sanitize(e.jsTrackCampaignParamsInlineHelp)},null,8,tt),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"custom-campaign-query-params-check","model-value":e.useCustomCampaignParams,"onUpdate:modelValue":t[13]||(t[13]=function(t){e.useCustomCampaignParams=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CustomCampaignQueryParam"),"inline-help":"#jsTrackCampaignParamsInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",nt,[Object(i["createElementVNode"])("div",ot,[Object(i["createElementVNode"])("div",at,[Object(i["createVNode"])(l,{uicontrol:"text",name:"custom-campaign-name-query-param","model-value":e.customCampaignName,"onUpdate:modelValue":t[14]||(t[14]=function(t){e.customCampaignName=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CampaignNameParam")},null,8,["model-value","disabled","title"])])]),Object(i["createElementVNode"])("div",rt,[Object(i["createElementVNode"])("div",it,[Object(i["createVNode"])(l,{uicontrol:"text",name:"custom-campaign-keyword-query-param","model-value":e.customCampaignKeyword,"onUpdate:modelValue":t[15]||(t[15]=function(t){e.customCampaignKeyword=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CampaignKwdParam")},null,8,["model-value","disabled","title"])])])],512),[[i["vShow"],e.useCustomCampaignParams]])],512),[[i["vShow"],e.showAdvanced]])]})),_:1},8,["content-title"])}function ct(e){var t=new URL(e);return t.hostname}function st(e){return e.map((function(e){return[e.name,e.value]}))}var dt=window,ut=dt.$,mt=window.location.host,gt=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")),pt=Object(i["defineComponent"])({props:{defaultSite:{type:Object,required:!0},maxCustomVariables:Number,serverSideDoNotTrackEnabled:Boolean},data:function(){return{showAdvanced:!1,site:this.defaultSite,trackingCode:"",trackAllSubdomains:!1,isLoading:!1,siteUrls:{},siteExcludedQueryParams:{},siteExcludedReferrers:{},crossDomain:!1,groupByDomain:!1,trackAllAliases:!1,trackNoScript:!1,trackCustomVars:!1,customVars:[],canAddMoreCustomVariables:!!this.maxCustomVariables&&this.maxCustomVariables>0,doNotTrack:!1,disableCookies:!1,useCustomCampaignParams:!1,customCampaignName:"",customCampaignKeyword:"",trackingCodeAbortController:null,isHighlighting:!1}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"]},directives:{SelectOnFocus:r["SelectOnFocus"]},created:function(){this.onCustomVarNameKeydown=Object(r["debounce"])(this.onCustomVarNameKeydown,100),this.onCustomVarValueKeydown=Object(r["debounce"])(this.onCustomVarValueKeydown,100),this.addCustomVar(),this.site&&this.site.id&&this.onSiteChanged(this.site)},watch:{site:function(e){this.onSiteChanged(e)}},methods:{onSiteChanged:function(e){var t=this,n=e.id,o=[];this.siteUrls[n]||(this.isLoading=!0,o.push(r["AjaxHelper"].fetch({module:"API",method:"SitesManager.getSiteUrlsFromId",idSite:n,filter_limit:"-1"}).then((function(e){t.siteUrls[n]=e||[]})))),this.siteExcludedQueryParams[n]||(this.isLoading=!0,o.push(r["AjaxHelper"].fetch({module:"API",method:"Overlay.getExcludedQueryParameters",idSite:n,filter_limit:"-1"}).then((function(e){t.siteExcludedQueryParams[n]=e||[]})))),this.siteExcludedReferrers[n]||(this.isLoading=!0,o.push(r["AjaxHelper"].fetch({module:"API",method:"SitesManager.getExcludedReferrers",idSite:n,filter_limit:"-1"}).then((function(e){t.siteExcludedReferrers[n]=[],Object.values(e||[]).forEach((function(e){t.siteExcludedReferrers[n].push(e.replace(/^https?:\/\//,""))}))})))),Promise.all(o).then((function(){t.isLoading=!1,t.updateCurrentSiteInfo(),t.updateTrackingCode()}))},sendEmail:function(){var e=Object(r["translate"])("SitesManager_EmailInstructionsSubject");e=encodeURIComponent(e);var t=this.trackingCode;t=t.replace(/<[^>]+>/g,"");var n="".concat(Object(r["translate"])("SitesManager_JsTrackingTagHelp"),". ").concat(Object(r["translate"])("CoreAdminHome_JSTracking_CodeNoteBeforeClosingHeadEmail","'head"),"\n").concat(t);n=encodeURIComponent(n);var o="mailto:?subject=".concat(e,"&body=").concat(n);window.location.href=o},onCrossDomainToggle:function(){this.crossDomain&&(this.trackAllAliases=!0)},updateTrackingCode:function(){var e=this,t=this.site,n={piwikUrl:"".concat(mt).concat(gt),groupPageTitlesByDomain:this.groupByDomain?1:0,mergeSubdomains:this.trackAllSubdomains?1:0,mergeAliasUrls:this.trackAllAliases?1:0,visitorCustomVariables:this.trackCustomVars?st(this.customVars):0,customCampaignNameQueryParam:null,customCampaignKeywordParam:null,doNotTrack:this.doNotTrack?1:0,disableCookies:this.disableCookies?1:0,crossDomain:this.crossDomain?1:0,trackNoScript:this.trackNoScript?1:0,forceMatomoEndpoint:1};this.siteExcludedQueryParams[t.id]&&(n.excludedQueryParams=this.siteExcludedQueryParams[t.id]),this.siteExcludedReferrers[t.id]&&(n.excludedReferrers=this.siteExcludedReferrers[t.id]),this.useCustomCampaignParams&&(n.customCampaignNameQueryParam=this.customCampaignName,n.customCampaignKeywordParam=this.customCampaignKeyword),this.trackingCodeAbortController&&(this.trackingCodeAbortController.abort(),this.trackingCodeAbortController=null),this.trackingCodeAbortController=new AbortController,r["AjaxHelper"].post({module:"API",format:"json",method:"SitesManager.getJavascriptTag",idSite:t.id},n,{abortController:this.trackingCodeAbortController}).then((function(t){e.trackingCodeAbortController=null,e.trackingCode=t.value;var n=ut(e.$refs.trackingCode);n&&!e.isHighlighting&&(e.isHighlighting=!0,n.effect("highlight",{complete:function(){e.isHighlighting=!1}},1500))}))},updateCurrentSiteInfo:function(){this.hasManySiteUrls||(this.crossDomain=!1)},addCustomVar:function(){this.canAddMoreCustomVariables&&this.customVars.push({name:"",value:""}),this.canAddMoreCustomVariables=!!this.maxCustomVariables&&this.maxCustomVariables>this.customVars.length},onCustomVarNameKeydown:function(e,t){var n=this;setTimeout((function(){n.customVars[t].name=e.target.value,n.updateTrackingCode()}))},onCustomVarValueKeydown:function(e,t){var n=this;setTimeout((function(){n.customVars[t].value=e.target.value,n.updateTrackingCode()}))}},computed:{hasManySiteUrls:function(){var e=this.site;return this.siteUrls[e.id]&&this.siteUrls[e.id].length>1},currentSiteHost:function(){var e,t=null===(e=this.siteUrls[this.site.id])||void 0===e?void 0:e[0];return t?ct(t):""},currentSiteAlias:function(){var e,t="x.".concat(this.currentSiteHost),n=null===(e=this.siteUrls[this.site.id])||void 0===e?void 0:e[1];return n||t},currentSiteName:function(){return r["Matomo"].helper.htmlEntities(this.site.name)},jsTrackingIntro3a:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro3a",'<a href="https://matomo.org/integrate/" rel="noreferrer noopener" target="_blank">',"</a>")},jsTrackingIntro3b:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro3b")},jsTrackingIntro4a:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro4",'<a href="#image-tracking-link">',"</a>")},jsTrackingIntro5:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro5",'<a rel="noreferrer noopener" target="_blank" href="https://developer.matomo.org/guides/tracking-javascript-guide">',"</a>")},mergeSubdomainsDesc:function(){return Object(r["translate"])("CoreAdminHome_JSTracking_MergeSubdomainsDesc","x.".concat(this.currentSiteHost),"y.".concat(this.currentSiteHost))},learnMoreText:function(){var e="https://developer.matomo.org/guides/tracking-javascript-guide#measuring-domains-andor-sub-domains";return Object(r["translate"])("General_LearnMore",' (<a href="'.concat(e,'" rel="noreferrer noopener" target="_blank">'),"</a>)")},jsTrackCampaignParamsInlineHelp:function(){return Object(r["translate"])("CoreAdminHome_JSTracking_CustomCampaignQueryParamDesc",'<a href="https://matomo.org/faq/general/faq_119" rel="noreferrer noopener" target="_blank">',"</a>")}}});pt.render=lt;var bt=pt,ht=(Object(r["createAngularJsAdapter"])({component:bt,scope:{defaultSite:{angularJsBind:"<"},maxCustomVariables:{angularJsBind:"<"},serverSideDoNotTrackEnabled:{angularJsBind:"<"}},directiveName:"matomoJsTrackingCodeGenerator"}),Object(i["createElementVNode"])("a",{name:"image-tracking-link"},null,-1)),jt={id:"image-tracking-code-options"},ft=["innerHTML"],vt=["innerHTML"],Ot={id:"image-tracking-goal-sub"},Ct={class:"row"},kt={class:"col s12 m6"},Vt={class:"col s12 m6"},St={id:"image-link-output-section"},Nt={id:"image-tracking-text"},yt=["textContent"];
+ */function ct(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("ContentBlock"),s=Object(i["resolveDirective"])("select-on-focus");return Object(i["openBlock"])(),Object(i["createBlock"])(c,{anchor:"javaScriptTracking","content-title":e.translate("CoreAdminHome_JavaScriptTracking")},{default:Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("div",ne,[Object(i["createElementVNode"])("p",null,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTrackingIntro1"))+" ",1),oe,ae,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTrackingIntro2"))+" ",1),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.jsTrackingIntro3a)},null,8,re),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(" "+e.jsTrackingIntro3b)},null,8,ie),le,ce,Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.jsTrackingIntro4a)},null,8,se),de,ue,Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.jsTrackingIntro5)},null,8,me),ge,pe,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("SitesManager_InstallationGuides"))+" : ",1),be,he,je,fe,ve,Oe,Ce,ke,Ve,Se,Ne,ye,Te]),Object(i["createVNode"])(l,{uicontrol:"site",name:"js-tracker-website",class:"jsTrackingCodeWebsite",modelValue:e.site,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.site=t}),introduction:e.translate("General_Website")},null,8,["modelValue","introduction"]),Object(i["createElementVNode"])("div",Ae,[Object(i["createElementVNode"])("div",Ee,[Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("General_JsTrackingTag")),1),Object(i["createElementVNode"])("p",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CodeNoteBeforeClosingHead","</head>")),1)]),Object(i["createElementVNode"])("div",we,[Object(i["createElementVNode"])("button",{class:"btn",id:"emailJsBtn",onClick:t[1]||(t[1]=function(t){return e.sendEmail()})},Object(i["toDisplayString"])(e.translate("SitesManager_EmailInstructionsButton")),1)])]),Object(i["createElementVNode"])("div",_e,[Object(i["withDirectives"])(Object(i["createElementVNode"])("pre",{class:"codeblock",textContent:Object(i["toDisplayString"])(e.trackingCode),ref:"trackingCode"},null,8,He),[[s,{}]])])]),Object(i["createElementVNode"])("div",De,[Object(i["createElementVNode"])("div",Be,[Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.mergeSubdomainsDesc)},null,8,Le),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.learnMoreText)},null,8,xe)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-all-subdomains","model-value":e.trackAllSubdomains,"onUpdate:modelValue":t[2]||(t[2]=function(t){e.trackAllSubdomains=t,e.updateTrackingCode()}),disabled:e.isLoading,introduction:e.translate("General_Options"),title:"".concat(e.translate("CoreAdminHome_JSTracking_MergeSubdomains")," ").concat(e.currentSiteName),"inline-help":"#jsTrackAllSubdomainsInlineHelp"},null,8,["model-value","disabled","introduction","title"])]),Object(i["createElementVNode"])("div",Ue,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_GroupPageTitlesByDomainDesc1",e.currentSiteHost)),1),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-group-by-domain","model-value":e.groupByDomain,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.groupByDomain=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_GroupPageTitlesByDomain"),"inline-help":"#jsTrackGroupByDomainInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("div",Fe,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_MergeAliasesDesc",e.currentSiteAlias)),1),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-all-aliases","model-value":e.trackAllAliases,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.trackAllAliases=t,e.updateTrackingCode()}),disabled:e.isLoading,title:"".concat(e.translate("CoreAdminHome_JSTracking_MergeAliases")," ").concat(e.currentSiteName),"inline-help":"#jsTrackAllAliasesInlineHelp"},null,8,["model-value","disabled","title"])]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-noscript","model-value":e.trackNoScript,"onUpdate:modelValue":t[5]||(t[5]=function(t){e.trackNoScript=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_TrackNoScript")},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("Mobile_Advanced")),1),Object(i["createElementVNode"])("p",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[6]||(t[6]=Object(i["withModifiers"])((function(t){return e.showAdvanced=!0}),["prevent"]))},Object(i["toDisplayString"])(e.translate("General_Show")),513),[[i["vShow"],!e.showAdvanced]]),Object(i["withDirectives"])(Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[7]||(t[7]=Object(i["withModifiers"])((function(t){return e.showAdvanced=!1}),["prevent"]))},Object(i["toDisplayString"])(e.translate("General_Hide")),513),[[i["vShow"],e.showAdvanced]])]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Ie,[Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-visitor-cv-check","model-value":e.trackCustomVars,"onUpdate:modelValue":t[8]||(t[8]=function(t){e.trackCustomVars=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_VisitorCustomVars"),"inline-help":e.translate("CoreAdminHome_JSTracking_VisitorCustomVarsDesc")},null,8,["model-value","disabled","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Me,[Object(i["createElementVNode"])("div",Ge,[Object(i["createElementVNode"])("div",Pe,Object(i["toDisplayString"])(e.translate("General_Name")),1),Object(i["createElementVNode"])("div",Je,Object(i["toDisplayString"])(e.translate("General_Value")),1)]),(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.customVars,(function(t,n){return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",{class:"row",key:n},[Object(i["createElementVNode"])("div",qe,[Object(i["createElementVNode"])("input",{type:"text",class:"custom-variable-name",onKeydown:function(t){return e.onCustomVarNameKeydown(t,n)},placeholder:"e.g. Type"},null,40,Re)]),Object(i["createElementVNode"])("div",We,[Object(i["createElementVNode"])("input",{type:"text",class:"custom-variable-value",onKeydown:function(t){return e.onCustomVarValueKeydown(t,n)},placeholder:"e.g. Customer"},null,40,$e)])])})),128)),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Ke,[Object(i["createElementVNode"])("div",ze,[Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[9]||(t[9]=function(t){return e.addCustomVar()}),class:"add-custom-variable"},[Qe,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_Add")),1)])])],512),[[i["vShow"],e.canAddMoreCustomVariables]])],512),[[i["vShow"],e.trackCustomVars]]),Object(i["createElementVNode"])("div",Ye,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CrossDomain"))+" ",1),Xe,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CrossDomain_NeedsMultipleDomains")),1)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-cross-domain","model-value":e.crossDomain,"onUpdate:modelValue":t[10]||(t[10]=function(t){e.crossDomain=t,e.updateTrackingCode(),e.onCrossDomainToggle()}),disabled:e.isLoading||!e.hasManySiteUrls,title:e.translate("CoreAdminHome_JSTracking_EnableCrossDomainLinking"),"inline-help":"#jsCrossDomain"},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("div",Ze,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_EnableDoNotTrackDesc"))+" ",1),e.serverSideDoNotTrackEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("span",et,[tt,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_EnableDoNotTrack_AlreadyEnabled")),1)])):Object(i["createCommentVNode"])("",!0)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-do-not-track","model-value":e.doNotTrack,"onUpdate:modelValue":t[11]||(t[11]=function(t){e.doNotTrack=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_EnableDoNotTrack"),"inline-help":"#jsDoNotTrackInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-disable-cookies","model-value":e.disableCookies,"onUpdate:modelValue":t[12]||(t[12]=function(t){e.disableCookies=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_DisableCookies"),"inline-help":e.translate("CoreAdminHome_JSTracking_DisableCookiesDesc")},null,8,["model-value","disabled","title","inline-help"]),Object(i["createElementVNode"])("div",{id:"jsTrackCampaignParamsInlineHelp",class:"inline-help-node",innerHTML:e.$sanitize(e.jsTrackCampaignParamsInlineHelp)},null,8,nt),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"custom-campaign-query-params-check","model-value":e.useCustomCampaignParams,"onUpdate:modelValue":t[13]||(t[13]=function(t){e.useCustomCampaignParams=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CustomCampaignQueryParam"),"inline-help":"#jsTrackCampaignParamsInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",ot,[Object(i["createElementVNode"])("div",at,[Object(i["createElementVNode"])("div",rt,[Object(i["createVNode"])(l,{uicontrol:"text",name:"custom-campaign-name-query-param","model-value":e.customCampaignName,"onUpdate:modelValue":t[14]||(t[14]=function(t){e.customCampaignName=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CampaignNameParam")},null,8,["model-value","disabled","title"])])]),Object(i["createElementVNode"])("div",it,[Object(i["createElementVNode"])("div",lt,[Object(i["createVNode"])(l,{uicontrol:"text",name:"custom-campaign-keyword-query-param","model-value":e.customCampaignKeyword,"onUpdate:modelValue":t[15]||(t[15]=function(t){e.customCampaignKeyword=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CampaignKwdParam")},null,8,["model-value","disabled","title"])])])],512),[[i["vShow"],e.useCustomCampaignParams]])],512),[[i["vShow"],e.showAdvanced]])]})),_:1},8,["content-title"])}function st(e){var t=new URL(e);return t.hostname}function dt(e){return e.map((function(e){return[e.name,e.value]}))}var ut=window,mt=ut.$,gt=window.location.host,pt=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")),bt=Object(i["defineComponent"])({props:{defaultSite:{type:Object,required:!0},maxCustomVariables:Number,serverSideDoNotTrackEnabled:Boolean},data:function(){return{showAdvanced:!1,site:this.defaultSite,trackingCode:"",trackAllSubdomains:!1,isLoading:!1,siteUrls:{},siteExcludedQueryParams:{},siteExcludedReferrers:{},crossDomain:!1,groupByDomain:!1,trackAllAliases:!1,trackNoScript:!1,trackCustomVars:!1,customVars:[],canAddMoreCustomVariables:!!this.maxCustomVariables&&this.maxCustomVariables>0,doNotTrack:!1,disableCookies:!1,useCustomCampaignParams:!1,customCampaignName:"",customCampaignKeyword:"",trackingCodeAbortController:null,isHighlighting:!1,consentManagerName:"",consentManagerUrl:"",consentManagerIsConnected:!1}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"]},directives:{SelectOnFocus:r["SelectOnFocus"]},created:function(){this.onCustomVarNameKeydown=Object(r["debounce"])(this.onCustomVarNameKeydown,100),this.onCustomVarValueKeydown=Object(r["debounce"])(this.onCustomVarValueKeydown,100),this.addCustomVar(),this.site&&this.site.id&&this.onSiteChanged(this.site)},watch:{site:function(e){this.onSiteChanged(e)}},methods:{onSiteChanged:function(e){var t=this,n=e.id,o=[];this.siteUrls[n]||(this.isLoading=!0,o.push(r["AjaxHelper"].fetch({module:"API",format:"json",method:"Tour.detectConsentManager",idSite:n,filter_limit:"-1"}).then((function(e){Object.prototype.hasOwnProperty.call(e,"name")&&(t.consentManagerName=e.name),Object.prototype.hasOwnProperty.call(e,"url")&&(t.consentManagerUrl=e.url),t.consentManagerIsConnected=e.isConnected}))),o.push(r["AjaxHelper"].fetch({module:"API",method:"SitesManager.getSiteUrlsFromId",idSite:n,filter_limit:"-1"}).then((function(e){t.siteUrls[n]=e||[]})))),this.siteExcludedQueryParams[n]||(this.isLoading=!0,o.push(r["AjaxHelper"].fetch({module:"API",method:"Overlay.getExcludedQueryParameters",idSite:n,filter_limit:"-1"}).then((function(e){t.siteExcludedQueryParams[n]=e||[]})))),this.siteExcludedReferrers[n]||(this.isLoading=!0,o.push(r["AjaxHelper"].fetch({module:"API",method:"SitesManager.getExcludedReferrers",idSite:n,filter_limit:"-1"}).then((function(e){t.siteExcludedReferrers[n]=[],Object.values(e||[]).forEach((function(e){t.siteExcludedReferrers[n].push(e.replace(/^https?:\/\//,""))}))})))),Promise.all(o).then((function(){t.isLoading=!1,t.updateCurrentSiteInfo(),t.updateTrackingCode()}))},sendEmail:function(){var e=Object(r["translate"])("SitesManager_EmailInstructionsSubject");e=encodeURIComponent(e);var t=this.trackingCode;t=t.replace(/<[^>]+>/g,"");var n="".concat(Object(r["translate"])("SitesManager_JsTrackingTagHelp"),". ").concat(Object(r["translate"])("CoreAdminHome_JSTracking_CodeNoteBeforeClosingHeadEmail","'head"),"\n").concat(t);""!==this.consentManagerName&&""!==this.consentManagerUrl&&(n+=Object(r["translate"])("CoreAdminHome_JSTracking_ConsentManagerDetected",this.consentManagerName,this.consentManagerUrl),this.consentManagerIsConnected&&(n+="\n".concat(Object(r["translate"])("CoreAdminHome_JSTracking_ConsentManagerConnected",this.consentManagerName)))),n=encodeURIComponent(n);var o="mailto:?subject=".concat(e,"&body=").concat(n);window.location.href=o},onCrossDomainToggle:function(){this.crossDomain&&(this.trackAllAliases=!0)},updateTrackingCode:function(){var e=this,t=this.site,n={piwikUrl:"".concat(gt).concat(pt),groupPageTitlesByDomain:this.groupByDomain?1:0,mergeSubdomains:this.trackAllSubdomains?1:0,mergeAliasUrls:this.trackAllAliases?1:0,visitorCustomVariables:this.trackCustomVars?dt(this.customVars):0,customCampaignNameQueryParam:null,customCampaignKeywordParam:null,doNotTrack:this.doNotTrack?1:0,disableCookies:this.disableCookies?1:0,crossDomain:this.crossDomain?1:0,trackNoScript:this.trackNoScript?1:0,forceMatomoEndpoint:1};this.siteExcludedQueryParams[t.id]&&(n.excludedQueryParams=this.siteExcludedQueryParams[t.id]),this.siteExcludedReferrers[t.id]&&(n.excludedReferrers=this.siteExcludedReferrers[t.id]),this.useCustomCampaignParams&&(n.customCampaignNameQueryParam=this.customCampaignName,n.customCampaignKeywordParam=this.customCampaignKeyword),this.trackingCodeAbortController&&(this.trackingCodeAbortController.abort(),this.trackingCodeAbortController=null),this.trackingCodeAbortController=new AbortController,r["AjaxHelper"].post({module:"API",format:"json",method:"SitesManager.getJavascriptTag",idSite:t.id},n,{abortController:this.trackingCodeAbortController}).then((function(t){e.trackingCodeAbortController=null,e.trackingCode=t.value;var n=mt(e.$refs.trackingCode);n&&!e.isHighlighting&&(e.isHighlighting=!0,n.effect("highlight",{complete:function(){e.isHighlighting=!1}},1500))}))},updateCurrentSiteInfo:function(){this.hasManySiteUrls||(this.crossDomain=!1)},addCustomVar:function(){this.canAddMoreCustomVariables&&this.customVars.push({name:"",value:""}),this.canAddMoreCustomVariables=!!this.maxCustomVariables&&this.maxCustomVariables>this.customVars.length},onCustomVarNameKeydown:function(e,t){var n=this;setTimeout((function(){n.customVars[t].name=e.target.value,n.updateTrackingCode()}))},onCustomVarValueKeydown:function(e,t){var n=this;setTimeout((function(){n.customVars[t].value=e.target.value,n.updateTrackingCode()}))}},computed:{hasManySiteUrls:function(){var e=this.site;return this.siteUrls[e.id]&&this.siteUrls[e.id].length>1},currentSiteHost:function(){var e,t=null===(e=this.siteUrls[this.site.id])||void 0===e?void 0:e[0];return t?st(t):""},currentSiteAlias:function(){var e,t="x.".concat(this.currentSiteHost),n=null===(e=this.siteUrls[this.site.id])||void 0===e?void 0:e[1];return n||t},currentSiteName:function(){return r["Matomo"].helper.htmlEntities(this.site.name)},jsTrackingIntro3a:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro3a",'<a href="https://matomo.org/integrate/" rel="noreferrer noopener" target="_blank">',"</a>")},jsTrackingIntro3b:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro3b")},jsTrackingIntro4a:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro4",'<a href="#image-tracking-link">',"</a>")},jsTrackingIntro5:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro5",'<a rel="noreferrer noopener" target="_blank" href="https://developer.matomo.org/guides/tracking-javascript-guide">',"</a>")},mergeSubdomainsDesc:function(){return Object(r["translate"])("CoreAdminHome_JSTracking_MergeSubdomainsDesc","x.".concat(this.currentSiteHost),"y.".concat(this.currentSiteHost))},learnMoreText:function(){var e="https://developer.matomo.org/guides/tracking-javascript-guide#measuring-domains-andor-sub-domains";return Object(r["translate"])("General_LearnMore",' (<a href="'.concat(e,'" rel="noreferrer noopener" target="_blank">'),"</a>)")},jsTrackCampaignParamsInlineHelp:function(){return Object(r["translate"])("CoreAdminHome_JSTracking_CustomCampaignQueryParamDesc",'<a href="https://matomo.org/faq/general/faq_119" rel="noreferrer noopener" target="_blank">',"</a>")}}});bt.render=ct;var ht=bt,jt=(Object(r["createAngularJsAdapter"])({component:ht,scope:{defaultSite:{angularJsBind:"<"},maxCustomVariables:{angularJsBind:"<"},serverSideDoNotTrackEnabled:{angularJsBind:"<"}},directiveName:"matomoJsTrackingCodeGenerator"}),Object(i["createElementVNode"])("a",{name:"image-tracking-link"},null,-1)),ft={id:"image-tracking-code-options"},vt=["innerHTML"],Ot=["innerHTML"],Ct={id:"image-tracking-goal-sub"},kt={class:"row"},Vt={class:"col s12 m6"},St={class:"col s12 m6"},Nt={id:"image-link-output-section"},yt={id:"image-tracking-text"},Tt=["textContent"];
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Tt(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("ContentBlock"),s=Object(i["resolveDirective"])("select-on-focus");return Object(i["openBlock"])(),Object(i["createBlock"])(c,{"content-title":e.translate("CoreAdminHome_ImageTracking"),anchor:"imageTracking"},{default:Object(i["withCtx"])((function(){return[ht,Object(i["createElementVNode"])("div",jt,[Object(i["createElementVNode"])("p",{innerHTML:e.$sanitize(e.imageTrackingIntro)},null,8,ft),Object(i["createElementVNode"])("p",{innerHTML:e.$sanitize(e.imageTrackingIntro3)},null,8,vt),Object(i["createVNode"])(l,{uicontrol:"site",name:"image-tracker-website",modelValue:e.site,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.site=t}),introduction:e.translate("General_Website")},null,8,["modelValue","introduction"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"image-tracker-action-name","model-value":e.pageName,"onUpdate:modelValue":t[1]||(t[1]=function(t){e.pageName=t,e.updateTrackingCode()}),disabled:e.isLoading,introduction:e.translate("General_Options"),title:e.translate("Actions_ColumnPageName")},null,8,["model-value","disabled","introduction","title"]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"image-tracking-goal-check","model-value":e.trackGoal,"onUpdate:modelValue":t[2]||(t[2]=function(t){e.trackGoal=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_TrackAGoal")},null,8,["model-value","disabled","title"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Ot,[Object(i["createElementVNode"])("div",Ct,[Object(i["createElementVNode"])("div",kt,[Object(i["createVNode"])(l,{uicontrol:"select",name:"image-tracker-goal",options:e.siteGoals,disabled:e.isLoading,"model-value":e.trackIdGoal,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.trackIdGoal=t,e.updateTrackingCode()})},null,8,["options","disabled","model-value"])]),Object(i["createElementVNode"])("div",Vt,[Object(i["createVNode"])(l,{uicontrol:"text",name:"image-revenue","model-value":e.revenue,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.revenue=t,e.updateTrackingCode()}),disabled:e.isLoading,"full-width":!0,title:"".concat(e.translate("CoreAdminHome_WithOptionalRevenue")," ").concat(e.currentSiteCurrency)},null,8,["model-value","disabled","title"])])])],512),[[i["vShow"],e.trackGoal]]),Object(i["createElementVNode"])("div",St,[Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_ImageTrackingLink")),1),Object(i["createElementVNode"])("div",Nt,[Object(i["withDirectives"])(Object(i["createElementVNode"])("pre",{textContent:Object(i["toDisplayString"])(e.trackingCode),ref:"trackingCode"},null,8,yt),[[s,{}]])])])])]})),_:1},8,["content-title"])}function At(e,t){return Dt(e)||Ht(e,t)||wt(e,t)||Et()}function Et(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function wt(e,t){if(e){if("string"===typeof e)return _t(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_t(e,t):void 0}}function _t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function Ht(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,a,r=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(o=n.next()).done);i=!0)if(r.push(o.value),t&&r.length===t)break}catch(c){l=!0,a=c}finally{try{i||null==n["return"]||n["return"]()}finally{if(l)throw a}}return r}}function Dt(e){if(Array.isArray(e))return e}var Bt=null,Lt=window,xt=Lt.$,Ut=window.location.host,Ft=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")),It=Object(i["defineComponent"])({props:{defaultSite:{type:Object,required:!0}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"]},directives:{SelectOnFocus:r["SelectOnFocus"]},data:function(){return{isLoading:!1,site:this.defaultSite,pageName:"",trackGoal:!1,trackIdGoal:null,revenue:"",trackingCode:"",sites:{},goals:{},trackingCodeAbortController:null,isHighlighting:!1}},created:function(){this.updateTrackingCode=Object(r["debounce"])(this.updateTrackingCode),this.site&&this.site.id&&this.onSiteChanged(this.site)},watch:{site:function(e){this.onSiteChanged(e)}},methods:{onSiteChanged:function(e){var t,n,o,a=this;return this.trackIdGoal=null,Bt?t=Promise.resolve(Bt):(this.isLoading=!0,t=r["AjaxHelper"].fetch({method:"SitesManager.getCurrencySymbols",filter_limit:"-1"})),this.sites[e.id]?n=Promise.resolve(this.sites[e.id]):(this.isLoading=!0,n=r["AjaxHelper"].fetch({module:"API",method:"SitesManager.getSiteFromId",idSite:e.id})),this.goals[e.id]?o=Promise.resolve(this.goals[e.id]):(this.isLoading=!0,o=r["AjaxHelper"].fetch({module:"API",method:"Goals.getGoals",filter_limit:"-1",idSite:e.id})),Promise.all([t,n,o]).then((function(t){var n=At(t,3),o=n[0],r=n[1],i=n[2];a.isLoading=!1,Bt=o,a.sites[e.id]=r,a.goals[e.id]=i,a.updateTrackingCode()}))},updateTrackingCode:function(){var e=this,t={piwikUrl:"".concat(Ut).concat(Ft),actionName:this.pageName,forceMatomoEndpoint:1};this.trackGoal&&this.trackIdGoal&&(t.idGoal=this.trackIdGoal,t.revenue=this.revenue),this.trackingCodeAbortController&&(this.trackingCodeAbortController.abort(),this.trackingCodeAbortController=null),this.trackingCodeAbortController=new AbortController,r["AjaxHelper"].post({module:"API",format:"json",method:"SitesManager.getImageTrackingCode",idSite:this.site.id},t,{abortController:this.trackingCodeAbortController}).then((function(t){e.trackingCodeAbortController=null,e.trackingCode=t.value;var n=xt(e.$refs.trackingCode);n&&!e.isHighlighting&&(e.isHighlighting=!0,n.effect("highlight",{complete:function(){e.isHighlighting=!1}},1500))}))}},computed:{currentSiteCurrency:function(){return Bt?Bt[(this.sites[this.site.id].currency||"").toUpperCase()]:""},siteGoals:function(){var e=this.goals[this.site.id];return[{key:"",value:Object(r["translate"])("UserCountryMap_None")}].concat(Object.values(e||[]).map((function(e){return{key:"".concat(e.idgoal),value:e.name}})))},imageTrackingIntro:function(){var e=Object(r["translate"])("CoreAdminHome_ImageTrackingIntro1"),t=Object(r["translate"])("CoreAdminHome_ImageTrackingIntro2","<code>&lt;noscript&gt;&lt;/noscript&gt;</code>");return"".concat(e," ").concat(t)},imageTrackingIntro3:function(){var e="https://matomo.org/docs/tracking-api/reference/";return Object(r["translate"])("CoreAdminHome_ImageTrackingIntro3",'<a href="'.concat(e,'" rel="noreferrer noopener" target="_blank">'),"</a>")}}});It.render=Tt;var Gt=It,Pt=(Object(r["createAngularJsAdapter"])({component:Gt,scope:{defaultSite:{angularJsBind:"<"}},directiveName:"matomoImageTrackingCodeGenerator"}),Object(i["createElementVNode"])("br",null,null,-1)),Mt=Object(i["createElementVNode"])("br",null,null,-1),Jt=["value"],qt={class:"action"},Rt={colspan:"7"},Wt=Object(i["createElementVNode"])("span",{class:"icon-ok"},null,-1),$t={class:"ui-confirm",id:"confirmDeleteAllTrackingFailures"},Kt=["value"],zt=["value"],Qt={class:"ui-confirm",id:"confirmDeleteThisTrackingFailure"},Yt=["value"],Xt=["value"];
+ */function At(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("ContentBlock"),s=Object(i["resolveDirective"])("select-on-focus");return Object(i["openBlock"])(),Object(i["createBlock"])(c,{"content-title":e.translate("CoreAdminHome_ImageTracking"),anchor:"imageTracking"},{default:Object(i["withCtx"])((function(){return[jt,Object(i["createElementVNode"])("div",ft,[Object(i["createElementVNode"])("p",{innerHTML:e.$sanitize(e.imageTrackingIntro)},null,8,vt),Object(i["createElementVNode"])("p",{innerHTML:e.$sanitize(e.imageTrackingIntro3)},null,8,Ot),Object(i["createVNode"])(l,{uicontrol:"site",name:"image-tracker-website",modelValue:e.site,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.site=t}),introduction:e.translate("General_Website")},null,8,["modelValue","introduction"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"image-tracker-action-name","model-value":e.pageName,"onUpdate:modelValue":t[1]||(t[1]=function(t){e.pageName=t,e.updateTrackingCode()}),disabled:e.isLoading,introduction:e.translate("General_Options"),title:e.translate("Actions_ColumnPageName")},null,8,["model-value","disabled","introduction","title"]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"image-tracking-goal-check","model-value":e.trackGoal,"onUpdate:modelValue":t[2]||(t[2]=function(t){e.trackGoal=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_TrackAGoal")},null,8,["model-value","disabled","title"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Ct,[Object(i["createElementVNode"])("div",kt,[Object(i["createElementVNode"])("div",Vt,[Object(i["createVNode"])(l,{uicontrol:"select",name:"image-tracker-goal",options:e.siteGoals,disabled:e.isLoading,"model-value":e.trackIdGoal,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.trackIdGoal=t,e.updateTrackingCode()})},null,8,["options","disabled","model-value"])]),Object(i["createElementVNode"])("div",St,[Object(i["createVNode"])(l,{uicontrol:"text",name:"image-revenue","model-value":e.revenue,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.revenue=t,e.updateTrackingCode()}),disabled:e.isLoading,"full-width":!0,title:"".concat(e.translate("CoreAdminHome_WithOptionalRevenue")," ").concat(e.currentSiteCurrency)},null,8,["model-value","disabled","title"])])])],512),[[i["vShow"],e.trackGoal]]),Object(i["createElementVNode"])("div",Nt,[Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_ImageTrackingLink")),1),Object(i["createElementVNode"])("div",yt,[Object(i["withDirectives"])(Object(i["createElementVNode"])("pre",{textContent:Object(i["toDisplayString"])(e.trackingCode),ref:"trackingCode"},null,8,Tt),[[s,{}]])])])])]})),_:1},8,["content-title"])}function Et(e,t){return Bt(e)||Dt(e,t)||_t(e,t)||wt()}function wt(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _t(e,t){if(e){if("string"===typeof e)return Ht(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ht(e,t):void 0}}function Ht(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function Dt(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,a,r=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(o=n.next()).done);i=!0)if(r.push(o.value),t&&r.length===t)break}catch(c){l=!0,a=c}finally{try{i||null==n["return"]||n["return"]()}finally{if(l)throw a}}return r}}function Bt(e){if(Array.isArray(e))return e}var Lt=null,xt=window,Ut=xt.$,Ft=window.location.host,It=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")),Mt=Object(i["defineComponent"])({props:{defaultSite:{type:Object,required:!0}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"]},directives:{SelectOnFocus:r["SelectOnFocus"]},data:function(){return{isLoading:!1,site:this.defaultSite,pageName:"",trackGoal:!1,trackIdGoal:null,revenue:"",trackingCode:"",sites:{},goals:{},trackingCodeAbortController:null,isHighlighting:!1}},created:function(){this.updateTrackingCode=Object(r["debounce"])(this.updateTrackingCode),this.site&&this.site.id&&this.onSiteChanged(this.site)},watch:{site:function(e){this.onSiteChanged(e)}},methods:{onSiteChanged:function(e){var t,n,o,a=this;return this.trackIdGoal=null,Lt?t=Promise.resolve(Lt):(this.isLoading=!0,t=r["AjaxHelper"].fetch({method:"SitesManager.getCurrencySymbols",filter_limit:"-1"})),this.sites[e.id]?n=Promise.resolve(this.sites[e.id]):(this.isLoading=!0,n=r["AjaxHelper"].fetch({module:"API",method:"SitesManager.getSiteFromId",idSite:e.id})),this.goals[e.id]?o=Promise.resolve(this.goals[e.id]):(this.isLoading=!0,o=r["AjaxHelper"].fetch({module:"API",method:"Goals.getGoals",filter_limit:"-1",idSite:e.id})),Promise.all([t,n,o]).then((function(t){var n=Et(t,3),o=n[0],r=n[1],i=n[2];a.isLoading=!1,Lt=o,a.sites[e.id]=r,a.goals[e.id]=i,a.updateTrackingCode()}))},updateTrackingCode:function(){var e=this,t={piwikUrl:"".concat(Ft).concat(It),actionName:this.pageName,forceMatomoEndpoint:1};this.trackGoal&&this.trackIdGoal&&(t.idGoal=this.trackIdGoal,t.revenue=this.revenue),this.trackingCodeAbortController&&(this.trackingCodeAbortController.abort(),this.trackingCodeAbortController=null),this.trackingCodeAbortController=new AbortController,r["AjaxHelper"].post({module:"API",format:"json",method:"SitesManager.getImageTrackingCode",idSite:this.site.id},t,{abortController:this.trackingCodeAbortController}).then((function(t){e.trackingCodeAbortController=null,e.trackingCode=t.value;var n=Ut(e.$refs.trackingCode);n&&!e.isHighlighting&&(e.isHighlighting=!0,n.effect("highlight",{complete:function(){e.isHighlighting=!1}},1500))}))}},computed:{currentSiteCurrency:function(){return Lt?Lt[(this.sites[this.site.id].currency||"").toUpperCase()]:""},siteGoals:function(){var e=this.goals[this.site.id];return[{key:"",value:Object(r["translate"])("UserCountryMap_None")}].concat(Object.values(e||[]).map((function(e){return{key:"".concat(e.idgoal),value:e.name}})))},imageTrackingIntro:function(){var e=Object(r["translate"])("CoreAdminHome_ImageTrackingIntro1"),t=Object(r["translate"])("CoreAdminHome_ImageTrackingIntro2","<code>&lt;noscript&gt;&lt;/noscript&gt;</code>");return"".concat(e," ").concat(t)},imageTrackingIntro3:function(){var e="https://matomo.org/docs/tracking-api/reference/";return Object(r["translate"])("CoreAdminHome_ImageTrackingIntro3",'<a href="'.concat(e,'" rel="noreferrer noopener" target="_blank">'),"</a>")}}});Mt.render=At;var Gt=Mt,Pt=(Object(r["createAngularJsAdapter"])({component:Gt,scope:{defaultSite:{angularJsBind:"<"}},directiveName:"matomoImageTrackingCodeGenerator"}),Object(i["createElementVNode"])("br",null,null,-1)),Jt=Object(i["createElementVNode"])("br",null,null,-1),qt=["value"],Rt={class:"action"},Wt={colspan:"7"},$t=Object(i["createElementVNode"])("span",{class:"icon-ok"},null,-1),Kt={class:"ui-confirm",id:"confirmDeleteAllTrackingFailures"},zt=["value"],Qt=["value"],Yt={class:"ui-confirm",id:"confirmDeleteThisTrackingFailure"},Xt=["value"],Zt=["value"];
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Zt(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("ActivityIndicator"),c=Object(i["resolveComponent"])("FailureRow"),s=Object(i["resolveComponent"])("ContentBlock"),d=Object(i["resolveDirective"])("content-table");return Object(i["openBlock"])(),Object(i["createBlock"])(s,{class:"matomoTrackingFailures","content-title":e.translate("CoreAdminHome_TrackingFailures")},{default:Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("p",null,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_TrackingFailuresIntroduction","2"))+" ",1),Pt,Mt,Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{class:"btn deleteAllFailures",type:"button",onClick:t[0]||(t[0]=function(t){return e.deleteAll()}),value:e.translate("CoreAdminHome_DeleteAllFailures")},null,8,Jt),[[i["vShow"],!e.isLoading&&e.failures.length>0]])]),Object(i["createVNode"])(l,{loading:e.isLoading},null,8,["loading"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("table",null,[Object(i["createElementVNode"])("thead",null,[Object(i["createElementVNode"])("tr",null,[Object(i["createElementVNode"])("th",{onClick:t[1]||(t[1]=function(t){return e.changeSortOrder("idsite")})},Object(i["toDisplayString"])(e.translate("General_Measurable")),1),Object(i["createElementVNode"])("th",{onClick:t[2]||(t[2]=function(t){return e.changeSortOrder("problem")})},Object(i["toDisplayString"])(e.translate("CoreAdminHome_Problem")),1),Object(i["createElementVNode"])("th",{onClick:t[3]||(t[3]=function(t){return e.changeSortOrder("solution")})},Object(i["toDisplayString"])(e.translate("CoreAdminHome_Solution")),1),Object(i["createElementVNode"])("th",{onClick:t[4]||(t[4]=function(t){return e.changeSortOrder("date_first_occurred")})},Object(i["toDisplayString"])(e.translate("General_Date")),1),Object(i["createElementVNode"])("th",{onClick:t[5]||(t[5]=function(t){return e.changeSortOrder("url")})},Object(i["toDisplayString"])(e.translate("Actions_ColumnPageURL")),1),Object(i["createElementVNode"])("th",{onClick:t[6]||(t[6]=function(t){return e.changeSortOrder("request_url")})},Object(i["toDisplayString"])(e.translate("CoreAdminHome_TrackingURL")),1),Object(i["createElementVNode"])("th",qt,Object(i["toDisplayString"])(e.translate("General_Action")),1)])]),Object(i["createElementVNode"])("tbody",null,[Object(i["createElementVNode"])("tr",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("td",Rt,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_NoKnownFailures"))+" ",1),Wt],512),[[i["vShow"],!e.isLoading&&0===e.failures.length]])]),(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.sortedFailures,(function(n,o){return Object(i["openBlock"])(),Object(i["createElementBlock"])("tr",{key:o},[Object(i["createVNode"])(c,{failure:n,onDelete:t[7]||(t[7]=function(t){return e.deleteFailure(t.idSite,t.idFailure)})},null,8,["failure"])])})),128))])],512),[[d]]),Object(i["createElementVNode"])("div",$t,[Object(i["createElementVNode"])("h2",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_ConfirmDeleteAllTrackingFailures")),1),Object(i["createElementVNode"])("input",{type:"button",role:"yes",value:e.translate("General_Yes")},null,8,Kt),Object(i["createElementVNode"])("input",{type:"button",role:"no",value:e.translate("General_No")},null,8,zt)]),Object(i["createElementVNode"])("div",Qt,[Object(i["createElementVNode"])("h2",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_ConfirmDeleteThisTrackingFailure")),1),Object(i["createElementVNode"])("input",{type:"button",role:"yes",value:e.translate("General_Yes")},null,8,Yt),Object(i["createElementVNode"])("input",{type:"button",role:"no",value:e.translate("General_No")},null,8,Xt)])]})),_:1},8,["content-title"])}var en=["href"],tn={class:"datetime"},nn=["title"],on=["title"];function an(e,t,n,o,a,r){return Object(i["openBlock"])(),Object(i["createElementBlock"])(i["Fragment"],null,[Object(i["createElementVNode"])("td",null,Object(i["toDisplayString"])(e.failure.site_name)+" ("+Object(i["toDisplayString"])(e.translate("General_Id"))+" "+Object(i["toDisplayString"])(e.failure.idsite)+")",1),Object(i["createElementVNode"])("td",null,Object(i["toDisplayString"])(e.failure.problem),1),Object(i["createElementVNode"])("td",null,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.failure.solution)+" ",1),Object(i["withDirectives"])(Object(i["createElementVNode"])("a",{rel:"noopener noreferrer",href:e.failure.solution_url},Object(i["toDisplayString"])(e.translate("CoreAdminHome_LearnMore")),9,en),[[i["vShow"],e.failure.solution_url]])]),Object(i["createElementVNode"])("td",tn,Object(i["toDisplayString"])(e.failure.pretty_date_first_occurred),1),Object(i["createElementVNode"])("td",null,Object(i["toDisplayString"])(e.failure.url),1),Object(i["createElementVNode"])("td",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("span",{onClick:t[0]||(t[0]=function(t){return e.showFullRequestUrl=!0}),title:e.translate("CoreHome_ClickToSeeFullInformation")},Object(i["toDisplayString"])(e.limtedRequestUrl)+"...",9,nn),[[i["vShow"],!e.showFullRequestUrl]]),Object(i["withDirectives"])(Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.failure.request_url),513),[[i["vShow"],e.failure.showFullRequestUrl]])]),Object(i["createElementVNode"])("td",null,[Object(i["createElementVNode"])("span",{class:"table-action icon-delete",onClick:t[1]||(t[1]=function(t){return e.deleteFailure(e.failure.idsite,e.failure.idfailure)}),title:e.translate("General_Delete")},null,8,on)])],64)}var rn=Object(i["defineComponent"])({props:{failure:{type:Object,required:!0}},emits:["delete"],data:function(){return{showFullRequestUrl:!1}},computed:{limtedRequestUrl:function(){return this.failure.request_url.substring(0,100)}},methods:{deleteFailure:function(e,t){this.$emit("delete",{idSite:e,idFailure:t})}}});rn.render=an;var ln=rn;function cn(e){return mn(e)||un(e)||dn(e)||sn()}function sn(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function dn(e,t){if(e){if("string"===typeof e)return gn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?gn(e,t):void 0}}function un(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function mn(e){if(Array.isArray(e))return gn(e)}function gn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}var pn=Object(i["defineComponent"])({components:{ContentBlock:r["ContentBlock"],ActivityIndicator:r["ActivityIndicator"],FailureRow:ln},directives:{ContentTable:r["ContentTable"]},data:function(){return{failures:[],sortColumn:"idsite",sortReverse:!1,isLoading:!1}},created:function(){this.fetchAll()},methods:{changeSortOrder:function(e){this.sortColumn===e?this.sortReverse=!this.sortReverse:this.sortColumn=e},fetchAll:function(){var e=this;this.failures=[],this.isLoading=!0,r["AjaxHelper"].fetch({method:"CoreAdminHome.getTrackingFailures",filter_limit:"-1"}).then((function(t){e.failures=t,e.isLoading=!1})).finally((function(){e.isLoading=!1}))},deleteAll:function(){var e=this;r["Matomo"].helper.modalConfirm("#confirmDeleteAllTrackingFailures",{yes:function(){e.failures=[],r["AjaxHelper"].fetch({method:"CoreAdminHome.deleteAllTrackingFailures"}).then((function(){e.fetchAll()}))}})},deleteFailure:function(e,t){var n=this;r["Matomo"].helper.modalConfirm("#confirmDeleteThisTrackingFailure",{yes:function(){n.failures=[],r["AjaxHelper"].fetch({method:"CoreAdminHome.deleteTrackingFailure",idSite:e,idFailure:t}).then((function(){n.fetchAll()}))}})}},computed:{sortedFailures:function(){var e=this.sortColumn,t=cn(this.failures);return this.sortReverse?t.sort((function(t,n){return t[e]>n[e]?-1:t[e]<n[e]?1:0})):t.sort((function(t,n){return t[e]<n[e]?-1:t[e]>n[e]?1:0})),t}}});pn.render=Zt;var bn=pn;
+ */function en(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("ActivityIndicator"),c=Object(i["resolveComponent"])("FailureRow"),s=Object(i["resolveComponent"])("ContentBlock"),d=Object(i["resolveDirective"])("content-table");return Object(i["openBlock"])(),Object(i["createBlock"])(s,{class:"matomoTrackingFailures","content-title":e.translate("CoreAdminHome_TrackingFailures")},{default:Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("p",null,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_TrackingFailuresIntroduction","2"))+" ",1),Pt,Jt,Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{class:"btn deleteAllFailures",type:"button",onClick:t[0]||(t[0]=function(t){return e.deleteAll()}),value:e.translate("CoreAdminHome_DeleteAllFailures")},null,8,qt),[[i["vShow"],!e.isLoading&&e.failures.length>0]])]),Object(i["createVNode"])(l,{loading:e.isLoading},null,8,["loading"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("table",null,[Object(i["createElementVNode"])("thead",null,[Object(i["createElementVNode"])("tr",null,[Object(i["createElementVNode"])("th",{onClick:t[1]||(t[1]=function(t){return e.changeSortOrder("idsite")})},Object(i["toDisplayString"])(e.translate("General_Measurable")),1),Object(i["createElementVNode"])("th",{onClick:t[2]||(t[2]=function(t){return e.changeSortOrder("problem")})},Object(i["toDisplayString"])(e.translate("CoreAdminHome_Problem")),1),Object(i["createElementVNode"])("th",{onClick:t[3]||(t[3]=function(t){return e.changeSortOrder("solution")})},Object(i["toDisplayString"])(e.translate("CoreAdminHome_Solution")),1),Object(i["createElementVNode"])("th",{onClick:t[4]||(t[4]=function(t){return e.changeSortOrder("date_first_occurred")})},Object(i["toDisplayString"])(e.translate("General_Date")),1),Object(i["createElementVNode"])("th",{onClick:t[5]||(t[5]=function(t){return e.changeSortOrder("url")})},Object(i["toDisplayString"])(e.translate("Actions_ColumnPageURL")),1),Object(i["createElementVNode"])("th",{onClick:t[6]||(t[6]=function(t){return e.changeSortOrder("request_url")})},Object(i["toDisplayString"])(e.translate("CoreAdminHome_TrackingURL")),1),Object(i["createElementVNode"])("th",Rt,Object(i["toDisplayString"])(e.translate("General_Action")),1)])]),Object(i["createElementVNode"])("tbody",null,[Object(i["createElementVNode"])("tr",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("td",Wt,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_NoKnownFailures"))+" ",1),$t],512),[[i["vShow"],!e.isLoading&&0===e.failures.length]])]),(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.sortedFailures,(function(n,o){return Object(i["openBlock"])(),Object(i["createElementBlock"])("tr",{key:o},[Object(i["createVNode"])(c,{failure:n,onDelete:t[7]||(t[7]=function(t){return e.deleteFailure(t.idSite,t.idFailure)})},null,8,["failure"])])})),128))])],512),[[d]]),Object(i["createElementVNode"])("div",Kt,[Object(i["createElementVNode"])("h2",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_ConfirmDeleteAllTrackingFailures")),1),Object(i["createElementVNode"])("input",{type:"button",role:"yes",value:e.translate("General_Yes")},null,8,zt),Object(i["createElementVNode"])("input",{type:"button",role:"no",value:e.translate("General_No")},null,8,Qt)]),Object(i["createElementVNode"])("div",Yt,[Object(i["createElementVNode"])("h2",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_ConfirmDeleteThisTrackingFailure")),1),Object(i["createElementVNode"])("input",{type:"button",role:"yes",value:e.translate("General_Yes")},null,8,Xt),Object(i["createElementVNode"])("input",{type:"button",role:"no",value:e.translate("General_No")},null,8,Zt)])]})),_:1},8,["content-title"])}var tn=["href"],nn={class:"datetime"},on=["title"],an=["title"];function rn(e,t,n,o,a,r){return Object(i["openBlock"])(),Object(i["createElementBlock"])(i["Fragment"],null,[Object(i["createElementVNode"])("td",null,Object(i["toDisplayString"])(e.failure.site_name)+" ("+Object(i["toDisplayString"])(e.translate("General_Id"))+" "+Object(i["toDisplayString"])(e.failure.idsite)+")",1),Object(i["createElementVNode"])("td",null,Object(i["toDisplayString"])(e.failure.problem),1),Object(i["createElementVNode"])("td",null,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.failure.solution)+" ",1),Object(i["withDirectives"])(Object(i["createElementVNode"])("a",{rel:"noopener noreferrer",href:e.failure.solution_url},Object(i["toDisplayString"])(e.translate("CoreAdminHome_LearnMore")),9,tn),[[i["vShow"],e.failure.solution_url]])]),Object(i["createElementVNode"])("td",nn,Object(i["toDisplayString"])(e.failure.pretty_date_first_occurred),1),Object(i["createElementVNode"])("td",null,Object(i["toDisplayString"])(e.failure.url),1),Object(i["createElementVNode"])("td",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("span",{onClick:t[0]||(t[0]=function(t){return e.showFullRequestUrl=!0}),title:e.translate("CoreHome_ClickToSeeFullInformation")},Object(i["toDisplayString"])(e.limtedRequestUrl)+"...",9,on),[[i["vShow"],!e.showFullRequestUrl]]),Object(i["withDirectives"])(Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.failure.request_url),513),[[i["vShow"],e.failure.showFullRequestUrl]])]),Object(i["createElementVNode"])("td",null,[Object(i["createElementVNode"])("span",{class:"table-action icon-delete",onClick:t[1]||(t[1]=function(t){return e.deleteFailure(e.failure.idsite,e.failure.idfailure)}),title:e.translate("General_Delete")},null,8,an)])],64)}var ln=Object(i["defineComponent"])({props:{failure:{type:Object,required:!0}},emits:["delete"],data:function(){return{showFullRequestUrl:!1}},computed:{limtedRequestUrl:function(){return this.failure.request_url.substring(0,100)}},methods:{deleteFailure:function(e,t){this.$emit("delete",{idSite:e,idFailure:t})}}});ln.render=rn;var cn=ln;function sn(e){return gn(e)||mn(e)||un(e)||dn()}function dn(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function un(e,t){if(e){if("string"===typeof e)return pn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?pn(e,t):void 0}}function mn(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function gn(e){if(Array.isArray(e))return pn(e)}function pn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}var bn=Object(i["defineComponent"])({components:{ContentBlock:r["ContentBlock"],ActivityIndicator:r["ActivityIndicator"],FailureRow:cn},directives:{ContentTable:r["ContentTable"]},data:function(){return{failures:[],sortColumn:"idsite",sortReverse:!1,isLoading:!1}},created:function(){this.fetchAll()},methods:{changeSortOrder:function(e){this.sortColumn===e?this.sortReverse=!this.sortReverse:this.sortColumn=e},fetchAll:function(){var e=this;this.failures=[],this.isLoading=!0,r["AjaxHelper"].fetch({method:"CoreAdminHome.getTrackingFailures",filter_limit:"-1"}).then((function(t){e.failures=t,e.isLoading=!1})).finally((function(){e.isLoading=!1}))},deleteAll:function(){var e=this;r["Matomo"].helper.modalConfirm("#confirmDeleteAllTrackingFailures",{yes:function(){e.failures=[],r["AjaxHelper"].fetch({method:"CoreAdminHome.deleteAllTrackingFailures"}).then((function(){e.fetchAll()}))}})},deleteFailure:function(e,t){var n=this;r["Matomo"].helper.modalConfirm("#confirmDeleteThisTrackingFailure",{yes:function(){n.failures=[],r["AjaxHelper"].fetch({method:"CoreAdminHome.deleteTrackingFailure",idSite:e,idFailure:t}).then((function(){n.fetchAll()}))}})}},computed:{sortedFailures:function(){var e=this.sortColumn,t=sn(this.failures);return this.sortReverse?t.sort((function(t,n){return t[e]>n[e]?-1:t[e]<n[e]?1:0})):t.sort((function(t,n){return t[e]<n[e]?-1:t[e]>n[e]?1:0})),t}}});bn.render=en;var hn=bn;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */Object(r["createAngularJsAdapter"])({component:bn,directiveName:"matomoTrackingFailures"})}})}));
+ */Object(r["createAngularJsAdapter"])({component:hn,directiveName:"matomoTrackingFailures"})}})}));
//# sourceMappingURL=CoreAdminHome.umd.min.js.map \ No newline at end of file
diff --git a/plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue b/plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue
index ba03040ff3..0da1fac8d9 100644
--- a/plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue
+++ b/plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue
@@ -55,11 +55,12 @@
{{ translate('CoreAdminHome_JSTracking_CodeNoteBeforeClosingHead', "&lt;/head&gt;") }}
</p>
</div>
-
+ <div id="javascript-email-button">
<button class="btn" id="emailJsBtn" @click="sendEmail()">
{{ translate('SitesManager_EmailInstructionsButton') }}
</button>
</div>
+ </div>
<div id="javascript-text">
<pre v-select-on-focus="{}" class="codeblock" v-text="trackingCode" ref="trackingCode"/>
</div>
@@ -319,6 +320,9 @@ interface JsTrackingCodeGeneratorState {
customCampaignKeyword: string;
trackingCodeAbortController: AbortController|null;
isHighlighting: boolean;
+ consentManagerName: string;
+ consentManagerUrl: string;
+ consentManagerIsConnected: boolean;
}
interface GetJavascriptTagResponse {
@@ -372,6 +376,9 @@ export default defineComponent({
customCampaignKeyword: '',
trackingCodeAbortController: null,
isHighlighting: false,
+ consentManagerName: '',
+ consentManagerUrl: '',
+ consentManagerIsConnected: false,
};
},
components: {
@@ -407,6 +414,26 @@ export default defineComponent({
this.isLoading = true;
promises.push(
+ AjaxHelper.fetch(
+ {
+ module: 'API',
+ format: 'json',
+ method: 'Tour.detectConsentManager',
+ idSite,
+ filter_limit: '-1',
+ },
+ ).then((response) => {
+ if (Object.prototype.hasOwnProperty.call(response, 'name')) {
+ this.consentManagerName = response.name;
+ }
+ if (Object.prototype.hasOwnProperty.call(response, 'url')) {
+ this.consentManagerUrl = response.url;
+ }
+ this.consentManagerIsConnected = response.isConnected;
+ }),
+ );
+
+ promises.push(
AjaxHelper.fetch({
module: 'API',
method: 'SitesManager.getSiteUrlsFromId',
@@ -468,6 +495,14 @@ export default defineComponent({
'CoreAdminHome_JSTracking_CodeNoteBeforeClosingHeadEmail',
'\'head',
)}\n${trackingCode}`;
+
+ if (this.consentManagerName !== '' && this.consentManagerUrl !== '') {
+ bodyText += translate('CoreAdminHome_JSTracking_ConsentManagerDetected', this.consentManagerName,
+ this.consentManagerUrl);
+ if (this.consentManagerIsConnected) {
+ bodyText += `\n${translate('CoreAdminHome_JSTracking_ConsentManagerConnected', this.consentManagerName)}`;
+ }
+ }
bodyText = encodeURIComponent(bodyText);
const linkText = `mailto:?subject=${subjectLine}&body=${bodyText}`;
diff --git a/plugins/Installation/Controller.php b/plugins/Installation/Controller.php
index 91b0283c19..45fe94206d 100644
--- a/plugins/Installation/Controller.php
+++ b/plugins/Installation/Controller.php
@@ -31,6 +31,7 @@ use Piwik\Plugins\UsersManager\NewsletterSignup;
use Piwik\Plugins\UsersManager\UserUpdater;
use Piwik\ProxyHeaders;
use Piwik\SettingsPiwik;
+use Piwik\SiteContentDetector;
use Piwik\Tracker\TrackerCodeGenerator;
use Piwik\Translation\Translator;
use Piwik\Updater;
@@ -44,6 +45,16 @@ use Zend_Db_Adapter_Exception;
*/
class Controller extends \Piwik\Plugin\ControllerAdmin
{
+
+ public function __construct(SiteContentDetector $siteContentDetector)
+ {
+ $this->siteContentDetector = $siteContentDetector;
+ parent::__construct();
+ }
+
+ /** @var SiteContentDetector */
+ private $siteContentDetector;
+
public $steps = array(
'welcome' => 'Installation_Welcome',
'systemCheck' => 'Installation_SystemCheck',
@@ -389,11 +400,19 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$trackingUrl = trim(SettingsPiwik::getPiwikUrl(), '/') . '/' . $javascriptGenerator->getPhpTrackerEndpoint();
+ $this->siteContentDetector->detectContent([SiteContentDetector::ALL_CONTENT]);
+
$emailBody = $this->renderTemplateAs('@SitesManager/_trackingCodeEmail', array(
'jsTag' => $rawJsTag,
'showMatomoLinks' => $showMatomoLinks,
'trackingUrl' => $trackingUrl,
- 'idSite' => $idSite
+ 'idSite' => $idSite,
+ 'gtmUsed' => $this->siteContentDetector->gtm,
+ 'ga3Used' => $this->siteContentDetector->ga3,
+ 'ga4Used' => $this->siteContentDetector->ga4,
+ 'consentManagerName' => $this->siteContentDetector->consentManagerName,
+ 'consentManagerUrl' => $this->siteContentDetector->consentManagerUrl,
+ 'consentManagerIsConnected' => $this->siteContentDetector->isConnected
), $viewType = 'basic');
// Load the Tracking code and help text from the SitesManager
@@ -405,6 +424,13 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$viewTrackingHelp->piwikUrl = Url::getCurrentUrlWithoutFileName();
$viewTrackingHelp->isInstall = true;
+ $viewTrackingHelp->gtmUsed = $this->siteContentDetector->gtm;
+ $viewTrackingHelp->ga3Used = $this->siteContentDetector->ga3;
+ $viewTrackingHelp->ga4Used = $this->siteContentDetector->ga4;
+ $viewTrackingHelp->consentManagerName = $this->siteContentDetector->consentManagerName;
+ $viewTrackingHelp->consentManagerUrl = $this->siteContentDetector->consentManagerUrl;
+ $viewTrackingHelp->consentManagerIsConnected = $this->siteContentDetector->isConnected;
+
$view->trackingHelp = $viewTrackingHelp->render();
$view->displaySiteName = $siteName;
diff --git a/plugins/Installation/Installation.php b/plugins/Installation/Installation.php
index d92dd2d3a4..2dee0d78f7 100644
--- a/plugins/Installation/Installation.php
+++ b/plugins/Installation/Installation.php
@@ -16,6 +16,7 @@ use Piwik\FrontController;
use Piwik\Piwik;
use Piwik\Plugins\Installation\Exception\DatabaseConnectionFailedException;
use Piwik\SettingsPiwik;
+use Piwik\SiteContentDetector;
use Piwik\View as PiwikView;
/**
@@ -92,7 +93,7 @@ class Installation extends \Piwik\Plugin
protected function getInstallationController()
{
- return new $this->installationControllerName();
+ return new $this->installationControllerName(new SiteContentDetector());
}
/**
diff --git a/plugins/Installation/tests/UI/Installation_spec.js b/plugins/Installation/tests/UI/Installation_spec.js
index 058275bc76..86a79469d3 100644
--- a/plugins/Installation/tests/UI/Installation_spec.js
+++ b/plugins/Installation/tests/UI/Installation_spec.js
@@ -12,7 +12,7 @@ var fs = require('fs'),
describe("Installation", function () {
this.timeout(0);
- this.fixture = null;
+ this.fixture = "Piwik\\Tests\\Fixtures\\DisableSiteContentDetection";
before(function () {
testEnvironment.testUseMockAuth = 0;
diff --git a/plugins/PrivacyManager/Controller.php b/plugins/PrivacyManager/Controller.php
index 25296cb48d..cc338fbd1f 100644
--- a/plugins/PrivacyManager/Controller.php
+++ b/plugins/PrivacyManager/Controller.php
@@ -21,6 +21,7 @@ use Piwik\Plugin\Manager;
use Piwik\Plugins\CustomJsTracker\File;
use Piwik\Plugins\LanguagesManager\LanguagesManager;
use Piwik\Plugins\LanguagesManager\API as APILanguagesManager;
+use Piwik\SiteContentDetector;
use Piwik\Scheduler\Scheduler;
use Piwik\Tracker\TrackerCodeGenerator;
use Piwik\View;
@@ -39,10 +40,14 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
*/
private $referrerAnonymizer;
- public function __construct(ReferrerAnonymizer $referrerAnonymizer)
+ /** @var SiteContentDetector */
+ private $siteContentDetector;
+
+ public function __construct(ReferrerAnonymizer $referrerAnonymizer, SiteContentDetector $siteContentDetector)
{
parent::__construct();
$this->referrerAnonymizer = $referrerAnonymizer;
+ $this->siteContentDetector = $siteContentDetector;
}
private function checkDataPurgeAdminSettingsIsEnabled()
@@ -163,7 +168,18 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
public function consent()
{
Piwik::checkUserHasSomeAdminAccess();
- return $this->renderTemplate('askingForConsent');
+
+ $view = new View('@PrivacyManager/askingForConsent');
+
+ $this->siteContentDetector->detectContent([SiteContentDetector::CONSENT_MANAGER]);
+ $view->consentManagerName = null;
+ if ($this->siteContentDetector->consentManagerId) {
+ $view->consentManagerName = $this->siteContentDetector->consentManagerName;
+ $view->consentManagerUrl = $this->siteContentDetector->consentManagerUrl;
+ $view->consentManagerIsConnected = $this->siteContentDetector->isConnected;
+ }
+ $this->setBasicVariablesView($view);
+ return $view->render();
}
public function gdprTools()
diff --git a/plugins/PrivacyManager/lang/en.json b/plugins/PrivacyManager/lang/en.json
index daf4542b99..dca5ea3a03 100644
--- a/plugins/PrivacyManager/lang/en.json
+++ b/plugins/PrivacyManager/lang/en.json
@@ -201,6 +201,9 @@
"VisitsSuccessfullyExported": "Visits were successfully exported",
"VisitsSuccessfullyDeleted": "Visits were successfully deleted",
"LastAction": "Last action",
- "FindMatchingDataSubjects": "Find matching data subjects"
+ "FindMatchingDataSubjects": "Find matching data subjects",
+ "ConsentManager": "Consent Manager",
+ "ConsentManagerDetected": "%1$s consent manager was detected on your website. To learn about configuring Matomo to work with %1$s please read %2$s%3$s%4$sthis guide%5$s",
+ "ConsentManagerConnected": "%1$s appears to already be configured to work with Matomo."
}
} \ No newline at end of file
diff --git a/plugins/PrivacyManager/templates/askingForConsent.twig b/plugins/PrivacyManager/templates/askingForConsent.twig
index 064f863db7..35a0bb94c4 100644
--- a/plugins/PrivacyManager/templates/askingForConsent.twig
+++ b/plugins/PrivacyManager/templates/askingForConsent.twig
@@ -23,4 +23,16 @@
<p>{{ 'PrivacyManager_HowDoIAskForConsentIntroduction'|translate('<a href="https://developer.matomo.org/guides/tracking-consent" target="_blank" rel="noreferrer noopener">', '</a>')|raw }}
</p>
</div>
+
+ {% if consentManagerName %}
+ <div piwik-content-block content-title="{{ 'PrivacyManager_ConsentManager'|translate|e('html_attr') }}" class="privacyAskingForConsent">
+ <p> {{ 'PrivacyManager_ConsentManagerDetected'|translate(consentManagerName, '<a href="', consentManagerUrl, '" target="_blank" rel="noreferrer noopener">', '</a')|raw }}
+ </p>
+ {% if consentManagerIsConnected %}
+ <p> {{ 'PrivacyManager_ConsentManagerConnected'|translate(consentManagerName)|raw }}
+ </p>
+ {% endif %}
+ </div>
+ {% endif %}
+
{% endblock %}
diff --git a/plugins/PrivacyManager/tests/UI/PrivacyManager_ConsentManager_spec.js b/plugins/PrivacyManager/tests/UI/PrivacyManager_ConsentManager_spec.js
new file mode 100644
index 0000000000..c0f26145dd
--- /dev/null
+++ b/plugins/PrivacyManager/tests/UI/PrivacyManager_ConsentManager_spec.js
@@ -0,0 +1,67 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * Screenshot integration tests.
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+describe("PrivacyManager_ConsentManager", function () {
+ this.timeout(0);
+
+ this.fixture = "Piwik\\Tests\\Fixtures\\EmptySiteWithSiteContentDetection";
+
+ var generalParams = 'idSite=1&period=day&date=2017-01-02',
+ urlBase = '?module=PrivacyManager&' + generalParams + '&action=';
+
+ before(function () {
+ testEnvironment.pluginsToLoad = ['PrivacyManager'];
+ testEnvironment.save();
+ });
+
+ async function setAnonymizeStartEndDate()
+ {
+ // make sure tests do not fail every day
+ await page.waitForSelector('input.anonymizeStartDate');
+ await page.waitForSelector('input.anonymizeEndDate');
+ await page.waitForTimeout(100);
+ await page.evaluate(function () {
+ $('input.anonymizeStartDate').val('2018-03-02').change();
+ });
+ await page.waitForTimeout(100);
+ await page.evaluate(function () {
+ $('input.anonymizeEndDate').val('2018-03-02').change();
+ });
+ await page.waitForTimeout(100);
+ }
+
+ async function loadActionPage(action)
+ {
+ await page.goto('about:blank');
+ await page.goto(urlBase + action);
+ await page.waitForNetworkIdle();
+
+ if (action === 'privacySettings') {
+ await setAnonymizeStartEndDate();
+ }
+ }
+
+ async function capturePage(screenshotName) {
+ await page.waitForNetworkIdle();
+ expect(await page.screenshotSelector('.pageWrap,#notificationContainer,.modal.open')).to.matchImage(screenshotName);
+ }
+
+
+ async function captureModal(screenshotName) {
+ await page.waitForNetworkIdle();
+ const modal = await page.$('.modal.open');
+ expect(await modal.screenshot()).to.matchImage(screenshotName);
+ }
+
+ it('should load privacy asking for consent page', async function() {
+ await loadActionPage('consent');
+ await capturePage('consent_default');
+ });
+
+});
diff --git a/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_ConsentManager_consent_default.png b/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_ConsentManager_consent_default.png
new file mode 100644
index 0000000000..fa9110b615
--- /dev/null
+++ b/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_ConsentManager_consent_default.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a8f80686de17ad288e2167a6573aa9225ab613b8fbb4c49c5376181c3e6e7706
+size 97194
diff --git a/plugins/SitesManager/Controller.php b/plugins/SitesManager/Controller.php
index 10a43cd909..2fadea1fe8 100644
--- a/plugins/SitesManager/Controller.php
+++ b/plugins/SitesManager/Controller.php
@@ -17,6 +17,7 @@ use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\Piwik;
use Piwik\Plugin\Manager;
+use Piwik\SiteContentDetector;
use Piwik\Session;
use Piwik\SettingsPiwik;
use Piwik\Tracker\TrackerCodeGenerator;
@@ -34,9 +35,13 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
/** @var Lazy */
private $cache;
- public function __construct(Lazy $cache)
+ /** @var SiteContentDetector */
+ private $siteContentDetector;
+
+ public function __construct(Lazy $cache, SiteContentDetector $siteContentDetector)
{
$this->cache = $cache;
+ $this->siteContentDetector = $siteContentDetector;
parent::__construct();
}
@@ -136,7 +141,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$javascriptGenerator->forceMatomoEndpoint();
$piwikUrl = Url::getCurrentUrlWithoutFileName();
- $jsTag = Request::processRequest('SitesManager.getJavascriptTag', array('idSite' => $this->idSite, 'piwikUrl' => $piwikUrl));
+ $jsTag = Request::processRequest('SitesManager.getJavascriptTag', ['idSite' => $this->idSite, 'piwikUrl' => $piwikUrl]);
// Strip off open and close <script> tag and comments so that JS will be displayed in ALL mail clients
$rawJsTag = TrackerCodeGenerator::stripTags($jsTag);
@@ -145,24 +150,39 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
/**
* @ignore
*/
- Piwik::postEvent('SitesManager.showMatomoLinksInTrackingCodeEmail', array(&$showMatomoLinks));
+ Piwik::postEvent('SitesManager.showMatomoLinksInTrackingCodeEmail', [&$showMatomoLinks]);
$trackerCodeGenerator = new TrackerCodeGenerator();
$trackingUrl = trim(SettingsPiwik::getPiwikUrl(), '/') . '/' . $trackerCodeGenerator->getPhpTrackerEndpoint();
- $emailContent = $this->renderTemplateAs('@SitesManager/_trackingCodeEmail', array(
+ $emailTemplateData = [
'jsTag' => $rawJsTag,
'showMatomoLinks' => $showMatomoLinks,
'trackingUrl' => $trackingUrl,
- 'idSite' => $this->idSite
- ), $viewType = 'basic');
-
- return $this->renderTemplateAs('siteWithoutData', array(
- 'siteName' => $this->site->getName(),
- 'idSite' => $this->idSite,
- 'piwikUrl' => $piwikUrl,
- 'emailBody' => $emailContent,
- ), $viewType = 'basic');
+ 'idSite' => $this->idSite,
+ 'consentManagerName' => false,
+ 'ga3Used' => false,
+ 'ga4Used' => false,
+ 'gtmUsed' => false
+ ];
+
+ $this->siteContentDetector->detectContent([SiteContentDetector::ALL_CONTENT]);
+ if ($this->siteContentDetector->consentManagerId) {
+ $emailTemplateData['consentManagerName'] = $this->siteContentDetector->consentManagerName;
+ $emailTemplateData['consentManagerUrl'] = $this->siteContentDetector->consentManagerUrl;
+ }
+ $emailTemplateData['ga3Used'] = $this->siteContentDetector->ga3;
+ $emailTemplateData['ga4Used'] = $this->siteContentDetector->ga4;
+ $emailTemplateData['gtmUsed'] = $this->siteContentDetector->gtm;
+
+ $emailContent = $this->renderTemplateAs('@SitesManager/_trackingCodeEmail', $emailTemplateData, $viewType = 'basic');
+
+ return $this->renderTemplateAs('siteWithoutData', [
+ 'siteName' => $this->site->getName(),
+ 'idSite' => $this->idSite,
+ 'piwikUrl' => $piwikUrl,
+ 'emailBody' => $emailContent,
+ ], $viewType = 'basic');
}
public function siteWithoutDataTabs()
@@ -201,13 +221,13 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
}
$piwikUrl = Url::getCurrentUrlWithoutFileName();
- $jsTag = Request::processRequest('SitesManager.getJavascriptTag', array('idSite' => $this->idSite, 'piwikUrl' => $piwikUrl));
+ $jsTag = Request::processRequest('SitesManager.getJavascriptTag', ['idSite' => $this->idSite, 'piwikUrl' => $piwikUrl]);
$showMatomoLinks = true;
/**
* @ignore
*/
- Piwik::postEvent('SitesManager.showMatomoLinksInTrackingCodeEmail', array(&$showMatomoLinks));
+ Piwik::postEvent('SitesManager.showMatomoLinksInTrackingCodeEmail', [&$showMatomoLinks]);
$googleAnalyticsImporterMessage = '';
if (Manager::getInstance()->isPluginLoaded('GoogleAnalyticsImporter')) {
@@ -226,7 +246,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$tagManagerActive = true;
}
- return $this->renderTemplateAs('_siteWithoutDataTabs', array(
+ $templateData = [
'siteName' => $this->site->getName(),
'idSite' => $this->idSite,
'jsTag' => $jsTag,
@@ -234,9 +254,24 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
'showMatomoLinks' => $showMatomoLinks,
'siteType' => $siteType,
'instruction' => SitesManager::getInstructionBySiteType($siteType),
- 'gtmUsed' => $gtmUsed,
+ 'gtmUsed' => false,
+ 'ga3Used' => false,
+ 'ga4Used' => false,
'googleAnalyticsImporterMessage' => $googleAnalyticsImporterMessage,
'tagManagerActive' => $tagManagerActive,
- ), $viewType = 'basic');
+ 'consentManagerName' => false
+ ];
+
+ $this->siteContentDetector->detectContent([SiteContentDetector::ALL_CONTENT]);
+ if ($this->siteContentDetector->consentManagerId) {
+ $templateData['consentManagerName'] = $this->siteContentDetector->consentManagerName;
+ $templateData['consentManagerUrl'] = $this->siteContentDetector->consentManagerUrl;
+ $templateData['consentManagerIsConnected'] = $this->siteContentDetector->isConnected;
+ }
+ $templateData['ga3Used'] = $this->siteContentDetector->ga3;
+ $templateData['ga4Used'] = $this->siteContentDetector->ga4;
+ $templateData['gtmUsed'] = $this->siteContentDetector->gtm;
+
+ return $this->renderTemplateAs('_siteWithoutDataTabs', $templateData, $viewType = 'basic');
}
}
diff --git a/plugins/SitesManager/lang/en.json b/plugins/SitesManager/lang/en.json
index 05528567ac..c2f3030b87 100644
--- a/plugins/SitesManager/lang/en.json
+++ b/plugins/SitesManager/lang/en.json
@@ -126,6 +126,8 @@
"EmailInstructionsSiteDetails": "You will need these details to use the API or SDKs to track Matomo visits.",
"EmailInstructionsYourSiteId": "Your site ID: %1$s",
"EmailInstructionsYourTrackingUrl": "Your tracking URL: %1$s",
- "DetectingYourSite": "Detecting your site"
+ "DetectingYourSite": "Detecting your site",
+ "GADetected": "%1$s was detected on your website. Did you know can easily migrate your historical analytics data and settings from %2$s to Matomo? %3$s%4$s%5$sLearn more in this guide%6$s",
+ "GADetectedEmail": "%1$s was detected on your website. Did you know can easily migrate your historical analytics data and settings from %2$s to Matomo? Learn more here: %3$s"
}
}
diff --git a/plugins/SitesManager/templates/_siteWithoutDataTabs.twig b/plugins/SitesManager/templates/_siteWithoutDataTabs.twig
index e300b42783..e159243441 100644
--- a/plugins/SitesManager/templates/_siteWithoutDataTabs.twig
+++ b/plugins/SitesManager/templates/_siteWithoutDataTabs.twig
@@ -7,8 +7,8 @@
<div class="row">
<div class="col s12">
<ul class="tabs">
- <li class="tab col s3"><a {% if siteType != constant('Piwik\\Plugins\\SitesManager\\SitesManager::SITE_TYPE_UNKNOWN') %} class="active" {% endif %} href="#integrations">{{ 'SitesManager_Integrations'|translate }}</a></li>
- <li class="tab col s3"><a {% if siteType == constant('Piwik\\Plugins\\SitesManager\\SitesManager::SITE_TYPE_UNKNOWN') %} class="active" {% endif %} href="#tracking-code">{{ 'CoreAdminHome_TrackingCode'|translate}}</a></li>
+ <li class="tab col s3"><a {% if siteType != constant('Piwik\\Plugins\\SitesManager\\SitesManager::SITE_TYPE_UNKNOWN') and (consentManagerName == false and ga3Used == false and ga4Used == false and gtmUsed == false) %} class="active" {% endif %} href="#integrations">{{ 'SitesManager_Integrations'|translate }}</a></li>
+ <li class="tab col s3"><a {% if siteType == constant('Piwik\\Plugins\\SitesManager\\SitesManager::SITE_TYPE_UNKNOWN') or consentManagerName or ga3Used or ga4Used or gtmUsed %} class="active" {% endif %} href="#tracking-code">{{ 'CoreAdminHome_TrackingCode'|translate}}</a></li>
<li class="tab col s3"><a href="#mtm">{{ 'SitesManager_SiteWithoutDataMatomoTagManager'|translate}}</a></li>
<li class="tab col s3"><a href="#other">{{ 'SitesManager_SiteWithoutDataOtherWays'|translate }}</a></li>
</ul>
@@ -47,6 +47,40 @@
</div>
<div id="tracking-code" class="col s12">
+
+ {% if consentManagerName %}
+ <p></p><p></p>
+ <div class="system notification notification-info">
+ <p> {{ 'PrivacyManager_ConsentManagerDetected'|translate(consentManagerName, '<a href="', consentManagerUrl, '" target="_blank" rel="noreferrer noopener">', '</a')|raw }}
+ </p>
+ {% if consentManagerIsConnected %}
+ <p> {{ 'PrivacyManager_ConsentManagerConnected'|translate(consentManagerName)|raw }}
+ </p>
+ {% endif %}
+ </div>
+ {% endif %}
+
+ {% if ga3Used %}
+ <p></p><p></p>
+ <div class="system notification notification-info">
+ {{ 'SitesManager_GADetected'|translate('Google Analytics 3', 'GA', '<a href="', 'https://matomo.org/faq/how-to/migrate-from-google-analytics-3-to-matomo/', '" target="_blank" rel="noreferrer noopener">', '</a>')|raw }}
+ </div>
+ {% endif %}
+
+ {% if ga4Used %}
+ <p></p><p></p>
+ <div class="system notification notification-info">
+ {{ 'SitesManager_GADetected'|translate('Google Analytics 4', 'GA', '<a href="', 'https://matomo.org/faq/how-to/migrate-from-google-analytics-4-to-matomo/', '" target="_blank" rel="noreferrer noopener">', '</a>')|raw }}
+ </div>
+ {% endif %}
+
+ {% if gtmUsed %}
+ <p></p><p></p>
+ <div class="system notification notification-info">
+ {{ 'SitesManager_GADetected'|translate('Google Tag Manager', 'GTM', '<a href="', 'https://matomo.org/faq/tag-manager/migrating-from-google-tag-manager/', '" target="_blank" rel="noreferrer noopener">', '</a>')|raw }}
+ </div>
+ {% endif %}
+
<h3>{{ 'CoreAdminHome_TrackingCode'|translate}}</h3>
<p>{{ 'CoreAdminHome_JSTracking_CodeNoteBeforeClosingHead'|translate("&lt;/head&gt;")|raw }}</p>
diff --git a/plugins/SitesManager/templates/_trackingCodeEmail.twig b/plugins/SitesManager/templates/_trackingCodeEmail.twig
index 922d3c021a..cb07e2f56a 100644
--- a/plugins/SitesManager/templates/_trackingCodeEmail.twig
+++ b/plugins/SitesManager/templates/_trackingCodeEmail.twig
@@ -2,6 +2,26 @@
{{ 'CoreAdminHome_JSTracking_CodeNoteBeforeClosingHeadEmail'|translate("'head'") }}
+{% if consentManagerName %}
+{{ 'CoreAdminHome_JSTracking_ConsentManagerDetected'|translate(consentManagerName, consentManagerUrl) }}
+{{ 'CoreAdminHome_JSTracking_ConsentManagerEmailNote'|translate }}
+{% endif %}
+
+{% if ga3Used %}
+{{ 'SitesManager_GADetectedEmail'|translate('Google Analytics 3', 'GA', 'https://matomo.org/faq/how-to/migrate-from-google-analytics-3-to-matomo/')|raw }}
+{{ 'CoreAdminHome_JSTracking_ConsentManagerEmailNote'|translate }}
+{% endif %}
+
+{% if ga4Used %}
+{{ 'SitesManager_GA4DetectedEmail'|translate('Google Analytics 4', 'GA', 'https://matomo.org/faq/how-to/migrate-from-google-analytics-4-to-matomo/')|raw }}
+{{ 'CoreAdminHome_JSTracking_ConsentManagerEmailNote'|translate }}
+{% endif %}
+
+{% if gtmUsed %}
+{{ 'SitesManager_GTMDetectedEmail'|translate('Google Tag Manager', 'GTM', 'https://matomo.org/faq/tag-manager/migrating-from-google-tag-manager/')|raw }}
+{{ 'CoreAdminHome_JSTracking_ConsentManagerEmailNote'|translate }}
+{% endif %}
+
{{ jsTag|raw }}
{% if showMatomoLinks %}{{ 'SitesManager_EmailInstructionsDocsPlainText'|translate('https://developer.matomo.org/guides/tracking-javascript-guide')|raw }}{% endif %}
diff --git a/plugins/Tour/API.php b/plugins/Tour/API.php
index 72c61e1a6e..5782df9e86 100644
--- a/plugins/Tour/API.php
+++ b/plugins/Tour/API.php
@@ -9,6 +9,7 @@
namespace Piwik\Plugins\Tour;
use Piwik\Piwik;
+use Piwik\SiteContentDetector;
use Piwik\Plugins\Tour\Engagement\Levels;
use Piwik\Plugins\Tour\Engagement\Challenges;
@@ -30,10 +31,14 @@ class API extends \Piwik\Plugin\API
*/
private $levels;
- public function __construct(Challenges $challenges, Levels $levels)
+ /** @var SiteContentDetector */
+ private $siteContentDetector;
+
+ public function __construct(Challenges $challenges, Levels $levels, SiteContentDetector $siteContentDetector)
{
$this->challenges = $challenges;
$this->levels = $levels;
+ $this->siteContentDetector = $siteContentDetector;
}
/**
@@ -48,20 +53,46 @@ class API extends \Piwik\Plugin\API
$challenges = array();
foreach ($this->challenges->getChallenges() as $challenge) {
- $challenges[] = array(
+
+ if ($challenge->isDisabled()) {
+ continue;
+ }
+
+ $challenges[] = [
'id' => $challenge->getId(),
'name' => $challenge->getName(),
'description' => $challenge->getDescription(),
'isCompleted' => $challenge->isCompleted(),
'isSkipped' => $challenge->isSkipped(),
'url' => $challenge->getUrl()
- );
+ ];
}
return $challenges;
}
/**
+ * Detect consent manager details for a site
+ *
+ * @return null|array[]
+ * @internal
+ */
+ public function detectConsentManager($idSite, $timeOut = 60)
+ {
+ Piwik::checkUserHasViewAccess($idSite);
+
+ $this->siteContentDetector->detectContent([SiteContentDetector::CONSENT_MANAGER]);
+ if ($this->siteContentDetector->consentManagerId) {
+ return ['name' => $this->siteContentDetector->consentManagerName,
+ 'url' => $this->siteContentDetector->consentManagerUrl,
+ 'isConnected' => $this->siteContentDetector->isConnected
+ ];
+ }
+
+ return null;
+ }
+
+ /**
* Skip a specific challenge.
*
* @param string $id
diff --git a/plugins/Tour/Engagement/Challenge.php b/plugins/Tour/Engagement/Challenge.php
index 164561c8ce..22836f6591 100644
--- a/plugins/Tour/Engagement/Challenge.php
+++ b/plugins/Tour/Engagement/Challenge.php
@@ -26,6 +26,11 @@ abstract class Challenge
private static $settings = null;
+ public function __construct()
+ {
+
+ }
+
/**
* The human readable name that will be shown in the onboarding widget. Should be max 3 or 4 words and represent an
* action, like "Add a report"
@@ -55,6 +60,19 @@ abstract class Challenge
}
/**
+ * By default challenges are enabled, if is not appropriate to display a challenge at this time because some condition
+ * has not been met then the challenge can be set as disabled by overriding this method. The constructor code will
+ * still be run every time the challenges are loaded. To disable a challenge based on plugin availablilty it is better
+ * to add a check to the Piwik\Plugins\Tour\Engagement::getChallenges() method
+ *
+ * @return false
+ */
+ public function isDisabled()
+ {
+ return false;
+ }
+
+ /**
* A detailed description that describes the value of the action the user needs to complete, or some tips on how
* to complete this challenge. Will be shown when hovering a challenge name.
* @return string
diff --git a/plugins/Tour/Engagement/ChallengeSetupConsentManager.php b/plugins/Tour/Engagement/ChallengeSetupConsentManager.php
new file mode 100644
index 0000000000..c81a51bedb
--- /dev/null
+++ b/plugins/Tour/Engagement/ChallengeSetupConsentManager.php
@@ -0,0 +1,77 @@
+<?php
+/**
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\Tour\Engagement;
+
+use Piwik\Piwik;
+use Piwik\SiteContentDetector;
+
+
+class ChallengeSetupConsentManager extends Challenge
+{
+
+ /** @var SiteContentDetector */
+ private $siteContentDetector;
+
+
+ /**
+ * @param SiteContentDetector $siteContentDetector
+ * @param string|null $siteData String of site content, content of the current site will be retrieved if left blank
+ */
+ public function __construct(SiteContentDetector $siteContentDetector, ?string $siteData = null)
+ {
+ parent::__construct();
+ $this->siteContentDetector = $siteContentDetector;
+ $this->siteContentDetector->detectContent([SiteContentDetector::CONSENT_MANAGER], null, $siteData);
+ }
+
+ public function getName()
+ {
+ return Piwik::translate('Tour_ConnectConsentManager', [$this->siteContentDetector->consentManagerName]);
+ }
+
+ public function getDescription()
+ {
+ return Piwik::translate('Tour_ConnectConsentManagerIntro', [$this->siteContentDetector->consentManagerName]);
+ }
+
+ public function getId()
+ {
+ return 'setup_consent_manager';
+ }
+
+ public function getConsentManagerId()
+ {
+ return $this->siteContentDetector->consentManagerId;
+ }
+
+ public function isCompleted()
+ {
+
+ if (!$this->siteContentDetector->consentManagerId) {
+ return true;
+ }
+
+ return $this->siteContentDetector->isConnected;
+ }
+
+ public function isDisabled()
+ {
+ return ($this->siteContentDetector->consentManagerId === null);
+ }
+
+ public function getUrl()
+ {
+ if ($this->siteContentDetector->consentManagerId === null) {
+ return '';
+ }
+
+ return $this->siteContentDetector->consentManagerUrl;
+ }
+
+} \ No newline at end of file
diff --git a/plugins/Tour/Engagement/Challenges.php b/plugins/Tour/Engagement/Challenges.php
index 40b9cffece..ec09b96093 100644
--- a/plugins/Tour/Engagement/Challenges.php
+++ b/plugins/Tour/Engagement/Challenges.php
@@ -38,9 +38,11 @@ class Challenges
{
/** @var Challenge[] $challenges */
$challenges = array(
- StaticContainer::get(ChallengeTrackingCode::class),
+ StaticContainer::get(ChallengeTrackingCode::class),
);
+ $challenges[] = StaticContainer::get(ChallengeSetupConsentManager::class);
+
if ($this->isActivePlugin('Goals')) {
$challenges[] = StaticContainer::get(ChallengeCreatedGoal::class);
}
diff --git a/plugins/Tour/lang/en.json b/plugins/Tour/lang/en.json
index a864ec16dc..faa12422fc 100644
--- a/plugins/Tour/lang/en.json
+++ b/plugins/Tour/lang/en.json
@@ -50,6 +50,8 @@
"Part2Title": "Keep it up %1$s. You’re well on your way to becoming a Matomo expert.",
"Part3Title": "You are on the right track %1$s. Continue, and become a Matomo expert.",
"Part4Title": "Great progress %1$s. Only a few more challenges to complete.",
- "OnlyVisibleToSuperUser": "Only you as a %1$ssuperuser%2$s can see this widget."
+ "OnlyVisibleToSuperUser": "Only you as a %1$ssuperuser%2$s can see this widget.",
+ "ConnectConsentManager": "Connect %1$s consent manager",
+ "ConnectConsentManagerIntro": "%1$s consent manager was detected on your website, learn how to connect %1$s and Matomo so they can work together."
}
}
diff --git a/plugins/Tour/tests/System/ConsentManagerDetectionTest.php b/plugins/Tour/tests/System/ConsentManagerDetectionTest.php
new file mode 100644
index 0000000000..0f09ae02ac
--- /dev/null
+++ b/plugins/Tour/tests/System/ConsentManagerDetectionTest.php
@@ -0,0 +1,53 @@
+<?php
+/**
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+namespace Piwik\Plugins\Tour\tests\System;
+
+use Piwik\Plugins\Tour\Engagement\ChallengeSetupConsentManager;
+use Piwik\SiteContentDetector;
+use Piwik\Tests\Framework\TestCase\SystemTestCase;
+
+/**
+ * @group ConsentManagerDetectionTest
+ * @group TourTest
+ * @group Plugins
+ */
+class ConsentManagerDetectionTest extends SystemTestCase
+{
+
+ public function setUp(): void
+ {
+ parent::setUp();
+ }
+
+ public function test_detectConsentManager_disableWhenNotDetected()
+ {
+ $siteData = '';
+ $challenge = new ChallengeSetupConsentManager(new SiteContentDetector(), $siteData);
+ $this->assertTrue($challenge->isDisabled());
+ }
+
+ public function test_detectConsentManager_detectedButNotConnected()
+ {
+ $siteData = '<html><head><script src="https://osano.com/uhs9879874hthg.js"></script></head><body>A site</body></html>';
+ $challenge = new ChallengeSetupConsentManager(new SiteContentDetector(), $siteData);
+ $this->assertFalse($challenge->isDisabled());
+ $this->assertFalse($challenge->isCompleted());
+ $this->assertEquals('osano', $challenge->getConsentManagerId());
+ }
+
+ public function test_detectConsentManager_detectedAndConnected()
+ {
+ $siteData = "<html><head><script src='https://osano.com/uhs9879874hthg.js'></script><script>Osano.cm.addEventListener('osano-cm-consent-changed', (change) => { console.log('cm-change'); consentSet(change); });</script></head><body>A site</body></html>";
+ $challenge = new ChallengeSetupConsentManager(new SiteContentDetector(), $siteData);
+ $this->assertFalse($challenge->isDisabled());
+ $this->assertTrue($challenge->isCompleted());
+ $this->assertEquals('osano', $challenge->getConsentManagerId());
+ }
+
+}
diff --git a/plugins/Tour/tests/UI/Tour_ConsentManager_spec.js b/plugins/Tour/tests/UI/Tour_ConsentManager_spec.js
new file mode 100644
index 0000000000..6c4aa750da
--- /dev/null
+++ b/plugins/Tour/tests/UI/Tour_ConsentManager_spec.js
@@ -0,0 +1,29 @@
+/**!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ *
+ */
+describe("Tour_ConsentManager", function () {
+ this.timeout(0);
+
+ this.fixture = "Piwik\\Tests\\Fixtures\\EmptySiteWithSiteContentDetection";
+
+ var generalParams = 'idSite=1&period=day&date=2010-01-03',
+ widgetizeParams = "module=Widgetize&action=iframe";
+
+ var widgetUrl = "?" + widgetizeParams + "&" + generalParams + "&moduleToWidgetize=Tour&actionToWidgetize=getEngagement";
+
+
+ before(async function () {
+ testEnvironment.pluginsToLoad = ['Tour'];
+ testEnvironment.save();
+ });
+
+ it('should show consent manager challenge in widget', async function () {
+ await page.goto(widgetUrl);
+ expect(await page.screenshot()).to.matchImage('widget_initial');
+ });
+
+});
diff --git a/plugins/Tour/tests/UI/expected-screenshots/Tour_ConsentManager_widget_initial.png b/plugins/Tour/tests/UI/expected-screenshots/Tour_ConsentManager_widget_initial.png
new file mode 100644
index 0000000000..4390e829f3
--- /dev/null
+++ b/plugins/Tour/tests/UI/expected-screenshots/Tour_ConsentManager_widget_initial.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e8ba8ff37ce30d38b0238d15ad91d516ec991241e8531b1b2d50c280013865e7
+size 41466
diff --git a/tests/PHPUnit/Fixtures/DisableSiteContentDetection.php b/tests/PHPUnit/Fixtures/DisableSiteContentDetection.php
new file mode 100644
index 0000000000..3ac9ac74e2
--- /dev/null
+++ b/tests/PHPUnit/Fixtures/DisableSiteContentDetection.php
@@ -0,0 +1,49 @@
+<?php
+/**
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+namespace Piwik\Tests\Fixtures;
+
+use Piwik\Tests\Framework\Fixture;
+use Piwik\SiteContentDetector;
+use Piwik\Tests\Framework\Mock\FakeSiteContentDetector;
+
+/**
+ * Fixture that disables site content detection by returning null values and preventing a live request
+ *
+ */
+class DisableSiteContentDetection extends Fixture
+{
+
+ public function provideContainerConfig()
+ {
+ $mockData = [
+ 'consentManagerId' => null,
+ 'consentManagerName' => null,
+ 'consentManagerUrl' => null,
+ 'isConnected' => false,
+ 'ga3' => false,
+ 'ga4' => false,
+ 'gtm' => false
+ ];
+
+ return [
+ SiteContentDetector::class => \DI\autowire(FakeSiteContentDetector::class)
+ ->constructorParameter('mockData', $mockData)
+ ];
+ }
+
+ public function setUp(): void
+ {
+ // empty
+ }
+
+ public function tearDown(): void
+ {
+ // empty
+ }
+
+}
diff --git a/tests/PHPUnit/Fixtures/EmptySiteWithSiteContentDetection.php b/tests/PHPUnit/Fixtures/EmptySiteWithSiteContentDetection.php
new file mode 100644
index 0000000000..9a3d3666d9
--- /dev/null
+++ b/tests/PHPUnit/Fixtures/EmptySiteWithSiteContentDetection.php
@@ -0,0 +1,59 @@
+<?php
+/**
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+namespace Piwik\Tests\Fixtures;
+
+use Piwik\Tests\Framework\Fixture;
+use Piwik\SiteContentDetector;
+use Piwik\Tests\Framework\Mock\FakeSiteContentDetector;
+
+/**
+ * Fixture that adds one site with no visits and configures site content detection test data so that the
+ * 'Osano' consent manager will be detected on the site.
+ */
+class EmptySiteWithSiteContentDetection extends Fixture
+{
+ public $idSite = 1;
+
+ public function provideContainerConfig()
+ {
+ $mockData = [
+ 'consentManagerId' => 'osano',
+ 'consentManagerName' => 'Osano',
+ 'consentManagerUrl' => 'https://matomo.org/faq/how-to/using-osano-consent-manager-with-matomo',
+ 'isConnected' => true,
+ 'ga3' => false,
+ 'ga4' => false,
+ 'gtm' => false
+ ];
+
+ return [
+ SiteContentDetector::class => \DI\autowire(FakeSiteContentDetector::class)
+ ->constructorParameter('mockData', $mockData)
+ ];
+ }
+
+
+ public function setUp(): void
+ {
+ Fixture::createSuperUser();
+ $this->setUpWebsites();
+ }
+
+ public function tearDown(): void
+ {
+ // empty
+ }
+
+ private function setUpWebsites()
+ {
+ if (!self::siteCreated($idSite = 1)) {
+ self::createWebsite('2021-01-01');
+ }
+ }
+
+}
diff --git a/tests/PHPUnit/Fixtures/EmptySiteWithSiteContentDetectionGA3.php b/tests/PHPUnit/Fixtures/EmptySiteWithSiteContentDetectionGA3.php
new file mode 100644
index 0000000000..fb94ce6e6e
--- /dev/null
+++ b/tests/PHPUnit/Fixtures/EmptySiteWithSiteContentDetectionGA3.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+namespace Piwik\Tests\Fixtures;
+
+use Piwik\Tests\Framework\Fixture;
+use Piwik\SiteContentDetector;
+use Piwik\Tests\Framework\Mock\FakeSiteContentDetector;
+
+/**
+ * Fixture that adds one site with no visits and configures site content detection test data so that GA3 will be
+ * detected on the site.
+ */
+class EmptySiteWithSiteContentDetectionGA3 extends Fixture
+{
+ public $idSite = 1;
+
+ public function provideContainerConfig()
+ {
+ $mockData = [
+ 'consentManagerId' => null,
+ 'consentManagerName' => null,
+ 'consentManagerUrl' => null,
+ 'isConnected' => false,
+ 'ga3' => true,
+ 'ga4' => false,
+ 'gtm' => false
+ ];
+
+ return [
+ SiteContentDetector::class => \DI\autowire(FakeSiteContentDetector::class)
+ ->constructorParameter('mockData', $mockData)
+ ];
+ }
+
+ public function setUp(): void
+ {
+ Fixture::createSuperUser();
+ $this->setUpWebsites();
+ }
+
+ public function tearDown(): void
+ {
+ // empty
+ }
+
+ private function setUpWebsites()
+ {
+ if (!self::siteCreated($idSite = 1)) {
+ self::createWebsite('2021-01-01');
+ }
+ }
+
+}
diff --git a/tests/PHPUnit/Fixtures/EmptySiteWithSiteContentDetectionGA4.php b/tests/PHPUnit/Fixtures/EmptySiteWithSiteContentDetectionGA4.php
new file mode 100644
index 0000000000..04c8c22bc3
--- /dev/null
+++ b/tests/PHPUnit/Fixtures/EmptySiteWithSiteContentDetectionGA4.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+namespace Piwik\Tests\Fixtures;
+
+use Piwik\Tests\Framework\Fixture;
+use Piwik\SiteContentDetector;
+use Piwik\Tests\Framework\Mock\FakeSiteContentDetector;
+
+/**
+ * Fixture that adds one site with no visits and configures site content detection test data so that GA4 will be
+ * detected on the site.
+ */
+class EmptySiteWithSiteContentDetectionGA4 extends Fixture
+{
+ public $idSite = 1;
+
+ public function provideContainerConfig()
+ {
+ $mockData = [
+ 'consentManagerId' => null,
+ 'consentManagerName' => null,
+ 'consentManagerUrl' => null,
+ 'isConnected' => false,
+ 'ga3' => false,
+ 'ga4' => true,
+ 'gtm' => false
+ ];
+
+ return [
+ SiteContentDetector::class => \DI\autowire(FakeSiteContentDetector::class)
+ ->constructorParameter('mockData', $mockData)
+ ];
+ }
+
+ public function setUp(): void
+ {
+ Fixture::createSuperUser();
+ $this->setUpWebsites();
+ }
+
+ public function tearDown(): void
+ {
+ // empty
+ }
+
+ private function setUpWebsites()
+ {
+ if (!self::siteCreated($idSite = 1)) {
+ self::createWebsite('2021-01-01');
+ }
+ }
+
+}
diff --git a/tests/PHPUnit/Fixtures/EmptySiteWithSiteContentDetectionGTM.php b/tests/PHPUnit/Fixtures/EmptySiteWithSiteContentDetectionGTM.php
new file mode 100644
index 0000000000..cdadb7b7e7
--- /dev/null
+++ b/tests/PHPUnit/Fixtures/EmptySiteWithSiteContentDetectionGTM.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+namespace Piwik\Tests\Fixtures;
+
+use Piwik\Tests\Framework\Fixture;
+use Piwik\SiteContentDetector;
+use Piwik\Tests\Framework\Mock\FakeSiteContentDetector;
+
+/**
+ * Fixture that adds one site with no visits and configures site content detection test data so that GTM will be
+ * detected on the site.
+ */
+class EmptySiteWithSiteContentDetectionGTM extends Fixture
+{
+ public $idSite = 1;
+
+ public function provideContainerConfig()
+ {
+ $mockData = [
+ 'consentManagerId' => null,
+ 'consentManagerName' => null,
+ 'consentManagerUrl' => null,
+ 'isConnected' => false,
+ 'ga3' => false,
+ 'ga4' => false,
+ 'gtm' => true
+ ];
+
+ return [
+ SiteContentDetector::class => \DI\autowire(FakeSiteContentDetector::class)
+ ->constructorParameter('mockData', $mockData)
+ ];
+ }
+
+ public function setUp(): void
+ {
+ Fixture::createSuperUser();
+ $this->setUpWebsites();
+ }
+
+ public function tearDown(): void
+ {
+ // empty
+ }
+
+ private function setUpWebsites()
+ {
+ if (!self::siteCreated($idSite = 1)) {
+ self::createWebsite('2021-01-01');
+ }
+ }
+
+}
diff --git a/tests/PHPUnit/Framework/Mock/FakeSiteContentDetector.php b/tests/PHPUnit/Framework/Mock/FakeSiteContentDetector.php
new file mode 100644
index 0000000000..2d5ccbd8b6
--- /dev/null
+++ b/tests/PHPUnit/Framework/Mock/FakeSiteContentDetector.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace Piwik\Tests\Framework\Mock;
+
+use Piwik\SiteContentDetector;
+
+class FakeSiteContentDetector extends SiteContentDetector
+{
+
+ private $mockData;
+
+ public function __construct($mockData = [])
+ {
+ $this->mockData = $mockData;
+ }
+
+ public function detectContent(array $detectContent = [SiteContentDetector::ALL_CONTENT],
+ ?int $idSite = null, ?string $siteData = null, int $timeOut = 60)
+ {
+
+ foreach ($this->mockData as $property => $value) {
+ if (property_exists($this, $property)) {
+ $this->{$property} = $value;
+ }
+ }
+
+ return true;
+ }
+
+}
diff --git a/tests/PHPUnit/Unit/SiteContentDetectorTest.php b/tests/PHPUnit/Unit/SiteContentDetectorTest.php
new file mode 100644
index 0000000000..9db3bed86d
--- /dev/null
+++ b/tests/PHPUnit/Unit/SiteContentDetectorTest.php
@@ -0,0 +1,109 @@
+<?php
+/**
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Tests\Unit;
+
+use Piwik\SiteContentDetector;
+
+/**
+ * @group Core
+ * @group SiteContentDetectorTest
+*/
+class SiteContentDetectorTest extends \PHPUnit\Framework\TestCase
+{
+
+ public function test_detectsConsentManager_NotConnected()
+ {
+ $siteData = '<html lang="en"><head><title>A site</title></head><script src="https://osano.com/uhs9879874hthg.js"></script></head><body>A site</body></html>';
+
+ $scd = SiteContentDetector::getInstance();
+ $scd->detectContent([SiteContentDetector::ALL_CONTENT], null, $siteData);
+
+ $this->assertEquals('osano', $scd->consentManagerId);
+ $this->assertFalse($scd->isConnected);
+ }
+
+ public function test_detectsConsentManager_Connected()
+ {
+ $siteData = "<html lang='en'><head><title>A site</title></head><script src='https://osano.com/uhs9879874hthg.js'></script><script>Osano.cm.addEventListener('osano-cm-consent-changed', (change) => { console.log('cm-change'); consentSet(change); });</script></><body>A site</body></html>";
+ $scd = SiteContentDetector::getInstance();
+ $scd->detectContent([SiteContentDetector::ALL_CONTENT], null, $siteData);
+
+ $this->assertEquals('osano', $scd->consentManagerId);
+ $this->assertTrue($scd->isConnected);
+ }
+
+ public function test_detectsGA3_IfPresent()
+ {
+ $siteData = "<html lang=\"en\"><head><title>A site</title></head><script><script>
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+ })(window,document,'script','//xxxxxx/analytics.js','ga');
+ ga('create', 'UA-xxxxxxxx-x', 'xxxxxx.com');
+ ga('send', 'pageview');
+ </script></head><body>A site</body></html>";
+ $scd = SiteContentDetector::getInstance();
+ $scd->detectContent([SiteContentDetector::GA3], null, $siteData);
+
+ $this->assertEmpty($scd->consentManagerId);
+ $this->assertFalse($scd->ga4);
+ $this->assertFalse($scd->gtm);
+ $this->assertTrue($scd->ga3);
+ }
+
+ public function test_detectsGA4_IfPresent()
+ {
+ $siteData = "<html lang=\"en\"><head></head><title>A site</title></head><script><script>
+ <!-- Google tag (gtag.js) -->
+ <script async src='https://www.googletagmanager.com/gtag/js?id=GA_TRACKING_ID'></script>
+ <script>window.dataLayer = window.dataLayer || [];
+ function gtag(){window.dataLayer.push(arguments);}
+ gtag('js', new Date());
+ gtag('config', 'GA_TRACKING_ID');
+ </script>
+ </head><body>A site</body></html>";
+ $scd = SiteContentDetector::getInstance();
+ $scd->detectContent([SiteContentDetector::GA4], null, $siteData);
+
+ $this->assertFalse($scd->ga3);
+ $this->assertFalse($scd->gtm);
+ $this->assertTrue($scd->ga4);
+ }
+
+ public function test_detectsGTM_IfPresent()
+ {
+ $siteData = "<html lang=\"en\"><head><title>A site</title></head>
+ <!-- Google Tag Manager -->
+ <script type='hash84759fa843b-text/javascript'>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
+ new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
+ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
+ 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
+ })(window,document,'script','dataLayer','GTM-NRTVJJC');</script>
+ <!-- End Google Tag Manager -->
+ </head><body>A site</body></html>";
+ $scd = SiteContentDetector::getInstance();
+ $scd->detectContent([SiteContentDetector::GTM], null, $siteData);
+
+ $this->assertFalse($scd->ga3);
+ $this->assertFalse($scd->ga4);
+ $this->assertTrue($scd->gtm);
+ }
+
+ public function test_doesNotDetectsGA_IfNotPresent()
+ {
+ $siteData = "<html lang=\"en\"><head><title>A site</title><script><script>console.log('abc');</script></head><body>A site</body></html>";
+ $scd = SiteContentDetector::getInstance();
+ $scd->detectContent([SiteContentDetector::ALL_CONTENT], null, $siteData);
+
+ $this->assertFalse($scd->ga3);
+ $this->assertFalse($scd->ga4);
+ $this->assertFalse($scd->gtm);
+ }
+
+}
diff --git a/tests/UI/expected-screenshots/EmptySite_ConsentManager_emptySiteDashboard.png b/tests/UI/expected-screenshots/EmptySite_ConsentManager_emptySiteDashboard.png
new file mode 100644
index 0000000000..f08264af08
--- /dev/null
+++ b/tests/UI/expected-screenshots/EmptySite_ConsentManager_emptySiteDashboard.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:78987ae86702d6e40c090a3def12bb746ff230403dd57953814595b79fcac806
+size 165108
diff --git a/tests/UI/expected-screenshots/EmptySite_GA3_emptySiteDashboard.png b/tests/UI/expected-screenshots/EmptySite_GA3_emptySiteDashboard.png
new file mode 100644
index 0000000000..90a1449ffe
--- /dev/null
+++ b/tests/UI/expected-screenshots/EmptySite_GA3_emptySiteDashboard.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3cc34a296f89f1e6ec973a903ede8935a63ea5347929e3c4724157a3cfce7226
+size 161397
diff --git a/tests/UI/expected-screenshots/EmptySite_GA4_emptySiteDashboard.png b/tests/UI/expected-screenshots/EmptySite_GA4_emptySiteDashboard.png
new file mode 100644
index 0000000000..7d0c40a31d
--- /dev/null
+++ b/tests/UI/expected-screenshots/EmptySite_GA4_emptySiteDashboard.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d1d8100d3e411ec046cc7e01d3ebba8adb10476fdeef093814a076589014e0f0
+size 161320
diff --git a/tests/UI/expected-screenshots/EmptySite_GTM_emptySiteDashboard.png b/tests/UI/expected-screenshots/EmptySite_GTM_emptySiteDashboard.png
new file mode 100644
index 0000000000..f8884c6324
--- /dev/null
+++ b/tests/UI/expected-screenshots/EmptySite_GTM_emptySiteDashboard.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:66e933cbba77a4bafe51067e28c2ba1636fbb0d909906f2efe97faf5a6c4d7ce
+size 160843
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_admin_manage_tracking_code.png b/tests/UI/expected-screenshots/UIIntegrationTest_admin_manage_tracking_code.png
index 37e1990847..973fd2a053 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_admin_manage_tracking_code.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_admin_manage_tracking_code.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0108aed2c28f0e209b7007a7a5c214173639c1728f6e763599b328706b4925f8
-size 471865
+oid sha256:294b2324f46088d86184341251832cfcf23cddaca00df4b2fef6645b6d74e74f
+size 471902
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard3.png b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard3.png
index fcb5c7a58d..07bcdbfb5a 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard3.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard3.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1ec360a961fc5c47f47e8137667420ed89c76e6fe69ffcde02302e8e8e5d97a4
-size 704446
+oid sha256:02ca84e8f6f42eb0b686def9934310cf11bdfabb5a8dbc107514f4177adb9a25
+size 704651
diff --git a/tests/UI/specs/EmptySite_ConsentManager_spec.js b/tests/UI/specs/EmptySite_ConsentManager_spec.js
new file mode 100644
index 0000000000..072f84f490
--- /dev/null
+++ b/tests/UI/specs/EmptySite_ConsentManager_spec.js
@@ -0,0 +1,25 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * Screenshot integration tests.
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+describe("EmptySite_ConsentManager", function () {
+
+ this.fixture = "Piwik\\Tests\\Fixtures\\EmptySiteWithSiteContentDetection";
+
+ const generalParams = 'idSite=1&period=day&date=2010-01-03';
+
+ it('should show the tracking code if the website has no recorded data', async function () {
+ const urlToTest = "?" + generalParams + "&module=CoreHome&action=index";
+ await page.goto(urlToTest);
+
+ const pageElement = await page.$('.page');
+ expect(await pageElement.screenshot()).to.matchImage('emptySiteDashboard');
+ });
+
+
+});
diff --git a/tests/UI/specs/EmptySite_GA3_spec.js b/tests/UI/specs/EmptySite_GA3_spec.js
new file mode 100644
index 0000000000..81ebbed5ba
--- /dev/null
+++ b/tests/UI/specs/EmptySite_GA3_spec.js
@@ -0,0 +1,24 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * Screenshot integration tests.
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+describe("EmptySite_GA3", function () {
+
+ this.fixture = "Piwik\\Tests\\Fixtures\\EmptySiteWithSiteContentDetectionGA3";
+
+ const generalParams = 'idSite=1&period=day&date=2010-01-03';
+
+ it('should show the tracking code if the website has no recorded data and GA3 guide', async function () {
+ const urlToTest = "?" + generalParams + "&module=CoreHome&action=index";
+ await page.goto(urlToTest);
+
+ const pageElement = await page.$('.page');
+ expect(await pageElement.screenshot()).to.matchImage('emptySiteDashboard');
+ });
+
+});
diff --git a/tests/UI/specs/EmptySite_GA4_spec.js b/tests/UI/specs/EmptySite_GA4_spec.js
new file mode 100644
index 0000000000..268c025fa7
--- /dev/null
+++ b/tests/UI/specs/EmptySite_GA4_spec.js
@@ -0,0 +1,24 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * Screenshot integration tests.
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+describe("EmptySite_GA4", function () {
+
+ this.fixture = "Piwik\\Tests\\Fixtures\\EmptySiteWithSiteContentDetectionGA4";
+
+ const generalParams = 'idSite=1&period=day&date=2010-01-03';
+
+ it('should show the tracking code if the website has no recorded data and GA4 guide', async function () {
+ const urlToTest = "?" + generalParams + "&module=CoreHome&action=index";
+ await page.goto(urlToTest);
+
+ const pageElement = await page.$('.page');
+ expect(await pageElement.screenshot()).to.matchImage('emptySiteDashboard');
+ });
+
+});
diff --git a/tests/UI/specs/EmptySite_GTM_spec.js b/tests/UI/specs/EmptySite_GTM_spec.js
new file mode 100644
index 0000000000..3d869706c6
--- /dev/null
+++ b/tests/UI/specs/EmptySite_GTM_spec.js
@@ -0,0 +1,24 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * Screenshot integration tests.
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+describe("EmptySite_GTM", function () {
+
+ this.fixture = "Piwik\\Tests\\Fixtures\\EmptySiteWithSiteContentDetectionGTM";
+
+ const generalParams = 'idSite=1&period=day&date=2010-01-03';
+
+ it('should show the tracking code if the website has no recorded data and GTM guide', async function () {
+ const urlToTest = "?" + generalParams + "&module=CoreHome&action=index";
+ await page.goto(urlToTest);
+
+ const pageElement = await page.$('.page');
+ expect(await pageElement.screenshot()).to.matchImage('emptySiteDashboard');
+ });
+
+});