PluginProbe
Booking Manager – Sync WP Booking Calendar – Import Events, Export Bookings to ICS Calendar / 2.0
Booking Manager – Sync WP Booking Calendar – Import Events, Export Bookings to ICS Calendar v2.0
2.1.21 2.1.20 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 trunk 1.1 2.0 2.0.1 2.0.10.2 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.17 2.0.18 2.0.2 2.0.20 2.0.21 2.0.22 All 55 releases
booking-manager / core / any / js / admin-support.js

admin-support.js in Booking Manager – Sync WP Booking Calendar – Import Events, Export Bookings to ICS Calendar 2.0, at core/any/js/admin-support.js

623 lines 24.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * @version 1.0
3 * @package Support Functions
4 * @subpackage BackEnd Main Script Lib
5 * @category Scripts
6 * @author wpdevelop
7 *
8 * @web-site http://oplugins.com/
9 * @email info@oplugins.com
10 *
11 * @modified 2015-04-09
12 */
13
14
15 /** Scroll to specific HTML element
16 *
17 * @param {type} object_name
18 * @returns {undefined}
19 */
20 function wpbm_scroll_to( object_name ) {
21 if ( jQuery( object_name ).length > 0 ) {
22 var targetOffset = jQuery( object_name ).offset().top;
23 // targetOffset = targetOffset - 50;
24 if (targetOffset<0) targetOffset = 0;
25 if ( jQuery('#wpadminbar').length > 0 ) targetOffset = targetOffset - 50;
26 else targetOffset = targetOffset - 20;
27 jQuery('html,body').animate({scrollTop: targetOffset}, 500);
28 }
29 }
30
31 function wpbm_animate_border( element, time, colors, x ) {
32
33 if (x >= colors.length) {
34 x = 0;
35 } else {
36 x++;
37 var color;
38 if ( colors[x] === '' ) {
39 color = ''
40 } else {
41 color = '#'+colors[x]
42 }
43 element.css('border-color', color)
44 setTimeout(function() {
45 wpbm_animate_border( element, time, colors, x );
46 }, time)
47 }
48 }
49
50 function wpbm_field_highlight( object_name ) {
51
52 if ( jQuery( object_name ).length > 0 ) {
53
54 wpbm_scroll_to( object_name );
55
56 wpbm_animate_border(
57 jQuery( object_name ) // Element
58 , 200 // Time in ms
59 , ['f87000', '', 'f87000', '', 'f87000', '', 'f87000', '', 'f87000', '', 'f87000', ''] // Colors Array
60 , 0
61 );
62 }
63 }
64
65 /** Show Yes/No dialog
66 *
67 * @param {type} message_question
68 * @returns {Boolean}
69 */
70 function wpbm_are_you_sure( message_question ){
71 var answer = confirm( message_question );
72 if ( answer) { return true; }
73 else { return false;}
74 }
75
76 function wpbm_admin_show_message_processing( message_type ){
77
78 var message = '' ;
79
80 if ( message_type == 'saving' )
81 message += wpbm_message_saving;
82 else if ( message_type == 'updating' )
83 message += wpbm_message_updating;
84 else if ( message_type == 'deleting' )
85 message += wpbm_message_deleting;
86 else
87 message += wpbm_message_processing;
88
89 if ( message == 'undefined' )
90 message = 'Processing'
91
92 message = ' <span class="wpdevelop"><span class="glyphicon glyphicon-refresh wpbm_spin wpbm_ajax_icon" aria-hidden="true"></span></span> ' + message + '...';
93
94 wpbm_admin_show_message( message, 'info', 10000 );
95 }
96
97 /** Show Alert Messages
98 *
99 * @param {type} message
100 * @param {type} m_type
101 * @param {type} m_delay
102 * @returns {undefined}
103 */
104 function wpbm_admin_show_message( message, m_type, m_delay ){
105
106 var alert_class = 'notice '; //'alert ';
107 if (m_type == 'error') alert_class += 'notice-error '; //'alert-danger ';
108 if (m_type == 'warning') alert_class += 'notice-warning ';
109 if (m_type == 'info') alert_class += 'notice-info '; //'alert-info ';
110 if (m_type == 'success') alert_class += 'alert-success updated ';
111
112 jQuery('#ajax_working').html( '<div id="wpbm_alert_message" class="wpbm_alert_message">' +
113 '<div class="wpbm_inner_message '+alert_class+'"> ' +
114 '<a class="close" href="javascript:void(0)" onclick="javascript:jQuery(this).parent().hide();">&times;</a> ' +
115 message +
116 '</div>' +
117 '</div>'
118 );
119 jQuery('#wpbm_alert_message').animate( {opacity: 1}, m_delay ).fadeOut(500);
120 }
121
122
123 function wpbm_close_dropdown_selectbox( selector_id ) {
124 jQuery('#' + selector_id + '_container li input[type=checkbox],#' + selector_id + '_container li input[type=radio]').prop('checked', false);
125 jQuery('#' + selector_id + '_container').hide();
126 }
127 // Show Container depend from the selected option in dropdown list
128 function wpbm_show_selected_in_dropdown( selector_id, title, value ){
129 jQuery('#' + selector_id + '_selector .wpbm_selected_in_dropdown').html( title );
130 jQuery('#' + selector_id ).val( value );
131 }
132
133 // Show Container depend from the selected Radio Option and Selectbox value in dropdown list
134 // Exmaple: wpbm_show_selected_in_dropdown__radio_select_option( 'wh_ ... _date', 'wh_ ... _date2', 'wh_ ... _datedays_interval_Radios' );
135 function wpbm_show_selected_in_dropdown__radio_select_option( selector_id, selector_id2, radio_name ){
136
137 // Get selected value in radio buttons
138 var rad_val = jQuery('input:radio[name="' + radio_name + '"]:checked').val();
139
140 if ( rad_val != 'undefined' ) {
141
142 var select_box = jQuery('input:radio[name="' + radio_name + '"]:checked').parents('.input-group').find('select');
143 // Selectbox exist
144 if ( select_box.length > 0 ) {
145 // Get label near selected radiobutton and selected Tilte in selectbox
146 var title = jQuery('input:radio[name="' + radio_name + '"]:checked').parent().find('label').html() + ' ' +
147 jQuery('input:radio[name="' + radio_name + '"]:checked').parents('.input-group').find('select option:selected').text();
148 // Get Value of selected option in selectbox
149 var value = jQuery('input:radio[name="' + radio_name + '"]:checked').parents('.input-group').find('select option:selected').val();
150 // Set Title in dropdown list
151 jQuery('#' + selector_id + '_selector .wpbm_selected_in_dropdown').html( title );
152 // Set value of radio button
153 jQuery('#' + selector_id ).val( rad_val );
154 // Set value of selectbox
155 jQuery('#' + selector_id2 ).val( value );
156 } else {
157 // 2 Text Fields
158 var text_box = jQuery('input:radio[name="' + radio_name + '"]:checked').parents('.text-group').find('input[type="text"]');
159 if ( text_box.length > 0 ) {
160 var text_divs = jQuery('input:radio[name="' + radio_name + '"]:checked').parents('.text-group').find('.dropdown-menu-text-element');
161
162 // Check if we have 2 DIV elements with text fields
163 if ( text_box.length > 0 ) {
164
165 var id_list = [ selector_id, selector_id2 ];
166 var title = '';
167 //Loop our text DIV elements
168 jQuery('input:radio[name="' + radio_name + '"]:checked').parents('.text-group').find('.dropdown-menu-text-element').each(function( i ) {
169
170 if ( title != '' )
171 title += ' - ';
172 title += jQuery(this).find('input[type="text"]').val();
173 jQuery('#' + id_list[ i ] ).val( jQuery(this).find('input[type="text"]').val() );
174 });
175 // Set Title in dropdown list
176 jQuery('#' + selector_id + '_selector .wpbm_selected_in_dropdown').html( title );
177
178 }
179 }
180 }
181 }
182
183 // Hide dropdown list
184 jQuery('#' + selector_id + '_container').hide();
185 }
186
187 //Set status of all checkbos in one time
188 function wpbm_set_checkbox_in_table( el_stutus, el_class ){
189 jQuery('.'+el_class).attr('checked', el_stutus);
190
191 if ( el_stutus ) {
192 jQuery('.'+el_class).parent().parent().parent().parent().addClass('row_selected_color');
193 // jQuery('.'+el_class).parent().parent().addClass('warning');
194 } else {
195 jQuery('.'+el_class).parent().parent().parent().parent().removeClass('row_selected_color');
196 // jQuery('.'+el_class).parent().parent().removeClass('warning');
197 }
198 }
199
200
201 /** Ajax Request
202 *
203 * @param {type} us_id
204 * @param {type} window_id
205 * @returns {undefined}
206 */
207 //<![CDATA[
208 function wpbm_verify_window_opening( us_id, window_id ){
209
210 var is_closed = 0;
211
212 if (jQuery('#' + window_id ).hasClass('closed') == true){
213 jQuery('#' + window_id ).removeClass('closed');
214 } else {
215 jQuery('#' + window_id ).addClass('closed');
216 is_closed = 1;
217 }
218
219
220 jQuery.ajax({ // Start Ajax Sending
221 url: wpbm_ajaxurl,
222 type:'POST',
223 success: function (data, textStatus){if( textStatus == 'success') jQuery('#ajax_respond').html( data );},
224 error:function (XMLHttpRequest, textStatus, errorThrown){ window.status = 'Ajax sending Error status:'+ textStatus; alert(XMLHttpRequest.status + ' ' + XMLHttpRequest.statusText); if ( XMLHttpRequest.status == 500 ) { alert('Error: 500'); } } ,
225 // beforeSend: someFunction,
226 data:{
227 action: 'WPBM_USER_SAVE_WINDOW_STATE',
228 user_id: us_id ,
229 window: window_id,
230 is_closed: is_closed,
231 wpbm_nonce: jQuery('#wpbm_admin_panel_nonce').val()
232 }
233 });
234
235 }
236 //]]>
237
238
239
240 /** Ajax Request - Saving Custom Data for User
241 *
242 * @param {int} us_id
243 * @param {string} data_name
244 * @param {string} data_value - serialized data
245 * @param {int} is_reload - { 0 | 1 } reload or not page
246 */
247 //<![CDATA[
248 function wpbm_save_custom_user_data( us_id, data_name, data_value , is_reload ){
249
250 wpbm_admin_show_message_processing( 'saving' );
251
252 jQuery.ajax({ // Start Ajax Sending
253 url: wpbm_ajaxurl,
254 type:'POST',
255 success: function (data, textStatus){if( textStatus == 'success') jQuery('#ajax_respond').html( data );},
256 error:function (XMLHttpRequest, textStatus, errorThrown){ window.status = 'Ajax sending Error status:'+ textStatus; alert(XMLHttpRequest.status + ' ' + XMLHttpRequest.statusText); if ( XMLHttpRequest.status == 500 ) { alert('Error: 500'); } } ,
257 // beforeSend: someFunction,
258 data:{
259 action: 'WPBM_USER_SAVE_CUSTOM_DATA',
260 user_id: us_id,
261 data_name: data_name,
262 data_value: decodeURIComponent( data_value ),
263 is_reload: is_reload,
264 wpbm_nonce: jQuery('#wpbm_admin_panel_nonce').val()
265 }
266 });
267
268 }
269 //]]>
270
271
272 ////////////////////////////////////////////////////////////////////////////////
273 // Contact Form
274 ////////////////////////////////////////////////////////////////////////////////
275 function wpbm_submit_client_form( submit_form, wpdev_active_locale ){
276
277 var count = submit_form.elements.length;
278 var formdata = '';
279 var inp_value;
280 var element;
281 var el_type;
282
283 for (i=0; i<count; i++) {
284 element = submit_form.elements[i];
285
286 if ( (element.type !=='button') && (element.type !=='hidden') ) {
287
288 // Get Value of Element
289 if ( element.type == 'checkbox' ){
290
291 if ( element.value == '' ) {
292 inp_value = element.checked;
293 } else {
294 if ( element.checked )
295 inp_value = element.value;
296 else
297 inp_value = '';
298 }
299
300 } else if ( element.type == 'radio' ) {
301
302 if ( element.value == '' ) {
303 inp_value = element.checked;
304 } else {
305 if ( element.checked )
306 inp_value = element.value;
307 else
308 inp_value = '';
309 }
310 /*
311 if ( element.checked )
312 inp_value = element.value;
313 else
314 continue;
315 */
316
317 } else {
318 inp_value = element.value;
319 }
320
321 // Get value in selectbox of multiple selection
322 if (element.type =='select-multiple') {
323 inp_value = jQuery('[name="'+element.name+'"]').val() ;
324 if ( ( inp_value == null ) || ( inp_value.toString() == '' ) )
325 inp_value='';
326 }
327
328 /*if ( element.name == ('phone') ) {
329 // we validate a phone number of 10 digits with no comma, no spaces, no punctuation and there will be no + sign in front the number - See more at: http://www.w3resource.com/javascript/form/phone-no-validation.php#sthash.U9FHwcdW.dpuf
330 var reg = /^\d{10}$/;
331 var message_verif_phone = "Please enter correctly phone number";
332 if ( inp_value != '' )
333 if(reg.test(inp_value) == false) {wpbm_show_error_message( element , message_verif_phone);return;}
334 }*/
335
336
337 // Validation Check -- Requred fields
338 if ( element.className.indexOf( 'wpbm-validate-required' ) !== -1 ){
339
340 if ( ( element.type =='checkbox' ) && ( element.checked === false ) ) {
341 if ( ! jQuery(':checkbox[name="'+element.name+'"]', submit_form).is(":checked") ) {
342 wpbm_show_error_message( element , wpbm_global1.message_verif_requred_for_check_box);
343 return;
344 }
345 }
346 if ( element.type =='radio' ) {
347 if ( ! jQuery(':radio[name="'+element.name+'"]', submit_form).is(":checked") ) {
348 wpbm_show_error_message( element , wpbm_global1.message_verif_requred_for_radio_box);
349 return;
350 }
351 }
352 if ( ( element.type !='checkbox' ) && ( element.type !='radio' ) && ( inp_value === '' ) ) {
353 wpbm_show_error_message( element , wpbm_global1.message_verif_requred);
354 return;
355 }
356 }
357
358 // Validation Check --- Email correct filling field
359 if ( element.className.indexOf( 'wpbm-validate-email' ) !== -1 ){
360 var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,})$/;
361 if ( ( inp_value != '' ) && ( reg.test(inp_value) == false ) ) {
362 wpbm_show_error_message( element , wpbm_global1.message_verif_email );
363 return;
364 }
365 }
366
367 /*
368 // Validation Check --- Same Email Field
369 if ( ( element.className.indexOf('wpdev-validates-as-email') !== -1 ) && ( element.className.indexOf('same_as_') !== -1 ) ) {
370
371 // Get the name of Primary Email field from the "same_as_NAME" class
372 var primary_email_name = element.className.match(/same_as_([^\s])+/gi);
373 if (primary_email_name != null) { // We found
374 primary_email_name = primary_email_name[0].substr(8);
375
376 // Recehck if such primary email field exist in the form
377 if (jQuery('[name="' + primary_email_name + '"]').length > 0) {
378
379 // Recheck the values of the both emails, if they do not equla show warning
380 if ( jQuery('[name="' + primary_email_name + '"]').val() !== inp_value ) {
381 wpbm_show_error_message( element , message_verif_same_emeil );return;
382 }
383 }
384 }
385 // Skip one loop for the email veryfication field
386 continue;
387 } */
388
389 /*
390 // Get Form Data
391 if ( element.name !== ('captcha_input' ) ) {
392 if (formdata !=='') formdata += '~'; // next field element
393
394 el_type = element.type;
395 if ( element.className.indexOf('wpdev-validates-as-email') !== -1 ) el_type='email';
396 if ( element.className.indexOf('wpdev-validates-as-coupon') !== -1 ) el_type='coupon';
397
398 inp_value = inp_value + '';
399 inp_value = inp_value.replace(new RegExp("\\^",'g'), '&#94;'); // replace registered characters
400 inp_value = inp_value.replace(new RegExp("~",'g'), '&#126;'); // replace registered characters
401
402 inp_value = inp_value.replace(/"/g, '&#34;'); // replace double quot
403 inp_value = inp_value.replace(/'/g, '&#39;'); // replace single quot
404
405 formdata += el_type + '^' + element.name + '^' + inp_value ; // element attr
406 } */
407 }
408
409 } // End Fields Loop
410
411
412 submit_form.submit(); // Submit Form, if previously was no interuptions
413 }
414
415
416 /**
417 * Show message under specific element
418 *
419 * @param {type} element - jQuery definition of the element
420 * @param {type} errorMessage - String message
421 * @param {type} message_type "" | "alert-warning" | "alert-success" | "alert-info" | "alert-danger"
422 */
423 function wpbm_show_message_under_element( element , errorMessage , message_type) {
424
425 wpbm_scroll_to( element );
426
427 if ( jQuery( element ).attr('type') == "radio" ) {
428 jQuery( element ).parent().parent().parent()
429 .after('<span class="wpbm-near-field-message alert '+ message_type +'">'+ errorMessage +'</span>'); // Show message
430
431 } else if (jQuery( element ).attr('type') == "checkbox") {
432 jQuery( element ).parent()
433 .after('<span class="wpbm-near-field-message alert '+ message_type +'">'+ errorMessage +'</span>'); // Show message
434
435 } else {
436 jQuery( element )
437 .after('<span class="wpbm-near-field-message alert '+ message_type +'">'+ errorMessage +'</span>'); // Show message
438 }
439 jQuery(".widget_wpbm .wpbm-near-field-message")
440 .css( {'vertical-align': 'sub' } ) ;
441 jQuery(".wpbm-near-field-message")
442 .animate( {opacity: 1}, 10000 )
443 .fadeOut( 2000 );
444 }
445
446
447 // Show Error Message in Form at Front End
448 function wpbm_show_error_message( element , errorMessage) {
449
450 // Scroll to the element
451 wpbm_scroll_to( element );
452
453 jQuery("[name='"+ element.name +"']")
454 .fadeOut( 350 ).fadeIn( 300 )
455 .fadeOut( 350 ).fadeIn( 400 )
456 .fadeOut( 350 ).fadeIn( 300 )
457 .fadeOut( 350 ).fadeIn( 400 )
458 .animate( {opacity: 1}, 4000 )
459 ; // mark red border
460
461 if (jQuery("[name='"+ element.name +"']").attr('type') == "radio") {
462 jQuery("[name='"+ element.name +"']").parent().parent()//.parent()
463 .after('<span class="wpbm-near-field-message alert alert-warning">'+ errorMessage +'</span>'); // Show message
464
465 } else if (jQuery("[name='"+ element.name +"']").attr('type') == "checkbox") {
466 jQuery("[name='"+ element.name +"']").parent().parent()
467 .after('<span class="wpbm-near-field-message alert alert-warning">'+ errorMessage +'</span>'); // Show message
468
469 } else {
470 jQuery("[name='"+ element.name +"']")
471 .after('<span class="wpbm-near-field-message alert alert-warning">'+ errorMessage +'</span>'); // Show message
472 }
473 jQuery(".wpbm-near-field-message")
474 .css( {'padding' : '5px 5px 4px', 'margin' : '2px', 'vertical-align': 'top', 'line-height': '32px' } );
475
476 if ( element.type == 'checkbox' )
477 jQuery(".wpbm-near-field-message").css( { 'vertical-align': 'middle'} );
478
479 jQuery(".widget_wpbm .wpbm-near-field-message")
480 .css( {'vertical-align': 'sub' } ) ;
481 jQuery(".wpbm-near-field-message")
482 .animate( {opacity: 1}, 10000 )
483 .fadeOut( 2000 );
484 element.focus(); // make focus to elemnt
485 return;
486
487 }
488
489
490 /**
491 * Reload the page with new parameter value.
492 *
493 * @param {type} url - full URL of the page, can include or exclude that parameter
494 * @param {type} param - URL parameter name
495 * @param {type} value - URL parameter value
496 * @returns {undefined}
497 */
498 function wpbm_reload_page_with_paramater( url, param, value ) {
499 var hash = {};
500 var parser = document.createElement('a');
501
502 parser.href = url;
503
504 var parameters = parser.search.split(/\?|&/);
505
506 for(var i=0; i < parameters.length; i++) {
507 if(!parameters[i])
508 continue;
509
510 var ary = parameters[i].split('=');
511 hash[ary[0]] = ary[1];
512 }
513
514 hash[param] = value;
515
516 var list = [];
517 Object.keys(hash).forEach(function (key) {
518 list.push(key + '=' + hash[key]);
519 });
520
521 parser.search = '?' + list.join('&');
522 //return parser.href;
523 window.location.href = parser.href;
524 }
525
526
527 jQuery(window).load(function(){
528
529 // Color Text picker ///////////////////////////////////////////////////////
530 if ( jQuery('.field-text-color').length > 0 ) {
531 jQuery('.field-text-color').iris( {
532 change: function(event, ui){
533 jQuery(this).css( { backgroundColor: ui.color.toString() } );
534 jQuery(this).closest('.fields-color-group').find('.fieldvalue').css( { color: ui.color.toString() } );
535 }
536 , hide: true
537 , border: true
538 , palettes: ['#333', '#555', '#777', '#aaa', '#fff']
539 } ).each( function() {
540 jQuery(this).css( { backgroundColor: jQuery(this).val() } );
541 })
542 .click(function(){
543 jQuery('.iris-picker').hide();
544 jQuery(this).closest('div').find('.iris-picker').show();
545 });
546 }
547 // Color Background picker /////////////////////////////////////////////////
548 if ( jQuery('.field-background-color').length > 0 ) {
549 jQuery('.field-background-color').iris( {
550 change: function(event, ui){
551 jQuery(this).css( { backgroundColor: ui.color.toString() } );
552 jQuery(this).closest('.fields-color-group').find('.fieldvalue').css( { backgroundColor: ui.color.toString() } );
553 }
554 , hide: true
555 , border: true
556 , palettes: [ '#FFEE99', '#459', '#78b', '#ab0', '#df5d5d', '#f0f']
557 } ).each( function() {
558 jQuery(this).css( { backgroundColor: jQuery(this).val() } );
559 })
560 .click(function(){
561 jQuery('.iris-picker').hide();
562 jQuery(this).closest('div').find('.iris-picker').show();
563 });
564
565 jQuery('.field-text-color, .field-background-color').click(function(event){
566 event.stopPropagation();
567 });
568 }
569
570 ////////////////////////////////////////////////////////////////////////////
571 // General Color picker in settings table //////////////////////////////////
572 ////////////////////////////////////////////////////////////////////////////
573 if ( jQuery('.wpbm_colorpick').length > 0 ) {
574 jQuery('.wpbm_colorpick').iris( {
575 change: function(event, ui){
576 jQuery(this).css( { backgroundColor: ui.color.toString() } );
577 }
578 , hide: true
579 , border: true
580 , palettes: ['#125', '#459', '#78b', '#ab0', '#de3', '#f0f']
581 } ).each( function() {
582 jQuery(this).css( { backgroundColor: jQuery(this).val() } );
583 })
584 .click(function(){
585 jQuery('.iris-picker').hide();
586 jQuery(this).closest('td').find('.iris-picker').show();
587 });
588
589 jQuery('body').click(function() {
590 jQuery('.iris-picker').hide();
591 });
592
593 jQuery('.wpbm_colorpick').click(function(event){
594 event.stopPropagation();
595 });
596 }
597
598 });
599
600
601
602 ////////////////////////////////////////////////////////////////////////////
603 // Support Functions
604 ////////////////////////////////////////////////////////////////////////////
605
606 /**
607 * Reset of WP Editor or TextArea Content
608 * @param {string} editor_textarea_id - ID of element
609 * @param {string} editor_textarea_content - Content
610 */
611 function wpbm_reset_wp_editor_content( editor_textarea_id, editor_textarea_content ) {
612 if( typeof tinymce != "undefined" ) {
613 var editor = tinymce.get( editor_textarea_id );
614 if( editor && editor instanceof tinymce.Editor ) {
615 editor.setContent( editor_textarea_content );
616 editor.save( { no_events: true } );
617 } else {
618 jQuery( '#' + editor_textarea_id ).val( editor_textarea_content );
619 }
620 } else {
621 jQuery( '#' + editor_textarea_id ).val( editor_textarea_content );
622 }
623 }