Version: 1.00, by TWTCommish
Developer Last Online: Dec 2022
Version: 2.2.x
Rating:
Released: 01-21-2002
Last Update: Never
Installs: 41
No support by the author.
What's it do?
Simple: it checks to see how many new PMs a user has. If they've only got one (which is usually the case...I don't think many people get tons of new PMs), the popup JavaScript alert displayed to them will let them know who sent them the message, what it's title is, and, rather than take them to the Inbox, it'll take them directly to the message.
If there's more than one, it'll display a more vague message, letting them know just how many new messages they have, and redirecting them to their Inbox (which is where the current popup directs you). Anyway, here's the hack:
Open global.php. Around line 266 you should see the following:
Code:
$newpmmsg=1;
RIGHT below it, place this (REPLACE your current code for this hack with the code below, if you happen to be one of the few people who actually intalled this originally from the Beta Hacks forum. )
Code:
$latest_pm = $DB_site->query("SELECT p.privatemessageid AS pm_popup_id, p.title AS pm_popup_title, u.username AS pm_popup_username FROM privatemessage p, user u WHERE messageread = 0 AND p.userid = $bbuserinfo[userid] AND p.fromuserid = u.userid ORDER BY dateline DESC");
$hack_pm_total = $DB_site->num_rows($latest_pm);
if ($hack_pm_total > 1) {
eval("\$pm_popup_text = \"".gettemplate('pm_popup_multiple')."\";");
eval("\$pm_popup_url = \"".gettemplate('pm_popup_url_multiple')."\";");
} else {
extract($DB_site->fetch_array($latest_pm));
eval("\$pm_popup_text = \"".gettemplate('pm_popup')."\";");
eval("\$pm_popup_url = \"".gettemplate('pm_popup_url')."\";");
}
Now, create the four new templates. I've attached a file to this post containing the names of the four templates, and the text I've used to populate them -- which will probably be the same text and such you'll want to use. Don't be intimidated...they're all very small.
After that, edit your head_newpm template to make use of the new variables. Here's my use of it (highly suggested):
Code:
<script language="JavaScript">
<!--
function confirm_newpm() {
input_box = confirm("$pm_popup_text");
if (input_box == true) { // Output when OK is clicked
second_box = confirm("Open in new window?\n\n(Press cancel to open your $inboxname in the current window.)");
if (second_box == true) {
window.open('$pm_popup_url','pmnew','width=600,height=500,menubar=yes,scrollbars=yes,toolbar=yes,location=yes,directories=yes,resizable=yes,top=50,left=50');
} else {
window.location = "$pm_popup_url";
}
} else {
// Output when Cancel is clicked
}
}
-->
</script>
Enjoy.
Show Your Support
This modification may not be copied, reproduced or published elsewhere without author's permission.
Can you post that block of code you have (the code around it, too) in global.php? If you don't want to, that's okay...just wanna help. You're right, it is a simple hack, by most hack standards.
Originally posted by squawell i'm sure i have created those templates~~
Any progress? I'd be glad to help if I can. Are you sure you've tried it with any new PMs? Sometimes the vBulletin PM popups don't popup, for no apparent reason. You might want to try it more than once.
$newpmmsg=0;
$headnewpm='';
if ($checknewpm and $bbuserinfo['userid']!=0 and $bbuserinfo['pmpopup']==2) {
if ($noshutdownfunc) {
$DB_site->query("UPDATE user SET pmpopup=1 WHERE userid=$bbuserinfo[userid]");
} else {
$shutdownqueries[]="UPDATE LOW_PRIORITY user SET pmpopup=1 WHERE userid=$bbuserinfo[userid]";
}
$newpmmsg=1;
$latest_pm = $DB_site->query("SELECT p.privatemessageid AS pm_popup_id, p.title AS pm_popup_title, u.username AS pm_popup_username FROM privatemessage p, user u WHERE messageread = 0 AND touserid = $bbuserinfo[userid] AND p.fromuserid = u.userid ORDER BY dateline DESC");
$hack_pm_total = $DB_site->num_rows($latest_pm);
You should use the code tags next time -- the lack of formatting really hurts the legibility.
Anyway, the code looks good. Are you positive the templates are right? Do you get any JS errors? What I did to debug this the first time around was, if it didn't show up, I'd check the HTML on the page to see if the JS was actually there or not. If it's not, that means it hasn't detected a new PM at all. You might need to try it more than once to make sure it's not just a fluke, as it is now and then with vB's JS popup, it seems.
Oh! I'm so very, very stupid. I forget the template change. Go back to the first post...I'll edit it as soon as I post this to include the last change needed.
Well, if you want to know sooner, you can just send one to yourself. How do you think I tested it? I sure as heck didn't wait for someone to send me one each time. Anyway, I hope you like it.