Go Back   vb.org Archive > vBulletin 4 Discussion > vB4 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 09-01-2014, 05:49 AM
tbworld tbworld is offline
 
Join Date: Oct 2008
Posts: 2,126
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Activity Stream Javascript Fix (timeout)

Found a small "glitch" in vbulletin's activity stream's javascript. Essentially, the timeout timer is not being initiated unless a "mousemove" event is fired. This will only affect the largest of boards and those boards that heavily use the activity stream. Otherwise you would be wasting your time with this patch and the rest of this text will surely bore you.

Background
------------
My daughter had a redesign idea for her activity stream, so I finally had a bit of time to redevelop the JavaScript/AJAX for her new page. She wanted a dynamic window widget for her modified activity stream with additional filters and presentation information. When working with the new floating widget I noticed that the activity stream never timed out when the widget was not in focus. This will not do as her users want to have this window float on their desktops and will probably forget that it is there. I did not want 400 users banging on the server indefinitely for AJAX updates. vBulletin has done a fair job in their code here so updates are very minimized, unless the user asks for an update via the AJAX activity indicator. On my daughters board this additional click is optional so the updates can be a real-time stream.

Once a "mousemove" event is triggered then everything works as expected. In most cases most users will perform this just viewing the page. This is only a real problem if this window/widget is not the current focus, thus impossible for an initial "mousemove" event.

Anyway, here is the fix. (Do not bother with this unless you are doing something similar).

In "/clientscript/vbulletin_activitystream.js" make the following changes and additions.

Search for:
Code:
    YAHOO.util.Event.addListener(document, "mousemove", this.reset_idle_timer, this);
Replace with:
Code:
    this.init_idle_timer(this);        // TBWORLD idle timer fix 
    YAHOO.util.Event.addListener(document, "mousemove", this.reset_idle_timer, this);
Add to the bottom of the file:
Code:
    // Initialize the Idle-Timer (TBWORLD)     
    vB_ActivityStream.prototype.init_idle_timer = function(activityobj)
    {
        activityobj.idletimer = setTimeout(function(){activityobj.go_idle();}, activityobj.idle_refresh);
    }
Have fun.
Reply With Quote
Благодарность от:
Scanu
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 05:27 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.06401 seconds
  • Memory Usage 2,166KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (3)bbcode_code
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (1)post_thanks_box
  • (1)post_thanks_box_bit
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete