Skip to:
Content

BuddyPress.org

Ticket #6234: 6234.02.patch

File 6234.02.patch, 22.8 KB (added by imath, 5 years ago)
  • src/bp-activity/bp-activity-cssjs.php

    diff --git src/bp-activity/bp-activity-cssjs.php src/bp-activity/bp-activity-cssjs.php
    index 396f7d0..144fa6d 100644
    function bp_activity_mentions_script() { 
    5353}
    5454add_action( 'bp_enqueue_scripts', 'bp_activity_mentions_script' );
    5555add_action( 'bp_admin_enqueue_scripts', 'bp_activity_mentions_script' );
     56
     57/**
     58 * Extends the buddypress.js script data with the activity queried arguments.
     59 *
     60 * @since BuddyPress (?)
     61 *
     62 * @global $wp_scripts
     63 * @global $activities_template
     64 * @uses bp_activity_do_heartbeat()
     65 */
     66function bp_activity_heartbeat_add_script_data() {
     67        global $wp_scripts, $activities_template;
     68
     69        if ( ! bp_activity_do_heartbeat() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
     70                return;
     71        }
     72
     73        $handle  = 'bp-legacy-js';
     74        $handles = array( 'bp-parent-js', 'bp-child-js' );
     75
     76        foreach ( $handles as $h ) {
     77                if ( isset( $wp_scripts->queue[ $h ] ) ) {
     78                        $handle = $h;
     79                        break;
     80                }
     81        }
     82
     83        $data = $wp_scripts->get_data( $handle, 'data' );
     84
     85        // Defaults to an empty array
     86        $query_args = array();
     87        if ( ! empty( $activities_template->query_args ) ) {
     88                $query_args = (array) $activities_template->query_args;
     89        }
     90
     91        // Extend the script data
     92        $script = 'var BP_Activity_Args = ' . json_encode( $query_args ) . ';';
     93
     94        if ( $data ) {
     95                $script = "$data\n$script";
     96        }
     97
     98        $wp_scripts->add_data( $handle, 'data', $script );
     99}
     100add_action( 'activity_loop_start', 'bp_activity_heartbeat_add_script_data' );
  • src/bp-activity/bp-activity-filters.php

    diff --git src/bp-activity/bp-activity-filters.php src/bp-activity/bp-activity-filters.php
    index 82f992a..459a252 100644
    function bp_activity_heartbeat_last_recorded( $response = array(), $data = array 
    532532                return $response;
    533533        }
    534534
     535        $heartbeat_args = array( 'since' => date( 'Y-m-d H:i:s', $data['bp_activity_last_recorded'] ) );
     536
     537        // Make sure to include template hardcoded args
     538        if ( ! empty( $data['query_args'] ) ) {
     539                $heartbeat_args = array_merge( $data['query_args'], $heartbeat_args );
     540        }
     541
    535542        // Use the querystring argument stored in the cookie (to preserve
    536543        // filters), but force the offset to get only new items
    537544        $activity_latest_args = bp_parse_args(
    538545                bp_ajax_querystring( 'activity' ),
    539                 array( 'since' => date( 'Y-m-d H:i:s', $data['bp_activity_last_recorded'] ) ),
     546                $heartbeat_args,
    540547                'activity_latest_args'
    541548        );
    542549
  • src/bp-activity/bp-activity-template.php

    diff --git src/bp-activity/bp-activity-template.php src/bp-activity/bp-activity-template.php
    index 95d0cf7..445b26f 100644
    function bp_has_activities( $args = '' ) { 
    744744
    745745        $activities_template = new BP_Activity_Template( $r );
    746746
     747        // Attach the orginal args to the $activities_template global
     748        $activities_template->query_args = wp_parse_args( $args, array() );
     749
    747750        /**
    748751         * Filters whether or not there are activity items to display.
    749752         *
  • 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 7b7f1b9..1f53754 100644
    class BP_Legacy extends BP_Theme_Compat { 
    233233                // Enqueue the global JS, if found - AJAX will not work
    234234                // without it
    235235                if ( isset( $asset['location'], $asset['handle'] ) ) {
    236                         wp_enqueue_script( $asset['handle'], $asset['location'], bp_core_get_js_dependencies(), $this->version );
     236                        wp_enqueue_script( $asset['handle'], $asset['location'], bp_core_get_js_dependencies(), $this->version, true );
    237237                }
    238238
    239239                // Add words that we need to use in JS to the end of the page
    class BP_Legacy extends BP_Theme_Compat { 
    271271                        ) );
    272272
    273273                        // Enqueue script
    274                         wp_enqueue_script( $asset['handle'] . '-password-verify', $asset['location'], $dependencies, $this->version);
     274                        wp_enqueue_script( $asset['handle'] . '-password-verify', $asset['location'], $dependencies, $this->version, true );
    275275                }
    276276        }
    277277
    function bp_legacy_theme_post_update() { 
    836836        $last_recorded = ! empty( $_POST['since'] ) ? date( 'Y-m-d H:i:s', intval( $_POST['since'] ) ) : 0;
    837837        if ( $last_recorded ) {
    838838                $activity_args = array( 'since' => $last_recorded );
     839
     840                // Make sure to include template hardcoded args
     841                if ( ! empty( $_POST['query_args'] ) ) {
     842                        $activity_args = array_merge( $_POST['query_args'], array( 'since' => $last_recorded ) );
     843                }
     844
    839845                $bp->activity->last_recorded = $last_recorded;
    840846                add_filter( 'bp_get_activity_css_class', 'bp_activity_newest_class', 10, 1 );
    841847        } else {
  • 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 6b85ed0..4b008bc 100644
     
    11/* jshint undef: false, unused:false */
    2 // AJAX Functions
    3 var jq = jQuery;
    42
    5 // Global variable to prevent multiple AJAX requests
    6 var bp_ajax_request = null;
     3( function( jq ){
    74
    8 // Global variables to temporarily store newest activities
    9 var newest_activities = '';
    10 var activity_last_recorded  = 0;
     5        // Global variables
     6        var bp_ajax_request = null, newest_activities = '', activity_last_recorded  = 0;
     7
     8        /* Setup activity scope and filter based on the current cookie settings. */
     9        bp_init_activity = function() {
     10                /* Reset the page */
     11                jq.cookie( 'bp-activity-oldestpage', 1, {
     12                        path: '/'
     13                } );
     14
     15                if ( null !== jq.cookie('bp-activity-filter') && jq('#activity-filter-select').length ) {
     16                        jq('#activity-filter-select select option[value="' + jq.cookie('bp-activity-filter') + '"]').prop( 'selected', true );
     17                }
     18
     19                /* Activity Tab Set */
     20                if ( null !== jq.cookie('bp-activity-scope') && jq('.activity-type-tabs').length ) {
     21                        jq('.activity-type-tabs li').each( function() {
     22                                jq(this).removeClass('selected');
     23                        });
     24                        jq('#activity-' + jq.cookie('bp-activity-scope') + ', .item-list-tabs li.current').addClass('selected');
     25                }
     26        }
     27
     28        /* Setup object scope and filter based on the current cookie settings for the object. */
     29        bp_init_objects = function( objects ) {
     30                jq(objects).each( function(i) {
     31                        if ( null !== jq.cookie('bp-' + objects[i] + '-filter') && jq('#' + objects[i] + '-order-select select').length ) {
     32                                jq('#' + objects[i] + '-order-select select option[value="' + jq.cookie('bp-' + objects[i] + '-filter') + '"]').prop( 'selected', true );
     33                        }
     34
     35                        if ( null !== jq.cookie('bp-' + objects[i] + '-scope') && jq('div.' + objects[i]).length ) {
     36                                jq('.item-list-tabs li').each( function() {
     37                                        jq(this).removeClass('selected');
     38                                });
     39                                jq('#' + objects[i] + '-' + jq.cookie('bp-' + objects[i] + '-scope') + ', #object-nav li.current').addClass('selected');
     40                        }
     41                });
     42        }
     43
     44        /* Filter the current content list (groups/members/blogs/topics) */
     45        bp_filter_request = function( object, filter, scope, target, search_terms, page, extras, caller, template ) {
     46                if ( 'activity' === object ) {
     47                        return false;
     48                }
     49
     50                if ( null === scope ) {
     51                        scope = 'all';
     52                }
     53
     54                /* Save the settings we want to remain persistent to a cookie */
     55                jq.cookie( 'bp-' + object + '-scope', scope, {
     56                        path: '/'
     57                } );
     58                jq.cookie( 'bp-' + object + '-filter', filter, {
     59                        path: '/'
     60                } );
     61                jq.cookie( 'bp-' + object + '-extras', extras, {
     62                        path: '/'
     63                } );
     64
     65                /* Set the correct selected nav and filter */
     66                jq('.item-list-tabs li').each( function() {
     67                        jq(this).removeClass('selected');
     68                });
     69                jq('#' + object + '-' + scope + ', #object-nav li.current').addClass('selected');
     70                jq('.item-list-tabs li.selected').addClass('loading');
     71                jq('.item-list-tabs select option[value="' + filter + '"]').prop( 'selected', true );
     72
     73                if ( 'friends' === object || 'group_members' === object ) {
     74                        object = 'members';
     75                }
     76
     77                if ( bp_ajax_request ) {
     78                        bp_ajax_request.abort();
     79                }
     80
     81                bp_ajax_request = jq.post( ajaxurl, {
     82                        action: object + '_filter',
     83                        'cookie': bp_get_cookies(),
     84                        'object': object,
     85                        'filter': filter,
     86                        'search_terms': search_terms,
     87                        'scope': scope,
     88                        'page': page,
     89                        'extras': extras,
     90                        'template': template
     91                },
     92                function(response)
     93                {
     94                        /* animate to top if called from bottom pagination */
     95                        if ( caller === 'pag-bottom' && jq('#subnav').length ) {
     96                                var top = jq('#subnav').parent();
     97                                jq('html,body').animate({scrollTop: top.offset().top}, 'slow', function() {
     98                                        jq(target).fadeOut( 100, function() {
     99                                                jq(this).html(response);
     100                                                jq(this).fadeIn(100);
     101                                        });
     102                                });
     103
     104                        } else {
     105                                jq(target).fadeOut( 100, function() {
     106                                        jq(this).html(response);
     107                                        jq(this).fadeIn(100);
     108                                });
     109                        }
     110
     111                        jq('.item-list-tabs li.selected').removeClass('loading');
     112                });
     113        }
     114
     115        /* Activity Loop Requesting */
     116        bp_activity_request = function(scope, filter) {
     117                /* Save the type and filter to a session cookie */
     118                jq.cookie( 'bp-activity-scope', scope, {
     119                        path: '/'
     120                } );
     121                jq.cookie( 'bp-activity-filter', filter, {
     122                        path: '/'
     123                } );
     124                jq.cookie( 'bp-activity-oldestpage', 1, {
     125                        path: '/'
     126                } );
     127
     128                /* Remove selected and loading classes from tabs */
     129                jq('.item-list-tabs li').each( function() {
     130                        jq(this).removeClass('selected loading');
     131                });
     132                /* Set the correct selected nav and filter */
     133                jq('#activity-' + scope + ', .item-list-tabs li.current').addClass('selected');
     134                jq('#object-nav.item-list-tabs li.selected, div.activity-type-tabs li.selected').addClass('loading');
     135                jq('#activity-filter-select select option[value="' + filter + '"]').prop( 'selected', true );
     136
     137                /* Reload the activity stream based on the selection */
     138                jq('.widget_bp_activity_widget h2 span.ajax-loader').show();
     139
     140                if ( bp_ajax_request ) {
     141                        bp_ajax_request.abort();
     142                }
     143
     144                bp_ajax_request = jq.post( ajaxurl, {
     145                        action: 'activity_widget_filter',
     146                        'cookie': bp_get_cookies(),
     147                        '_wpnonce_activity_filter': jq('#_wpnonce_activity_filter').val(),
     148                        'scope': scope,
     149                        'filter': filter
     150                },
     151                function(response)
     152                {
     153                        jq('.widget_bp_activity_widget h2 span.ajax-loader').hide();
     154
     155                        jq('div.activity').fadeOut( 100, function() {
     156                                jq(this).html(response.contents);
     157                                jq(this).fadeIn(100);
     158
     159                                /* Selectively hide comments */
     160                                bp_legacy_theme_hide_comments();
     161                        });
     162
     163                        /* Update the feed link */
     164                        if ( null !== response.feed_url ) {
     165                                jq('.directory #subnav li.feed a, .home-page #subnav li.feed a').attr('href', response.feed_url);
     166                        }
     167
     168                        jq('.item-list-tabs li.selected').removeClass('loading');
     169
     170                }, 'json' );
     171        }
     172
     173        /* Hide long lists of activity comments, only show the latest five root comments. */
     174        bp_legacy_theme_hide_comments = function() {
     175                var comments_divs = jq('div.activity-comments'),
     176                        parent_li, comment_lis, comment_count;
     177
     178                if ( !comments_divs.length ) {
     179                        return false;
     180                }
     181
     182                comments_divs.each( function() {
     183                        if ( jq(this).children('ul').children('li').length < 5 ) {
     184                                return;
     185                        }
     186
     187                        comments_div = jq(this);
     188                        parent_li = comments_div.parents('#activity-stream > li');
     189                        comment_lis = jq(this).children('ul').children('li');
     190                        comment_count = ' ';
     191
     192                        if ( jq('#' + parent_li.attr('id') + ' a.acomment-reply span').length ) {
     193                                comment_count = jq('#' + parent_li.attr('id') + ' a.acomment-reply span').html();
     194                        }
     195
     196                        comment_lis.each( function(i) {
     197                                /* Show the latest 5 root comments */
     198                                if ( i < comment_lis.length - 5 ) {
     199                                        jq(this).addClass('hidden');
     200                                        jq(this).toggle();
     201
     202                                        if ( !i ) {
     203                                                jq(this).before( '<li class="show-all"><a href="#' + parent_li.attr('id') + '/show-all/" title="' + BP_DTheme.show_all_comments + '">' + BP_DTheme.show_x_comments.replace( '%d', comment_count ) + '</a></li>' );
     204                                        }
     205                                }
     206                        });
     207
     208                });
     209        }
     210
     211        /* Helper Functions */
     212        checkAll = function() {
     213                var checkboxes = document.getElementsByTagName('input'),
     214                        i;
     215
     216                for(i=0; i<checkboxes.length; i++) {
     217                        if(checkboxes[i].type === 'checkbox') {
     218                                if($('check_all').checked === '') {
     219                                        checkboxes[i].checked = '';
     220                                }
     221                                else {
     222                                        checkboxes[i].checked = 'checked';
     223                                }
     224                        }
     225                }
     226        }
     227
     228        /**
     229         * Deselects any select options or input options for the specified field element.
     230         *
     231         * @param {String} container HTML ID of the field
     232         * @since BuddyPress (1.2.0)
     233         */
     234        clear = function( container ) {
     235                container = document.getElementById( container );
     236                if ( ! container ) {
     237                        return;
     238                }
     239
     240                var radioButtons = container.getElementsByTagName( 'INPUT' ),
     241                        options = container.getElementsByTagName( 'OPTION' ),
     242                        i       = 0;
     243
     244                if ( radioButtons ) {
     245                        for ( i = 0; i < radioButtons.length; i++ ) {
     246                                radioButtons[i].checked = '';
     247                        }
     248                }
     249
     250                if ( options ) {
     251                        for ( i = 0; i < options.length; i++ ) {
     252                                options[i].selected = false;
     253                        }
     254                }
     255        }
     256
     257        /* Returns a querystring of BP cookies (cookies beginning with 'bp-') */
     258        bp_get_cookies = function() {
     259                var allCookies = document.cookie.split(';'),  // get all cookies and split into an array
     260                        bpCookies      = {},
     261                        cookiePrefix   = 'bp-',
     262                        i, cookie, delimiter, name, value;
     263
     264                // loop through cookies
     265                for (i = 0; i < allCookies.length; i++) {
     266                        cookie    = allCookies[i];
     267                        delimiter = cookie.indexOf('=');
     268                        name      = jq.trim( unescape( cookie.slice(0, delimiter) ) );
     269                        value     = unescape( cookie.slice(delimiter + 1) );
     270
     271                        // if BP cookie, store it
     272                        if ( name.indexOf(cookiePrefix) === 0 ) {
     273                                bpCookies[name] = value;
     274                        }
     275                }
     276
     277                // returns BP cookies as querystring
     278                return encodeURIComponent( jq.param(bpCookies) );
     279        }
    11280
    12 jq(document).ready( function() {
    13281        /**** Page Load Actions *******************************************************/
    14282
    15283        /* Hide Forums Post Form */
    jq(document).ready( function() { 
    144412
    145413                jq.post( ajaxurl, {
    146414                        action: 'post_update',
    147                         'cookie': bp_get_cookies(),
    148                         '_wpnonce_post_update': jq('#_wpnonce_post_update').val(),
    149                         'content': content,
    150                         'object': object,
    151                         'item_id': item_id,
    152                         'since': last_date_recorded,
    153                         '_bp_as_nonce': jq('#_bp_as_nonce').val() || ''
     415                        'cookie'               : bp_get_cookies(),
     416                        '_wpnonce_post_update' : jq('#_wpnonce_post_update').val(),
     417                        'content'              : content,
     418                        'object'               : object,
     419                        'item_id'              : item_id,
     420                        'since'                : last_date_recorded,
     421                        'query_args'           : BP_Activity_Args,
     422                        '_bp_as_nonce'         : jq('#_bp_as_nonce').val() || ''
    154423                },
    155424                function(response) {
    156425
    jq(document).ready( function() { 
    16931962                }
    16941963
    16951964                data.bp_activity_last_recorded = activity_last_recorded;
     1965                data.query_args                = BP_Activity_Args;
    16961966
    16971967                last_recorded_search = bp_get_querystring('s');
    16981968
    jq(document).ready( function() { 
    17171987                }
    17181988
    17191989                jq( '#buddypress ul.activity-list' ).prepend( '<li class="load-newest"><a href="#newest">' + BP_DTheme.newest + '</a></li>' );
    1720         });
    1721 });
    1722 
    1723 /* Setup activity scope and filter based on the current cookie settings. */
    1724 function bp_init_activity() {
    1725         /* Reset the page */
    1726         jq.cookie( 'bp-activity-oldestpage', 1, {
    1727                 path: '/'
    17281990        } );
    17291991
    1730         if ( null !== jq.cookie('bp-activity-filter') && jq('#activity-filter-select').length ) {
    1731                 jq('#activity-filter-select select option[value="' + jq.cookie('bp-activity-filter') + '"]').prop( 'selected', true );
    1732         }
    1733 
    1734         /* Activity Tab Set */
    1735         if ( null !== jq.cookie('bp-activity-scope') && jq('.activity-type-tabs').length ) {
    1736                 jq('.activity-type-tabs li').each( function() {
    1737                         jq(this).removeClass('selected');
    1738                 });
    1739                 jq('#activity-' + jq.cookie('bp-activity-scope') + ', .item-list-tabs li.current').addClass('selected');
    1740         }
    1741 }
    1742 
    1743 /* Setup object scope and filter based on the current cookie settings for the object. */
    1744 function bp_init_objects(objects) {
    1745         jq(objects).each( function(i) {
    1746                 if ( null !== jq.cookie('bp-' + objects[i] + '-filter') && jq('#' + objects[i] + '-order-select select').length ) {
    1747                         jq('#' + objects[i] + '-order-select select option[value="' + jq.cookie('bp-' + objects[i] + '-filter') + '"]').prop( 'selected', true );
    1748                 }
    1749 
    1750                 if ( null !== jq.cookie('bp-' + objects[i] + '-scope') && jq('div.' + objects[i]).length ) {
    1751                         jq('.item-list-tabs li').each( function() {
    1752                                 jq(this).removeClass('selected');
    1753                         });
    1754                         jq('#' + objects[i] + '-' + jq.cookie('bp-' + objects[i] + '-scope') + ', #object-nav li.current').addClass('selected');
    1755                 }
    1756         });
    1757 }
    1758 
    1759 /* Filter the current content list (groups/members/blogs/topics) */
    1760 function bp_filter_request( object, filter, scope, target, search_terms, page, extras, caller, template ) {
    1761         if ( 'activity' === object ) {
    1762                 return false;
    1763         }
    1764 
    1765         if ( null === scope ) {
    1766                 scope = 'all';
    1767         }
    1768 
    1769         /* Save the settings we want to remain persistent to a cookie */
    1770         jq.cookie( 'bp-' + object + '-scope', scope, {
    1771                 path: '/'
    1772         } );
    1773         jq.cookie( 'bp-' + object + '-filter', filter, {
    1774                 path: '/'
    1775         } );
    1776         jq.cookie( 'bp-' + object + '-extras', extras, {
    1777                 path: '/'
    1778         } );
    1779 
    1780         /* Set the correct selected nav and filter */
    1781         jq('.item-list-tabs li').each( function() {
    1782                 jq(this).removeClass('selected');
    1783         });
    1784         jq('#' + object + '-' + scope + ', #object-nav li.current').addClass('selected');
    1785         jq('.item-list-tabs li.selected').addClass('loading');
    1786         jq('.item-list-tabs select option[value="' + filter + '"]').prop( 'selected', true );
    1787 
    1788         if ( 'friends' === object || 'group_members' === object ) {
    1789                 object = 'members';
    1790         }
    1791 
    1792         if ( bp_ajax_request ) {
    1793                 bp_ajax_request.abort();
    1794         }
    1795 
    1796         bp_ajax_request = jq.post( ajaxurl, {
    1797                 action: object + '_filter',
    1798                 'cookie': bp_get_cookies(),
    1799                 'object': object,
    1800                 'filter': filter,
    1801                 'search_terms': search_terms,
    1802                 'scope': scope,
    1803                 'page': page,
    1804                 'extras': extras,
    1805                 'template': template
    1806         },
    1807         function(response)
    1808         {
    1809                 /* animate to top if called from bottom pagination */
    1810                 if ( caller === 'pag-bottom' && jq('#subnav').length ) {
    1811                         var top = jq('#subnav').parent();
    1812                         jq('html,body').animate({scrollTop: top.offset().top}, 'slow', function() {
    1813                                 jq(target).fadeOut( 100, function() {
    1814                                         jq(this).html(response);
    1815                                         jq(this).fadeIn(100);
    1816                                 });
    1817                         });
    1818 
    1819                 } else {
    1820                         jq(target).fadeOut( 100, function() {
    1821                                 jq(this).html(response);
    1822                                 jq(this).fadeIn(100);
    1823                         });
    1824                 }
    1825 
    1826                 jq('.item-list-tabs li.selected').removeClass('loading');
    1827         });
    1828 }
    1829 
    1830 /* Activity Loop Requesting */
    1831 function bp_activity_request(scope, filter) {
    1832         /* Save the type and filter to a session cookie */
    1833         jq.cookie( 'bp-activity-scope', scope, {
    1834                 path: '/'
    1835         } );
    1836         jq.cookie( 'bp-activity-filter', filter, {
    1837                 path: '/'
    1838         } );
    1839         jq.cookie( 'bp-activity-oldestpage', 1, {
    1840                 path: '/'
    1841         } );
    1842 
    1843         /* Remove selected and loading classes from tabs */
    1844         jq('.item-list-tabs li').each( function() {
    1845                 jq(this).removeClass('selected loading');
    1846         });
    1847         /* Set the correct selected nav and filter */
    1848         jq('#activity-' + scope + ', .item-list-tabs li.current').addClass('selected');
    1849         jq('#object-nav.item-list-tabs li.selected, div.activity-type-tabs li.selected').addClass('loading');
    1850         jq('#activity-filter-select select option[value="' + filter + '"]').prop( 'selected', true );
    1851 
    1852         /* Reload the activity stream based on the selection */
    1853         jq('.widget_bp_activity_widget h2 span.ajax-loader').show();
    1854 
    1855         if ( bp_ajax_request ) {
    1856                 bp_ajax_request.abort();
    1857         }
    1858 
    1859         bp_ajax_request = jq.post( ajaxurl, {
    1860                 action: 'activity_widget_filter',
    1861                 'cookie': bp_get_cookies(),
    1862                 '_wpnonce_activity_filter': jq('#_wpnonce_activity_filter').val(),
    1863                 'scope': scope,
    1864                 'filter': filter
    1865         },
    1866         function(response)
    1867         {
    1868                 jq('.widget_bp_activity_widget h2 span.ajax-loader').hide();
    1869 
    1870                 jq('div.activity').fadeOut( 100, function() {
    1871                         jq(this).html(response.contents);
    1872                         jq(this).fadeIn(100);
    1873 
    1874                         /* Selectively hide comments */
    1875                         bp_legacy_theme_hide_comments();
    1876                 });
    1877 
    1878                 /* Update the feed link */
    1879                 if ( null !== response.feed_url ) {
    1880                         jq('.directory #subnav li.feed a, .home-page #subnav li.feed a').attr('href', response.feed_url);
    1881                 }
    1882 
    1883                 jq('.item-list-tabs li.selected').removeClass('loading');
    1884 
    1885         }, 'json' );
    1886 }
    1887 
    1888 /* Hide long lists of activity comments, only show the latest five root comments. */
    1889 function bp_legacy_theme_hide_comments() {
    1890         var comments_divs = jq('div.activity-comments'),
    1891                 parent_li, comment_lis, comment_count;
    1892 
    1893         if ( !comments_divs.length ) {
    1894                 return false;
    1895         }
    1896 
    1897         comments_divs.each( function() {
    1898                 if ( jq(this).children('ul').children('li').length < 5 ) {
    1899                         return;
    1900                 }
    1901 
    1902                 comments_div = jq(this);
    1903                 parent_li = comments_div.parents('#activity-stream > li');
    1904                 comment_lis = jq(this).children('ul').children('li');
    1905                 comment_count = ' ';
    1906 
    1907                 if ( jq('#' + parent_li.attr('id') + ' a.acomment-reply span').length ) {
    1908                         comment_count = jq('#' + parent_li.attr('id') + ' a.acomment-reply span').html();
    1909                 }
    1910 
    1911                 comment_lis.each( function(i) {
    1912                         /* Show the latest 5 root comments */
    1913                         if ( i < comment_lis.length - 5 ) {
    1914                                 jq(this).addClass('hidden');
    1915                                 jq(this).toggle();
    1916 
    1917                                 if ( !i ) {
    1918                                         jq(this).before( '<li class="show-all"><a href="#' + parent_li.attr('id') + '/show-all/" title="' + BP_DTheme.show_all_comments + '">' + BP_DTheme.show_x_comments.replace( '%d', comment_count ) + '</a></li>' );
    1919                                 }
    1920                         }
    1921                 });
    1922 
    1923         });
    1924 }
    1925 
    1926 /* Helper Functions */
    1927 
    1928 function checkAll() {
    1929         var checkboxes = document.getElementsByTagName('input'),
    1930                 i;
    1931 
    1932         for(i=0; i<checkboxes.length; i++) {
    1933                 if(checkboxes[i].type === 'checkbox') {
    1934                         if($('check_all').checked === '') {
    1935                                 checkboxes[i].checked = '';
    1936                         }
    1937                         else {
    1938                                 checkboxes[i].checked = 'checked';
    1939                         }
    1940                 }
    1941         }
    1942 }
    1943 
    1944 /**
    1945  * Deselects any select options or input options for the specified field element.
    1946  *
    1947  * @param {String} container HTML ID of the field
    1948  * @since BuddyPress (1.2.0)
    1949  */
    1950 function clear( container ) {
    1951         container = document.getElementById( container );
    1952         if ( ! container ) {
    1953                 return;
    1954         }
    1955 
    1956         var radioButtons = container.getElementsByTagName( 'INPUT' ),
    1957                 options = container.getElementsByTagName( 'OPTION' ),
    1958                 i       = 0;
    1959 
    1960         if ( radioButtons ) {
    1961                 for ( i = 0; i < radioButtons.length; i++ ) {
    1962                         radioButtons[i].checked = '';
    1963                 }
    1964         }
    1965 
    1966         if ( options ) {
    1967                 for ( i = 0; i < options.length; i++ ) {
    1968                         options[i].selected = false;
    1969                 }
    1970         }
    1971 }
    1972 
    1973 /* Returns a querystring of BP cookies (cookies beginning with 'bp-') */
    1974 function bp_get_cookies() {
    1975         var allCookies = document.cookie.split(';'),  // get all cookies and split into an array
    1976                 bpCookies      = {},
    1977                 cookiePrefix   = 'bp-',
    1978                 i, cookie, delimiter, name, value;
    1979 
    1980         // loop through cookies
    1981         for (i = 0; i < allCookies.length; i++) {
    1982                 cookie    = allCookies[i];
    1983                 delimiter = cookie.indexOf('=');
    1984                 name      = jq.trim( unescape( cookie.slice(0, delimiter) ) );
    1985                 value     = unescape( cookie.slice(delimiter + 1) );
    1986 
    1987                 // if BP cookie, store it
    1988                 if ( name.indexOf(cookiePrefix) === 0 ) {
    1989                         bpCookies[name] = value;
    1990                 }
    1991         }
    1992 
    1993         // returns BP cookies as querystring
    1994         return encodeURIComponent( jq.param(bpCookies) );
    1995 }
     1992} )( jQuery );