Skip to:
Content

BuddyPress.org

Ticket #7850: 7850.3.patch

File 7850.3.patch, 5.5 KB (added by imath, 6 years ago)

Refresh now that #7847 is fixed

  • src/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php

    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
     
    2121        </div>
    2222</script>
    2323
     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
    2433<script type="text/html" id="tmpl-bp-messages-form">
    2534        <?php bp_nouveau_messages_hook( 'before', 'compose_content' ); ?>
    2635
  • src/bp-templates/bp-nouveau/includes/messages/ajax.php

    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() { 
    223223                ) );
    224224        }
    225225
    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        }
    228233
    229                 // Add the message thread filter.
     234        // Add the message thread filter.
     235        if ( 'starred' === $bp->current_action ) {
    230236                add_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_filter_starred_message_threads' );
    231237        }
    232238
    233239        // Simulate the loop.
    234240        if ( ! bp_has_message_threads( bp_ajax_querystring( 'messages' ) ) ) {
     241                // Remove the bp_current_action() override.
     242                $bp->current_action = $reset_action;
     243
    235244                wp_send_json_error( array(
    236245                        'feedback' => __( 'Sorry, no messages were found.', 'buddypress' ),
    237246                        'type'     => 'info'
    238247                ) );
    239248        }
    240249
    241         if ( ! empty( $star_filter ) ) {
    242                 // remove the message thread filter.
     250        // remove the message thread filter.
     251        if ( 'starred' === $bp->current_action ) {
    243252                remove_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_filter_starred_message_threads' );
    244253        }
    245254
    function bp_nouveau_ajax_get_user_message_threads() { 
    319328
    320329        $threads->threads = array_filter( $threads->threads );
    321330
     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.
    322344        wp_send_json_success( $threads );
    323345}
    324346
  • src/bp-templates/bp-nouveau/js/buddypress-messages.js

    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 || {}; 
    354354                                this.options.box = bp.Nouveau.Messages.box;
    355355                        }
    356356
     357                        if ( ! _.isUndefined( resp.extraContent ) ) {
     358                                _.extend( this.options, _.pick( resp.extraContent, [
     359                                        'beforeLoop',
     360                                        'afterLoop'
     361                                ] ) );
     362                        }
     363
    357364                        return resp.threads;
    358365                },
    359366
    window.bp = window.bp || {}; 
    466473                }
    467474        } );
    468475
     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
    469494        bp.Views.messageEditor = bp.Nouveau.Messages.View.extend( {
    470495                template  : bp.template( 'bp-messages-editor' ),
    471496
    window.bp = window.bp || {}; 
    642667                },
    643668
    644669                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                        ];
    647674
    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 );
    650678
    651679                        // Load threads for the active view
    652680                        this.requestThreads();
    window.bp = window.bp || {}; 
    662690
    663691                        this.collection.fetch( {
    664692                                data    : _.pick( this.options, 'box' ),
    665                                 success : this.threadsFetched,
     693                                success : _.bind( this.threadsFetched, this ),
    666694                                error   : this.threadsFetchError
    667695                        } );
    668696                },
    window.bp = window.bp || {}; 
    670698                threadsFetched: function() {
    671699                        bp.Nouveau.Messages.removeFeedback();
    672700
     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
    673711                        // Inform the user about how to use the UI.
    674712                        bp.Nouveau.Messages.displayFeedback( BP_Nouveau.messages.howto, 'info' );
    675713                },