Пример #1
0
 public static function init()
 {
     // Hotfix for NextGEN Gallery plugin
     if (defined('NGG_PLUGIN_VERSION')) {
         add_filter('elementor/utils/get_edit_link', function ($edit_link) {
             return add_query_arg('display_gallery_iframe', '', $edit_link);
         });
     }
     // Hack for Ninja Forms
     if (class_exists('\\Ninja_Forms')) {
         add_action('elementor/preview/enqueue_styles', function () {
             ob_start();
             \NF_Display_Render::localize(0);
             ob_clean();
             wp_add_inline_script('nf-front-end', 'var nfForms = nfForms || [];');
         });
     }
     // Exclude our Library from sitemap.xml in Yoast SEO plugin
     add_filter('wpseo_sitemaps_supported_post_types', function ($post_types) {
         unset($post_types[TemplateLibrary\Source_Local::CPT]);
         return $post_types;
     });
     // Disable optimize files in Editor from Autoptimize plugin
     add_filter('autoptimize_filter_noptimize', function ($retval) {
         if (Plugin::instance()->editor->is_edit_mode()) {
             $retval = true;
         }
         return $retval;
     });
 }
Пример #2
0
    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);
    }
Пример #3
0
 /**
  * Display Wrapper
  *
  * @param $form_id
  */
 public function display($form_id, $preview = FALSE)
 {
     if (!$form_id) {
         return;
     }
     $noscript_message = __('Notice: JavaScript is required for this content.', 'ninja-forms');
     $noscript_message = apply_filters('ninja_forms_noscript_message', $noscript_message);
     Ninja_Forms()->template('display-noscript-message.html.php', array('message' => $noscript_message));
     if (!$preview) {
         NF_Display_Render::localize($form_id);
     } else {
         NF_Display_Render::localize_preview($form_id);
     }
 }
Пример #4
0
    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();
    }