diff --git src/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php src/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php
index 7c074ed5f..a16d9f8e9 100644
|
|
|
21 | 21 | </div> |
22 | 22 | </script> |
23 | 23 | |
| 24 | <?php |
| 25 | /** |
| 26 | * This view is used to inject hooks buffer |
| 27 | */ |
| 28 | ?> |
| 29 | <script type="text/html" id="tmpl-bp-messages-hook"> |
| 30 | {{{data.extraContent}}} |
| 31 | </script> |
| 32 | |
24 | 33 | <script type="text/html" id="tmpl-bp-messages-form"> |
25 | 34 | <?php bp_nouveau_messages_hook( 'before', 'compose_content' ); ?> |
26 | 35 | |
diff --git src/bp-templates/bp-nouveau/includes/messages/ajax.php src/bp-templates/bp-nouveau/includes/messages/ajax.php
index f49175016..98d5bc287 100644
|
|
function bp_nouveau_ajax_get_user_message_threads() { |
223 | 223 | ) ); |
224 | 224 | } |
225 | 225 | |
226 | | if ( isset( $_POST['box'] ) && 'starred' === $_POST['box'] ) { |
227 | | $star_filter = true; |
| 226 | $bp = buddypress(); |
| 227 | $reset_action = $bp->current_action; |
| 228 | |
| 229 | // Override bp_current_action(). |
| 230 | if ( isset( $_POST['box'] ) ) { |
| 231 | $bp->current_action = $_POST['box']; |
| 232 | } |
228 | 233 | |
229 | | // Add the message thread filter. |
| 234 | // Add the message thread filter. |
| 235 | if ( 'starred' === $bp->current_action ) { |
230 | 236 | add_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_filter_starred_message_threads' ); |
231 | 237 | } |
232 | 238 | |
233 | 239 | // Simulate the loop. |
234 | 240 | if ( ! bp_has_message_threads( bp_ajax_querystring( 'messages' ) ) ) { |
| 241 | // Remove the bp_current_action() override. |
| 242 | $bp->current_action = $reset_action; |
| 243 | |
235 | 244 | wp_send_json_error( array( |
236 | 245 | 'feedback' => __( 'Sorry, no messages were found.', 'buddypress' ), |
237 | 246 | 'type' => 'info' |
238 | 247 | ) ); |
239 | 248 | } |
240 | 249 | |
241 | | if ( ! empty( $star_filter ) ) { |
242 | | // remove the message thread filter. |
| 250 | // remove the message thread filter. |
| 251 | if ( 'starred' === $bp->current_action ) { |
243 | 252 | remove_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_filter_starred_message_threads' ); |
244 | 253 | } |
245 | 254 | |
… |
… |
function bp_nouveau_ajax_get_user_message_threads() { |
319 | 328 | |
320 | 329 | $threads->threads = array_filter( $threads->threads ); |
321 | 330 | |
| 331 | $extra_content = bp_nouveau_messages_catch_hook_content( array( |
| 332 | 'beforeLoop' => 'bp_before_member_messages_loop', |
| 333 | 'afterLoop' => 'bp_after_member_messages_loop', |
| 334 | ) ); |
| 335 | |
| 336 | if ( array_filter( $extra_content ) ) { |
| 337 | $threads->extraContent = $extra_content; |
| 338 | } |
| 339 | |
| 340 | // Remove the bp_current_action() override. |
| 341 | $bp->current_action = $reset_action; |
| 342 | |
| 343 | // Return the successfull reply. |
322 | 344 | wp_send_json_success( $threads ); |
323 | 345 | } |
324 | 346 | |
diff --git src/bp-templates/bp-nouveau/js/buddypress-messages.js src/bp-templates/bp-nouveau/js/buddypress-messages.js
index 699072f8f..5a0fd8947 100644
|
|
window.bp = window.bp || {}; |
354 | 354 | this.options.box = bp.Nouveau.Messages.box; |
355 | 355 | } |
356 | 356 | |
| 357 | if ( ! _.isUndefined( resp.extraContent ) ) { |
| 358 | _.extend( this.options, _.pick( resp.extraContent, [ |
| 359 | 'beforeLoop', |
| 360 | 'afterLoop' |
| 361 | ] ) ); |
| 362 | } |
| 363 | |
357 | 364 | return resp.threads; |
358 | 365 | }, |
359 | 366 | |
… |
… |
window.bp = window.bp || {}; |
466 | 473 | } |
467 | 474 | } ); |
468 | 475 | |
| 476 | // Hook view |
| 477 | bp.Views.Hook = bp.Nouveau.Messages.View.extend( { |
| 478 | tagName: 'div', |
| 479 | template : bp.template( 'bp-messages-hook' ), |
| 480 | |
| 481 | initialize: function() { |
| 482 | this.model = new Backbone.Model( { |
| 483 | extraContent: this.options.extraContent |
| 484 | } ); |
| 485 | |
| 486 | this.el.className = 'bp-messages-hook'; |
| 487 | |
| 488 | if ( this.options.className ) { |
| 489 | this.el.className += ' ' + this.options.className; |
| 490 | } |
| 491 | } |
| 492 | } ); |
| 493 | |
469 | 494 | bp.Views.messageEditor = bp.Nouveau.Messages.View.extend( { |
470 | 495 | template : bp.template( 'bp-messages-editor' ), |
471 | 496 | |
… |
… |
window.bp = window.bp || {}; |
642 | 667 | }, |
643 | 668 | |
644 | 669 | initialize: function() { |
645 | | // Add the threads parent view |
646 | | this.views.add( new bp.Nouveau.Messages.View( { tagName: 'ul', id: 'message-threads', className: 'message-lists' } ) ); |
| 670 | var Views = [ |
| 671 | new bp.Nouveau.Messages.View( { tagName: 'ul', id: 'message-threads', className: 'message-lists' } ), |
| 672 | new bp.Views.previewThread( { collection: this.collection } ) |
| 673 | ]; |
647 | 674 | |
648 | | // Add the preview Active Thread view |
649 | | this.views.add( new bp.Views.previewThread( { collection: this.collection } ) ); |
| 675 | _.each( Views, function( view ) { |
| 676 | this.views.add( view ); |
| 677 | }, this ); |
650 | 678 | |
651 | 679 | // Load threads for the active view |
652 | 680 | this.requestThreads(); |
… |
… |
window.bp = window.bp || {}; |
662 | 690 | |
663 | 691 | this.collection.fetch( { |
664 | 692 | data : _.pick( this.options, 'box' ), |
665 | | success : this.threadsFetched, |
| 693 | success : _.bind( this.threadsFetched, this ), |
666 | 694 | error : this.threadsFetchError |
667 | 695 | } ); |
668 | 696 | }, |
… |
… |
window.bp = window.bp || {}; |
670 | 698 | threadsFetched: function() { |
671 | 699 | bp.Nouveau.Messages.removeFeedback(); |
672 | 700 | |
| 701 | // Display the bp_after_member_messages_loop hook. |
| 702 | if ( this.collection.options.afterLoop ) { |
| 703 | this.views.add( new bp.Views.Hook( { extraContent: this.collection.options.afterLoop, className: 'after-messages-loop' } ), { at: 1 } ); |
| 704 | } |
| 705 | |
| 706 | // Display the bp_before_member_messages_loop hook. |
| 707 | if ( this.collection.options.beforeLoop ) { |
| 708 | this.views.add( new bp.Views.Hook( { extraContent: this.collection.options.beforeLoop, className: 'before-messages-loop' } ), { at: 0 } ); |
| 709 | } |
| 710 | |
673 | 711 | // Inform the user about how to use the UI. |
674 | 712 | bp.Nouveau.Messages.displayFeedback( BP_Nouveau.messages.howto, 'info' ); |
675 | 713 | }, |