<?php

add_action('wp_nav_menu_item_custom_fields', function($item_id, $item) {
	$show_as_megamenu = get_post_meta($item_id, '_show-as-megamenu', true);
	?>
<p style="display: none;" class="show-as-megamenu description description-wide">
  <label for="show-as-megamenu-<?php echo $item_id; ?>">
    <input type="checkbox" id="show-as-megamenu-<?php echo $item_id; ?>"
      name="show-as-megamenu[<?php echo $item_id; ?>]"
      <?php checked($show_as_megamenu, true); ?> /><?php _e('Zobraziť ako mega menu', 'inoby'); ?>
  </label>
</p>
<?php
}, 10, 2);

add_action('wp_update_nav_menu_item', function($menu_id, $menu_item_db_id) {
	$megamenu_value = (isset($_POST['show-as-megamenu'][$menu_item_db_id]) && $_POST['show-as-megamenu'][$menu_item_db_id] == 'on') ? true : false;
	update_post_meta($menu_item_db_id, '_show-as-megamenu', $megamenu_value);
}, 10, 2);

add_filter('nav_menu_css_class', function($classes, $menu_item) {
	$show_as_megamenu = get_post_meta($menu_item->ID, '_show-as-megamenu', true);
	if ($show_as_megamenu) {
		$classes[] = 'menu-item-megamenu';
	}
	return $classes;
}, 10, 2);

add_action('wp_nav_menu_item_custom_fields', function($item_id, $item) {
	$megamenu_column_2 = get_post_meta($item_id, '_megamenu-column-2', true);
	$megamenu_column_3 = get_post_meta($item_id, '_megamenu-column-3', true);
	$megamenu_column_4 = get_post_meta($item_id, '_megamenu-column-4', true);
	$megamenu_column_5 = get_post_meta($item_id, '_megamenu-column-5', true);
	?>
<p style="display: none;" class="megamenu-column description description-wide">
  <label for="menu-item-megamenu-column-2-<?php echo $item_id; ?>">
    <input type="checkbox" id="menu-item-megamenu-column-2-<?php echo $item_id; ?>"
      name="menu-item-megamenu-column-2[<?php echo $item_id; ?>]"
      <?php checked($megamenu_column_2, true); ?> /><?php _e('2 stĺpce', 'inoby'); ?>
  </label>
  <label for="menu-item-megamenu-column-3-<?php echo $item_id; ?>">
    <input type="checkbox" id="menu-item-megamenu-column-3-<?php echo $item_id; ?>"
      name="menu-item-megamenu-column-3[<?php echo $item_id; ?>]"
      <?php checked($megamenu_column_3, true); ?> /><?php _e('3 stĺpce', 'inoby'); ?>
  </label>
  <label for="menu-item-megamenu-column-4-<?php echo $item_id; ?>">
    <input type="checkbox" id="menu-item-megamenu-column-4-<?php echo $item_id; ?>"
      name="menu-item-megamenu-column-4[<?php echo $item_id; ?>]"
      <?php checked($megamenu_column_4, true); ?> /><?php _e('4 stĺpce', 'inoby'); ?>
  </label>
  <label for="menu-item-megamenu-column-5-<?php echo $item_id; ?>">
    <input type="checkbox" id="menu-item-megamenu-column-5-<?php echo $item_id; ?>"
      name="menu-item-megamenu-column-5[<?php echo $item_id; ?>]"
      <?php checked($megamenu_column_5, true); ?> /><?php _e('5 stĺpcov', 'inoby'); ?>
  </label>
</p>
<?php
}, 10, 2);

add_action('wp_update_nav_menu_item', function($menu_id, $menu_item_db_id) {
	$megamenu_value_2 = (isset($_POST['menu-item-megamenu-column-2'][$menu_item_db_id]) && $_POST['menu-item-megamenu-column-2'][$menu_item_db_id] == 'on') ? true : false;
	update_post_meta($menu_item_db_id, '_megamenu-column-2', $megamenu_value_2);
}, 10, 2);
add_action('wp_update_nav_menu_item', function($menu_id, $menu_item_db_id) {
	$megamenu_value_3 = (isset($_POST['menu-item-megamenu-column-3'][$menu_item_db_id]) && $_POST['menu-item-megamenu-column-3'][$menu_item_db_id] == 'on') ? true : false;
	update_post_meta($menu_item_db_id, '_megamenu-column-3', $megamenu_value_3);
}, 10, 2);
add_action('wp_update_nav_menu_item', function($menu_id, $menu_item_db_id) {
	$megamenu_value_4 = (isset($_POST['menu-item-megamenu-column-4'][$menu_item_db_id]) && $_POST['menu-item-megamenu-column-4'][$menu_item_db_id] == 'on') ? true : false;
	update_post_meta($menu_item_db_id, '_megamenu-column-4', $megamenu_value_4);
}, 10, 2);
add_action('wp_update_nav_menu_item', function($menu_id, $menu_item_db_id) {
	$megamenu_value_5 = (isset($_POST['menu-item-megamenu-column-5'][$menu_item_db_id]) && $_POST['menu-item-megamenu-column-5'][$menu_item_db_id] == 'on') ? true : false;
	update_post_meta($menu_item_db_id, '_megamenu-column-5', $megamenu_value_5);
}, 10, 2);

add_filter('nav_menu_css_class', function($classes, $menu_item) {
	$megamenu_column_2 = get_post_meta($menu_item->ID, '_megamenu-column-2', true);
	$megamenu_column_3 = get_post_meta($menu_item->ID, '_megamenu-column-3', true);
	$megamenu_column_4 = get_post_meta($menu_item->ID, '_megamenu-column-4', true);
	$megamenu_column_5 = get_post_meta($menu_item->ID, '_megamenu-column-5', true);
	if ($megamenu_column_2) {
		$classes[] = 'menu-item-megamenu-column-2';
	}
	if ($megamenu_column_3) {
		$classes[] = 'menu-item-megamenu-column-3';
	}
	if ($megamenu_column_4) {
		$classes[] = 'menu-item-megamenu-column-4';
	}
  if ($megamenu_column_5) {
		$classes[] = 'menu-item-megamenu-column-5';
	}
	return $classes;
}, 10, 2);

function inoby_megamenu_item_custom_fields( $item_id, $item ) {
  $menu_item_icon = esc_attr(get_post_meta( $item_id, '_menu_item_icon', true ));
  $menu_item_color = esc_attr(get_post_meta( $item_id, '_menu_item_color', true ));
?>
<div class="description description-wide custom-field menu-item-icon">
  <div class="base-icon">
    <div><?= __( "Ikonka položky", 'inoby' ); ?></div>
    <div class="wrp">
      <img class="img-preview" src="<?= wp_get_attachment_url( $menu_item_icon ); ?>" width="50px"
        style="display:<?= $menu_item_icon ? 'block' : 'none'; ?>" />
      <div class="actions">
        <button class="upload-icon-btn button" type="button"><?= __( 'Zvoľte ikonku', 'inoby' ); ?></button>
        <a href="#" class="remove-icon-btn"
          style="display:<?= $menu_item_icon ? 'block' : 'none'; ?>"><?= __( 'Vymazať ikonku', 'inoby' ); ?></a>
        <input type="hidden" name="menu-item-icon[<?= $item_id ;?>]" value="<?= $menu_item_icon; ?>">
      </div>
    </div>
  </div>
</div>

<div class="description description-wide custom-field menu-item-color">
  <div class="base-color">
    <div><?= __( "Farba textu položky", 'inoby' ); ?></div>
    <div class="wrp">
      <div class="actions">
        <input type="text" placeholder="<?= __("Zadajte HEX kód farby", 'inoby') ?>" name="menu-item-color[<?= $item_id ;?>]" value="<?= $menu_item_color; ?>">
      </div>
    </div>
  </div>
</div>
<?php
}

function inoby_update_nav_megamenu_item( $menu_id, $menu_item_db_id ) {
  if ( isset( $_POST['menu-item-icon'][$menu_item_db_id] ) ) {
    $icon_value = $_POST['menu-item-icon'][$menu_item_db_id];
    if ( ! empty( $icon_value ) ) {
      update_post_meta( $menu_item_db_id, '_menu_item_icon', sanitize_text_field( $icon_value ) );
    } else {
      delete_post_meta( $menu_item_db_id, '_menu_item_icon' );
    }
  }
  
  if ( isset( $_POST['menu-item-color'][$menu_item_db_id] ) ) {
    $color_value = $_POST['menu-item-color'][$menu_item_db_id];
    if ( ! empty( $color_value ) ) {
      update_post_meta( $menu_item_db_id, '_menu_item_color', sanitize_hex_color( $color_value ) );
    } else {
      delete_post_meta( $menu_item_db_id, '_menu_item_color' );
    }
  }
}

function show_menu_item_icon( $image, $item ) {
	if( is_object( $item ) && isset( $item->ID ) ) {
		$menu_item_id = get_post_meta( $item->ID, '_menu_item_icon', true );
		$menu_item_color = get_post_meta( $item->ID, '_menu_item_color', true );
		
		if ( ! empty( $menu_item_id ) ) {
			$image_url = wp_get_attachment_image_url( $menu_item_id, 's-2' );
      $attachment_title = get_the_title($menu_item_id);
			$image .= sprintf(
				'<img src="%s" class="attachment-s-2 size-s-2" loading="lazy" alt="%s">',
				esc_url( $image_url ),
        $attachment_title
			);
		}
		
		if ( ! empty( $menu_item_color ) ) {
      $menu_item_color_decoded = str_replace('#', '', $menu_item_color);
      $chevronData = "data:image/svg+xml,%3Csvg width='16' height='17' viewBox='0 0 16 17' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M7.5 10.95L12.95 5.5L14 6.55L7.5 13.1L1 6.6L2.05 5.55L7.5 10.95Z' fill='%23".$menu_item_color_decoded."'/%3E%3C/svg%3E%0A";
			$image = '<style> .menu-item-' . $item->ID . ' > a { color: ' . $menu_item_color . ' !important; } .menu-item-' . $item->ID . '::after { background-image:url("'.$chevronData.'") !important; } </style>' . $image;
		}
	}
	return $image;
}
add_filter( 'nav_menu_item_title', 'show_menu_item_icon', 10, 2 );


function inoby_megamenu_admin_assets() {
  wp_enqueue_media();
}

// HOOKS
add_action( 'admin_enqueue_scripts', 'inoby_megamenu_admin_assets' );
add_action( 'wp_nav_menu_item_custom_fields', 'inoby_megamenu_item_custom_fields', 10, 2 );
add_action( 'wp_update_nav_menu_item', 'inoby_update_nav_megamenu_item', 10, 2 );