[buddypress-trac] [BuddyPress Trac] #6534: A new API to manage single items navigation

buddypress-trac noreply at wordpress.org
Mon Jun 29 18:59:13 UTC 2015


#6534: A new API to manage single items navigation
------------------------------------+------------------
 Reporter:  imath                   |       Owner:
     Type:  enhancement             |      Status:  new
 Priority:  high                    |   Milestone:  2.4
Component:  API                     |     Version:
 Severity:  normal                  |  Resolution:
 Keywords:  has-patch dev-feedback  |
------------------------------------+------------------

Comment (by boonebgorges):

 > But a feature like: bp_single_item_display_nav( 45, 'groups' ) is imho
 complicating a lot.

 Yeah. But if we're going to break everything and build a compatibility
 layer, let's try to build a system that's maximally flexible.

 Plus, I do think that we should have intelligent defaults that make this
 schema invisible to existing plugins. So, eg, `bp_core_new_subnav_item()`,
 if called without an item_type and item_id, should have internal logic
 that looks schematically like this:

 {{{
 if ( ! $item_type ) {
     $item_type = bp_current_component();
 }

 if ( ! $item_id ) {
     $item_id = apply_filters( 'bp_nav_item_id_fallback', null );
 }

 $nav = new BP_Single_Item_Navigation( array(
     'item_type' => $item_type,
     'item_id' => $item_id,
     // etc
 ) );
 }}}

 It looks like you have some of this fallback logic happening in your
 patch, but I got a little lost with what appears to be the half-
 implemented `buddypress->single_item_id` stuff.

 Do we need to maintain the distinction between `bp_nav` (`main` in your
 patch) and `bp_options_nav` (`sub` in your patch)? Can't we put them all
 in a single place, like `WP_Admin_Bar` does, and then identify top-level
 items as those without a 'parent_slug'? It seems to me that it would help
 a lot to simplify our system if we had a single interface for *all* nav
 items.

 Speaking of interfaces, I wonder if we might talk broadly about separating
 *item nav* from *item nav items* in the code. We'd be able to enforce
 better principles of encapsulation if we had a class `BP_Item_Nav` with a
 property `nodes` that was an array of `BP_Item_NavItem` objects. (I know
 that you haven't done this in part because you've copied and pasted from
 existing `nav_item()` functions.)

 imath, what do you think of the above? Let's talk about it a little bit
 before you go and whip up another patch :) I want to dig in myself and
 start working with code, but I want to be clear on the high-level strategy
 first.

--
Ticket URL: <https://buddypress.trac.wordpress.org/ticket/6534#comment:5>
BuddyPress Trac <http://buddypress.org/>
BuddyPress Trac


More information about the buddypress-trac mailing list