<?php /** * Shortcode */ // If this file is called directly, abort. if ( ! defined( 'WPINC' ) ) { die; } if ( ! class_exists( 'Jet_Engine_Forms_Shortcode' ) ) { class Jet_Engine_Forms_Shortcode { /** * A reference to an instance of this class. * * @since 1.0.0 * @access private * @var object */ private static $instance = null; public function __construct() { add_filter( 'jet-engine/dashboard/config', array( $this, 'modify_dashboard_config' ) ); add_action( 'jet-engine/dashboard/assets', array( $this, 'enqueue_deps_scripts' ) ); add_action( 'jet-engine/dashboard/shortcode-generator/custom-controls', array( $this, 'register_controls' ) ); add_filter( 'jet-engine/shortcodes/default-atts', array( $this, 'add_forms_default_atts' ) ); add_filter( 'jet-engine/shortcodes/forms/result', array( $this, 'do_shortcode' ), 10, 2 ); if ( is_admin() ) { add_action( 'init', array( $this, 'init_admin_columns_hooks' ) ); } } public function init_admin_columns_hooks() { add_filter( 'manage_' . jet_engine()->forms->slug() . '_posts_columns', array( $this, 'edit_columns' ) ); add_action( 'manage_' . jet_engine()->forms->slug() . '_posts_custom_column', array( $this, 'manage_columns' ), 10, 2 ); } public function modify_dashboard_config( $config = array() ) { $config['api_path_search'] = jet_engine()->api->get_route( 'search-posts' ); $config['components_list'][] = array( 'value' => 'forms', 'label' => __( 'Forms', 'jet-engine' ), ); return $config; } public function enqueue_deps_scripts() { wp_enqueue_script( 'wp-api-fetch' ); } public function register_controls() { ?> <cx-vui-f-select :label="'<?php _e( 'Select Form', 'jet-engine' ); ?>'" :wrapper-css="[ 'equalwidth' ]" :remote="true" :remote-callback="getForms" :size="'fullwidth'" :conditions="[ { input: this.shortcode.component, compare: 'equal', value: 'forms', } ]" v-model="shortcode.form_id" ></cx-vui-f-select> <cx-vui-select :label="'<?php _e( 'Fields Layout', 'jet-engine' ); ?>'" :wrapper-css="[ 'equalwidth' ]" size="fullwidth" :options-list="[ { value: 'row', label: '<?php _e( 'Row', 'jet-engine' ); ?>', }, { value: 'column', label: '<?php _e( 'Column', 'jet-engine' ); ?>', } ]" :conditions="[ { input: this.shortcode.component, compare: 'equal', value: 'forms', } ]" v-model="shortcode.fields_layout" ></cx-vui-select> <cx-vui-select :label="'<?php _e( 'Label HTML tag', 'jet-engine' ); ?>'" :wrapper-css="[ 'equalwidth' ]" size="fullwidth" :options-list="[ { value: 'div', label: '<?php _e( 'DIV', 'jet-engine' ); ?>', }, { value: 'label', label: '<?php _e( 'LABEL', 'jet-engine' ); ?>', } ]" :conditions="[ { input: this.shortcode.component, compare: 'equal', value: 'forms', } ]" v-model="shortcode.fields_label_tag" ></cx-vui-select> <cx-vui-select :label="'<?php _e( 'Submit Type', 'jet-engine' ); ?>'" :wrapper-css="[ 'equalwidth' ]" size="fullwidth" :options-list="[ { value: 'reload', label: '<?php _e( 'Reload', 'jet-engine' ); ?>', }, { value: 'ajax', label: '<?php _e( 'AJAX', 'jet-engine' ); ?>', } ]" :conditions="[ { input: this.shortcode.component, compare: 'equal', value: 'forms', } ]" v-model="shortcode.submit_type" ></cx-vui-select> <cx-vui-switcher label="<?php _e( 'Cache Form Output', 'jet-engine' ); ?>" :wrapper-css="[ 'equalwidth' ]" v-model="shortcode.cache_form" :conditions="[ { input: this.shortcode.component, compare: 'equal', value: 'forms', } ]" ></cx-vui-switcher> <?php } public function add_forms_default_atts( $atts = array() ) { $form_atts = array( '_form_id' => '', 'fields_layout' => 'row', 'fields_label_tag' => 'div', 'submit_type' => 'reload', 'cache_form' => false, ); return array_merge( $atts, $form_atts ); } public function do_shortcode( $result = '', $atts = array() ) { if ( empty( $atts['_form_id'] ) ) { return $result; } jet_engine()->frontend->frontend_styles(); jet_engine()->frontend->frontend_scripts(); $render = jet_engine()->listings->get_render_instance( 'booking-form', $atts );; $content = $render->get_content(); // Ensure enqueue form script after getting content. wp_enqueue_script( 'jet-engine-frontend-forms' ); return sprintf( '<div class="jet-form-block">%s</div>', $content ); } public function edit_columns( $columns = array() ) { $columns['form-shortcode'] = esc_html__( 'Shortcode', 'jet-engine' ); return $columns; } public function manage_columns( $column, $post_id ) { if ( 'form-shortcode' !== $column ) { return; } $shortcode = sprintf( '[jet_engine component="forms" _form_id="%d"]', $post_id ); printf( '<input type="text" readonly value="%s" style="%s" />', esc_attr( $shortcode ), 'width:100%' ); } /** * Returns the instance. * * @since 1.0.0 * @access public * @return object */ public static function instance() { // If the single instance hasn't been set, set it now. if ( null == self::$instance ) { self::$instance = new self; } return self::$instance; } } }