1;(function($){ 2 $(document).ready(function(){ 3 4 // Subscribe 5 $(document).on('click', '.ezd-subscription-btn.subscribe', function (e) { 6 e.preventDefault(); 7 8 $('.ezd-subscription-popup').addClass('hidden'); 9 10 // if not data-token 11 if( !$(this).attr('data-token') ){ 12 var docId = $(this).attr('data-id'); 13 $('.ezd-subscription-form-wrap#'+docId).addClass('active'); 14 15 $(document).mouseup('click', function (e) { 16 // Check if the clicked element is not inside .ezd-subscription-inner 17 if (!$(e.target).closest('.ezd-subscription-inner').length) { 18 $('.ezd-subscription-form-wrap').removeClass('active'); 19 } 20 21 $('.ezd-subscription-cancel, .ezd-subscription-close').on('click', function (e) { 22 e.preventDefault(); 23 $('.ezd-subscription-form-wrap').removeClass('active'); 24 }); 25 }); 26 } 27 }); 28 29 30 // Check for disallowed characters in the name field 31 function nameDisallowedCharacters(str) { 32 // Regular expression to check for disallowed characters 33 var pattern = /[#$%^&*()+={}\[\];:'",<>\/?@]/; 34 return pattern.test(str); 35 } 36 37 var submitBtn = $('.ezd-subscription-submit').html(); 38 39 // form submit with ajax 40 $(document).on('submit', '.ezd-subscription-form', function (e) { 41 e.preventDefault(); 42 43 // Get form data 44 var formData = $(this).serialize(); 45 46 const parsedFormData = new URLSearchParams(formData); 47 48 // Get the value of ezd_subscription_name 49 const ezdSubscriptionName = parsedFormData.get('ezd_subscription_name'); 50 51 var nonceValue = eazydocs_ajax_search.eazydocs_local_nonce; 52 var subscriptions_success = eazydocs_subscription.subscriptions_success; 53 var specialCharacter = eazydocs_subscription.character_not_allowed; 54 55 if ( nameDisallowedCharacters(ezdSubscriptionName) ) { 56 $('.ezd-subscription-form').append('<p class="ezd-response-alert">'+specialCharacter+'</p>'); 57 $('.ezd-response-alert').not(':first').remove(); 58 59 } else { 60 61 // Perform AJAX request 62 $.ajax({ 63 type: 'POST', 64 url: eazydocs_ajax_search.ajax_url, 65 data: formData + '&action=ezd_subscription_form&nonce=' + nonceValue + '&subscriptions_success=' + subscriptions_success, 66 dataType: 'json', 67 beforeSend: function () { 68 $('.ezd-subscription-submit').html('<span class="spinner-border ezd-subscription-loader"><span class="visually-hidden">Loading...</span></span>'); 69 }, 70 success: function (response) { 71 $('.ezd-subscription-submit').html(submitBtn); 72 // last response alert 73 $('.ezd-subscription-form').append('<p class="ezd-response-alert">'+response.data+'</p>'); 74 $('.ezd-response-alert:not(:last-child)').remove(); 75 ezd_logged_user_subscription() 76 77 }, 78 error: function (error) { 79 $('.ezd-subscription-submit').html(submitBtn); 80 $('.ezd-subscription-form').append('<p class="ezd-response-alert">Oops! Something wrong, try again!</p>'); 81 $('.ezd-response-alert:not(:last-child)').remove(); 82 } 83 }); 84 } 85 }); 86 87 88 $(document) .on('click', '.ezd-subscription-btn.subscribed', function (e) { 89 e.preventDefault(); 90 91 var subscriptions_btn = eazydocs_subscription.subscriptions_btn; 92 var token = $(this).attr('data-token'); 93 var id = $(this).attr('data-id'); 94 var ezd_doc_post_title = ''; 95 96 if ( eazydocs_subscription.unsubscriptions_post_title ) { 97 ezd_doc_post_title = eazydocs_subscription.doc_post_title+'?'; 98 } 99 100 $('body').append("<div class='ezd-subscription-popup top-center unsubscription'><div class='ezd-subscription-popup-inner'><h1>"+eazydocs_subscription.unsubscriptions_heading+"</h1><p>"+eazydocs_subscription.unsubscriptions_desc +' '+ezd_doc_post_title+"</p><span class='ezd-subscription-preloader hidden'><span class='ezd-subscription-loader-wrap'></span></span><span class='ezd-subscription-action'><a href='' class='ezd-subscription-confirm'>"+eazydocs_subscription.unsubscriptions_submit_btn+"</a><a href='' class='ezd-subscription-cancel'>
100"+eazydocs_subscription.unsubscriptions_cancel_btn+"</a></span></div></div>"); 101 102 $('.ezd-subscription-cancel').on('click', (function (e) { 103 e.preventDefault(); 104 $('.ezd-subscription-popup').addClass('hidden'); 105 }) 106 ); 107 108 // if click .ezd-subscription-confirm 109 $('.ezd-subscription-confirm').on('click', (function (e) { 110 111 $('.ezd-subscription-popup .ezd-subscription-popup-inner h1').text('Unsubscribing..'); 112 $('.ezd-subscription-preloader').removeClass('hidden'); 113 114 e.preventDefault(); 115 116 $.ajax({ 117 type: 'POST', 118 url: eazydocs_ajax_search.ajax_url, 119 data: { 120 action: 'ezd_unsubscription_create', 121 token: token, 122 token_id: id 123 }, 124 dataType: 'json', 125 beforeSend: function () { 126 $('.ezd-subscription-btn[data-id='+id+'].subscribed').text('Unsubscribing...'); 127 }, 128 success: function (response) { 129 console.log(response.data); 130 131 $('.ezd-subscription-btn[data-id='+id+']').text(subscriptions_btn); 132 $('.ezd-subscription-btn[data-id='+id+']').removeClass('subscribed'); 133 $('.ezd-subscription-btn[data-id='+id+']').addClass('logged-user'); 134 $('.ezd-subscription-btn[data-id='+id+']').removeAttr('data-token', token); 135 136 $('.ezd-subscription-popup').addClass('hidden'); 137 ezd_logged_user_subscription(); 138 139 }, 140 error: function () { 141 } 142 }); 143 })); 144 145 }); 146 147 148 149 // Subscription confirmation 150 var subscription_confirmation = eazydocs_subscription.subscription_confirmation; 151 if ( subscription_confirmation ) { 152 153 var unsubscriptions_btn = eazydocs_subscription.unsubscriptions_btn; 154 var token = $(subscription_confirmation).attr('data-token'); 155 var token_id = $(subscription_confirmation).attr('data-id'); 156 token_id = parseInt(token_id, 10); 157 $('.ezd-subscription-preloader').addClass('visible'); 158 159 $.ajax({ 160 type: 'POST', 161 url: eazydocs_ajax_search.ajax_url, 162 data: { 163 action: 'ezd_confirm_subscription', 164 token: token, 165 token_id: token_id 166 }, 167 beforeSend: function () { 168 $('body').append('<div class="ezd-subscription-popup top-right"><div class="ezd-subscription-popup-inner"><h1>Opt-in confirmed</h1><p>You will now receive updates! </p><span class="ezd-subscription-preloader"><span class="ezd-subscription-loader-wrap"></span></span></div></div>'); 169 170 $('.ezd-subscription-btn.subscribe[data-id='+token_id+']').text('Subscribing...'); 171 }, 172 success: function (response) { 173 174 $('.ezd-subscription-btn[data-id='+token_id+']').text(unsubscriptions_btn); 175 $('.ezd-subscription-btn[data-id='+token_id+']').removeClass('subscribe'); 176 $('.ezd-subscription-btn[data-id='+token_id+']').addClass('subscribed'); 177 $('.ezd-subscription-btn[data-id='+token_id+']').attr('data-token', token); 178 $('.ezd-subscription-popup').addClass('hidden'); 179 180 history.pushState({}, '', window.location.href.split('?')[0]); 181 182 }, 183 error: function (errorThrown) { 184 console.error('AJAX error: ' + errorThrown); 185 }, 186 }); 187 188 } 189 190 // Unsubscribe confirmation 191 $(document).ready(function(){ 192 function ezdGetParameterByName(name, url) { 193 if (!url) url = window.location.href; 194 name = name.replace(/[\[\]]/g, "\\$&"); 195 var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), 196 results = regex.exec(url); 197 if (!results) return null; 198 if (!results[2]) return ''; 199 return decodeURIComponent(results[2].replace(/\+/g, " ")); 200 } 201 202 var unsubscription_confirmation = eazydocs_subscription.unsubscription_confirmation; 203 var subscriptions_btn = eazydocs_subscription.subscriptions_btn; 204 if ( unsubscription_confirmation === '1' ) { 205 206 $('.ezd-subscription-preloader').addClass('visible'); 207 208 var unsubscribe_token = ezdGetParameterByName('unsubscribe_token'); 209 var token_id = ezdGetParameterByName('token_id'); 210 211 $.ajax({ 212 type: 'POST', 213 url: eazydocs_ajax_search.ajax_url, 214 data: { 215 action: 'ezd_confirm_unsubscription', 216 token: unsubscribe_token, 217 token_id: token_id 218 }, 219 beforeSend: function () { 220 $('body').append('<div class="ezd-subscription-popup top-right"><div class="ezd-subscription-popup-inner auto-opt-out"><h1>Unsubscribing...</h1><p>You will no longer receive updates! </p><span class="ezd-subscription-preloader"><span class="ezd-subscription-loader-wrap"></span></span></div></div>'); 221 $('.ezd-subscription-btn.subscribed').text('Unsubscribing...'); 222 }, 223 success: function (response) { 224 225 $('.ezd-subscription-btn').text(subscriptions_btn); 226 $('.ezd-subscription-btn').removeClass('subscribed'); 227 $('.ezd-subscription-btn').addClass('subscribe'); 228 $('.ezd-subscription-btn').removeAttr('data-token'); 229 230 $('.ezd-subscription-popup').addClass('hidden'); 231 232 history.pushState({}, '', window.location.href.split('?')[0]); 233 234 }, 235 error: function (errorThrown) { 236 console.error('AJAX error: ' + errorThrown); 237 }, 238 }); 239 } 240 }); 241 242 // For logged in user 243 function ezd_logged_user_subscription(){ 244 $('.ezd-subscription-btn.logged-user').on('click', function() { 245 246 var $this = $(this); 247 var postId = $this.data('id'); 248 var token = $(this).attr('data-token'); 249 var id = $(this).attr('data-id'); 250 251 if ( $this.hasClass('subscribed') ) { 252 // Unsubscribe via AJAX 253 254 var ezd_doc_post_title = ''; 255 256 if ( eazydocs_subscription.unsubscriptions_post_title ) { 257 ezd_doc_post_title = eazydocs_subscription.doc_post_title+'?'; 258 } 259 260 $('body').append("<div class='ezd-subscription-popup top-center unsubscription'><div class='ezd-subscription-popup-inner'><h1>"+eazydocs_subscription.unsubscriptions_heading+"</h1><p>"+eazydocs_subscription.unsubscriptions_desc +' '+ezd_doc_post_title+"</p><span class='ezd-subscription-preloader hidden'><span class='ezd-subscription-loader-wrap'></span></span><span class='ezd-subscription-action'><a href='' class='ezd-subscription-confirm'>"+eazydocs_subscription.unsubscriptions_submit_btn+"</a><a href='' class='ezd-subscription-cancel'>
260"+eazydocs_subscription.unsubscriptions_cancel_btn+"</a></span></div></div>"); 261 262 $('.ezd-subscription-cancel').on('click', (function (e) { 263 e.preventDefault(); 264 $('.ezd-subscription-popup').addClass('hidden'); 265 }) 266 ); 267 268 // if click .ezd-subscription-confirm 269 $('.ezd-subscription-confirm').on('click', (function (e) { 270 $.ajax({ 271 url: eazydocs_ajax_search.ajax_url, // Ensure this is defined in wp_localize_script 272 type: 'POST', 273 dataType: 'json', 274 data: { 275 action: 'ezd_unsubscription_create', 276 token: token, 277 token_id: id 278 }, 279 beforeSend: function() { 280 $this.text('Unsubscribing...').prop('disabled', true); 281 }, 282 success: function(response) { 283 $this.text('Subscribe').removeClass('subscribed'); 284 285 }, 286 complete: function() { 287 $this.prop('disabled', false); 288 } 289 }); 290 } 291 )); 292 } else { 293 // Subscribe via AJAX 294 $.ajax({ 295 url: eazydocs_ajax_search.ajax_url, 296 type: 'POST', 297 dataType: 'json', 298 data: { 299 action: 'ezd_auto_confirm_subscription', 300 post_id: postId 301 }, 302 beforeSend: function() { 303 $this.text('Subscribing...').prop('disabled', true); 304 }, 305 success: function(response) { 306 $this.text('Unsubscribe').addClass('subscribed'); 307 $this.attr('data-token', response.data.token); 308 }, 309 complete: function() { 310 $this.prop('disabled', false); 311 } 312 }); 313 } 314 }); 315 } 316 ezd_logged_user_subscription(); 317 318 }); 319})(jQuery);
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.