From de8715db58ec957871773131fd0c3a7c0147f3ed Mon Sep 17 00:00:00 2001 From: datorik Date: Tue, 24 Feb 2026 17:23:07 +0200 Subject: [PATCH 01/15] Require full registration - API --- js/src/api.js | 11 +++++++++++ js/src/main.js | 15 +++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/js/src/api.js b/js/src/api.js index 5804cb8..57a5cf9 100644 --- a/js/src/api.js +++ b/js/src/api.js @@ -343,6 +343,17 @@ const userUpdateDoboard = async (projectToken, accountId, sessionId, userId, tim }; }; +const getProjectDoboard = async (projectToken, accountId) => { + const sessionId = localStorage.getItem('spotfix_session_id'); + const data = { + project_token: projectToken, + }; + if (sessionId) { + data.session_id = sessionId; + } + return await spotfixApiCall(data, 'project_get', accountId); +}; + const getReleaseVersion = async () => { try { const res = await fetch('https://api.github.com/repos/CleanTalk/SpotFix/tags'); diff --git a/js/src/main.js b/js/src/main.js index b3d0a9b..796e205 100644 --- a/js/src/main.js +++ b/js/src/main.js @@ -17,6 +17,21 @@ function spotFixInit() { new CleanTalkWidgetDoboard({}, 'wrap'); loadBotDetector(); loadTinyMCE(); + + const projectToken = localStorage.getItem('spotfix_project_token'); + const accountId = localStorage.getItem('spotfix_company_id'); + if (projectToken && accountId) { + getProjectDoboard(projectToken, accountId) + .then(result => { + if (result && result?.projects && result?.projects[0]) { + const project = result?.projects[0]; + if (project?.require_full_registration !== undefined) { + localStorage.setItem('spotfix_require_full_registration', project?.require_full_registration); + } + } + }) + .catch(err => console.error('project_get error:', err)); + } } function loadBotDetector() { From bc859e6ec0ec01b7d67131faca840697e78c03ab Mon Sep 17 00:00:00 2001 From: datorik Date: Tue, 24 Feb 2026 17:44:13 +0200 Subject: [PATCH 02/15] Require full registration - text --- js/src/widget.js | 21 +++++++++++++++++++++ styles/doboard-widget.css | 12 ++++++++++++ 2 files changed, 33 insertions(+) diff --git a/js/src/widget.js b/js/src/widget.js index 17ea452..5af502b 100644 --- a/js/src/widget.js +++ b/js/src/widget.js @@ -643,6 +643,27 @@ class CleanTalkWidgetDoboard { document.querySelector('.doboard_task_widget-login').classList.add('hidden'); } + const requireFullRegistration = localStorage.getItem('spotfix_require_full_registration') === '1'; + const titleContainer = document.getElementById('doboard_task_widget-title')?.closest('.doboard_task_widget-input-container'); + const descriptionContainer = document.getElementById('doboard_task_widget-description-container'); + const requireFullRegistrationMessage = document.getElementById('doboard_task_widget-require_full_registration'); + const submitButtonContainer = document.getElementById('doboard_task_widget-submit_button')?.closest('.doboard_task_widget-field'); + const visibilityToggle = document.querySelector('.doboard_task_widget-visibility-toggle'); + + if (requireFullRegistration && !sessionIdExists) { + if (titleContainer) titleContainer.style.display = 'none'; + if (descriptionContainer) descriptionContainer.style.display = 'none'; + if (submitButtonContainer) submitButtonContainer.style.display = 'none'; + if (visibilityToggle) visibilityToggle.style.display = 'none'; + if (requireFullRegistrationMessage) requireFullRegistrationMessage.classList.remove('doboard_task_widget-hidden'); + } else { + if (titleContainer) titleContainer.style.display = ''; + if (descriptionContainer) descriptionContainer.style.display = ''; + if (submitButtonContainer) submitButtonContainer.style.display = ''; + if (visibilityToggle) visibilityToggle.style.display = ''; + if (requireFullRegistrationMessage) requireFullRegistrationMessage.classList.add('doboard_task_widget-hidden'); + } + if ( selection.type === 'Range' ) { diff --git a/styles/doboard-widget.css b/styles/doboard-widget.css index 214d63c..17e540e 100644 --- a/styles/doboard-widget.css +++ b/styles/doboard-widget.css @@ -1498,3 +1498,15 @@ input:checked + .slider:before { margin-bottom: 4px } +/* Require full registration message */ +.doboard_task_widget-require_full_registration { + padding: 16px; + background-color: #65D4AC; + border-radius: 8px; + margin-bottom: 12px; +} + +.doboard_task_widget-require_full_registration-title { + color: #252A2F; + font-weight: 500; +} From 158ba579c5225915101a33d65a740617c3163388 Mon Sep 17 00:00:00 2001 From: datorik Date: Tue, 24 Feb 2026 17:44:26 +0200 Subject: [PATCH 03/15] Require full registration - text --- js/src/loaders/SpotFixTemplatesLoader.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/js/src/loaders/SpotFixTemplatesLoader.js b/js/src/loaders/SpotFixTemplatesLoader.js index 99bf439..58eda96 100644 --- a/js/src/loaders/SpotFixTemplatesLoader.js +++ b/js/src/loaders/SpotFixTemplatesLoader.js @@ -147,11 +147,15 @@ class SpotFixTemplatesLoader { -
+
+
+ Require full registration +
+ + + - -
+
-