<?php /** * Elementor Layout Class. * * This class contains all the controls for Layout tab. * * @package RT_Team */ namespace RT\Team\Widgets\Elementor\Sections; use RT\Team\Helpers\Fns; use RT\Team\Helpers\Options; // Do not allow directly accessing this file. if ( ! defined( 'ABSPATH' ) ) { exit( 'This script cannot be accessed directly.' ); } /** * Elementor Layout Class. */ class Layout { /** * Tab name. * * @access private * @static * * @var array */ private static $tab = \Elementor\Controls_Manager::TAB_LAYOUT; /** * Shortcode List section * * @param object $obj Reference object. * @return static */ public static function shortcodeList( $obj ) { $obj->startSection( 'content_section', esc_html__( 'Team Shortcodes List', 'tlp-team' ), self::$tab ); $obj->elControls[] = [ 'type' => 'select2', 'id' => 'short_code_id', 'label' => esc_html__( 'Select Shortcode', 'tlp-team' ), 'label_block' => true, 'options' => Fns::getTTPShortcodeList(), ]; $obj->endSection(); return new static(); } /** * Layout section * * @param object $obj Reference object. * @return static */ public static function gridLayout( $obj ) { $obj->startSection( 'layout_section', esc_html__( 'Layouts', 'tlp-team' ), self::$tab ); $obj->elControls[] = [ 'type' => 'rttm-image-selector', 'id' => $obj->elPrefix . 'layout', 'options' => Options::elGridLayouts(), 'default' => 'layout1', ]; $obj->endSection(); return new static(); } /** * Layout section * * @param object $obj Reference object. * @return static */ public static function listLayout( $obj ) { $obj->startSection( 'layout_section', esc_html__( 'Layouts', 'tlp-team' ), self::$tab ); $obj->elControls[] = [ 'type' => 'rttm-image-selector', 'id' => $obj->elPrefix . 'layout', 'options' => Options::elListLayouts(), 'default' => 'layout2', ]; $obj->endSection(); return new static(); } /** * Layout section * * @param object $obj Reference object. * @return static */ public static function sliderLayout( $obj ) { $obj->startSection( 'layout_section', esc_html__( 'Layouts', 'tlp-team' ), self::$tab ); $obj->elControls[] = [ 'type' => 'rttm-image-selector', 'id' => $obj->elPrefix . 'layout', 'options' => Options::elSliderLayouts(), 'default' => 'carousel-el-1', ]; $obj->endSection(); return new static(); } /** * Layout section * * @param object $obj Reference object. * @return static */ public static function isotopeLayout( $obj ) { $obj->startSection( 'layout_section', esc_html__( 'Layouts', 'tlp-team' ), self::$tab ); $obj->elControls[] = [ 'type' => 'rttm-image-selector', 'id' => $obj->elPrefix . 'layout', 'options' => Options::elIsotopeLayouts(), 'default' => 'isotope-free', ]; $obj->endSection(); return new static(); } /** * Layout section * * @param object $obj Reference object. * @return static */ public static function columns( $obj ) { $obj->startSection( 'columns_section', esc_html__( 'Columns', 'tlp-team' ), self::$tab ); $obj->elControls[] = [ 'type' => 'select2', 'id' => $obj->elPrefix . 'cols', 'mode' => 'responsive', 'label' => esc_html__( 'Number of Columns', 'tlp-team' ), 'description' => esc_html__( 'Please select the number of columns to show per row.', 'tlp-team' ), 'options' => Options::scElColumns(), 'default' => '0', 'tablet_default' => '0', 'mobile_default' => '0', 'required' => true, 'separator' => 'after', 'condition' => [ $obj->elPrefix . 'layout!' => [ 'layout5' ] ], ]; $obj->elControls[] = [ 'type' => 'select2', 'id' => $obj->elPrefix . 'image_cols', 'mode' => 'responsive', 'label' => esc_html__( 'Number of <br>Image Columns', 'tlp-team' ), 'description' => esc_html__( 'Please select the number of image columns to show per row. Content column will be calculated automatically.', 'tlp-team' ), 'options' => Options::scElColumns(), 'default' => '0', 'tablet_default' => '0', 'mobile_default' => '0', 'required' => true, 'separator' => 'after', 'condition' => [ $obj->elPrefix . 'layout' => [ 'layout2' ] ], ]; $obj->elControls = Fns::filter( $obj->elPrefix . 'end_of_columns_section', $obj ); $obj->endSection(); return new static(); } /** * Layout section * * @param object $obj Reference object. * @return static */ public static function sliderColumns( $obj ) { $obj->startSection( 'columns_section', esc_html__( 'Columns', 'tlp-team' ), self::$tab ); $obj->elControls[] = [ 'type' => 'select2', 'id' => $obj->elPrefix . 'cols', 'mode' => 'responsive', 'label' => esc_html__( 'Number of Slides Per View', 'tlp-team' ), 'description' => esc_html__( 'Please select the number of slides per view.', 'tlp-team' ), 'options' => Options::scElColumns(), 'default' => '0', 'tablet_default' => '0', 'mobile_default' => '0', 'required' => true, 'label_block' => true, 'separator' => 'after', ]; $obj->elControls = Fns::filter( $obj->elPrefix . 'after_slide_items', $obj ); $obj->endSection(); return new static(); } /** * Filtering section * * @param object $obj Reference object. * @return static */ public static function query( $obj ) { $obj->startSection( 'query_section', esc_html__( 'Query', 'tlp-team' ), self::$tab ); $obj->elHeading( $obj->elPrefix . 'query_note', esc_html__( 'Filtering', 'tlp-team' ) ); $obj->startTabGroup( 'query_tab' ); $obj->startTab( 'query_include_tab', esc_html__( 'Include', 'tlp-team' ) ); $obj->elControls[] = [ 'type' => 'select2', 'id' => $obj->elPrefix . 'include_posts', 'label' => esc_html__( 'Include Team Members', 'tlp-team' ), 'options' => Fns::getMemberList(), 'description' => esc_html__( 'Please select the team members to show. Leave it blank to include all posts.', 'tlp-team' ), 'multiple' => true, 'label_block' => true, ]; $obj->endTab(); $obj->startTab( 'query_exclude_tab', esc_html__( 'Exclude', 'tlp-team' ) ); $obj->elControls[] = [ 'type' => 'select2', 'id' => $obj->elPrefix . 'exclude_posts', 'label' => esc_html__( 'Exclude Team Members', 'tlp-team' ), 'options' => Fns::getMemberList(), 'description' => esc_html__( 'Please select the team members to exclude. Leave it blank to exclude none.', 'tlp-team' ), 'multiple' => true, 'label_block' => true, ]; $obj->endTab(); $obj->endTabGroup(); $obj->elControls[] = [ 'type' => 'number', 'id' => $obj->elPrefix . 'posts_limit', 'label' => esc_html__( 'Posts Limit', 'tlp-team' ), 'description' => esc_html__( 'The number of team members to show. Set empty to show all team members.', 'tlp-team' ), 'default' => 12, ]; $obj->elHeading( $obj->elPrefix . 'category_note', esc_html__( 'Categories', 'tlp-team' ), 'before' ); $obj->elControls = Fns::filter( $obj->elPrefix . 'query_tax_filter', $obj ); $obj->elHeading( $obj->elPrefix . 'sorting_note', esc_html__( 'Sorting', 'tlp-team' ), 'before' ); $obj->elControls[] = [ 'type' => 'select2', 'id' => $obj->elPrefix . 'posts_order_by', 'label' => esc_html__( 'Order By', 'tlp-team' ), 'description' => esc_html__( 'Please choose to reorder team members.', 'tlp-team' ), 'options' => Options::scOrderBy(), 'default' => 'date', ]; $obj->elControls[] = [ 'type' => 'select2', 'id' => $obj->elPrefix . 'posts_order', 'label' => esc_html__( 'Order', 'tlp-team' ), 'description' => esc_html__( 'Please choose to reorder team members.', 'tlp-team' ), 'options' => Options::scOrder(), 'default' => 'DESC', ]; $obj->endSection(); return new static(); } /** * Pagination section * * @param object $obj Reference object. * @return static */ public static function pagination( $obj ) { $condition = [ $obj->elPrefix . 'show_pagination' => [ 'yes' ], $obj->elPrefix . 'pagination_type' => [ 'pagination' ], ]; if ( rttlp_team()->has_pro() ) { $condition[ $obj->elPrefix . 'tax_filter!' ] = [ 'yes' ]; $condition[ $obj->elPrefix . 'tax_order_by!' ] = [ 'yes' ]; $condition[ $obj->elPrefix . 'tax_order!' ] = [ 'yes' ]; } $obj->startSection( 'pagination_section', esc_html__( 'Pagination', 'tlp-team' ), self::$tab, [], [ $obj->elPrefix . 'layout!' => [ 'special01' ] ] ); $obj->elControls[] = [ 'type' => 'switch', 'id' => $obj->elPrefix . 'show_pagination', 'label' => esc_html__( 'Enable Pagination?', 'tlp-team' ), 'description' => esc_html__( 'Switch on to enable pagination.', 'tlp-team' ), 'label_on' => esc_html__( 'On', 'tlp-team' ), 'label_off' => esc_html__( 'Off', 'tlp-team' ), ]; $obj->elControls = Fns::filter( $obj->elPrefix . 'after_show_pagination', $obj ); $obj->elControls[] = [ 'type' => 'number', 'id' => $obj->elPrefix . 'pagination_per_page', 'label' => esc_html__( 'Number of Posts Per Page', 'tlp-team' ), 'default' => 8, 'description' => esc_html__( 'Please enter the number of team members per page to show.', 'tlp-team' ), 'separator' => 'before', 'condition' => [ $obj->elPrefix . 'show_pagination' => [ 'yes' ] ], ]; $obj->elControls[] = [ 'type' => 'switch', 'id' => $obj->elPrefix . 'show_page_number', 'label' => esc_html__( 'Show Page Number Text?', 'tlp-team' ), 'description' => esc_html__( 'Switch on to show page number text.', 'tlp-team' ), 'label_on' => esc_html__( 'On', 'tlp-team' ), 'label_off' => esc_html__( 'Off', 'tlp-team' ), 'separator' => 'before', 'default' => 'yes', 'condition' => $condition, ]; $obj->endSection(); return new static(); } /** * Pagination section * * @param object $obj Reference object. * @return static */ public static function isotopPagination( $obj ) { $obj->startSection( 'pagination_section', esc_html__( 'Pagination', 'tlp-team' ), self::$tab ); $obj->elControls = Fns::filter( $obj->elPrefix . 'after_show_isotope_pagination', $obj ); $obj->endSection(); return new static(); } /** * Image section * * @param object $obj Reference object. * @return static */ public static function image( $obj ) { $obj->startSection( 'image_section', esc_html__( 'Image', 'tlp-team' ), self::$tab ); $obj->elControls[] = [ 'type' => 'switch', 'id' => $obj->elPrefix . 'show_featured_image', 'label' => esc_html__( 'Display Featured Image?', 'tlp-team' ), 'description' => esc_html__( 'Switch on to display featured image.', 'tlp-team' ), 'label_on' => esc_html__( 'On', 'tlp-team' ), 'label_off' => esc_html__( 'Off', 'tlp-team' ), 'default' => 'yes', 'separator' => 'after', ]; $obj->elControls[] = [ 'type' => 'select2', 'id' => $obj->elPrefix . 'image', 'label' => esc_html__( 'Select Image Size', 'tlp-team' ), 'options' => Fns::get_image_sizes(), 'default' => 'team-thumb', 'label_block' => true, 'separator' => 'after', 'content_classes' => 'elementor-descriptor', 'condition' => [ $obj->elPrefix . 'show_featured_image' => [ 'yes' ] ], ]; $obj->elControls[] = [ 'type' => 'image-dimensions', 'id' => $obj->elPrefix . 'image_custom_dimension', 'label' => esc_html__( 'Enter Custom Image Size', 'tlp-team' ), 'label_block' => true, 'show_label' => true, 'condition' => [ $obj->elPrefix . 'show_featured_image' => [ 'yes' ], $obj->elPrefix . 'image' => [ 'ttp_custom' ], ], ]; $obj->elControls[] = [ 'type' => 'select2', 'id' => $obj->elPrefix . 'image_crop', 'label' => __( 'Image Crop', 'tlp-team' ), 'options' => [ 'soft' => esc_html__( 'Soft Crop', 'tlp-team' ), 'hard' => esc_html__( 'Hard Crop', 'tlp-team' ), ], 'default' => 'hard', 'condition' => [ $obj->elPrefix . 'show_featured_image' => [ 'yes' ], $obj->elPrefix . 'image' => [ 'ttp_custom' ], ], ]; $obj->elControls[] = [ 'type' => 'html', 'id' => $obj->elPrefix . 'image_custom_dimension_note', 'raw' => sprintf( '<span style="display: block; margin-top: 10px; font-weight: 500; line-height: 1.4;">%s</span>', esc_html__( 'Please note that, if you enter image size larger than the actual image iteself, the image sizes will fallback to the full image dimension.', 'tlp-team' ) ), 'condition' => [ $obj->elPrefix . 'show_featured_image' => [ 'yes' ], $obj->elPrefix . 'image' => [ 'ttp_custom' ], ], 'separator' => 'after', ]; $obj->elControls = Fns::filter( $obj->elPrefix . 'end_of_image_section', $obj ); $obj->endSection(); return new static(); } }