<!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][13193] trunk/src: Inject Group's Invites & Manage Members JS templates into footer</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/13193">13193</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/13193","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-12-18 19:25:13 +0000 (Sat, 18 Dec 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'>Inject Group's Invites & Manage Members JS templates into footer

To make sure JS Templates are injected without being altered in WordPress themes supporting the Full Site Editing feature, we are now doing it inside the page's footer.

HTML placeholders for both UI have been moved out of the JS Templates and a backward compatibility for potential plugins still expecting these placeholders into these templates has been put in place.

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

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcbpgroupsbpgroupsadminphp">trunk/src/bp-groups/bp-groups-admin.php</a></li>
<li><a href="#trunksrcbpgroupsbpgroupstemplatephp">trunk/src/bp-groups/bp-groups-template.php</a></li>
<li><a href="#trunksrcbptemplatesbpnouveaubuddypresscommonjstemplatesgroupmembersindexphp">trunk/src/bp-templates/bp-nouveau/buddypress/common/js-templates/group-members/index.php</a></li>
<li><a href="#trunksrcbptemplatesbpnouveaubuddypresscommonjstemplatesinvitesindexphp">trunk/src/bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php</a></li>
<li><a href="#trunksrcbptemplatesbpnouveaubuddypressgroupssingleadminmanagemembersphp">trunk/src/bp-templates/bp-nouveau/buddypress/groups/single/admin/manage-members.php</a></li>
<li><a href="#trunksrcbptemplatesbpnouveauincludesgroupstemplatetagsphp">trunk/src/bp-templates/bp-nouveau/includes/groups/template-tags.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcbpgroupsbpgroupsadminphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-groups/bp-groups-admin.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-groups/bp-groups-admin.php   2021-12-17 19:34:03 UTC (rev 13192)
+++ trunk/src/bp-groups/bp-groups-admin.php     2021-12-18 19:25:13 UTC (rev 13193)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -936,7 +936,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        bp_groups_get_group_manage_members_script_data( $item->id )
</span><span class="cx" style="display: block; padding: 0 10px">                );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                bp_get_template_part( 'common/js-templates/group-members/index' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Inject the Group Manage Members interface.
+               bp_groups_manage_group_members_interface( 'admin_footer' );
</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">                 * Echo out the JavaScript variable.
</span></span></pre></div>
<a id="trunksrcbpgroupsbpgroupstemplatephp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/bp-groups/bp-groups-template.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-groups/bp-groups-template.php        2021-12-17 19:34:03 UTC (rev 13192)
+++ trunk/src/bp-groups/bp-groups-template.php  2021-12-18 19:25:13 UTC (rev 13193)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6580,3 +6580,56 @@
</span><span class="cx" style="display: block; padding: 0 10px"> function bp_groups_has_manage_group_members_templates() {
</span><span class="cx" style="display: block; padding: 0 10px">        return file_exists( bp_locate_template( 'common/js-templates/group-members/index.php' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+/**
+ * Prints the JS Templates to manage the Group's members.
+ *
+ * @since 10.0.0
+ */
+function bp_groups_print_manage_group_members_templates() {
+       bp_get_template_part( 'common/js-templates/group-members/index' );
+}
+
+/**
+ * Prints the HTML placeholders to manage the Group's members.
+ *
+ * @since 10.0.0
+ */
+function bp_groups_print_manage_group_members_placeholders() {
+       ?>
+       <div id="group-manage-members-ui" class="standard-form">
+               <ul class="subnav-filters">
+                       <li id="group-roles-filter" class="last filter"><?php // Placeholder for the Group Role Tabs ?></li>
+                       <li id="group-members-pagination" class="left-menu"><?php // Placeholder for paginate links ?></li>
+                       <li id="group-members-search-form" class="bp-search"><?php // Placeholder for search form ?></li>
+               </ul>
+               <table id="group-members-list-table" class="<?php echo is_admin() ? 'widefat bp-group-members' : 'bp-list'; ?>"><?php // Placeholder to list members ?></table>
+       </div>
+       <?php
+}
+
+/**
+ * Outputs the Manage Group Members Backbone UI.
+ *
+ * @since 10.0.0
+ *
+ * @param string $hook The hook to use to inject the JS Templates.
+ */
+function bp_groups_manage_group_members_interface( $hook = 'wp_footer' ) {
+       /**
+        * Get the templates to manage Group Members using the BP REST API.
+        *
+        * @since 5.0.0
+        * @since 10.0.0 Hook to the `wp_footer` action to print the JS templates.
+        */
+       add_action( $hook, 'bp_groups_print_manage_group_members_templates' );
+       bp_groups_print_manage_group_members_placeholders();
+
+       /**
+        * Private hook to preserve backward compatibility with plugins needing the above placeholders to be located
+        * into: `bp-templates/bp-nouveau/buddypress/common/js-templates/group-members/index.php`.
+        *
+        * @since 10.0.0
+        */
+       do_action( '_bp_groups_print_manage_group_members_placeholders' );
+}
</ins></span></pre></div>
<a id="trunksrcbptemplatesbpnouveaubuddypresscommonjstemplatesgroupmembersindexphp"></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/js-templates/group-members/index.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/js-templates/group-members/index.php  2021-12-17 19:34:03 UTC (rev 13192)
+++ trunk/src/bp-templates/bp-nouveau/buddypress/common/js-templates/group-members/index.php    2021-12-18 19:25:13 UTC (rev 13193)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -6,27 +6,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * dealing with a group's membership management.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="cx" style="display: block; padding: 0 10px">  * @since 5.0.0
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">- * @version 5.0.0
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @version 10.0.0
</ins><span class="cx" style="display: block; padding: 0 10px">  */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-?>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-<?php
-/**
- * Placeholder to inject elements of the UI
- * to manage Group members.
- *
- * @since 5.0.0
- * @version 5.0.0
- */
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+// Backward Compatibility for plugins still needing the placeholders to be located into this file.
+if ( ! did_action( '_bp_groups_print_manage_group_members_placeholders' ) ) {
+       /**
+        * Placeholders to inject elements of the UI
+        * to manage Group members.
+        *
+        * @since 5.0.0
+        */
+       bp_groups_print_manage_group_members_placeholders();
+}
</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 id="group-manage-members-ui" class="standard-form">
-       <ul class="subnav-filters">
-               <li id="group-roles-filter" class="last filter"><?php // Placeholder for the Group Role Tabs ?></li>
-               <li id="group-members-pagination" class="left-menu"><?php // Placeholder for paginate links ?></li>
-               <li id="group-members-search-form" class="bp-search"><?php // Placeholder for search form ?></li>
-       </ul>
-       <table id="group-members-list-table" class="<?php echo is_admin() ? 'widefat bp-group-members' : 'bp-list'; ?>"><?php // Placeholder to list members ?></table>
-</div>
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> <script type="text/html" id="tmpl-bp-manage-members-updating">
</span><span class="cx" style="display: block; padding: 0 10px">        <# if ( ! data.type ) { #>
</span></span></pre></div>
<a id="trunksrcbptemplatesbpnouveaubuddypresscommonjstemplatesinvitesindexphp"></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/js-templates/invites/index.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/js-templates/invites/index.php        2021-12-17 19:34:03 UTC (rev 13192)
+++ trunk/src/bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php  2021-12-18 19:25:13 UTC (rev 13193)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -8,34 +8,19 @@
</span><span class="cx" style="display: block; padding: 0 10px">  * @since 3.0.0
</span><span class="cx" style="display: block; padding: 0 10px">  * @version 10.0.0
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+// Backward Compatibility for plugins still needing the placeholders to be located into this file.
+if ( ! did_action( '_bp_nouveau_group_print_invites_placeholders' ) ) {
+       /**
+        * Placeholders to inject elements of the UI
+        * to manage Group members.
+        *
+        * @since 5.0.0
+        */
+       bp_nouveau_group_print_invites_placeholders();
+}
</ins><span class="cx" style="display: block; padding: 0 10px"> ?>
</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 ( bp_is_group_create() ) : ?>
-
-       <h3 class="bp-screen-title creation-step-name">
-               <?php esc_html_e( 'Invite Members', 'buddypress' ); ?>
-       </h3>
-
-<?php else : ?>
-
-       <h2 class="bp-screen-title">
-               <?php esc_html_e( 'Invite Members', 'buddypress' ); ?>
-       </h2>
-
-<?php endif; ?>
-
-<div id="group-invites-container">
-
-       <nav class="<?php bp_nouveau_single_item_subnav_classes(); ?>" id="subnav" role="navigation" aria-label="<?php esc_attr_e( 'Group invitations menu', 'buddypress' ); ?>"></nav>
-
-       <div class="group-invites-column">
-               <div class="subnav-filters group-subnav-filters bp-invites-filters"></div>
-               <div class="bp-invites-feedback"></div>
-               <div class="members bp-invites-content"></div>
-       </div>
-
-</div>
-
</del><span class="cx" style="display: block; padding: 0 10px"> <script type="text/html" id="tmpl-bp-group-invites-feedback">
</span><span class="cx" style="display: block; padding: 0 10px">        <div class="bp-feedback {{data.type}}">
</span><span class="cx" style="display: block; padding: 0 10px">                <span class="bp-icon" aria-hidden="true"></span>
</span></span></pre></div>
<a id="trunksrcbptemplatesbpnouveaubuddypressgroupssingleadminmanagemembersphp"></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/groups/single/admin/manage-members.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/bp-templates/bp-nouveau/buddypress/groups/single/admin/manage-members.php       2021-12-17 19:34:03 UTC (rev 13192)
+++ trunk/src/bp-templates/bp-nouveau/buddypress/groups/single/admin/manage-members.php 2021-12-18 19:25:13 UTC (rev 13193)
</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">  * BP Nouveau Group's manage members template.
</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 5.0.0
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @version 10.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"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -14,13 +14,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <p class="bp-help-text"><?php esc_html_e( 'Manage your group members; promote to moderators, admins or demote or ban.', 'buddypress' ); ?></p>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> <?php if ( bp_rest_api_is_available() ) :
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        /**
-        * Get the templates to manage Group Members using the BP REST API.
-        *
-        * @since 5.0.0
-        */
-       bp_get_template_part( 'common/js-templates/group-members/index' );
</del><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        bp_groups_manage_group_members_interface();
+
</ins><span class="cx" style="display: block; padding: 0 10px"> else : ?>
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        <dl class="groups-manage-members-list">
</span></span></pre></div>
<a id="trunksrcbptemplatesbpnouveauincludesgroupstemplatetagsphp"></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/groups/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/groups/template-tags.php       2021-12-17 19:34:03 UTC (rev 13192)
+++ trunk/src/bp-templates/bp-nouveau/includes/groups/template-tags.php 2021-12-18 19:25:13 UTC (rev 13193)
</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">  * Groups 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 9.0.0
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ * @version 10.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">@@ -157,6 +157,46 @@
</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">+ * Prints the JS Templates to invite new members to join the Group.
+ *
+ * @since 10.0.0
+ */
+function bp_nouveau_group_print_invites_templates() {
+       bp_get_template_part( 'common/js-templates/invites/index' );
+}
+
+/**
+ * Prints the HTML placeholders to invite new members to join the Group.
+ *
+ * @since 10.0.0
+ */
+function bp_nouveau_group_print_invites_placeholders() {
+       if ( bp_is_group_create() ) : ?>
+
+               <h3 class="bp-screen-title creation-step-name">
+                       <?php esc_html_e( 'Invite Members', 'buddypress' ); ?>
+               </h3>
+
+       <?php else : ?>
+
+               <h2 class="bp-screen-title">
+                       <?php esc_html_e( 'Invite Members', 'buddypress' ); ?>
+               </h2>
+
+       <?php endif; ?>
+
+       <div id="group-invites-container">
+               <nav class="<?php bp_nouveau_single_item_subnav_classes(); ?>" id="subnav" role="navigation" aria-label="<?php esc_attr_e( 'Group invitations menu', 'buddypress' ); ?>"></nav>
+               <div class="group-invites-column">
+                       <div class="subnav-filters group-subnav-filters bp-invites-filters"></div>
+                       <div class="bp-invites-feedback"></div>
+                       <div class="members bp-invites-content"></div>
+               </div>
+       </div>
+       <?php
+}
+
+/**
</ins><span class="cx" style="display: block; padding: 0 10px">  * Load the Group Invites UI.
</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><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -171,9 +211,23 @@
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><span class="cx" style="display: block; padding: 0 10px">        do_action( 'bp_before_group_send_invites_content' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        bp_get_template_part( 'common/js-templates/invites/index' );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ /**
+        * Get the templates to manage Group Members using the BP REST API.
+        *
+        * @since 10.0.0 Hook to the `wp_footer` action to print the JS templates.
+        */
+       add_action( 'wp_footer', 'bp_nouveau_group_print_invites_templates' );
+       bp_nouveau_group_print_invites_placeholders();
</ins><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">+         * Private hook to preserve backward compatibility with plugins needing the above placeholders to be located
+        * into: `bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php`.
+        *
+        * @since 10.0.0
+        */
+       do_action( '_bp_nouveau_group_print_invites_placeholders' );
+
+       /**
</ins><span class="cx" style="display: block; padding: 0 10px">          * Fires after the send invites content.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @since 1.2.0
</span></span></pre>
</div>
</div>

</body>
</html>