(function($){ FLBuilder.registerModuleHelper('pp-contact-form', { rules: { 'form_border_width': { number: true }, 'form_border_radius': { number: true, }, 'form_shadow_h': { number: true }, 'form_shadow_v': { number: true }, 'form_shadow_blur': { number: true }, 'form_shadow_spread': { number: true }, 'form_shadow_opacity': { number: true }, 'form_padding': { number: true }, 'title_margin': { number: true }, 'description_margin': { number: true }, 'input_field_height': { number: true }, 'input_textarea_height': { number: true }, 'input_field_background_opacity': { number: true }, 'input_field_border_width': { number: true }, 'input_field_border_radius': { number: true }, 'input_field_padding': { number: true }, 'input_field_margin': { number: true }, 'button_width_size': { number: true }, 'button_background_opacity': { number: true }, 'button_border_width': { number: true }, 'button_border_radius': { number: true }, 'title_font_size': { number: true }, 'title_line_height': { number: true }, 'description_font_size': { number: true }, 'description_line_height': { number: true }, 'label_font_size': { number: true }, 'input_font_size': { number: true }, 'button_font_size': { number: true }, 'validation_error_font_size': { number: true }, 'success_message_font_size': { number: true } }, init: function() { var form = $( '.fl-builder-settings' ), action = form.find( 'select[name=success_action]' ), self = this; this._actionChanged(); action.on( 'change', this._actionChanged ); this._keySourceChanged(); $('input[name=recaptcha_key_source]').on( 'change', this._keySourceChanged ); $('input[name=recaptcha_toggle]').on( 'change', function() { setTimeout( function() { self._keySourceChanged(); }, 500 ); } ); // Toggle reCAPTCHA display this._toggleReCaptcha(); // Toggle hCaptcha display this._toggleHCaptcha(); $('input[name=recaptcha_toggle]').on( 'change', this._toggleReCaptcha.bind( this ) ); $('input[name=hcaptcha_toggle]').on( 'change', this._toggleHCaptcha.bind( this ) ); $('input[name=recaptcha_key_source]').on( 'change', this._toggleReCaptcha.bind( this ) ); $('input[name=recaptcha_site_key]').on( 'change', this._toggleReCaptcha.bind( this ) ); $('select[name=recaptcha_validate_type]').on( 'change', this._toggleReCaptcha.bind( this ) ); $('input[name=recaptcha_theme]').on( 'change', this._toggleReCaptcha.bind( this ) ); // Render reCAPTCHA after layout rendered via AJAX if (window.onLoadPPReCaptcha) { $(FLBuilder._contentClass).on('fl-builder.layout-rendered', onLoadPPReCaptcha); } // Render hCaptcha after layout rendered via AJAX if (window.onLoadPPHCaptcha) { $(FLBuilder._contentClass).on('fl-builder.layout-rendered', onLoadPPHCaptcha); } }, _actionChanged: function() { var form = $( '.fl-builder-settings' ), action = form.find( 'select[name=success_action]' ).val(), url = form.find( 'input[name=success_url]' ); url.rules('remove'); if ( 'redirect' == action ) { url.rules( 'add', { required: true } ); } }, _keySourceChanged: function() { var form = $( '.fl-builder-settings' ); if ( 'hide' === form.find('input[name=recaptcha_toggle]').val() ) { $('#fl-field-recaptcha_site_key').hide(); $('#fl-field-recaptcha_secret_key').hide(); return; } if ( 'default' === form.find('input[name=recaptcha_key_source]').val() ) { $('#fl-field-recaptcha_site_key').hide(); $('#fl-field-recaptcha_secret_key').hide(); } else { $('#fl-field-recaptcha_site_key').show(); $('#fl-field-recaptcha_secret_key').show(); } }, /** * Custom preview method for reCAPTCHA settings * * @param object event The event type of where this method been called * @since 1.9.5 */ _toggleReCaptcha: function (event) { var form = $('.fl-builder-settings'), nodeId = form.attr('data-node'), toggle = form.find('input[name=recaptcha_toggle]'), captchaKey = form.find('input[name=recaptcha_site_key]').val(), captType = form.find('select[name=recaptcha_validate_type]').val(), theme = form.find('input[name=recaptcha_theme]').val(), reCaptcha = $('.fl-node-' + nodeId).find('.pp-grecaptcha'), reCaptchaId = nodeId + '-pp-grecaptcha', target = typeof event !== 'undefined' ? $(event.currentTarget) : null, inputEvent = target != null && typeof target.attr('name') !== typeof undefined && target.attr('name') === 'recaptcha_site_key', selectEvent = target != null && typeof target.attr('name') !== typeof undefined && target.attr('name') === 'recaptcha_toggle', typeEvent = target != null && typeof target.attr('name') !== typeof undefined && target.attr('name') === 'recaptcha_validate_type', themeEvent = target != null && typeof target.attr('name') !== typeof undefined && target.attr('name') === 'recaptcha_theme', scriptTag = $('