Back to vBulletin 3.6 Add-ons

Ajax notification of a new personal message
Mod Version: 1.1, by pedigree

This modification is in the archives.
vB Version: 3.6.5 Rating: (3 votes - 5.00 average) Installs: 61
Released: 19 Jul 2007 Last Update: 20 Jul 2007 Downloads: 385
Not Supported Uses Plugins Template Edits Additional Files Is in Beta Stage  

A small mod that puts a flashing envelope in the top right corner of your screen when you get a new personal message, even if youre sitting idle. You dont have to open / reload any pages to see the notification

My default, it checks once per minute but its configurable in the javascript

PLEASE - Read the instructions, anything in there that is asked here will be ignored or simply a RTFM reply.

Ive tried it with FF2 / IE6 and Opera 9.21. Ive tried it on two forums running 3.6.5 but it should work on 3.6.0-3.6.7

Edit footer template, add this to the very bottom
HTML Code:
<if condition="$bbuserinfo[userid] > 0">
<if condition="$vboptions['ajaxchecknewpmactive']">
<script>
	sessionurl = '$session[sessionurl]';
	checkNewPM()
</script>
<if condition="$vboptions[ajaxchecknewpm_position]=='F'">
<div id="ajaxnewpmdiv" style="
    position:absolute;
    display:none;
    width:32px;height:32px;left:0px;top:0px;
    padding:0px;background:transparent;
    border:0px solid #ffffff"><a href="private.php?$session[sessionurl_q]"><img src="images/newpm.gif" alt="You have a new PM" border="0"></a></div>
<script type="text/javascript"><!--
/* Script by: www.jtricks.com
 * Version: 20060303
 * Latest version:
 * www.jtricks.com/javascript/navigation/floating.html
 */
var target_x = -60;
var target_y = 12;
var has_inner = typeof(window.innerWidth) == 'number';
var has_element = document.documentElement && document.documentElement.clientWidth;
var fm_id='ajaxnewpmdiv';
var floating_menu =
    document.getElementById
    ? document.getElementById(fm_id)
    : document.all
      ? document.all[fm_id]
      : document.layers[fm_id];
var fm_shift_x, fm_shift_y, fm_next_x, fm_next_y;
function move_menu()
{
    if (document.layers)
    {
        floating_menu.left = fm_next_x;
        floating_menu.top = fm_next_y;
    }
    else
    {
        floating_menu.style.left = fm_next_x + 'px';
        floating_menu.style.top = fm_next_y + 'px';
    }
}
function compute_shifts()
{
    fm_shift_x = has_inner
        ? pageXOffset
        : has_element
          ? document.documentElement.scrollLeft
          : document.body.scrollLeft;
    if (target_x < 0)
        fm_shift_x += has_inner
            ? window.innerWidth
            : has_element
              ? document.documentElement.clientWidth
              : document.body.clientWidth;
    fm_shift_y = has_inner
        ? pageYOffset
        : has_element
          ? document.documentElement.scrollTop
          : document.body.scrollTop;
    if (target_y < 0)
        fm_shift_y += has_inner
            ? window.innerHeight
            : has_element
              ? document.documentElement.clientHeight
              : document.body.clientHeight;
}
function float_menu()
{
    var step_x, step_y;
    compute_shifts();
    step_x = (fm_shift_x + target_x - fm_next_x) ;
    if (Math.abs(step_x) < .5)
        step_x = fm_shift_x + target_x - fm_next_x;
    step_y = (fm_shift_y + target_y - fm_next_y) ;
    if (Math.abs(step_y) < .5)
        step_y = fm_shift_y + target_y - fm_next_y;
    if (Math.abs(step_x) > 0 ||
        Math.abs(step_y) > 0)
    {
        fm_next_x += step_x;
        fm_next_y += step_y;
        move_menu();
    }
    setTimeout('float_menu()', 20);
};
compute_shifts();
if (document.layers)
{
    // Netscape 4 cannot perform init move
    // when the page loads.
    fm_next_x = 0;
    fm_next_y = 0;
}
else
{
    fm_next_x = fm_shift_x + target_x;
    fm_next_y = fm_shift_y + target_y;
    move_menu();
}
float_menu();
//--></script>
</if>
</if>
</if>
Edit headerinclude and add this to the bottom
HTML Code:
<script type="text/javascript" src="clientscript/vbulletin_ajax_checknewpm.js"></script>
Edit template navbar

Find this
HTML Code:
<strong><phrase 1="$vbphrase[pmpercent_nav_compiled]">$vbphrase[your_pm_box_is_x_full]</phrase></strong></if>
		</div>
		</td>
And below that, add this
HTML Code:
<if condition="$vboptions[ajaxchecknewpm_position]=='N'">
<td class="alt2" valign="top" nowrap="nowrap"><div id="ajaxnewpmdiv" style="
    display:none;
    width:32px;height:32px;left:0px;top:0px;
    padding:0px;background:transparent;
    border:0px solid #ffffff"><a href="private.php?$session[sessionurl_q]"><img src="images/newpm.gif" alt="You have a new PM" border="0"></a></div></td>
</if>
NOTICE : If you have the New PM Notification mod installed (New PM Notification) you will need to remove it by searching for and deleting this text in the navbar template
HTML Code:
<if condition="$bbuserinfo['pmunread']">
		<td class="alt2" valign="top" nowrap="nowrap">
	<a href="/forum/private.php?$session[sessionurl]"><img src="$stylevar[imgdir_misc]/newpm.gif" alt="You have a new PM" border="0"></a>
		</td>
	</if>
If you want the floating notifier on a new page load and not the ajax checking, edit the JS file and delete

HTML Code:
setTimeout("checkNewPM()", checkdelay);
Youll need to:
Upload 1 GIF file
Upload 1 Javascript file
Import 1 XML product

Makes 1 plugin hook into misc.php (adds ajaxchecknewpm function)

History 19 July 2007
Version 1.1
  • Bug fix, IE complains when a guest gets a permission denied response when it expects XML. Removed Guests from checking for PMs via Ajax
  • Added options to have the Notification in the navbar as well as floating.

if you have 1.0 installed, youll need to upload the Jaavscript file again, uninstall / reinstall the XML product and make the template changes to footer (not headerinc) and add 1 to navbar

Download

This modification is archived, downloads are still allowed.

File Type: %1$s AjaxNewPMChecker_v1.1.zip (5.8 KB, 360 downloads)

Screenshots

Click image for larger version
Name:	ajaxpm.jpg
Views:	2098
Size:	8.2 KB
ID:	67190   Click image for larger version
Name:	note1.jpg
Views:	1560
Size:	5.4 KB
ID:	67230  

Similar Mods

Mini Mods GS - Visitor Message Private Message Notification 1.0 vBulletin 3.7 Add-ons

vblts.ru supports vBulletin®, 2022-2024