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/framework/includes/widgets/class-menu.php
<?php
/**
 * Image widget class.
 *
 * @package xts
 */

namespace XTS\Widget;

use XTS\Module\Mega_Menu\Walker;
use XTS\Widget_Base;

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

/**
 * Menu widget class.
 */
class Menu extends Widget_Base {
	/**
	 * Constructor.
	 */
	public function __construct() {
		$args = array(
			'label'       => esc_html__( '[XTemos] Mega menu', 'xts-theme' ),
			'description' => esc_html__( 'Display any mega menu built in Appearance - Menus.', 'xts-theme' ),
			'slug'        => 'xts-widget-mega-menu',
			'fields'      => array(
				array(
					'id'   => 'title',
					'type' => 'text',
					'name' => esc_html__( 'Title', 'xts-theme' ),
				),

				array(
					'id'      => 'menu',
					'type'    => 'dropdown',
					'name'    => esc_html__( 'Select menu', 'xts-theme' ),
					'fields'  => xts_get_menus_array( 'widget' ),
					'default' => '',
				),

				array(
					'id'      => 'design',
					'type'    => 'dropdown',
					'name'    => esc_html__( 'Design', 'xts-theme' ),
					'fields'  => xts_get_available_options( 'menu_orientation_widget' ),
					'default' => 'horizontal',
				),

				array(
					'id'      => 'style',
					'type'    => 'dropdown',
					'name'    => esc_html__( 'Style', 'xts-theme' ),
					'fields'  => xts_get_available_options( 'menu_style_widget' ),
					'default' => 'default',
				),

				array(
					'id'      => 'color_scheme',
					'type'    => 'dropdown',
					'name'    => esc_html__( 'Color scheme', 'xts-theme' ),
					'fields'  => array(
						esc_html__( 'Dark', 'xts-theme' )  => 'dark',
						esc_html__( 'Light', 'xts-theme' ) => 'light',
					),
					'default' => 'dark',
				),

				array(
					'id'      => 'align',
					'type'    => 'dropdown',
					'name'    => esc_html__( 'Alignment', 'xts-theme' ),
					'fields'  => array(
						esc_html__( 'Inherit', 'xts-theme' ) => 'inherit',
						esc_html__( 'Left', 'xts-theme' )  => 'left',
						esc_html__( 'Center', 'xts-theme' ) => 'center',
						esc_html__( 'Right', 'xts-theme' ) => 'right',
					),
					'default' => 'left',
				),

				array(
					'id'      => 'items_gap',
					'type'    => 'dropdown',
					'name'    => esc_html__( 'Items gap', 'xts-theme' ),
					'fields'  => array(
						esc_html__( 'Small', 'xts-theme' ) => 's',
						esc_html__( 'Medium', 'xts-theme' ) => 'm',
						esc_html__( 'Large', 'xts-theme' ) => 'l',
					),
					'default' => 's',
				),
			),
		);

		$this->create_widget( $args );
	}

	/**
	 * Output widget.
	 *
	 * @param array $args     Arguments.
	 * @param array $instance Widget instance.
	 */
	public function widget( $args, $instance ) {
		if ( $this->is_widget_preview() ) {
			return;
		}

		echo wp_kses( $args['before_widget'], 'xts_widget' );

		$default_args = array(
			'title'        => '',
			'menu'         => '',
			'align'        => 'left',
			'style'        => 'default',
			'design'       => 'horizontal',
			'color_scheme' => 'dark',
			'items_gap'    => 's',
		);

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

		$container_classes = '';
		$menu_classes      = '';

		// Menu classes.
		$menu_classes .= ' xts-style-' . $instance['style'];
		$menu_classes .= ' xts-design-' . $instance['design'];

		if ( 'vertical' === $instance['design'] ) {
			$menu_classes .= ' xts-direction-v';
		} else {
			$menu_classes .= ' xts-gap-' . $instance['items_gap'];
			$menu_classes .= ' xts-direction-h';
			if ( 'dark' !== $instance['color_scheme'] ) {
				$menu_classes .= ' xts-nav-scheme-' . $instance['color_scheme'];
			}

			// Container classes.
			if ( 'inherit' !== $instance['align'] ) {
				$container_classes .= ' xts-textalign-' . $instance['align'];
			}
		}

		if ( 'vertical' === $instance['design'] && $instance['title'] ) {
			?>
				<div class="xts-mega-title">
					<?php echo esc_html( $instance['title'] ); ?>
				</div>
			<?php
		} elseif ( isset( $instance['title'] ) && $instance['title'] ) {
				echo wp_kses( $args['before_title'], 'xts_widget' ) . $instance['title'] . wp_kses( $args['after_title'], 'xts_widget' ); // phpcs:ignore

		}

		if ( wp_get_nav_menu_object( $instance['menu'] ) ) {
			wp_nav_menu(
				array(
					'theme_location'  => '',
					'menu'            => $instance['menu'],
					'container_class' => 'xts-mega-menu xts-nav-wrapper' . esc_attr( $container_classes ),
					'menu_class'      => 'menu xts-nav xts-nav-mega ' . esc_attr( $menu_classes ),
					'walker'          => new Walker( $instance['style'] ),
				)
			);
		}

		echo wp_kses( $args['after_widget'], 'xts_widget' );
	}
}