HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/confeduphaar/public_html/wp-content/plugins/ova-framework/ova-elementor/widgets/ova_iso.php
<?php
namespace ova_framework\Widgets;
use Elementor;
use Elementor\Widget_Base;
use Elementor\Controls_Manager;
use Elementor\Utils;
use Elementor\Group_Control_Image_Size;
use Elementor\Group_Control_Css_Filter;
use Elementor\Group_Control_Border;
use Elementor\Group_Control_Box_Shadow;
use Elementor\Group_Control_Typography;
use Elementor\Core\Schemes\Typography;
if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}


class ova_iso extends Widget_Base {

	public function get_name() {
		return 'ova_iso';
	}

	public function get_title() {
		return __( 'Isotope', 'ova-framework' );
	}

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

	public function get_categories() {
		return [ 'ovatheme' ];
	}

	public function get_keywords() {
		return [ 'image', 'photo', 'visual' ];
	}

	public function get_script_depends() {

		  wp_enqueue_script( 'isotope', OVA_PLUGIN_URI.'assets/libs/isotope.pkgd.min.js', [ 'jquery' ], false, true );

		
		return [ 'script-elementor' ];
	}


	protected function register_controls() {




		$this->start_controls_section(
			'section_image',
			[
				'label' => __( 'Image', 'ova-framework' ),
			]
		);
       	$repeater = new \Elementor\Repeater();



		$repeater->add_control(
			'desk_logo',
			[
				'label' => __( 'Image', 'ova-framework' ),
				'type' => Controls_Manager::MEDIA,
				'dynamic' => [
					'active' => true,
				],
				'default' => [
					'url' => Utils::get_placeholder_image_src(),
				],
			]
		);
		$repeater->add_group_control(
			Group_Control_Image_Size::get_type(),
			[
				'name' => 'desk_logo',
				'default' => 'full',
				'separator' => 'none',
			]
		);

		

		$repeater->add_control(
			'large_width',
			[
				'label' => __( 'Use large width', 'ova-framework' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'no',
				'options' => [
					'no' => esc_html__( 'No', 'ova-framework' ),
					'yes' => esc_html__( 'Yes', 'ova-framework' ),
				]
			]
		);


		$repeater->add_control(
			'title',
			[
				'label' => __( 'Title', 'ova-framework' ),
				'type' => \Elementor\Controls_Manager::TEXT,
			]
		);

		$repeater->add_control(
			'title2',
			[
				'label' => __( 'Sub Title', 'ova-framework' ),
				'type' => \Elementor\Controls_Manager::TEXT,
			]
		);

		$repeater->add_control(
			'title3',
			[
				'label' => __( 'Text Button', 'ova-framework' ),
				'type' => \Elementor\Controls_Manager::TEXT,
			]
		);

			$repeater->add_control(
			'link',
			[
				'label' => __( 'Link', 'ova-framework' ),
				'type' => Controls_Manager::URL,
				'placeholder' => __( 'https://your-link.com', 'ova-framework' ),
				'default' => [
					'url' => '#',
				],
			]
		);

			$repeater->add_control(
				'show_title',
				[
					'label'        => __( 'Show Heading', 'ovaev' ),
					'type'         => Controls_Manager::SWITCHER,
					'return_value' => 'yes',
					'default'      => 'no',
					'separator'    => 'before',
				]
			);

			$repeater->add_control(
			'version',
			[
				'label' => __( 'Version', 'ova-framework' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'version_1',
				'options' => [
					'version_1' => esc_html__( 'Version 1', 'ova-framework' ),
					'version_2' => esc_html__( 'Version 2', 'ova-framework' ),
				]
			]
		);

				$repeater->add_control(
			'Background',
			[
				'label' => __( 'Background', 'ova-framework' ),
				'type' => Controls_Manager::SELECT,
				'default' => 'Background_1',
				'options' => [
					'Background_1' => esc_html__( 'Background 1', 'ova-framework' ),
					'Background_2' => esc_html__( 'Background 2', 'ova-framework' ),
					'Background_3' => esc_html__( 'Background 3', 'ova-framework' ),

				]
			]
		);




				$this->add_control(
			'tabs',
			[
				'label' => __( 'Tabs', 'ova-framework' ),
				'type' => Controls_Manager::REPEATER,
				'fields' => $repeater->get_controls(),
			]
		);
			



		$this->end_controls_section();


		$this->start_controls_section(
			'section_title',
			[
				'label' => __( 'Title Version 1', 'ova-framework' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'title_typography',
				'selector' => '{{WRAPPER}} .content_iso .text_iso.version_1 .title_1',
			]
		);

		$this->add_control(
			'color_title',
			[
				'label' => __( 'Color ', 'ova-framework' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .content_iso .text_iso.version_1 .title_1' => 'color : {{VALUE}};',
				],
			]
		);

		$this->add_responsive_control(
			'margin_title',
			[
				'label' => __( 'Margin', 'ova-framework' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .content_iso .text_iso.version_1 .title_1' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_sub_title',
			[
				'label' => __( 'Sub Title Version 1', 'ova-framework' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'sub_title_typography',
				'selector' => '{{WRAPPER}} .content_iso .text_iso.version_1 .title_2',
			]
		);

		$this->add_control(
			'color_sub_title',
			[
				'label' => __( 'Color', 'ova-framework' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .content_iso .text_iso.version_1 .title_2' => 'color : {{VALUE}};',
				],
			]
		);


		$this->add_responsive_control(
			'margin_sub_title',
			[
				'label' => __( 'Margin', 'ova-framework' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .content_iso .text_iso.version_1 .title_2' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_title2',
			[
				'label' => __( 'Title Version 2', 'ova-framework' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'title_typography2',
				'selector' => '{{WRAPPER}} .content_iso .text_iso.version_2 .title_1',
			]
		);

		$this->add_control(
			'color_title2',
			[
				'label' => __( 'Color ', 'ova-framework' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .content_iso .text_iso.version_2 .title_1' => 'color : {{VALUE}};',
				],
			]
		);

		$this->add_responsive_control(
			'margin_title2',
			[
				'label' => __( 'Margin', 'ova-framework' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .content_iso .text_iso.version_2 .title_1' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

		$this->start_controls_section(
			'section_sub_title2',
			[
				'label' => __( 'Sub Title Version 2', 'ova-framework' ),
				'tab' => Controls_Manager::TAB_STYLE,
			]
		);

		$this->add_group_control(
			Group_Control_Typography::get_type(),
			[
				'name' => 'sub_title_typography2',
				'selector' => '{{WRAPPER}} .content_iso .text_iso.version_2 .title_2',
			]
		);

		$this->add_control(
			'color_sub_title2',
			[
				'label' => __( 'Color', 'ova-framework' ),
				'type' => Controls_Manager::COLOR,
				'selectors' => [
					'{{WRAPPER}} .content_iso .text_iso.version_2 .title_2' => 'color : {{VALUE}};',
				],
			]
		);


		$this->add_responsive_control(
			'margin_sub_title2',
			[
				'label' => __( 'Margin', 'ova-framework' ),
				'type' => Controls_Manager::DIMENSIONS,
				'size_units' => [ 'px', 'em', '%' ],
				'selectors' => [
					'{{WRAPPER}} .content_iso .text_iso.version_2 .title_2' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();
	}

	protected function render() {

		$settings 	= $this->get_settings_for_display();
		$tabs 		= $settings['tabs'];

		?>
	  	<div class="ova_isotope grid">
	  		<div class="grid-sizer"></div>
	  			<?php if( !empty( $tabs ) ) : ?>
					<?php 
					foreach( $tabs as $item ) { 
							
		                $title3 	 = $item['title3'] != '' ? esc_html( $item['title3'] ) : '';
                        $show_title  = $item['show_title'] != '' ? esc_html( $item['show_title'] ) : '';
                        $large_width = $item['large_width'] == 'no' ? '' : 'grid-item--width2';

                        $img_url = $item['desk_logo']['url'];
                        $img_id  = $item['desk_logo']['id'];
                        $img_alt = "";

                        if ( !empty( $img_id ) ) {
							$img_alt = get_post_meta( $img_id, '_wp_attachment_image_alt', true );
							if ( empty( $img_alt ) ) {
								$img_alt = get_the_title( $img_id );
							}
						}

						?>
						<div class="grid-item <?php echo ' '.$large_width; ?>">
						 	<div class="content_iso <?php echo esc_attr( $item['Background'] ); ?>">
								 
								 <img class="" src="<?php echo esc_url( $img_url ); ?>" alt="<?php echo esc_html( $img_alt ); ?>" />

								 <div class="text_iso <?php echo esc_attr( $item['version'] ); ?>">
									 
									 <div class="title_1">
									 	<?php echo esc_html__( $item['title'] ); ?>
									 </div>
									 
									 <div class="title_2">
									 	<?php echo esc_html__( $item['title2'] ); ?>
									 </div>

									 <?php if( $show_title == 'yes' ) { ?>
										 <div class="btn_iso">
										 	<a class="learn_more" href="<?php echo $item['link']['url']; ?>">
										 		<?php echo esc_html__( $title3 ); ?>
										 	</a>
										 </div>
									 <?php } ?>

								</div>
							</div>
						 
						</div> 
					<?php } ?>
				<?php endif; ?>
		</div>
		<?php
	}
	
}