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 { |
282 | 282 | wp_enqueue_script( $asset['handle'], $asset['location'], bp_core_get_js_dependencies(), $this->version ); |
283 | 283 | } |
284 | 284 | |
| 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 | |
285 | 294 | /** |
286 | 295 | * Filters core JavaScript strings for internationalization before AJAX usage. |
287 | 296 | * |
… |
… |
class BP_Legacy extends BP_Theme_Compat { |
290 | 299 | * @param array $value Array of key/value pairs for AJAX usage. |
291 | 300 | */ |
292 | 301 | $params = apply_filters( 'bp_core_get_js_strings', array( |
| 302 | // Strings for display. |
293 | 303 | 'accepted' => __( 'Accepted', 'buddypress' ), |
294 | 304 | 'close' => __( 'Close', 'buddypress' ), |
295 | 305 | 'comments' => __( 'comments', 'buddypress' ), |
… |
… |
class BP_Legacy extends BP_Theme_Compat { |
303 | 313 | 'show_x_comments' => __( 'Show all comments (%d)', 'buddypress' ), |
304 | 314 | 'unsaved_changes' => __( 'Your profile has unsaved changes. If you leave the page, the changes will be lost.', 'buddypress' ), |
305 | 315 | 'view' => __( 'View', 'buddypress' ), |
| 316 | |
| 317 | // Settings. |
| 318 | 'store_filter_settings' => $store_filter_settings, |
306 | 319 | ) ); |
307 | 320 | wp_localize_script( $asset['handle'], 'BP_DTheme', $params ); |
308 | 321 | |
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; |
10 | 10 | var newest_activities = ''; |
11 | 11 | var activity_last_recorded = 0; |
12 | 12 | |
| 13 | var directoryPreferences = {} |
| 14 | |
13 | 15 | jq(document).ready( function() { |
14 | 16 | /**** Page Load Actions *******************************************************/ |
15 | 17 | |
… |
… |
jq(document).ready( function() { |
862 | 864 | template = 'groups/single/members'; |
863 | 865 | } |
864 | 866 | |
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 ); |
866 | 872 | |
867 | 873 | return false; |
868 | 874 | } |
… |
… |
jq(document).ready( function() { |
897 | 903 | filter = jq('#' + object + '-order-select select').val(); |
898 | 904 | search_terms = jq('#' + object + '_search').val(); |
899 | 905 | |
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 ); |
901 | 909 | |
902 | 910 | return false; |
903 | 911 | } |
… |
… |
jq(document).ready( function() { |
945 | 953 | object = 'members'; |
946 | 954 | } |
947 | 955 | |
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 ); |
949 | 959 | |
950 | 960 | return false; |
951 | 961 | }); |
… |
… |
jq(document).ready( function() { |
1033 | 1043 | caller = null; |
1034 | 1044 | } |
1035 | 1045 | |
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 ); |
1037 | 1051 | |
1038 | 1052 | return false; |
1039 | 1053 | } |
… |
… |
jq(document).ready( function() { |
1401 | 1415 | if ( target.attr('type') === 'submit' || target.attr('type') === 'button' ) { |
1402 | 1416 | object = 'messages'; |
1403 | 1417 | |
| 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 | |
1404 | 1422 | bp_filter_request( |
1405 | 1423 | object, |
1406 | | jq.cookie('bp-' + object + '-filter'), |
1407 | | jq.cookie('bp-' + object + '-scope'), |
| 1424 | filter, |
| 1425 | scope, |
1408 | 1426 | 'div.' + object, jq('#messages_search').val(), |
1409 | 1427 | 1, |
1410 | | jq.cookie('bp-' + object + '-extras') |
| 1428 | extras |
1411 | 1429 | ); |
1412 | 1430 | |
1413 | 1431 | return false; |
… |
… |
jq(document).ready( function() { |
1737 | 1755 | }); |
1738 | 1756 | }); |
1739 | 1757 | |
| 1758 | /** |
| 1759 | * Gets the user's current preference for a directory option. |
| 1760 | */ |
| 1761 | function 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 | */ |
| 1782 | function 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 | |
1740 | 1797 | /* Setup activity scope and filter based on the current cookie settings. */ |
1741 | 1798 | function 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 ); |
1744 | 1804 | } |
1745 | 1805 | |
1746 | 1806 | /* 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 ) { |
1748 | 1808 | jq('.activity-type-tabs li').each( function() { |
1749 | 1809 | jq(this).removeClass('selected'); |
1750 | 1810 | }); |
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'); |
1752 | 1812 | } |
1753 | 1813 | } |
1754 | 1814 | |
1755 | 1815 | /* Setup object scope and filter based on the current cookie settings for the object. */ |
1756 | 1816 | function bp_init_objects(objects) { |
1757 | 1817 | 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 ); |
1760 | 1823 | } |
1761 | 1824 | |
1762 | | if ( undefined !== jq.cookie('bp-' + objects[i] + '-scope') && jq('div.' + objects[i]).length ) { |
| 1825 | if ( undefined !== scope && jq('div.' + objects[i]).length ) { |
1763 | 1826 | jq('.item-list-tabs li').each( function() { |
1764 | 1827 | jq(this).removeClass('selected'); |
1765 | 1828 | }); |
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'); |
1767 | 1830 | } |
1768 | 1831 | }); |
1769 | 1832 | } |
… |
… |
function bp_filter_request( object, filter, scope, target, search_terms, page, e |
1778 | 1841 | scope = 'all'; |
1779 | 1842 | } |
1780 | 1843 | |
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 ); |
1794 | 1848 | |
1795 | 1849 | /* Set the correct selected nav and filter */ |
1796 | 1850 | jq('.item-list-tabs li').each( function() { |