PageSourceSearch

https://paymentform.io/wp-content/plugins/eazydocs-pro/includes/features/subscription/subscribe.js

js paymentform.io collected 2026-10-08 09:21:54 UTC 14,081 bytes, 319 lines download raw bytes

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.