Skip to:
Content

BuddyPress.org

Ticket #7856: 7856.diff

File 7856.diff, 9.3 KB (added by boonebgorges, 7 years ago)
  • src/bp-templates/bp-legacy/buddypress-functions.php

    diff --git src/bp-templates/bp-legacy/buddypress-functions.php src/bp-templates/bp-legacy/buddypress-functions.php
    index 0743b60b4..807a63a0d 100644
    class BP_Legacy extends BP_Theme_Compat { 
    282282                        wp_enqueue_script( $asset['handle'], $asset['location'], bp_core_get_js_dependencies(), $this->version );
    283283                }
    284284
     285                /**
     286                 * Filters whether directory filter settings ('scope', etc) should be stored in a persistent cookie.
     287                 *
     288                 * @since 4.0.0
     289                 *
     290                 * @param bool $store_filter_settings Whether to store settings. Defaults to true for logged-in users.
     291                 */
     292                $store_filter_settings = apply_filters( 'bp_legacy_store_filter_settings', is_user_logged_in() );
     293
    285294                /**
    286295                 * Filters core JavaScript strings for internationalization before AJAX usage.
    287296                 *
    class BP_Legacy extends BP_Theme_Compat { 
    290299                 * @param array $value Array of key/value pairs for AJAX usage.
    291300                 */
    292301                $params = apply_filters( 'bp_core_get_js_strings', array(
     302                        // Strings for display.
    293303                        'accepted'            => __( 'Accepted', 'buddypress' ),
    294304                        'close'               => __( 'Close', 'buddypress' ),
    295305                        'comments'            => __( 'comments', 'buddypress' ),
    class BP_Legacy extends BP_Theme_Compat { 
    303313                        'show_x_comments'     => __( 'Show all comments (%d)', 'buddypress' ),
    304314                        'unsaved_changes'     => __( 'Your profile has unsaved changes. If you leave the page, the changes will be lost.', 'buddypress' ),
    305315                        'view'                => __( 'View', 'buddypress' ),
     316
     317                        // Settings.
     318                        'store_filter_settings' => $store_filter_settings,
    306319                ) );
    307320                wp_localize_script( $asset['handle'], 'BP_DTheme', $params );
    308321
  • src/bp-templates/bp-legacy/js/buddypress.js

    diff --git src/bp-templates/bp-legacy/js/buddypress.js src/bp-templates/bp-legacy/js/buddypress.js
    index 75c25a427..30733941f 100644
    var bp_ajax_request = null; 
    1010var newest_activities = '';
    1111var activity_last_recorded  = 0;
    1212
     13var directoryPreferences = {}
     14
    1315jq(document).ready( function() {
    1416        /**** Page Load Actions *******************************************************/
    1517
    jq(document).ready( function() { 
    862864                                template = 'groups/single/members';
    863865                        }
    864866
    865                         bp_filter_request( object, jq.cookie('bp-' + object + '-filter'), jq.cookie('bp-' + object + '-scope') , 'div.' + object, search_terms, 1, jq.cookie('bp-' + object + '-extras'), null, template );
     867                        var scope  = bp_get_directory_preference( object, 'scope' );
     868                        var filter = bp_get_directory_preference( object, 'filter' );
     869                        var extras = bp_get_directory_preference( object, 'extras' );
     870
     871                        bp_filter_request( object, filter, scope, 'div.' + object, search_terms, 1, extras, null, template );
    866872
    867873                        return false;
    868874                }
    jq(document).ready( function() { 
    897903                        filter = jq('#' + object + '-order-select select').val();
    898904                        search_terms = jq('#' + object + '_search').val();
    899905
    900                         bp_filter_request( object, filter, scope, 'div.' + object, search_terms, 1, jq.cookie('bp-' + object + '-extras') );
     906                        var extras = bp_get_directory_preference( object, 'extras' );
     907
     908                        bp_filter_request( object, filter, scope, 'div.' + object, search_terms, 1, extras );
    901909
    902910                        return false;
    903911                }
    jq(document).ready( function() { 
    945953                        object = 'members';
    946954                }
    947955
    948                 bp_filter_request( object, filter, scope, 'div.' + object, search_terms, 1, jq.cookie('bp-' + object + '-extras'), null, template );
     956                var extras = bp_get_directory_preference( object, 'extras' );
     957
     958                bp_filter_request( object, filter, scope, 'div.' + object, search_terms, 1, extras, null, template );
    949959
    950960                return false;
    951961        });
    jq(document).ready( function() { 
    10331043                                caller = null;
    10341044                        }
    10351045
    1036                         bp_filter_request( object, jq.cookie('bp-' + object + '-filter'), jq.cookie('bp-' + object + '-scope'), 'div.' + object, search_terms, page_number, jq.cookie('bp-' + object + '-extras'), caller, template );
     1046                        var scope  = bp_get_directory_preference( object, 'scope' );
     1047                        var filter = bp_get_directory_preference( object, 'filter' );
     1048                        var extras = bp_get_directory_preference( object, 'extras' );
     1049
     1050                        bp_filter_request( object, filter, scope, 'div.' + object, search_terms, page_number, extras, caller, template );
    10371051
    10381052                        return false;
    10391053                }
    jq(document).ready( function() { 
    14011415                if ( target.attr('type') === 'submit' || target.attr('type') === 'button' ) {
    14021416                        object = 'messages';
    14031417
     1418                        var scope  = bp_get_directory_preference( object, 'scope' );
     1419                        var filter = bp_get_directory_preference( object, 'filter' );
     1420                        var extras = bp_get_directory_preference( object, 'extras' );
     1421
    14041422                        bp_filter_request(
    14051423                                object,
    1406                                 jq.cookie('bp-' + object + '-filter'),
    1407                                 jq.cookie('bp-' + object + '-scope'),
     1424                                filter,
     1425                                scope,
    14081426                                'div.' + object, jq('#messages_search').val(),
    14091427                                1,
    1410                                 jq.cookie('bp-' + object + '-extras')
     1428                                extras
    14111429                        );
    14121430
    14131431                        return false;
    jq(document).ready( function() { 
    17371755        });
    17381756});
    17391757
     1758/**
     1759 * Gets the user's current preference for a directory option.
     1760 */
     1761function bp_get_directory_preference( directoryType, pref ) {
     1762        var defaultPrefs = {
     1763                filter: '',
     1764                scope: '',
     1765                extras: ''
     1766        }
     1767
     1768        if ( ! directoryPreferences.hasOwnProperty( directoryType ) ) {
     1769                directoryPreferences[ directoryType ] = Object.assign( {}, defaultPrefs );
     1770        }
     1771
     1772        if ( BP_DTheme.store_filter_settings ) {
     1773                directoryPreferences[ directoryType ][ pref ] = jq.cookie( 'bp-' + directoryType + '-' + pref );
     1774        }
     1775
     1776        return directoryPreferences[ directoryType ][ pref ];
     1777}
     1778
     1779/**
     1780 * Sets the user's current preference for a directory option.
     1781 */
     1782function bp_set_directory_preference( directoryType, pref, value ) {
     1783        if ( ! directoryPreferences.hasOwnProperty( directoryType ) ) {
     1784                directoryPreferences[ directoryType ] = Object.assign( {}, defaultPrefs );
     1785        }
     1786
     1787        if ( BP_DTheme.store_filter_settings ) {
     1788                jq.cookie( 'bp-' + directoryType + '-' + pref, value, {
     1789                        path: '/',
     1790                        secure: ( 'https:' === window.location.protocol )
     1791                } );
     1792        }
     1793
     1794        directoryPreferences[ directoryType ][ pref ] = value
     1795}
     1796
    17401797/* Setup activity scope and filter based on the current cookie settings. */
    17411798function bp_init_activity() {
    1742         if ( undefined !== jq.cookie('bp-activity-filter') && jq('#activity-filter-select').length ) {
    1743                 jq('#activity-filter-select select option[value="' + jq.cookie('bp-activity-filter') + '"]').prop( 'selected', true );
     1799        var scope  = bp_get_directory_preference( 'activity', 'scope' );
     1800        var filter = bp_get_directory_preference( 'activity', 'filter' );
     1801
     1802        if ( undefined !== filter && jq('#activity-filter-select').length ) {
     1803                jq('#activity-filter-select select option[value="' + filter + '"]').prop( 'selected', true );
    17441804        }
    17451805
    17461806        /* Activity Tab Set */
    1747         if ( undefined !== jq.cookie('bp-activity-scope') && jq('.activity-type-tabs').length ) {
     1807        if ( undefined !== scope && jq('.activity-type-tabs').length ) {
    17481808                jq('.activity-type-tabs li').each( function() {
    17491809                        jq(this).removeClass('selected');
    17501810                });
    1751                 jq('#activity-' + jq.cookie('bp-activity-scope') + ', .item-list-tabs li.current').addClass('selected');
     1811                jq('#activity-' + scope + ', .item-list-tabs li.current').addClass('selected');
    17521812        }
    17531813}
    17541814
    17551815/* Setup object scope and filter based on the current cookie settings for the object. */
    17561816function bp_init_objects(objects) {
    17571817        jq(objects).each( function(i) {
    1758                 if ( undefined !== jq.cookie('bp-' + objects[i] + '-filter') && jq('#' + objects[i] + '-order-select select').length ) {
    1759                         jq('#' + objects[i] + '-order-select select option[value="' + jq.cookie('bp-' + objects[i] + '-filter') + '"]').prop( 'selected', true );
     1818                var scope  = bp_get_directory_preference( objects[i], 'scope' );
     1819                var filter = bp_get_directory_preference( objects[i], 'filter' );
     1820
     1821                if ( undefined !== filter && jq('#' + objects[i] + '-order-select select').length ) {
     1822                        jq('#' + objects[i] + '-order-select select option[value="' + filter + '"]').prop( 'selected', true );
    17601823                }
    17611824
    1762                 if ( undefined !== jq.cookie('bp-' + objects[i] + '-scope') && jq('div.' + objects[i]).length ) {
     1825                if ( undefined !== scope && jq('div.' + objects[i]).length ) {
    17631826                        jq('.item-list-tabs li').each( function() {
    17641827                                jq(this).removeClass('selected');
    17651828                        });
    1766                         jq('#' + objects[i] + '-' + jq.cookie('bp-' + objects[i] + '-scope') + ', #object-nav li.current').addClass('selected');
     1829                        jq('#' + objects[i] + '-' + scope + ', #object-nav li.current').addClass('selected');
    17671830                }
    17681831        });
    17691832}
    function bp_filter_request( object, filter, scope, target, search_terms, page, e 
    17781841                scope = 'all';
    17791842        }
    17801843
    1781         /* Save the settings we want to remain persistent to a cookie */
    1782         jq.cookie( 'bp-' + object + '-scope', scope, {
    1783                 path: '/',
    1784                 secure: ( 'https:' === window.location.protocol )
    1785         } );
    1786         jq.cookie( 'bp-' + object + '-filter', filter, {
    1787                 path: '/',
    1788                 secure: ( 'https:' === window.location.protocol )
    1789         } );
    1790         jq.cookie( 'bp-' + object + '-extras', extras, {
    1791                 path: '/',
    1792                 secure: ( 'https:' === window.location.protocol )
    1793         } );
     1844        /* Save the settings we want to remain persistent */
     1845        bp_set_directory_preference( object, 'scope', scope );
     1846        bp_set_directory_preference( object, 'filter', filter );
     1847        bp_set_directory_preference( object, 'extras', extras );
    17941848
    17951849        /* Set the correct selected nav and filter */
    17961850        jq('.item-list-tabs li').each( function() {