Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 2.x > vBulletin 2.x Full Releases
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
Details »»

Version: , by bira bira is offline
Developer Last Online: Jun 2013 Show Printable Version Email this Page

Version: 2.2.x Rating:
Released: 11-25-2001 Last Update: Never Installs: 31
 
No support by the author.

OK, I wrote this hack seeing as my users were nagging about it and I could not find one here (if there is one, I apologise - please give me the URL).

This works exactly like post preview:



How to install:

Open private.php

1) First we need to move "newmessage" after "dosend". Highlight the entire section between:

Code:
    // ############################### start new message ###############################
Until (but not including):

Code:
    // ############################### start send message ###############################

Cut this entire section (a total of 83 lines in 2.2.1) and paste it right above:

Code:
    // ############################### start do stuff (move, etc) ###############################
2) Now we need to insert the following code:

a) Find:

Code:
    $savecopy=iif($savecopy=="yes",1,0);
Right under it insert:

Code:

    // preview hack
    $pmreceipt=iif($pmreceipt=="yes",1,0);
    // preview hack
    
b) Find:

Code:
    if ($pmquota>0 and $touserinfo[usergroupid] != 6 and $bbuserinfo[usergroupid] != 6) {
Right above it insert:

Code:

    // preview hack
    if ($preview) {
        $previewpost=1;
        $previewmessage=bbcodeparse($message,0,$allowsmilie);

        if ($signature) {
            $post['signature'] = bbcodeparse($bbuserinfo['signature'],0,$allowsmilie);
            eval("\$post[signature] = \"".gettemplate("postbit_signature")."\";");
            $previewmessage.=$post['signature'];
        }

        eval("\$postpreview=\"".gettemplate("priv_sendpreview")."\";");

        $parseurlchecked=iif($parseurl,"checked","");
        $pmreceiptchecked=iif($pmreceipt,"checked","");
        $savecopychecked=iif($savecopy,"checked","");
        $signaturechecked=iif($signature,"checked","");
        $previewchecked=0;
        
        $title = htmlspecialchars($title);
        
        $privatemessageid = $prevmessageid;
        $forward;		
        $subject = $title;
        $privmessage = $message;
        $action="newmessage";
    } else {
    // preview hack
    
c) Find:

Code:
    } #end dosend
Right above it insert:

Code:

    } // preview hack
    
d) Find:

Code:
    //show new message form
Right under it insert:

Code:

    // preview hack
    if (!$pagetext) {
        // parse message for html if previewing
        $message = htmlspecialchars($message); // Without this, a </textarea> in the message breaks the form on preview
    }
    // preview hack
    
e) Find:

Code:
    if ($bbuserinfo[userid]!=0 and !$previewpost and $bbuserinfo[signature]!="") {
        $signaturechecked="CHECKED";
    }
Right under it insert:

Code:

    // preview hack
    if (!isset($parseurl)) {
        $parseurlchecked="CHECKED";
    }

    if (!isset($savecopy)) {
        $savecopychecked="CHECKED";
    }
    
    if (!isset($pmreceipt)) {   
        $pmreceiptchecked="CHECKED";
    }
    // preview hack
    
f) Find:

Code:
    // /enhanced
    eval("dooutput(\"".gettemplate("priv_sendprivmsg")."\");");
Right above it insert:

Code:

    // preview hack
    if (!isset($privmessage)) {
        $privmessage = $message[message];
    }
    // preview hack
    

g) Find:

Code:
    // enhanced
   $receipt=iif($pmreceipt=="yes",1,0);
   // /enhanced
And replace it with (the code to remove is marked in red):

Code:
    // enhanced
   $receipt=iif($pmreceipt,1,0);
   // /enhanced

Save private.php and upload to server.


In the Administration control panel -> Templates

1) ADD template priv_sendpreview and insert to it:

Code:

    <br>

    <table cellpadding="0" cellspacing="0" border="0" bgcolor="#555576"  width="100%" align="center"><tr><td>
    <table cellpadding="4" cellspacing="1" border="0"  width="100%">
    <tr>
        <td bgcolor="#8080A6"><smallfont color="#EEEEFF"><b>Message Preview:</b></smallfont></td>
    </tr>
    <tr>
        <td bgcolor="#F1F1F1"><normalfont>$previewmessage</normalfont></td>
    </tr>
    </table>
    </td></tr></table>
    
(you may edit this to your liking).

2) Open template priv_sendprivmsg

a) place $postpreview where you want the message preview to appear (normally would be under $cpnav).

b) Find:

Code:
    <textarea name="message" rows="20" cols="$textareacols" wrap="virtual" tabindex="3">$message[message]</textarea>
And replace it with (change marked in red):

Code:
    <textarea name="message" rows="20" cols="$textareacols" wrap="virtual" tabindex="3"> $privmessage</textarea>
c) Find:

Code:
    <input type="checkbox" name="parseurl" value="yes" checked>
And replace it with (change marked in red):

Code:
    <input type="checkbox" name="parseurl" value="yes" $parseurlchecked>
d) Find:

Code:
    <input type="checkbox" name="savecopy" value="yes" checked>
And replace it with (change marked in red):

Code:
    <input type="checkbox" name="savecopy" value="yes" $savecopychecked>
e) Find:

Code:
    <input type="submit" class="bginput" name="submit" value="Send Message" accesskey="s" tabindex="4">
And replace it with (change marked in red):

Code:
    <input type="submit" class="bginput" name="submit" value="Send Message" accesskey="s" tabindex="4">
    <input type="submit" class="bginput" name="preview" value="Preview Message" accesskey="p" tabindex="4">

3) Open template priv_requestreceipt

Find:

Code:
    <input type="checkbox" name="pmreceipt" value="yes" checked>
And replace it with (change marked in red):

Code:
    <input type="checkbox" name="pmreceipt" value="yes" $pmreceiptchecked>
That's it!

Comments and additions welcome.

Cheers,

Bira

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #12  
Old 11-27-2001, 05:00 PM
bira's Avatar
bira bira is offline
 
Join Date: Nov 2001
Posts: 387
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

A-ha!!!!

Silly me, I found the culprit :blush:

In the hack details, I have the following code added:

Code:
    // preview hack
    $pmreceipt=iif($pmreceipt=="yes",1,0);
    // preview hack
This alters $pmreceipt's value from "yes" to "1" (which for this matter is the same thing.)

In any event, doing this fix will NOT harm your script.
Reply With Quote
  #13  
Old 11-27-2001, 05:10 PM
JJR512's Avatar
JJR512 JJR512 is offline
 
Join Date: Oct 2001
Location: Glen Burnie, MD, USA
Posts: 710
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

OK, I think it makes sense.

BTW, I just noticed that the name of this hack doesn't really suit what it does..."Preview Sent Private Message"...you haven't really sent the message yet, when you preview it.
Reply With Quote
  #14  
Old 11-27-2001, 05:21 PM
bira's Avatar
bira bira is offline
 
Join Date: Nov 2001
Posts: 387
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

yeah, it should have been 'Preview Private Message before Sending' -- but I can't change it :/
Reply With Quote
  #15  
Old 11-27-2001, 06:05 PM
bira's Avatar
bira bira is offline
 
Join Date: Nov 2001
Posts: 387
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

If you haven't installed the hack, ignore this message -- the installation instructions in the first thread and the downloadable attachment txt file have been modified.


ok, found - and corrected - another bug.

Problem: if you are replying to a PM or forwarding it, the icon in the folder for that PM does not change from a regular "read PM" to a "replied to PM" or a "forwarded PM".

The reason is that if you preview a message, the values for "privatemessageid" and "forward" -- hidden fields in the form -- are not stored.

For this, we have to redclare them in the 'preview' part of the hack.

If you already installed this hack, find in private.php:

Code:
$subject = $title;
And add below or above it:

Code:
$privatemessageid = $prevmessageid;
$forward;
Reply With Quote
  #16  
Old 11-28-2001, 03:00 PM
Admin's Avatar
Admin Admin is offline
Coder
 
Join Date: Oct 2023
Location: Server
Posts: 1
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Love it, installed here.

Thanks.
Reply With Quote
  #17  
Old 11-28-2001, 03:06 PM
bira's Avatar
bira bira is offline
 
Join Date: Nov 2001
Posts: 387
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

wow, thanks
Reply With Quote
  #18  
Old 11-28-2001, 03:11 PM
Admin's Avatar
Admin Admin is offline
Coder
 
Join Date: Oct 2023
Location: Server
Posts: 1
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thank you.

One problem though, with this code:
Code:
$privatemessageid = $prevmessageid;
$forward;
If I'm not replying to a message or forwarding one, whenever I try to preview I get the error_noid message.

So I had to remove that bit for now, let us when you get a fix.

(and sorry about my test message )
Reply With Quote
  #19  
Old 11-28-2001, 03:27 PM
bira's Avatar
bira bira is offline
 
Join Date: Nov 2001
Posts: 387
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

FireFly, you shouldn't remove it. I'll explain:

In the send new pm form, there are two hidden fields (original code):

Code:
<input type="hidden" name="prevmessageid" value="$privatemessageid">
<input type="hidden" name="forward" value="$forward">
These determine the behaviour of your icons in the PM folder:

if $privatemessageid has a value, then it means you are now replying to or forwarding a message. If it doesn't have a value, it means you are writing a new message.

if $privatemessageid has a value and $forward=1, it means you are forwarding a message and not replying.

These then determine which icon will be displayed in your inbox next to that message.

Now, when you click on "Reply" for a message, these values are filled.

When you hit "Preview", these values are lost.

So we need to "reinstate" them.

That's what these two lines are for:

Code:
$privatemessageid = $prevmessageid;
$forward;
From what you are telling me, I can only assume you have high error reporting set in php.ini.

For the vast majority of the people, that error won't show up because they are not in development environment with high error reporting, and functionality is not tampered.

However, if you want to be "holier than the pope" so to speak, do this instead:

PHP Code:
if ($prevmessageid) {
       
$privatemessageid $prevmessageid;
}

$forward iif($forward,1,0); 
I think this should work. Try it out and let me know

Cheers,

Bira
Reply With Quote
  #20  
Old 11-28-2001, 03:33 PM
Admin's Avatar
Admin Admin is offline
Coder
 
Join Date: Oct 2023
Location: Server
Posts: 1
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

[QUOTE]Originally posted by bira
From what you are telling me, I can only assume you have high error reporting set in php.ini.
Reply With Quote
  #21  
Old 12-10-2001, 04:11 AM
Wayne Luke's Avatar
Wayne Luke Wayne Luke is offline
Senior Member
 
Join Date: Jan 2002
Location: Southern California
Posts: 1,694
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

OKay.. I have installed this as well and come across another pecularity.

If you look in private.php in the "New Message" section there is this line:
PHP Code:
  if (isset($privatemessageid)) { 
Well what this does is start a check to make sure the previous message actually exists. On my version and installation of PHP even though it was set to '0' this was returning true. I had to change the line to the following to prevent a "Invalid Message Error".

PHP Code:
  if (isset($privatemessageid) and $privatemessageid!=0) { 
With that it works great. I recommend that if the error doesn't occur then use Bira's original code. If it does then make this modification.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 12:14 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.04928 seconds
  • Memory Usage 2,348KB
  • Queries Executed 25 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (34)bbcode_code
  • (3)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (6)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (3)pagenav_pagelink
  • (11)post_thanks_box
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (11)postbit_onlinestatus
  • (11)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.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
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete