PK|,\ ENNXNXclass-builder.phpnuW+Aview = isset( $_GET['view'] ) ? $_GET['view'] : 'fields'; } else { // Default view for new field is the setup panel. $this->view = isset( $_GET['view'] ) ? $_GET['view'] : 'setup'; } if ( 'setup' === $this->view && ! wpforms_current_user_can( 'create_forms' ) ) { wp_die( esc_html__( 'Sorry, you are not allowed to create new forms.', 'wpforms-lite' ), 403 ); } if ( 'fields' === $this->view && ! wpforms_current_user_can( 'edit_form_single', $form_id ) ) { wp_die( esc_html__( 'Sorry, you are not allowed to edit this form.', 'wpforms-lite' ), 403 ); } // Fetch form. $this->form = wpforms()->form->get( $form_id ); $this->form_data = $this->form ? wpforms_decode( $this->form->post_content ) : false; // Fetch template information. $this->template = apply_filters( 'wpforms_builder_template_active', array(), $this->form ); // Load builder panels. $this->load_panels(); add_action( 'admin_head', array( $this, 'admin_head' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueues' ) ); add_action( 'admin_print_footer_scripts', array( $this, 'footer_scripts' ) ); add_action( 'wpforms_admin_page', array( $this, 'output' ) ); // Provide hook for addons. do_action( 'wpforms_builder_init', $this->view ); add_filter( 'teeny_mce_plugins', array( $this, 'tinymce_buttons' ) ); } } /** * Define TinyMCE buttons to use with our fancy editor instances. * * @since 1.0.3 * * @param array $buttons List of default buttons. * * @return array */ public function tinymce_buttons( $buttons ) { $buttons = array( 'colorpicker', 'lists', 'wordpress', 'wpeditimage', 'wplink' ); return $buttons; } /** * Load panels. * * @since 1.0.0 */ public function load_panels() { // Base class and functions. require_once WPFORMS_PLUGIN_DIR . 'includes/admin/builder/panels/class-base.php'; $this->panels = apply_filters( 'wpforms_builder_panels', array( 'setup', 'fields', 'settings', 'providers', 'payments', ) ); foreach ( $this->panels as $panel ) { $panel = sanitize_file_name( $panel ); if ( file_exists( WPFORMS_PLUGIN_DIR . 'includes/admin/builder/panels/class-' . $panel . '.php' ) ) { require_once WPFORMS_PLUGIN_DIR . 'includes/admin/builder/panels/class-' . $panel . '.php'; } elseif ( file_exists( WPFORMS_PLUGIN_DIR . 'pro/includes/admin/builder/panels/class-' . $panel . '.php' ) ) { require_once WPFORMS_PLUGIN_DIR . 'pro/includes/admin/builder/panels/class-' . $panel . '.php'; } } } /** * Admin head area inside the form builder. * * @since 1.4.6 */ public function admin_head() { do_action( 'wpforms_builder_admin_head', $this->view ); } /** * Enqueue assets for the builder. * * @since 1.0.0 */ public function enqueues() { // Remove conflicting scripts. wp_deregister_script( 'serialize-object' ); wp_deregister_script( 'wpclef-ajax-settings' ); do_action( 'wpforms_builder_enqueues_before', $this->view ); $min = wpforms_get_min_suffix(); /* * CSS. */ wp_enqueue_style( 'wpforms-font-awesome', WPFORMS_PLUGIN_URL . 'assets/css/font-awesome.min.css', null, '4.7.0' ); wp_enqueue_style( 'tooltipster', WPFORMS_PLUGIN_URL . 'assets/css/tooltipster.css', null, '4.2.6' ); wp_enqueue_style( 'jquery-confirm', WPFORMS_PLUGIN_URL . 'assets/css/jquery-confirm.min.css', null, '3.3.2' ); wp_enqueue_style( 'minicolors', WPFORMS_PLUGIN_URL . 'assets/css/jquery.minicolors.css', null, '2.2.6' ); wp_enqueue_style( 'wpforms-builder-legacy', WPFORMS_PLUGIN_URL . 'assets/css/admin-builder.css', null, WPFORMS_VERSION ); wp_enqueue_style( 'wpforms-builder', WPFORMS_PLUGIN_URL . "assets/css/builder{$min}.css", null, WPFORMS_VERSION ); /* * JavaScript. */ wp_enqueue_media(); wp_enqueue_script( 'jquery-ui-sortable' ); wp_enqueue_script( 'jquery-ui-draggable' ); wp_enqueue_script( 'wp-util' ); wp_enqueue_script( 'tooltipster', WPFORMS_PLUGIN_URL . 'assets/js/jquery.tooltipster.min.js', array( 'jquery' ), '4.2.6' ); wp_enqueue_script( 'jquery-confirm', WPFORMS_PLUGIN_URL . 'assets/js/jquery.jquery-confirm.min.js', array( 'jquery' ), '3.3.2' ); wp_enqueue_script( 'matchheight', WPFORMS_PLUGIN_URL . 'assets/js/jquery.matchHeight-min.js', array( 'jquery' ), '0.7.0' ); wp_enqueue_script( 'insert-at-caret', WPFORMS_PLUGIN_URL . 'assets/js/jquery.insert-at-caret.min.js', array( 'jquery' ), '1.1.4' ); wp_enqueue_script( 'minicolors', WPFORMS_PLUGIN_URL . 'assets/js/jquery.minicolors.min.js', array( 'jquery' ), '2.2.6' ); wp_enqueue_script( 'conditionals', WPFORMS_PLUGIN_URL . 'assets/js/jquery.conditionals.min.js', array( 'jquery' ), '1.0.0' ); wp_enqueue_script( 'listjs', WPFORMS_PLUGIN_URL . 'assets/js/list.min.js', array( 'jquery' ), '1.5.0' ); wp_enqueue_script( 'dom-purify', WPFORMS_PLUGIN_URL . 'assets/js/purify.min.js', array(), '2.0.8' ); wp_enqueue_script( 'wpforms-utils', WPFORMS_PLUGIN_URL . 'assets/js/admin-utils.js', array( 'jquery', 'dom-purify' ), WPFORMS_VERSION ); wp_enqueue_script( 'wpforms-builder', WPFORMS_PLUGIN_URL . 'assets/js/admin-builder.js', array( 'wpforms-utils', 'wpforms-admin-builder-templates', 'jquery-ui-sortable', 'jquery-ui-draggable', 'tooltipster', 'jquery-confirm' ), WPFORMS_VERSION ); wp_enqueue_script( 'wpforms-admin-builder-templates', WPFORMS_PLUGIN_URL . "assets/js/components/admin/builder/templates{$min}.js", array( 'wp-util' ), WPFORMS_VERSION, true ); $strings = array( 'and' => esc_html__( 'AND', 'wpforms-lite' ), 'ajax_url' => admin_url( 'admin-ajax.php' ), 'bulk_add_button' => esc_html__( 'Add New Choices', 'wpforms-lite' ), 'bulk_add_show' => esc_html__( 'Bulk Add', 'wpforms-lite' ), 'are_you_sure_to_close' => esc_html__( 'Are you sure you want to leave? You have unsaved changes', 'wpforms-lite' ), 'bulk_add_hide' => esc_html__( 'Hide Bulk Add', 'wpforms-lite' ), 'bulk_add_heading' => esc_html__( 'Add Choices (one per line)', 'wpforms-lite' ), 'bulk_add_placeholder' => esc_html__( "Blue\nRed\nGreen", 'wpforms-lite' ), 'bulk_add_presets_show' => esc_html__( 'Show presets', 'wpforms-lite' ), 'bulk_add_presets_hide' => esc_html__( 'Hide presets', 'wpforms-lite' ), 'date_select_day' => 'DD', 'date_select_month' => 'MM', 'debug' => wpforms_debug(), 'dynamic_choice_limit' => esc_html__( 'The {source} {type} contains over {limit} items ({total}). This may make the field difficult for your visitors to use and/or cause the form to be slow.', 'wpforms-lite' ), 'cancel' => esc_html__( 'Cancel', 'wpforms-lite' ), 'ok' => esc_html__( 'OK', 'wpforms-lite' ), 'close' => esc_html__( 'Close', 'wpforms-lite' ), 'conditionals_change' => esc_html__( 'Due to form changes, conditional logic rules have been removed or updated:', 'wpforms-lite' ), 'conditionals_disable' => esc_html__( 'Are you sure you want to disable conditional logic? This will remove the rules for this field or setting.', 'wpforms-lite' ), 'field' => esc_html__( 'Field', 'wpforms-lite' ), 'field_locked' => esc_html__( 'Field Locked', 'wpforms-lite' ), 'field_locked_msg' => esc_html__( 'This field cannot be deleted or duplicated.', 'wpforms-lite' ), 'fields_available' => esc_html__( 'Available Fields', 'wpforms-lite' ), 'fields_unavailable' => esc_html__( 'No fields available', 'wpforms-lite' ), 'heads_up' => esc_html__( 'Heads up!', 'wpforms-lite' ), 'image_placeholder' => WPFORMS_PLUGIN_URL . 'assets/images/placeholder-200x125.png', 'nonce' => wp_create_nonce( 'wpforms-builder' ), 'no_email_fields' => esc_html__( 'No email fields', 'wpforms-lite' ), 'notification_delete' => esc_html__( 'Are you sure you want to delete this notification?', 'wpforms-lite' ), 'notification_prompt' => esc_html__( 'Enter a notification name', 'wpforms-lite' ), 'notification_ph' => esc_html__( 'Eg: User Confirmation', 'wpforms-lite' ), 'notification_error' => esc_html__( 'You must provide a notification name', 'wpforms-lite' ), 'notification_error2' => esc_html__( 'Form must contain one notification. To disable all notifications use the Notifications dropdown setting.', 'wpforms-lite' ), 'notification_def_name' => esc_html__( 'Default Notification', 'wpforms-lite' ), 'confirmation_delete' => esc_html__( 'Are you sure you want to delete this confirmation?', 'wpforms-lite' ), 'confirmation_prompt' => esc_html__( 'Enter a confirmation name', 'wpforms-lite' ), 'confirmation_ph' => esc_html__( 'Eg: Alternative Confirmation', 'wpforms-lite' ), 'confirmation_error' => esc_html__( 'You must provide a confirmation name', 'wpforms-lite' ), 'confirmation_error2' => esc_html__( 'Form must contain at least one confirmation.', 'wpforms-lite' ), 'confirmation_def_name' => esc_html__( 'Default Confirmation', 'wpforms-lite' ), 'save' => esc_html__( 'Save', 'wpforms-lite' ), 'saving' => esc_html__( 'Saving ...', 'wpforms-lite' ), 'saved' => esc_html__( 'Saved!', 'wpforms-lite' ), 'save_exit' => esc_html__( 'Save and Exit', 'wpforms-lite' ), 'saved_state' => '', 'layout_selector_show' => esc_html__( 'Show Layouts', 'wpforms-lite' ), 'layout_selector_hide' => esc_html__( 'Hide Layouts', 'wpforms-lite' ), 'layout_selector_layout' => esc_html__( 'Select your layout', 'wpforms-lite' ), 'layout_selector_column' => esc_html__( 'Select your column', 'wpforms-lite' ), 'loading' => esc_html__( 'Loading', 'wpforms-lite' ), 'template_name' => ! empty( $this->template['name'] ) ? $this->template['name'] : '', 'template_slug' => ! empty( $this->template['slug'] ) ? $this->template['slug'] : '', 'template_modal_title' => ! empty( $this->template['modal']['title'] ) ? $this->template['modal']['title'] : '', 'template_modal_msg' => ! empty( $this->template['modal']['message'] ) ? $this->template['modal']['message'] : '', 'template_modal_display' => ! empty( $this->template['modal_display'] ) ? $this->template['modal_display'] : '', 'template_select' => esc_html__( 'Use Template', 'wpforms-lite' ), 'template_confirm' => esc_html__( 'Changing templates on an existing form will DELETE existing form fields. Are you sure you want apply the new template?', 'wpforms-lite' ), 'embed_modal' => esc_html__( 'You are almost done. To embed this form on your site, please paste the following shortcode inside a post or page.', 'wpforms-lite' ), 'embed_modal_2' => esc_html__( 'Or you can follow the instructions in this video.', 'wpforms-lite' ), 'exit' => esc_html__( 'Exit', 'wpforms-lite' ), 'exit_url' => wpforms_current_user_can( 'view_forms' ) ? admin_url( 'admin.php?page=wpforms-overview' ) : admin_url(), 'exit_confirm' => esc_html__( 'If you exit without saving, your changes will be lost.', 'wpforms-lite' ), 'delete_confirm' => esc_html__( 'Are you sure you want to delete this field?', 'wpforms-lite' ), 'duplicate_confirm' => esc_html__( 'Are you sure you want to duplicate this field?', 'wpforms-lite' ), 'duplicate_copy' => esc_html__( '(copy)', 'wpforms-lite' ), 'error_title' => esc_html__( 'Please enter a form name.', 'wpforms-lite' ), 'error_choice' => esc_html__( 'This item must contain at least one choice.', 'wpforms-lite' ), 'off' => esc_html__( 'Off', 'wpforms-lite' ), 'on' => esc_html__( 'On', 'wpforms-lite' ), 'or' => esc_html__( 'or', 'wpforms-lite' ), 'other' => esc_html__( 'Other', 'wpforms-lite' ), 'operator_is' => esc_html__( 'is', 'wpforms-lite' ), 'operator_is_not' => esc_html__( 'is not', 'wpforms-lite' ), 'operator_empty' => esc_html__( 'empty', 'wpforms-lite' ), 'operator_not_empty' => esc_html__( 'not empty', 'wpforms-lite' ), 'operator_contains' => esc_html__( 'contains', 'wpforms-lite' ), 'operator_not_contains' => esc_html__( 'does not contain', 'wpforms-lite' ), 'operator_starts' => esc_html__( 'starts with', 'wpforms-lite' ), 'operator_ends' => esc_html__( 'ends with', 'wpforms-lite' ), 'operator_greater_than' => esc_html__( 'greater than', 'wpforms-lite' ), 'operator_less_than' => esc_html__( 'less than', 'wpforms-lite' ), 'payments_entries_off' => esc_html__( 'Entry storage is currently disabled, but is required to accept payments. Please enable in your form settings.', 'wpforms-lite' ), 'payments_on_entries_off' => esc_html__( 'This form is currently accepting payments. Entry storage is required to accept payments. To disable entry storage, please first disable payments.', 'wpforms-lite' ), 'previous' => esc_html__( 'Previous', 'wpforms-lite' ), 'provider_required_flds' => esc_html__( "In order to complete your form's {provider} integration, please check that the dropdowns for all required (*) List Fields have been filled out.", 'wpforms-lite' ), 'rule_create' => esc_html__( 'Create new rule', 'wpforms-lite' ), 'rule_create_group' => esc_html__( 'Add new group', 'wpforms-lite' ), 'rule_delete' => esc_html__( 'Delete rule', 'wpforms-lite' ), 'smart_tags' => wpforms()->smart_tags->get(), 'smart_tags_disabled_for_fields' => array( 'entry_id' ), 'smart_tags_show' => esc_html__( 'Show Smart Tags', 'wpforms-lite' ), 'smart_tags_hide' => esc_html__( 'Hide Smart Tags', 'wpforms-lite' ), 'select_field' => esc_html__( '--- Select Field ---', 'wpforms-lite' ), 'select_choice' => esc_html__( '--- Select Choice ---', 'wpforms-lite' ), 'upload_image_title' => esc_html__( 'Upload or Choose Your Image', 'wpforms-lite' ), 'upload_image_button' => esc_html__( 'Use Image', 'wpforms-lite' ), 'upload_image_remove' => esc_html__( 'Remove Image', 'wpforms-lite' ), 'provider_add_new_acc_btn' => esc_html__( 'Add', 'wpforms-lite' ), 'pro' => wpforms()->pro, 'is_gutenberg' => version_compare( get_bloginfo( 'version' ), '5.0', '>=' ) && ! is_plugin_active( 'classic-editor/classic-editor.php' ), 'cl_fields_supported' => wpforms_get_conditional_logic_form_fields_supported(), 'redirect_url_field_error' => esc_html__( 'You should enter a valid absolute address to the Confirmation Redirect URL field.', 'wpforms-lite' ), ); $strings = apply_filters( 'wpforms_builder_strings', $strings, $this->form ); // phpcs:disable WordPress.Security.NonceVerification.Recommended if ( ! empty( $_GET['form_id'] ) ) { $form_id = (int) $_GET['form_id']; $strings['preview_url'] = esc_url( add_query_arg( 'new_window', 1, wpforms_get_form_preview_url( $form_id ) ) ); $strings['entries_url'] = esc_url( admin_url( 'admin.php?page=wpforms-entries&view=list&form_id=' . $form_id ) ); } // phpcs:enable wp_localize_script( 'wpforms-builder', 'wpforms_builder', $strings ); // Hook for addons. do_action( 'wpforms_builder_enqueues', $this->view ); } /** * Footer JavaScript. * * @since 1.3.7 */ public function footer_scripts() { $choices = array( 'countries' => array( 'name' => esc_html__( 'Countries', 'wpforms-lite' ), 'choices' => array_values( wpforms_countries() ), ), 'countries_postal' => array( 'name' => esc_html__( 'Countries Postal Code', 'wpforms-lite' ), 'choices' => array_keys( wpforms_countries() ), ), 'states' => array( 'name' => esc_html__( 'States', 'wpforms-lite' ), 'choices' => array_values( wpforms_us_states() ), ), 'states_postal' => array( 'name' => esc_html__( 'States Postal Code', 'wpforms-lite' ), 'choices' => array_keys( wpforms_us_states() ), ), 'months' => array( 'name' => esc_html__( 'Months', 'wpforms-lite' ), 'choices' => array_values( wpforms_months() ), ), 'days' => array( 'name' => esc_html__( 'Days', 'wpforms-lite' ), 'choices' => array_values( wpforms_days() ), ), ); $choices = apply_filters( 'wpforms_builder_preset_choices', $choices ); echo ''; 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; } PK|,\P8panels/class-setup.phpnuW+Aname = 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; PK|,\<׮panels/class-base.phpnuW+Aform = 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() { } } PK|,\ v55panels/class-fields.phpnuW+Aname = 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(); PK|,\;Fhhpanels/class-settings.phpnuW+Aname = 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(); PK|,\tސpanels/class-providers.phpnuW+Aname = 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(); PK|,\ ENNXNXclass-builder.phpnuW+APK|,\2,cx-x- Xfunctions.phpnuW+APK|,\P8Dpanels/class-setup.phpnuW+APK|,\<׮{panels/class-base.phpnuW+APK|,\ v55Mpanels/class-fields.phpnuW+APK|,\eF1RR2panels/class-payments.phpnuW+APK|,\;Fhhpanels/class-settings.phpnuW+APK|,\tސ~ panels/class-providers.phpnuW+APK