Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 3.7 > vBulletin 3.7 Template Modifications
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
Close / Open Thread Via Quick Reply Details »»
Close / Open Thread Via Quick Reply
Version: 2008.05.25, by Viper007Bond Viper007Bond is offline
Developer Last Online: Dec 2017 Show Printable Version Email this Page

Category: Show Thread Enhancements - Version: 3.7.0 Rating:
Released: 05-22-2008 Last Update: 05-24-2008 Installs: 32
Template Edits
Re-useable Code Translations  
No support by the author.

I wanted to be able to close and open threads as I left my reply via the quick reply box, so I wrote this little template mod.




Features
  • Checkbox at the bottom of the quick reply box to toggle the current status. Only shows up for people with proper permissions.
  • Javascript is used to update the reply buttons (to change them from "Reply" to "Closed" and visa-versa).
  • Javascript is used to change the text next to the checkbox saying what will happen when you reply.

Installation


It's a fairly easy install and only requires editing one template (SHOWTHREAD), and importing a product (for the language phrases). The following instructions are for the default theme, but custom themes will probably be really similiar.

Download and install the product. This will create the new language phrases so you can translate this hack to your liking.

Then open up "SHOWTHREAD" and find this code. It's for the top reply button.

HTML Code:
	<if condition="$show['largereplybutton']">
		<td class="smallfont"><a href="newreply.php?$session[sessionurl]do=newreply&amp;noquote=1&amp;p=$FIRSTPOSTID" rel="nofollow"><if condition="$show['closethread']"><img src="$stylevar[imgdir_button]/reply.gif" alt="$vbphrase[reply]" border="0" /><else /><img src="$stylevar[imgdir_button]/threadclosed.gif" alt="$vbphrase[closed_thread]" border="0" /></if></a></td>
	<else />

You will need to give both the open (reply.gif) and the closed (threadclosed.gif) <img> tags a new CSS class called "replybutton" so that the Javascript can update them.

So for the default theme, that would result in this:

HTML Code:
	<if condition="$show['largereplybutton']">
		<td class="smallfont"><a href="newreply.php?$session[sessionurl]do=newreply&amp;noquote=1&amp;p=$FIRSTPOSTID" rel="nofollow"><if condition="$show['closethread']"><img src="$stylevar[imgdir_button]/reply.gif" alt="$vbphrase[reply]" border="0" class="replybutton" /><else /><img src="$stylevar[imgdir_button]/threadclosed.gif" alt="$vbphrase[closed_thread]" border="0" class="replybutton" /></if></a></td>
	<else />

Now do the same thing for the bottom reply button (same HTML).


Now we need to add the new code to the bottom of the quick reply box (same template).

Find this code which is the HTML for the "quote message in post" checkbox:

HTML Code:
							<label for="qr_quickreply"><input type="checkbox" name="quickreply" value="1" id="qr_quickreply" accesskey="w" tabindex="4" />$vbphrase[quote_message_in_reply]</label>
						</div>
					</fieldset>

After that (and before what is probably a </div>), add all of this:

HTML Code:
<if condition="$show['openclose']">
					<fieldset class="fieldset" style="margin:$stylevar[formspacer]px 0px 0px 0px">
						<legend>$vbphrase[viper_opencloseqr_thread_management]</legend>
						<div style="padding:3px">
							<div>
								<label for="cb_openclose"><input type="checkbox" name="openclose" value="1" id="cb_openclose" tabindex="1" /><span id="qr_openclosestatus"><if condition="$show['closethread']">$vbphrase[viper_opencloseqr_close_thread]<else />$vbphrase[viper_opencloseqr_open_thread]</if></span></label>
							</div>
						</div>
					</fieldset>

					<script type="text/javascript">
					/* <![CDATA[ */

						// Current thread status recorder
						var viperThreadOpen = <if condition="$show['closethread']">true<else />false</if>;

						// Run the custom function when the quick reply form is submitted
						YAHOO.util.Event.addListener(document.getElementById("qrform"), "submit", viperQuikyReply);

						// Do some stuff when the form is submitted
						function viperQuikyReply() {

							var viperOpenCloseCheckbox = document.getElementById("cb_openclose");
							var viperQRTextareaChars = document.getElementById("vB_Editor_QR_textarea").value.length;
							var viperReplyButtonIMG;

							// If the checkbox wasn't checked or the message was too short (simple check), abort
							if ( viperOpenCloseCheckbox.checked == false || viperQRTextareaChars == 0 || viperQRTextareaChars < $vboptions[postminchars] ) return;

							// Uncheck the checkbox
							viperOpenCloseCheckbox.checked = false;

							// Change the text and set the reply button image filename
							if ( viperThreadOpen == true ) {
								document.getElementById("qr_openclosestatus").innerHTML = "$vbphrase[viper_opencloseqr_open_thread]";
								viperReplyButtonIMG = "threadclosed.gif";
								viperThreadOpen = false;
							} else {
								document.getElementById("qr_openclosestatus").innerHTML = "$vbphrase[viper_opencloseqr_close_thread]";
								viperReplyButtonIMG = "reply.gif";
								viperThreadOpen = true;
							}

							// Get all reply buttons via the new class
							var replybuttons = YAHOO.util.Dom.getElementsByClassName("replybutton", "img");

							// Loop through each reply button and change it's image URL
							var i;
							for (i in replybuttons) {
								replybuttons[i].src = "$stylevar[imgdir_button]/" + viperReplyButtonIMG;
							}
						}

					/* ]]> */
					</script>
</if>

Save and you're all done!


Oh, and don't forget to mark this as installed!

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.
Благодарность от:
desifunz1

Comments
  #2  
Old 05-23-2008, 11:49 AM
choccyclaire choccyclaire is offline
 
Join Date: Jan 2008
Posts: 235
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I'm assuming only usergroups capable of closing and opening threads can see this option? :unsure:
Reply With Quote
  #3  
Old 05-23-2008, 01:34 PM
Viper007Bond's Avatar
Viper007Bond Viper007Bond is offline
 
Join Date: Oct 2006
Location: Portland, OR, USA
Posts: 224
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by choccyclaire View Post
I'm assuming only usergroups capable of closing and opening threads can see this option? :unsure:
Yep. It uses the same test that vB uses for whether to display the close/open option in the Thread Tools dropdown.
Reply With Quote
  #4  
Old 05-23-2008, 09:28 PM
Hornstar Hornstar is offline
 
Join Date: Jun 2005
Location: Australia
Posts: 2,469
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks, I remember this being available in the 3.0.x days and it is good to see it back.
Reply With Quote
  #5  
Old 05-24-2008, 11:37 AM
choccyclaire choccyclaire is offline
 
Join Date: Jan 2008
Posts: 235
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Viper007Bond View Post
Yep. It uses the same test that vB uses for whether to display the close/open option in the Thread Tools dropdown.
Wicked stuff. Installed thanks! :up:
Reply With Quote
  #6  
Old 05-24-2008, 01:36 PM
Allan's Avatar
Allan Allan is offline
 
Join Date: Jun 2003
Location: France
Posts: 1,513
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

very practical I find, installed
Reply With Quote
  #7  
Old 05-24-2008, 03:36 PM
Magnumutz's Avatar
Magnumutz Magnumutz is offline
 
Join Date: Feb 2006
Location: Romania
Posts: 731
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks, it does what it says
Installed.
Reply With Quote
  #8  
Old 05-24-2008, 03:39 PM
Big Boss's Avatar
Big Boss Big Boss is offline
 
Join Date: Jan 2008
Location: Cleveland, OH
Posts: 55
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thank you for this!
Reply With Quote
  #9  
Old 05-25-2008, 09:09 AM
Allan's Avatar
Allan Allan is offline
 
Join Date: Jun 2003
Location: France
Posts: 1,513
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Don't work for me ...

EDIT: Work ^^
Reply With Quote
  #10  
Old 05-25-2008, 09:16 AM
Viper007Bond's Avatar
Viper007Bond Viper007Bond is offline
 
Join Date: Oct 2006
Location: Portland, OR, USA
Posts: 224
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I've minorly updated the hack. If your forum is in English, no need to update as all this update adds is easier translating of it. There are no other changes.

For those not using English, here's the changed lines:
  1. The "Thread Management" string has been replaced by "$vbphrase[viper_opencloseqr_thread_management]".

  2. The checkbox, it's label, etc. has been replaced with this line (replace the line with this new line):

    HTML Code:
    <label for="cb_openclose"><input type="checkbox" name="openclose" value="1" id="cb_openclose" tabindex="1" /><span id="qr_openclosestatus"><if condition="$show['closethread']">$vbphrase[viper_opencloseqr_close_thread]<else />$vbphrase[viper_opencloseqr_open_thread]</if></span></label>

  3. Code:
    document.getElementById("qr_openclosestatus").innerHTML = "Open";

    has been replaced with:

    Code:
    document.getElementById("qr_openclosestatus").innerHTML = "$vbphrase[viper_opencloseqr_open_thread]";

  4. Code:
    document.getElementById("qr_openclosestatus").innerHTML = "Close";

    has been replaced with:

    Code:
    document.getElementById("qr_openclosestatus").innerHTML = "$vbphrase[viper_opencloseqr_close_thread]";


Then just import the product now attached to the original post and the the new phrases will be created. They can be found under "Show Thread" and are prefixed with "viper_opencloseqr_".
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 01:24 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.09687 seconds
  • Memory Usage 2,339KB
  • 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
  • (4)bbcode_code
  • (5)bbcode_html
  • (2)bbcode_quote
  • (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
  • (2)pagenav_pagelink
  • (10)post_thanks_box
  • (1)post_thanks_box_bit
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit
  • (10)post_thanks_postbit_info
  • (9)postbit
  • (10)postbit_onlinestatus
  • (10)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_postinfo_query
  • fetch_postinfo
  • 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
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • 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