Skip to:
Content

BuddyPress.org

Ticket #7840: 7840.patch

File 7840.patch, 4.8 KB (added by imath, 3 years ago)
  • src/bp-templates/bp-nouveau/includes/messages/functions.php

    diff --git src/bp-templates/bp-nouveau/includes/messages/functions.php src/bp-templates/bp-nouveau/includes/messages/functions.php
    index 191a85381..cbc9a00a4 100644
    function bp_nouveau_messages_enqueue_scripts() { 
    7777        add_filter( 'tiny_mce_before_init', 'bp_nouveau_messages_at_on_tinymce_init', 10, 2 );
    7878}
    7979
     80/**
     81 * Should the Private Messages UI be used as a Single Page Application?
     82 *
     83 * @since  3.0.1
     84 *
     85 * @return boolean True to use as a SPA. False otherwise.
     86 */
     87function bp_nouveau_messages_is_spa() {
     88        /**
     89         * Filter here to use Private messages as a Single Page Application
     90         * by returning true.
     91         *
     92         * Some plugins functionality may not work as expected in this case.
     93         *
     94         * @param boolean $value True to use as a SPA. False otherwise.
     95         *                       Default false.
     96         */
     97        return (bool) apply_filters( 'bp_nouveau_messages_is_spa', false );
     98}
     99
    80100/**
    81101 * Localize the strings needed for the messages UI
    82102 *
    function bp_nouveau_messages_localize_scripts( $params = array() ) { 
    114134                        'one'  => __( '(and 1 other)', 'buddypress' ),
    115135                        'more' => __( '(and %d others)', 'buddypress' ),
    116136                ),
     137                'isSpa'   => bp_nouveau_messages_is_spa(),
     138                'rootUrl' => trailingslashit( bp_displayed_user_domain() . bp_get_messages_slug() ),
    117139        );
    118140
    119141        // Star private messages.
    function bp_nouveau_messages_adjust_nav() { 
    179201                if ( 'notices' === $secondary_nav_item->slug ) {
    180202                        bp_core_remove_subnav_item( bp_get_messages_slug(), $secondary_nav_item->slug, 'members' );
    181203                } else {
    182                         $params = array( 'link' => '#' . $secondary_nav_item->slug );
     204                        if ( bp_nouveau_messages_is_spa() ) {
     205                                $params = array( 'link' => '#' . $secondary_nav_item->slug );
     206                        } else {
     207                                $params = array( 'link' => $secondary_nav_item->link . '#' . $secondary_nav_item->slug );
     208                        }
    183209
    184210                        // Make sure Admins won't write a messages from the user's account.
    185211                        if ( 'compose' === $secondary_nav_item->slug ) {
    function bp_nouveau_messages_adjust_admin_nav( $admin_nav ) { 
    208234                        if ( 'notices' === $nav_id ) {
    209235                                $admin_nav[ $nav_iterator ]['href'] = esc_url( add_query_arg( array( 'page' => 'bp-notices' ), bp_get_admin_url( 'users.php' ) ) );
    210236                        } else {
    211                                 $admin_nav[ $nav_iterator ]['href'] = $user_messages_link . '#' . trim( $nav_id );
     237                                if ( bp_nouveau_messages_is_spa() ) {
     238                                        $admin_nav[ $nav_iterator ]['href'] = $user_messages_link . '#' . trim( $nav_id );
     239                                } else {
     240                                        $admin_nav[ $nav_iterator ]['href'] .= '#' . trim( $nav_id );
     241                                }
    212242                        }
    213243                }
    214244        }
  • 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 7c1ad32d4..0d113225e 100644
    window.bp = window.bp || {}; 
    7373
    7474                                        // Otherwise load it
    7575                                        } else {
    76                                                 self.router.navigate( 'compose', { trigger: true } );
     76                                                self.routeUrl( 'compose' );
    7777                                        }
    7878
    7979                                // Other views are classic.
    window.bp = window.bp || {}; 
    8282                                        if ( self.box !== view_id || ! _.isUndefined( self.views.get( 'compose' ) ) ) {
    8383                                                self.clearViews();
    8484
    85                                                 self.router.navigate( view_id, { trigger: true } );
     85                                                self.routeUrl( view_id );
    8686                                        }
    8787                                }
    8888                        } );
    window.bp = window.bp || {}; 
    215215                        this.views.add( { id: 'single', view: single_thread } );
    216216
    217217                        single_thread.inject( '.bp-messages-content' );
     218                },
     219
     220                /**
     221                 * Uses the Single Page Application route or opens an URL.
     222                 *
     223                 * @param  {string} slug The URL slug to root the User to.
     224                 * @return {void}
     225                 */
     226                routeUrl: function( slug ) {
     227                        if ( BP_Nouveau.messages.isSpa ) {
     228                                this.router.navigate( slug, { trigger: true } );
     229                        } else {
     230                                window.location.href = BP_Nouveau.messages.rootUrl + slug + '/#' + slug;
     231                        }
    218232                }
    219233        };
    220234
    window.bp = window.bp || {}; 
    616630                                form.get( 'view' ).remove();
    617631                                bp.Nouveau.Messages.views.remove( { id: 'compose', view: form } );
    618632
    619                                 bp.Nouveau.Messages.router.navigate( 'sentbox', { trigger: true } );
     633                                bp.Nouveau.Messages.routeUrl( 'sentbox' );
    620634                        } ).fail( function( response ) {
    621635                                if ( response.feedback ) {
    622636                                        bp.Nouveau.Messages.displayFeedback( response.feedback, response.type );
    window.bp = window.bp || {}; 
    726740                loadSingleView: function( event ) {
    727741                        event.preventDefault();
    728742
    729                         bp.Nouveau.Messages.router.navigate(
    730                                 'view/' + $( event.currentTarget ).closest( '.thread-content' ).data( 'thread-id' ),
    731                                 { trigger: true }
     743                        bp.Nouveau.Messages.routeUrl(
     744                                'view/' + $( event.currentTarget ).closest( '.thread-content' ).data( 'thread-id' )
    732745                        );
    733746                }
    734747        } );