WordPress.org

Make WordPress Core

Ticket #5303: 5303_pages.diff

File 5303_pages.diff, 5.7 KB (added by hailin, 10 years ago)

patch file

  • C:/xampp/htdocs/wordpress_trunk/wp-includes/query.php

     
    11201120                                if ( 'menu_order' != $orderby )
    11211121                                        $orderby = 'post_' . $orderby;
    11221122                                if ( in_array($orderby_array[$i], $allowed_keys) )
    1123                                         $q['orderby'] .= (($i == 0) ? '' : ',') . "$orderby {$q['order']}";
     1123                                        $q['orderby'] .= (($i == 0) ? '' : ',') . $orderby;
    11241124                        }
     1125                        // append ASC or DESC at the end
     1126                        if ( !empty( $q['orderby'] ) )
     1127                                $q['orderby'] .= " {$q['order']}";
     1128                               
    11251129                        if ( empty($q['orderby']) )
    11261130                                $q['orderby'] = 'post_date '.$q['order'];
    11271131                }
  • C:/xampp/htdocs/wordpress_trunk/wp-admin/includes/template.php

     
    225225        return $posts_columns;
    226226}
    227227
    228 function page_rows( $parent = 0, $level = 0, $pages = 0, $hierarchy = true ) {
     228/*
     229 * display one row if the page doesn't have any children
     230 * otherwise, display the row and its children in subsequent rows
     231 */
     232function display_page_row( $page, &$children_pages, $level=0 ) {
    229233        global $class, $post;
     234       
     235        $post = $page;
     236        setup_postdata( $page );
     237       
     238        $page->post_title = wp_specialchars( $page->post_title );
     239        $pad = str_repeat( '— ', $level );
     240        $id = (int) $page->ID;
     241        $class = ('alternate' == $class ) ? '' : 'alternate';
    230242
    231         if (!$pages )
    232                 $pages = get_pages( 'sort_column=menu_order' );
    233 
    234         if (! $pages )
    235                 return false;
    236 
    237         foreach ( $pages as $post) {
    238                 setup_postdata( $post);
    239                 if ( $hierarchy && ($post->post_parent != $parent) )
    240                         continue;
    241 
    242                 $post->post_title = wp_specialchars( $post->post_title );
    243                 $pad = str_repeat( '— ', $level );
    244                 $id = (int) $post->ID;
    245                 $class = ('alternate' == $class ) ? '' : 'alternate';
    246243?>
    247244  <tr id='page-<?php echo $id; ?>' class='<?php echo $class; ?>'>
    248     <th scope="row" style="text-align: center"><?php echo $post->ID; ?></th>
     245    <th scope="row" style="text-align: center"><?php echo $page->ID; ?></th>
    249246    <td>
    250       <?php echo $pad; ?><?php the_title() ?>
     247      <?php echo $pad; ?><?php the_title(); ?>
    251248    </td>
    252249    <td><?php the_author() ?></td>
    253     <td><?php if ( '0000-00-00 00:00:00' ==$post->post_modified ) _e('Unpublished'); else echo mysql2date( __('Y-m-d g:i a'), $post->post_modified ); ?></td>
     250    <td><?php if ( '0000-00-00 00:00:00' == $page->post_modified ) _e('Unpublished'); else echo mysql2date( __('Y-m-d g:i a'), $page->post_modified ); ?></td>
    254251    <td><a href="<?php the_permalink(); ?>" rel="permalink" class="view"><?php _e( 'View' ); ?></a></td>
    255252    <td><?php if ( current_user_can( 'edit_page', $id ) ) { echo "<a href='page.php?action=edit&amp;post=$id' class='edit'>" . __( 'Edit' ) . "</a>"; } ?></td>
    256253    <td><?php if ( current_user_can( 'delete_page', $id ) ) { echo "<a href='" . wp_nonce_url( "page.php?action=delete&amp;post=$id", 'delete-page_' . $id ) .  "' class='delete:the-list:page-$id delete'>" . __( 'Delete' ) . "</a>"; } ?></td>
    257254  </tr>
    258255
    259256<?php
    260                 if ( $hierarchy )
    261                         page_rows( $id, $level + 1, $pages );
     257
     258        if ( !$children_pages )
     259                return true;
     260
     261        for ( $i = 0; $i < sizeof( $children_pages ); $i++ ) {
     262                $child = $children_pages[$i];
     263                       
     264                if ( $child->post_parent == $id ) {
     265                array_splice( $children_pages, $i, 1 );
     266                        display_page_row( $child, $children_pages, $level + 1 );
     267                        $i--;
     268                }
    262269        }
    263270}
    264271
     272/*
     273 * displays pages in hierarchical order
     274 */
     275function page_rows( $pages ) {
     276        global $class;
     277       
     278        if ( !$pages )
     279                $pages = get_pages( 'sort_column=menu_order' );
     280
     281        if ( !$pages )
     282                return false;
     283
     284        /* splice pages into two parts: those without parent and those with parent */
     285       
     286        $top_level_pages = array();
     287        $children_pages  = array();
     288       
     289        foreach ( $pages as $page ) {
     290                if ( 0 == $page->post_parent )
     291                        $top_level_pages[] = $page;
     292                else
     293                        $children_pages[] = $page;
     294        }
     295       
     296        foreach ( $top_level_pages as $page )
     297                display_page_row( $page, $children_pages, 0 );
     298
     299       
     300        /*
     301         * display the remaining children_pages which are orphans
     302         * having orphan requires parental attention
     303         */
     304        if ( sizeof( $children_pages ) > 0 ) {
     305                $class = ( 'alternate' == $class ) ? '' : 'alternate';
     306                ?>
     307                <tr class='<?php echo $class; ?>'>
     308                <th colspan='7'><?php echo _e('Orphaned Pages') ?></th>
     309                </tr>
     310                <?php
     311                $empty_array = array();
     312                foreach ( $children_pages as $orphan_page )
     313                        display_page_row( $orphan_page, $empty_array, 0 );
     314         }
     315}
     316
    265317function user_row( $user_object, $style = '' ) {
    266318        if ( !(is_object( $user_object) && is_a( $user_object, 'WP_User' ) ) )
    267319                $user_object = new WP_User( (int) $user_object );
  • C:/xampp/htdocs/wordpress_trunk/wp-admin/edit-pages.php

     
    6868<br style="clear:both;" />
    6969
    7070<?php
    71 wp("post_type=page&orderby=menu_order&what_to_show=posts$post_status_q&posts_per_page=-1&posts_per_archive_page=-1&order=asc");
     71wp( "post_type=page&orderby=menu_order title&what_to_show=posts$post_status_q&posts_per_page=-1&posts_per_archive_page=-1&order=asc" );
    7272
    7373$all = !( $h2_search || $post_status_q );
    7474
     
    8585  </tr>
    8686  </thead>
    8787  <tbody id="the-list" class="list:page">
    88 <?php page_rows(0, 0, $posts, $all); ?>
     88  <?php page_rows( $posts ); ?>   
    8989  </tbody>
    9090</table>
    9191