vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 2.x Beta Releases (https://vborg.vbsupport.ru/forumdisplay.php?f=5)
-   -   Mini-Hack: Improved PM Popup JavaScript (https://vborg.vbsupport.ru/showthread.php?t=34136)

TWTCommish 01-14-2002 10:00 PM

Alright, this is pretty straightforward. Using this, your users will be redirected right to their most recent PM, rather than just their Inbox. Furthermore, you'll be able to use the username and title of the message in the popup. Only known downside: if they have more than one PM, it just takes them to the most recent one. I might work on this later to let them know that they've got a few waiting for them, but I've found that this is a very minor problem that rarely comes up.

This is in the Beta forum for one simple reason: I had trouble putting it together, and strongly suspect there's an easier way to do this. I figured I'd take a chance and post it anyway. Started off just for my own board, but I found it so useful I thought I'd post it. Here's how it's done:

Open global.php in your main forums directory. Find this:

Code:

$newpmmsg=1;
RIGHT after it (before the eval() line), put this:

Code:

  $latest_pm = $DB_site->query_first("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 readtime = '0' AND touserid = '$bbuserinfo[userid]' AND p.fromuserid = u.userid ORDER BY dateline DESC LIMIT 1");
  extract($latest_pm);

Save and upload. Then, edit the template head_newpm. You can now use $pm_popup_id, $pm_popup_username, and $pm_popup_title within this template to refer to the ID of the PM, the username of the person who sent it, and the title of the message.

I'm sure you can all figure out for yourselves from then on how to get it to redirect and all that. Here's the template I'm using:

Code:

<script language="JavaScript">
<!--
function confirm_newpm() {
        input_box=confirm("You have a new private message from $pm_popup_username entitled \"$pm_popup_title\".\nClick OK to view it, or cancel to hide this prompt.");
        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('private.php?s=$session[sessionhash]&action=show&privatemessageid=$pm_popup_id','pmnew','width=600,height=500,menubar=yes,scrollbars=yes,toolbar=yes,location=yes,directories=yes,resizable=yes,top=50,left=50');
                } else {
                        window.location="private.php?s=$session[sessionhash]&action=show&privatemessageid=$pm_popup_id";
                }
        } else {
        // Output when Cancel is clicked
        }
}
-->
</script>

Enjoy! Screenshot attached. :) Please let me know if I'm being a moron, if I've missed something, etc.

Scott MacVicar 01-15-2002 02:40 PM

This only shows the last pm though you could have had multiple, anyway as your onyl selecting one use query_first instead of query and then fetch array.

PHP 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 readtime = '0' AND touserid = '$bbuserinfo[userid]' AND p.fromuserid = u.userid ORDER BY dateline DESC LIMIT 1");
  
extract($DB_site->fetch_array($latest_pm)); 

can be
PHP Code:

  $latest_pm $DB_site->query_first("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 readtime = '0' AND touserid = '$bbuserinfo[userid]' AND p.fromuserid = u.userid ORDER BY dateline DESC LIMIT 1");
  
extract($latest_pm); 


TWTCommish 01-15-2002 02:44 PM

Ah, I see. Well, I'm glad no larger problems exist. Is it particularly faster either way? I've edited the original post anyway.

And yeah, I'm aware of it taking you to the latest one. Hence this, from my post. Maybe you missed it. :)

Quote:

Only known downside: if they have more than one PM, it just takes them to the most recent one. I might work on this later to let them know that they've got a few waiting for them, but I've found that this is a very minor problem that rarely comes up.

ptbyjason 01-16-2002 03:04 PM

Thanks, I thought about this a while back, but I didn't think it was possible.

TWTCommish 01-16-2002 03:25 PM

Naw, 'tis very possible. I've been trying to have it detect whether there's more than one, and display the typical message and all that...but it's giving me a hard time, even though it seems like it ought to work. If I get it working, I'll be sure to post it as a hack. :)


All times are GMT. The time now is 12:27 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01009 seconds
  • Memory Usage 1,734KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (3)bbcode_code_printable
  • (2)bbcode_php_printable
  • (1)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (5)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete