PluginProbe ʕ •ᴥ•ʔ
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode / 4.4.1
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode v4.4.1
4.7.2 4.7.1 trunk 2.3.0 2.4.0 2.4.1 2.4.2 2.5.0 3.0.0 3.0.1 3.1.0 3.10.0 3.10.1 3.11.1 3.11.2 3.11.3 3.2.0 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.5 3.6.6 3.7.0 3.7.1 3.8.0 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.2.0 4.2.1 4.2.10 4.2.11 4.2.12 4.2.13 4.2.14 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.3.10 4.3.11 4.3.12 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.3.7.1 4.3.8 4.3.9 4.3.9.1 4.4.0 4.4.1 4.4.2 4.5.0 4.5.1 4.5.10 4.5.11 4.5.2 4.5.3 4.5.4 4.5.5 4.5.6 4.5.7 4.5.8 4.5.9 4.6.0 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.6.6 4.6.7 4.7.0
cookiebot / assets / js / backend / settings-page.js
cookiebot / assets / js / backend Last commit date
gutenberg 3 years ago consent-mapping.js 1 year ago cookiebot-admin-script.js 1 year ago debug-page.js 3 years ago jquery.tipTip.js 3 years ago multiple-page.js 3 years ago network-settings-page.js 1 year ago prior-consent-settings.js 3 years ago settings-page.js 1 year ago support-page.js 3 years ago
settings-page.js
481 lines
1 /**
2 * Load init function when the page is ready
3 *
4 * @since 1.8.0
5 */
6 jQuery( document ).ready( init );
7
8 function init() {
9 ruleset_id();
10 show_ruleset_selector();
11 remove_account();
12 network_id_override();
13 language_toggle();
14 advanced_settings_toggle();
15 cookie_blocking_mode();
16 activeSettingsTab();
17 initialCheckActiveVendors();
18 closeSubmitMsg();
19 submitEnable();
20 googleConsentModeOptions();
21 tcfOptions();
22 vendorListRequire();
23 selectAllListItem();
24 deselectAllListItem();
25 onAddRestriction();
26 showRestrictionPurposes();
27 onVendorSelection();
28 removeRestriction();
29 generate_shortcode();
30 }
31
32 function ruleset_id(){
33 const cbidField = jQuery( '#cookiebot-cbid' );
34 const cbidCheck = jQuery( '.cookiebot-cbid-check' );
35 let fieldTimer;
36 let fieldInterval = 3000;
37
38 cbidField.on('keyup', function () {
39 clearTimeout(fieldTimer);
40 cbidField.addClass('check-progress');
41 cbidCheck.removeClass('check-pass').addClass('check-progress');
42 fieldTimer = setTimeout(show_ruleset_selector, fieldInterval);
43 });
44
45 cbidField.on('keydown', function () {
46 clearTimeout(fieldTimer);
47 });
48 }
49
50 function show_ruleset_selector() {
51 const cbidField = jQuery( '#cookiebot-cbid' );
52 const cbidCheck = jQuery( '.cookiebot-cbid-check' );
53 const cbidRulesetSelector = jQuery('#cookiebot-ruleset-id-selector');
54
55 cbidCheck.removeClass('check-progress');
56 cbidField.removeClass('check-progress');
57
58 if(!cbidField.val()){
59 cbidCheck.removeClass('check-pass');
60 cbidRulesetSelector.addClass('hidden');
61 jQuery('.cookiebot-cbid-container p.submit #submit').addClass('disabled');
62 return;
63 }
64
65 !check_id_frame() ? cbidRulesetSelector.removeClass('hidden') : cbidRulesetSelector.addClass('hidden');
66
67 jQuery('.cookiebot-cbid-container p.submit #submit').removeClass('disabled');
68 }
69
70 function check_id_frame(){
71 const cbFrameReg = /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/;
72 return cbFrameReg.test(jQuery( '#cookiebot-cbid' ).val())
73 }
74
75 function language_toggle() {
76 jQuery( '#show_add_language_guide' ).on( 'click', function ( e ) {
77 e.preventDefault()
78 jQuery( '#add_language_guide' ).slideDown()
79 jQuery( this ).hide()
80 } )
81 jQuery( '#hide_add_language_guide' ).on( 'click', function ( e ) {
82 e.preventDefault()
83 jQuery( '#add_language_guide' ).slideUp()
84 jQuery( '#show_add_language_guide' ).show()
85 } )
86
87 jQuery( '#cookiebot-language' ).on( 'change', function () {
88 if ( this.value === '' ) {
89 jQuery( '#info_lang_autodetect' ).show()
90 jQuery( '#info_lang_specified' ).hide()
91 } else {
92 jQuery( '#info_lang_autodetect' ).hide()
93 jQuery( '#info_lang_specified' ).show()
94 }
95 } )
96 }
97
98 function advanced_settings_toggle() {
99 jQuery( '.cookiebot_fieldset_header' ).on( 'click', function ( e ) {
100 e.preventDefault()
101 jQuery( this ).next().slideToggle()
102 jQuery( this ).toggleClass( 'active' )
103 } )
104 }
105
106 function cookie_blocking_mode() {
107 let cookieBlockingMode = cookiebot_settings.cookieBlockingMode;
108
109 jQuery( 'input[type=radio][name=cookiebot-cookie-blocking-mode]' ).on( 'change', function () {
110 if ( this.value === 'auto' && cookieBlockingMode !== this.value ) {
111 jQuery( '#cookiebot-setting-async, #cookiebot-setting-hide-popup' ).css( 'opacity', 0.4 );
112 jQuery( '#declaration-tag, #cookie-popup, #gcm-cookie-categories, #gtm-cookie-categories').addClass('disabled__item');
113 if(jQuery( '#gcm-cookie-categories').is(':visible')){ jQuery( '#gcm-cookie-categories').hide() };
114 jQuery( 'input[type=radio][name=cookiebot-script-tag-uc-attribute], input[name=cookiebot-nooutput]' ).prop( 'disabled', true );
115 jQuery( '#cb-settings__gtm__cookie-types input[type=checkbox]' ).prop( 'disabled', true );
116 jQuery( '#cb-settings__gcm__cookie-types input[type=checkbox]' ).prop( 'disabled', true );
117 }
118 if ( this.value === 'manual' && cookieBlockingMode !== this.value ) {
119 jQuery( '#cookiebot-setting-async, #cookiebot-setting-hide-popup' ).css( 'opacity', 1 );
120 jQuery( '#declaration-tag, #cookie-popup, #gcm-cookie-categories, #gtm-cookie-categories').removeClass('disabled__item');
121 if(!jQuery( '#gcm-cookie-categories').is(':visible') && jQuery('input#gcm').is(':checked')){ jQuery( '#gcm-cookie-categories').show() };
122 jQuery( 'input[type=radio][name=cookiebot-script-tag-uc-attribute], input[name=cookiebot-nooutput]' ).prop( 'disabled', false );
123 jQuery( '#cb-settings__gtm__cookie-types input[type=checkbox]' ).prop( 'disabled', false );
124 jQuery( '#cb-settings__gcm__cookie-types input[type=checkbox]' ).prop( 'disabled', false );
125 }
126 cookieBlockingMode = this.value;
127 } )
128 if ( cookieBlockingMode === 'auto' ) {
129 jQuery( '#cookiebot-setting-async, #cookiebot-setting-hide-popup' ).css( 'opacity', 0.4 );
130 jQuery( 'input[type=radio][name=cookiebot-script-tag-uc-attribute], input[name=cookiebot-nooutput]' ).prop( 'disabled', true );
131 jQuery( '#cb-settings__gtm__cookie-types input[type=checkbox]' ).prop( 'disabled', true );
132 jQuery( '#cb-settings__gcm__cookie-types input[type=checkbox]' ).prop( 'disabled', true );
133 }
134 }
135
136 function activeSettingsTab() {
137 jQuery('.cb-settings__tabs__item').on('click', function(){
138 let currentTab = jQuery('.cb-settings__tabs__item.active-item').data('tab');
139 let tab = jQuery(this).data('tab');
140 let tabSelector = '#'+tab;
141 jQuery('.cb-settings__tabs__item.active-item, .cb-settings__tabs__content--item.active-item').removeClass('active-item');
142 jQuery(this).addClass('active-item');
143 jQuery(tabSelector).addClass('active-item');
144
145 window.history.replaceState(null, null, '?page=cookiebot_settings&tab='+tab );
146 let referrer = jQuery('input[name="_wp_http_referer"]');
147 let referrerVal = referrer.val();
148 if(referrerVal.indexOf('tab=')!==-1) {
149 referrerVal = referrerVal.replace(currentTab,tab);
150 }else{
151 referrerVal += '&tab=' + tab;
152 }
153 referrer.val(referrerVal);
154 });
155 }
156
157 function closeSubmitMsg() {
158 jQuery('.cb-submit__msg').on('click',function(){
159 jQuery(this).addClass('hidden');
160 });
161 }
162
163 function submitEnable() {
164 const initialValues = jQuery('input[name!=_wp_http_referer]','form').serialize();
165 const events = {
166 change: 'input:not([type=text]), select',
167 input: 'input[type="text"], textarea'
168 };
169
170 Object.entries(events).forEach(entry => {
171 const [eventName, elements] = entry;
172 jQuery(document).on(eventName,elements,{initialValues: initialValues},function(event){
173 checkValues(event.data.initialValues)
174 });
175 });
176 }
177
178 function checkValues(initialValues){
179 let submitBtn = jQuery('.cb-settings__header p.submit #submit');
180 let newValues = jQuery('input[name!=_wp_http_referer]','form').serialize();
181 if(newValues !== initialValues) {
182 submitBtn.addClass('enabled');
183 }else{
184 submitBtn.removeClass('enabled');
185 }
186 checkActiveVendors();
187 }
188
189 function googleConsentModeOptions() {
190 jQuery('input#gcm').on('change', function () {
191 const parent = jQuery(this).parents('#consent-mode');
192 parent.find('.cb-settings__config__item:has(input#gcm-url-pasthrough)').toggle();
193 const gcmCookiesCategoriesContainer = parent.find('.cb-settings__config__item:has(ul#cb-settings__gcm__cookie-types)');
194 if(!gcmCookiesCategoriesContainer.hasClass('disabled__item')){
195 gcmCookiesCategoriesContainer.is(':visible') ? gcmCookiesCategoriesContainer.hide() : gcmCookiesCategoriesContainer.show();
196 }else{
197 gcmCookiesCategoriesContainer.hide();
198 }
199 const passthroughInput = jQuery('input#gcm-url-pasthrough');
200 const passthroughLabel = passthroughInput.parents('label.switch-checkbox')[0];
201 if (!passthroughLabel || !passthroughLabel.childNodes.length)
202 return;
203 passthroughLabel.childNodes[passthroughLabel.childNodes.length - 1].textContent = 'URL passthrough' + ' ' +
204 (passthroughInput.is(':checked') ? 'enabled' : 'disabled');
205 });
206 jQuery('input#gcm, input#gcm-url-pasthrough').on('change', function () {
207 const input = jQuery(this);
208 const label = input.parents('label.switch-checkbox')[0];
209 if (!label || !label.childNodes.length)
210 return;
211 label.childNodes[label.childNodes.length - 1].textContent = (
212 (input.attr('id') === 'gcm' ? 'Google Consent Mode' : 'URL passthrough') + ' ' +
213 (input.is(':checked') ? 'enabled' : 'disabled')
214 );
215 });
216 }
217
218 function tcfOptions() {
219 jQuery('input#cookiebot-iab').on('change', function () {
220 const parent = jQuery(this).parents('#iab');
221 parent.find('.cb-settings__config__item:has(input.tcf-option)').toggle();
222 });
223 }
224
225 function checkIabActive() {
226 return jQuery('input#cookiebot-iab:checked').length;
227 }
228
229 function initialCheckActiveVendors() {
230 if(!checkIabActive()){
231 return;
232 }
233
234 const allVendorInputChecked = jQuery('input[name^="cookiebot-tcf-vendors"]:checked').length;
235 if(!allVendorInputChecked && check_id_frame()) {
236 jQuery('.vendor-selected-items-message').removeClass('hidden');
237 jQuery('.cb-vendor-alert__msg').removeClass('hidden');
238 }
239 }
240
241 function checkActiveVendors() {
242 if(!checkIabActive()){
243 return;
244 }
245
246 if(!check_id_frame()) {
247 return;
248 }
249
250 let submitBtn = jQuery('.cb-settings__header p.submit #submit');
251 const allVendorInputChecked = jQuery('input[name^="cookiebot-tcf-vendors"]:checked').length;
252 if(!allVendorInputChecked) {
253 jQuery('.vendor-selected-items-message').removeClass('hidden');
254 jQuery('.cb-vendor-alert__msg').removeClass('hidden');
255 submitBtn.removeClass('enabled');
256 }else{
257 jQuery('.vendor-selected-items-message').addClass('hidden');
258 jQuery('.cb-vendor-alert__msg').addClass('hidden');
259 if(!submitBtn.hasClass('enabled')) {
260 submitBtn.addClass('enabled');
261 }
262 }
263 }
264
265 function selectAllListItem(){
266 jQuery(document).on('click','.cb-settings__selector-all',function(){
267 const itemList = jQuery(this).siblings('.search-list');
268 itemList.children().each(function(){
269 jQuery(this).find('input').prop('checked', true);
270 })
271 checkActiveVendors();
272 })
273 }
274
275 function deselectAllListItem(){
276 jQuery(document).on('click','.cb-settings__selector-none',function(){
277 const itemList = jQuery(this).siblings('.search-list');
278 itemList.children().each(function(){
279 jQuery(this).find('input').prop('checked', false);
280 })
281 checkActiveVendors();
282 })
283 }
284
285 function vendorListRequire(){
286 jQuery( document ).on('change', 'input[name^="cookiebot-tcf-vendors"]', function () {
287 checkActiveVendors();
288 });
289 }
290
291 function onAddRestriction() {
292 jQuery('.restriction-vendor-add').on('click', function () {
293 const allCurrentVendors = jQuery( '.cb-settings__vendor__restrictions' ).length;
294 const baseElement = jQuery( '.cb-settings__vendor__restrictions:last' );
295 let newElement = baseElement.clone();
296 newElement.find('.vendor-selector').attr('name','');
297 newElement.find('option').removeAttr('selected');
298 newElement.find('.purpose-item').each(function(index){
299 const itemId = 'cookiebot-vendorx'+( allCurrentVendors + 1 )+'-purposes'+(index+1);
300 jQuery(this).attr('name','');
301 jQuery(this).attr('id',itemId);
302 jQuery(this).removeAttr('checked');
303 jQuery(this).parent().attr('for',itemId);
304 });
305
306 newElement.insertAfter(baseElement);
307 });
308 }
309
310 function showRestrictionPurposes() {
311 jQuery(document).on('click','.vendor-purposes-show', function () {
312 const parent = jQuery(this).parents('.cb-settings__vendor__restrictions');
313 parent.find('.vendor-purposes-restrictions').toggle();
314 });
315 }
316
317 function onVendorSelection() {
318 jQuery(document).on('change', '.cb-settings__selector__container-input', function () {
319 const vendorId = jQuery(this).val();
320 const parent = jQuery(this).parents('.cb-settings__vendor__restrictions');
321 const vendorPurposes = parent.find('.vendor-purposes-restrictions .purpose-item');
322 const fieldName = 'cookiebot-tcf-disallowed[$s]';
323 const purposeFieldName = '[purposes][]';
324
325 jQuery(this).attr('name', fieldName.replace('$s', vendorId));
326 vendorPurposes.each(function(index){
327 const purposeAttribute = fieldName.replace('$s', vendorId) + purposeFieldName;
328 const itemId = 'cookiebot-vendor' + vendorId + '-purposes' + (index+1);
329 jQuery(this).attr('name', purposeAttribute);
330 jQuery(this).attr('id', itemId);
331 jQuery(this).parent().attr('for',itemId);
332 });
333 });
334 }
335
336 function removeRestriction(){
337 const initialValues = jQuery('input[name!=_wp_http_referer]','form').serialize();
338 let submitBtn = jQuery('.cb-settings__header p.submit #submit');
339 jQuery(document).on('click','.cb-settings__vendor__restrictions .remove__restriction', function(){
340 const restriction = jQuery(this).closest( '.cb-settings__vendor__restrictions' );
341 const allRestrictions = jQuery( '.cb-settings__vendor__restrictions' );
342 if(allRestrictions.length === 1){
343 const selector = restriction.find('.cb-settings__selector-selector');
344 selector.text(selector.data('placeholder'));
345 restriction.find('.cb-settings__selector__container-input').val('');
346 restriction.find('.cb-settings__selector__container-input').attr('name','');
347 restriction.find('.cb-settings__selector-list-item.selected').removeClass('selected');
348 const vendorPurposes = restriction.find('.purpose-item');
349 vendorPurposes.each(function(){
350 jQuery(this).prop( 'checked', false );
351 jQuery(this).attr( 'name', '' );
352 });
353 }else{
354 restriction.remove();
355 }
356 let newValues = jQuery('input[name!=_wp_http_referer]','form').serialize();
357 if(newValues !== initialValues) {
358 submitBtn.addClass('enabled');
359 }else{
360 submitBtn.removeClass('enabled');
361 }
362 });
363 }
364
365 function generate_shortcode(){
366 jQuery('#cookiebot-embedding').on('change', function(){
367 const typeOptions = jQuery('#cookiebot-embedding-type option');
368 const className = jQuery(this).val();
369 typeOptions.each(function(){
370 if(jQuery(this).hasClass(className)){
371 jQuery(this).removeClass('hide-option');
372 }else{
373 jQuery(this).addClass('hide-option');
374 }
375 });
376 jQuery('#cookiebot-embedding-type option:not(.hide-option)').each(function(index){
377 if(index>0)
378 return;
379 jQuery(this).prop('selected', true);
380 });
381 });
382
383 jQuery('#cookiebot-embedding-type').on('change', function(){
384 const typeName = jQuery(this).val();
385 if(typeName==='service-specific'){
386 jQuery( '#cookiebot-embedding-single-service-container' ).removeClass('hide-container');
387 }else{
388 jQuery( '#cookiebot-embedding-single-service-container' ).addClass('hide-container');
389 jQuery( '#cookiebot-embedding-single-service' ).val('');
390 }
391 });
392
393 const embedInputs = jQuery('#cookiebot-tcf-toggle, #cookiebot-embedding, #cookiebot-embedding-type, #cookiebot-embedding-single-service');
394 embedInputs.each(function (){
395 jQuery(this).on('change keyup', function(){
396 let shortcode = '[uc_embedding';
397 const className = jQuery('#cookiebot-embedding').val();
398 const toggleEnabled = jQuery('#cookiebot-tcf-toggle');
399 const typeName = jQuery('#cookiebot-embedding-type').val();
400 const serviceName = jQuery('#cookiebot-embedding-single-service').val();
401
402
403 switch (className) {
404 case 'tcf' : shortcode += ' class="tcf"'; break;
405 default : shortcode += ' class="gdpr"';
406 }
407 switch (toggleEnabled.is(':checked')) {
408 case true : shortcode += ' show-toggle="true"'; break;
409 default : shortcode += ' show-toggle="false"';
410 }
411 switch (typeName) {
412 case 'category' : shortcode += ' type="category"'; break;
413 case 'category-only' : shortcode += ' type="category-only"'; break;
414 case 'service-specific' : shortcode += ' type="service-specific"'; break;
415 case 'purposes' : shortcode += ' type="purposes"'; break;
416 case 'vendors' : shortcode += ' type="vendors"'; break;
417 default : shortcode += ' type="all"';
418 }
419 if(serviceName.length > 0){
420 shortcode += ' service="' + serviceName + '"';
421 }
422 shortcode += ']';
423 jQuery('#embedding-shortcode').attr('value',shortcode);
424 });
425 });
426 }
427
428 function remove_account(){
429 const removeCta = jQuery('#cookiebot-cbid-reset-dialog');
430 const cbidAlert = jQuery('.cb-cbid-alert__msg');
431 const cbidOverrideAlert = jQuery('.cb-cbid-subsite-alert__msg');
432 const confirmCta = jQuery('#cookiebot-cbid-reset, #cookiebot-subsite-cbid-reset');
433 const cancelCta = jQuery('#cookiebot-cbid-cancel, #cookiebot-subsite-cbid-cancel');
434 removeCta.on('click', function(){
435 if(cbidOverrideAlert.length !== 0){
436 cbidOverrideAlert.removeClass('hidden');
437 }else{
438 cbidAlert.removeClass('hidden');
439 }
440 removeCta.addClass('disabled');
441 });
442 confirmCta.on('click', function(){
443 jQuery('#cookiebot-cbid').val('').removeClass('cbid-active');
444 jQuery('#cookiebot-cbid-override').prop('checked',false);
445 jQuery('.cb-settings__header p.submit #submit').click();
446 });
447 cancelCta.on('click', function(){
448 cbidAlert.addClass('hidden');
449 cbidOverrideAlert.addClass('hidden');
450 jQuery('#cookiebot-cbid-override').prop('checked',true);
451 removeCta.removeClass('disabled');
452 });
453 }
454
455 function network_id_override() {
456 const overrideCheck = jQuery('#cookiebot-cbid-override');
457 overrideCheck.on('change', function(){
458 jQuery('.cb-settings__header p.submit #submit').addClass('disabled');
459 if(overrideCheck.is(':checked') && overrideCheck.hasClass('cb-no-network')){
460 jQuery('#cookiebot-cbid-network-dialog').addClass('hidden');
461 jQuery('.cookiebot-cbid-container p.submit #submit').addClass('disabled').removeClass('hidden');
462 jQuery('.cookiebot-cbid-container #cookiebot-cbid').removeClass('cbid-active').attr('placeholder', '').val('');
463 }
464 if(!overrideCheck.is(':checked')){
465 if(!overrideCheck.hasClass('cb-no-network')){
466 jQuery('.cb-cbid-subsite-alert__msg').removeClass('hidden');
467 }else{
468 jQuery('#cookiebot-cbid-network-dialog').removeClass('hidden');
469 jQuery('.cookiebot-cbid-container p.submit #submit').addClass('hidden');
470 jQuery('.cookiebot-cbid-container #cookiebot-cbid').addClass('cbid-active').val('').attr('placeholder', jQuery('.cookiebot-cbid-container #cookiebot-cbid').attr('data-network'));
471 }
472 }
473 });
474 }
475
476 function copyEmbedShortcode() {
477 const t = document.getElementById( 'embedding-shortcode' )
478 t.select()
479 t.setSelectionRange( 0, 99999 )
480 document.execCommand( 'copy' )
481 }