WordPress 4.4
[autoinstalls/wordpress.git] / wp-admin / includes / class-walker-nav-menu-checklist.php
1 <?php
2 /**
3  * Navigation Menu API: Walker_Nav_Menu_Checklist class
4  *
5  * @package WordPress
6  * @subpackage Administration
7  * @since 4.4.0
8  */
9
10 /**
11  * Create HTML list of nav menu input items.
12  *
13  * @since 3.0.0
14  * @uses Walker_Nav_Menu
15  */
16 class Walker_Nav_Menu_Checklist extends Walker_Nav_Menu {
17         /**
18          *
19          * @param array $fields
20          */
21         public function __construct( $fields = false ) {
22                 if ( $fields ) {
23                         $this->db_fields = $fields;
24                 }
25         }
26
27         /**
28          * Starts the list before the elements are added.
29          *
30          * @see Walker_Nav_Menu::start_lvl()
31          *
32          * @since 3.0.0
33          *
34          * @param string $output Passed by reference. Used to append additional content.
35          * @param int    $depth  Depth of page. Used for padding.
36          * @param array  $args   Not used.
37          */
38         public function start_lvl( &$output, $depth = 0, $args = array() ) {
39                 $indent = str_repeat( "\t", $depth );
40                 $output .= "\n$indent<ul class='children'>\n";
41         }
42
43         /**
44          * Ends the list of after the elements are added.
45          *
46          * @see Walker_Nav_Menu::end_lvl()
47          *
48          * @since 3.0.0
49          *
50          * @param string $output Passed by reference. Used to append additional content.
51          * @param int    $depth  Depth of page. Used for padding.
52          * @param array  $args   Not used.
53          */
54         public function end_lvl( &$output, $depth = 0, $args = array() ) {
55                 $indent = str_repeat( "\t", $depth );
56                 $output .= "\n$indent</ul>";
57         }
58
59         /**
60          * Start the element output.
61          *
62          * @see Walker_Nav_Menu::start_el()
63          *
64          * @since 3.0.0
65          *
66          * @global int $_nav_menu_placeholder
67          *
68          * @param string $output Passed by reference. Used to append additional content.
69          * @param object $item   Menu item data object.
70          * @param int    $depth  Depth of menu item. Used for padding.
71          * @param array  $args   Not used.
72          * @param int    $id     Not used.
73          */
74         public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
75                 global $_nav_menu_placeholder;
76
77                 $_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval($_nav_menu_placeholder) - 1 : -1;
78                 $possible_object_id = isset( $item->post_type ) && 'nav_menu_item' == $item->post_type ? $item->object_id : $_nav_menu_placeholder;
79                 $possible_db_id = ( ! empty( $item->ID ) ) && ( 0 < $possible_object_id ) ? (int) $item->ID : 0;
80
81                 $indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
82
83                 $output .= $indent . '<li>';
84                 $output .= '<label class="menu-item-title">';
85                 $output .= '<input type="checkbox" class="menu-item-checkbox';
86
87                 if ( ! empty( $item->front_or_home ) )
88                         $output .= ' add-to-top';
89
90                 $output .= '" name="menu-item[' . $possible_object_id . '][menu-item-object-id]" value="'. esc_attr( $item->object_id ) .'" /> ';
91
92                 if ( ! empty( $item->label ) ) {
93                         $title = $item->label;
94                 } elseif ( isset( $item->post_type ) ) {
95                         /** This filter is documented in wp-includes/post-template.php */
96                         $title = apply_filters( 'the_title', $item->post_title, $item->ID );
97                         if ( ! empty( $item->front_or_home ) && _x( 'Home', 'nav menu home label' ) !== $title )
98                                 $title = sprintf( _x( 'Home: %s', 'nav menu front page title' ), $title );
99                 }
100
101                 $output .= isset( $title ) ? esc_html( $title ) : esc_html( $item->title );
102                 $output .= '</label>';
103
104                 // Menu item hidden fields
105                 $output .= '<input type="hidden" class="menu-item-db-id" name="menu-item[' . $possible_object_id . '][menu-item-db-id]" value="' . $possible_db_id . '" />';
106                 $output .= '<input type="hidden" class="menu-item-object" name="menu-item[' . $possible_object_id . '][menu-item-object]" value="'. esc_attr( $item->object ) .'" />';
107                 $output .= '<input type="hidden" class="menu-item-parent-id" name="menu-item[' . $possible_object_id . '][menu-item-parent-id]" value="'. esc_attr( $item->menu_item_parent ) .'" />';
108                 $output .= '<input type="hidden" class="menu-item-type" name="menu-item[' . $possible_object_id . '][menu-item-type]" value="'. esc_attr( $item->type ) .'" />';
109                 $output .= '<input type="hidden" class="menu-item-title" name="menu-item[' . $possible_object_id . '][menu-item-title]" value="'. esc_attr( $item->title ) .'" />';
110                 $output .= '<input type="hidden" class="menu-item-url" name="menu-item[' . $possible_object_id . '][menu-item-url]" value="'. esc_attr( $item->url ) .'" />';
111                 $output .= '<input type="hidden" class="menu-item-target" name="menu-item[' . $possible_object_id . '][menu-item-target]" value="'. esc_attr( $item->target ) .'" />';
112                 $output .= '<input type="hidden" class="menu-item-attr_title" name="menu-item[' . $possible_object_id . '][menu-item-attr_title]" value="'. esc_attr( $item->attr_title ) .'" />';
113                 $output .= '<input type="hidden" class="menu-item-classes" name="menu-item[' . $possible_object_id . '][menu-item-classes]" value="'. esc_attr( implode( ' ', $item->classes ) ) .'" />';
114                 $output .= '<input type="hidden" class="menu-item-xfn" name="menu-item[' . $possible_object_id . '][menu-item-xfn]" value="'. esc_attr( $item->xfn ) .'" />';
115         }
116
117 } // Walker_Nav_Menu_Checklist