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

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