PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / trunk
Matomo Analytics – Powerful, Privacy-First Insights for WordPress vtrunk
5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / assets / js / settings.js
matomo / assets / js Last commit date
blocks 4 years ago admin.js 2 weeks ago asset_manager_core_js.js 1 week ago iframeResizer.contentWindow.min.js 2 years ago iframeResizer.min.js 2 years ago marketplace_setup_wizard.js 1 month ago optout.js 1 year ago settings.js 1 year ago
settings.js
85 lines
1 /**
2 * Matomo - free/libre analytics platform
3 *
4 * @link https://matomo.org
5 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
6 * @package matomo
7 */
8
9 window.jQuery(document).ready(function ($) {
10 // generated tracking code update
11 if (typeof mtmTrackingSettingsAjax !== 'undefined' && mtmTrackingSettingsAjax.ajax_url) {
12 var DEFAULT_DEBOUNCE_DELAY = 300;
13
14 function debounce(fn, delayInMs) {
15 var timeout;
16
17 delayInMs = delayInMs || DEFAULT_DEBOUNCE_DELAY;
18
19 return function wrapper() {
20 var args = Array.from(arguments);
21 if (timeout) {
22 clearTimeout(timeout);
23 }
24
25 timeout = setTimeout(() => {
26 fn.apply(this, args);
27 }, delayInMs);
28 };
29 }
30
31 function updateGeneratedTrackingCode() {
32 var settings = $('form#tracking-settings').serializeArray().reduce(function (accumulator, current) {
33 if (/^_/.test(current.name)) {
34 return accumulator;
35 }
36 accumulator[current.name.replace(/^matomo\[(.*?)\]$/, '$1')] = current.value;
37 return accumulator;
38 }, {});
39
40 $.post(
41 mtmTrackingSettingsAjax.ajax_url,
42 Object.assign(settings, {
43 _ajax_nonce: mtmTrackingSettingsAjax.nonce,
44 action: 'matomo_generate_tracking_code',
45 }),
46 function (data) {
47 if (data) {
48 $('#generated_tracking_code').text(data.script);
49 $('#generated_noscript_code').text(data.noscript);
50 }
51 },
52 );
53 }
54
55 updateGeneratedTrackingCode = debounce(updateGeneratedTrackingCode, 300);
56
57 $('#auto-tracking-settings').on('change', ':not(#generatedTrackingCode)', updateGeneratedTrackingCode);
58 updateGeneratedTrackingCode();
59 }
60
61 // warn if user has unsaved changes
62 var initialFormContents = $('#tracking-settings').serialize();
63 function beforePageUnload(e) {
64 var currentFormContents = $('#tracking-settings').serialize();
65 if (initialFormContents !== currentFormContents) {
66 e.preventDefault();
67 }
68 }
69
70 window.addEventListener('beforeunload', beforePageUnload);
71 $('form#tracking-settings').on('submit', function () {
72 window.removeEventListener('beforeunload', beforePageUnload);
73 });
74
75 // auto-expand section if hash points to section
76 function onHashChange() {
77 var target = $(window.location.hash);
78 if (target.length) {
79 target.closest('.collapsible-settings').addClass('expanded');
80 }
81 }
82 window.addEventListener('hashchange', onHashChange);
83 onHashChange();
84 });
85