PluginProbe
weForms – Easy Drag & Drop Contact Form Builder For WordPress / 1.3.2
weForms – Easy Drag & Drop Contact Form Builder For WordPress v1.3.2
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.3.2, at assets/wpuf/js/frontend-form.js

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