Skip to:
Content

BuddyPress.org

Ticket #7840: 7840.pushState.3.patch

File 7840.pushState.3.patch, 6.9 KB (added by imath, 3 years ago)
  • 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 c5ddaddf9..f06425d07 100644
     
    154154        <div class="thread-content" data-thread-id="{{data.id}}">
    155155                <div class="thread-subject">
    156156                        <span class="thread-count">({{data.count}})</span>
    157                         <a class="subject" href="#view/{{data.id}}">{{data.subject}}</a>
     157                        <a class="subject" href="../view/{{data.id}}/">{{data.subject}}</a>
    158158                </div>
    159159                <p class="excerpt">{{data.excerpt}}</p>
    160160        </div>
     
    203203
    204204                                        <# } #>
    205205
    206                                         <a href="#view/{{data.id}}" class="message-action-view bp-tooltip bp-icons" data-bp-tooltip="<?php esc_attr_e( 'View full conversation and reply.', 'buddypress' ); ?>">
     206                                        <a href="../view/{{data.id}}/" class="message-action-view bp-tooltip bp-icons" data-bp-action="view" data-bp-tooltip="<?php esc_attr_e( 'View full conversation and reply.', 'buddypress' ); ?>">
    207207                                                <span class="bp-screen-reader-text"><?php esc_html_e( 'View full conversation and reply.', 'buddypress' ); ?></span>
    208208                                        </a>
    209209                                </div>
  • 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..97c1b09f7 100644
    function bp_nouveau_messages_localize_scripts( $params = array() ) { 
    114114                        'one'  => __( '(and 1 other)', 'buddypress' ),
    115115                        'more' => __( '(and %d others)', 'buddypress' ),
    116116                ),
     117                'rootUrl' => trailingslashit( str_replace( home_url(), '', bp_displayed_user_domain() ) . bp_get_messages_slug() ),
    117118        );
    118119
    119120        // Star private messages.
    function bp_nouveau_messages_adjust_nav() { 
    178179
    179180                if ( 'notices' === $secondary_nav_item->slug ) {
    180181                        bp_core_remove_subnav_item( bp_get_messages_slug(), $secondary_nav_item->slug, 'members' );
    181                 } else {
    182                         $params = array( 'link' => '#' . $secondary_nav_item->slug );
    183 
    184                         // Make sure Admins won't write a messages from the user's account.
    185                         if ( 'compose' === $secondary_nav_item->slug ) {
    186                                 $params['user_has_access'] = bp_is_my_profile();
    187                         }
    188 
    189                         $bp->members->nav->edit_nav( $params, $secondary_nav_item->slug, bp_get_messages_slug() );
     182                } elseif ( 'compose' === $secondary_nav_item->slug ) {
     183                        $bp->members->nav->edit_nav( array(
     184                                'user_has_access' => bp_is_my_profile()
     185                        ), $secondary_nav_item->slug, bp_get_messages_slug() );
    190186                }
    191187        }
    192188}
    function bp_nouveau_messages_adjust_admin_nav( $admin_nav ) { 
    204200        foreach ( $admin_nav as $nav_iterator => $nav ) {
    205201                $nav_id = str_replace( 'my-account-messages-', '', $nav['id'] );
    206202
    207                 if ( 'my-account-messages' !== $nav_id ) {
    208                         if ( 'notices' === $nav_id ) {
    209                                 $admin_nav[ $nav_iterator ]['href'] = esc_url( add_query_arg( array( 'page' => 'bp-notices' ), bp_get_admin_url( 'users.php' ) ) );
    210                         } else {
    211                                 $admin_nav[ $nav_iterator ]['href'] = $user_messages_link . '#' . trim( $nav_id );
    212                         }
     203                if ( 'notices' === $nav_id ) {
     204                        $admin_nav[ $nav_iterator ]['href'] = esc_url( add_query_arg( array(
     205                                'page' => 'bp-notices'
     206                        ), bp_get_admin_url( 'users.php' ) ) );
    213207                }
    214208        }
    215209
  • 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..699072f8f 100644
    window.bp = window.bp || {}; 
    3737
    3838                        this.setupNav();
    3939
    40                         Backbone.history.start();
     40                        Backbone.history.start( {
     41                                pushState: true,
     42                                root: BP_Nouveau.messages.rootUrl
     43                        } );
    4144                },
    4245
    4346                setupNav: function() {
    window.bp = window.bp || {}; 
    6972                                                }
    7073
    7174                                                // Navigate back to current box
    72                                                 self.router.navigate( self.box, { trigger: true } );
     75                                                self.router.navigate( self.box + '/', { trigger: true } );
    7376
    7477                                        // Otherwise load it
    7578                                        } else {
    76                                                 self.router.navigate( 'compose', { trigger: true } );
     79                                                self.router.navigate( 'compose/', { trigger: true } );
    7780                                        }
    7881
    7982                                // Other views are classic.
    window.bp = window.bp || {}; 
    8285                                        if ( self.box !== view_id || ! _.isUndefined( self.views.get( 'compose' ) ) ) {
    8386                                                self.clearViews();
    8487
    85                                                 self.router.navigate( view_id, { trigger: true } );
     88                                                self.router.navigate( view_id + '/', { trigger: true } );
    8689                                        }
    8790                                }
    8891                        } );
    window.bp = window.bp || {}; 
    616619                                form.get( 'view' ).remove();
    617620                                bp.Nouveau.Messages.views.remove( { id: 'compose', view: form } );
    618621
    619                                 bp.Nouveau.Messages.router.navigate( 'sentbox', { trigger: true } );
     622                                bp.Nouveau.Messages.router.navigate( 'sentbox/', { trigger: true } );
    620623                        } ).fail( function( response ) {
    621624                                if ( response.feedback ) {
    622625                                        bp.Nouveau.Messages.displayFeedback( response.feedback, response.type );
    window.bp = window.bp || {}; 
    712715                        bp.Nouveau.Messages.removeFeedback();
    713716
    714717                        // If the click is done on an active conversation, open it.
    715                         if ( $( event.currentTarget ).closest( '.thread-item' ).hasClass( 'selected' ) ) {
    716                                 this.loadSingleView( event );
     718                        if ( target.closest( '.thread-item' ).hasClass( 'selected' ) ) {
     719                                bp.Nouveau.Messages.router.navigate(
     720                                        'view/' + target.closest( '.thread-content' ).data( 'thread-id' ) + '/',
     721                                        { trigger: true }
     722                                );
    717723
    718724                        // Otherwise activate the conversation and display its preview.
    719725                        } else {
    window.bp = window.bp || {}; 
    721727
    722728                                $( '.message-action-view' ).focus();
    723729                        }
    724                 },
    725 
    726                 loadSingleView: function( event ) {
    727                         event.preventDefault();
    728 
    729                         bp.Nouveau.Messages.router.navigate(
    730                                 'view/' + $( event.currentTarget ).closest( '.thread-content' ).data( 'thread-id' ),
    731                                 { trigger: true }
    732                         );
    733730                }
    734731        } );
    735732
    window.bp = window.bp || {}; 
    895892
    896893                        mid = model.get( 'id' );
    897894
    898                         if ( 'star' === action || 'unstar' === action ) {
     895                        // Open the full conversation
     896                        if ( 'view' === action ) {
     897                                bp.Nouveau.Messages.router.navigate(
     898                                        'view/' + mid + '/',
     899                                        { trigger: true }
     900                                );
     901
     902                                return;
     903
     904                        // Star/Unstar actions needs to use a specific id and nonce.
     905                        } else if ( 'star' === action || 'unstar' === action ) {
    899906                                options.data = {
    900907                                        'star_nonce' : model.get( 'star_nonce' )
    901908                                };
    window.bp = window.bp || {}; 
    13231330
    13241331        bp.Nouveau.Messages.Router = Backbone.Router.extend( {
    13251332                routes: {
    1326                         'compose' : 'composeMessage',
    1327                         'view/:id': 'viewMessage',
    1328                         'sentbox' : 'sentboxView',
    1329                         'starred' : 'starredView',
    1330                         'inbox'   : 'inboxView',
     1333                        'compose/' : 'composeMessage',
     1334                        'view/:id/': 'viewMessage',
     1335                        'sentbox/' : 'sentboxView',
     1336                        'starred/' : 'starredView',
     1337                        'inbox/'   : 'inboxView',
    13311338                        ''        : 'inboxView'
    13321339                },
    13331340