diff --git a/i18n/default_de.json b/i18n/default_de.json index 2087f85..63547ca 100644 --- a/i18n/default_de.json +++ b/i18n/default_de.json @@ -76,6 +76,7 @@ "Allow user theme": "Benutzer-Theme erlauben", "Allowed CORS origins": "Erlaubte CORS-Origins", "Allowed email domains": "Erlaubte E-Mail-Domains", + "Allowed events": "Erlaubte Events", "Allowed file types: PNG": "Erlaubte Dateitypen: PNG", "Allowed file types: SVG, PNG, JPG, WEBP": "Erlaubte Dateitypen: SVG, PNG, JPG, WEBP", "Allowed range: 1-365 days (default: 30)": "Erlaubter Bereich: 1–365 Tage (Standard: 30)", diff --git a/i18n/default_en.json b/i18n/default_en.json index 362b65c..87fe25d 100644 --- a/i18n/default_en.json +++ b/i18n/default_en.json @@ -76,6 +76,7 @@ "Allow user theme": "Allow user theme", "Allowed CORS origins": "Allowed CORS origins", "Allowed email domains": "Allowed email domains", + "Allowed events": "Allowed events", "Allowed file types: PNG": "Allowed file types: PNG", "Allowed file types: SVG, PNG, JPG, WEBP": "Allowed file types: SVG, PNG, JPG, WEBP", "Allowed range: 1-365 days (default: 30)": "Allowed range: 1-365 days (default: 30)", diff --git a/pages/admin/settings/telemetry(default).phtml b/pages/admin/settings/telemetry(default).phtml index d2062fe..08f0e13 100644 --- a/pages/admin/settings/telemetry(default).phtml +++ b/pages/admin/settings/telemetry(default).phtml @@ -60,70 +60,59 @@ $disabledAttr = $isReadOnly ? 'disabled' : ''; ?>
-
+
- + + +
-
- -
-
- - -
-
> - - -
-
-
+ + -
- - - - - - -
-
- -
-
- - - -
+
> +
+
+ +
+
+ +
+ + + +
+ +
diff --git a/web/js/components/app-settings-telemetry.js b/web/js/components/app-settings-telemetry.js index 3186f1a..218a9d7 100644 --- a/web/js/components/app-settings-telemetry.js +++ b/web/js/components/app-settings-telemetry.js @@ -1,5 +1,7 @@ /** - * Tracks settings page interactions for telemetry. + * Hides the telemetry sub-config (sampling + allowed events) when the + * master toggle is off. The sub-block is one container so all dependent + * fields stay in sync together. */ import { resolveHost } from '../core/app-dom.js'; import { syncControlState } from '../core/app-conditional-controls.js'; @@ -7,30 +9,21 @@ import { syncControlState } from '../core/app-conditional-controls.js'; export const initTelemetrySettings = (root = document, options = {}) => { const host = resolveHost(root); const toggleSelector = String(options.toggleSelector || '[data-telemetry-enabled-toggle]').trim() || '[data-telemetry-enabled-toggle]'; - const samplingFieldsetSelector = String(options.samplingFieldsetSelector || '[data-telemetry-sampling-fieldset]').trim() || '[data-telemetry-sampling-fieldset]'; - const samplingRowSelector = String(options.samplingRowSelector || '[data-telemetry-sampling-row]').trim() || '[data-telemetry-sampling-row]'; + const dependentSelector = String(options.dependentSelector || '[data-telemetry-when-enabled]').trim() || '[data-telemetry-when-enabled]'; const toggle = host.querySelector(toggleSelector); - const samplingFieldset = host.querySelector(samplingFieldsetSelector); - const samplingRow = host.querySelector(samplingRowSelector); + const dependent = host.querySelector(dependentSelector); - if (!toggle || !samplingFieldset) { + if (!toggle || !dependent) { return { destroy: () => {} }; } - const syncSamplingVisibility = () => { - const active = Boolean(toggle.checked); - syncControlState(samplingFieldset, active); - if (samplingRow instanceof HTMLElement) { - samplingRow.hidden = !active; - } - }; - - toggle.addEventListener('change', syncSamplingVisibility); - syncSamplingVisibility(); + const sync = () => syncControlState(dependent, Boolean(toggle.checked)); + toggle.addEventListener('change', sync); + sync(); return { destroy: () => { - toggle.removeEventListener('change', syncSamplingVisibility); + toggle.removeEventListener('change', sync); }, }; };