PageRenderTime 54ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/uncode/core/inc/edit_custom_walker.php

https://bitbucket.org/tulsagraphics/themes
PHP | 261 lines | 199 code | 17 blank | 45 comment | 28 complexity | 8822cfed14c7d5bd507987abe6feb8f4 MD5 | raw file
Possible License(s): AGPL-1.0, BSD-3-Clause, GPL-2.0
  1. <?php
  2. /**
  3. * Create HTML list of nav menu input items.
  4. *
  5. * @package WordPress
  6. * @since 3.0.0
  7. * @uses Walker_Nav_Menu
  8. */
  9. class Walker_Nav_Menu_Edit_Custom extends Walker_Nav_Menu {
  10. /**
  11. * Starts the list before the elements are added.
  12. *
  13. * @see Walker_Nav_Menu::start_lvl()
  14. *
  15. * @since 3.0.0
  16. *
  17. * @param string $output Passed by reference.
  18. * @param int $depth Depth of menu item. Used for padding.
  19. * @param array $args Not used.
  20. */
  21. function start_lvl( &$output, $depth = 0, $args = array() ) {}
  22. /**
  23. * Ends the list of after the elements are added.
  24. *
  25. * @see Walker_Nav_Menu::end_lvl()
  26. *
  27. * @since 3.0.0
  28. *
  29. * @param string $output Passed by reference.
  30. * @param int $depth Depth of menu item. Used for padding.
  31. * @param array $args Not used.
  32. */
  33. function end_lvl( &$output, $depth = 0, $args = array() ) {}
  34. /**
  35. * Start the element output.
  36. *
  37. * @see Walker_Nav_Menu::start_el()
  38. * @since 3.0.0
  39. *
  40. * @param string $output Passed by reference. Used to append additional content.
  41. * @param object $item Menu item data object.
  42. * @param int $depth Depth of menu item. Used for padding.
  43. * @param array $args Not used.
  44. * @param int $id Not used.
  45. */
  46. function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
  47. global $_wp_nav_menu_max_depth, $parent_mega;
  48. $_wp_nav_menu_max_depth = $depth > $_wp_nav_menu_max_depth ? $depth : $_wp_nav_menu_max_depth;
  49. ob_start();
  50. $item_id = esc_attr( $item->ID );
  51. $removed_args = array(
  52. 'action',
  53. 'customlink-tab',
  54. 'edit-menu-item',
  55. 'menu-item',
  56. 'page-tab',
  57. '_wpnonce',
  58. );
  59. $original_title = '';
  60. if ( 'taxonomy' == $item->type ) {
  61. $original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' );
  62. if ( is_wp_error( $original_title ) )
  63. $original_title = false;
  64. } elseif ( 'post_type' == $item->type ) {
  65. $original_object = get_post( $item->object_id );
  66. $original_title = get_the_title( $original_object->ID );
  67. }
  68. $classes = array(
  69. 'menu-item menu-item-depth-' . $depth,
  70. 'menu-item-' . esc_attr( $item->object ),
  71. 'menu-item-edit-' . ( ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? 'active' : 'inactive'),
  72. );
  73. $title = $item->title;
  74. if ( ! empty( $item->_invalid ) ) {
  75. $classes[] = 'menu-item-invalid';
  76. /* translators: %s: title of menu item which is invalid */
  77. $title = sprintf( esc_html__( '%s (Invalid)' , 'uncode'), $item->title );
  78. } elseif ( isset( $item->post_status ) && 'draft' == $item->post_status ) {
  79. $classes[] = 'pending';
  80. /* translators: %s: title of menu item in draft status */
  81. $title = sprintf( esc_html__('%s (Pending)', 'uncode'), $item->title );
  82. }
  83. $title = ( ! isset( $item->label ) || '' == $item->label ) ? $title : $item->label;
  84. if ($item->megamenu) $parent_mega = $item->ID;
  85. if ($parent_mega == $item->menu_item_parent) $sublabel = esc_html__('MEGAMENU TITLE', 'uncode');
  86. else $sublabel = $item->megamenu ? esc_html__('MEGAMENU', 'uncode') : esc_html__('sub item', 'uncode');
  87. $submenu_text = '';
  88. if ( 0 == $depth && $item->megamenu != 'megamenu')
  89. $submenu_text = 'style="display: none;"';
  90. ?>
  91. <li id="menu-item-<?php echo esc_attr($item_id); ?>" class="<?php echo implode(' ', $classes ); ?>">
  92. <dl class="menu-item-bar">
  93. <dt class="menu-item-handle">
  94. <span class="item-title"><span class="menu-item-title"><?php echo esc_html( $title ); ?></span> <span class="is-submenu" <?php echo wp_kses_post($submenu_text); ?>><?php echo wp_kses_post($sublabel); ?></span></span>
  95. <span class="item-controls">
  96. <span class="item-type"><?php echo esc_html( $item->type_label ); ?></span>
  97. <span class="item-order hide-if-js">
  98. <a href="<?php
  99. echo wp_nonce_url(
  100. add_query_arg(
  101. array(
  102. 'action' => 'move-up-menu-item',
  103. 'menu-item' => $item_id,
  104. ),
  105. remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
  106. ),
  107. 'move-menu_item'
  108. );
  109. ?>" class="item-move-up"><abbr title="<?php esc_attr_e('Move up','uncode'); ?>">&#8593;</abbr></a>
  110. |
  111. <a href="<?php
  112. echo wp_nonce_url(
  113. add_query_arg(
  114. array(
  115. 'action' => 'move-down-menu-item',
  116. 'menu-item' => $item_id,
  117. ),
  118. remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
  119. ),
  120. 'move-menu_item'
  121. );
  122. ?>" class="item-move-down"><abbr title="<?php esc_attr_e('Move down','uncode'); ?>">&#8595;</abbr></a>
  123. </span>
  124. <a class="item-edit" id="edit-<?php echo esc_attr($item_id); ?>" title="<?php esc_attr_e('Edit Menu Item','uncode'); ?>" href="<?php
  125. 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 ) ) );
  126. ?>"><span class="screen-reader-text"><?php esc_html_e( 'Edit Menu Item' , 'uncode'); ?></span></a>
  127. </span>
  128. </dt>
  129. </dl>
  130. <div class="menu-item-settings wp-clearfix" id="menu-item-settings-<?php echo esc_attr($item_id); ?>">
  131. <?php if( 'custom' == $item->type ) : ?>
  132. <p class="field-url description description-wide">
  133. <label for="edit-menu-item-url-<?php echo esc_attr($item_id); ?>">
  134. <?php esc_html_e( 'URL' , 'uncode'); ?><br />
  135. <input type="text" id="edit-menu-item-url-<?php echo esc_attr($item_id); ?>" class="widefat code edit-menu-item-url" name="menu-item-url[<?php echo esc_attr($item_id); ?>]" value="<?php echo esc_attr( $item->url ); ?>" />
  136. </label>
  137. </p>
  138. <?php endif; ?>
  139. <p class="description description-thin">
  140. <label for="edit-menu-item-title-<?php echo esc_attr($item_id); ?>">
  141. <?php esc_html_e( 'Navigation Label' , 'uncode'); ?><br />
  142. <input type="text" id="edit-menu-item-title-<?php echo esc_attr($item_id); ?>" class="widefat edit-menu-item-title" name="menu-item-title[<?php echo esc_attr($item_id); ?>]" value="<?php echo esc_attr( $item->title ); ?>" />
  143. </label>
  144. </p>
  145. <p class="description description-thin">
  146. <label for="edit-menu-item-attr-title-<?php echo esc_attr($item_id); ?>">
  147. <?php esc_html_e( 'Title Attribute' , 'uncode'); ?><br />
  148. <input type="text" id="edit-menu-item-attr-title-<?php echo esc_attr($item_id); ?>" class="widefat edit-menu-item-attr-title" name="menu-item-attr-title[<?php echo esc_attr($item_id); ?>]" value="<?php echo esc_attr( $item->post_excerpt ); ?>" />
  149. </label>
  150. </p>
  151. <p class="field-link-target description">
  152. <label for="edit-menu-item-target-<?php echo esc_attr($item_id); ?>">
  153. <input type="checkbox" id="edit-menu-item-target-<?php echo esc_attr($item_id); ?>" value="_blank" name="menu-item-target[<?php echo esc_attr($item_id); ?>]"<?php checked( $item->target, '_blank' ); ?> />
  154. <?php esc_html_e( 'Open link in a new window/tab' , 'uncode'); ?>
  155. </label>
  156. </p>
  157. <p class="field-css-classes description description-thin">
  158. <label for="edit-menu-item-classes-<?php echo esc_attr($item_id); ?>">
  159. <?php esc_html_e( 'CSS Classes (optional)' , 'uncode'); ?><br />
  160. <input type="text" id="edit-menu-item-classes-<?php echo esc_attr($item_id); ?>" class="widefat code edit-menu-item-classes" name="menu-item-classes[<?php echo esc_attr($item_id); ?>]" value="<?php echo esc_attr( implode(' ', $item->classes ) ); ?>" />
  161. </label>
  162. </p>
  163. <p class="field-xfn description description-thin">
  164. <label for="edit-menu-item-xfn-<?php echo esc_attr($item_id); ?>">
  165. <?php esc_html_e( 'Link Relationship (XFN)' , 'uncode'); ?><br />
  166. <input type="text" id="edit-menu-item-xfn-<?php echo esc_attr($item_id); ?>" class="widefat code edit-menu-item-xfn" name="menu-item-xfn[<?php echo esc_attr($item_id); ?>]" value="<?php echo esc_attr( $item->xfn ); ?>" />
  167. </label>
  168. </p>
  169. <p class="field-description description description-wide">
  170. <label for="edit-menu-item-description-<?php echo esc_attr($item_id); ?>">
  171. <?php esc_html_e( 'Description' , 'uncode'); ?><br />
  172. <textarea id="edit-menu-item-description-<?php echo esc_attr($item_id); ?>" class="widefat edit-menu-item-description" rows="3" cols="20" name="menu-item-description[<?php echo esc_attr($item_id); ?>]"><?php echo esc_html( $item->description ); // textarea_escaped ?></textarea>
  173. <span class="description"><?php esc_html_e('The description will be displayed in the menu if the current theme supports it.', 'uncode'); ?></span>
  174. </label>
  175. </p>
  176. <?php
  177. /* New fields insertion starts here */
  178. do_action( 'wp_nav_menu_item_custom_fields', $item_id, $item, $depth, $args );
  179. ?>
  180. <p class="field-custom description description-wide">
  181. <label for="edit-menu-item-icon-<?php echo esc_attr($item_id); ?>">
  182. <input type="text" class="menu_icon_container" id="edit-menu-item-icon-<?php echo esc_attr($item_id); ?>" value="<?php echo esc_attr($item->icon); ?>" name="menu-item-icon[<?php echo esc_attr($item_id); ?>]" />
  183. <?php esc_html_e( 'Icon' , 'uncode'); ?>
  184. </label>
  185. </p>
  186. <?php
  187. if ($depth == 0) {
  188. ?>
  189. <p class="field-custom description description-wide">
  190. <label for="edit-menu-item-megamenu-<?php echo esc_attr($item_id); ?>">
  191. <input type="checkbox" id="edit-menu-item-megamenu-<?php echo esc_attr($item_id); ?>" value="megamenu" name="menu-item-megamenu[<?php echo esc_attr($item_id); ?>]"<?php checked( $item->megamenu, 'megamenu' ); ?> />
  192. <?php esc_html_e( 'Megamenu' , 'uncode'); ?>
  193. </label>
  194. </p>
  195. <?php
  196. /* New fields insertion ends here */
  197. } ?>
  198. <p class="field-custom description description-wide">
  199. <label for="edit-menu-item-button-<?php echo esc_attr($item_id); ?>">
  200. <input type="checkbox" id="edit-menu-item-button-<?php echo esc_attr($item_id); ?>" value="button" name="menu-item-button[<?php echo esc_attr($item_id); ?>]"<?php checked( $item->button, 'button' ); ?> />
  201. <?php esc_html_e( 'Button style' , 'uncode'); ?>
  202. </label>
  203. </p>
  204. <p class="field-move hide-if-no-js description description-wide">
  205. <label>
  206. <span><?php esc_html_e( 'Move' , 'uncode'); ?></span>
  207. <a href="#" class="menus-move-up"><?php esc_html_e( 'Up one' , 'uncode'); ?></a>
  208. <a href="#" class="menus-move-down"><?php esc_html_e( 'Down one' , 'uncode'); ?></a>
  209. <a href="#" class="menus-move-left"></a>
  210. <a href="#" class="menus-move-right"></a>
  211. <a href="#" class="menus-move-top"><?php esc_html_e( 'To the top' , 'uncode'); ?></a>
  212. </label>
  213. </p>
  214. <div class="menu-item-actions description-wide submitbox">
  215. <?php if( 'custom' != $item->type && $original_title !== false ) : ?>
  216. <p class="link-to-original">
  217. <?php printf( wp_kses(__('Original: %s', 'uncode'), array( 'a' => array( 'href' => array() ) ) ), '<a href="' . esc_attr( $item->url ) . '">' . esc_html( $original_title ) . '</a>' ); ?>
  218. </p>
  219. <?php endif; ?>
  220. <a class="item-delete submitdelete deletion" id="delete-<?php echo esc_attr($item_id); ?>" href="<?php
  221. echo wp_nonce_url(
  222. add_query_arg(
  223. array(
  224. 'action' => 'delete-menu-item',
  225. 'menu-item' => $item_id,
  226. ),
  227. admin_url( 'nav-menus.php' )
  228. ),
  229. 'delete-menu_item_' . $item_id
  230. ); ?>"><?php esc_html_e( 'Remove' , 'uncode'); ?></a> <span class="meta-sep hide-if-no-js"> | </span> <a class="item-cancel submitcancel hide-if-no-js" id="cancel-<?php echo esc_attr($item_id); ?>" href="<?php echo esc_url( add_query_arg( array( 'edit-menu-item' => $item_id, 'cancel' => time() ), admin_url( 'nav-menus.php' ) ) );
  231. ?>#menu-item-settings-<?php echo esc_attr($item_id); ?>"><?php esc_html_e('Cancel', 'uncode'); ?></a>
  232. </div>
  233. <input class="menu-item-data-db-id" type="hidden" name="menu-item-db-id[<?php echo esc_attr($item_id); ?>]" value="<?php echo esc_attr($item_id); ?>" />
  234. <input class="menu-item-data-object-id" type="hidden" name="menu-item-object-id[<?php echo esc_attr($item_id); ?>]" value="<?php echo esc_attr( $item->object_id ); ?>" />
  235. <input class="menu-item-data-object" type="hidden" name="menu-item-object[<?php echo esc_attr($item_id); ?>]" value="<?php echo esc_attr( $item->object ); ?>" />
  236. <input class="menu-item-data-parent-id" type="hidden" name="menu-item-parent-id[<?php echo esc_attr($item_id); ?>]" value="<?php echo esc_attr( $item->menu_item_parent ); ?>" />
  237. <input class="menu-item-data-position" type="hidden" name="menu-item-position[<?php echo esc_attr($item_id); ?>]" value="<?php echo esc_attr( $item->menu_order ); ?>" />
  238. <input class="menu-item-data-type" type="hidden" name="menu-item-type[<?php echo esc_attr($item_id); ?>]" value="<?php echo esc_attr( $item->type ); ?>" />
  239. </div><!-- .menu-item-settings-->
  240. <ul class="menu-item-transport"></ul>
  241. <?php
  242. $output .= ob_get_clean();
  243. }
  244. } // Walker_Nav_Menu_Edit