-/**
- * Create HTML list of pages.
- *
- * @package WordPress
- * @since 2.1.0
- * @uses Walker
- */
-class Walker_Page extends Walker {
- /**
- * @see Walker::$tree_type
- * @since 2.1.0
- * @var string
- */
- var $tree_type = 'page';
-
- /**
- * @see Walker::$db_fields
- * @since 2.1.0
- * @todo Decouple this.
- * @var array
- */
- var $db_fields = array ('parent' => 'post_parent', 'id' => 'ID');
-
- /**
- * @see Walker::start_lvl()
- * @since 2.1.0
- *
- * @param string $output Passed by reference. Used to append additional content.
- * @param int $depth Depth of page. Used for padding.
- * @param array $args
- */
- function start_lvl( &$output, $depth = 0, $args = array() ) {
- $indent = str_repeat("\t", $depth);
- $output .= "\n$indent<ul class='children'>\n";
- }
-
- /**
- * @see Walker::end_lvl()
- * @since 2.1.0
- *
- * @param string $output Passed by reference. Used to append additional content.
- * @param int $depth Depth of page. Used for padding.
- * @param array $args
- */
- function end_lvl( &$output, $depth = 0, $args = array() ) {
- $indent = str_repeat("\t", $depth);
- $output .= "$indent</ul>\n";
- }
-
- /**
- * @see Walker::start_el()
- * @since 2.1.0
- *
- * @param string $output Passed by reference. Used to append additional content.
- * @param object $page Page data object.
- * @param int $depth Depth of page. Used for padding.
- * @param int $current_page Page ID.
- * @param array $args
- */
- function start_el( &$output, $page, $depth = 0, $args = array(), $current_page = 0 ) {
- if ( $depth )
- $indent = str_repeat("\t", $depth);
- else
- $indent = '';
-
- extract($args, EXTR_SKIP);
- $css_class = array('page_item', 'page-item-'.$page->ID);
-
- if( isset( $args['pages_with_children'][ $page->ID ] ) )
- $css_class[] = 'page_item_has_children';
-
- if ( !empty($current_page) ) {
- $_current_page = get_post( $current_page );
- if ( in_array( $page->ID, $_current_page->ancestors ) )
- $css_class[] = 'current_page_ancestor';
- if ( $page->ID == $current_page )
- $css_class[] = 'current_page_item';
- elseif ( $_current_page && $page->ID == $_current_page->post_parent )
- $css_class[] = 'current_page_parent';
- } elseif ( $page->ID == get_option('page_for_posts') ) {
- $css_class[] = 'current_page_parent';
- }
-
- $css_class = implode( ' ', apply_filters( 'page_css_class', $css_class, $page, $depth, $args, $current_page ) );
-
- if ( '' === $page->post_title )
- $page->post_title = sprintf( __( '#%d (no title)' ), $page->ID );
-
- /** This filter is documented in wp-includes/post-template.php */
- $output .= $indent . '<li class="' . $css_class . '"><a href="' . get_permalink($page->ID) . '">' . $link_before . apply_filters( 'the_title', $page->post_title, $page->ID ) . $link_after . '</a>';
-
- if ( !empty($show_date) ) {
- if ( 'modified' == $show_date )
- $time = $page->post_modified;
- else
- $time = $page->post_date;
-
- $output .= " " . mysql2date($date_format, $time);
- }
- }
-
- /**
- * @see Walker::end_el()
- * @since 2.1.0
- *
- * @param string $output Passed by reference. Used to append additional content.
- * @param object $page Page data object. Not used.
- * @param int $depth Depth of page. Not Used.
- * @param array $args
- */
- function end_el( &$output, $page, $depth = 0, $args = array() ) {
- $output .= "</li>\n";
- }
-
-}
-
-/**
- * Create HTML dropdown list of pages.
- *
- * @package WordPress
- * @since 2.1.0
- * @uses Walker
- */
-class Walker_PageDropdown extends Walker {
- /**
- * @see Walker::$tree_type
- * @since 2.1.0
- * @var string
- */
- var $tree_type = 'page';
-
- /**
- * @see Walker::$db_fields
- * @since 2.1.0
- * @todo Decouple this
- * @var array
- */
- var $db_fields = array ('parent' => 'post_parent', 'id' => 'ID');
-
- /**
- * @see Walker::start_el()
- * @since 2.1.0
- *
- * @param string $output Passed by reference. Used to append additional content.
- * @param object $page Page data object.
- * @param int $depth Depth of page in reference to parent pages. Used for padding.
- * @param array $args Uses 'selected' argument for selected page to set selected HTML attribute for option element.
- * @param int $id
- */
- function start_el( &$output, $page, $depth = 0, $args = array(), $id = 0 ) {
- $pad = str_repeat(' ', $depth * 3);
-
- $output .= "\t<option class=\"level-$depth\" value=\"$page->ID\"";
- if ( $page->ID == $args['selected'] )
- $output .= ' selected="selected"';
- $output .= '>';
- $title = apply_filters( 'list_pages', $page->post_title, $page );
- $output .= $pad . esc_html( $title );
- $output .= "</option>\n";
- }
-}
-