|
Fix vbShout Timezone problem
This modification is in the archives.
This vbShout plugin: http://www.vbhackers.com/f76/ajax-flatfile-vbshout-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. Download No files for download. |
|||||||||