PDA

View Full Version : Thread management in quick reply - vBulletin 4


Sador
01-16-2010, 06:57 PM
Hi,

In my vBulletin 3 forum I did some template edits which made it possible to stick, unstick, open and close threads from quick reply. When submitting a message from quick reply you could use a checkbox to open / close and stick / unstick the topic you were posting in when you had enough permissions to do so. This worked very well, and I kinda want it back in my vBulletin 4 website. However, because of the new way templates are build, I fail to do so.

I managed to get some of it working with the following:

In SHOWTHREAD, find

{vb:rawphrase show_your_signature}
<div class="blockrow" id="aftersubmit">
</vb:if>
</div>

and after that, add:
<vb:if condition="$show['openclose']">
<li><label for="cb_openclose"><input type="checkbox" name="openclose" id="cb_openclose" value="1" tabindex="1" {vb:raw checked.openclose} /> <vb:if condition="$show['closethread']">{vb:rawphrase close_this_thread}<vb:else />{vb:rawphrase reopen_this_thread}</vb:if></label></li>
</vb:if>
<vb:if condition="$show['stickunstick']">
<li><label for="cb_stickunstick"><input type="checkbox" name="stickunstick" id="cb_stickunstick" value="1" tabindex="1" {vb:raw checked.stickunstick} /> <vb:if condition="$show['unstickthread']">{vb:rawphrase unstick_this_thread}<vb:else />{vb:rawphrase stick_this_thread}</vb:if></label></li>
</vb:if>

If I use this, the open / close stuff works like it should, but the stick / unstick button isn't showing up.

After a lot of trial and error, I changed the

<vb:if condition="$show['stickunstick']">

to

<vb:if condition="$show['openclose']">
which made it show up, but it now uses the open / close conditional instead of checking whether a thread is sticky or not to give the correct choice.

Can somebody tell me what I'm doing wrong here? Why won't the $show['stickunstick'] show up, and is there a way to correct this?

This is how I want it to be, when everything works like it should:

http://www.tiswah.com/forum/uploaded/1/thread management.jpg

Thanks for any help you guys could give me. :)

Sador
01-19-2010, 01:43 PM
Is there anyone who can help me out with this?

Charlie98902
01-19-2010, 03:20 PM
I like the idea and hope someone can help you as this looks like something I want as well.

Lynne
01-19-2010, 03:42 PM
Have you tried just printing out what $show['stickunstick'] is set to in the template? Make sure it has a value. Also, make sure the user has permission to stick/unstick the thread of $show[] will be false.

Sador
01-22-2010, 08:14 PM
Have you tried just printing out what $show['stickunstick'] is set to in the template? Make sure it has a value. Also, make sure the user has permission to stick/unstick the thread of $show[] will be false.Thanks for that one, the problem was I didn't edit showthread.php to include it.

However, now it works, but there is a weird bug suddenly.

When looking at a thread while logged in, the header changes to show this weird thing above it:

http://www.tiswah.com/forum/uploaded/1/weird.jpg

When going to a thread as a guest, you get the following error message:

Unable to add cookies, header already sent.
File: ../showthread.php
Line: 1

The things I have done so far are
1) the template edit I did in my first post of this topic (except for changing stickunstick to openclose, I changed it back to stickunstick)

and 2) edited showthread.php (which is causing this problem for some reason):

Find:
// build quick reply if appropriate
if ($show['quickreply'])
{
require_once(DIR . '/includes/functions_editor.php');

$show['wysiwyg'] = ($forum['allowbbcode'] ? is_wysiwyg_compatible() : 0);

// set show signature hidden field
$showsig = iif($vbulletin->userinfo['signature'], 1, 0);

after add:

// can this user stick this thread?
if (can_moderate($threadinfo['forumid'], 'canmanagethreads'))
{
$show['stickunstick'] = true;
}
else
{
$show['stickunstick'] = false;
}
if ($show['openclose'] OR $show['stickunstick'])
{
$show['closethread'] = iif($threadinfo['open'], true, false);
$show['unstickthread'] = iif($threadinfo['sticky'], true, false);
}
else
{
$threadmanagement = '';
}

Is there something wrong with my code? Or am I, yet again, forgetting something obvious? Or is something else causing a conflict.

Hope someone can help me on this some more.

Lynne
01-22-2010, 10:09 PM
I can't see why what you added would add that block of code. What editor are you using? If you aren't using something for plain, basic text editing, like notepad, then extra characters may be added into the file like what you are seeing.

Sador
01-22-2010, 10:25 PM
I've used notepad for editing, and vbulletin template manager of course.

Trying to use the code again in a clean showthread.php file won't work either. The problem only happens when I add the code to showthread.php though.

Could it be that some of the code is doing something that is already being done somewhere and is causing problems? For example, something inside the templates or the open / closed code in showthread.php that was already there?

Lynne
01-22-2010, 10:55 PM
I just don't see anything in your code that would do that. Try taking away some of the code to narrow down what part of it is doing that.

Sador
01-22-2010, 11:57 PM
After trying multiple times it seemed that ány edit would cause this.

So instead I edited the showthread.php in notepad++, adding this code in and upload the modified file.

Now it works like it should. Thank you very much Lynne, I'm glad it works now.