/** * Primary function to render a form on the frontend. * * @since 1.0.0 * @param int $id * @param boolean $title * @param boolean $description */ public function output($id, $title = false, $description = false) { // Grab the form data, if not found then we bail $form = wpforms()->form->get((int) $id); if (!$form) { return; } // Basic information $form_data = wpforms_decode($form->post_content, true); $form_id = absint($form->ID); $settings = $form_data['settings']; $action = esc_url_raw(remove_query_arg('wpforms')); $class[] = wpforms_setting('disable-css', '1') == '1' ? 'wpforms-container-full' : ''; $errors = empty(wpforms()->process->errors[$form->ID]) ? array() : wpforms()->process->errors[$form->ID]; $success = false; // If the form does not contain any fields do not proceed if (empty($form_data['fields'])) { echo '<!-- WPForms: no fields, form hidden -->'; return; } // Before output hook do_action('wpforms_frontend_output_before', $form_data, $form); // Check for return hash OR error free completed form and confirmation before we continue if (!empty($_GET['wpforms_return'])) { $success = wpforms()->process->validate_return_hash($_GET['wpforms_return']); if ($success) { $form_data = wpforms()->form->get($success, array('content_only' => true)); } } elseif (!empty($_POST['wpforms']['id']) && $form->ID == $_POST['wpforms']['id'] && empty($errors)) { $success = true; } if ($success && !empty($form_data)) { do_action('wpforms_frontend_output_success', $form_data); // Debug wpforms_debug_data($_POST); return; } // Allow filter to return early if some condition is not met. if (!apply_filters('wpforms_frontend_load', true, $form_data, $form)) { return; } // Prep the form action URL, allow filter if (!empty($settings['confirmation_type']) && 'message' == $settings['confirmation_type'] && !empty($settings['confirmation_message_scroll'])) { $action .= '#wpforms-' . $form_id; } $action = apply_filters('wpforms_frontend_form_action', $action, $form_data, $form); // Allow form container classes to be filtered $class = array_map('sanitize_html_class', apply_filters('wpforms_frontend_container_class', $class, $form_data)); if (!empty($form_data['settings']['form_class'])) { $class = array_merge($class, array_map('sanitize_html_class', explode(' ', $form_data['settings']['form_class']))); } // Begin to build the output echo '<div class="wpforms-container ' . implode(' ', $class) . '" id="wpforms-' . $form_id . '">'; echo '<form method="post" enctype="multipart/form-data" id="wpforms-form-' . $form_id . '" action="' . $action . '" class="wpforms-validate wpforms-form" data-formid="' . $form_id . '">'; do_action('wpforms_frontend_output', $form_data, $form, $title, $description, $errors); echo '</form>'; echo '</div>'; // After output hook do_action('wpforms_frontend_output_after', $form_data, $form); $this->forms[$form_id] = $form_data; // Debug wpforms_debug_data($form_data); }
/** * Outputs the Field panel primary content. * * @since 1.0.0 */ public function panel_content() { // Check if there is a form created if (!$this->form) { echo '<div class="wpforms-alert wpforms-alert-info">'; _e('You need to <a href="#" class="wpforms-panel-switch" data-panel="setup">setup your form</a> before you can manage the fields.', 'wpforms'); echo '</div>'; return; } ?> <div class="wpforms-preview-wrap"> <div class="wpforms-preview"> <div class="wpforms-title-desc"> <h2 class="wpforms-form-name"><?php echo esc_html($this->form->post_title); ?> </h2> <span class="wpforms-form-desc"><?php echo $this->form->post_excerpt; ?> </span> </div> <div class="wpforms-field-wrap"> <?php do_action('wpforms_builder_preview', $this->form); ?> </div> <p class="wpforms-field-recaptcha"> <img src="<?php echo WPFORMS_PLUGIN_URL; ?> /assets/images/recaptcha-placeholder.png"> </p> <?php $submit = !empty($this->form_data['settings']['submit_text']) ? esc_attr($this->form_data['settings']['submit_text']) : __('Submit', 'wpforms'); printf('<p class="wpforms-field-submit"><input type="submit" value="%s" class="wpforms-field-submit-button"></p>', $submit); ?> <?php wpforms_debug_data($this->form_data); ?> </div> </div> <?php }