%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/19851/cwd/wp-content/themes/evenex/components/editor/elementor/widgets/speaker/
Upload File :
Create Path :
Current File : //proc/19851/cwd/wp-content/themes/evenex/components/editor/elementor/widgets/speaker/speaker.php

<?php

namespace Elementor;
if ( ! defined( 'ABSPATH' ) ) exit;


class Evenex_Speaker_Widget extends Widget_Base {

    public function get_name() {
        return 'evenex-speaker';
    }


    public function get_title() {
        return esc_html__( 'Evenex Speaker', 'evenex' );
    }

    public function get_icon() {
        return 'eicon-person';
    }

    public function get_categories() {
        return [ 'evenex-elements' ];
    }

    protected function _register_controls() {
        $this->start_controls_section(
            'spaker_control_tab',
            [
                'label' => esc_html__( 'Query', 'evenex' ),
            ]
        );

        $this->add_control(
			'speaker__style_settings',
			[
				'label' => esc_html__( 'Speaker Style', 'evenex' ),
				'type' => Controls_Manager::SELECT,
                'default' => 'style_box',
                'label_block' => true,
				'options' => [
					'style_box'  => esc_html__( 'Style Box', 'evenex' ),
					'style_round'  => esc_html__( 'Style Round', 'evenex' ),
					'style_round_2'  => esc_html__( 'Style Round 2', 'evenex' ),
					'style_round_with_social'  => esc_html__( 'Style Round With Social', 'evenex' ),
					'style_overlay'  => esc_html__( 'Style Overlay', 'evenex' ),
                    'style_creative'  => esc_html__( 'Style Creative', 'evenex' ),
                    'style_simple_gird' => esc_html__( 'Simple Grid' , 'evenex')
				],
			]
        );
        $this->add_control(
			'speaker__style_column_per_row_responsive_options_title',
			[
				'label' => esc_html__( 'Column Per Row', 'evenex' ),
				'type' => \Elementor\Controls_Manager::HEADING,
                'separator' => 'before',
			]
		);


		$this->start_controls_tabs('speaker__style_column_per_row_responsive_options');

		$this->start_controls_tab(
			'speaker__style_column_per_row_desktop',
			[
				'label' => esc_html__( 'Desktop', 'evenex' ),
			]
		);

        $this->add_control(
			'speaker__style_column_per_row_des',
			[
				'label' => esc_html__( 'Desktop', 'evenex' ),
				'type' => \Elementor\Controls_Manager::SELECT,
				'options' => [
					'12'  => esc_html__( '1', 'evenex' ),
					'6'  => esc_html__( '2', 'evenex' ),
					'4'  => esc_html__( '3', 'evenex' ),
					'3'  => esc_html__( '4', 'evenex' ),
                ],
			]
        );

        $this->end_controls_tab();

        $this->start_controls_tab(
			'speaker__style_column_per_row_tab_tab',
			[
				'label' => esc_html__( 'Tab', 'evenex' ),
			]
		);

        $this->add_control(
			'speaker__style_column_per_row_tab',
			[
				'label' => esc_html__( 'Tab', 'evenex' ),
                'type' => \Elementor\Controls_Manager::SELECT,
				'options' => [
					'12'  => esc_html__( '1', 'evenex' ),
					'6'  => esc_html__( '2', 'evenex' ),
					'4'  => esc_html__( '3', 'evenex' ),
					'3'  => esc_html__( '4', 'evenex' ),
                ],
			]
		);
        $this->end_controls_tab();

        $this->start_controls_tab(
			'speaker__style_column_per_row_mobile_mobile',
			[
				'label' => esc_html__( 'Mobile', 'evenex' ),
			]
		);
        $this->add_control(
			'speaker__style_column_per_row_mobile',
			[
				'label' => esc_html__( 'Mobile', 'evenex' ),
                'type' => \Elementor\Controls_Manager::SELECT,
				'options' => [
					'12'  => esc_html__( '1', 'evenex' ),
					'6'  => esc_html__( '2', 'evenex' ),
					'4'  => esc_html__( '3', 'evenex' ),
					'3'  => esc_html__( '4', 'evenex' ),
                ],
			]
		);

		$this->end_controls_tab();

		$this->end_controls_tabs();

		$this->add_control(
			'speaker__style_column_per_row_end',
			[
                'type' => \Elementor\Controls_Manager::DIVIDER,
			]
		);

        $this->add_control(
            'speaker___social__num',
            [
                'label'     => esc_html__( 'Social Limit', 'evenex' ),
                'type'      => Controls_Manager::NUMBER,
                'min'       => 1,
                'max'       => 6,
                'default'   => 3,
            ]
        );

        $this->add_control(
            'speaker__posts_num',
            [
                'label'     => esc_html__( 'Posts Count', 'evenex' ),
                'type'      => Controls_Manager::NUMBER,
                'min'       => 1,
                'max'       => 100,
                'default'   => 6,
            ]
        );

        $this->add_control('speaker__cat',
            [
                'label'     => esc_html__( 'Category', 'evenex' ),
                'type'      => Controls_Manager::SELECT2,
                'multiple'  => true,
                'default'   => '',
                'options'   => $this->getCategories(),
                'label_block' => 'true'
            ]
        );

        $this->add_control(
            'speaker__offset',
            [
                'label'     => esc_html__( 'Offset', 'evenex' ),
                'type'      => Controls_Manager::NUMBER,
                'min'       => 0,
                'max'       => 20,
                'default'   => 0,
            ]
        );

        $this->add_control(
            'speaker__posts_order_by',
            [
                'label'   => esc_html__( 'Order by', 'evenex' ),
                'type'    => Controls_Manager::SELECT,
                'options' => [
                    'date'          => esc_html__( 'Date', 'evenex' ),
                    'title'         => esc_html__( 'Title', 'evenex' ),
                ],
                'default' => 'date',
            ]
        );

        $this->add_control(
            'speaker__posts_sort',
            [
                'label'   => esc_html__( 'Order', 'evenex' ),
                'type'    => Controls_Manager::SELECT,
                'options' => [
                    'ASC'  => esc_html__( 'ASC', 'evenex' ),
                    'DESC' => esc_html__( 'DESC', 'evenex' ),
                ],
                'default' => 'DESC',
            ]
        );

        $this->end_controls_section();

        $this->start_controls_section(
            'evenex_speaker', [
                'label'	 => esc_html__( 'evenex Speaker Style', 'evenex' ),
                'tab'	 => Controls_Manager::TAB_STYLE,
            ]
        );


        $this->add_group_control(
            Group_Control_Typography::get_type(), [
                'name'		 => 'speaker_title_typo',
                'selector'	 => '{{WRAPPER}} .speaker-title, {{WRAPPER}} .speaker-simple-grid-style .speaker-hover-content .speaker-title-simple a',
            ]
        );
        $this->add_control(
            'speaker_designation_color', [
                'label'		 => esc_html__( 'Description color', 'evenex' ),
                'type'		 => Controls_Manager::COLOR,
                'selectors'	 => [
                    '{{WRAPPER}} .speaker-footer-content>p' => 'color: {{VALUE}};',
                    '{{WRAPPER}} .speaker-hover-content p' => 'color: {{VALUE}};',
                ],
                'separator' => 'before'
           ]
        );
        $this->add_group_control(
            Group_Control_Typography::get_type(), [
                'name'		 => 'speaker_designation_typo',
                'selector'	 => '{{WRAPPER}} .speaker-footer-content>p, {{WRAPPER}} .speaker-hover-content p',
            ]
        );

        $this->start_controls_tabs( 'speaker_style_tab' );

        $this->start_controls_tab(
            'speaker_style_tab_normal',
            [
                'label' => esc_html__( 'Normal', 'evenex' ),
            ]
        );

        $this->add_control(
            'speaker_title_color', [
                'label'		 => esc_html__( 'Speaker title color', 'evenex' ),
                'type'		 => Controls_Manager::COLOR,
                'selectors'	 => [
                    '{{WRAPPER}} .speaker-title' => 'color: {{VALUE}};',
                    '{{WRAPPER}} .speaker-simple-grid-style .speaker-hover-content .speaker-title-simple a' => 'color: {{VALUE}};',
                ]
            ]
        );

        $this->add_control(
            'speaker_social_bg_color', [
                'label'		 => esc_html__( 'Social BG color', 'evenex' ),
                'type'		 => Controls_Manager::COLOR,
                'selectors'	 => [
                    '{{WRAPPER}} .speakers-social-lists>li>a' => 'background-color: {{VALUE}};',
                ],
                'separator' => 'before',
                'condition' => ["speaker__style_settings" => ['style_overlay']]
            ]
        );

        $this->add_control(
            'speaker_social__color', [
                'label'		 => esc_html__( 'Social color', 'evenex' ),
                'type'		 => Controls_Manager::COLOR,
                'selectors'	 => [
                    '{{WRAPPER}} .speakers-social-lists>li>a' => 'color: {{VALUE}};',
                ],
                'separator' => 'before',
                'condition' => ["speaker__style_settings" => ['style_overlay']]
            ]
        );


        $this->end_controls_tab();

        $this->start_controls_tab(
            'speaker_style_tab_hover',
                [
                    'label' =>esc_html__( 'Hover', 'evenex' ),
                ]
        );

        $this->add_control(
            'speaker_title_hover_color', [
                'label'		 => esc_html__( 'Speaker title color', 'evenex' ),
                'type'		 => Controls_Manager::COLOR,
                'selectors'	 => [
                    '{{WRAPPER}} .speaker-title:hover>a' => 'color: {{VALUE}};',
                    '{{WRAPPER}} .speaker-simple-grid-style .speaker-hover-content .speaker-title-simple a:hover' => 'color: {{VALUE}};',
                ]

            ]
        );

        $this->add_control(
            'speaker_social_bg_color_hover', [
                'label'		 => esc_html__( 'Social BG color', 'evenex' ),
                'type'		 => Controls_Manager::COLOR,
                'selectors'	 => [
                    '{{WRAPPER}} .speakers-social-lists>li>a:hover' => 'background-color: {{VALUE}};',
                ],
                'separator' => 'before',
                'condition' => ["speaker__style_settings" => ['style_overlay']]
            ]
        );

        $this->add_control(
            'speaker_social__color_hover', [
                'label'		 => esc_html__( 'Social color', 'evenex' ),
                'type'		 => Controls_Manager::COLOR,
                'selectors'	 => [
                    '{{WRAPPER}} .speakers-social-lists>li>a:hover' => 'color: {{VALUE}};',
                ],
                'separator' => 'before',
                'condition' => ["speaker__style_settings" => ['style_overlay']]
            ]
        );

        $this->end_controls_tab();
        $this->end_controls_tabs();

        $this->end_controls_section();

        $this->start_controls_section(
			'speaker__grid_hover_overly_section',
			[
				'label' => esc_html__( 'Hover Bg Color', 'evenex' ),
                'tab' => \Elementor\Controls_Manager::TAB_STYLE,
                'condition' => ["speaker__style_settings" => ['style_simple_gird']]
			]
        );

        $this->add_group_control(
			\Elementor\Group_Control_Background::get_type(),
			[
				'name' => 'speaker__grid_hover_overly__background',
				'label' => esc_html__( 'Background', 'evenex' ),
				'types' => ['gradient' ],
				'selector' => '{{WRAPPER}} .speaker-simple-grid-style:hover::before',
			]
        );
        $this->end_controls_section();
        $this->start_controls_section(
			'speaker__grid_social_section',
			[
				'label' => esc_html__( 'Social', 'evenex' ),
                'tab' => \Elementor\Controls_Manager::TAB_STYLE,
                'condition' => ["speaker__style_settings" => ['style_simple_gird']]
			]
        );

		$this->start_controls_tabs(
			'speaker__grid_social_style_tab'
		);

        $this->start_controls_tab(
			'speaker__grid_social_style_tab_normal',
			[
				'label' => esc_html__( 'Normal', 'evenex' ),
			]
        );
        $this->add_control(
			'speaker__grid_social_color',
			[
				'label' => esc_html__( ' Color', 'evenex' ),
				'type' => \Elementor\Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .speakers-social-lists-simple li a' => 'color: {{VALUE}}',
				],
			]
        );

        $this->add_control(
			'speaker__grid_social_border_color',
			[
				'label' => esc_html__( 'Border Color', 'evenex' ),
				'type' => \Elementor\Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .speakers-social-lists-simple li a' => 'border-color: {{VALUE}}',
				],
			]
		);
        $this->end_controls_tab();

        $this->start_controls_tab(
			'speaker__grid_social_style_tab_hover',
			[
				'label' => esc_html__( 'Hover', 'evenex' ),
			]
        );
        $this->add_control(
			'speaker__grid_social_color_hover',
			[
				'label' => esc_html__( ' Color', 'evenex' ),
				'type' => \Elementor\Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .speakers-social-lists-simple li:hover> a' => 'color: {{VALUE}}',
				],
			]
        );

        $this->add_control(
			'speaker__grid_social_border_color_hover',
			[
				'label' => esc_html__( 'Border Color', 'evenex' ),
				'type' => \Elementor\Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .speakers-social-lists-simple li:hover> a' => 'border-color: {{VALUE}}',
				],
			]
		);

        $this->end_controls_tab();
        $this->end_controls_tabs();

        $this->add_control(
			'speaker__grid_social_icon_size',
			[
				'label' => esc_html__( 'Icon Size', 'evenex' ),
				'type' => Controls_Manager::SLIDER,
				'size_units' => [ 'px' ],
				'range' => [
					'px' => [
						'min' => 5,
						'max' => 50,
						'step' => 1,
					],
                ],

				'selectors' => [
					'{{WRAPPER}} .speakers-social-lists-simple li a' => 'font-size: {{SIZE}}{{UNIT}};',
				],
			]
        );

        $this->end_controls_section();
    }

    protected function render( ) {
        $settings = $this->get_settings_for_display();

        extract($settings);


        $query = array(
            'post_type'      => 'xs-speaker',
            'post_status'    => 'publish',
            'posts_per_page' => $speaker__posts_num,
            'offset'         => $speaker__offset,
            'orderby'        => $speaker__posts_order_by,
            'order'          => $speaker__posts_sort,
        );

        if(!empty($speaker__cat)){
            $query['tax_query'] = array(
                array(
                    'taxonomy' => 'speaker-category',
                    'terms' => $speaker__cat,
                    'field' => 'id',
                )
            );
        }
        $speaker = new \WP_Query($query);
        if ($speaker->have_posts()) { ?>
            <div class="row <?php echo esc_attr( $speaker__style_settings === 'style_simple_gird' ? 'no-gutters style_simple_gird' : '' )?>">
            <?php
                while($speaker->have_posts()){
                    $speaker->the_post();
                    include EVENEX_SHORTCODE_DIR_WIDGETS.'/speaker/style/'.$speaker__style_settings.'.php';
                }
            ?>
            </div>
            <?php
        }
    }

    protected function _content_template() { }

    public function getCategories(){

        $terms = get_terms( array(
            'taxonomy'    => 'speaker-category',
            'hide_empty'  => false,
            'posts_per_page' => -1,
        ));


        $cat_list = [];
        if(is_array($terms) && '' != $terms) {
            foreach($terms as $post) {
                $cat_list[$post->term_id]  = [$post->name];
            }
        };
        return $cat_list;
    }
}

Zerion Mini Shell 1.0