<?php

namespace Elementor;
namespace Pt_Addons_Elementor\Elements\NewsTicker;
// If this file is called directly, abort.
if (!defined('ABSPATH')) {
    exit;
}
use \Elementor\Utils;
use \Elementor\Frontend;
use \Elementor\Controls_Manager as Controls_Manager;
use \Elementor\Group_Control_Background;
use \Elementor\Group_Control_Border;
use \Elementor\Group_Control_Typography;
use \Elementor\Scheme_Typography;
use \Elementor\Scheme_Color;
use \Elementor\Group_Control_Box_Shadow;
use \Elementor\Group_Control_Text_Shadow;
use \Elementor\Group_Control_Image_Size as Group_Control_Image_Size;
use \Elementor\Widget_Base as Widget_Base;
use \Pt_Addons_Elementor\Classes\Bootstrap;


class News_Ticker extends Widget_Base {

	
	 use \Pt_Addons_Elementor\Includes\Triat\Helper;
	

	/**
	 * Define our get name settings.
	 */
	public function get_name() {
		return 'pt-news-ticker';
	}
	/**
	 * Define our get title settings.
	 */
	public function get_title() {
		return __( 'News Ticker', 'elementor' );
	}
	/**
	 * Define our get icon settings.
	 */
	public function get_icon() {
		return 'eicon-posts-grid';
	}
	/**
	 * Define our get categories settings.
	 */
	public function get_categories() {
		return [ 'pt-addons-elementor' ];
	}
	
	/**
	 * Define our _register_controls settings.
	 */
	protected function _register_controls() {
		$this->start_controls_section(
			'pt_section_post_grid_filters',
			[
				'label' => __( 'Post Settings', 'elementor' ),
			]
		);
		$this->add_control(
			'pt_post_type',
			[
				'label' => __( 'Post Type', 'elementor' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->pt_get_post_types_pro(),
				'default' => 'post',
			]
		);
		$this->add_control(
			'pt_category',
			[
				'label' => __( 'Categories', 'elementor' ),
				'type' => Controls_Manager::SELECT2,
				'label_block' => true,
				'multiple' => true,
				'options' => $this->pt_post_type_categories_pro(),
				'condition' => [
					'pt_post_type' => 'post',
				],
			]
		);
		$this->add_control(
			'num_posts',
			[
				'label' => __( 'Number of Posts', 'elementor' ),
				'type' => Controls_Manager::NUMBER,
				'default' => '8',
			]
		);
		$this->add_control(
			'post_offset',
			[
				'label' => __( 'Post Offset', 'elementor' ),
				'type' => Controls_Manager::NUMBER,
				'default' => '0',
			]
		);
		$this->add_control(
			'orderby',
			[
				'label' => __( 'Order By', 'elementor' ),
				'type' => Controls_Manager::SELECT,
				'options' => $this->pt_get_post_orderby_options_pro(),
				'default' => 'date',
			]
		);
		$this->add_control(
			'order',
			[
				'label' => __( 'Order', 'elementor' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'asc' => 'Ascending',
					'desc' => 'Descending',
				],
				'default' => 'desc',
			]
		);
		$this->end_controls_section();
		$this->start_controls_section(
			'pt_section_post_grid_layout',
			[
				'label' => __( 'Layout Settings', 'elementor' ),
			]
		);
		$this->add_control(
		  'pt_label',
		  [
			 'label'       => __( 'Label', 'elementor' ),
			 'type'        => Controls_Manager::TEXT,
			 'default'     => __( 'Latest News', 'elementor' ),
		  ]
		);
		$this->add_control(
			  'pt_effect',
				  [
					 'label' => __( 'Effect', 'elementor' ),
					 'type' => Controls_Manager::SELECT2,
					 'options' => [
						'slide-h' => __( 'slide-h', 'elementor' ),
						//'slide-v' => __( 'slide-v', 'elementor' ),
						'fade' => __( 'fade', 'elementor' ),
					 ],
					 'multiple' => false,
				  ]
		);
		$this->add_control(
			'pt_show_excerpt1',
				[
					'label' => __( 'Show Excerpt/Title', 'elementor' ),
					'type' => Controls_Manager::SELECT,
					'default' => 'title',
					'options' => [
						'title'  => __( 'Title', 'elementor' ),
						'excerpt' => __( 'Excerpt', 'elementor' ),
					],
					'multiple' => false,
			
				]
		);
		$this->add_control(
			'pt_excerpt_length',
			[
				'label' => __( 'Excerpt Words', 'elementor' ),
				'type' => Controls_Manager::NUMBER,
				'default' => '25',
				'condition' => [
					'pt_show_excerpt1' => 'excerpt',
				],
			]
		);
		
		$this->end_controls_section();
		$this->start_controls_section(
			'pt_section_typography',
			[
				'label' => __( 'Color & Typography', 'elementor' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);
		$this->add_control(
			'pt_news_ticker_title_style',
			[
				'label' => __( 'Label Style', 'elementor' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);
		$this->add_control(
			'pt_news_ticker_title_color',
			[
				'label' => __( 'Color', 'elementor' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#ffffff',
				'selectors' => [
					'{{WRAPPER}} .wptu-ticker .wptu-ticker-title .wptu-ticker-head' => 'color: {{VALUE}};',
				],
			]
		);
		$this->add_control(
			'pt_news_ticker_title_back_color',
			[
				'label' => __( 'Background Color', 'elementor' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#000000',
				
			]
		);
		
		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'pt_news_ticker_title_typography',
				'label' => __( 'Typography', 'elementor' ),
				'scheme' => Scheme_Typography::TYPOGRAPHY_1,
				'selector' => '{{WRAPPER}} .wptu-ticker-head',
			]
		);
		$this->add_control(
			'pt_news_ticker_excerpt_style',
			[
				'label' => __( 'Border Style', 'elementor' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);
		$this->add_group_control(
			Group_Control_Border::get_type(),
			[
				'name' => 'border',
				'label' => __( 'Border', 'elementor' ),
				'placeholder' => '1px',
				'default' => '1px',
				'selector' => '{{WRAPPER}} .wptu-ticker-main.wptu-bordernone',
			]
		);
		
		$this->add_control(
			'pt_news_ticker_content_style',
			[
				'label' => __( 'Content Style', 'elementor' ),
				'type' => Controls_Manager::HEADING,
				'separator' => 'before',
			]
		);
		$this->add_control(
			'pt_news_ticker_content_color',
			[
				'label' => __( 'Background Color', 'elementor' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#fff',
				'selectors' => [
					'{{WRAPPER}} .wptu-ticker-block , .wptu-ticker .wptu-ticker-navi' => 'background: {{VALUE}};',
				],
			]
		);
		$this->add_control(
			'pt_news_ticker_content_font_color',
			[
				'label' => __( 'Font Color', 'elementor' ),
				'type' => Controls_Manager::COLOR,
				'default' => '#000',
				'selectors' => [
					'{{WRAPPER}} .wptu-ticker-block li' => 'color: {{VALUE}};',
				],
			]
		);
		
		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'pt_news_ticker_content_typography',
				'label' => __( 'Excerpt Typography', 'elementor' ),
				'scheme' => Scheme_Typography::TYPOGRAPHY_3,
				'selector' => '{{WRAPPER}} .wptu-ticker-block li',
			]
		);
		$this->end_controls_section();
		
	}
	
	public function wptu_ticker( $atts, $content = null ) {
	
	// Shortcode Parameters
	extract(shortcode_atts(array(
		
		
		'ticker_title'			=> __('Latest News','ticker-ultimate'),		
		'posts'					=> array(),
		'width'					=> '100%',
		'color'					=> '#000',
		'background_color'		=> '#2096CD',		
		'effect'				=> 'fade',
		'fontstyle'				=> 'normal',
		'autoplay'				=> 'true',
		'timer'					=> 4000,	
		'title_color'			=> '#000',
		'border'				=> 'true',
		'post_type'				=> '',
		'post_cat'				=> '',
	), $atts));
	}
	
	/**
	 * Render function declare
	 */
	protected function render() {
		$settings = $this->get_settings();
		//echo '<pre>';
		//print_r($settings);
		//echo '</pre>';
		$post_args = $this->pt_get_post_settings_pro( $settings );
	    $pt_effect = $this->get_settings( 'pt_effect' );
		
		$ticker_conf = compact( 'effect' ,'fontstyle', 'autoplay', 'timer');
		
		
		$posts = $this->pt_get_post_data_pro( $post_args );
		//print_r($posts);
		if ( ! empty( $settings['hover_animation'] ) ) {
			$this->add_render_attribute( 'imagehover', 'class', 'elementor-animation-' . $settings['hover_animation'] );
		}
		$this->add_render_attribute( 'slides', [
            'id'             => 'wptu-ticker-'.$this->get_id(),
		] );
		if ( count( $posts ) ) {
				global $post;
		?>
		
		<div class="wptu-ticker wptu-ticker-main wptu-clearfix wptu-bordernone" id="wptu-ticker-<?php echo esc_attr( $this->get_id() ); ?>">		
		<div class="wptu-ticker-title" style="background-color: <?php echo $settings['pt_news_ticker_title_back_color']; ?>"><div class="wptu-ticker-head"><?php echo $settings['pt_label']; ?></div></div><!-- end .wptu-ticker-title -->
		<div class="wptu-ticker-block">
			<ul>
			<?php foreach ( $posts as $post ) { ?>
			<?php if ($pt_effect == 'slide-v') { ?>
			<li style="top:0px;position: absolute;overflow: hidden;padding-top: 10px;">
			<?php }else { ?>
			<li>	
				
			<?php } ?>
			
			
				
				<?php if(!empty($settings['pt_show_excerpt1'])) { ?>
				<?php if ($settings['pt_show_excerpt1'] == 'excerpt'){ ?>
				<p><?php echo esc_html( $this->pt_get_excerpt_by_id_pro( get_the_ID(), $settings['pt_excerpt_length'] ) ); ?></p>
				
				<?php } else { ?>
				<?php the_title(); ?>
					
				<?php }
				}
				?>	
					
				</li>
				
			<?php } ?>
			</ul>
		</div><!-- end .wptu-ticker-block -->
		<div class="wptu-ticker-navi">
        	<span ></span>
            <span></span>
        </div><!-- end .wptu-ticker-navi -->
	</div><!-- end .wptu-ticker -->
	<style>
	.wptu-ticker-main.wptu-bordernone {border : 1px solid; }
	.wptu-ticker-main.wptu-bordernone {border-color: #000;}
	#wptu-ticker > .wptu-ticker-title <?php echo $settings['pt_news_ticker_title_back_color']; ?>}
	#wptu-ticker > .wptu-ticker-title > span {transparent transparent transparent #1856cd !important }
	#wptu-ticker > .wptu-ticker-block > ul > li > a:hover {color: #000;}
	#wptu-ticker > .wptu-ticker-block > ul > li > a {color: <?php echo $color; ?>;font-style: normal}
	#wptu-ticker > .wptu-ticker-title .wptu-ticker-head {background-color: #fff;color: <?php echo $settings['pt_news_ticker_title_color']; ?>;}
	
	.wptu-ticker .wptu-ticker-navi {
		  background : <?php echo $settings['pt_news_ticker_content_color']; ?>
		}
		.wptu-ticker-main {
		display: -webkit-flex;
		display: flex;
		position: relative;
	}
			

}
	</style>
<?php
wp_reset_postdata();

			}
		?>
		<script>
jQuery( document ).ready(function($) {

    // Initialize news ticker
    $( '.wptu-ticker-main' ).each(function( index ) {
        
        var ticker_id   = 'wptu-ticker-<?php echo esc_attr( $this->get_id()) ?>';
		//alert(ticker_id);
      //  var ticker_conf = $.parseJSON( $(this).find('.wptu-ticker-conf').text() );
        
        
				
            jQuery('#'+ticker_id).wposTicker({
               	effect      : '<?php echo $pt_effect; ?>',
                autoplay    : true,
                timer       : 4000,
                border      : true,
                fontstyle   : 'normal',
            });
        
    });

});
</script>
		<?php
		
	}
}
?>

<?php
add_action('plugins_loaded', 'wptu_ticker');

