PluginProbe ʕ •ᴥ•ʔ
LatePoint – Calendar Booking Plugin for Appointments and Events / 5.1.3
LatePoint – Calendar Booking Plugin for Appointments and Events v5.1.3
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
363 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 let data = latepoint_create_form_data($form, $(this).data('os-action'));
271
272 // var data = { action: 'latepoint_route_call', route_name: $(this).data('os-action'), params: latepoint_formdata_to_url_encoded_string(form_data), return_format: 'json' }
273 $form.find('button[type="submit"]').addClass('os-loading');
274 $.ajax({
275 type : "post",
276 dataType : "json",
277 processData: false,
278 contentType: false,
279 url : latepoint_timestamped_ajaxurl(),
280 data : data,
281 success: function(response){
282 $form.find('button[type="submit"].os-loading').removeClass('os-loading');
283 latepoint_clear_form_messages($form);
284 if(response.status === "success"){
285 if($form.data('os-success-action') == 'reload'){
286 latepoint_add_notification(response.message);
287 location.reload();
288 return;
289 }else if($form.data('os-success-action') == 'redirect'){
290 if($form.data('os-redirect-to')){
291 latepoint_add_notification(response.message);
292 window.location.replace($form.data('os-redirect-to'));
293 }else{
294 window.location.replace(response.message);
295 }
296 return;
297 }else if($form.data('os-output-target') && $($form.data('os-output-target')).length){
298 $($form.data('os-output-target')).html(response.message);
299 }else{
300 if(response.message == 'redirect'){
301 window.location.replace(response.url);
302 }else{
303 latepoint_add_notification(response.message);
304 }
305 }
306 if($form.data('os-record-id-holder') && response.record_id){
307 $form.find('[name="' + $form.data('os-record-id-holder') + '"]').val(response.record_id)
308 }
309 if($form.data('os-after-call')){
310
311 var func_name = $form.data('os-after-call');
312 var callback = false;
313 if(func_name.includes('.')){
314 var func_arr = func_name.split('.');
315 if(typeof window[func_arr[0]][func_arr[1]] !== 'function'){
316 console.log(func_name + ' is undefined');
317 }
318 if($form.data('os-pass-this') && $form.data('os-pass-response')){
319 window[func_arr[0]][func_arr[1]]($form, response);
320 }else if($form.data('os-pass-this')){
321 window[func_arr[0]][func_arr[1]]($form);
322 }else if($form.data('os-pass-response')){
323 window[func_arr[0]][func_arr[1]](response);
324 }else{
325 window[func_arr[0]][func_arr[1]]();
326 }
327 }else{
328 if(typeof window[func_name] !== 'function'){
329 console.log(func_name + ' is undefined');
330 }
331 if($form.data('os-pass-this') && $form.data('os-pass-response')){
332 window[func_name]($form, response);
333 }else if($form.data('os-pass-this')){
334 window[func_name]($form);
335 }else if($form.data('os-pass-response')){
336 window[func_name](response);
337 }else{
338 window[func_name]();
339 }
340 }
341 }
342 $('button.os-loading').removeClass('os-loading');
343 }else{
344 $('button.os-loading').removeClass('os-loading');
345 if($form.data('os-show-errors-as-notification')){
346 latepoint_add_notification(response.message, 'error');
347 }else{
348 latepoint_add_notification(response.message, 'error');
349 $([document.documentElement, document.body]).animate({
350 scrollTop: ($form.find(".os-form-message-w").offset().top - 30)
351 }, 200);
352 }
353 }
354 if(response.form_values_to_update){
355 $.each(response.form_values_to_update, function(name, value){
356 $form.find('[name="'+ name +'"]').val(value);
357 });
358 }
359 }
360 });
361 return false;
362 });
363 });