<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[BuddyPress][12892] trunk/src: Nouveau: improve the way customizable slugs are handled</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="http://buddypress.trac.wordpress.org/changeset/12892">12892</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"http://buddypress.trac.wordpress.org/changeset/12892","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>imath</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2021-04-18 10:18:06 +0000 (Sun, 18 Apr 2021)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Nouveau: improve the way customizable slugs are handled

BuddyPress uses constants such as `BP_FRIENDS_SLUG` to let advanced users customize component URL slugs. The Nouveau template pack was wrongly checking hardcoded component names at various places into its code, in particular into the following functions and template tags:

- `bp_nouveau_current_object()`
- `bp_nouveau_filter_options()`
- `bp_nouveau_wrapper()`

This commit also introduces a new BP Core function to get the active BP Component objects: `bp_core_get_active_components()`. The `$args` argument can be used to filter the active components according to their slugs, names, ids or root slugs. Nouveau uses it to determine the component ID out of its slug and use this component ID instead of slugs to create its needed dynamic selectors, classes and data attributes.

Props mattneil

Fixes <a href="http://buddypress.trac.wordpress.org/ticket/8133">#8133</a></pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcbpcorebpcorefunctionsphp">trunk/src/bp-core/bp-core-functions.php</a></li>
<li><a href="#trunksrcbpmembersbpmembersadminbarphp">trunk/src/bp-members/bp-members-adminbar.php</a></li>
<li><a href="#trunksrcbpmembersbpmemberstemplatephp">trunk/src/bp-members/bp-members-template.php</a></li>
<li><a href="#trunksrcbpmembersclassesclassbpmemberscomponentphp">trunk/src/bp-members/classes/class-bp-members-component.php</a></li>
<li><a href="#trunksrcbptemplatesbpnouveaubuddypresscommonsearchandfiltersbarphp">trunk/src/bp-templates/bp-nouveau/buddypress/common/search-and-filters-bar.php</a></li>
<li><a href="#trunksrcbptemplatesbpnouveauincludesfunctionsphp">trunk/src/bp-templates/bp-nouveau/includes/functions.php</a></li>
<li><a href="#trunksrcbptemplatesbpnouveauincludestemplatetagsphp">trunk/src/bp-templates/bp-nouveau/includes/template-tags.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcbpcorebpcorefunctionsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-core/bp-core-functions.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-core/bp-core-functions.php   2021-04-17 15:08:42 UTC (rev 12891)
+++ trunk/src/bp-core/bp-core-functions.php     2021-04-18 10:18:06 UTC (rev 12892)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -950,6 +950,54 @@
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * Get a list of all active component objects.
+ *
+ * @since 8.0.0
+ *
+ * @param array $args {
+ *     Optional. An array of key => value arguments to match against the component objects.
+ *     Default empty array.
+ *
+ *     @type string $name          Translatable name for the component.
+ *     @type string $id            Unique ID for the component.
+ *     @type string $slug          Unique slug for the component, for use in query strings and URLs.
+ *     @type bool   $has_directory True if the component has a top-level directory. False otherwise.
+ *     @type string $root_slug     Slug used by the component's directory page.
+ * }
+ * @param string $output   Optional. The type of output to return. Accepts 'ids'
+ *                         or 'objects'. Default 'ids'.
+ * @param string $operator Optional. The logical operation to perform. 'or' means only one
+ *                         element from the array needs to match; 'and' means all elements
+ *                         must match. Accepts 'or' or 'and'. Default 'and'.
+ * @return array A list of component ids or objects.
+ */
+function bp_core_get_active_components( $args = array(), $output = 'ids', $operator = 'and' ) {
+       $bp = buddypress();
+
+       $active_components = array_keys( $bp->active_components );
+
+       $xprofile_id = array_search( 'xprofile', $active_components, true );
+       if ( false !== $xprofile_id ) {
+               $active_components[ $xprofile_id ] = 'profile';
+       }
+
+       $components = array();
+       foreach ( $active_components as $id ) {
+               if ( isset( $bp->{$id} ) && $bp->{$id} instanceof BP_Component ) {
+                       $components[ $id ] = $bp->{$id};
+               }
+       }
+
+       $components = wp_filter_object_list( $components, $args, $operator );
+
+       if ( 'ids' === $output ) {
+               $components = wp_list_pluck( $components, 'id' );
+       }
+
+       return $components;
+}
+
+/**
</ins><span class="cx" style="display: block; padding: 0 10px">  * Determine whether BuddyPress should register the bp-themes directory.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @since 1.9.0
</span></span></pre></div>
<a id="trunksrcbpmembersbpmembersadminbarphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-members/bp-members-adminbar.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-members/bp-members-adminbar.php      2021-04-17 15:08:42 UTC (rev 12891)
+++ trunk/src/bp-members/bp-members-adminbar.php        2021-04-18 10:18:06 UTC (rev 12892)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -102,7 +102,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'parent' => $bp->user_admin_menu_id,
</span><span class="cx" style="display: block; padding: 0 10px">                        'id'     => $bp->user_admin_menu_id . '-edit-profile',
</span><span class="cx" style="display: block; padding: 0 10px">                        'title'  => __( "Edit Profile", 'buddypress' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'href'   => bp_get_members_component_link( 'profile', 'edit' )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'href'   => bp_get_members_component_link( $bp->profile->id, 'edit' )
</ins><span class="cx" style="display: block; padding: 0 10px">                 ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // User Admin > Edit this user's avatar.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -111,7 +111,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'parent' => $bp->user_admin_menu_id,
</span><span class="cx" style="display: block; padding: 0 10px">                                'id'     => $bp->user_admin_menu_id . '-change-avatar',
</span><span class="cx" style="display: block; padding: 0 10px">                                'title'  => __( "Edit Profile Photo", 'buddypress' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'href'   => bp_get_members_component_link( 'profile', 'change-avatar' )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'href'   => bp_get_members_component_link( $bp->profile->id, 'change-avatar' )
</ins><span class="cx" style="display: block; padding: 0 10px">                         ) );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -121,7 +121,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'parent' => $bp->user_admin_menu_id,
</span><span class="cx" style="display: block; padding: 0 10px">                                'id'     => $bp->user_admin_menu_id . '-change-cover-image',
</span><span class="cx" style="display: block; padding: 0 10px">                                'title'  => __( 'Edit Cover Image', 'buddypress' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                'href'   => bp_get_members_component_link( 'profile', 'change-cover-image' )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'href'   => bp_get_members_component_link( $bp->profile->id, 'change-cover-image' )
</ins><span class="cx" style="display: block; padding: 0 10px">                         ) );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="trunksrcbpmembersbpmemberstemplatephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-members/bp-members-template.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-members/bp-members-template.php      2021-04-17 15:08:42 UTC (rev 12891)
+++ trunk/src/bp-members/bp-members-template.php        2021-04-18 10:18:06 UTC (rev 12892)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2800,35 +2800,43 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * @return string
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        function bp_get_members_component_link( $component, $action = '', $query_args = '', $nonce = false ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 // Must be displayed user.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( !bp_displayed_user_id() )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! bp_displayed_user_id() ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         return;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $bp = buddypress();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                if ( 'xprofile' === $component ) {
+                       $component = 'profile';
+               }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // Append $action to $url if there is no $type.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( !empty( $action ) )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! empty( $action ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $url = bp_displayed_user_domain() . $bp->{$component}->slug . '/' . $action;
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                else
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         } else {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $url = bp_displayed_user_domain() . $bp->{$component}->slug;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Add a slash at the end of our user url.
</span><span class="cx" style="display: block; padding: 0 10px">                $url = trailingslashit( $url );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Add possible query arg.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( !empty( $query_args ) && is_array( $query_args ) )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! empty( $query_args ) && is_array( $query_args ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $url = add_query_arg( $query_args, $url );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // To nonce, or not to nonce...
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( true === $nonce )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( true === $nonce ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $url = wp_nonce_url( $url );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                elseif ( is_string( $nonce ) )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         } elseif ( is_string( $nonce ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $url = wp_nonce_url( $url, $nonce );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Return the url, if there is one.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( !empty( $url ) )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! empty( $url ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         return $url;
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                }
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="trunksrcbpmembersclassesclassbpmemberscomponentphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-members/classes/class-bp-members-component.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-members/classes/class-bp-members-component.php       2021-04-17 15:08:42 UTC (rev 12891)
+++ trunk/src/bp-members/classes/class-bp-members-component.php 2021-04-18 10:18:06 UTC (rev 12892)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -314,7 +314,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $access       = bp_core_can_edit_settings();
</span><span class="cx" style="display: block; padding: 0 10px">                $slug         = bp_get_profile_slug();
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $profile_link = bp_get_members_component_link( $slug );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $profile_link = bp_get_members_component_link( buddypress()->profile->id );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Change Avatar.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( buddypress()->avatar->show_avatars ) {
</span></span></pre></div>
<a id="trunksrcbptemplatesbpnouveaubuddypresscommonsearchandfiltersbarphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-templates/bp-nouveau/buddypress/common/search-and-filters-bar.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-templates/bp-nouveau/buddypress/common/search-and-filters-bar.php    2021-04-17 15:08:42 UTC (rev 12891)
+++ trunk/src/bp-templates/bp-nouveau/buddypress/common/search-and-filters-bar.php      2021-04-18 10:18:06 UTC (rev 12892)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3,26 +3,26 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * BP Nouveau Search & filters bar
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @since 3.0.0
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 3.1.0
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @version 8.0.0
</ins><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> ?>
</span><span class="cx" style="display: block; padding: 0 10px"> <div class="subnav-filters filters no-ajax" id="subnav-filters">
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        <?php if ( 'friends' !== bp_current_component() ) : ?>
-       <div class="subnav-search clearfix">
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ <?php if ( bp_get_friends_slug() !== bp_current_component() ) : ?>
+               <div class="subnav-search clearfix">
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                <?php if ( 'activity' === bp_current_component() ) : ?>
-                       <div class="feed"><a href="<?php bp_sitewide_activity_feed_link(); ?>" class="bp-tooltip" data-bp-tooltip="<?php esc_attr_e( 'RSS Feed', 'buddypress' ); ?>"><span class="bp-screen-reader-text"><?php esc_html_e( 'RSS', 'buddypress' ); ?></span></a></div>
-               <?php endif; ?>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 <?php if ( bp_get_activity_slug() === bp_current_component() ) : ?>
+                               <div class="feed"><a href="<?php bp_sitewide_activity_feed_link(); ?>" class="bp-tooltip" data-bp-tooltip="<?php esc_attr_e( 'RSS Feed', 'buddypress' ); ?>"><span class="bp-screen-reader-text"><?php esc_html_e( 'RSS', 'buddypress' ); ?></span></a></div>
+                       <?php endif; ?>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                <?php bp_nouveau_search_form(); ?>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 <?php bp_nouveau_search_form(); ?>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        </div>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         </div>
</ins><span class="cx" style="display: block; padding: 0 10px">         <?php endif; ?>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                <?php if ( bp_is_user() && ! bp_is_current_action( 'requests' ) ) : ?>
</span><span class="cx" style="display: block; padding: 0 10px">                        <?php bp_get_template_part( 'common/filters/user-screens-filters' ); ?>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                <?php elseif ( 'groups' === bp_current_component() ) : ?>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         <?php elseif ( bp_get_groups_slug() === bp_current_component() ) : ?>
</ins><span class="cx" style="display: block; padding: 0 10px">                         <?php bp_get_template_part( 'common/filters/groups-screens-filters' ); ?>
</span><span class="cx" style="display: block; padding: 0 10px">                <?php else : ?>
</span><span class="cx" style="display: block; padding: 0 10px">                        <?php bp_get_template_part( 'common/filters/directory-filters' ); ?>
</span></span></pre></div>
<a id="trunksrcbptemplatesbpnouveauincludesfunctionsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-templates/bp-nouveau/includes/functions.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-templates/bp-nouveau/includes/functions.php  2021-04-17 15:08:42 UTC (rev 12891)
+++ trunk/src/bp-templates/bp-nouveau/includes/functions.php    2021-04-18 10:18:06 UTC (rev 12892)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3,7 +3,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * Common functions
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @since 3.0.0
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 3.1.0
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @version 8.0.0
</ins><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> // Exit if accessed directly.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -237,13 +237,22 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * }
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> function bp_nouveau_wrapper( $args = array() ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- /**
-       * Classes need to be determined & set by component to a certain degree
-       *
-       * Check the component to find a default container_class to add
-       */
-       $current_component_class = bp_current_component() . '-meta';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ /**
+        * Classes need to be determined & set by component to a certain degree.
+        *
+        * Check the component to find a default container_class based on the component ID to add.
+        * We need to to this because bp_current_component() is using the component slugs which can differ
+        * from the component ID.
+        */
+       $current_component_id = bp_core_get_active_components( array( 'slug' => bp_current_component() ) );
+       if ( $current_component_id && 1 === count( $current_component_id ) ) {
+               $current_component_id = reset( $current_component_id );
+       } else {
+               $current_component_id = bp_current_component();
+       }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        $current_component_class = $current_component_id . '-meta';
+
</ins><span class="cx" style="display: block; padding: 0 10px">         if ( bp_is_group_activity() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $generic_class = ' activity-meta ';
</span><span class="cx" style="display: block; padding: 0 10px">        } else {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -255,7 +264,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'container'         => 'div',
</span><span class="cx" style="display: block; padding: 0 10px">                        'container_id'      => '',
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'container_classes' => array( $generic_class, $current_component_class   ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'container_classes' => array( $generic_class, $current_component_class ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         'output'            => '',
</span><span class="cx" style="display: block; padding: 0 10px">                ),
</span><span class="cx" style="display: block; padding: 0 10px">                'nouveau_wrapper'
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -532,8 +541,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        if ( empty( $component ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( 'directory' === $context || 'user' === $context ) {
-                       $component = bp_current_component();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( 'user' === $context ) {
+                       $component = bp_core_get_active_components( array( 'slug' => bp_current_component() ) );
+                       $component = reset( $component );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( 'friends' === $component ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $context   = 'friends';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -543,6 +553,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $component = 'activity';
</span><span class="cx" style="display: block; padding: 0 10px">                } elseif ( 'group' === $context && bp_is_group_members() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $component = 'members';
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                } else {
+                       $component = bp_current_component();
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="trunksrcbptemplatesbpnouveauincludestemplatetagsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-templates/bp-nouveau/includes/template-tags.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-templates/bp-nouveau/includes/template-tags.php      2021-04-17 15:08:42 UTC (rev 12891)
+++ trunk/src/bp-templates/bp-nouveau/includes/template-tags.php        2021-04-18 10:18:06 UTC (rev 12892)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3,7 +3,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * Common template tags
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @since 3.0.0
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 7.0.0
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @version 8.0.0
</ins><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> // Exit if accessed directly.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2068,7 +2068,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        } else {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $data_filter = bp_current_component();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $component_id = bp_current_component();
+               if ( ! bp_is_directory() ) {
+                       $component_id = bp_core_get_active_components( array( 'slug' => $component_id ) );
+                       $component_id = reset( $component_id );
+               }
+
+               $data_filter  = $component_id;
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( 'friends' === $data_filter && bp_is_user_friend_requests() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $data_filter = 'friend_requests';
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2075,7 +2082,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $component['members_select']   = 'members-order-select';
</span><span class="cx" style="display: block; padding: 0 10px">                $component['members_order_by'] = 'members-order-by';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $component['object']           = bp_current_component();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $component['object']           = $component_id;
</ins><span class="cx" style="display: block; padding: 0 10px">                 $component['data_filter']      = $data_filter;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -2232,7 +2239,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        function bp_nouveau_get_filter_options() {
</span><span class="cx" style="display: block; padding: 0 10px">                $output = '';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( 'notifications' === bp_current_component() ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( bp_get_notifications_slug() === bp_current_component() ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $output = bp_nouveau_get_notifications_filters();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                } else {
</span></span></pre>
</div>
</div>

</body>
</html>