PageRenderTime 52ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/htdocs/wp-content/plugins/gecka-submenu/models/Nav-Menu-Edit-Walker.php

https://bitbucket.org/dkrzos/phc
PHP | 380 lines | 320 code | 29 blank | 31 comment | 32 complexity | c979e17bb5c56c1e43a18749866e8f2d MD5 | raw file
Possible License(s): 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. //require_once 'wp-admin/includes/nav-menu.php';
  10. if( version_compare($GLOBALS['wp_version'], '3.3-beta') === -1) {
  11. class Gecka_Walker_Nav_Menu_Edit extends Walker_Nav_Menu_Edit {
  12. /**
  13. * @see Walker::start_el()
  14. * @since 3.0.0
  15. *
  16. * @param string $output Passed by reference. Used to append additional content.
  17. * @param object $item Menu item data object.
  18. * @param int $depth Depth of menu item. Used for padding.
  19. * @param int $current_page Menu item ID.
  20. * @param object $args
  21. */
  22. function start_el(&$output, $item, $depth, $args)
  23. {
  24. global $_wp_nav_menu_max_depth;
  25. $_wp_nav_menu_max_depth = $depth > $_wp_nav_menu_max_depth ? $depth : $_wp_nav_menu_max_depth;
  26. $indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
  27. ob_start();
  28. $item_id = esc_attr( $item->ID );
  29. $removed_args = array(
  30. 'action',
  31. 'customlink-tab',
  32. 'edit-menu-item',
  33. 'menu-item',
  34. 'page-tab',
  35. '_wpnonce',
  36. );
  37. $original_title = '';
  38. if ( 'taxonomy' == $item->type ) {
  39. $original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' );
  40. } elseif ( 'post_type' == $item->type ) {
  41. $original_object = get_post( $item->object_id );
  42. $original_title = $original_object->post_title;
  43. }
  44. $classes = array(
  45. 'menu-item menu-item-depth-' . $depth,
  46. 'menu-item-' . esc_attr( $item->object ),
  47. 'menu-item-edit-' . ( ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? 'active' : 'inactive'),
  48. );
  49. $title = $item->title;
  50. if ( isset( $item->post_status ) && 'draft' == $item->post_status ) {
  51. $classes[] = 'pending';
  52. /* translators: %s: title of menu item in draft status */
  53. $title = sprintf( __('%s (Pending)'), $item->title );
  54. }
  55. $title = empty( $item->label ) ? $title : $item->label;
  56. ?>
  57. <li id="menu-item-<?php echo $item_id; ?>" class="<?php echo implode(' ', $classes ); ?>">
  58. <dl class="menu-item-bar">
  59. <dt class="menu-item-handle">
  60. <span class="item-title"><?php echo esc_html( $title ); ?></span>
  61. <span class="item-controls">
  62. <span class="item-type"><?php echo esc_html( $item->type_label ); ?></span>
  63. <span class="item-order">
  64. <a href="<?php
  65. echo wp_nonce_url(
  66. add_query_arg(
  67. array(
  68. 'action' => 'move-up-menu-item',
  69. 'menu-item' => $item_id,
  70. ),
  71. remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
  72. ),
  73. 'move-menu_item'
  74. );
  75. ?>" class="item-move-up"><abbr title="<?php esc_attr_e('Move up'); ?>">&#8593;</abbr></a>
  76. |
  77. <a href="<?php
  78. echo wp_nonce_url(
  79. add_query_arg(
  80. array(
  81. 'action' => 'move-down-menu-item',
  82. 'menu-item' => $item_id,
  83. ),
  84. remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
  85. ),
  86. 'move-menu_item'
  87. );
  88. ?>" class="item-move-down"><abbr title="<?php esc_attr_e('Move down'); ?>">&#8595;</abbr></a>
  89. </span>
  90. <a class="item-edit" id="edit-<?php echo $item_id; ?>" title="<?php _e('Edit Menu Item'); ?>" href="<?php
  91. 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 ) ) );
  92. ?>"><?php _e( 'Edit Menu Item' ); ?></a>
  93. </span>
  94. </dt>
  95. </dl>
  96. <div class="menu-item-settings" id="menu-item-settings-<?php echo $item_id; ?>">
  97. <?php if( 'custom' == $item->type ) : ?>
  98. <p class="field-url description description-wide">
  99. <label for="edit-menu-item-url-<?php echo $item_id; ?>">
  100. <?php _e( 'URL' ); ?><br />
  101. <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 ); ?>" />
  102. </label>
  103. </p>
  104. <?php endif; ?>
  105. <p class="description description-thin">
  106. <label for="edit-menu-item-title-<?php echo $item_id; ?>">
  107. <?php _e( 'Navigation Label' ); ?><br />
  108. <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 ); ?>" />
  109. </label>
  110. </p>
  111. <p class="description description-thin">
  112. <label for="edit-menu-item-attr-title-<?php echo $item_id; ?>">
  113. <?php _e( 'Title Attribute' ); ?><br />
  114. <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 ); ?>" />
  115. </label>
  116. </p>
  117. <p class="field-link-target description description-thin">
  118. <label for="edit-menu-item-target-<?php echo $item_id; ?>">
  119. <?php _e( 'Link Target' ); ?><br />
  120. <select id="edit-menu-item-target-<?php echo $item_id; ?>" class="widefat edit-menu-item-target" name="menu-item-target[<?php echo $item_id; ?>]">
  121. <option value="" <?php selected( $item->target, ''); ?>><?php _e('Same window or tab'); ?></option>
  122. <option value="_blank" <?php selected( $item->target, '_blank'); ?>><?php _e('New window or tab'); ?></option>
  123. </select>
  124. </label>
  125. </p>
  126. <p class="field-css-classes description description-thin">
  127. <label for="edit-menu-item-classes-<?php echo $item_id; ?>">
  128. <?php _e( 'CSS Classes (optional)' ); ?><br />
  129. <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 ) ); ?>" />
  130. </label>
  131. </p>
  132. <p class="field-xfn description description-thin">
  133. <label for="edit-menu-item-xfn-<?php echo $item_id; ?>">
  134. <?php _e( 'Link Relationship (XFN)' ); ?><br />
  135. <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 ); ?>" />
  136. </label>
  137. </p>
  138. <p class="field-description description description-wide">
  139. <label for="edit-menu-item-description-<?php echo $item_id; ?>">
  140. <?php _e( 'Description' ); ?><br />
  141. <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>
  142. <span class="description"><?php _e('The description will be displayed in the menu if the current theme supports it.'); ?></span>
  143. </label>
  144. </p>
  145. <?php
  146. do_action('wp_nav_menu_item_custom_fields', $item_id, $item, $depth, $args);
  147. ?>
  148. <div class="menu-item-actions description-wide submitbox">
  149. <?php if( 'custom' != $item->type ) : ?>
  150. <p class="link-to-original">
  151. <?php printf( __('Original: %s'), '<a href="' . esc_attr( $item->url ) . '">' . esc_html( $original_title ) . '</a>' ); ?>
  152. </p>
  153. <?php endif; ?>
  154. <a class="item-delete submitdelete deletion" id="delete-<?php echo $item_id; ?>" href="<?php
  155. echo wp_nonce_url(
  156. add_query_arg(
  157. array(
  158. 'action' => 'delete-menu-item',
  159. 'menu-item' => $item_id,
  160. ),
  161. remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
  162. ),
  163. 'delete-menu_item_' . $item_id
  164. ); ?>"><?php _e('Remove'); ?></a> <span class="meta-sep"> | </span> <a class="item-cancel submitcancel" id="cancel-<?php echo $item_id; ?>" href="<?php echo add_query_arg( array('edit-menu-item' => $item_id, 'cancel' => time()), remove_query_arg( $removed_args, admin_url( 'nav-menus.php' ) ) );
  165. ?>#menu-item-settings-<?php echo $item_id; ?>"><?php _e('Cancel'); ?></a>
  166. </div>
  167. <input class="menu-item-data-db-id" type="hidden" name="menu-item-db-id[<?php echo $item_id; ?>]" value="<?php echo $item_id; ?>" />
  168. <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 ); ?>" />
  169. <input class="menu-item-data-object" type="hidden" name="menu-item-object[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->object ); ?>" />
  170. <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 ); ?>" />
  171. <input class="menu-item-data-position" type="hidden" name="menu-item-position[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->menu_order ); ?>" />
  172. <input class="menu-item-data-type" type="hidden" name="menu-item-type[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->type ); ?>" />
  173. </div><!-- .menu-item-settings-->
  174. <ul class="menu-item-transport"></ul>
  175. <?php
  176. $output .= ob_get_clean();
  177. }
  178. }
  179. }
  180. else {
  181. class Gecka_Walker_Nav_Menu_Edit extends Walker_Nav_Menu_Edit {
  182. /**
  183. * @see Walker::start_el()
  184. * @since 3.0.0
  185. *
  186. * @param string $output Passed by reference. Used to append additional content.
  187. * @param object $item Menu item data object.
  188. * @param int $depth Depth of menu item. Used for padding.
  189. * @param int $current_page Menu item ID.
  190. * @param object $args
  191. */
  192. function start_el(&$output, $item, $depth, $args) {
  193. global $_wp_nav_menu_max_depth;
  194. $_wp_nav_menu_max_depth = $depth > $_wp_nav_menu_max_depth ? $depth : $_wp_nav_menu_max_depth;
  195. $indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
  196. ob_start();
  197. $item_id = esc_attr( $item->ID );
  198. $removed_args = array(
  199. 'action',
  200. 'customlink-tab',
  201. 'edit-menu-item',
  202. 'menu-item',
  203. 'page-tab',
  204. '_wpnonce',
  205. );
  206. $original_title = '';
  207. if ( 'taxonomy' == $item->type ) {
  208. $original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' );
  209. if ( is_wp_error( $original_title ) )
  210. $original_title = false;
  211. } elseif ( 'post_type' == $item->type ) {
  212. $original_object = get_post( $item->object_id );
  213. $original_title = $original_object->post_title;
  214. }
  215. $classes = array(
  216. 'menu-item menu-item-depth-' . $depth,
  217. 'menu-item-' . esc_attr( $item->object ),
  218. 'menu-item-edit-' . ( ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? 'active' : 'inactive'),
  219. );
  220. $title = $item->title;
  221. if ( ! empty( $item->_invalid ) ) {
  222. $classes[] = 'menu-item-invalid';
  223. /* translators: %s: title of menu item which is invalid */
  224. $title = sprintf( __( '%s (Invalid)' ), $item->title );
  225. } elseif ( isset( $item->post_status ) && 'draft' == $item->post_status ) {
  226. $classes[] = 'pending';
  227. /* translators: %s: title of menu item in draft status */
  228. $title = sprintf( __('%s (Pending)'), $item->title );
  229. }
  230. $title = empty( $item->label ) ? $title : $item->label;
  231. ?>
  232. <li id="menu-item-<?php echo $item_id; ?>" class="<?php echo implode(' ', $classes ); ?>">
  233. <dl class="menu-item-bar">
  234. <dt class="menu-item-handle">
  235. <span class="item-title"><?php echo esc_html( $title ); ?></span>
  236. <span class="item-controls">
  237. <span class="item-type"><?php echo esc_html( $item->type_label ); ?></span>
  238. <span class="item-order hide-if-js">
  239. <a href="<?php
  240. echo wp_nonce_url(
  241. add_query_arg(
  242. array(
  243. 'action' => 'move-up-menu-item',
  244. 'menu-item' => $item_id,
  245. ),
  246. remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
  247. ),
  248. 'move-menu_item'
  249. );
  250. ?>" class="item-move-up"><abbr title="<?php esc_attr_e('Move up'); ?>">&#8593;</abbr></a>
  251. |
  252. <a href="<?php
  253. echo wp_nonce_url(
  254. add_query_arg(
  255. array(
  256. 'action' => 'move-down-menu-item',
  257. 'menu-item' => $item_id,
  258. ),
  259. remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
  260. ),
  261. 'move-menu_item'
  262. );
  263. ?>" class="item-move-down"><abbr title="<?php esc_attr_e('Move down'); ?>">&#8595;</abbr></a>
  264. </span>
  265. <a class="item-edit" id="edit-<?php echo $item_id; ?>" title="<?php esc_attr_e('Edit Menu Item'); ?>" href="<?php
  266. 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 ) ) );
  267. ?>"><?php _e( 'Edit Menu Item' ); ?></a>
  268. </span>
  269. </dt>
  270. </dl>
  271. <div class="menu-item-settings" id="menu-item-settings-<?php echo $item_id; ?>">
  272. <?php if( 'custom' == $item->type ) : ?>
  273. <p class="field-url description description-wide">
  274. <label for="edit-menu-item-url-<?php echo $item_id; ?>">
  275. <?php _e( 'URL' ); ?><br />
  276. <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 ); ?>" />
  277. </label>
  278. </p>
  279. <?php endif; ?>
  280. <p class="description description-thin">
  281. <label for="edit-menu-item-title-<?php echo $item_id; ?>">
  282. <?php _e( 'Navigation Label' ); ?><br />
  283. <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 ); ?>" />
  284. </label>
  285. </p>
  286. <p class="description description-thin">
  287. <label for="edit-menu-item-attr-title-<?php echo $item_id; ?>">
  288. <?php _e( 'Title Attribute' ); ?><br />
  289. <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 ); ?>" />
  290. </label>
  291. </p>
  292. <p class="field-link-target description">
  293. <label for="edit-menu-item-target-<?php echo $item_id; ?>">
  294. <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' ); ?> />
  295. <?php _e( 'Open link in a new window/tab' ); ?>
  296. </label>
  297. </p>
  298. <p class="field-css-classes description description-thin">
  299. <label for="edit-menu-item-classes-<?php echo $item_id; ?>">
  300. <?php _e( 'CSS Classes (optional)' ); ?><br />
  301. <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 ) ); ?>" />
  302. </label>
  303. </p>
  304. <p class="field-xfn description description-thin">
  305. <label for="edit-menu-item-xfn-<?php echo $item_id; ?>">
  306. <?php _e( 'Link Relationship (XFN)' ); ?><br />
  307. <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 ); ?>" />
  308. </label>
  309. </p>
  310. <p class="field-description description description-wide">
  311. <label for="edit-menu-item-description-<?php echo $item_id; ?>">
  312. <?php _e( 'Description' ); ?><br />
  313. <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>
  314. <span class="description"><?php _e('The description will be displayed in the menu if the current theme supports it.'); ?></span>
  315. </label>
  316. </p>
  317. <?php
  318. do_action('wp_nav_menu_item_custom_fields', $item_id, $item, $depth, $args);
  319. ?>
  320. <div class="menu-item-actions description-wide submitbox">
  321. <?php if( 'custom' != $item->type && $original_title !== false ) : ?>
  322. <p class="link-to-original">
  323. <?php printf( __('Original: %s'), '<a href="' . esc_attr( $item->url ) . '">' . esc_html( $original_title ) . '</a>' ); ?>
  324. </p>
  325. <?php endif; ?>
  326. <a class="item-delete submitdelete deletion" id="delete-<?php echo $item_id; ?>" href="<?php
  327. echo wp_nonce_url(
  328. add_query_arg(
  329. array(
  330. 'action' => 'delete-menu-item',
  331. 'menu-item' => $item_id,
  332. ),
  333. remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
  334. ),
  335. 'delete-menu_item_' . $item_id
  336. ); ?>"><?php _e('Remove'); ?></a> <span class="meta-sep"> | </span> <a class="item-cancel submitcancel" id="cancel-<?php echo $item_id; ?>" href="<?php echo esc_url( add_query_arg( array('edit-menu-item' => $item_id, 'cancel' => time()), remove_query_arg( $removed_args, admin_url( 'nav-menus.php' ) ) ) );
  337. ?>#menu-item-settings-<?php echo $item_id; ?>"><?php _e('Cancel'); ?></a>
  338. </div>
  339. <input class="menu-item-data-db-id" type="hidden" name="menu-item-db-id[<?php echo $item_id; ?>]" value="<?php echo $item_id; ?>" />
  340. <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 ); ?>" />
  341. <input class="menu-item-data-object" type="hidden" name="menu-item-object[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->object ); ?>" />
  342. <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 ); ?>" />
  343. <input class="menu-item-data-position" type="hidden" name="menu-item-position[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->menu_order ); ?>" />
  344. <input class="menu-item-data-type" type="hidden" name="menu-item-type[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->type ); ?>" />
  345. </div><!-- .menu-item-settings-->
  346. <ul class="menu-item-transport"></ul>
  347. <?php
  348. $output .= ob_get_clean();
  349. }
  350. }
  351. }