﻿id,summary,reporter,owner,description,type,status,priority,milestone,component,version,severity,resolution,keywords,cc
18402,Confused page ordering if filter drops parent pages,erdnah,nacin,"= Problem =
In Wordpress's page management section, the page ordering is confused if a page filter drops a page parent.

Originally, I experienced this with the User Access Manager Plugin:
http://wordpress.org/extend/plugins/user-access-manager/
This plugin only shows allowed pages to the user.


= Example =
{{{
Page A
- Page A1
-- Page A1.1
-- Page A1.2
}}}

By dropping page A, the ordering becomes for example:

{{{
-- Page A1.1: Parent Page is Page A1
-- Page A1.2: Parent Page is Page A1
- Page A1: Parent Page is A
}}}

But should become:

{{{
Page A1: Parent Page is A
-- Page A1.1
-- Page A1.2
}}}

= Solution =
The confusion results from the function `_display_rows_hierarchical`
in `wp-admin/includes/class-wp-posts-list-table.php` which only adds pages to $top_level_pages whose parent is 0 – the wrong assumption here.

By adding pages to $top_level_pages whose parent is either 0 or doesn't exist in $pages we get a usable order:
So I added to the above-mentioned file:

{{{
#!php
function is_parent_in_pages( $parent, $pages ) {    
    foreach ( $pages as $page ) {
        if ( $page->ID == $parent ) return true;
    }
    return false;
}  
}}}

and changed `_display_rows_hierarchical`
from

{{{
#!php
if ( 0 == $page->post_parent )
    $top_level_pages[] = $page;
else 
    $children_pages[ $page->post_parent ][] = $page;
}}}

to

{{{
#!php
if ( 0 == $page->post_parent || !$this->is_parent_in_pages( $page->post_parent, $pages ))
    $top_level_pages[] = $page;
else
    $children_pages[ $page->post_parent ][] = $page;
}}}


And finally - in order to remove the leading dash of $top_level_pages - I removed
the $level++ in function `single_row` (same file) below ""`case 'title':`""


Small change, better user experience :)





",defect (bug),reviewing,normal,3.6,Administration,3.2.1,normal,,has-patch 2nd-opinion ui-feedback,
