HEX
Server: LiteSpeed
System: Linux linux31.centraldnserver.com 4.18.0-553.83.1.lve.el8.x86_64 #1 SMP Wed Nov 12 10:04:12 UTC 2025 x86_64
User: salamatk (1501)
PHP: 8.1.33
Disabled: show_source, system, shell_exec, passthru, exec, popen, proc_open
Upload Files
File: /home/salamatk/takarzan.ir/wp-content/themes/xts-luman/templates/elementor/infobox.php
<?php
/**
 * Infobox template functions
 *
 * @package xts
 */

use XTS\Framework\Modules;

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Direct access not allowed.
}

if ( ! function_exists( 'xts_infobox_template' ) ) {
	/**
	 * Infobox template
	 *
	 * @since 1.0.0
	 *
	 * @param array $element_args Associative array of arguments.
	 */
	function xts_infobox_template( $element_args ) {
		$default_args = array(
			// General.
			'infobox_link'                   => array(
				'url' => '',
			),

			// Icon.
			'icon_type'                      => 'icon',
			'icon_size'                      => 'm',
			'icon'                           => '',
			'text_icon'                      => '',
			'image'                          => '',
			'image_custom_dimension'         => '',

			// Text.
			'title'                          => '',
			'subtitle'                       => '',
			'description'                    => '',

			// General.
			'content_align'                  => 'center',
			'infobox_color_scheme_switcher'  => 'no',
			'infobox_color_scheme'           => 'inherit',
			'infobox_color_scheme_hover'     => 'inherit',
			'infobox_shadow_switcher'        => 'no',
			'infobox_background_switcher'    => 'no',
			'infobox_border_switcher'        => 'no',

			// Icon.
			'icon_position'                  => 'top',
			'icon_vertical_position'         => 'start',
			'icon_shape'                     => 'square',
			'icon_border_color_switcher'     => 'no',
			'icon_background_color_switcher' => 'no',
			'icon_color_switcher'            => 'no',

			// Title.
			'title_text_size'                => 'm',
			'title_color_presets'            => 'default',
			'title_tag'                      => 'h4',

			// Subtitle.
			'subtitle_text_size'             => 's',
			'subtitle_color_presets'         => 'default',

			// Description.
			'description_text_size'          => 'default',
			'description_color_presets'      => 'default',

			// Extra.
			'index'                          => '',
			'source'                         => '',
			'lazy_loading'                   => 'no',
			'extra_wrapper_classes'          => '',

			// Header builder.
			'without_title_spacing'          => '',
			'header_builder'                 => 'no',
		);

		$element_args = wp_parse_args( $element_args, $default_args );

		$wrapper_classes     = '';
		$icon_classes        = '';
		$title_classes       = '';
		$subtitle_classes    = '';
		$description_classes = '';
		$icon_output         = '';
		$onclick             = '';

		// Wrapper classes.
		$wrapper_classes .= ' xts-textalign-' . $element_args['content_align'];
		$wrapper_classes .= ' xts-icon-' . $element_args['icon_position'];
		if ( 'side' === $element_args['icon_position'] ) {
			$wrapper_classes .= ' xts-items-' . $element_args['icon_vertical_position'];
		}
		if ( 'yes' === $element_args['infobox_color_scheme_switcher'] ) {
			if ( 'inherit' !== $element_args['infobox_color_scheme'] ) {
				$wrapper_classes .= ' xts-scheme-' . $element_args['infobox_color_scheme'];
			}
			if ( 'inherit' !== $element_args['infobox_color_scheme_hover'] ) {
				$wrapper_classes .= ' xts-scheme-hover-' . $element_args['infobox_color_scheme_hover'];
			}
		}
		if ( 'yes' === $element_args['infobox_background_switcher'] ) {
			$wrapper_classes .= ' xts-with-bg-color';
		}
		if ( 'yes' === $element_args['infobox_shadow_switcher'] ) {
			$wrapper_classes .= ' xts-with-shadow';
		}
		if ( 'yes' === $element_args['infobox_border_switcher'] ) {
			$wrapper_classes .= ' xts-with-border';
		}
		if ( $element_args['extra_wrapper_classes'] ) {
			$wrapper_classes .= ' ' . $element_args['extra_wrapper_classes'];
		}

		// Header builder.
		if ( $element_args['without_title_spacing'] ) {
			$wrapper_classes .= ' xts-without-spacing';
		}

		// Icon classes.
		$icon_classes .= ' xts-type-' . $element_args['icon_type'];
		if ( 'yes' === $element_args['icon_border_color_switcher'] ) {
			$icon_classes .= ' xts-with-brd-color';
		}
		if ( 'yes' === $element_args['icon_background_color_switcher'] ) {
			$icon_classes .= ' xts-with-bg-color';
		}
		if ( 'yes' === $element_args['icon_color_switcher'] ) {
			$icon_classes .= ' xts-with-color';
		}
		if ( $element_args['icon_size'] ) {
			$icon_classes .= ' xts-size-' . $element_args['icon_size'];
		}
		if ( $element_args['icon_shape'] ) {
			$icon_classes .= ' xts-shape-' . $element_args['icon_shape'];
		}

		// Title classes.
		if ( xts_elementor_is_edit_mode() ) {
			$title_classes .= ' elementor-inline-editing';
		}
		if ( 'default' !== $element_args['title_color_presets'] ) {
			$title_classes .= ' xts-textcolor-' . $element_args['title_color_presets'];
		}
		if ( 'default' !== $element_args['title_text_size'] ) {
			if ( 'yes' === $element_args['header_builder'] ) {
				$title_classes .= ' xts-header-fontsize-' . $element_args['title_text_size'];
			} else {
				$title_classes .= ' xts-fontsize-' . $element_args['title_text_size'];
			}
		}

		// Subtitle classes.
		if ( xts_elementor_is_edit_mode() ) {
			$subtitle_classes .= ' elementor-inline-editing';
		}
		if ( 'default' !== $element_args['subtitle_color_presets'] ) {
			$subtitle_classes .= ' xts-textcolor-' . $element_args['subtitle_color_presets'];
		}
		if ( 'default' !== $element_args['subtitle_text_size'] ) {
			if ( 'yes' === $element_args['header_builder'] ) {
				$subtitle_classes .= ' xts-header-fontsize-' . $element_args['subtitle_text_size'];
			} else {
				$subtitle_classes .= ' xts-fontsize-' . $element_args['subtitle_text_size'];
			}
		}

		// Description classes.
		if ( xts_elementor_is_edit_mode() ) {
			$description_classes .= ' elementor-inline-editing';
		}
		if ( 'default' !== $element_args['description_color_presets'] ) {
			$description_classes .= ' xts-textcolor-' . $element_args['description_color_presets'];
		}
		if ( 'default' !== $element_args['description_text_size'] ) {
			if ( 'yes' === $element_args['header_builder'] ) {
				$description_classes .= ' xts-header-fontsize-' . $element_args['description_text_size'];
			} else {
				$description_classes .= ' xts-fontsize-' . $element_args['description_text_size'];
			}
		}

		// Lazy loading.
		$lazy_module = Modules::get( 'lazy-loading' );
		if ( 'yes' === $element_args['lazy_loading'] ) {
			$lazy_module->lazy_init( true );
		} elseif ( 'no' === $element_args['lazy_loading'] ) {
			$lazy_module->lazy_disable( true );
		}

		// Icon settings.
		$custom_image_size = isset( $element_args['image_custom_dimension']['width'] ) && $element_args['image_custom_dimension']['width'] ? $element_args['image_custom_dimension'] : array(
			'width'  => 128,
			'height' => 128,
		);

		if ( 'image' === $element_args['icon_type'] && $element_args['image'] ) {
			$icon_output = xts_get_image_html( $element_args, 'image' );

			if ( xts_is_svg( $element_args['image']['url'] ) ) {
				$style_attr = ' style="width:' . esc_attr( $custom_image_size['width'] ) . 'px; height:' . esc_attr( $custom_image_size['height'] ) . 'px;"';

				if ( 'yes' === $element_args['icon_color_switcher'] ) {
					$icon_output = xts_get_svg( '', '', xts_get_image_url( $element_args['image']['id'], 'image', $element_args ) );
				} else {
					$icon_output = xts_get_svg_html( $element_args['image']['id'], 'custom' === $element_args['image_size'] ? $custom_image_size : $element_args['image_size'] );
				}

				$icon_output = '<span class="xts-image-type-svg" ' . $style_attr . '>' . $icon_output . '</span>';
			}
		} elseif ( 'text' === $element_args['icon_type'] ) {
			$icon_output = $element_args['text_icon'];
		} elseif ( 'icon' === $element_args['icon_type'] && $element_args['icon'] ) {
			$icon_output = xts_elementor_get_render_icon( $element_args['icon'] );
		}

		// Link settings.
		if ( isset( $element_args['infobox_link']['url'] ) && $element_args['infobox_link']['url'] && ! xts_elementor_is_edit_mode() ) {
			$wrapper_classes .= ' xts-cursor-pointer';

			$element_args['button_link']['url'] = $element_args['infobox_link']['url'];

			if ( 'on' === $element_args['infobox_link']['is_external'] ) {
				$onclick = 'window.open("' . esc_url( $element_args['infobox_link']['url'] ) . '","_blank")';
			} else {
				$onclick = 'window.location.href="' . esc_url( $element_args['infobox_link']['url'] ) . '"';
			}
		}

		// Inline editing.
		$inline_editing_key = '';
		if ( 'carousel' === $element_args['source'] ) {
			$inline_editing_key = 'content_repeater.' . $element_args['index'] . '.';
		}
		$element_args['inline_editing_key'] = $inline_editing_key;

		?>

		<div class="xts-infobox<?php echo esc_attr( $wrapper_classes ); ?>" onclick="<?php echo esc_js( $onclick ); ?>">
			<?php if ( $icon_output ) : ?>
				<div class="xts-box-icon-wrapper">
					<div class="xts-box-icon<?php echo esc_attr( $icon_classes ); ?>">
						<?php echo xts_wp_kses_media( $icon_output ); // phpcs:ignore ?>
					</div>
				</div>
			<?php endif; ?>

			<div class="xts-box-content xts-reset-mb-10 xts-reset-all-last">
				<?php if ( $element_args['subtitle'] ) : ?>
					<div class="xts-box-subtitle<?php echo esc_attr( $subtitle_classes ); ?>" data-elementor-setting-key="<?php echo esc_attr( $inline_editing_key ); ?>subtitle">
						<?php echo wp_kses( $element_args['subtitle'], xts_get_allowed_html() ); ?>
					</div>
				<?php endif; ?>

				<?php if ( $element_args['title'] ) : ?>
					<<?php echo esc_attr( $element_args['title_tag'] ); ?> class="xts-box-title title<?php echo esc_attr( $title_classes ); ?>" data-elementor-setting-key="<?php echo esc_attr( $inline_editing_key ); ?>title">
						<?php echo wp_kses( $element_args['title'], xts_get_allowed_html() ); ?>
					</<?php echo esc_attr( $element_args['title_tag'] ); ?>>
				<?php endif; ?>

				<?php if ( $element_args['description'] ) : ?>
					<div class="xts-box-desc<?php echo esc_attr( $description_classes ); ?>" data-elementor-setting-key="<?php echo esc_attr( $inline_editing_key ); ?>description">
						<?php echo do_shortcode( $element_args['description'] ); ?>
					</div>
				<?php endif; ?>

				<?php if ( $element_args['button_text'] ) : ?>
					<?php xts_button_template( $element_args ); ?>
				<?php endif; ?>
			</div>

			<?php if ( 'no' === $element_args['header_builder'] ) : ?>
				<div class="xts-box-overlay xts-fill"></div>
			<?php endif; ?>
		</div>

		<?php

		// Lazy loading.
		if ( 'yes' === $element_args['lazy_loading'] ) {
			$lazy_module->lazy_disable( true );
		} elseif ( 'no' === $element_args['lazy_loading'] ) {
			$lazy_module->lazy_init();
		}
	}
}

if ( ! function_exists( 'xts_infobox_carousel_template' ) ) {
	/**
	 * Infobox carousel template
	 *
	 * @since 1.0.0
	 *
	 * @param array $element_args Associative array of arguments.
	 */
	function xts_infobox_carousel_template( $element_args ) {
		$default_args = array(
			'content_repeater'             => array(),

			// Carousel.
			'carousel_items'               => array( 'size' => 3 ),
			'carousel_items_tablet'        => array( 'size' => 2 ),
			'carousel_items_mobile'        => array( 'size' => 1 ),
			'carousel_spacing'             => xts_get_default_value( 'items_gap' ),

			// Extra.
			'animation_in_view'            => 'no',
			'xts_animation_items'          => '',
			'xts_animation_duration_items' => 'normal',
			'xts_animation_delay_items'    => '',
		);

		$element_args = wp_parse_args( $element_args, $default_args );

		$wrapper_classes = '';
		$column_classes  = '';

		// Wrapper classes.
		$wrapper_classes .= xts_get_row_classes( $element_args['carousel_items']['size'], $element_args['carousel_items_tablet']['size'], $element_args['carousel_items_mobile']['size'], $element_args['carousel_spacing'] );
		$wrapper_classes .= xts_get_carousel_classes( $element_args );

		if ( 'yes' === $element_args['animation_in_view'] ) {
			xts_enqueue_js_library( 'waypoints' );
			xts_enqueue_js_script( 'items-animation-in-view' );
			$wrapper_classes .= ' xts-in-view-animation';
		}
		$wrapper_classes .= ' xts-autoplay-animations-off';

		// Animations.
		if ( 'yes' === $element_args['animation_in_view'] && $element_args['xts_animation_items'] ) {
			$column_classes .= ' xts-animation-' . $element_args['xts_animation_items'];
			$column_classes .= ' xts-animation-' . $element_args['xts_animation_duration_items'];
		}

		?>

		<div class="xts-infobox-carousel<?php echo esc_attr( $wrapper_classes ); ?>" <?php echo xts_get_carousel_atts( $element_args ); // phpcs:ignore ?> data-animation-delay="<?php echo esc_attr( $element_args['xts_animation_delay_items'] ); ?>">
			<?php foreach ( $element_args['content_repeater'] as $index => $infobox ) : ?>
				<?php
				$column_classes_loop = '';
				$infobox             = $infobox + $element_args;
				$infobox['index']    = $index;
				$infobox['source']   = 'carousel';

				$column_classes_loop .= ' elementor-repeater-item-' . $infobox['_id'];

				?>

				<div class="xts-col<?php echo esc_attr( $column_classes . $column_classes_loop ); ?>">
					<?php xts_infobox_template( $infobox ); ?>
				</div>
			<?php endforeach; ?>
		</div>

		<?php
	}
}