/* User Submitted Posts : Core JS : Version 2.0 @ https://perishablepress.com/user-submitted-posts/ */ jQuery(document).ready(function($) { $('.usp-callout-failure').addClass('usp-hidden').hide(); $('#user-submitted-post').on('click', function(e) { if (usp_recaptcha_disp == 'show' && usp_recaptcha_vers == 3) { var validate = usp_validate(); e.preventDefault(); grecaptcha.ready(function() { grecaptcha.execute(usp_recaptcha_key, { action: 'submit' }).then(function(token) { $('#recaptcha_response').remove(); $('#usp-submit').prepend(''); if (validate) $('#usp_form').unbind('submit').submit(); });; }); } else { usp_validate(); } }); function usp_validate() { // $('#usp_form').parsley().validate(); if (true === $('#usp_form').parsley().isValid()) { $('.usp-callout-failure').addClass('usp-hidden').hide(); // remove empty file inputs $('.usp-clone').each(function() { var opt = $(this).data('parsley-excluded'); if (typeof opt !== 'undefined' && opt == true) { var val = $(this).val(); if (!val.trim()) $(this).remove(); } }); return true; } else { $('.usp-callout-failure').removeClass('usp-hidden').show(); return false; } }; $('#usp_form').on('submit', function(e) { usp_captcha_check(e); if ($(this).parsley().isValid()) { $('.usp-submit').css('cursor', 'wait'); $('.usp-submit').attr('disabled', true); } usp_remember(); }); $('.usp-captcha .usp-input').on('change', function(e) { usp_captcha_check(e); }); function usp_captcha_check(e) { if (usp_case_sensitivity === 'true') var usp_casing = ''; else var usp_casing = 'i'; var usp_response = new RegExp(usp_challenge_response + '$', usp_casing); var usp_captcha = $('.user-submitted-captcha').val(); if (typeof usp_captcha != 'undefined') { if (usp_captcha.match(usp_response)) { $('.usp-captcha-error').remove(); $('.usp-captcha .usp-input').removeClass('parsley-error'); $('.usp-captcha .usp-input').addClass('parsley-success'); } else { if (e) e.preventDefault(); $('.usp-captcha-error').remove(); $('.usp-captcha').append(''); $('.usp-captcha .usp-input').removeClass('parsley-success'); $('.usp-captcha .usp-input').addClass('parsley-error'); } } } // cookies usp_remember(); usp_forget(); function usp_cookie(selector, type) { $(selector).each(function() { var name = $(this).attr('id'); var cookie = Cookies.get(name); if (cookie) { cookie = decodeURIComponent(cookie); if (type == 'checkbox') { if (cookie == 1) { $(this).val(1).prop('checked', 1); } else { $(this).val(0).prop('checked', 0); } } else if (type == 'select') { if (name == 'user-submitted-tags' && window.usp_existing_tags == 1) { $.each(cookie.split(','), function(i,e) { $('#user-submitted-tags option[value="'+ e +'"]').attr('selected', 'selected'); }); } else if (name == 'user-submitted-category' && window.usp_multiple_cats == 1) { $.each(cookie.split(','), function(i,e) { $('#user-submitted-category option[value="'+ e +'"]').attr('selected', 'selected'); }); } else { $('option[value="'+ cookie +'"]', this).attr('selected', 'selected'); } } else { $(this).val(cookie); } } $(this).on('change', function() { if (type == 'checkbox') { if ($(this).is(':checked')) { var value = 1; $(this).val(1).prop('checked', 1); } else { var value = 0; $(this).val(0).prop('checked', 0); } } else { var value = $(this).val(); } Cookies.set(name, encodeURIComponent(value), { path: '/', expires: 365000, sameSite: 'strict' }); }); }); } function usp_remember() { usp_cookie('#user-submitted-name', 'text'); usp_cookie('#user-submitted-email', 'text'); usp_cookie('#user-submitted-url', 'text'); usp_cookie('#user-submitted-title', 'text'); if (window.usp_existing_tags == 1) { usp_cookie('#user-submitted-tags', 'select'); } else { usp_cookie('#user-submitted-tags', 'text'); } usp_cookie('#user-submitted-custom', 'text'); usp_cookie('#user-submitted-captcha', 'text'); usp_cookie('#user-submitted-category', 'select'); usp_cookie('#user-submitted-content', 'textarea'); usp_cookie('#user-submitted-checkbox', 'checkbox'); } function usp_forget() { if (window.location.href.indexOf('success=') > -1) { Cookies.remove('user-submitted-name'); Cookies.remove('user-submitted-email'); Cookies.remove('user-submitted-url'); Cookies.remove('user-submitted-title'); Cookies.remove('user-submitted-tags'); Cookies.remove('user-submitted-category'); Cookies.remove('user-submitted-content'); Cookies.remove('user-submitted-custom'); Cookies.remove('user-submitted-checkbox'); Cookies.remove('user-submitted-captcha'); $('#usp_form').find('input[type="text"], textarea').val(''); $('#usp_form option[value=""]').attr('selected', ''); } } // add another image $('#usp_add-another').removeClass('usp-no-js'); $('#usp_add-another').addClass('usp-js'); usp_add_another(); function usp_add_another() { var x = parseInt($('#usp-min-images').val()); var y = parseInt($('#usp-max-images').val()); if (x === 0) x = 1; if (x >= y) $('#usp_add-another').hide(); $('#usp_add-another').on('click', function(e) { e.preventDefault(); x++; var link = $(this); var clone = $('#user-submitted-image').find('input:visible:last').clone().val('').attr('style', 'display:block;'); var prev = ''; $('#usp-min-images').val(x); if (x < y) { link.before(clone.fadeIn(300)); link.before(prev); } else if (x = y) { link.before(clone.fadeIn(300)); link.before(prev); link.hide(); } else { link.hide(); } clone.attr('data-parsley-excluded', 'true'); }); } // file preview $('.usp-input[type=file]').after(''); $(document).on('change', '.usp-input[type=file]', function(x) { var f = x.target.files[0]; var disable = (typeof window.usp_disable_previews !== 'undefined') ? window.usp_disable_previews : false; if (f && !disable) { var r = new FileReader(); var prev = $(this).nextAll('.usp-file-preview:first'); r.onload = function(e) { prev.attr('src', r.result); prev.css({ 'display':'block', 'height':'180px', 'width':'auto', 'margin':'10px 0', 'border':'0' }); }; r.readAsDataURL(f); } }); // chosen var disable_chosen = (typeof window.usp_disable_chosen !== 'undefined') ? window.usp_disable_chosen : false; if (window.usp_multiple_cats == 1 && !disable_chosen) $('#user-submitted-category').chosen(); if (window.usp_existing_tags == 1 && !disable_chosen) $('#user-submitted-tags').chosen(); });