The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
Fix vbShout Timezone problem Details »» | |||||||||||||||||||||||||
This vbShout plugin: http://www.vbhackers.com/f76/ajax-fl...ut-2-1-a-4536/
Has a serious bug with Time Zone changing to that of the last person to post in the shout box. Here is a fix so that each user will see the time in their local timezone correctly. 1. Open template forumhome_vbshout_shout Find this (should be at the very beginning): Code:
<tr> Code:
<td nowrap align="left" valign="top"> <font size="1"> <date>{$Shout['time']}</date> </font> </td> 2. Open template forumhome_vbshout Find: Code:
Shouts.innerHTML = '<table cellpadding="1" cellspacing="3" border="0" width="95%" align="left">' + ShoutRequest.handler.responseText + '</table>' Code:
var formatMe = ShoutRequest.handler.responseText formatMe = replaceDates(formatMe); Shouts.innerHTML = '<table cellpadding="1" cellspacing="0" border="0" width="100%" align="left">' + formatMe + '</table>' Find this: Code:
function sb_CollectHV(sbForm) Code:
// replaces <date> tags function replaceDates(s) { var ret = ""; var matches = s.match(/<date>\d+<\/date>/g); for(var i = 0; matches != null && i < matches.length; i++) { var utc = matches[i].match(/\d+/); var date = new Date(utc * 1000); ret = ret + s.substr(0, s.indexOf(matches[i])); ret = ret + (date.getMonth()+1) + "/" + date.getDate() + "/" + date.getFullYear() + " " + date.getHours() + ":" + ((date.getMinutes() < 10) ? "0" : "") + date.getMinutes() + ":" + ((date.getSeconds() < 10) ? "0" : "") + date.getSeconds() + " "; s = s.substr(s.indexOf(matches[i]) + matches[i].length); } ret = ret + s; return ret; } 3. Open file vbshout.php FInd this (There are similar code blocks, this should be in the function rewrite_shoutbox_flatfile() around line 226): Code:
$Shout['time'] = buildTime($Shout['s_time']); $Shout['s_shout'] = bbcodeparser($Shout['s_shout']); $Shout['style'] = ''; $Shout['data'] = unserialize($Shout['s_data']); $Shout['username'] = fetch_musername($Shout, 'usergroupid'); if (preg_match("#(\#)?0099FF#i", $Shout['data']['color']) && $Shout['s_by'] != 1) { $Shout['data']['color'] = ''; } Code:
// $Shout['time'] = buildTime($Shout['s_time']); $Shout['time'] = $Shout['s_time']; $Shout['s_shout'] = bbcodeparser($Shout['s_shout']); $Shout['style'] = ''; $Shout['data'] = unserialize($Shout['s_data']); $Shout['username'] = fetch_musername($Shout, 'usergroupid'); if (preg_match("#(\#)?0099FF#i", $Shout['data']['color']) && $Shout['s_by'] != 1) { $Shout['data']['color'] = ''; } This should now pass the date as UTC and JavaScript will convert it on the client side to the appropriate date. Show Your Support
|
Comments |
#22
|
|||
|
|||
to get rid of the date and just have the time:
Code:
ret = ret + "[" + date.getHours() + ":" + ((date.getMinutes() < 10) ? "0" : "") + date.getMinutes() + " " + ((date.getSeconds() < 10) ? "0" : "") + date.getSeconds() + "]"; |
#23
|
|||
|
|||
Quote:
There might be a bug in this. before Code:
if(hour > 12) { Code:
if(hour == 12) { append = "PM"; } |
#24
|
|||
|
|||
So is this how it suppose to look?
Code:
var append = "AM"; var hour = date.getHours(); if(hour == 12) { append = "PM"; } if(hour > 12) { hour = hour - 12; append = "PM"; } if(hour == 0) { hour = 12; append = "AM"; } ret = ret + "[" + hour + ":" + ((date.getMinutes() < 10) ? "0" : "") + date.getMinutes() + ":" + ((date.getSeconds() < 10) ? "0" : "") + date.getSeconds() + " " + append + "]"; |
#25
|
|||
|
|||
Quote:
|
#26
|
|||
|
|||
I didn't much care for the date and the seconds. I got rid of the bracket and put a simple dash between the time and the username.
Code:
var append = "AM"; var hour = date.getHours(); if(hour > 12) { hour = hour - 12; append = "PM"; } if(hour == 0) { hour = 12; append = "AM"; } ret = ret + hour + ":" + ((date.getMinutes() < 10) ? "0" : "") + date.getMinutes() + " " + append + " - "; |
#27
|
|||
|
|||
Cool, whatever works for you. Thanks for posting your variation. I hope others do the same.
|
#28
|
|||
|
|||
Here's a bug...
When pruning (/prune) it doesn't ajax the original message when pruning. So we would need to refresh the page. So instead it would say "Loading....." |
#29
|
|||
|
|||
Quote:
What do you mean by "pruning"? |
#30
|
|||
|
|||
Quote:
When people engage in conversations on the shoutbox, you can clear out all the recent messages by typing in "/prune". |
#31
|
|||
|
|||
Quote:
Thanks for your help and feedback. |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|