1(function ($, Drupal, drupalSettings) { 2 3 Drupal.behaviors.td = { 4 attach: function (context, settings) { 5 // Onetrust cookie. 6 var consentCookie = Cookies.get("OptanonConsent"); 7 var OptanonAlertBoxClosed = Cookies.get("OptanonAlertBoxClosed"); 8 if (consentCookie !== undefined) { 9 if (OptanonAlertBoxClosed !== undefined) { 10 // Check if TD is configured. 11 if (drupalSettings.td_js_sdk_write_key !== undefined) { 12 // Initiate TD cookies on every page load. 13 // Get cookie consent values. 14 var targetCookieArr = []; 15 var functionalCookieArr = []; 16 17 consentCookieArr = consentCookie.split('&'); 18 $.each(consentCookieArr, (index, item) => { 19 itemArr = item.split('='); 20 if (itemArr[0] == 'groups') { 21 itemCatArr = itemArr[1].split(','); 22 23 // Tergeting cookie. 24 if (itemCatArr[3] !== undefined) { 25 targetCookieArr = itemCatArr[3].split(':'); 26 } 27 // Functional Cookie 28 if (itemCatArr[2] !== undefined) { 29 functionalCookieArr = itemCatArr[2].split(':'); 30 } 31 } 32 }); 33 34 // Configure an instance for your database. 35 var td = new Treasure({ 36 host: drupalSettings.td_js_sdk_domain, 37 writeKey: drupalSettings.td_js_sdk_write_key, 38 database: drupalSettings.td_js_sdk_db, 39 useServerSideCookie: true 40 }); 41 42 // Check functional & Targeting cookie consent. 43 if (functionalCookieArr[0] == 3 && functionalCookieArr[1] == 1) { 44 // Set TD signed mode. 45 td.setSignedMode(); 46 // Set _td_domain_<domain> cookie. 47 td.fetchServerCookie(); 48 } 49 else if (targetCookieArr[0] == 4 && targetCookieArr[1] == 1) { 50 // Set TD signed mode. 51 td.setSignedMode(); 52 // Remove _td_domain_<domain> cookie. 53 removeTdDomainCookie(); 54 } 55 else { 56 // Set TD anonymous mode. 57 td.setAnonymousMode(); 58 // Remove _td_domain_<domain> cookie. 59 removeTdDomainCookie(); 60 } 61 } 62 else { 63 Cookies.remove('__td_signed'); 64 Cookies.remove('_td'); 65 } 66 } 67 else { 68 Cookies.remove('__td_signed'); 69 Cookies.remove('_td'); 70 } 71 } 72 else { 73 Cookies.remove('__td_signed'); 74 Cookies.remove('_td'); 75 } 76 77 function removeTdDomainCookie() { 78 // Remove _td_domain_<domain> cookie. 79 hostName = window.location.hostname; 80 domain = hostName.substring(hostName.lastIndexOf(".", hostName.lastIndexOf(".") - 1) + 1); 81 document.cookie = '_td_domain_' + domain + '=; domain=.' + domain + '; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 82 } 83 84 $('.webform-submission-subscribe-newsletter-form #edit-actions-submit').click(function (e) { 85 // To prevent second submission. 86 if (this.beenSubmitted) { 87 return false; 88 } 89 else { 90 this.beenSubmitted = true; 91 // This delay is for to complete the validation. 92 setTimeout(function () { 93 if ($('.webform-submission-subscribe-newsletter-form').find(".error").length > 0) { 94 // Enable the button if there is any error. 95 $('.webform-submission-subscribe-newsletter-form #edit-actions-submit').prop('disabled', false); 96 return false; 97 } 98 // Send data. 99 sendDataToTD('webform-submission-subscribe-newsletter-form'); 100 }, 1000); 101 } 102 this.beenSubmitted = false; 103 }); 104 105 $('.webform-submission-my-preferences-form #edit-actions-submit').click(function (e) { 106 // To prevent second submission. 107 if (this.beenSubmitted) { 108 return false; 109 } 110 else { 111 this.beenSubmitted = true; 112 // This delay is for to complete the validation. 113 setTimeout(function () { 114 if ($('.webform-submission-my-preferences-form').find(".error").length > 0) { 115 // Enable the button if there is any error. 116 $('.webform-submission-my-preferences-form #edit-actions-submit').prop('disabled', false); 117 return false;
118 } 119 // Send data. 120 sendDataToTD('webform-submission-my-preferences-form'); 121 }, 1000); 122 } 123 }); 124 125 function sendDataToTD(formClass) { 126 // Check CDP and Region. 127 if (drupalSettings.cdp == 'new_aic_cdp') { 128 if (drupalSettings.region == 'EM_EANZ' || drupalSettings.region == 'NA') { 129 // Check if TD is configured. 130 if (drupalSettings.td_js_sdk_write_key) { 131 // Configure an instance for your database 132 var td = new Treasure({ 133 host: drupalSettings.td_js_sdk_domain, 134 writeKey: drupalSettings.td_js_sdk_write_key, 135 database: drupalSettings.td_js_sdk_db, 136 useServerSideCookie: true 137 }); 138 139 // Field mapping. 140 var field_mapping = drupalSettings.newsletter_form_field_mapping; 141 142 // Create an Object. 143 const data = {}; 144 145 // Add fields based on mapping. 146 if (drupalSettings.preferences == 1) { 147 for (var key in field_mapping) { 148 var type = $('.webform-submission-my-preferences-form').find('[name^=' + field_mapping[key] + ']').attr("type"); 149 var val = []; 150 if (type == 'checkbox' || type == 'radio') { 151 if (type == 'checkbox') { 152 $('.webform-submission-my-preferences-form').find('[name^=' + field_mapping[key] + ']:checked').each(function (i) { 153 val[i] = $(this).val(); 154 }); 155 if (val.length > 1) { 156 data[key] = val.join(" | "); 157 } 158 else { 159 data[key] = val; 160 } 161 } 162 else { 163 data[key] = $('.webform-submission-my-preferences-form').find('[name^=' + field_mapping[key] + ']:checked').val(); 164 } 165 } 166 else { 167 data[key] = $('.webform-submission-my-preferences-form').find('[name=' + field_mapping[key] + ']').val(); 168 } 169 } 170 data['email'] = drupalSettings.email; 171 } 172 else { 173 for (var key in field_mapping) { 174 var type = $('.webform-submission-subscribe-newsletter-form').find('[name^=' + field_mapping[key] + ']').attr("type"); 175 var val = []; 176 if (type == 'checkbox' || type == 'radio') { 177 if (type == 'checkbox') { 178 $('.webform-submission-subscribe-newsletter-form').find('[name^=' + field_mapping[key] + ']:checked').each(function (i) { 179 val[i] = $(this).val(); 180 }); 181 if (val.length > 1) { 182 data[key] = val.join(" | "); 183 } 184 else { 185 data[key] = val[0]; 186 } 187 } 188 else { 189 data[key] = $('.webform-submission-subscribe-newsletter-form').find('[name^=' + field_mapping[key] + ']:checked').val(); 190 } 191 } 192 else { 193 data[key] = $('.webform-submission-subscribe-newsletter-form').find('[name=' + field_mapping[key] + ']').val(); 194 } 195 } 196 197 // Opt In data. 198 data['opt_in_marketing'] = true; 199 data['opt_in_newsletters_date'] = $.now(); 200 // Set page url. 201 data['td_url'] = window.location.href; 202 } 203 204 // Set Brand, Region and Market. 205 data['brand'] = drupalSettings.brand; 206 data['region'] = drupalSettings.region; 207 data['market'] = drupalSettings.market; 208 data['locale'] = drupalSettings.locale; 209 210 // Get cookie consent values. 211 var targetCookieArr = []; 212 var functionalCookieArr = []; 213 var consentCookie = Cookies.get("OptanonConsent"); 214
215 // Onetrust cookie. 216 if (consentCookie !== undefined) { 217 consentCookieArr = consentCookie.split('&'); 218 $.each(consentCookieArr, (index, item) => { 219 itemArr = item.split('='); 220 if (itemArr[0] == 'groups') { 221 itemCatArr = itemArr[1].split(','); 222 223 // Tergeting cookie. 224 if (itemCatArr[3] !== undefined) { 225 targetCookieArr = itemCatArr[3].split(':'); 226 } 227 // Functional Cookie. 228 if (itemCatArr[2] !== undefined) { 229 functionalCookieArr = itemCatArr[2].split(':'); 230 } 231 } 232 }); 233 } 234 235 // Check functional & Targeting cookie consent. 236 if (functionalCookieArr[0] == 3 && functionalCookieArr[1] == 1) { 237 // Set TD signed mode. 238 td.setSignedMode(); 239 // Set domain cookie. 240 td.fetchServerCookie(); 241 242 // Get td client id. 243 var tdClientId = Cookies.get("_td"); 244 data['td_client_id'] = tdClientId; 245 246 // Set global id. 247 td.set("$global", "td_global_id", "td_global_id"); 248 } 249 else if (targetCookieArr[0] == 4 && targetCookieArr[1] == 1) { 250 // Set TD signed mode. 251 td.setSignedMode(); 252 // Remove _td_domain_<domain> cookie. 253 removeTdDomainCookie(); 254 255 // Get td client id. 256 var tdClientId = Cookies.get("_td"); 257 data['td_client_id'] = tdClientId; 258 259 // Set global id. 260 td.set("$global", "td_global_id", "td_global_id"); 261 } 262 else { 263 // Set TD anonymous mode. 264 td.setAnonymousMode(); 265 // Remove _td_domain_<domain> cookie. 266 removeTdDomainCookie(); 267 } 268 269 // Send data. 270 td.addRecord(drupalSettings.td_js_sdk_table, data); 271 } 272 else { 273 // Log error. 274 console.log('No TD configuration.'); 275 } 276 } 277 } 278 279 // Add little delay to form submit. 280 setTimeout(function () { 281 // Submit the form. 282 $('.' + formClass).submit(); 283 }, 1000); 284 return true; 285 } 286 } 287 }; 288 289})(jQuery, Drupal, drupalSettings);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.