HEX
Server: LiteSpeed
System: Linux server53.web-hosting.com 4.18.0-513.24.1.lve.1.el8.x86_64 #1 SMP Thu May 9 15:10:09 UTC 2024 x86_64
User: nahevttf (6494)
PHP: 8.0.30
Disabled: NONE
Upload Files
File: /home/nahevttf/public_html/wp-content/themes/woodmart/inc/modules/nav-menu-images/inc/walker.php
<?php
/**
 * Nav Menu Images Nav Menu Edit Walker
 *
 * @package Nav Menu Images
 * @subpackage Nav Menu Edit Walker
 */

/* Exit if accessed directly */
if ( ! defined( 'ABSPATH' ) ) exit;

/**
 * Filter nav menu items on edit screen.
 *
 * @since 1.0
 *
 * @uses Walker_Nav_Menu_Edit
 */
class NMI_Walker_Nav_Menu_Edit extends Walker_Nav_Menu_Edit {
	/**
	 * @see Walker_Nav_Menu_Edit::start_el()
	 * @since 1.0
	 * @access public
	 *
	 * @global $wp_version
	 * @uses Walker_Nav_Menu_Edit::start_el()
	 * @uses admin_url() To get URL of uploader.
	 * @uses esc_url() To escape URL.
	 * @uses add_query_arg() To append variables to URL.
	 * @uses esc_attr() To escape string.
	 * @uses has_post_thumbnail() To check if item has thumb.
	 * @uses get_the_post_thumbnail() To get item's thumb.
	 * @uses version_compare() To compare WordPress versions.
	 * @uses wp_create_nonce() To create item's nonce.
	 * @uses esc_html__() To translate & escape string.
	 * @uses esc_html() To escape string.
	 * @uses do_action_ref_array() Calls 'nmi_menu_item_walker_output' with the output.
	 *                        post object, depth and arguments to overwrite item's output.
	 * @uses NMI_Walker_Nav_Menu_Edit::get_settings() To get JSONed item's data.
	 * @uses do_action_ref_array() Calls 'nmi_menu_item_walker_end' with the output.
	 *                        post object, depth and arguments to overwrite item's output.
	 *
	 * @param string $output Passed by reference. Used to append additional content.
	 * @param object $item Menu item data object.
	 * @param int $depth Depth of menu item. Used for padding.
	 * @param array $args Not used.
	 * @param int $id Not used.
	 */
	public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
		global $wp_version;

		// First, make item with standard class
		parent::start_el( $output, $item, $depth, $args, $id );

		// Now add additional content
		$item_id = $item->ID;

		// Form upload link
		$upload_url = admin_url( 'media-upload.php' );
		$query_args = array(
			'post_id'   => $item_id,
			'tab'       => 'gallery',
			'TB_iframe' => '1',
			'width'     => '640',
			'height'    => '425'
		);
		$upload_url = esc_url( add_query_arg( $query_args, $upload_url ) );


		// Hidden field with item's ID
		$output .= '<input type="hidden" name="nmi_item_id" id="nmi_item_id" value="' . esc_attr( $item_id ) . '" />';

		$output .= '<div class="nmi-item-custom-fields">';

		$blocks = woodmart_get_static_blocks_array();

		ob_start();

		$design        = get_post_meta( $item_id, '_menu_item_design', true );
		$style_aside   = get_post_meta( $item_id, '_menu_item_style_aside', true );
		$width         = get_post_meta( $item_id, '_menu_item_width', true );
		$icon          = get_post_meta( $item_id, '_menu_item_icon', true );
		$height        = get_post_meta( $item_id, '_menu_item_height', true );
		$event         = get_post_meta( $item_id, '_menu_item_event', true );
		$label         = get_post_meta( $item_id, '_menu_item_label', true );
		$label_text    = get_post_meta( $item_id, '_menu_item_label-text', true );
		$block         = get_post_meta( $item_id, '_menu_item_block', true );
		$dropdown_ajax = get_post_meta( $item_id, '_menu_item_dropdown-ajax', true );
		$opanchor      = get_post_meta( $item_id, '_menu_item_opanchor', true );
		$color_scheme  = get_post_meta( $item_id, '_menu_item_colorscheme', true );
		$image_type    = get_post_meta( $item_id, '_menu_item_image-type', true );

		?>
			<h4 class="description-wide nmi-dropdown-title"><?php esc_html_e( 'Dropdown settings', 'woodmart' ); ?></h4>
			<p class="description description-wide nmi-design">
				<label for="edit-menu-item-design-<?php echo esc_attr( $item_id ); ?>">
					<?php esc_html_e( 'Design', 'woodmart' ); ?><br>
					<select id="edit-menu-item-design-<?php echo esc_attr( $item_id ); ?>" data-field="nmi-design" class="widefat" name="menu-item-design[<?php echo esc_attr( $item_id ); ?>]">
						<option value="default" <?php selected( $design, 'default' ); ?>><?php esc_html_e( 'Default', 'woodmart' ); ?></option>
						<option value="full-width" <?php selected( $design, 'full-width' ); ?>><?php esc_html_e( 'Full width', 'woodmart' ); ?></option>
						<option value="sized" <?php selected( $design, 'sized' ); ?>><?php esc_html_e( 'Set sizes', 'woodmart' ); ?></option>
						<option value="aside" <?php selected( $design, 'aside' ); ?>><?php esc_html_e( 'Aside', 'woodmart' ); ?></option>
					</select>
				</label>
			</p>
			<p class="description description-wide nmi-style-aside">
				<label for="edit-menu-item-style-aside-<?php echo esc_attr( $item_id ); ?>">
					<?php esc_html_e( 'Aside style', 'woodmart' ); ?><br>
					<select id="edit-menu-style-aside-<?php echo esc_attr( $item_id ); ?>" data-field="nmi-style-aside" class="widefat" name="menu-item-style_aside[<?php echo esc_attr( $item_id ); ?>]">
						<option value="default" <?php selected( $style_aside, 'default' ); ?>><?php esc_html_e( 'Default', 'woodmart' ); ?></option>
						<option value="with-bg" <?php selected( $style_aside, 'with-bg' ); ?>><?php esc_html_e( 'With background', 'woodmart' ); ?></option>
					</select>
				</label>
			</p>
			<p class="description description-thin nmi-width">
				<label for="edit-menu-item-width-<?php echo esc_attr( $item_id ); ?>">
					<?php esc_html_e( 'Dropdown width', 'woodmart' ); ?><br>
					<input type="number" id="edit-menu-item-width-<?php echo esc_attr( $item_id ); ?>" class="widefat" name="menu-item-width[<?php echo esc_attr( $item_id ); ?>]" value="<?php echo esc_attr( $width ); ?>">
				</label>
			</p>
			<p class="description description-thin nmi-height">
				<label for="edit-menu-item-height-<?php echo esc_attr( $item_id ); ?>">
					<?php esc_html_e( 'Dropdown height', 'woodmart' ); ?><br>
					<input type="number" id="edit-menu-item-height-<?php echo esc_attr( $item_id ); ?>" class="widefat" name="menu-item-height[<?php echo esc_attr( $item_id ); ?>]" value="<?php echo esc_attr( $height ); ?>">
				</label>
			</p>
			<p class="description description-wide nmi-block">
				<label for="edit-menu-item-block-<?php echo esc_attr( $item_id ); ?>">
					<?php esc_html_e( 'HTML Block for the dropdown', 'woodmart' ); ?><br>
					<select id="edit-menu-item-block-<?php echo esc_attr( $item_id ); ?>" class="widefat" name="menu-item-block[<?php echo esc_attr( $item_id ); ?>]">
						<option value="" <?php selected( $block, '' ); ?>><?php esc_html_e( 'None', 'woodmart' ); ?></option>
						<?php foreach ( $blocks as $title => $id ) : ?>
							<option value="<?php echo esc_attr( $id ); ?>" data-edit-link="<?php echo esc_url( admin_url( 'post.php?post=' . $id . '&action=edit' ) ); ?>" <?php selected( $block, $id ); ?>><?php echo esc_html( $title ); ?></option>
						<?php endforeach ?>
					</select>
					<?php echo wp_kses( woodmart_get_html_block_links(), true ); ?>
				</label>
			</p>
			<p class="description description-wide nmi-dropdown-ajax">
				<label for="edit-menu-item-dropdown-ajax-<?php echo esc_attr( $item_id ); ?>">
					<?php esc_html_e( 'Load HTML dropdown with AJAX', 'woodmart' ); ?><br>
					<select id="edit-menu-item-dropdown-ajax-<?php echo esc_attr( $item_id ); ?>" class="widefat" name="menu-item-dropdown-ajax[<?php echo esc_attr( $item_id ); ?>]">
						<option></option>
						<option value="yes" <?php selected( $dropdown_ajax, 'yes' ); ?>><?php esc_html_e( 'Yes', 'woodmart' ); ?></option>
						<option value="no" <?php selected( $dropdown_ajax, 'no' ); ?>><?php esc_html_e( 'No', 'woodmart' ); ?></option>
					</select>
				</label>
			</p>
			<p class="description description-wide nmi-color-scheme">
				<label for="edit-menu-item-colorscheme-<?php echo esc_attr( $item_id ); ?>">
					<?php esc_html_e( 'Dropdown text color scheme', 'woodmart' ); ?><br>
					<select id="edit-menu-item-colorscheme-<?php echo esc_attr( $item_id ); ?>" class="widefat" name="menu-item-colorscheme[<?php echo esc_attr( $item_id ); ?>]">
						<option value=""></option>
						<option value="light" <?php selected( $color_scheme, 'light' ); ?>><?php esc_html_e( 'Light', 'woodmart' ); ?></option>
						<option value="dark" <?php selected( $color_scheme, 'dark' ); ?>><?php esc_html_e( 'Dark', 'woodmart' ); ?></option>
					</select>
				</label>
			</p>
			<p class="description description-wide nmi-event">
				<label for="edit-menu-item-event-<?php echo esc_attr( $item_id ); ?>">
					<?php esc_html_e( 'Open on mouse event', 'woodmart' ); ?><br>
					<select id="edit-menu-item-event-<?php echo esc_attr( $item_id ); ?>" class="widefat" name="menu-item-event[<?php echo esc_attr( $item_id ); ?>]">
						<option value="hover" <?php selected( $event, 'hover' ); ?>><?php esc_html_e( 'Hover', 'woodmart' ); ?></option>
						<option value="click" <?php selected( $event, 'click' ); ?>><?php esc_html_e( 'Click', 'woodmart' ); ?></option>
					</select>
				</label>
			</p>

			<h4 class="description-wide"><?php esc_html_e( 'Label settings', 'woodmart' ); ?></h4>
			<p class="description description-thin nmi-label-text">
				<label for="edit-menu-item-label-text-<?php echo esc_attr( $item_id ); ?>">
					<?php esc_html_e( 'Label text', 'woodmart' ); ?><br>
					<input type="text" id="edit-menu-item-label-text-<?php echo esc_attr( $item_id ); ?>" class="widefat" name="menu-item-label-text[<?php echo esc_attr( $item_id ); ?>]" value="<?php echo esc_attr( $label_text ); ?>">
				</label>
			</p>
			<p class="description description-thin nmi-label">
				<label for="edit-menu-item-label-<?php echo esc_attr( $item_id ); ?>">
					<?php esc_html_e( 'Label color', 'woodmart' ); ?><br>
					<select id="edit-menu-item-label-<?php echo esc_attr( $item_id ); ?>" class="widefat" name="menu-item-label[<?php echo esc_attr( $item_id ); ?>]">
						<option value=""></option>
						<option value="primary" <?php selected( $label, 'primary' ); ?>><?php esc_html_e( 'Primary Color', 'woodmart' ); ?></option>
						<option value="secondary" <?php selected( $label, 'secondary' ); ?>><?php esc_html_e( 'Secondary', 'woodmart' ); ?></option>
						<option value="red" <?php selected( $label, 'red' ); ?>><?php esc_html_e( 'Red', 'woodmart' ); ?></option>
						<option value="green" <?php selected( $label, 'green' ); ?>><?php esc_html_e( 'Green', 'woodmart' ); ?></option>
						<option value="blue" <?php selected( $label, 'blue' ); ?>><?php esc_html_e( 'Blue', 'woodmart' ); ?></option>
						<option value="orange" <?php selected( $label, 'orange' ); ?>><?php esc_html_e( 'Orange', 'woodmart' ); ?></option>
						<option value="grey" <?php selected( $label, 'grey' ); ?>><?php esc_html_e( 'Grey', 'woodmart' ); ?></option>
						<option value="black" <?php selected( $label, 'black' ); ?>><?php esc_html_e( 'Black', 'woodmart' ); ?></option>
						<option value="white" <?php selected( $label, 'white' ); ?>><?php esc_html_e( 'White', 'woodmart' ); ?></option>
					</select>
				</label>
			</p>

			<h4 class="description-wide"><?php esc_html_e( 'Image settings', 'woodmart' ); ?></h4>
			<p class="description description-wide nmi-image-type">
				<label for="edit-menu-item-image-type-<?php echo esc_attr( $item_id ); ?>">
					<?php esc_html_e( 'Use image as', 'woodmart' ); ?><br>
					<select id="edit-menu-item-image-type-<?php echo esc_attr( $item_id ); ?>" class="widefat" name="menu-item-image-type[<?php echo esc_attr( $item_id ); ?>]">
						<option value="background" <?php selected( $image_type, 'background', true ); ?>>
							<?php esc_html_e( 'Dropdown background', 'woodmart' ); ?>
						</option>
						<option value="image" <?php selected( $image_type, 'image', true ); ?>>
							<?php esc_html_e( 'Menu item icon', 'woodmart' ); ?>
						</option>
					</select>
				</label>
			</p>
			<?php if ( has_post_thumbnail( $item_id ) ) : ?>
				<?php $link_text = esc_html__( 'Change image', 'woodmart' ); ?>
				<div class="nmi-current-image nmi-div nmi-change-image" style="display: none;">
					<a href="<?php echo esc_url( $upload_url ); ?>" data-id="<?php echo esc_attr( $item_id ); ?>" class="thickbox add_media link-with-image">
						<?php echo get_the_post_thumbnail( $item_id, 'thumb' ); ?>
					</a>
				</div>
			<?php else : ?>
				<?php $link_text = esc_html__( 'Upload image', 'woodmart' ); ?>
				<div class="nmi-current-image nmi-div nmi-upload-image" style="display: none;"></div>
			<?php endif; ?>

			<div class="nmi-upload-link nmi-div" style="display: none;">
				<a href="<?php echo esc_url( $upload_url ); ?>" data-id="<?php echo esc_attr( $item_id ); ?>" class="thickbox add_media">
					<?php echo esc_html( $link_text ); ?>
				</a>
				<?php if ( has_post_thumbnail( $item_id ) && version_compare( $wp_version, '3.5', '>=' ) ) : ?>
					|
					<a href="#" data-id="<?php echo esc_attr( $item_id ); ?>" class="nmi_remove" onclick="NMIRemoveThumbnail('<?php echo esc_attr( wp_create_nonce( 'set_post_thumbnail-' . $item_id ) ); ?>','<?php echo esc_attr( $item_id ); ?>');return false;">
						<?php echo esc_html__( 'Remove image', 'woodmart' ); ?>
					</a>
				<?php endif; ?>
			</div>
			<p class="description description-wide nmi-icon">
				<label for="edit-menu-item-height-<?php echo esc_attr( $item_id ); ?>">
					<?php esc_html_e( 'Icon name (from FontAwesome set)', 'woodmart' ); ?><br>
					<input type="text" id="edit-menu-item-icon-<?php echo esc_attr( $item_id ); ?>" class="widefat" name="menu-item-icon[<?php echo esc_attr( $item_id ); ?>]" value="<?php echo esc_attr( $icon ); ?>">
				</label>
				<span class="description"><?php esc_html_e( 'The name of icon from Font Awesome 5 list. For example:', 'woodmart' ); ?> <code>envelope-open fas</code></span>
			</p>

			<h4 class="description-wide"><?php esc_html_e( 'Page anchor (for one-page menu)', 'woodmart' ); ?></h4>
			<p class="description description-wide nmi-opanchor">
				<label for="edit-menu-item-opanchor-<?php echo esc_attr( $item_id ); ?>">
					<select id="edit-menu-item-opanchor-<?php echo esc_attr( $item_id ); ?>" class="widefat" name="menu-item-opanchor[<?php echo esc_attr( $item_id ); ?>]">
						<option value=""></option>
						<option value="enable" <?php selected( $opanchor, 'enable' ); ?>><?php esc_html_e( 'Enable', 'woodmart' ); ?></option>
						<option value="disable" <?php selected( $opanchor, 'disable' ); ?>><?php esc_html_e( 'Disable', 'woodmart' ); ?></option>
					</select>
					<span class="description"><?php esc_html_e( 'Enable this to use one page navigation menu. If enabled you need to set the link for this item to be like this: http://your_site.com/home_page/#anchor_id where anchor_id will be the ID of the ROW on your home page.', 'woodmart' ); ?></span>
				</label>
			</p>

			<h4 class="description-wide"><?php esc_html_e( 'Extra options', 'woodmart' ); ?></h4>
		<?php
		$output .= ob_get_contents();
		ob_end_clean();

		$output .= '</div><!-- .nmi-item-custom-fields -->';

		// Filter output
		do_action_ref_array( 'nmi_menu_item_walker_output', array( &$output, $item, $depth, $args ) );

		// Add JSONed meta data
		$output .= $this->get_settings( $item_id );

		do_action_ref_array( 'nmi_menu_item_walker_end', array( &$output, $item, $depth, $args ) );
	}

	/**
	 * Get JSONed item's data.
	 *
	 * Heavily based on wp_enqueue_media() and
	 * WP_Scripts::localize()
	 *
	 * @see wp_enqueue_media()
	 * @see WP_Scripts::localize()
	 *
	 * @since 2.0
	 * @access public
	 *
	 * @uses version_compare() To compare WordPress versions.
	 * @uses wp_create_nonce() To create item's nonce.
	 * @uses get_post() To get post's object.
	 * @uses get_post_meta() To get post's meta data.
	 * @uses apply_filters() Calls 'media_view_settings' with the settings
	 *                        and post object to overwrite item's settings.
	 * @uses did_action() To check if action was done.
	 * @uses do_action() Calls 'nmi_setup_settings_var' with the item ID.
	 *
	 * @param int $post_id The item's post ID.
	 * @return string New HTML output.
	 */
	public function get_settings( $post_id ) {
		global $wp_version;

		// Only works for WP 3.5+
		if ( ! version_compare( $wp_version, '3.5', '>=' ) )
			return;

		// Prepare general settings
		$settings = array();

		// Prepare post specific settings
		$post = null;
		if ( isset( $post_id ) ) {
			$post = get_post( $post_id );
			$settings['post'] = array(
				'id' => $post->ID,
				'nonce' => wp_create_nonce( 'update-post_' . $post->ID ),
			);

			$featured_image_id = get_post_meta( $post->ID, '_thumbnail_id', true );
			$settings['post']['featuredImageId'] = $featured_image_id ? $featured_image_id : -1;
			$settings['post']['featuredExisted'] = $featured_image_id ? 1 : -1;
		}

		// Filter item's settins
		$settings = apply_filters( 'media_view_settings', $settings, $post );

		// Prepare Javascript varible name
		$object_name = 'nmi_settings[' . $post->ID . ']';

		// Loop through each setting and prepare it for JSON
		foreach ( (array) $settings as $key => $value ) {
			if ( ! is_scalar( $value ) )
				continue;

			$settings[$key] = html_entity_decode( (string) $value, ENT_QUOTES, 'UTF-8' );
		}

		// Encode settings to JSON
		$script = "$object_name = " . json_encode( $settings ) . ';';

		// If this is first item, register variable
		if ( ! did_action( 'nmi_setup_settings_var' ) ) {
			$script = "var nmi_settings = [];\n" . $script;
			do_action( 'nmi_setup_settings_var', $post->ID );
		}

		// Wrap everythig
		$output = "<script>\n";
		$output .= "/* <![CDATA[ */\n";
		$output .= "$script\n";
		$output .= "/* ]]> */\n";
		$output .= "</script>\n";

		return $output;
	}
}