HEX
Server: LiteSpeed
System: Linux l24.yourwebhosting.net 5.14.0-611.54.3.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 7 16:31:24 EDT 2026 x86_64
User: turkishi (1582)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //home/turkishi/www/wp-content/themes/kidzieo/includes/elementor/marquee-effect.php
<?php
namespace Elementor; // Custom widgets must be defined in the Elementor namespace
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly (security measure)

/**
 * Widget Name: Projects horizontal snap slide
 */
class PBMIT_MarqueeEffectElement extends Widget_Base{

 	// The get_name() method is a simple one, you just need to return a widget name that will be used in the code.
	public function get_name() {
		return 'pbmit_marquee_effect_element';
	}

	// The get_title() method, which again, is a very simple one, you need to return the widget title that will be displayed as the widget label.
	public function get_title() {
		return esc_attr__( 'Kidzieo Marquee Effect Element', 'kidzieo' );
	}

	// The get_icon() method, is an optional but recommended method, it lets you set the widget icon. you can use any of the eicon or font-awesome icons, simply return the class name as a string.
	public function get_icon() {
		return 'fas fa-stream';
	}

	// The get_categories method, lets you set the category of the widget, return the category name as a string.
	public function get_categories() {
		return [ 'kidzieo_category' ];
	}

	public function __construct($data = [], $args = null) {
		parent::__construct($data, $args);
			wp_enqueue_script( 'swiper' );
			wp_enqueue_style( 'swiper' );
	}
	protected function register_controls() {

		// Style
		$this->start_controls_section(
			'style_section',
			[
				'label'	=> esc_attr__( 'Select Tag Style', 'kidzieo' ),
				'tab'	=> Controls_Manager::TAB_CONTENT,
			]
		);
		$this->add_control(
			'style',
			[
				'label'			=> esc_attr__( 'Select Tag Style View Style', 'kidzieo' ),
				'description'	=> esc_attr__( 'Select Tag Style View style.', 'kidzieo' ),
				'type'			=> 'pbmit_imgselect',
				'label_block'	=> true,
				'thumb_width'	=> '110px',
				'default'		=> '1',
				'options'		=> pbmit_element_template_list( 'marquee-effect', true ),
			]
		);
		$this->add_control(
			'carousel-reverse',
			[
				'label'			=> esc_attr__( 'Carousel: Autoplay reverse', 'kidzieo' ),
				'description'	=> esc_attr__( 'SWITCHER Yes Than reverse of carousel.', 'kidzieo' ),
				'type'			=> Controls_Manager::SWITCHER,
				'label_on'		=> esc_attr__( 'Yes', 'kidzieo' ),
				'label_off'		=> esc_attr__( 'No', 'kidzieo' ),
				'return_value'	=> '1',
				'default'		=> '0',
			]
		);

		$repeater = new Repeater();

		$repeater->add_control(
			'tag_title',
			[
				'label'			=> esc_attr__( 'Tag Title', 'kidzieo' ),
				'type'			=> Controls_Manager::TEXT,
				'default'		=> esc_attr__( 'Tag Title', 'kidzieo' ),
				'placeholder'	=> esc_attr__( 'Tag Title', 'kidzieo' ),
				'label_block'	=> true,

			]
		);
		$repeater->add_control(
			'tag_link',
			[
				'label'			=> esc_html__( 'Tag Link', 'kidzieo' ),
				'type'			=> Controls_Manager::URL,
				'dynamic'		=> [
					'active'		=> true,
				],
				'placeholder'	=> esc_html__( 'https://pbminofotech.com', 'kidzieo' ),
			]
		);

		$this->add_control(
			'boxes',
			[
				'label'		=> esc_attr__( 'Add data for each Tag', 'kidzieo' ),
				'type'		=> Controls_Manager::REPEATER,
				'fields'	=> $repeater->get_controls(),
				'default'	=> [
					[
						'tag_title'	=> esc_attr__( 'This is first Tag', 'kidzieo' ),
					],
					[
						'tag_title'	=> esc_attr__( 'This is second Tag', 'kidzieo' ),
					],
					[
						'tag_title'	=> esc_attr__( 'This is third Tag', 'kidzieo' ),
					],
					[
						'tag_title'	=> esc_attr__( 'This is fourth Tag', 'kidzieo' ),
					],
				],
				'title_field' => '{{{ tag_title }}}',
			]
		);
		$this->end_controls_section();

		// HTML Tags
		$this->start_controls_section(
			'advanced_section',
			[
				'label'	=> pbmit_esc_kses('<img class="pbmit-tab-small-logo" src="'.get_template_directory_uri() . '/includes/images/pbm-small-logo.png" /> ') . esc_attr__( 'Tag & Gap Settings', 'kidzieo' ),
				'tab'	=> Controls_Manager::TAB_ADVANCED,
			]
		);
		$this->add_control(
			'tag_options',
			[
				'label'			=> esc_attr__( 'Tags for SEO', 'kidzieo' ),
				'type'			=> Controls_Manager::HEADING,
				'separator'		=> 'before',
			]
		);
		$this->add_control(
			'title_tag',
			[
				'label' => esc_attr__( 'Title Tag', 'kidzieo' ),
				'type' => Controls_Manager::SELECT,
				'options' => [
					'h1'	=> esc_attr( 'H1' ),
					'h2'	=> esc_attr( 'H2' ),
					'h3'	=> esc_attr( 'H3' ),
					'h4'	=> esc_attr( 'H4' ),
					'h5'	=> esc_attr( 'H5' ),
					'h6'	=> esc_attr( 'H6' ),
					'div'	=> esc_attr( 'DIV' ),
				],
				'default' => esc_attr( 'h2' ),
			]
		);
		$this->end_controls_section();

	}

	protected function render() {

		$settings	= $this->get_settings_for_display();
		extract($settings);

		$swiper_class = '';
			$swiper_class = ' swiper-wrapper';
		//}
		?>

		<?php
		// Starting container
		pbmit_element_container( array(
			'position'	=> 'start',
			'cpt'		=> 'marquee-effect',
			'data'		=> $settings
		) );
		?>

		<div class="pbmit-marquee-effect-section">		

			<div class="pbmit-marquee-container pbmit-tag-top pbmit-element-posts-wrapper swiper-container">
				<?php
				$return = '';
				foreach( $settings['boxes'] as $box ){
					$title_html =  $image_html = '' ;
					// Title
					$title_tag	= ( !empty($settings['title_tag']) ) ? $settings['title_tag'] : 'h2' ;
					$title_html	= '<'. pbmit_esc_kses($title_tag) . ' class="pbmit-element-title" data-text="'.pbmit_esc_kses($box['tag_title']).'">
						'.pbmit_link_render($box['tag_link'], 'start' ).'
							'.pbmit_esc_kses($box['tag_title']).'
						'.pbmit_link_render($box['tag_link'], 'end' ).'
						</'. pbmit_esc_kses($title_tag) . '>';

					// Template
					if( file_exists( locate_template( '/theme-parts/marquee-effect/marquee-effect-style-'.esc_attr($style).'.php', false, false ) ) ){

						$return .= pbmit_element_block_container( array(
							'position'	=> 'start',
							'column'	=> 'none',
							'cpt'		=> 'marquee-effect',
							'style'		=> $style) );

						ob_start();
						include( locate_template( '/theme-parts/marquee-effect/marquee-effect-style-'.esc_attr($style).'.php', false, false ) );
						$return .= ob_get_contents();
						ob_end_clean();

						$return .= pbmit_element_block_container( array(
							'position'	=> 'end',
						) );
					}
				} // foreach
				echo pbmit_esc_kses($return);
				?>
			</div>
		</div>

		<?php

		// Ending wrapper of the whole arear
		pbmit_element_container( array(
			'position'	=> 'end',
			'cpt'		=> 'marquee-effect',
			'data'		=> $settings
		) );
		
		?>
		<?php
	}

	protected function content_template() {}
}
// After the Schedule class is defined, I must register the new widget class with Elementor:
Plugin::instance()->widgets_manager->register( new PBMIT_MarqueeEffectElement() );