1;(function($) { 2 var WP_User_Frontend = { 3 init: function() { 4 // clone and remove repeated field 5 $('.wpuf-form').on('click', 'img.wpuf-clone-field', this.cloneField); 6 $('.wpuf-form').on('click', 'img.wpuf-remove-field', this.removeField); 7 $('.wpuf-form').on('click', 'a.wpuf-delete-avatar', this.deleteAvatar); 8 $('.wpuf-form').on('click', 'a#wpuf-post-draft', this.draftPost); 9 10 $('.wpuf-form-add').on('submit', this.formSubmit); 11 $('form#post').on('submit', this.adminPostSubmit); 12 13 this.ajaxCategory(); 14 // image insert 15 // this.insertImage(); 16 }, 17 18 ajaxCategory: function () { 19 20 var el = '.cat-ajax', 21 wrap = '.category-wrap'; 22 23 $(wrap).on('change', el, function(){ 24 currentLevel = parseInt( $(this).parent().attr('level') ); 25 WP_User_Frontend.getChildCats( $(this), 'lvl', currentLevel+1, wrap, 'category'); 26 }); 27 }, 28 29 getChildCats: function (dropdown, result_div, level, wrap_div, taxonomy) { 30 31 cat = $(dropdown).val(); 32 results_div = result_div + level; 33 taxonomy = typeof taxonomy !== 'undefined' ? taxonomy : 'category'; 34 field_attr = $(dropdown).siblings('span').data('taxonomy'); 35 36 $.ajax({ 37 type: 'post', 38 url: wpuf_frontend.ajaxurl, 39 data: { 40 action: 'wpuf_get_child_cat', 41 catID: cat, 42 nonce: wpuf_frontend.nonce, 43 field_attr: field_attr 44 }, 45 beforeSend: function() { 46 $(dropdown).parent().parent().next('.loading').addClass('wpuf-loading'); 47 }, 48 complete: function() { 49 $(dropdown).parent().parent().next('.loading').removeClass('wpuf-loading'); 50 }, 51 success: function(html) { 52 //console.log( html ); return; 53 $(dropdown).parent().nextAll().each(function(){ 54 $(this).remove(); 55 }); 56 57 if(html != "") { 58 $(dropdown).parent().addClass('hasChild').parent().append('<div id="'+result_div+level+'" level="'+level+'"></div>'); 59 dropdown.parent().parent().find('#'+results_div).html(html).slideDown('fast'); 60 } 61 } 62 }); 63 }, 64 65 cloneField: function(e) { 66 e.preventDefault(); 67 68 var $div = $(this).closest('tr'); 69 var $clone = $div.clone(); 70 // console.log($clone); 71 72 //clear the inputs 73 $clone.find('input').val(''); 74 $clone.find(':checked').attr('checked', ''); 75 $div.after($clone); 76 }, 77 78 removeField: function() { 79 //check if it's the only item 80 var $parent = $(this).closest('tr'); 81 var items = $parent.siblings().andSelf().length; 82 83 if( items > 1 ) { 84 $parent.remove(); 85 } 86 }, 87 88 adminPostSubmit: function(e) { 89 e.preventDefault(); 90 91 var form = $(this), 92 form_data = WP_User_Frontend.validateForm(form); 93 94 if (form_data) { 95 return true; 96 } 97 }, 98 99 draftPost: function (e) { 100 e.preventDefault(); 101 102 var self = $(this), 103 form = $(this).closest('form'), 104 form_data = form.serialize() + '&action=wpuf_draft_post', 105 post_id = form.find('input[type="hidden"][name="post_id"]').val(); 106 107 var rich_texts = [], 108 temp, val; 109 110 // grab rich texts from tinyMCE 111 $('.wpuf-rich-validation').each(function (index, item) { 112 temp = $(item).data('id'); 113 val = $.trim( tinyMCE.get(temp).getContent() ); 114 115 rich_texts.push(temp + '=' + encodeURIComponent( val ) ); 116 }); 117 118 // append them to the form var 119 form_data = form_data + '&' + rich_texts.join('&'); 120 121 122 self.after(' <span class="wpuf-loading"></span>'); 123 $.post(wpuf_frontend.ajaxurl, form_data, function(res) { 124 // console.log(res, post_id); 125 if ( typeof post_id === 'undefined') { 126 var html = '<input type="hidden" name="post_id" value="' + res.post_id +'">'; 127 html += '<input type="hidden" name="post_date" value="' + res.date +'">'; 128 html += '<input type="hidden" name="post_author" value="' + res.post_author +'">'; 129 html += '<input type="hidden" name="comment_status" value="' + res.comment_status +'">'; 130 131 form.append( html ); 132 } 133 134 self.next('span.wpuf-loading').remove(); 135 136 self.after('<span class="wpuf-draft-saved"> Post Saved</span>'); 137 $('.wpuf-draft-saved').delay(2500).fadeOut('fast', function(){ 138 $(this).remove(); 139 }); 140 }) 141 }, 142 143 formSubmit: function(e) { 144 e.preventDefault(); 145 146 var form = $(this), 147 submitButton = form.find('input[type=submit]') 148 form_data = WP_User_Frontend.validateForm(form); 149 150 if (form_data) { 151 152 // send the request 153 form.find('li.wpuf-submit').append('<span class="wpuf-loading"></span>'); 154 submitButton.attr('disabled', 'disabled').addClass('button-primary-disabled'); 155 156 $.post(wpuf_frontend.ajaxurl, form_data, function(res) { 157 // var res = $.parseJSON(res); 158 159 if ( res.success) { 160 if( res.show_message == true) { 161 form.before( '<div class="wpuf-success">' + res.message + '</div>'); 162 form.slideUp( 'fast', function() { 163 form.remove(); 164 }); 165 166 //focus 167 $('html, body').animate({ 168 scrollTop: $('.wpuf-success').offset().top - 100 169 }, 'fast'); 170 171 } else { 172 window.location = res.redirect_to; 173 } 174 175 } else { 176 alert( res.error ); 177 submitButton.removeAttr('disabled'); 178 } 179 180 submitButton.removeClass('button-primary-disabled'); 181 form.find('span.wpuf-loading').remove(); 182 }); 183 } 184 }, 185 186 validateForm: function( self ) { 187 188 var temp, 189 temp_val = '', 190 error = false, 191 error_items = []; 192 193 // remove all initial errors if any 194 WP_User_Frontend.removeErrors(self); 195 WP_User_Frontend.removeErrorNotice(self); 196 197 // ===== Validate: Text and Textarea ======== 198 var required = self.find('[data-required="yes"]:visible'); 199 200 required.each(function(i, item) { 201 // temp_val = $.trim($(item).val()); 202 203 // console.log( $(item).data('type') ); 204 var data_type = $(item).data('type') 205 val = ''; 206 207 switch(data_type) { 208 case 'rich': 209 var name = $(item).data('id') 210 val = $.trim( tinyMCE.get(name).getContent() ); 211 212 if ( val === '') { 213 error = true; 214 215 // make it warn collor 216 WP_User_Frontend.markError(item); 217 } 218 break; 219 220 case 'textarea': 221 case 'text': 222 val = $.trim( $(item).val() ); 223 224 if ( val === '') { 225 error = true; 226 227 // make it warn collor 228 WP_User_Frontend.markError(item); 229 } 230 break; 231 232 case 'select': 233 val = $(item).val(); 234 235 // console.log(val); 236 if ( !val || val === '-1' ) { 237 error = true; 238 239 // make it warn collor 240 WP_User_Frontend.markError(item); 241 } 242 break; 243 244 case 'multiselect': 245 val = $(item).val(); 246 247 if ( val === null || val.length === 0 ) { 248 error = true; 249 250 // make it warn collor 251 WP_User_Frontend.markError(item); 252 } 253 break; 254 255 case 'tax-checkbox': 256 var length = $(item).children().find('input
256:checked').length; 257 258 if ( !length ) { 259 error = true; 260 261 // make it warn collor 262 WP_User_Frontend.markError(item); 263 } 264 break; 265 266 case 'radio': 267 var length = $(item).find('input:checked').length; 268 269 if ( !length ) { 270 error = true; 271 272 // make it warn collor 273 WP_User_Frontend.markError(item); 274 } 275 break; 276 277 case 'file': 278 var length = $(item).find('ul').children().length; 279 280 if ( !length ) { 281 error = true; 282 283 // make it warn collor 284 WP_User_Frontend.markError(item); 285 } 286 break; 287 288 case 'email': 289 var val = $(item).val(); 290 291 if ( val !== '' ) { 292 //run the validation 293 if( !WP_User_Frontend.isValidEmail( val ) ) { 294 error = true; 295 296 WP_User_Frontend.markError(item); 297 } 298 } 299 break; 300 301 302 case 'url': 303 var val = $(item).val(); 304 305 if ( val !== '' ) { 306 //run the validation 307 if( !WP_User_Frontend.isValidURL( val ) ) { 308 error = true; 309 310 WP_User_Frontend.markError(item); 311 } 312 } 313 break; 314 315 }; 316 317 }); 318 319 // if already some error found, bail out 320 if (error) { 321 // add error notice 322 WP_User_Frontend.addErrorNotice(self); 323 324 return false; 325 } 326 327 var form_data = self.serialize(), 328 rich_texts = []; 329 330 // grab rich texts from tinyMCE 331 $('.wpuf-rich-validation').each(function (index, item) { 332 temp = $(item).data('id'); 333 val = $.trim( tinyMCE.get(temp).getContent() ); 334 335 rich_texts.push(temp + '=' + encodeURIComponent( val ) ); 336 }); 337 338 // append them to the form var 339 form_data = form_data + '&' + rich_texts.join('&'); 340 return form_data; 341 }, 342 343 addErrorNotice: function(form) { 344 $(form).find('li.wpuf-submit').append('<div class="wpuf-errors">' + wpuf_frontend.error_message + '</div>'); 345 }, 346 347 removeErrorNotice: function(form) { 348 $(form).find('.wpuf-errors').remove(); 349 }, 350 351 markError: function(item) { 352 $(item).closest('li').addClass('has-error'); 353 $(item).focus(); 354 }, 355 356 removeErrors: function(item) { 357 $(item).find('.has-error').removeClass('has-error'); 358 }, 359 360 isValidEmail: function( email ) { 361 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); 362 return pattern.test(email); 363 }, 364 365 isValidURL: function(url) { 366 var urlregex = new RegExp("^(http:\/\/www.|https:\/\/www.|ftp:\/\/www.|www.|http:\/\/|https:\/\/){1}([0-9A-Za-z]+\.)"); 367 return urlregex.test(url); 368 }, 369 370 insertImage: function() { 371 372 var button = 'wpuf-insert-image', 373 container = 'wpuf-insert-image-container'; 374 if ( !$('#' + button).length) { 375 return; 376 }; 377 378 var imageUploader = new plupload.Uploader({ 379 runtimes: 'html5,html4', 380 browse_button: button, 381 container: container, 382 multipart: true, 383 multipart_params: { 384 action: 'wpuf_insert_image' 385 }, 386 multiple_queues: false, 387 multi_selection: false, 388 urlstream_upload: true, 389 file_data_name: 'wpuf_file', 390 max_file_size: '2mb', 391 url: wpuf_frontend_upload.plupload.url, 392 flash_swf_url: wpuf_frontend_upload.flash_swf_url, 393 filters: [{ 394 title: 'Allowed Files', 395 extensions: 'jpg,jpeg,gif,png,bmp' 396 }] 397 }); 398 399 imageUploader.bind('Init', function(up, params) { 400 // console.log("Current runtime environment: " + params.runtime); 401 }); 402 403 imageUploader.bind('FilesAdded', function(up, files) { 404 var $container = $('#' + container); 405 406 $.each(files, function(i, file) { 407 $container.append( 408 '<div class="upload-item" id="' + file.id + '"><div class="progress progress-striped active"><div class="bar"></div></div></div>'); 409 }); 410 411 up.refresh(); 412 up.start(); 413 }); 414 415 imageUploader.bind('QueueChanged', function (uploader) { 416 imageUploader.start(); 417 }); 418 419 imageUploader.bind('UploadProgress', function(up, file) { 420 var item = $('#' + file.id); 421 422 $('.bar', item).css({ width: file.percent + '%' }); 423 $('.percent', item).html( file.percent + '%' ); 424 }); 425 426 imageUploader.bind('Error', function(up, error) { 427 alert('Error #' + error.code + ': ' + error.message); 428 }); 429 430 imageUploader.bind('FileUploaded', function(up, file, response) { 431 432 $('#' + file.id).remove(); 433 434 if(response.response !== 'error' ) { 435 var success = false;
436 437 if ( typeof tinyMCE !== 'undefined' ) { 438 439 if ( typeof tinyMCE.execInstanceCommand !== 'function' ) { 440 // tinyMCE 4.x 441 tinyMCE.get('post_content').insertContent(response.response); 442 } else { 443 // tinyMCE 3.x 444 tinyMCE.execInstanceCommand('post_content', 'mceInsertContent', false, response.response); 445 } 446 } 447 448 // insert failed to the edit, perhaps insert into textarea 449 var post_content = $('#post_content'); 450 post_content.val( post_content.val() + response.response ); 451 452 } else { 453 alert('Something went wrong'); 454 } 455 }); 456 457 imageUploader.init(); 458 }, 459 460 deleteAvatar: function(e) { 461 e.preventDefault(); 462 463 if ( confirm( $(this).data('confirm') ) ) { 464 $.post(wpuf_frontend.ajaxurl, {action: 'wpuf_delete_avatar', _wpnonce: wpuf_frontend.nonce}, function() { 465 window.location.reload(); 466 }); 467 } 468 } 469 }; 470 471 $(function() { 472 WP_User_Frontend.init(); 473 WP_User_Frontend.insertImage(); 474 475 // payment gateway selection 476 $('ul.wpuf-payment-gateways').on('click', 'input[type=radio]', function(e) {
477 $('.wpuf-payment-instruction').slideUp(250); 478 479 $(this).parents('li').find('.wpuf-payment-instruction').slideDown(250); 480 }); 481 482 if( !$('ul.wpuf-payment-gateways li').find('input[type=radio]').is(':checked') ) { 483 $('ul.wpuf-payment-gateways li').first().find('input[type=radio]').click() 484 } else { 485 var el = $('ul.wpuf-payment-gateways li').find('input[type=radio]:checked'); 486 el.parents('li').find('.wpuf-payment-instruction').slideDown(250); 487 } 488 }); 489 490})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.