<?php
//add custom fields to object
add_filter( 'wp_setup_nav_menu_item','ihc_nav_items_custom' );
function ihc_nav_items_custom($obj) {
	$obj->ihc_mb_who_menu_type = get_post_meta( $obj->ID, 'ihc_mb_who_menu_type', true );
	$obj->ihc_menu_mb_type = get_post_meta( $obj->ID, 'ihc_menu_mb_type', true );
	return $obj;
}

// Saves new field to postmeta for navigation
add_action('wp_update_nav_menu_item', 'ihc_nav_menu_update', 10, 3);
function ihc_nav_menu_update($menu_id, $menu_db_id, $args ) {
	if ( isset($_REQUEST['ihc_mb_who_menu_type-'.$menu_db_id]) && isset($_REQUEST['ihc_menu_mb_type-'.$menu_db_id]) ) {
		update_post_meta( $menu_db_id, 'ihc_mb_who_menu_type', $_REQUEST['ihc_mb_who_menu_type-'.$menu_db_id]);
		update_post_meta( $menu_db_id, 'ihc_menu_mb_type', $_REQUEST['ihc_menu_mb_type-'.$menu_db_id]);
	}
}

//create custom walker class
add_filter( 'wp_edit_nav_menu_walker', 'indeed_create_walker_menu_class', 10, 2);
function indeed_create_walker_menu_class($walker,$menu_id) {
	return 'IndeedWalkerMenu_IHC';
}

class IndeedWalkerMenu_IHC extends Walker_Nav_Menu{
	public function start_lvl(&$output, $depth = 0, $args = array()){}
	public function end_lvl(&$output, $depth = 0, $args = array()){}

	public function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0 ) {
		global $_wp_nav_menu_max_depth;
		$_wp_nav_menu_max_depth = $depth > $_wp_nav_menu_max_depth ? $depth : $_wp_nav_menu_max_depth;

		ob_start();
		$item_id = esc_attr( $item->ID );
		$removed_args = array(
				'action',
				'customlink-tab',
				'edit-menu-item',
				'menu-item',
				'page-tab',
				'_wpnonce',
		);

		$original_title = '';
		if ( 'taxonomy' == $item->type ) {
			$original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' );
			if ( is_wp_error( $original_title ) )
				$original_title = false;
		} elseif ( 'post_type' == $item->type ) {
			$original_object = get_post( $item->object_id );
			$original_title = get_the_title( $original_object->ID );
		}

		$classes = array(
				'menu-item menu-item-depth-' . $depth,
				'menu-item-' . esc_attr( $item->object ),
				'menu-item-edit-' . ( ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? 'active' : 'inactive'),
		);

		$title = $item->title;

		if ( ! empty( $item->_invalid ) ) {
			$classes[] = 'menu-item-invalid';
			/* translators: %s: title of menu item which is invalid */
			$title = sprintf( esc_html__( '%s (Invalid)' ), $item->title );
		} elseif ( isset( $item->post_status ) && 'draft' == $item->post_status ) {
			$classes[] = 'pending';
			/* translators: %s: title of menu item in draft status */
			$title = sprintf( esc_html__('%s (Pending)'), $item->title );
		}

		$title = ( ! isset( $item->label ) || '' == $item->label ) ? $title : $item->label;

		$submenu_text = '';
		if ( 0 == $depth )
			$submenu_text = 'class="ihc-display-none"';

		?>
				<li id="menu-item-<?php echo $item_id; ?>" class="<?php echo implode(' ', $classes ); ?>">
					<dl class="menu-item-bar">
						<dt class="menu-item-handle">
							<span class="item-title"><span class="menu-item-title"><?php echo esc_html( $title ); ?></span> <span class="is-submenu" <?php echo $submenu_text; ?>><?php esc_html_e( 'sub item' ); ?></span></span>
							<span class="item-controls">
								<span class="item-type"><?php echo esc_html( $item->type_label ); ?></span>
								<span class="item-order hide-if-js">
									<a href="<?php
										echo wp_nonce_url(
											add_query_arg(
												array(
													'action' => 'move-up-menu-item',
													'menu-item' => $item_id,
												),
												remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
											),
											'move-menu_item'
										);
									?>" class="item-move-up"><abbr title="<?php esc_attr_e('Move up'); ?>">&#8593;</abbr></a>
									|
									<a href="<?php
										echo wp_nonce_url(
											add_query_arg(
												array(
													'action' => 'move-down-menu-item',
													'menu-item' => $item_id,
												),
												remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
											),
											'move-menu_item'
										);
									?>" class="item-move-down"><abbr title="<?php esc_attr_e('Move down'); ?>">&#8595;</abbr></a>
								</span>
								<a class="item-edit" id="edit-<?php echo $item_id; ?>" title="<?php esc_attr_e('Edit Menu Item'); ?>" href="<?php
									echo ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? admin_url( 'nav-menus.php' ) : add_query_arg( 'edit-menu-item', $item_id, remove_query_arg( $removed_args, admin_url( 'nav-menus.php#menu-item-settings-' . $item_id ) ) );
								?>"><?php esc_html_e( 'Edit Menu Item' ); ?></a>
							</span>
						</dt>
					</dl>

					<div class="menu-item-settings" id="menu-item-settings-<?php echo $item_id; ?>">
						<?php if( 'custom' == $item->type ) : ?>
							<p class="field-url description description-wide">
								<label for="edit-menu-item-url-<?php echo $item_id; ?>">
									<?php esc_html_e( 'URL' ); ?><br />
									<input type="text" id="edit-menu-item-url-<?php echo $item_id; ?>" class="widefat code edit-menu-item-url" name="menu-item-url[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->url ); ?>" />
								</label>
							</p>
						<?php endif; ?>
						<p class="description description-thin">
							<label for="edit-menu-item-title-<?php echo $item_id; ?>">
								<?php esc_html_e( 'Navigation Label' ); ?><br />
								<input type="text" id="edit-menu-item-title-<?php echo $item_id; ?>" class="widefat edit-menu-item-title" name="menu-item-title[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->title ); ?>" />
							</label>
						</p>
						<p class="description description-thin">
							<label for="edit-menu-item-attr-title-<?php echo $item_id; ?>">
								<?php esc_html_e( 'Title Attribute' ); ?><br />
								<input type="text" id="edit-menu-item-attr-title-<?php echo $item_id; ?>" class="widefat edit-menu-item-attr-title" name="menu-item-attr-title[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->post_excerpt ); ?>" />
							</label>
						</p>
						<p class="field-link-target description">
							<label for="edit-menu-item-target-<?php echo $item_id; ?>">
								<input type="checkbox" id="edit-menu-item-target-<?php echo $item_id; ?>" value="_blank" name="menu-item-target[<?php echo $item_id; ?>]"<?php checked( $item->target, '_blank' ); ?> />
								<?php esc_html_e( 'Open link in a new window/tab' ); ?>
							</label>
						</p>
						<p class="field-css-classes description description-thin">
							<label for="edit-menu-item-classes-<?php echo $item_id; ?>">
								<?php esc_html_e( 'CSS Classes (optional)' ); ?><br />
								<input type="text" id="edit-menu-item-classes-<?php echo $item_id; ?>" class="widefat code edit-menu-item-classes" name="menu-item-classes[<?php echo $item_id; ?>]" value="<?php echo esc_attr( implode(' ', $item->classes ) ); ?>" />
							</label>
						</p>
						<p class="field-xfn description description-thin">
							<label for="edit-menu-item-xfn-<?php echo $item_id; ?>">
								<?php esc_html_e( 'Link Relationship (XFN)' ); ?><br />
								<input type="text" id="edit-menu-item-xfn-<?php echo $item_id; ?>" class="widefat code edit-menu-item-xfn" name="menu-item-xfn[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->xfn ); ?>" />
							</label>
						</p>
						<p class="field-description description description-wide">
							<label for="edit-menu-item-description-<?php echo $item_id; ?>">
								<?php esc_html_e( 'Description' ); ?><br />
								<textarea id="edit-menu-item-description-<?php echo $item_id; ?>" class="widefat edit-menu-item-description" rows="3" cols="20" name="menu-item-description[<?php echo $item_id; ?>]"><?php echo esc_html( $item->description ); // textarea_escaped ?></textarea>
								<span class="description"><?php esc_html_e('The description will be displayed in the menu if the current theme supports it.'); ?></span>
							</label>
						</p>

						<p class="field-move hide-if-no-js description description-wide">
							<label>
								<span><?php esc_html_e( 'Move' ); ?></span>
								<a href="#" class="menus-move-up"><?php esc_html_e( 'Up one' ); ?></a>
								<a href="#" class="menus-move-down"><?php esc_html_e( 'Down one' ); ?></a>
								<a href="#" class="menus-move-left"></a>
								<a href="#" class="menus-move-right"></a>
								<a href="#" class="menus-move-top"><?php esc_html_e( 'To the top' ); ?></a>
							</label>
						</p>


<!---------------------------- INDEED CUSTOM SECTION  -------------------------------------------->
						<span class="ihc-js-custom-nav-menu-labels" data-remove="<?php esc_html_e('Removing tag', 'ihc');?>"></span>
						<?php wp_enqueue_script( 'ihc-custom-nav-menu', IHC_URL . 'admin/assets/js/custom-nav-menu.js', [], 1.1 );?>

						<div>
							<h5>Membership Pro Ultimate WP - <?php esc_html_e('Section', 'ihc');?></h5>
							<div class="ihc-class ihc-padding">
								<select class="ihc-fullwidth ihc-select" name="ihc_menu_mb_type-<?php echo $item_id; ?>">
									<option value="block" <?php if($item->ihc_menu_mb_type=='block'){
										echo 'selected';
									} ?> ><?php esc_html_e('Block Menu Item Only', 'ihc');?></option>
									<option value="show" <?php if($item->ihc_menu_mb_type=='show'){
										echo 'selected';
									} ?> ><?php esc_html_e('Show Menu Item Only', 'ihc');?></option>
								</select>
							</div>
							<div  class="ihc-padding ihc-text-aling-right">
								<label class="ihc-bold">...<?php esc_html_e('for', 'ihc');?></label>
								<?php
									$posible_values = array('all'=>esc_html__('All', 'ihc'), 'reg'=>esc_html__('Registered Users', 'ihc'), 'unreg'=>esc_html__('Unregistered Users', 'ihc') );

									$levels = \Indeed\Ihc\Db\Memberships::getAll();
									if($levels){
										foreach($levels as $id => $level){
											$posible_values[$id] = $level['name'];
										}
									}
									?>
									<select onChange="ihcWriteTagValue(this, '#ihc_mb_who_hidden-<?php echo $item_id;?>', '#ihc_tags_field-<?php echo $item_id;?>', '<?php echo $item_id;?>_ihc_select_tag_' );">
										<option value="-1" selected>...</option>
										<?php
											foreach($posible_values as $k=>$v){
												?>
												<option value="<?php echo $k;?>"><?php echo $v;?></option>
												<?php
											}
										?>
									</select>
							</div>
							<div id="ihc_tags_field-<?php echo $item_id;?>">
				            	<?php

				                    if($item->ihc_mb_who_menu_type){
				                    	if(strpos($item->ihc_mb_who_menu_type, ',')!==FALSE){
				                    		$values = explode(',', $item->ihc_mb_who_menu_type);
				                    	}
				                        else{
				                        	$values[] = $item->ihc_mb_who_menu_type;
				                        }
				                        foreach($values as $value){ ?>
				                        	<div id="<?php echo $item_id;?>_ihc_select_tag_<?php echo $value;?>" class="ihc-tag-item">
				                        		<?php echo $posible_values[$value];?>
				                        		<div class="ihc-remove-tag" onclick="ihcremoveTag('<?php echo $value;?>', '#<?php echo $item_id;?>_ihc_select_tag_', '#ihc_mb_who_hidden-<?php echo $item_id;?>');" title="<?php esc_html_e('Removing tag', 'ihc');?>">x</div>
				                        	</div>
				                            <?php
				                        }//end of foreach ?>
				                    <div class="ihc-clear"></div>
				                    <?php }//end of if ?>

							</div>
							<div class="ihc-clear"></div>
							<input type="hidden" id="ihc_mb_who_hidden-<?php echo $item_id;?>" name="ihc_mb_who_menu_type-<?php echo $item_id; ?>" value="<?php echo $item->ihc_mb_who_menu_type;?>" />
							<div class="clear"></div>
						</div>
<!---------------------------- END OF INDEED CUSTOM SECTION  -------------------------------------------->



						<div class="menu-item-actions description-wide submitbox">
							<?php if( 'custom' != $item->type && $original_title !== false ) : ?>
								<p class="link-to-original">
									<?php printf( esc_html__('Original: %s'), '<a href="' . esc_attr( $item->url ) . '">' . esc_html( $original_title ) . '</a>' ); ?>
								</p>
							<?php endif; ?>
							<a class="item-delete submitdelete deletion" id="delete-<?php echo $item_id; ?>" href="<?php
							echo wp_nonce_url(
								add_query_arg(
									array(
										'action' => 'delete-menu-item',
										'menu-item' => $item_id,
									),
									admin_url( 'nav-menus.php' )
								),
								'delete-menu_item_' . $item_id
							); ?>"><?php esc_html_e( 'Remove' ); ?></a> <span class="meta-sep hide-if-no-js"> | </span> <a class="item-cancel submitcancel hide-if-no-js" id="cancel-<?php echo $item_id; ?>" href="<?php echo esc_url( add_query_arg( array( 'edit-menu-item' => $item_id, 'cancel' => indeed_get_unixtimestamp_with_timezone() ), admin_url( 'nav-menus.php' ) ) );
								?>#menu-item-settings-<?php echo $item_id; ?>"><?php esc_html_e('Cancel'); ?></a>
						</div>

						<input class="menu-item-data-db-id" type="hidden" name="menu-item-db-id[<?php echo $item_id; ?>]" value="<?php echo $item_id; ?>" />
						<input class="menu-item-data-object-id" type="hidden" name="menu-item-object-id[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->object_id ); ?>" />
						<input class="menu-item-data-object" type="hidden" name="menu-item-object[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->object ); ?>" />
						<input class="menu-item-data-parent-id" type="hidden" name="menu-item-parent-id[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->menu_item_parent ); ?>" />
						<input class="menu-item-data-position" type="hidden" name="menu-item-position[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->menu_order ); ?>" />
						<input class="menu-item-data-type" type="hidden" name="menu-item-type[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->type ); ?>" />
					</div><!-- .menu-item-settings-->
					<ul class="menu-item-transport"></ul>
				<?php
				$output .= ob_get_clean();
	}
}
