enqueue(); $this->render(); } /** * Enqueue script */ protected function enqueue() { wp_enqueue_style( 'notiflix', JEG_ELEMENTOR_KIT_URL . '/assets/js/notiflix/notiflix.min.css', null, '3.2.5' ); wp_enqueue_script( 'notiflix', JEG_ELEMENTOR_KIT_URL . '/assets/js/notiflix/notiflix.min.js', array(), '3.2.5', true ); wp_register_script( 'jkit-dashboard-container', JEG_ELEMENTOR_KIT_URL . '/assets/js/dashboard/dashboard-container.js', array( 'jeg-form-builder-script', 'notiflix' ), JEG_ELEMENTOR_KIT_VERSION, true ); wp_register_script( 'jkit-dashboard-template', JEG_ELEMENTOR_KIT_URL . '/assets/js/dashboard/dashboard-template.js', array( 'underscore', 'jquery', 'jquery-ui-draggable', 'jquery-ui-sortable', 'jkit-dashboard-container', 'notiflix' ), JEG_ELEMENTOR_KIT_VERSION, true ); wp_localize_script( 'jkit-dashboard-template', 'JKitTemplateConfig', $this->config() ); wp_enqueue_script( 'jkit-dashboard-template' ); } /** * JKitTemplateConfig * * @return array */ protected function config() { /** Option */ $option = array(); foreach ( static::main_fields() as $key => $field ) { $option[ $key ] = jeg_prepare_field( $key, $field ); } /** Option */ $condition = array(); $page = isset( $_GET['page'] ) ? sanitize_key( $_GET['page'] ) : ''; foreach ( static::condition_fields( null, $page ) as $key => $field ) { $condition[ $key ] = jeg_prepare_field( $key, $field ); } return array( 'tab' => array( array( 'id' => 'option', 'type' => 'single', 'title' => esc_html__( 'Option', 'jeg-elementor-kit' ), 'default' => $option, ), array( 'id' => 'condition', 'type' => 'multi', 'title' => esc_html__( 'Condition', 'jeg-elementor-kit' ), 'default' => $condition, ), ), 'nonce' => wp_create_nonce( jkit_get_nonce_identifier( 'dashboard' ) ), 'ajax' => admin_url( 'admin-ajax.php' ), 'page' => $page, 'lang' => $this->language(), 'success' => esc_html__( 'Success Save Data', 'jeg-elementor-kit' ), ); } /** * Create Fields * * @param array $default Default. * * @return array */ public static function main_fields( $default = null ) { $fields = array(); $fields['title'] = array( 'type' => 'text', 'title' => esc_html__( 'Template Title', 'jeg-elementor-kit' ), 'segment' => 'main', 'default' => static::default_title(), ); return $fields; } /** * Dafault title * * @return string */ public static function default_title() { return esc_html__( 'Insert Title', 'jeg-elementor-kit' ); } /** * Condition * * @param array $value Option to retrieve. * * @return array */ public static function condition_fields( $value = null, $page = null ) { $fields = array(); $fields['location'] = array( 'type' => 'select', 'title' => esc_html__( 'Location', 'jeg-elementor-kit' ), 'description' => esc_html__( 'Set where should this template will be shown.', 'jeg-elementor-kit' ), 'options' => array( 'all_site' => esc_html__( 'All Site', 'jeg-elementor-kit' ), 'singular' => esc_html__( 'Singular Page', 'jeg-elementor-kit' ), 'archives' => esc_html__( 'Archive Page', 'jeg-elementor-kit' ), ), 'default' => 'all_site', ); $fields['enclose'] = array( 'type' => 'select', 'title' => esc_html__( 'Enclose Status', 'jeg-elementor-kit' ), 'description' => esc_html__( 'Choose the enclosed status.', 'jeg-elementor-kit' ), 'options' => array( 'include' => esc_html__( 'Include', 'jeg-elementor-kit' ), 'exclude' => esc_html__( 'Exclude', 'jeg-elementor-kit' ), ), 'dependency' => array( array( 'field' => 'location', 'operator' => 'not in', 'value' => array( '', 'all_site' ), ), ), 'default' => 'include', ); /** * Archive */ $fields['archives'] = array( 'type' => 'select', 'title' => esc_html__( 'Archive Type', 'jeg-elementor-kit' ), 'description' => esc_html__( 'Choose the archive page type.', 'jeg-elementor-kit' ), 'options' => array( 'all_archive' => esc_html__( 'All Archives', 'jeg-elementor-kit' ), 'author' => esc_html__( 'Author', 'jeg-elementor-kit' ), 'date' => esc_html__( 'Date', 'jeg-elementor-kit' ), 'search' => esc_html__( 'Search', 'jeg-elementor-kit' ), ), 'dependency' => array( array( 'field' => 'location', 'operator' => '===', 'value' => 'archives', ), ), 'default' => '', ); $fields['archives']['options'] = array_merge( $fields['archives']['options'], jkit_get_taxonomies() ); $fields['archives_author'] = array( 'type' => 'select', 'multiple' => 100, 'title' => esc_html__( 'Archive Author', 'jeg-elementor-kit' ), 'description' => esc_html__( 'Write the author name to search.', 'jeg-elementor-kit' ), 'ajax' => 'jkit_find_author', 'nonce' => jkit_create_global_nonce( 'dashboard' ), 'options' => call_user_func( function () use ( $value ) { return static::get_user_options( $value ); } ), 'dependency' => array( array( 'field' => 'location', 'operator' => '===', 'value' => 'archives', ), array( 'field' => 'archives', 'operator' => '===', 'value' => 'author', ), ), 'default' => '', ); $fields['archive_taxonomy'] = array( 'type' => 'select', 'multiple' => 100, 'title' => esc_html__( 'Archive Taxonomy', 'jeg-elementor-kit' ), 'description' => esc_html__( 'Write the terms name to search. Leave empty to select all terms.', 'jeg-elementor-kit' ), 'ajax' => 'jkit_find_taxonomy', 'nonce' => jkit_create_global_nonce( 'dashboard' ), 'options' => call_user_func( function () use ( $value ) { if ( isset( $value['archive_taxonomy'] ) && $value['archive_taxonomy'] ) { return static::get_taxonomy_options( $value['archive_taxonomy'] ); } } ), 'dependency' => array( array( 'field' => 'location', 'operator' => '===', 'value' => 'archives', ), array( 'field' => 'archives', 'operator' => 'in', 'value' => jkit_get_taxonomies( false ), ), ), 'default' => '', ); /** * Singular */ $fields['singular'] = array( 'type' => 'select', 'title' => esc_html__( 'Singular Type', 'jeg-elementor-kit' ), 'description' => esc_html__( 'Choose singular type.', 'jeg-elementor-kit' ), 'options' => array( 'singular' => esc_html__( 'Singular', 'jeg-elementor-kit' ), 'front' => esc_html__( 'Front Page', 'jeg-elementor-kit' ), 'notfound' => esc_html__( '404 Page', 'jeg-elementor-kit' ), ), 'dependency' => array( array( 'field' => 'location', 'operator' => '===', 'value' => 'singular', ), ), 'default' => '', ); $fields['posttype'] = array( 'type' => 'select', 'title' => esc_html__( 'Post Type Filter', 'jeg-elementor-kit' ), 'description' => esc_html__( 'Choose post type as filter.', 'jeg-elementor-kit' ), 'options' => jkit_get_public_post_type(), 'dependency' => array( array( 'field' => 'location', 'operator' => '===', 'value' => 'singular', ), array( 'field' => 'singular', 'operator' => 'in', 'value' => array( '', 'singular' ), ), ), 'default' => '', ); $fields['singular_post'] = array( 'type' => 'select', 'multiple' => 100, 'title' => esc_html__( 'Include Post / Page', 'jeg-elementor-kit' ), 'description' => esc_html__( 'Write post or page name to search.', 'jeg-elementor-kit' ), 'ajax' => 'jkit_find_posts_object', 'nonce' => jkit_create_global_nonce( 'dashboard' ), 'options' => call_user_func( function () use ( $value ) { if ( isset( $value['singular_post'] ) && $value['singular_post'] ) { return static::get_post_options( $value['singular_post'] ); } } ), 'dependency' => array( array( 'field' => 'location', 'operator' => '===', 'value' => 'singular', ), array( 'field' => 'singular', 'operator' => 'in', 'value' => array( '', 'singular' ), ), ), 'default' => '', ); $fields['singular_taxonomy'] = array( 'type' => 'select', 'multiple' => 100, 'title' => esc_html__( 'Terms Name', 'jeg-elementor-kit' ), 'description' => esc_html__( 'Write terms name (Ex: category name, tag name, etc) to search.', 'jeg-elementor-kit' ), 'ajax' => 'jkit_find_taxonomy', 'nonce' => jkit_create_global_nonce( 'dashboard' ), 'dependency' => array( array( 'field' => 'location', 'operator' => '===', 'value' => 'singular', ), array( 'field' => 'singular', 'operator' => 'in', 'value' => array( '', 'singular' ), ), ), 'options' => call_user_func( function () use ( $value ) { return static::get_singular_taxonomy_options( $value ); } ), 'default' => '', ); $fields['singular_author'] = array( 'type' => 'select', 'multiple' => 100, 'title' => esc_html__( 'Author Name', 'jeg-elementor-kit' ), 'description' => esc_html__( 'Write the author name to search.', 'jeg-elementor-kit' ), 'ajax' => 'jkit_find_author', 'nonce' => jkit_create_global_nonce( 'dashboard' ), 'options' => call_user_func( function () use ( $value ) { return static::get_user_options( $value ); } ), 'dependency' => array( array( 'field' => 'location', 'operator' => '===', 'value' => 'singular', ), array( 'field' => 'singular', 'operator' => 'in', 'value' => array( '', 'singular' ), ), ), 'default' => '', ); if ( jkit_is_multilanguage() ) { $fields['language'] = array( 'type' => 'select', 'title' => esc_html__( 'Language', 'jeg-elementor-kit' ), 'description' => esc_html__( 'Select the language for the template.', 'jeg-elementor-kit' ), 'options' => call_user_func( function () { $languages = jkit_get_languages(); $options = array( '' => esc_html__( 'All Language', 'jeg-elementor-kit' ) ); foreach ( $languages as $locale => $language ) { $options[ $locale ] = isset( $language['name'] ) ? $language['name'] : $language['native_name']; } return $options; } ), 'default' => '', ); } return apply_filters( 'jkit_template_condition_fields', $fields, $value, $page ); } /** * Get user option list * * @param array $value Array that contains author name field. * * @return array */ public static function get_user_options( $value ) { $result = array(); $count = count_users(); if ( (int) $count <= jkit_load_resource_limit() ) { $users = get_users(); } else { $users = get_users( array( 'include' => $value['author'], ) ); } foreach ( $users as $user ) { $result[ $user->ID ] = $user->display_name; } return $result; } /** * Get post option list * * @param array $value Array that contains singular_post field. * * @return array */ public static function get_post_options( $value ) { $result = array(); $posts = get_posts( array( 'post_type' => jkit_get_public_post_type_array(), 'include' => $value, ) ); foreach ( $posts as $value ) { $post_type = get_post_type_object( $value->post_type ); $result[ $value->ID ] = $value->post_title . ' - ' . $post_type->labels->singular_name; } return $result; } /** * Get taxonomy option list * * @param array $value Array that contains archive_taxonomy field. * @param bool $label Show taxonomy label * * @return array */ public static function get_taxonomy_options( $value, $label = true ) { $result = array(); $terms = get_terms( array( 'include' => $value, ) ); foreach ( $terms as $key => $term ) { if ( $label ) { $taxonomy = get_taxonomy( $term->taxonomy ); $label = ' - ' . $taxonomy->label; } $result[ $term->term_id ] = $term->name . $label; } return $result; } /** * Get singular taxonomy option list * * @param array $value Array that contains singular_taxonomy field. * * @return array */ public static function get_singular_taxonomy_options( $value ) { $result = array(); if ( ! empty( $value['singular_taxonomy'] ) ) { $terms = get_terms( array( 'include' => $value['singular_taxonomy'], ) ); foreach ( $terms as $key => $term ) { $taxonomy = get_taxonomy( $term->taxonomy ); $result[ $term->term_id ] = $term->name . ' - ' . $taxonomy->label; } } return $result; } /** * Render */ protected function render() { ?>
esc_html__( 'Close', 'jeg-elementor-kit' ), 'create' => esc_html__( 'Create', 'jeg-elementor-kit' ), 'createcondition' => esc_html__( 'Create filter condition', 'jeg-elementor-kit' ), 'addcondition' => esc_html__( 'Add Condition', 'jeg-elementor-kit' ), 'elementname' => esc_html__( 'Template Name', 'jeg-elementor-kit' ), 'priority' => esc_html__( 'Priority', 'jeg-elementor-kit' ), 'edit' => esc_html__( 'Edit', 'jeg-elementor-kit' ), 'clone' => esc_html__( 'Clone', 'jeg-elementor-kit' ), 'delete' => esc_html__( 'Delete', 'jeg-elementor-kit' ), 'loading' => esc_html__( 'Loading...', 'jeg-elementor-kit' ), ); } }