PluginProbe ʕ •ᴥ•ʔ
LatePoint – Calendar Booking Plugin for Appointments and Events / 5.1.2
LatePoint – Calendar Booking Plugin for Appointments and Events v5.1.2
5.6.7 5.6.6 5.6.5 5.6.4 5.6.3 5.6.2 5.6.1 5.6.0 5.5.2 5.5.1 5.5.0 5.4.2 trunk 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.1.8 5.1.9 5.1.91 5.1.92 5.1.93 5.1.94 5.2.0 5.2.1 5.2.10 5.2.11 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7 5.2.8 5.2.9 5.3.0 5.3.1 5.3.2 5.4.0 5.4.1
latepoint / lib / assets / javascripts / bin / actions.js
latepoint / lib / assets / javascripts / bin Last commit date
admin 1 year ago front 1 year ago actions.js 1 year ago latecheckbox.js 1 year ago lateselect.js 1 year ago notifications.js 1 year ago shared.js 1 year ago time.js 1 year ago
actions.js
360 lines
1 function latepoint_generate_form_message_html(messages, status){
2 var message_html = '<div class="os-form-message-w status-' + status + '"><ul>';
3 if(Array.isArray(messages)){
4 messages.forEach(function(message){
5 message_html+= '<li>' + message + '</li>';
6 });
7 }else{
8 message_html+= '<li>' + messages + '</li>';
9 }
10 message_html+= '</ul></div>';
11 return message_html;
12 }
13
14 function latepoint_display_in_side_sub_panel(html){
15 if(!jQuery('.latepoint-side-panel-w').length) latepoint_show_data_in_side_panel('');
16 jQuery('.latepoint-side-panel-w .latepoint-side-panels .side-sub-panel-wrapper').remove();
17 jQuery('.latepoint-side-panel-w .latepoint-side-panels').append(html);
18 }
19
20 function latepoint_clear_form_messages($form){
21 $form.find('.os-form-message-w').remove();
22 }
23
24 function latepoint_show_data_in_side_panel(message, extra_classes = '', close_btn = true){
25 jQuery('.latepoint-side-panel-w').remove();
26 jQuery('body').append('<div class="latepoint-side-panel-w ' + extra_classes + ' os-loading"><div class="latepoint-side-panel-shadow"></div><div class="latepoint-side-panels"><div class="latepoint-side-panel-i"></div></div></div>');
27 jQuery('.latepoint-side-panel-i').html(message);
28 if(close_btn){
29 jQuery('.latepoint-side-panel-i').find('.os-form-header .latepoint-side-panel-close').remove();
30 jQuery('.latepoint-side-panel-i').find('.os-form-header').append('<a href="#" class="latepoint-side-panel-close latepoint-side-panel-close-trigger"><i class="latepoint-icon latepoint-icon-x"></i></a>');
31 }
32 setTimeout(function(){
33 jQuery('.latepoint-side-panel-w').removeClass('os-loading');
34 }, 100);
35 }
36
37 function latepoint_show_data_in_lightbox(message, extra_classes = '', close_btn = true, tag = 'div', inner_extra_classes = '', inner_tag = 'div'){
38 jQuery('.latepoint-lightbox-w').remove();
39 let lightbox_css_classes = 'latepoint-lightbox-w latepoint-w latepoint-border-radius-' + latepoint_helper.style_border_radius+ ' ';
40 if(extra_classes) lightbox_css_classes+= extra_classes;
41 let lightbox_css_inner_classes = 'latepoint-lightbox-i ';
42 if(inner_extra_classes) lightbox_css_inner_classes += inner_extra_classes;
43
44 let close_btn_html = close_btn ? '<a href="#" class="latepoint-lightbox-close" tabindex="0"><i class="latepoint-icon latepoint-icon-x"></i></a>' : '';
45 jQuery('body').append('<'+tag+' class="'+ lightbox_css_classes +'"><'+inner_tag+' class="'+ lightbox_css_inner_classes +'">' + message + close_btn_html + '</'+inner_tag+'><div class="latepoint-lightbox-shadow"></div></'+tag+'>');
46
47 jQuery('body').addClass('latepoint-lightbox-active');
48 }
49
50
51
52 // DOCUMENT READY
53 jQuery(function( $ ) {
54
55 if($('.latepoint').find('[data-os-action-onload]').length){
56 $('.latepoint').find('[data-os-action-onload]').each(function(){
57 var $this = jQuery(this);
58 $this.addClass('os-loading');
59 var params = $this.data('os-params');
60 var return_format = $this.data('os-return-format') ? $this.data('os-return-format') : 'json'
61 var data = { action: 'latepoint_route_call', route_name: $this.data('os-action-onload'), params: params, return_format: return_format }
62 jQuery.ajax({
63 type : "post",
64 dataType : "json",
65 url : latepoint_timestamped_ajaxurl(),
66 data : data,
67 success: function(response) {
68 $this.removeClass('os-loading');
69 if (response.status === "success") {
70 if($this.data('os-output-target') == 'self'){
71 $this.html(response.message);
72 }
73 }
74 }
75 });
76 });
77 }
78
79 /*
80 Ajax buttons action
81 */
82 $('.latepoint').on('click', 'button[data-os-action], a[data-os-action], div[data-os-action], span[data-os-action], tr[data-os-action]', function(e){
83 var $this = jQuery(this);
84 if($this.data('os-prompt') && !confirm($this.data('os-prompt'))) return false;
85 var params = $this.data('os-params');
86 if($this.data('os-source-of-params')){
87 var form_data = latepoint_create_form_data_from_non_form_element($($this.data('os-source-of-params')));
88 params = latepoint_formdata_to_url_encoded_string(form_data);
89 }
90 var return_format = $this.data('os-return-format') ? $this.data('os-return-format') : 'json'
91 var data = { action: 'latepoint_route_call', route_name: $this.data('os-action'), params: params, return_format: return_format }
92 $this.addClass('os-loading');
93 if($this.data('os-output-target') == 'side-panel'){
94 $('.latepoint-side-panel-w').remove();
95 let css_classes = $this.data('os-lightbox-classes') ? $this.data('os-lightbox-classes') : '';
96 $('body').append('<div class="latepoint-side-panel-w ' + css_classes + ' os-loading"><div class="latepoint-side-panel-shadow"></div><div class="latepoint-side-panels"><div class="latepoint-side-panel-i"></div></div></div>');
97 }
98 $.ajax({
99 type : "post",
100 dataType : "json",
101 url : latepoint_timestamped_ajaxurl(),
102 data : data,
103 success: function(response){
104 if(response.status === "success"){
105 if($this.data('os-output-target') == 'lightbox'){
106 latepoint_show_data_in_lightbox(response.message, $this.data('os-lightbox-classes'), ($this.data('os-lightbox-no-close-button') !== 'yes'), $this.data('os-lightbox-tag'), $this.data('os-lightbox-inner-classes'), $this.data('os-lightbox-inner-tag'));
107 }else if($this.data('os-output-target') == 'side-panel'){
108 $('.latepoint-side-panel-i').html(response.message);
109 jQuery('.latepoint-side-panel-i').find('.os-form-header .latepoint-side-panel-close').remove();
110 jQuery('.latepoint-side-panel-i').find('.os-form-header').append('<a href="#" class="latepoint-side-panel-close latepoint-side-panel-close-trigger"><i class="latepoint-icon latepoint-icon-x"></i></a>');
111 setTimeout(function(){
112 $('.latepoint-side-panel-w').removeClass('os-loading');
113 }, 100);
114 }else if($this.data('os-success-action') == 'reload'){
115 latepoint_add_notification(response.message);
116 location.reload();
117 return;
118 }else if($this.data('os-success-action') == 'redirect'){
119 if($this.data('os-redirect-to')){
120 latepoint_add_notification(response.message);
121 window.location.replace($this.data('os-redirect-to'));
122 }else{
123 window.location.replace(response.message);
124 }
125 return;
126 }else if($this.data('os-output-target') && $($this.data('os-output-target')).length){
127 if($this.data('os-output-target-do') == 'append') {
128 $($this.data('os-output-target')).append(response.message);
129 }else if($this.data('os-output-target-do') == 'prepend'){
130 $($this.data('os-output-target')).prepend(response.message);
131 }else{
132 $($this.data('os-output-target')).html(response.message);
133 }
134 }else{
135 switch($this.data('os-before-after')){
136 case 'before':
137 $this.before(response.message);
138 break;
139 case 'after':
140 $this.after(response.message);
141 break;
142 case 'replace':
143 $this.replaceWith(response.message);
144 break;
145 case 'none':
146 break;
147 default:
148 latepoint_add_notification(response.message);
149 }
150 }
151 if($this.data('os-after-call')){
152 var func_name = $this.data('os-after-call');
153 var callback = false;
154 if(func_name.includes('.')){
155 var func_arr = func_name.split('.');
156 if(typeof window[func_arr[0]][func_arr[1]] !== 'function'){
157 console.log(func_name + ' is undefined');
158 }
159 if($this.data('os-pass-this') && $this.data('os-pass-response')){
160 window[func_arr[0]][func_arr[1]]($this, response);
161 }else if($this.data('os-pass-this')){
162 window[func_arr[0]][func_arr[1]]($this);
163 }else if($this.data('os-pass-response')){
164 window[func_arr[0]][func_arr[1]](response);
165 }else{
166 window[func_arr[0]][func_arr[1]]();
167 }
168 }else{
169 if(typeof window[func_name] !== 'function'){
170 console.log(func_name + ' is undefined');
171 }
172 if($this.data('os-pass-this') && $this.data('os-pass-response')){
173 window[func_name]($this, response);
174 }else if($this.data('os-pass-this')){
175 window[func_name]($this);
176 }else if($this.data('os-pass-response')){
177 window[func_name](response);
178 }else{
179 window[func_name]();
180 }
181 }
182 }
183 $this.removeClass('os-loading');
184 }else{
185 $this.removeClass('os-loading');
186 if($this.data('os-output-target') && $($this.data('os-output-target')).length){
187 $($this.data('os-output-target')).prepend(latepoint_generate_form_message_html(response.message, 'error'));
188 }else{
189 alert(response.message);
190 }
191 if($this.data('os-after-call-error')){
192 var func_name = $this.data('os-after-call-error');
193 var callback = false;
194 if(func_name.includes('.')){
195 var func_arr = func_name.split('.');
196 if(typeof window[func_arr[0]][func_arr[1]] !== 'function'){
197 console.log(func_name + ' is undefined');
198 }
199 if($this.data('os-pass-this') && $this.data('os-pass-response')){
200 window[func_arr[0]][func_arr[1]]($this, response);
201 }else if($this.data('os-pass-this')){
202 window[func_arr[0]][func_arr[1]]($this);
203 }else if($this.data('os-pass-response')){
204 window[func_arr[0]][func_arr[1]](response);
205 }else{
206 window[func_arr[0]][func_arr[1]]();
207 }
208 }else{
209 if(typeof window[func_name] !== 'function'){
210 console.log(func_name + ' is undefined');
211 }
212 if($this.data('os-pass-this') && $this.data('os-pass-response')){
213 window[func_name]($this, response);
214 }else if($this.data('os-pass-this')){
215 window[func_name]($this);
216 }else if($this.data('os-pass-response')){
217 window[func_name](response);
218 }else{
219 window[func_name]();
220 }
221 }
222 }
223 }
224 }
225 });
226 return false;
227 });
228
229
230 $('.latepoint').on('click', 'form[data-os-action] button[type="submit"]', function(e){
231 $(this).addClass('os-loading');
232 });
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250 /*
251 Form ajax submit action
252 */
253 $('.latepoint').on('submit', 'form[data-os-action]', function(e){
254 e.preventDefault(); // prevent native submit
255 var $form = $(this);
256 var form_data = new FormData($form[0]);
257
258 if (('intlTelInputGlobals' in window) && ('intlTelInputUtils' in window)) {
259 // Get e164 formatted number from phone fields when form is submitted
260 $form.find('input.os-mask-phone').each(function () {
261 let telInstance = window.intlTelInputGlobals.getInstance(this);
262 if(telInstance){
263 const phoneInputName = this.getAttribute('name');
264 const phoneInputValue = window.intlTelInputGlobals.getInstance(this).getNumber(window.intlTelInputUtils.numberFormat.E164);
265 form_data.set(phoneInputName, phoneInputValue);
266 }
267 });
268 }
269
270 var data = { action: 'latepoint_route_call', route_name: $(this).data('os-action'), params: latepoint_formdata_to_url_encoded_string(form_data), return_format: 'json' }
271 $form.find('button[type="submit"]').addClass('os-loading');
272 $.ajax({
273 type : "post",
274 dataType : "json",
275 url : latepoint_timestamped_ajaxurl(),
276 data : data,
277 success: function(response){
278 $form.find('button[type="submit"].os-loading').removeClass('os-loading');
279 latepoint_clear_form_messages($form);
280 if(response.status === "success"){
281 if($form.data('os-success-action') == 'reload'){
282 latepoint_add_notification(response.message);
283 location.reload();
284 return;
285 }else if($form.data('os-success-action') == 'redirect'){
286 if($form.data('os-redirect-to')){
287 latepoint_add_notification(response.message);
288 window.location.replace($form.data('os-redirect-to'));
289 }else{
290 window.location.replace(response.message);
291 }
292 return;
293 }else if($form.data('os-output-target') && $($form.data('os-output-target')).length){
294 $($form.data('os-output-target')).html(response.message);
295 }else{
296 if(response.message == 'redirect'){
297 window.location.replace(response.url);
298 }else{
299 latepoint_add_notification(response.message);
300 $form.prepend(latepoint_generate_form_message_html(response.message, 'success'));
301 }
302 }
303 if($form.data('os-record-id-holder') && response.record_id){
304 $form.find('[name="' + $form.data('os-record-id-holder') + '"]').val(response.record_id)
305 }
306 if($form.data('os-after-call')){
307
308 var func_name = $form.data('os-after-call');
309 var callback = false;
310 if(func_name.includes('.')){
311 var func_arr = func_name.split('.');
312 if(typeof window[func_arr[0]][func_arr[1]] !== 'function'){
313 console.log(func_name + ' is undefined');
314 }
315 if($form.data('os-pass-this') && $form.data('os-pass-response')){
316 window[func_arr[0]][func_arr[1]]($form, response);
317 }else if($form.data('os-pass-this')){
318 window[func_arr[0]][func_arr[1]]($form);
319 }else if($form.data('os-pass-response')){
320 window[func_arr[0]][func_arr[1]](response);
321 }else{
322 window[func_arr[0]][func_arr[1]]();
323 }
324 }else{
325 if(typeof window[func_name] !== 'function'){
326 console.log(func_name + ' is undefined');
327 }
328 if($form.data('os-pass-this') && $form.data('os-pass-response')){
329 window[func_name]($form, response);
330 }else if($form.data('os-pass-this')){
331 window[func_name]($form);
332 }else if($form.data('os-pass-response')){
333 window[func_name](response);
334 }else{
335 window[func_name]();
336 }
337 }
338 }
339 $('button.os-loading').removeClass('os-loading');
340 }else{
341 $('button.os-loading').removeClass('os-loading');
342 if($form.data('os-show-errors-as-notification')){
343 latepoint_add_notification(response.message, 'error');
344 }else{
345 $form.prepend(latepoint_generate_form_message_html(response.message, 'error'));
346 $([document.documentElement, document.body]).animate({
347 scrollTop: ($form.find(".os-form-message-w").offset().top - 30)
348 }, 200);
349 }
350 }
351 if(response.form_values_to_update){
352 $.each(response.form_values_to_update, function(name, value){
353 $form.find('[name="'+ name +'"]').val(value);
354 });
355 }
356 }
357 });
358 return false;
359 });
360 });