PluginProbe
weForms – Easy Drag & Drop Contact Form Builder For WordPress / 1.5.4
weForms – Easy Drag & Drop Contact Form Builder For WordPress v1.5.4
1.6.7 1.6.8 1.6.9 1.6.12 1.6.13 1.6.14 1.6.15 1.6.16 1.6.17 1.6.18 1.6.19 1.6.2 1.6.20 1.6.21 1.6.22 1.6.23 1.6.24 1.6.25 1.6.26 1.6.27 1.6.28 1.6.3 1.6.4 1.6.5 1.6.6 All 74 releases
weforms / assets / wpuf / js / frontend-form.js

frontend-form.js in weForms – Easy Drag & Drop Contact Form Builder For WordPress 1.5.4, at assets/wpuf/js/frontend-form.js

1,047 lines 41.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 ;(function($, window) {
2
3 $.fn.listautowidth = function() {
4 return this.each(function() {
5 var w = $(this).width();
6 var liw = w / $(this).children('li').length;
7 $(this).children('li').each(function(){
8 var s = $(this).outerWidth(true)-$(this).width();
9 $(this).width(liw-s);
10 });
11 });
12 };
13
14 window.WP_User_Frontend = {
15
16 init: function() {
17
18 //enable multistep
19 this.enableMultistep(this);
20
21 // clone and remove repeated field
22 $('.wpuf-form').on('click', 'img.wpuf-clone-field', this.cloneField);
23 $('.wpuf-form').on('click', 'img.wpuf-remove-field', this.removeField);
24 $('.wpuf-form').on('click', 'a.wpuf-delete-avatar', this.deleteAvatar);
25 $('.wpuf-form').on('click', 'a#wpuf-post-draft', this.draftPost);
26 $('.wpuf-form').on('click', 'button#wpuf-account-update-profile', this.account_update_profile);
27
28 $('.wpuf-form-add').on('submit', this.formSubmit);
29 $('form#post').on('submit', this.adminPostSubmit);
30 // $( '.wpuf-form').on('keyup', '#pass1', this.check_pass_strength );
31
32 // refresh pluploads on each step change (multistep form)
33 $('.wpuf-form').on('step-change-fieldset', function(event, number, step) {
34 if ( wpuf_plupload_items.length ) {
35 for (var i = wpuf_plupload_items.length - 1; i >= 0; i--) {
36 wpuf_plupload_items[i].refresh();
37 }
38 }
39 if ( wpuf_map_items.length ) {
40 for (var i = wpuf_map_items.length - 1; i >= 0; i--) {
41 google.maps.event.trigger(wpuf_map_items[i].map, 'resize');
42 wpuf_map_items[i].map.setCenter(wpuf_map_items[i].center);
43 }
44 }
45 });
46
47 this.ajaxCategory();
48 // image insert
49 // this.insertImage();
50
51 //comfirmation alert for canceling subscription
52 $( ':submit[name="wpuf_user_subscription_cancel"]').click(function(e){
53 e.preventDefault();
54
55 swal({
56 text: wpuf_frontend.cancelSubMsg,
57 type: 'warning',
58 showCancelButton: true,
59 confirmButtonColor: '#d54e21',
60 confirmButtonText: wpuf_frontend.delete_it,
61 cancelButtonText: wpuf_frontend.cancel_it,
62 confirmButtonClass: 'btn btn-success',
63 cancelButtonClass: 'btn btn-danger',
64 }).then(function ( isConfirmed ) {
65 if ( !isConfirmed ) {
66 return false;
67 }
68 $('#wpuf_cancel_subscription').submit();
69 });
70 });
71 },
72
73 check_pass_strength : function() {
74 var pass1 = $('#pass1').val(), strength;
75
76 $('#pass-strength-result').show();
77
78 $('#pass-strength-result').removeClass('short bad good strong');
79 if ( ! pass1 ) {
80 $('#pass-strength-result').html( ' ' );
81 $('#pass-strength-result').hide();
82 return;
83 }
84
85 if ( typeof wp.passwordStrength != 'undefined' ) {
86
87 strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputBlacklist(), pass1 );
88
89 switch ( strength ) {
90 case 2:
91 $('#pass-strength-result').addClass('bad').html( pwsL10n.bad );
92 break;
93 case 3:
94 $('#pass-strength-result').addClass('good').html( pwsL10n.good );
95 break;
96 case 4:
97 $('#pass-strength-result').addClass('strong').html( pwsL10n.strong );
98 break;
99 case 5:
100 $('#pass-strength-result').addClass('short').html( pwsL10n.mismatch );
101 break;
102 default:
103 $('#pass-strength-result').addClass('short').html( pwsL10n['short'] );
104 }
105
106 }
107 },
108
109 enableMultistep: function(o) {
110
111 var js_obj = this;
112 var step_number = 0;
113 var progressbar_type = $(':hidden[name="wpuf_multistep_type"]').val();
114
115 if ( progressbar_type == null ) {
116 return;
117 }
118
119 // first fieldset doesn't have prev button,
120 // last fieldset doesn't have next button
121 $('fieldset.wpuf-multistep-fieldset').find('.wpuf-multistep-prev-btn').first().remove();
122 $('fieldset.wpuf-multistep-fieldset').find('.wpuf-multistep-next-btn').last().remove();
123
124 // at first first fieldset will be shown, and others will be hidden
125 $('.wpuf-form fieldset').removeClass('field-active').first().addClass('field-active');
126
127 if ( progressbar_type == 'progressive' && $('.wpuf-form .wpuf-multistep-fieldset').length != 0 ) {
128
129 var firstLegend = $('fieldset.wpuf-multistep-fieldset legend').first();
130 $('.wpuf-multistep-progressbar').html('<div class="wpuf-progress-percentage"></div>' );
131
132 var progressbar = $( ".wpuf-multistep-progressbar" ),
133 progressLabel = $( ".wpuf-progress-percentage" );
134
135 $( ".wpuf-multistep-progressbar" ).progressbar({
136 change: function() {
137 progressLabel.text( progressbar.progressbar( "value" ) + "%" );
138 }
139 });
140
141 $('.wpuf-multistep-fieldset legend').hide();
142
143 } else {
144 $('.wpuf-form').each(function() {
145 var this_obj = $(this);
146 var progressbar = $('.wpuf-multistep-progressbar', this_obj);
147 var nav = '';
148
149 progressbar.addClass('wizard-steps');
150 nav += '<ul class="wpuf-step-wizard">';
151
152 $('.wpuf-multistep-fieldset', this).each(function(){
153 nav += '<li>' + $.trim( $('legend', this).text() ) + '</li>';
154 $('legend', this).hide();
155 });
156
157 nav += '</ul>';
158 progressbar.append( nav );
159
160 $('.wpuf-step-wizard li', progressbar).first().addClass('active-step');
161 $('.wpuf-step-wizard', progressbar).listautowidth();
162 });
163 }
164
165 this.change_fieldset(step_number, progressbar_type);
166
167 $('fieldset .wpuf-multistep-prev-btn, fieldset .wpuf-multistep-next-btn').click(function(e) {
168 // js_obj.formSubmit();
169 if ( $(this).hasClass('wpuf-multistep-next-btn') ) {
170 var result = js_obj.formStepCheck( '', $(this).closest('fieldset') );
171
172 if ( result != false ) {
173 o.change_fieldset(++step_number,progressbar_type);
174 }
175
176 } else if ( $(this).hasClass('wpuf-multistep-prev-btn') ) {
177 o.change_fieldset( --step_number,progressbar_type );
178 }
179
180 var formDiv = $( "form.wpuf-form-add" );
181 var position = formDiv.offset().top;
182
183 // this changes the scrolling behavior to "smooth"
184 window.scrollTo({
185 top: position - 32,
186 behavior: "smooth"
187 });
188
189 return false;
190 });
191 },
192
193 change_fieldset: function(step_number, progressbar_type) {
194 var current_step = $('fieldset.wpuf-multistep-fieldset').eq(step_number);
195
196 $('fieldset.wpuf-multistep-fieldset').removeClass('field-active').eq(step_number).addClass('field-active');
197
198 $('.wpuf-step-wizard li').each(function(){
199 if ( $(this).index() <= step_number ){
200 progressbar_type == 'step_by_step'? $(this).addClass('passed-wpuf-ms-bar') : $('.wpuf-ps-bar',this).addClass('passed-wpuf-ms-bar');
201 } else {
202 progressbar_type == 'step_by_step'? $(this).removeClass('passed-wpuf-ms-bar') : $('.wpuf-ps-bar',this).removeClass('passed-wpuf-ms-bar');
203 }
204 });
205
206 $('.wpuf-step-wizard li').removeClass('wpuf-ms-bar-active active-step completed-step');
207 $('.passed-wpuf-ms-bar').addClass('completed-step').last().addClass('wpuf-ms-bar-active');
208 $('.wpuf-ms-bar-active').addClass('active-step');
209
210 var legend = $('fieldset.wpuf-multistep-fieldset').eq(step_number).find('legend').text();
211 legend = $.trim( legend );
212
213 if ( progressbar_type == 'progressive' && $('.wpuf-form .wpuf-multistep-fieldset').length != 0 ) {
214 var progress_percent = ( step_number + 1 ) * 100 / $('fieldset.wpuf-multistep-fieldset').length ;
215 var progress_percent = Number( progress_percent.toFixed(2) );
216 $( ".wpuf-multistep-progressbar" ).progressbar({value: progress_percent });
217 $( '.wpuf-progress-percentage' ).text( legend + ' (' + progress_percent + '%)');
218 }
219
220 // trigger a change event
221 $('.wpuf-form').trigger('step-change-fieldset', [ step_number, current_step ]);
222 },
223
224 ajaxCategory: function () {
225
226 var el = '.cat-ajax',
227 wrap = '.category-wrap';
228
229 $(wrap).on('change', el, function(){
230 currentLevel = parseInt( $(this).parent().attr('level') );
231 WP_User_Frontend.getChildCats( $(this), 'lvl', currentLevel+1, wrap, 'category');
232 });
233 },
234
235 getChildCats: function (dropdown, result_div, level, wrap_div, taxonomy) {
236
237 cat = $(dropdown).val();
238 results_div = result_div + level;
239 taxonomy = typeof taxonomy !== 'undefined' ? taxonomy : 'category';
240 field_attr = $(dropdown).siblings('span').data('taxonomy');
241
242 $.ajax({
243 type: 'post',
244 url: wpuf_frontend.ajaxurl,
245 data: {
246 action: 'wpuf_get_child_cat',
247 catID: cat,
248 nonce: wpuf_frontend.nonce,
249 field_attr: field_attr
250 },
251 beforeSend: function() {
252 $(dropdown).parent().parent().next('.loading').addClass('wpuf-loading');
253 },
254 complete: function() {
255 $(dropdown).parent().parent().next('.loading').removeClass('wpuf-loading');
256 },
257 success: function(html) {
258 //console.log( html ); return;
259 $(dropdown).parent().nextAll().each(function(){
260 $(this).remove();
261 });
262
263 if(html != "") {
264 $(dropdown).parent().addClass('hasChild').parent().append('<div id="'+result_div+level+'" level="'+level+'"></div>');
265 dropdown.parent().parent().find('#'+results_div).html(html).slideDown('fast');
266 }
267 }
268 });
269 },
270
271 cloneField: function(e) {
272 e.preventDefault();
273
274 var $div = $(this).closest('tr');
275 var $clone = $div.clone();
276 // console.log($clone);
277
278 //clear the inputs
279 $clone.find('input').val('');
280 $clone.find(':checked').attr('checked', '');
281 $div.after($clone);
282 },
283
284 removeField: function() {
285 //check if it's the only item
286 var $parent = $(this).closest('tr');
287 var items = $parent.siblings().andSelf().length;
288
289 if( items > 1 ) {
290 $parent.remove();
291 }
292 },
293
294 adminPostSubmit: function(e) {
295 e.preventDefault();
296
297 var form = $(this),
298 form_data = WP_User_Frontend.validateForm(form);
299
300 if (form_data) {
301 return true;
302 }
303 },
304
305 draftPost: function (e) {
306 e.preventDefault();
307
308 var self = $(this),
309 form = $(this).closest('form'),
310 form_data = form.serialize() + '&action=wpuf_draft_post',
311 post_id = form.find('input[type="hidden"][name="post_id"]').val();
312
313 var rich_texts = [],
314 val;
315
316 // grab rich texts from tinyMCE
317 $('.wpuf-rich-validation').each(function (index, item) {
318 var item = $(item);
319 var editor_id = item.data('id');
320 var item_name = item.data('name');
321 var val = $.trim( tinyMCE.get(editor_id).getContent() );
322
323 rich_texts.push(item_name + '=' + encodeURIComponent( val ) );
324 });
325
326 // append them to the form var
327 form_data = form_data + '&' + rich_texts.join('&');
328
329
330 self.after(' <span class="wpuf-loading"></span>');
331 $.post(wpuf_frontend.ajaxurl, form_data, function(res) {
332 // console.log(res, post_id);
333 if ( typeof post_id === 'undefined') {
334 var html = '<input type="hidden" name="post_id" value="' + res.post_id +'">';
335 html += '<input type="hidden" name="post_date" value="' + res.date +'">';
336 html += '<input type="hidden" name="post_author" value="' + res.post_author +'">';
337 html += '<input type="hidden" name="comment_status" value="' + res.comment_status +'">';
338
339 form.append( html );
340 }
341
342 self.next('span.wpuf-loading').remove();
343
344 self.after('<span class="wpuf-draft-saved">&nbsp; Post Saved</span>');
345 $('.wpuf-draft-saved').delay(2500).fadeOut('fast', function(){
346 $(this).remove();
347 });
348 })
349 },
350
351 // Frontend account dashboard update profile
352 account_update_profile: function (e) {
353 e.preventDefault();
354 var form = $(this).closest('form');
355
356 $.post(wpuf_frontend.ajaxurl, form.serialize(), function (res) {
357 if (res.success) {
358 form.find('.wpuf-error').hide();
359 form.find('.wpuf-success').show();
360 } else {
361 form.find('.wpuf-success').hide();
362 form.find('.wpuf-error').show();
363 form.find('.wpuf-error').text(res.data);
364 }
365 });
366 },
367
368 formStepCheck : function(e,fieldset) {
369 var form = fieldset,
370 submitButton = form.find('input[type=submit]');
371 form_data = WP_User_Frontend.validateForm(form);
372
373 if ( form_data == false ) {
374 WP_User_Frontend.addErrorNotice( self, 'bottom' );
375 }
376 return form_data;
377 },
378
379 formSubmit: function(e) {
380 e.preventDefault();
381
382 var form = $(this),
383 submitButton = form.find('input[type=submit]')
384 form_data = WP_User_Frontend.validateForm(form);
385
386 if (form_data) {
387
388 // send the request
389 form.find('li.wpuf-submit').append('<span class="wpuf-loading"></span>');
390 submitButton.attr('disabled', 'disabled').addClass('button-primary-disabled');
391
392 $.post(wpuf_frontend.ajaxurl, form_data, function(res) {
393 // var res = $.parseJSON(res);
394
395 if ( res.success) {
396
397 // enable external plugins to use events
398 $('body').trigger('wpuf:postform:success', res);
399
400 if ( res.show_message == true) {
401 form.before( '<div class="wpuf-success">' + res.message + '</div>');
402 form.slideUp( 'fast', function() {
403 form.remove();
404 });
405
406 //focus
407 $('html, body').animate({
408 scrollTop: $('.wpuf-success').offset().top - 100
409 }, 'fast');
410
411 } else {
412 window.location = res.redirect_to;
413 }
414
415 } else {
416
417 if ( typeof res.type !== 'undefined' && res.type === 'login' ) {
418
419 if ( confirm(res.error) ) {
420 window.location = res.redirect_to;
421 } else {
422 submitButton.removeAttr('disabled');
423 submitButton.removeClass('button-primary-disabled');
424 form.find('span.wpuf-loading').remove();
425 }
426
427 return;
428 } else {
429 if ( form.find('.g-recaptcha').length > 0 ) {
430 grecaptcha.reset();
431 }
432
433 swal({
434 html: res.error,
435 type: 'warning',
436 showCancelButton: false,
437 confirmButtonColor: '#d54e21',
438 confirmButtonText: 'OK',
439 cancelButtonClass: 'btn btn-danger',
440 });
441
442 }
443
444 submitButton.removeAttr('disabled');
445 }
446
447 submitButton.removeClass('button-primary-disabled');
448 form.find('span.wpuf-loading').remove();
449 });
450 }
451 },
452
453 validateForm: function( self ) {
454
455 var temp,
456 temp_val = '',
457 error = false,
458 error_items = [];
459 error_type = '';
460
461 // remove all initial errors if any
462 WP_User_Frontend.removeErrors(self);
463 WP_User_Frontend.removeErrorNotice(self);
464
465 // ===== Validate: Text and Textarea ========
466 var required = self.find('[data-required="yes"]:visible');
467
468 required.each(function(i, item) {
469 // temp_val = $.trim($(item).val());
470
471 // console.log( $(item).data('type') );
472 var data_type = $(item).data('type')
473 val = '';
474
475 switch(data_type) {
476 case 'rich':
477 var name = $(item).data('id')
478 val = $.trim( tinyMCE.get(name).getContent() );
479
480 if ( val === '') {
481 error = true;
482
483 // make it warn collor
484 WP_User_Frontend.markError(item);
485 }
486 break;
487
488 case 'textarea':
489 case 'text':
490
491 val = $.trim( $(item).val() );
492
493 if ( val === '') {
494 error = true;
495 error_type = 'required';
496
497 // make it warn collor
498 WP_User_Frontend.markError( item, error_type );
499 }
500 break;
501
502 case 'password':
503 case 'confirm_password':
504 var hasRepeat = $(item).data('repeat');
505
506 val = $.trim( $(item).val() );
507
508 if ( val === '') {
509 error = true;
510 error_type = 'required';
511
512 // make it warn collor
513 WP_User_Frontend.markError( item, error_type );
514 }
515
516 if ( hasRepeat ) {
517 var repeatItem = $('[data-type="confirm_password"]').eq(0);;
518
519 if ( repeatItem.val() != val ) {
520 error = true;
521 error_type = 'mismatch';
522
523 WP_User_Frontend.markError( repeatItem, error_type );
524 }
525 }
526
527 break;
528
529 case 'select':
530 val = $(item).val();
531
532 // console.log(val);
533 if ( !val || val === '-1' ) {
534 error = true;
535 error_type = 'required';
536
537 // make it warn collor
538 WP_User_Frontend.markError( item, error_type );
539 }
540 break;
541
542 case 'multiselect':
543 val = $(item).val();
544
545 if ( val === null || val.length === 0 ) {
546 error = true;
547 error_type = 'required';
548
549 // make it warn collor
550 WP_User_Frontend.markError( item, error_type );
551 }
552 break;
553
554 case 'tax-checkbox':
555 var length = $(item).children().find('input:checked').length;
556
557 if ( !length ) {
558 error = true;
559 error_type = 'required';
560
561 // make it warn collor
562 WP_User_Frontend.markError( item, error_type );
563 }
564 break;
565
566 case 'radio':
567 var length = $(item).find('input:checked').length;
568
569 if ( !length ) {
570 error = true;
571 error_type = 'required';
572
573 // make it warn collor
574 WP_User_Frontend.markError( item, error_type );
575 }
576 break;
577
578 case 'file':
579 var length = $(item).find('ul').children().length;
580
581 if ( !length ) {
582 error = true;
583 error_type = 'required';
584
585 // make it warn collor
586 WP_User_Frontend.markError( item, error_type );
587 }
588 break;
589
590 case 'email':
591 var val = $(item).val();
592
593 if ( val !== '' ) {
594 //run the validation
595 if( !WP_User_Frontend.isValidEmail( val ) ) {
596 error = true;
597 error_type = 'validation';
598
599 WP_User_Frontend.markError( item, error_type );
600 }
601 } else if( val === '' ) {
602 error = true;
603 error_type = 'required';
604
605 WP_User_Frontend.markError( item, error_type );
606 }
607 break;
608
609
610 case 'url':
611 var val = $(item).val();
612
613 if ( val !== '' ) {
614 //run the validation
615 if( !WP_User_Frontend.isValidURL( val ) ) {
616 error = true;
617 error_type = 'validation';
618
619 WP_User_Frontend.markError( item, error_type );
620 }
621 }
622 break;
623
624 };
625
626 });
627
628 //check Google Map is required
629 var map_required = self.find('[data-required="yes"][name="google_map"]');
630 if ( map_required ) {
631 var val = $(map_required).val();
632 if ( val == ',' ) {
633 error = true;
634 error_type = 'required';
635
636 WP_User_Frontend.markError( map_required, error_type );
637 }
638 }
639
640 // if already some error found, bail out
641 if (error) {
642 // add error notice
643 WP_User_Frontend.addErrorNotice(self,'end');
644
645 return false;
646 }
647
648 var form_data = self.serialize(),
649 rich_texts = [];
650
651 // grab rich texts from tinyMCE
652 $('.wpuf-rich-validation', self).each(function (index, item) {
653 var item = $(item);
654 var editor_id = item.data('id');
655 var item_name = item.data('name');
656 var val = $.trim( tinyMCE.get(editor_id).getContent() );
657
658 rich_texts.push(item_name + '=' + encodeURIComponent( val ) );
659 });
660
661 // append them to the form var
662 form_data = form_data + '&' + rich_texts.join('&');
663 return form_data;
664 },
665
666 /**
667 *
668 * @param form
669 * @param position (value = bottom or end) end if form is onepare, bottom, if form is multistep
670 */
671 addErrorNotice: function( form, position ) {
672 if( position == 'bottom' ) {
673 $('.wpuf-multistep-fieldset:visible').append('<div class="wpuf-errors">' + wpuf_frontend.error_message + '</div>');
674 } else {
675 $(form).find('li.wpuf-submit').append('<div class="wpuf-errors">' + wpuf_frontend.error_message + '</div>');
676 }
677
678 },
679
680 removeErrorNotice: function(form) {
681 $(form).find('.wpuf-errors').remove();
682 },
683
684 markError: function(item, error_type) {
685
686 var error_string = '';
687 $(item).closest('li').addClass('has-error');
688
689 if ( error_type ) {
690 error_string = $(item).closest('li').data('label');
691 switch ( error_type ) {
692 case 'required' :
693 error_string = error_string + ' ' + error_str_obj[error_type];
694 break;
695 case 'mismatch' :
696 error_string = error_string + ' ' +error_str_obj[error_type];
697 break;
698 case 'validation' :
699 error_string = error_string + ' ' + error_str_obj[error_type];
700 break
701 }
702 $(item).siblings('.wpuf-error-msg').remove();
703 $(item).after('<div class="wpuf-error-msg">'+ error_string +'</div>')
704 }
705
706 $(item).focus();
707 },
708
709 removeErrors: function(item) {
710 $(item).find('.has-error').removeClass('has-error');
711 $('.wpuf-error-msg').remove();
712 },
713
714 isValidEmail: function( email ) {
715 var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
716 return pattern.test(email);
717 },
718
719 isValidURL: function(url) {
720 var urlregex = new RegExp("^(http:\/\/www.|https:\/\/www.|ftp:\/\/www.|www.|http:\/\/|https:\/\/){1}([0-9A-Za-z]+\.)");
721 return urlregex.test(url);
722 },
723
724 insertImage: function(button, form_id) {
725
726 var container = 'wpuf-insert-image-container';
727
728 if ( ! $( '#' + button ).length ) {
729 return;
730 };
731
732 var imageUploader = new plupload.Uploader({
733 runtimes: 'html5,html4',
734 browse_button: button,
735 container: container,
736 multipart: true,
737 multipart_params: {
738 action: 'wpuf_insert_image',
739 form_id: $( '#' + button ).data('form_id')
740 },
741 multiple_queues: false,
742 multi_selection: false,
743 urlstream_upload: true,
744 file_data_name: 'wpuf_file',
745 max_file_size: '2mb',
746 url: wpuf_frontend_upload.plupload.url,
747 flash_swf_url: wpuf_frontend_upload.flash_swf_url,
748 filters: [{
749 title: 'Allowed Files',
750 extensions: 'jpg,jpeg,gif,png,bmp'
751 }]
752 });
753
754 imageUploader.bind('Init', function(up, params) {
755 // console.log("Current runtime environment: " + params.runtime);
756 });
757
758 imageUploader.bind('FilesAdded', function(up, files) {
759 var $container = $('#' + container);
760
761 $.each(files, function(i, file) {
762 $container.append(
763 '<div class="upload-item" id="' + file.id + '"><div class="progress progress-striped active"><div class="bar"></div></div></div>');
764 });
765
766 up.refresh();
767 up.start();
768 });
769
770 imageUploader.bind('QueueChanged', function (uploader) {
771 imageUploader.start();
772 });
773
774 imageUploader.bind('UploadProgress', function(up, file) {
775 var item = $('#' + file.id);
776
777 $('.bar', item).css({ width: file.percent + '%' });
778 $('.percent', item).html( file.percent + '%' );
779 });
780
781 imageUploader.bind('Error', function(up, error) {
782 alert('Error #' + error.code + ': ' + error.message);
783 });
784
785 imageUploader.bind('FileUploaded', function(up, file, response) {
786
787 $('#' + file.id).remove();
788
789 if ( response.response !== 'error' ) {
790 var success = false;
791
792 if ( typeof tinyMCE !== 'undefined' ) {
793
794 if ( typeof tinyMCE.execInstanceCommand !== 'function' ) {
795 // tinyMCE 4.x
796 var mce = tinyMCE.get( 'post_content_' + form_id );
797
798 if ( mce !== null ) {
799 mce.insertContent(response.response);
800 }
801 } else {
802 // tinyMCE 3.x
803 tinyMCE.execInstanceCommand( 'post_content_' + form_id, 'mceInsertContent', false, response.response);
804 }
805 }
806
807 // insert failed to the edit, perhaps insert into textarea
808 var post_content = $('#post_content_' + form_id);
809 post_content.val( post_content.val() + response.response );
810
811 } else {
812 alert('Something went wrong');
813 }
814 });
815
816 imageUploader.init();
817 },
818
819 deleteAvatar: function(e) {
820 e.preventDefault();
821
822 if ( confirm( $(this).data('confirm') ) ) {
823 $.post(wpuf_frontend.ajaxurl, {action: 'wpuf_delete_avatar', _wpnonce: wpuf_frontend.nonce}, function() {
824 $(e.target).parent().remove();
825 $('[id^=wpuf-avatar]').css("display", "");
826 });
827 }
828 },
829
830 editorLimit: {
831
832 bind: function(limit, field, type) {
833 if ( type === 'no' ) {
834 // it's a textarea
835 $('textarea#' + field).keydown( function(event) {
836 WP_User_Frontend.editorLimit.textLimit.call(this, event, limit);
837 });
838
839 $('input#' + field).keydown( function(event) {
840 WP_User_Frontend.editorLimit.textLimit.call(this, event, limit);
841 });
842
843 $('textarea#' + field).on('paste', function(event) {
844 var self = $(this);
845
846 setTimeout(function() {
847 WP_User_Frontend.editorLimit.textLimit.call(self, event, limit);
848 }, 100);
849 });
850
851 $('input#' + field).on('paste', function(event) {
852 var self = $(this);
853
854 setTimeout(function() {
855 WP_User_Frontend.editorLimit.textLimit.call(self, event, limit);
856 }, 100);
857 });
858
859 } else {
860 // it's a rich textarea
861 setTimeout(function () {
862 tinyMCE.get(field).onKeyDown.add(function(ed, event) {
863 WP_User_Frontend.editorLimit.tinymce.onKeyDown(ed, event, limit);
864 } );
865
866 tinyMCE.get(field).onPaste.add(function(ed, event) {
867 setTimeout(function() {
868 WP_User_Frontend.editorLimit.tinymce.onPaste(ed, event, limit);
869 }, 100);
870 });
871
872 }, 1000);
873 }
874 },
875
876 tinymce: {
877
878 getStats: function(ed) {
879 var body = ed.getBody(), text = tinymce.trim(body.innerText || body.textContent);
880
881 return {
882 chars: text.length,
883 words: text.split(/[\w\u2019\'-]+/).length
884 };
885 },
886
887 onKeyDown: function(ed, event, limit) {
888 var numWords = WP_User_Frontend.editorLimit.tinymce.getStats(ed).words - 1;
889
890 limit ? $('.mce-path-item.mce-last', ed.container).html('Word Limit : '+ numWords +'/'+limit):'';
891
892 if ( limit && numWords > limit ) {
893 WP_User_Frontend.editorLimit.blockTyping(event);
894 jQuery('.mce-path-item.mce-last', ed.container).html( wpuf_frontend.word_limit );
895 }
896 },
897
898 onPaste: function(ed, event, limit) {
899 var editorContent = ed.getContent().split(' ').slice(0, limit).join(' ');
900
901 // Let TinyMCE do the heavy lifting for inserting that content into the editor.
902 // ed.insertContent(content); //ed.execCommand('mceInsertContent', false, content);
903 ed.setContent(editorContent);
904
905 WP_User_Frontend.editorLimit.make_media_embed_code(editorContent, ed);
906 }
907 },
908
909 textLimit: function(event, limit) {
910 var self = $(this),
911 content = self.val().split(' ');
912
913 if ( limit && content.length > limit ) {
914 self.closest('.wpuf-fields').find('span.wpuf-wordlimit-message').html( wpuf_frontend.word_limit );
915 WP_User_Frontend.editorLimit.blockTyping(event);
916 } else {
917 self.closest('.wpuf-fields').find('span.wpuf-wordlimit-message').html('');
918 }
919
920 // handle the paste event
921 if ( event.type === 'paste' ) {
922 self.val( content.slice(0, limit).join( ' ' ) );
923 }
924 },
925
926 blockTyping: function(event) {
927 // Allow: backspace, delete, tab, escape, minus enter and . backspace = 8,delete=46,tab=9,enter=13,.=190,escape=27, minus = 189
928 if ($.inArray(event.keyCode, [46, 8, 9, 27, 13, 110, 190, 189]) !== -1 ||
929 // Allow: Ctrl+A
930 (event.keyCode == 65 && event.ctrlKey === true) ||
931 // Allow: home, end, left, right, down, up
932 (event.keyCode >= 35 && event.keyCode <= 40)) {
933 // let it happen, don't do anything
934 return;
935 }
936
937 event.preventDefault();
938 event.stopPropagation();
939 },
940
941 make_media_embed_code: function(content, editor){
942 $.post( ajaxurl, {
943 action:'make_media_embed_code',
944 content: content
945 },
946 function(data){
947 // console.log(data);
948 editor.setContent(editor.getContent() + editor.setContent(data));
949 }
950 )
951 }
952 }
953 };
954
955 $(function() {
956 WP_User_Frontend.init();
957
958 // payment gateway selection
959 $('ul.wpuf-payment-gateways').on('click', 'input[type=radio]', function(e) {
960 $('.wpuf-payment-instruction').slideUp(250);
961
962 $(this).parents('li').find('.wpuf-payment-instruction').slideDown(250);
963 });
964
965 if( !$('ul.wpuf-payment-gateways li').find('input[type=radio]').is(':checked') ) {
966 $('ul.wpuf-payment-gateways li').first().find('input[type=radio]').click()
967 } else {
968 var el = $('ul.wpuf-payment-gateways li').find('input[type=radio]:checked');
969 el.parents('li').find('.wpuf-payment-instruction').slideDown(250);
970 }
971 });
972
973 $(function() {
974 $('input[name="first_name"], input[name="last_name"]').on('change keyup', function() {
975 var myVal, newVal = $.makeArray($('input[name="first_name"], input[name="last_name"]').map(function(){
976 if (myVal = $(this).val()) {
977 return(myVal);
978 }
979 })).join(' ');
980 $('input[name="display_name"]').val(newVal);
981 });
982 });
983
984 // script for Dokan vendor registration template
985 $(function($) {
986
987 $('.wpuf-form-add input[name="dokan_store_name"]').on('focusout', function() {
988 var value = $(this).val().toLowerCase().replace(/-+/g, '').replace(/\s+/g, '-').replace(/[^a-z0-9-]/g, '');
989 $('input[name="shopurl"]').val(value);
990 $('#url-alart').text( value );
991 $('input[name="shopurl"]').focus();
992 });
993
994 $('.wpuf-form-add input[name="shopurl"]').keydown(function(e) {
995 var text = $(this).val();
996
997 // Allow: backspace, delete, tab, escape, enter and .
998 if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 91, 109, 110, 173, 189, 190]) !== -1 ||
999 // Allow: Ctrl+A
1000 (e.keyCode == 65 && e.ctrlKey === true) ||
1001 // Allow: home, end, left, right
1002 (e.keyCode >= 35 && e.keyCode <= 39)) {
1003 // let it happen, don't do anything
1004 return;
1005 }
1006
1007 if ((e.shiftKey || (e.keyCode < 65 || e.keyCode > 90) && (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105) ) {
1008 e.preventDefault();
1009 }
1010 });
1011
1012 $('.wpuf-form-add input[name="shopurl"]').keyup(function(e) {
1013 $('#url-alart').text( $(this).val() );
1014 });
1015
1016 $('.wpuf-form-add input[name="shopurl"]').on('focusout', function() {
1017 var self = $(this),
1018 data = {
1019 action : 'shop_url',
1020 url_slug : self.val(),
1021 _nonce : dokan.nonce,
1022 };
1023
1024 if ( self.val() === '' ) {
1025 return;
1026 }
1027
1028 $.post( dokan.ajaxurl, data, function(resp) {
1029
1030 if ( resp == 0){
1031 $('#url-alart').removeClass('text-success').addClass('text-danger');
1032 $('#url-alart-mgs').removeClass('text-success').addClass('text-danger').text(dokan.seller.notAvailable);
1033 } else {
1034 $('#url-alart').removeClass('text-danger').addClass('text-success');
1035 $('#url-alart-mgs').removeClass('text-danger').addClass('text-success').text(dokan.seller.available);
1036 }
1037
1038 } );
1039
1040 });
1041
1042 // Set name attribute for google map search field
1043 $(".wpuf-form-add #wpuf-map-add-location").attr("name", "find_address");
1044 });
1045
1046 })(jQuery, window);
1047