Skip to:
Content

BuddyPress.org

Changeset 12002


Ignore:
Timestamp:
04/27/2018 04:52:27 PM (8 years ago)
Author:
imath
Message:

BP Nouveau: use Moment.js & Livestamp.js to update activity timestamps

Before these two JavaScript libraries were introduced in BuddyPress Core (2.7.0), i added some custom JavaScript code to perform the dynamic activity timestamp update task. Now these two libraries are available and do the job way better, it is about time to say goodbye to this code.

Fixes #7772

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

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-templates/bp-nouveau/buddypress-functions.php

    r11962 r12002  
    383383                        'view'                => __( 'View', 'buddypress' ),
    384384                        'object_nav_parent'   => '#buddypress',
    385                         'time_since'          => array(
    386                                 'sometime'    => _x( 'sometime', 'javascript time since', 'buddypress' ),
    387                                 'now'         => _x( 'right now', 'javascript time since', 'buddypress' ),
    388                                 'ago'         => _x( '% ago', 'javascript time since', 'buddypress' ),
    389                                 'separator'   => _x( ',', 'Separator in javascript time since', 'buddypress' ),
    390                                 'year'        => _x( '% year', 'javascript time since singular', 'buddypress' ),
    391                                 'years'       => _x( '% years', 'javascript time since plural', 'buddypress' ),
    392                                 'month'       => _x( '% month', 'javascript time since singular', 'buddypress' ),
    393                                 'months'      => _x( '% months', 'javascript time since plural', 'buddypress' ),
    394                                 'week'        => _x( '% week', 'javascript time since singular', 'buddypress' ),
    395                                 'weeks'       => _x( '% weeks', 'javascript time since plural', 'buddypress' ),
    396                                 'day'         => _x( '% day', 'javascript time since singular', 'buddypress' ),
    397                                 'days'        => _x( '% days', 'javascript time since plural', 'buddypress' ),
    398                                 'hour'        => _x( '% hour', 'javascript time since singular', 'buddypress' ),
    399                                 'hours'       => _x( '% hours', 'javascript time since plural', 'buddypress' ),
    400                                 'minute'      => _x( '% minute', 'javascript time since singular', 'buddypress' ),
    401                                 'minutes'     => _x( '% minutes', 'javascript time since plural', 'buddypress' ),
    402                                 'second'      => _x( '% second', 'javascript time since singular', 'buddypress' ),
    403                                 'seconds'     => _x( '% seconds', 'javascript time since plural', 'buddypress' ),
    404                                 'time_chunks' => array(
    405                                         'a_year'   => YEAR_IN_SECONDS,
    406                                         'b_month'  => 30 * DAY_IN_SECONDS,
    407                                         'c_week'   => WEEK_IN_SECONDS,
    408                                         'd_day'    => DAY_IN_SECONDS,
    409                                         'e_hour'   => HOUR_IN_SECONDS,
    410                                         'f_minute' => MINUTE_IN_SECONDS,
    411                                         'g_second' => 1,
    412                                 ),
    413                         ),
    414385                );
    415386
  • trunk/src/bp-templates/bp-nouveau/includes/activity/functions.php

    r11900 r12002  
    426426
    427427        return $classes;
    428 }
    429 
    430 /**
    431  * @since 3.0.0
    432  */
    433 function bp_nouveau_activity_time_since( $time_since, $activity = null ) {
    434         if ( ! isset( $activity->date_recorded ) ) {
    435                 return $time_since;
    436         }
    437 
    438         return apply_filters(
    439                 'bp_nouveau_activity_time_since', sprintf(
    440                         '<time class="time-since" datetime="%1$s" data-bp-timestamp="%2$d">%3$s</time>',
    441                         esc_attr( $activity->date_recorded ),
    442                         esc_attr( strtotime( $activity->date_recorded ) ),
    443                         esc_attr( bp_core_time_since( $activity->date_recorded ) )
    444                 )
    445         );
    446 }
    447 
    448 /**
    449  * @since 3.0.0
    450  */
    451 function bp_nouveau_activity_allowed_tags( $activity_allowedtags = array() ) {
    452         $activity_allowedtags['time']                      = array();
    453         $activity_allowedtags['time']['class']             = array();
    454         $activity_allowedtags['time']['datetime']          = array();
    455         $activity_allowedtags['time']['data-bp-timestamp'] = array();
    456 
    457         return $activity_allowedtags;
    458428}
    459429
  • trunk/src/bp-templates/bp-nouveau/includes/activity/loader.php

    r11902 r12002  
    9797                add_filter( 'bp_get_activity_action_pre_meta', 'bp_nouveau_activity_secondary_avatars', 10, 2 );
    9898                add_filter( 'bp_get_activity_css_class', 'bp_nouveau_activity_scope_newest_class', 10, 1 );
    99                 add_filter( 'bp_activity_time_since', 'bp_nouveau_activity_time_since', 10, 2 );
    100                 add_filter( 'bp_activity_allowed_tags', 'bp_nouveau_activity_allowed_tags', 10, 1 );
    10199        }
    102100}
  • trunk/src/bp-templates/bp-nouveau/js/buddypress-activity.js

    r11992 r12002  
    9696
    9797                        $.extend( data, { bp_heartbeat: bp.Nouveau.getStorage( 'bp-activity' ) } );
    98 
    99                         // Update all displayed time
    100                         $.each( $( '#buddypress time' ), function( t, time ) {
    101                                 if ( $( time ).data( 'bp-timestamp' ) ) {
    102                                         $( time ).html( bp.Nouveau.updateTimeSince( Number( $( time ).data( 'bp-timestamp' ) ) ) );
    103                                 }
    104                         } );
    10598                },
    10699
  • trunk/src/bp-templates/bp-nouveau/js/buddypress-nouveau.js

    r11906 r12002  
    4949                        this.objects                = $.map( BP_Nouveau.objects, function( value ) { return value; } );
    5050                        this.objectNavParent        = BP_Nouveau.object_nav_parent;
    51                         this.time_since             = BP_Nouveau.time_since;
    5251
    5352                        // HeartBeat Global
    … …  
    206205                        } else {
    207206                                $( selector ).html( content );
    208                         }
    209                 },
    210 
    211                 /**
    212                  * [updateTimeSince description]
    213                  * @param  {[type]} timestamp [description]
    214                  * @return {[type]}           [description]
    215                  */
    216                 updateTimeSince: function( timestamp ) {
    217                         var now = new Date( $.now() ), diff, count_1, chunk_1, count_2, chunk_2,
    218                                 time_since = [], time_chunks = $.extend( {}, this.time_since.time_chunks ), ms;
    219 
    220                         // Returns sometime
    221                         if ( undefined === timestamp ) {
    222                                 return this.time_since.sometime;
    223                         }
    224 
    225                         // Javascript timestamps are in ms.
    226                         timestamp = new Date( timestamp * 1000 );
    227 
    228                         // Calculate the diff
    229                         diff = now - timestamp;
    230 
    231                         // Returns right now
    232                         if ( 0 === diff ) {
    233                                 return this.time_since.now;
    234                         }
    235 
    236                         $.each( time_chunks, function( c, chunk ) {
    237                                 var milliseconds = chunk * 1000;
    238                                 var rounded_time = Math.floor( diff / milliseconds );
    239 
    240                                 if ( 0 !== rounded_time && ! chunk_1 ) {
    241                                         chunk_1 = c;
    242                                         count_1 = rounded_time;
    243                                         ms      = milliseconds;
    244                                 }
    245                         } );
    246 
    247                         // First chunk
    248                         chunk_1 = chunk_1.substr( 2 );
    249                         time_since.push( ( 1 === count_1 ) ? this.time_since[ chunk_1 ].replace( '%', count_1 ) : this.time_since[ chunk_1 + 's' ].replace( '%', count_1 ) );
    250 
    251                         // Remove Year from chunks
    252                         delete time_chunks.a_year;
    253 
    254                         $.each( time_chunks, function( c, chunk ) {
    255                                 var milliseconds = chunk * 1000;
    256                                 var rounded_time = Math.floor( ( diff - ( ms * count_1 ) ) / milliseconds );
    257 
    258                                 if ( 0 !== rounded_time && ! chunk_2 ) {
    259                                         chunk_2 = c;
    260                                         count_2 = rounded_time;
    261                                 }
    262                         } );
    263 
    264                         // Second chunk
    265                         if ( undefined !== chunk_2 ) {
    266                                 chunk_2 = chunk_2.substr( 2 );
    267                                 time_since.push( ( 1 === count_2 ) ? this.time_since[ chunk_2 ].replace( '%', count_2 ) : this.time_since[ chunk_2 + 's' ].replace( '%', count_2 ) );
    268                         }
    269 
    270                         // Returns x time, y time ago
    271                         if ( time_since.length >= 1 ) {
    272                                 return this.time_since.ago.replace( '%', time_since.join( this.time_since.separator + ' ' ) );
    273 
    274                         // Returns sometime
    275                         } else {
    276                                 return this.time_since.sometime;
    277207                        }
    278208                },
Note: See TracChangeset for help on using the changeset viewer.