Skip to:
Content

BuddyPress.org

Changeset 12115


Ignore:
Timestamp:
05/24/2018 05:13:57 AM (6 years ago)
Author:
imath
Message:

BP Nouveau Messages UI: Improve the Backbone router using pushState

In order to be consistent with conditional template tags such as bp_is_messages_compose_screen(), the routes of the Backbone router have been updated to match Messages component canonical URLs

Props sbrajesh, djpaul

See #7840 (Trunk)

Location:
trunk/src/bp-templates/bp-nouveau
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php

    r12104 r12115  
    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>
     
    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>
  • trunk/src/bp-templates/bp-nouveau/includes/messages/functions.php

    r12106 r12115  
    115115            'more' => __( '(and %d others)', 'buddypress' ),
    116116        ),
     117        'rootUrl' => trailingslashit( str_replace( home_url(), '', bp_displayed_user_domain() ) . bp_get_messages_slug() ),
    117118    );
    118119
     
    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    }
     
    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    }
  • trunk/src/bp-templates/bp-nouveau/js/buddypress-messages.js

    r12082 r12115  
    3838            this.setupNav();
    3939
    40             Backbone.history.start();
     40            Backbone.history.start( {
     41                pushState: true,
     42                root: BP_Nouveau.messages.rootUrl
     43            } );
    4144        },
    4245
     
    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
     
    8386                        self.clearViews();
    8487
    85                         self.router.navigate( view_id, { trigger: true } );
     88                        self.router.navigate( view_id + '/', { trigger: true } );
    8689                    }
    8790                }
     
    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 ) {
     
    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.
     
    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    } );
     
    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' )
     
    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        },
Note: See TracChangeset for help on using the changeset viewer.