public static function localize_preview($form_id) { $capability = apply_filters('ninja_forms_display_test_values_capabilities', 'read'); if (isset($_GET['ninja_forms_test_values']) && current_user_can($capability)) { self::$use_test_values = TRUE; } add_action('wp_footer', 'NF_Display_Render::output_templates', 9999); $form = get_user_option('nf_form_preview_' . $form_id); if (!$form) { self::localize($form_id); return; } if (isset($form['settings']['logged_in']) && $form['settings']['logged_in'] && !is_user_logged_in()) { echo $form['settings']['not_logged_in_msg']; return; } $form['settings']['is_preview'] = TRUE; $before_form = apply_filters('ninja_forms_display_before_form', '', $form_id, TRUE); $form['settings']['beforeForm'] = $before_form; $before_fields = apply_filters('ninja_forms_display_before_fields', '', $form_id, TRUE); $form['settings']['beforeFields'] = $before_fields; $after_fields = apply_filters('ninja_forms_display_after_fields', '', $form_id, TRUE); $form['settings']['afterFields'] = $after_fields; $after_form = apply_filters('ninja_forms_display_after_form', '', $form_id, TRUE); $form['settings']['afterForm'] = $after_form; $fields = array(); if (empty($form['fields'])) { echo __('No Fields Found.', 'ninja-forms'); } else { foreach ($form['fields'] as $field_id => $field) { $field_type = $field['settings']['type']; if (!isset(Ninja_Forms()->fields[$field_type])) { continue; } if (!apply_filters('ninja_forms_preview_display_type_' . $field_type, TRUE)) { continue; } if (!apply_filters('ninja_forms_preview_display_field', $field)) { continue; } $field['settings']['id'] = $field_id; $field = apply_filters('ninja_forms_localize_fields_preview', $field); $field = apply_filters('ninja_forms_localize_field_' . $field_type . '_preview', $field); $display_before = apply_filters('ninja_forms_display_before_field_type_' . $field['settings']['type'], ''); $display_before = apply_filters('ninja_forms_display_before_field_key_' . $field['settings']['key'], $display_before); $field['settings']['beforeField'] = $display_before; $display_after = apply_filters('ninja_forms_display_after_field_type_' . $field['settings']['type'], ''); $display_after = apply_filters('ninja_forms_display_after_field_key_' . $field['settings']['key'], $display_after); $field['settings']['afterField'] = $display_after; foreach ($field['settings'] as $key => $setting) { if (is_numeric($setting)) { $field['settings'][$key] = floatval($setting); } } if (!isset($field['settings']['label_pos']) || 'default' == $field['settings']['label_pos']) { if (isset($form['settings']['default_label_pos'])) { $field['settings']['label_pos'] = $form['settings']['default_label_pos']; } } $field_class = Ninja_Forms()->fields[$field_type]; $templates = $field_class->get_templates(); if (!array($templates)) { $templates = array($templates); } foreach ($templates as $template) { self::load_template('fields-' . $template); } if (self::$use_test_values) { $field['settings']['value'] = $field_class->get_test_value(); } $field['settings']['parentType'] = $field_class->get_parent_type(); if ('list' == $field['settings']['parentType'] && isset($field['settings']['options']) && is_array($field['settings']['options'])) { $field['settings']['options'] = apply_filters('ninja_forms_render_options', $field['settings']['options'], $field['settings']); } if (isset($field['settings']['default'])) { $default_value = apply_filters('ninja_forms_render_default_value', $field['settings']['default'], $field_type, $field['settings']); $default_value = preg_replace('/{.*}/', '', $default_value); if ($default_value) { $field['settings']['value'] = $default_value; ob_start(); do_shortcode($field['settings']['value']); $ob = ob_get_clean(); if ($ob) { $field['settings']['value'] = $ob; } } } // TODO: Find a better way to do this. if ('shipping' == $field['settings']['type']) { $field['settings']['shipping_cost'] = str_replace(array('$', '£', '€'), '', $field['settings']['shipping_cost']); $field['settings']['shipping_cost'] = str_replace(Ninja_Forms()->get_setting('currency_symbol'), '', $field['settings']['shipping_cost']); $field['settings']['shipping_cost'] = number_format($field['settings']['shipping_cost'], 2); } elseif ('product' == $field['settings']['type']) { // TODO: Does the currency marker need to stripped here? $field['settings']['product_price'] = str_replace(array('$', '£', '€'), '', $field['settings']['product_price']); $field['settings']['product_price'] = str_replace(Ninja_Forms()->get_setting('currency_symbol'), '', $field['settings']['product_price']); $field['settings']['product_price'] = number_format($field['settings']['product_price'], 2); } elseif ('total' == $field['settings']['type']) { if (!isset($field['settings']['value'])) { $field['settings']['value'] = 0; } $field['settings']['value'] = number_format($field['settings']['value'], 2); } $field['settings']['element_templates'] = $templates; $field['settings']['old_classname'] = $field_class->get_old_classname(); $field['settings']['wrap_template'] = $field_class->get_wrap_template(); $fields[] = apply_filters('ninja_forms_localize_field_settings_' . $field_type, $field['settings'], $form); } } // Output Form Container do_action('ninja_forms_before_container_preview', $form_id, $form['settings'], $fields); Ninja_Forms::template('display-form-container.html.php', compact('form_id')); ?> <!-- TODO: Move to Template File. --> <script> // Maybe initialize nfForms object var nfForms = nfForms || []; // Build Form Data var form = []; form.id = '<?php echo $form['id']; ?> '; form.settings = JSON.parse( '<?php echo WPN_Helper::addslashes(wp_json_encode($form['settings'])); ?> ' ); form.fields = JSON.parse( '<?php echo WPN_Helper::addslashes(wp_json_encode($fields)); ?> ' ); // Add Form Data to nfForms object nfForms.push( form ); </script> <?php self::enqueue_scripts($form_id); }
public static function localize_preview($form_id) { if (isset($_GET['ninja_forms_test_values'])) { self::$use_test_values = TRUE; } add_action('wp_footer', 'NF_Display_Render::output_templates', 9999); $form = get_user_option('nf_form_preview_' . $form_id); if (!$form) { self::localize($form_id); return; } $form['settings']['is_preview'] = TRUE; $fields = array(); if (empty($form['fields'])) { echo __('No Fields Found.', 'ninja-forms'); } else { foreach ($form['fields'] as $field_id => $field) { $field['settings']['id'] = $field_id; $field = apply_filters('nf_localize_fields_preview', $field); $field_class = $field['settings']['type']; foreach ($field['settings'] as $key => $setting) { if (is_numeric($setting)) { $field['settings'][$key] = floatval($setting); } } $field_class = Ninja_Forms()->fields[$field_class]; $templates = $field_class->get_templates(); if (!array($templates)) { $templates = array($templates); } foreach ($templates as $template) { self::load_template('fields-' . $template); } if (self::$use_test_values) { $field['settings']['value'] = $field_class->get_test_value(); } if (isset($field['settings']['default'])) { $default_value = apply_filters('ninja_forms_render_default_value', $field['settings']['default'], $field_class, $field['settings']); if ($default_value) { $field['settings']['value'] = $default_value; } } // TODO: Find a better way to do this. if ('shipping' == $field['settings']['type']) { $field['settings']['shipping_cost'] = number_format($field['settings']['shipping_cost'], 2); } elseif ('product' == $field['settings']['type']) { // TODO: Does the currency marker need to stripped here? $field['settings']['product_price'] = str_replace('$', '', $field['settings']['product_price']); $field['settings']['product_price'] = number_format($field['settings']['product_price'], 2); } elseif ('total' == $field['settings']['type']) { $field['settings']['value'] = number_format($field['settings']['value'], 2); } $field['settings']['element_templates'] = $templates; $field['settings']['old_classname'] = $field_class->get_old_classname(); $field['settings']['wrap_template'] = $field_class->get_wrap_template(); $fields[] = $field['settings']; } } // Output Form Container ?> <div id="nf-form-<?php echo $form_id; ?> -cont"></div> <?php ?> <!-- TODO: Move to Template File. --> <script> // Maybe initialize nfForms object var nfForms = nfForms || []; // Build Form Data var form = []; form.id = '<?php echo $form['id']; ?> '; form.settings = JSON.parse( '<?php echo WPN_Helper::addslashes(wp_json_encode($form['settings'])); ?> ' ); form.fields = JSON.parse( '<?php echo WPN_Helper::addslashes(wp_json_encode($fields)); ?> ' ); // Add Form Data to nfForms object nfForms.push( form ); </script> <?php self::enqueue_scripts(); }