dist/metaboxes.js000066600000012674152141415070010052 0ustar00// modules are defined as an array // [ module function, map of requires ] // // map of requires is short require name -> numeric require // // anything defined in a previous bundle is accessed via the // orig method which is the require for previous bundles parcelRequire = (function (modules, cache, entry, globalName) { // Save the require from previous bundle to this closure if any var previousRequire = typeof parcelRequire === 'function' && parcelRequire; var nodeRequire = typeof require === 'function' && require; function newRequire(name, jumped) { if (!cache[name]) { if (!modules[name]) { // if we cannot find the module within our internal map or // cache jump to the current global require ie. the last bundle // that was added to the page. var currentRequire = typeof parcelRequire === 'function' && parcelRequire; if (!jumped && currentRequire) { return currentRequire(name, true); } // If there are other bundles on this page the require from the // previous one is saved to 'previousRequire'. Repeat this as // many times as there are bundles until the module is found or // we exhaust the require chain. if (previousRequire) { return previousRequire(name, true); } // Try the node require function if it exists. if (nodeRequire && typeof name === 'string') { return nodeRequire(name); } var err = new Error('Cannot find module \'' + name + '\''); err.code = 'MODULE_NOT_FOUND'; throw err; } localRequire.resolve = resolve; localRequire.cache = {}; var module = cache[name] = new newRequire.Module(name); modules[name][0].call(module.exports, localRequire, module, module.exports, this); } return cache[name].exports; function localRequire(x){ return newRequire(localRequire.resolve(x)); } function resolve(x){ return modules[name][1][x] || x; } } function Module(moduleName) { this.id = moduleName; this.bundle = newRequire; this.exports = {}; } newRequire.isParcelRequire = true; newRequire.Module = Module; newRequire.modules = modules; newRequire.cache = cache; newRequire.parent = previousRequire; newRequire.register = function (id, exports) { modules[id] = [function (require, module) { module.exports = exports; }, {}]; }; var error; for (var i = 0; i < entry.length; i++) { try { newRequire(entry[i]); } catch (e) { // Save first error but execute all entries if (!error) { error = e; } } } if (entry.length) { // Expose entry point to Node, AMD or browser globals // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js var mainExports = newRequire(entry[entry.length - 1]); // CommonJS if (typeof exports === "object" && typeof module !== "undefined") { module.exports = mainExports; // RequireJS } else if (typeof define === "function" && define.amd) { define(function () { return mainExports; }); // '; do_action( 'wpforms_builder_print_footer_scripts' ); } /** * Load the appropriate files to build the page. * * @since 1.0.0 */ public function output() { if ( ! (bool) apply_filters( 'wpforms_builder_output', true ) ) { return; } $form_id = $this->form ? absint( $this->form->ID ) : ''; $field_id = ! empty( $this->form_data['field_id'] ) ? $this->form_data['field_id'] : ''; ?>
<?php esc_attr_e( 'Sullie the WPForms mascot', 'wpforms-lite' ); ?>

<?php esc_attr_e( 'Sullie the WPForms mascot', 'wpforms-lite' ); ?>
form ) : ?> form->post_title ); ?>
form ) : ?>
form, $this->view ); ?>
form, $this->view ); ?>
$val ) { if ( is_array( $val ) ) { $val = wp_json_encode( $val ); } $data_attr .= ' data-' . $key . '=\'' . $val . '\''; } } // Check for readonly inputs. if ( ! empty( $args['readonly' ] ) ) { $data_attr .= 'readonly'; } // Determine what field type to output. switch ( $option ) { // Text input. case 'text': $output = sprintf( '', ! empty( $args['type'] ) ? esc_attr( $args['type'] ) : 'text', $input_id, $field_name, esc_attr( $value ), $placeholder, $input_class, $data_attr ); break; // Textarea. case 'textarea': $output = sprintf( '', $input_id, $field_name, ! empty( $args['rows'] ) ? (int) $args['rows'] : '3', $placeholder, $input_class, $data_attr, esc_textarea( $value ) ); break; // TinyMCE. case 'tinymce': $id = str_replace( '-', '_', $input_id ); $args['tinymce']['textarea_name'] = $field_name; $args['tinymce']['teeny'] = true; $args['tinymce'] = wp_parse_args( $args['tinymce'], array( 'media_buttons' => false, 'teeny' => true, ) ); ob_start(); wp_editor( $value, $id, $args['tinymce'] ); $output = ob_get_clean(); break; // Checkbox. case 'checkbox': $output = sprintf( '', $input_id, $field_name, $input_class, checked( '1', $value, false ), $data_attr ); $output .= sprintf( ''; break; // Radio. case 'radio': $options = $args['options']; $radio_counter = 1; $output = ''; foreach ( $options as $key => $item ) { if ( empty( $item['label'] ) ) { continue; } $item_value = ! empty( $item['value'] ) ? $item['value'] : $key; $output .= ''; if ( ! empty( $item['pre_label'] ) ) { $output .= ''; $radio_counter ++; } if ( ! empty( $output ) ) { $output = '
' . $output . '
'; } break; // Select. case 'select': if ( empty( $args['options'] ) && empty( $args['field_map'] ) ) { return ''; } if ( ! empty( $args['field_map'] ) ) { $options = array(); $available_fields = wpforms_get_form_fields( $form_data, $args['field_map'] ); if ( ! empty( $available_fields ) ) { foreach ( $available_fields as $id => $available_field ) { $lbl = ! empty( $available_field['label'] ) ? esc_attr( $available_field['label'] ) : esc_html__( 'Field #' ) . $id; $options[ $id ] = $lbl; } } $input_class .= ' wpforms-field-map-select'; $data_attr .= ' data-field-map-allowed="' . implode( ' ', $args['field_map'] ) . '"'; if ( ! empty( $placeholder ) ) { $data_attr .= ' data-field-map-placeholder="' . esc_attr( $placeholder ) . '"'; } } else { $options = $args['options']; } $output = sprintf( ''; break; } // Put the pieces together. $field_open = sprintf( '
', $input_id, $class, 'wpforms-panel-field-' . sanitize_html_class( $option ) ); $field_open .= ! empty( $args['before'] ) ? $args['before'] : ''; if ( 'checkbox' !== $option && ! empty( $label ) ) { $field_label = sprintf( ''; if ( ! empty( $args['after_label'] ) ) { $field_label .= $args['after_label']; } } else { $field_label = ''; } $field_close = ! empty( $args['after'] ) ? $args['after'] : ''; $field_close .= '
'; $output = $field_open . $field_label . $output . $field_close; // Wash our hands. if ( $echo ) { echo $output; } else { return $output; } } /** * Get notification state, whether it's opened or closed. * * @since 1.4.1 * @deprecated 1.4.8 * * @param int $form_id * @param int $notification_id * * @return string */ function wpforms_builder_notification_get_state( $form_id, $notification_id ) { _deprecated_function( __FUNCTION__, '1.4.8 of WPForms plugin', 'wpforms_builder_settings_block_get_state()' ); return wpforms_builder_settings_block_get_state( $form_id, $notification_id, 'notification' ); } /** * Get settings block state, whether it's opened or closed. * * @since 1.4.8 * * @param int $form_id * @param int $block_id * @param string $block_type * * @return string */ function wpforms_builder_settings_block_get_state( $form_id, $block_id, $block_type ) { $form_id = absint( $form_id ); $block_id = absint( $block_id ); $block_type = sanitize_key( $block_type ); $state = 'opened'; $all_states = get_user_meta( get_current_user_id(), 'wpforms_builder_settings_collapsable_block_states', true ); if ( empty( $all_states ) ) { return $state; } if ( is_array( $all_states ) && ! empty( $all_states[ $form_id ][ $block_type ][ $block_id ] ) && 'closed' === $all_states[ $form_id ][ $block_type ][ $block_id ] ) { $state = 'closed'; } // Backward compatibility for notifications. if ( 'notification' === $block_type && 'closed' !== $state ) { $notification_states = get_user_meta( get_current_user_id(), 'wpforms_builder_notification_states', true ); } if ( ! empty( $notification_states[ $form_id ][ $block_id ] ) && 'closed' === $notification_states[ $form_id ][ $block_id ] ) { $state = 'closed'; } if ( 'notification' === $block_type ) { // Backward compatibility for notifications. return apply_filters( 'wpforms_builder_notification_get_state', $state, $form_id, $block_id ); } return apply_filters( 'wpforms_builder_settings_block_get_state', $state, $form_id, $block_id, $block_type ); } /** * Get the list of allowed tags, used in pair with wp_kses() function. * This allows getting rid of all potentially harmful HTML tags and attributes. * * @since 1.5.9 * * @return array Allowed Tags. */ function wpforms_builder_preview_get_allowed_tags() { static $allowed_tags; if ( ! empty( $allowed_tags ) ) { return $allowed_tags; } $atts = [ 'align', 'class', 'type', 'id', 'for', 'style', 'src', 'rel', 'href', 'target', 'value', 'width', 'height' ]; $tags = [ 'label', 'iframe', 'style', 'button', 'strong', 'small', 'table', 'span', 'abbr', 'code', 'pre', 'div', 'img', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ol', 'ul', 'li', 'em', 'hr', 'br', 'th', 'tr', 'td', 'p', 'a', 'b', 'i' ]; $allowed_atts = array_fill_keys( $atts, [] ); $allowed_tags = array_fill_keys( $tags, $allowed_atts ); return $allowed_tags; } panels/class-setup.php000066600000013761152141441430011015 0ustar00name = esc_html__( 'Setup', 'wpforms-lite' ); $this->slug = 'setup'; $this->icon = 'fa-cog'; $this->order = 5; } /** * Enqueue assets for the builder. * * @since 1.0.0 */ public function enqueues() { // CSS. wp_enqueue_style( 'wpforms-builder-setup', WPFORMS_PLUGIN_URL . 'assets/css/admin-builder-setup.css', null, WPFORMS_VERSION ); } /** * Output the Settings panel primary content. * * @since 1.0.0 */ public function panel_content() { $core_templates = apply_filters( 'wpforms_form_templates_core', array() ); $additional_templates = apply_filters( 'wpforms_form_templates', array() ); $additional_count = count( $additional_templates ); ?>

blank form.', 'wpforms-lite' ), array( 'strong' => array(), 'a' => array( 'href' => array(), 'class' => array(), ), ) ); ?>

template_select_options( $core_templates, 'core' ); ?>
(' . $additional_count . ')' : ''; ?>

We\'d love to hear it. Also, you can create your own templates!', 'wpforms-lite' ), array( 'a' => array( 'href' => array(), 'target' => array(), 'rel' => array(), ), ) ), 'https://wpforms.com/form-template-suggestion/', 'https://wpforms.com/docs/how-to-create-a-custom-form-template/' ); ?>

template_select_options( $additional_templates, 'additional' ); ?>

Form Templates Pack addon or by creating your own.', 'wpforms-lite' ), array( 'a' => array( 'href' => array(), 'target' => array(), 'rel' => array(), ), ) ), 'https://wpforms.com/addons/form-templates-pack-addon/', 'https://wpforms.com/docs/how-to-create-a-custom-form-template/' ); ?>

'; echo '
'; // Loop through each available template. foreach ( $templates as $template ) { $selected = ! empty( $this->form_data['meta']['template'] ) && $this->form_data['meta']['template'] === $template['slug'] ? true : false; ?>
' . esc_html__( 'Selected', 'wpforms-lite' ) . '' : ''; ?>

'; echo '
'; } } } new WPForms_Builder_Panel_Setup; panels/class-base.php000066600000010615152141441430010562 0ustar00form = wpforms()->form->get( $form_id ); $this->form_data = $this->form ? wpforms_decode( $this->form->post_content ) : false; // Bootstrap. $this->init(); // Load panel specific enqueues. add_action( 'admin_enqueue_scripts', array( $this, 'enqueues' ), 15 ); // Primary panel button. add_action( 'wpforms_builder_panel_buttons', array( $this, 'button' ), $this->order, 2 ); // Output. add_action( 'wpforms_builder_panels', array( $this, 'panel_output' ), $this->order, 2 ); } /** * All systems go. Used by children. * * @since 1.0.0 */ public function init() { } /** * Enqueue assets for the builder. Used by children. * * @since 1.0.0 */ public function enqueues() { } /** * Primary panel button in the left panel navigation. * * @since 1.0.0 * * @param mixed $form * @param string $view */ public function button( $form, $view ) { $active = $view === $this->slug ? 'active' : ''; ?> slug ? 'active' : ''; $wrap = $this->sidebar ? 'wpforms-panel-sidebar-content' : 'wpforms-panel-full-content'; printf( '
', $active, esc_attr( $this->slug ) ); printf( '
%s
', $this->name ); printf( '
', $wrap ); if ( true === $this->sidebar ) { echo '
'; do_action( 'wpforms_builder_before_panel_sidebar', $this->form, $this->slug ); $this->panel_sidebar(); do_action( 'wpforms_builder_after_panel_sidebar', $this->form, $this->slug ); echo '
'; } echo '
'; echo '
'; do_action( 'wpforms_builder_before_panel_content', $this->form, $this->slug ); $this->panel_content(); do_action( 'wpforms_builder_after_panel_content', $this->form, $this->slug ); echo '
'; echo '
'; echo '
'; echo '
'; } /** * Output the panel's sidebar if we have one. * * @since 1.0.0 */ public function panel_sidebar() { } /** * Output panel sidebar sections. * * @since 1.0.0 * * @param string $name * @param string $slug * @param string $icon */ public function panel_sidebar_section( $name, $slug, $icon = '' ) { $class = ''; $class .= $slug === 'default' ? ' default' : ''; $class .= ! empty( $icon ) ? ' icon' : ''; echo ''; if ( ! empty( $icon ) ) { echo ''; } echo esc_html( $name ); echo ''; echo ''; } /** * Output the panel's primary content. * * @since 1.0.0 */ public function panel_content() { } } panels/class-fields.php000066600000032636152141441430011125 0ustar00name = esc_html__( 'Fields', 'wpforms-lite' ); $this->slug = 'fields'; $this->icon = 'fa-list-alt'; $this->order = 10; $this->sidebar = true; if ( $this->form ) { add_action( 'wpforms_builder_fields', array( $this, 'fields' ) ); add_action( 'wpforms_builder_fields_options', array( $this, 'fields_options' ) ); add_action( 'wpforms_builder_preview', array( $this, 'preview' ) ); // Template for form builder previews. add_action( 'wpforms_builder_print_footer_scripts', array( $this, 'field_preview_templates' ) ); } } /** * Enqueue assets for the Fields panel. * * @since 1.0.0 */ public function enqueues() { // CSS. wp_enqueue_style( 'wpforms-builder-fields', WPFORMS_PLUGIN_URL . 'assets/css/admin-builder-fields.css', null, WPFORMS_VERSION ); } /** * Output the Field panel sidebar. * * @since 1.0.0 */ public function panel_sidebar() { // Sidebar contents are not valid unless we have a form. if ( ! $this->form ) { return; } ?>
form ); ?>
form ); ?>
form ) { echo '
'; echo wp_kses( __( 'You need to setup your form before you can manage the fields.', 'wpforms-lite' ), array( 'a' => array( 'href' => array(), 'class' => array(), 'data-panel' => array(), ), ) ); echo '
'; return; } ?>

form->post_title ); ?>

form->post_excerpt, wpforms_builder_preview_get_allowed_tags() ); ?>
no_fields_options(); ?> no_fields_preview(); ?>
form ); ?>

 

form_data['settings']['submit_text'] ) ? $this->form_data['settings']['submit_text'] : esc_html__( 'Submit', 'wpforms-lite' ); printf( '

', esc_attr( $submit ) ); ?> form_data ); ?>
array( 'group_name' => esc_html__( 'Standard Fields', 'wpforms-lite' ), 'fields' => array(), ), 'fancy' => array( 'group_name' => esc_html__( 'Fancy Fields', 'wpforms-lite' ), 'fields' => array(), ), 'payment' => array( 'group_name' => esc_html__( 'Payment Fields', 'wpforms-lite' ), 'fields' => array(), ), ); $fields = apply_filters( 'wpforms_builder_fields_buttons', $fields ); // Output the buttons. foreach ( $fields as $id => $group ) { usort( $group['fields'], array( $this, 'field_order' ) ); echo '
'; echo ''; echo '' . esc_html( $group['group_name'] ) . ''; echo ''; echo ''; echo '
'; foreach ( $group['fields'] as $field ) { $atts = apply_filters( 'wpforms_builder_field_button_attributes', array( 'id' => 'wpforms-add-fields-' . $field['type'], 'class' => array( 'wpforms-add-fields-button' ), 'data' => array( 'field-type' => $field['type'], ), 'atts' => array(), ), $field, $this->form_data ); if ( ! empty( $field['class'] ) ) { $atts['class'][] = $field['class']; } echo ''; } echo '
'; echo '
'; } } /** * Editor Field Options. * * @since 1.0.0 */ public function fields_options() { // Check to make sure the form actually has fields created already. if ( empty( $this->form_data['fields'] ) ) { $this->no_fields_options(); return; } $fields = $this->form_data['fields']; foreach ( $fields as $field ) { $class = apply_filters( 'wpforms_builder_field_option_class', '', $field ); printf( '
', sanitize_html_class( $field['type'] ), sanitize_html_class( $class ), (int) $field['id'], (int) $field['id'] ); printf( '', $field['id'], $field['id'] ); printf( '', $field['id'], esc_attr( $field['type'] ) ); do_action( "wpforms_builder_fields_options_{$field['type']}", $field ); echo '
'; } } /** * Editor preview (right pane). * * @since 1.0.0 */ public function preview() { // Check to make sure the form actually has fields created already. if ( empty( $this->form_data['fields'] ) ) { $this->no_fields_preview(); return; } $fields = $this->form_data['fields']; foreach ( $fields as $field ) { $css = ! empty( $field['size'] ) ? 'size-' . esc_attr( $field['size'] ) : ''; $css .= ! empty( $field['label_hide'] ) && $field['label_hide'] == '1' ? ' label_hide' : ''; $css .= ! empty( $field['sublabel_hide'] ) && $field['sublabel_hide'] == '1' ? ' sublabel_hide' : ''; $css .= ! empty( $field['required'] ) && $field['required'] == '1' ? ' required' : ''; $css .= ! empty( $field['input_columns'] ) && $field['input_columns'] === '2' ? ' wpforms-list-2-columns' : ''; $css .= ! empty( $field['input_columns'] ) && $field['input_columns'] === '3' ? ' wpforms-list-3-columns' : ''; $css .= ! empty( $field['input_columns'] ) && $field['input_columns'] === 'inline' ? ' wpforms-list-inline' : ''; $css .= isset( $field['meta']['delete'] ) && $field['meta']['delete'] === false ? ' no-delete' : ''; $css = apply_filters( 'wpforms_field_preview_class', $css, $field ); printf( '
', $field['type'], $css, $field['id'], $field['id'], $field['type'] ); if ( apply_filters( 'wpforms_field_preview_display_duplicate_button', true, $field, $this->form_data ) ) { printf( '', esc_html__( 'Duplicate Field', 'wpforms-lite' ) ); } printf( '', esc_html__( 'Delete Field', 'wpforms-lite' ) ); printf( '%s', esc_html__( 'Click to edit. Drag to reorder.', 'wpforms-lite' ) ); do_action( "wpforms_builder_fields_previews_{$field['type']}", $field ); echo '
'; } } /** * No fields options markup. * * @since 1.6.0 */ public function no_fields_options() { printf( '

%s

', esc_html__( 'You don\'t have any fields yet.', 'wpforms-lite' ) ); } /** * No fields preview placeholder markup. * * @since 1.6.0 */ public function no_fields_preview() { printf( '

%s

', esc_html__( 'You don\'t have any fields yet. Add some!', 'wpforms-lite' ) ); } /** * Sort Add Field buttons by order provided. * * @since 1.0.0 * * @param array $a * @param array $b * * @return array */ public function field_order( $a, $b ) { return $a['order'] - $b['order']; } /** * Template for form builder preview. * * @since 1.4.5 */ public function field_preview_templates() { // Checkbox, Radio, and Payment Multiple/Checkbox field choices. ?> name = esc_html__( 'Payments', 'wpforms-lite' ); $this->slug = 'payments'; $this->icon = 'fa-usd'; $this->order = 10; $this->sidebar = true; } /** * Output the Payments panel sidebar. * * @since 1.0.0 */ public function panel_sidebar() { // Sidebar contents are not valid unless we have a form. if ( ! $this->form ) { return; } $this->panel_sidebar_section( esc_html__( 'Default', 'wpforms-lite' ), 'default' ); do_action( 'wpforms_payments_panel_sidebar', $this->form ); } /** * Output the Payments panel primary content. * * @since 1.0.0 */ public function panel_content() { // An array of all the active provider addons. $payments_active = apply_filters( 'wpforms_payments_available', array() ); if ( ! $this->form ) { // Check if there is a form created. When no form has been created // yet let the user know we need a form to setup a payment. echo '
'; echo wp_kses( __( 'You need to setup your form before you can manage these settings.', 'wpforms-lite' ), array( 'a' => array( 'href' => array(), 'class' => array(), 'data-panel' => array(), ), ) ); echo '
'; return; } if ( ! wpforms()->pro ) { // WPForms Lite users. echo '
'; echo '

Payment integrations are not available on your plan.

'; echo '

Please upgrade to PRO to unlock all the payment integrations and more awesome features.

'; echo '' . esc_html__( 'Upgrade to PRO', 'wpforms-lite' ) . ''; echo '
'; } elseif ( empty( $payments_active ) ) { // Check for active payment addons. When no payment addons are // activated let the user know they need to install/activate an // addon to setup a payment. echo '
'; echo '
' . esc_html__( 'Install Your Payment Integration', 'wpforms-lite' ) . '
'; echo '

' . sprintf( wp_kses( /* translators: %s - Addons page URL. */ __( 'It seems you do not have any payment addons activated. You can head over to the Addons page to install and activate the addon for your payment service.', 'wpforms-lite' ), array( 'a' => array( 'href' => array(), ), ) ), esc_url( admin_url( 'admin.php?page=wpforms-addons' ) ) ) . '

'; echo '
'; } else { // Everything is good - display default instructions. echo '
'; echo '
' . esc_html__( 'Select Your Payment Integration', 'wpforms-lite' ) . '
'; echo '

' . esc_html__( 'Select your payment provider from the options on the left. If you don\'t see your payment service listed, then let us know and we\'ll do our best to get it added as fast as possible.', 'wpforms-lite' ) . '

'; echo '
'; } do_action( 'wpforms_payments_panel_content', $this->form ); } } new WPForms_Builder_Panel_Payments(); panels/class-settings.php000066600000013150152141441430011505 0ustar00name = esc_html__( 'Settings', 'wpforms-lite' ); $this->slug = 'settings'; $this->icon = 'fa-sliders'; $this->order = 10; $this->sidebar = true; } /** * Output the Settings panel sidebar. * * @since 1.0.0 */ public function panel_sidebar() { // Sidebar contents are not valid unless we have a form. if ( ! $this->form ) { return; } $sections = array( 'general' => esc_html__( 'General', 'wpforms-lite' ), 'notifications' => esc_html__( 'Notifications', 'wpforms-lite' ), 'confirmation' => esc_html__( 'Confirmations', 'wpforms-lite' ), ); $sections = apply_filters( 'wpforms_builder_settings_sections', $sections, $this->form_data ); foreach ( $sections as $slug => $section ) { $this->panel_sidebar_section( $section, $slug ); } } /** * Output the Settings panel primary content. * * @since 1.0.0 */ public function panel_content() { // Check if there is a form created. if ( ! $this->form ) { echo '
'; echo wp_kses( __( 'You need to setup your form before you can manage the settings.', 'wpforms-lite' ), array( 'a' => array( 'href' => array(), 'class' => array(), 'data-panel' => array(), ), ) ); echo '
'; return; } /* * General. */ echo '
'; echo '
'; esc_html_e( 'General', 'wpforms-lite' ); echo '
'; wpforms_panel_field( 'text', 'settings', 'form_title', $this->form_data, esc_html__( 'Form Name', 'wpforms-lite' ), array( 'default' => $this->form->post_title, ) ); wpforms_panel_field( 'textarea', 'settings', 'form_desc', $this->form_data, esc_html__( 'Form Description', 'wpforms-lite' ) ); wpforms_panel_field( 'text', 'settings', 'form_class', $this->form_data, esc_html__( 'Form CSS Class', 'wpforms-lite' ), array( 'tooltip' => esc_html__( 'Enter CSS class names for the form wrapper. Multiple class names should be separated with spaces.', 'wpforms-lite' ), ) ); wpforms_panel_field( 'text', 'settings', 'submit_text', $this->form_data, esc_html__( 'Submit Button Text', 'wpforms-lite' ), array( 'default' => esc_html__( 'Submit', 'wpforms-lite' ), ) ); wpforms_panel_field( 'text', 'settings', 'submit_text_processing', $this->form_data, esc_html__( 'Submit Button Processing Text', 'wpforms-lite' ), array( 'tooltip' => esc_html__( 'Enter the submit button text you would like the button display while the form submit is processing.', 'wpforms-lite' ), ) ); wpforms_panel_field( 'text', 'settings', 'submit_class', $this->form_data, esc_html__( 'Submit Button CSS Class', 'wpforms-lite' ), array( 'tooltip' => esc_html__( 'Enter CSS class names for the form submit button. Multiple names should be separated with spaces.', 'wpforms-lite' ), ) ); wpforms_panel_field( 'checkbox', 'settings', 'honeypot', $this->form_data, esc_html__( 'Enable anti-spam honeypot', 'wpforms-lite' ) ); $recaptcha_key = wpforms_setting( 'recaptcha-site-key' ); $recaptcha_secret = wpforms_setting( 'recaptcha-secret-key' ); $recaptcha_type = wpforms_setting( 'recaptcha-type', 'v2' ); if ( ! empty( $recaptcha_key ) && ! empty( $recaptcha_secret ) ) { switch ( $recaptcha_type ) { case 'v2': $lbl = esc_html__( 'Enable Google Checkbox v2 reCAPTCHA', 'wpforms-lite' ); break; case 'invisible': $lbl = esc_html__( 'Enable Google Invisible v2 reCAPTCHA', 'wpforms-lite' ); break; case 'v3': $lbl = esc_html__( 'Enable Google v3 reCAPTCHA', 'wpforms-lite' ); break; } wpforms_panel_field( 'checkbox', 'settings', 'recaptcha', $this->form_data, $lbl ); } wpforms_panel_field( 'checkbox', 'settings', 'dynamic_population', $this->form_data, esc_html__( 'Enable dynamic fields population', 'wpforms-lite' ), array( 'tooltip' => '' . esc_html__( 'How to use Dynamic Field Population', 'wpforms-lite' ) . '', ) ); wpforms_panel_field( 'checkbox', 'settings', 'ajax_submit', $this->form_data, esc_html__( 'Enable AJAX form submission', 'wpforms-lite' ), array( 'tooltip' => esc_html__( 'Enables form submission without page reload.', 'wpforms-lite' ), ) ); do_action( 'wpforms_form_settings_general', $this ); echo '
'; /* * Notifications. */ echo '
'; do_action( 'wpforms_form_settings_notifications', $this ); echo '
'; /* * Confirmations. */ echo '
'; do_action( 'wpforms_form_settings_confirmations', $this ); echo '
'; /* * Custom panels can be added below. */ do_action( 'wpforms_form_settings_panel_content', $this ); } } new WPForms_Builder_Panel_Settings(); panels/class-providers.php000066600000010310152141441430011655 0ustar00name = esc_html__( 'Marketing', 'wpforms-lite' ); $this->slug = 'providers'; $this->icon = 'fa-bullhorn'; $this->order = 10; $this->sidebar = true; } /** * Enqueue assets for the Providers panel. * * @since 1.0.0 */ public function enqueues() { wp_enqueue_style( 'wpforms-builder-providers', WPFORMS_PLUGIN_URL . 'assets/css/admin-builder-providers.css', null, WPFORMS_VERSION ); wp_enqueue_script( 'wpforms-builder-providers', WPFORMS_PLUGIN_URL . 'assets/js/admin-builder-providers.js', array( 'jquery' ), WPFORMS_VERSION, false ); wp_localize_script( 'wpforms-builder-providers', 'wpforms_builder_providers', array( 'url' => esc_url( add_query_arg( array( 'view' => 'providers' ) ) ), 'confirm_save' => esc_html__( 'We need to save your progress to continue to the Marketing panel. Is that OK?', 'wpforms-lite' ), 'confirm_connection' => esc_html__( 'Are you sure you want to delete this connection?', 'wpforms-lite' ), 'prompt_connection' => esc_html__( 'Enter a %type% nickname', 'wpforms-lite' ), 'prompt_placeholder' => esc_html__( 'Eg: Newsletter Optin', 'wpforms-lite' ), 'error_name' => esc_html__( 'You must provide a connection nickname.', 'wpforms-lite' ), 'required_field' => esc_html__( 'Field required', 'wpforms-lite' ), ) ); } /** * Output the Provider panel sidebar. * * @since 1.0.0 */ public function panel_sidebar() { // Sidebar contents are not valid unless we have a form. if ( ! $this->form ) { return; } $this->panel_sidebar_section( 'Default', 'default' ); do_action( 'wpforms_providers_panel_sidebar', $this->form ); } /** * Output the Provider panel primary content. * * @since 1.0.0 */ public function panel_content() { if ( ! $this->form ) { // Check if there is a form created. When no form has been created // yet let the user know we need a form to setup a provider. echo '
'; echo wp_kses( __( 'You need to setup your form before you can manage these settings.', 'wpforms-lite' ), array( 'a' => array( 'href' => array(), 'class' => array(), 'data-panel' => array(), ), ) ); echo '
'; return; } // An array of all the active provider addons. $providers_active = wpforms_get_providers_available(); if ( empty( $providers_active ) ) { // Check for active provider addons. When no provider addons are // activated let the user know they need to install/activate an // addon to setup a provider. echo '
'; echo '
' . esc_html__( 'Install Your Marketing Integration', 'wpforms-lite' ) . '
'; echo '

' . sprintf( wp_kses( /* translators: %s - plugin admin area Addons page. */ __( 'It seems you do not have any marketing addons activated. You can head over to the Addons page to install and activate the addon for your provider.', 'wpforms-lite' ), array( 'a' => array( 'href' => array(), ), ) ), esc_url( admin_url( 'admin.php?page=wpforms-addons' ) ) ) . '

'; echo '
'; } else { // Everything is good - display default instructions. echo '
'; echo '
' . esc_html__( 'Select Your Marketing Integration', 'wpforms-lite' ) . '
'; echo '

' . esc_html__( 'Select your email marketing service provider or CRM from the options on the left. If you don\'t see your email marketing service listed, then let us know and we\'ll do our best to get it added as fast as possible.', 'wpforms-lite' ) . '

'; echo '
'; } do_action( 'wpforms_providers_panel_content', $this->form ); } } new WPForms_Builder_Panel_Providers();