Tagged: activity stream, buddypress, load more
Hello,
I am getting problem with “Load more” in my Buddypress activity stream.
When I click the “Load More” on the buddypress activity it loads more but it does not refresh it. I want to make it “loads more” and refreshes at the same time after the load more is clicked.
The raison I want that is I am using MathJax-Latex to render mathematical symbols and equations and it needs the page to be refreshed before redering them.Please help me. I need really that and I tried solving it myself several days but nothing.
Best Regards
Wordpress version: 5.4.1
Buddypress version : 5.2.0Hi
Welcome to BuddyDev.Even though it is not feasible to reload and refresh at the same time(It is by using pagination but not recommended), There is a solution.
I had a look at MathJAX api. The MathJAX provides a way to apply it on dynamically loaded content. So, that will resolve your issue.To help you with that, I will need the following
1. Which version of MathJAX are you using(1.x or 2.x )
2. Are you using any custom theme? If yes, which one?
3. Which template pack(Nouveau or Legacy) are you using.Please let me know and I will assist.
Regards
BrajeshHello Brajesh,
Thank you very much for your quick reply.
I am using
1. MathJax 3.x
2. Theme: OceanWP
3. Buddypress template: LegacyThank you for assistance
Hi,
My apologies for the delayed reply. I had to install OcenWp to see if the include custom js for BuddyPress or not.Please copy the plugins/buddypress/bp-templates/bp-legacy/buddypress/js/buddypress.js to your theme/buddyoress/js/buddypress.js and look for the code which looks like this
/* Load more updates at the end of the page */ if ( target.parent().hasClass('load-more') ) { if ( bp_ajax_request ) { bp_ajax_request.abort(); } jq('#buddypress li.load-more').addClass('loading'); oldest_page = activity_oldestpage + 1; just_posted = []; jq('.activity-list li.just-posted').each( function(){ just_posted.push( jq(this).attr('id').replace( 'activity-','' ) ); }); load_more_args = { action: 'activity_get_older_updates', 'cookie': bp_get_cookies(), 'page': oldest_page, 'exclude_just_posted': just_posted.join(',') }; load_more_search = bp_get_querystring('s'); if ( load_more_search ) { load_more_args.search_terms = load_more_search; } bp_ajax_request = jq.post( ajaxurl, load_more_args, function(response) { jq('#buddypress li.load-more').removeClass('loading'); activity_oldestpage = oldest_page; jq('#buddypress ul.activity-list').append(response.contents); target.parent().hide(); }, 'json' ); return false; }
It is around line 431, we need to add 1 line
MathJax.typeset();
as shown below.
/* Load more updates at the end of the page */ if ( target.parent().hasClass('load-more') ) { if ( bp_ajax_request ) { bp_ajax_request.abort(); } jq('#buddypress li.load-more').addClass('loading'); oldest_page = activity_oldestpage + 1; just_posted = []; jq('.activity-list li.just-posted').each( function(){ just_posted.push( jq(this).attr('id').replace( 'activity-','' ) ); }); load_more_args = { action: 'activity_get_older_updates', 'cookie': bp_get_cookies(), 'page': oldest_page, 'exclude_just_posted': just_posted.join(',') }; load_more_search = bp_get_querystring('s'); if ( load_more_search ) { load_more_args.search_terms = load_more_search; } bp_ajax_request = jq.post( ajaxurl, load_more_args, function(response) { jq('#buddypress li.load-more').removeClass('loading'); activity_oldestpage = oldest_page; jq('#buddypress ul.activity-list').append(response.contents); target.parent().hide(); // New line added. MathJax.typeset(); }, 'json' ); return false; }
You will need to rename the file to buddypress.min.js (or you can minify and name the new file as this) and BuddyPress will load it.
All we are doing is folllowing the re-initialization for MatchJAX as specified here
https://docs.mathjax.org/en/latest/web/typeset.html#resetting-automatic-equation-numberingThat should take care of it.
Regards
BrajeshHello Brajesh,
Thank you for your reply.
Your proposition worked perfectly. Now I can “load more” and it render me beautiful latex equations. I have also tried to apply the solution to others parts of activity stream like “Load newest” post and “Posting new” post; all worked very fine. I don’t know how to thank you; I am very grateful to you.I am doing to ask you again, excuse for that. As I said, I can load dynamically mathjax in some part of activity stream but I were not able to do it for “Comments”, “Edit” and “Select activities”; I tried to paste the code everywhere in the buddypress.js since yesterday but it did not work. When the reply for comments is sent, edit of existing post is saved and activity categorie is selected, MathaJax-Latex equations are not rendered. So, I am asking for the places I can paste the code MathJax.typeset() to solve these problems. I don’t know if it is possible to paste the magic code in one place so that it can work for entire activies.
Maybe it is important to precise that “Edit” comes from Buddypress Edit Activity plugin.Best Regards
Nestor
Hi Nestor,
You are welcome.I am not sure what “Select activities” is. Also, I do not use BP Edit Activity, so I regret my inability to assit with these 2.
I will help with the comments though.
Please look for a section
jq.post( ajaxurl, ajaxdata, function(response) { target.removeClass('loading'); content.removeClass('loading'); /* Check for errors and append if found. */ if ( response[0] + response[1] === '-1' ) { form.append( jq( response.substr( 2, response.length ) ).hide().fadeIn( 200 ) ); } else { var activity_comments = form.parent(); form.fadeOut( 200, function() { if ( 0 === activity_comments.children('ul').length ) { if ( activity_comments.hasClass('activity-comments') ) { activity_comments.prepend('<ul></ul>'); } else { activity_comments.append('<ul></ul>'); } } /* Preceding whitespace breaks output with jQuery 1.9.0 */ var the_comment = jq.trim( response ); activity_comments.children('ul').append( jq( the_comment ).hide().fadeIn( 200 ) ); form.children('textarea').val(''); activity_comments.parent().addClass('has-comments'); } ); jq( '#' + form.attr('id') + ' textarea').val(''); /* Increase the "Reply (X)" button count */ new_count = Number( jq('#activity-' + form_id[2] + ' a.acomment-reply span').html() ) + 1; jq('#activity-' + form_id[2] + ' a.acomment-reply span').html( new_count ); // Increment the 'Show all x comments' string, if present show_all_a = activity_comments.parents('.activity-comments').find('.show-all a'); if ( show_all_a ) { show_all_a.html( BP_DTheme.show_x_comments.replace( '%d', new_count ) ); } } jq(target).prop('disabled', false); jq(content).prop('disabled', false); });
It starts around line 625
and you can add that line just below “jq(content).prop(‘disabled’, false);” like
jq(content).prop('disabled', false); MathJax.typeset();
Regards
BrajeshHello Brajesh,
Thank you very much.
I tried the code for comments but it is not working well. It doesn’t render the current comment but if I put a second comment, it renders very well the latex equation of the comment above but not that second comment and so on…
By “Select activities”, I am talking about “show activiies” at the top of activity page. By default, it display “All” activities and one can select to display by “new members”, “contacts”, ect. I am using the French version of plugin because of that I have difficulties to retranslate with the right words (I am not good in English).
For BP Edit activity, can I copy the buddypress-edit-activity.js to the directory of my theme as you show me for buddypress.js and try to pass the code MathJax.typeset() somewhere?
Best Regards,
Nestor
Hi Nestor,
In that case, add atime delay before applying the MathJax.typeset();That should most probably fix it.
something like this
setTimeout(function() { MathJax.typeset(); }, 300);
I believe the dom insertion might be the case, so delaying the running of MathJax.typeset() might fix it.
For activity tabs, you should look for this function ‘bp_activity_request’
As of BP Edit activity, It is a 3rd party plugin that works with BuddyPress. We offer limited support for BuddyPress here. We do not offer support for other 3rd party plugins.
Regards
BrajeshHello Brajesh,
Yes, it works! You are the best; I have never seen that! Thank you so much; thank you for helping people. I am very grateful to you.
For the BP Edit Activity plugin, as you said, I understand well. I will uninstall it and leave the posts without editing.
Thank you very much!
Best Regards
Nestor
Hi Nestor,
You are welcome.I am glad I was able to assist.
Best Regards
Brajesh
The topic ‘ [Resolved] "Laod more" and "Refresh" in buddypress activity stream’ is closed to new replies.