Go Back   vb.org Archive > vBulletin Modifications > Archive > vB.org Archives > vBulletin 3.6 > vBulletin 3.6 Add-ons
FAQ Community Calendar Today's Posts Search

 
 
Thread Tools
Collapsable First Post using AJAX (or Last Post!) Details »»
Collapsable First Post using AJAX (or Last Post!)
Version: 1.2.1, by magnus magnus is offline
Developer Last Online: Feb 2012 Show Printable Version Email this Page

Category: Forum Display Enhancements - Version: 3.6.8 Rating:
Released: 04-17-2007 Last Update: 04-26-2007 Installs: 412
Uses Plugins Auto-Templates
Additional Files  
No support by the author.

[hr]-[/hr]
NOTICE: This is for vBulletin v3.6 ONLY. You can find a v3.5 compatible version here.
[hr]-[/hr]
*** Confirmed working on ALL vBulletin 3.6.x versions! ***

[hr]-[/hr]
Keywords: FORUMDISPLAY, search, results, collapse, AJAX, collapsable, first, last, unread, post

Description:
Allows you to expand/collapse the first, last or first unread post of a thread from FORUMDISPLAY and search results without the need to load the entire thread.

Details:
Upon perusing the wonderful deals over at slickdeals.net, I noticed this nifty feature which caught my eye. I found it quite useful as most people have a bad habit of not being very descriptive with their thread titles. This little trick made my browsing experience much more enjoyable, so naturally I had to borrow [read: shamelessly rip] the idea.

Please note that no additional queries are added, unless using the 'First Unread Post' option. Otherwise, the only queries performed are the same as those when a thread is normally viewed.

The magic behind this modification is performed by jQuery: The Write Less, Do More, JavaScript Library.

[hr]-[/hr]
Usage:
Simply click the expand icon [+] in front of the thread title to expand, and the collapse icon [-] to collapse. Rocket science, eh?

[hr]-[/hr]
Installation:
  1. Download and unzip the ajax_first_post.zip archive.
  2. Upload necessary files to their respective locations. (Attention custom style users! Be sure to upload the images to your custom image directory.)
  3. Import the product-ajax_first_post.xml via the Product Manager.
  4. Make any desired configuration changes via AdminCP > vBulletin Options > Collapsable First Post using AJAX
  5. ???
  6. Profit!

Notes:
All template modifications are made automatically. They attach to pretty common text locations, so modified styles shouldn't* be a problem.

However, for those who wish (or need) to perform the edits manually, you can find that information here.

[hr]-[/hr]
Comments:
As with all my hacks, this modification is provided free of charge. However, if you find this product useful and have money burning a hole in your pocket, feel free to make a small donation, I won't mind.. really.

Version History:
  • 1.0.0 - Initial release, here's to hoping...
  • 1.1.0
    • Fixed JavaScript errors when using search.
    • Resolved (known) cross browser compatibility issues.
  • 1.2.0
    • New AdminCP configuration options:
      • Ability to select first or last post to be displayed.
      • Ability to disable on a per forum basis.
      • Option to update thread views when expanded.
      • Option to disable automatic template editing with a single click.
    • Tweaked a couple plugins to prevent unnecessary checking.
    • Properly registers in Who's Online
  • 1.2.1
    • Will no longer show expand icon next to thread redirects.
    • Added ability to display first unread post.
    • Completely revamped the automatic template editing system. Should now be able to make template edits to even the most modified templates as well.
    • Fixed a couple non-breaking typos.
    • Included JavaScript in USERCP_SHELL to allow expand/collapse of subscribed threads.
    • Added a hover title to the expand icon to inform the user what they can expect when clicking it.

[hr]-[/hr]
Tips, Tricks and Modifications:

Currently Known Bugs:
  • None

* Please note that this modification was developed on a forum with a userbase of 1 (myself). I've tested it for basic functionality but I cannot guarantee functionality or behavior on your forum. So, please -- make backups before installing this product!

Show Your Support

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

Comments
  #362  
Old 07-06-2007, 05:25 AM
jasculs jasculs is offline
 
Join Date: Jun 2007
Posts: 217
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

The mod is great!

However it doesn't work with the "Hide Links From Guest" mod:

https://vborg.vbsupport.ru/showthread.php?t=123415

Guests are able to see the links in the ajax post. Anything I can do to make it work?
Reply With Quote
  #363  
Old 07-06-2007, 10:47 AM
magnus's Avatar
magnus magnus is offline
 
Join Date: Apr 2002
Location: Miami, FL
Posts: 1,107
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by jasculs View Post
The mod is great!

However it doesn't work with the "Hide Links From Guest" mod:

https://vborg.vbsupport.ru/showthread.php?t=123415

Guests are able to see the links in the ajax post. Anything I can do to make it work?
Right off the bat, I'd say you'd just need to run whatever regular expression match/replace he's probably using against the returned message value.

It's something I can look at when I get some time.
Reply With Quote
  #364  
Old 07-06-2007, 01:16 PM
jasculs jasculs is offline
 
Join Date: Jun 2007
Posts: 217
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Right off the bat, I'd say you'd just need to run whatever regular expression match/replace he's probably using against the returned message value.
I don't quite understand really. Anyway you can give an example. Would that require a plugin for me to add? I'm ok with finding things in the code, but I'm not sure what I should look for as far as a regular expression match/replace.
Reply With Quote
  #365  
Old 07-06-2007, 02:37 PM
magnus's Avatar
magnus magnus is offline
 
Join Date: Apr 2002
Location: Miami, FL
Posts: 1,107
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

In one of the plugins for the link hack, you'll most likely find a bit of code that does all the processing you're looking for. Something that uses a regexp to match for http then replaces it with the specified phrase.

Taking that bit of code, and placing it in vbpost_ajax.php where the message text is retrieved should yield the desired result.
Reply With Quote
  #366  
Old 07-06-2007, 02:53 PM
Invalid ID's Avatar
Invalid ID Invalid ID is offline
 
Join Date: Apr 2006
Location: Karachi. Pakistan
Posts: 411
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Amazing
Reply With Quote
  #367  
Old 07-06-2007, 03:52 PM
jasculs jasculs is offline
 
Join Date: Jun 2007
Posts: 217
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by magnus View Post
In one of the plugins for the link hack, you'll most likely find a bit of code that does all the processing you're looking for. Something that uses a regexp to match for http then replaces it with the specified phrase.

Taking that bit of code, and placing it in vbpost_ajax.php where the message text is retrieved should yield the desired result.
Would what your talking about be in this plugin somewhere? This is the plugin that hides the links in the posts. If it is in here can you point it out for me and maybe tell me where to put in the vbpost_ajax.php file? I would really appreciate it.

Code:
if (ereg("(showthread)", $GLOBALS[vbulletin]->scriptpath))
{
	if ($this->registry->options['hlfg_global'])
	{
		$groups = explode(',',$this->registry->options['hlfg_groups']);
		if ($this->registry->options['hlfg_posts'] AND !$this->registry->userinfo['userid'] OR $this->registry->options['hlfg_posts'] AND (is_member_of($this->registry->userinfo, $groups) OR $groups[0] == 0))
		{
			if (!$forum['forum_hlfg'])
			{
				$pattern = '/(<a.*?<*a>)/';
				$message_array = preg_split($pattern, $this->post['message'], 65535, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);

				if ($this->registry->options['hlfg_misc'] == '')
				{
					$this->registry->options['hlfg_misc'] = "\e"; 
				}

				$ugids = explode(',',$this->registry->options['hlfg_ugids']);
				if ($ugids[0] == '')
				{
					$ugids[0] = '0';
				}

				foreach($message_array as $message_key => $message_value)
				{
					if (!preg_match("/" . $this->registry->options['hlfg_misc'] . "/", $message_value) AND (!strstr($this->registry->options['hlfg_users'], $post[musername])) AND ($post['userid'] != $this->registry->userinfo['userid'] OR !$this->registry->options['hlfg_own']) AND (!is_member_of($post['usergroupid'], $ugids)))
					{
						$message_array[$message_key] = preg_replace("!<a[^>]*(http|www|mailto)(.*)</a>|\b[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}\b!siU", $this->registry->options['hlfg_info'], $message_value);
					}
				}
				$this->post['message'] = implode("", $message_array);
			}
		}
	}
}
Reply With Quote
  #368  
Old 07-06-2007, 05:14 PM
magnus's Avatar
magnus magnus is offline
 
Join Date: Apr 2002
Location: Miami, FL
Posts: 1,107
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Yep, that looks like it. I had hoped it would've been contained within a function, as that would've been ideal -- however, that will work.

Try this:

Open up vbpost_ajax.php, look for:
PHP Code:
//if ($_SERVER['REQUEST_METHOD'] == 'POST' AND 
Above it, paste the following:
PHP Code:
    if ($vbulletin->options['hlfg_global'])
    {
        
$groups explode(',',$vbulletin->options['hlfg_groups']);
        if (
$vbulletin->options['hlfg_posts'] AND !$vbulletin->options['userid'] OR $vbulletin->options['hlfg_posts'] AND (is_member_of($vbulletin->userinfo$groups) OR $groups[0] == 0))
        {
            if (!
$foruminfo['forum_hlfg'])
            {
                
$pattern '/(<a.*?<*a>)/';
                
$message_array preg_split($pattern$post['message'], 65535PREG_SPLIT_DELIM_CAPTURE PREG_SPLIT_NO_EMPTY);

                if (
$vbulletin->options['hlfg_misc'] == '')
                {
                    
$vbulletin->options['hlfg_misc'] = "\e"
                }

                
$ugids explode(',',$vbulletin->options['hlfg_ugids']);
                if (
$ugids[0] == '')
                {
                    
$ugids[0] = '0';
                }

                foreach(
$message_array as $message_key => $message_value)
                {
                    if (!
preg_match("/" $vbulletin->options['hlfg_misc'] . "/"$message_value) AND (!strstr($vbulletin->options['hlfg_users'], $post[musername])) AND ($post['userid'] != $vbulletin->userinfo['userid'] OR !$vbulletin->options['hlfg_own']) AND (!is_member_of($post['usergroupid'], $ugids)))
                    {
                        
$message_array[$message_key] = preg_replace("!<a[^>]*(http|www|mailto)(.*)</a>|\b[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,4}\b!siU"$vbulletin->options['hlfg_info'], $message_value);
                    }
                }
                
$post['message'] = implode(""$message_array);
            }
        }
    } 
Keep in mind I haven't had a chance to test this, so I'd suggest backing up your original vbpost_ajax.php. Let me know if that works, if not, when I get some free time I'll install the links hack on my test forum.
Reply With Quote
  #369  
Old 07-06-2007, 05:21 PM
jasculs jasculs is offline
 
Join Date: Jun 2007
Posts: 217
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

That worked except it blocked the links for everyone, not just guests. Anyway I can add a condition or something so it just blocks it for unregistered users only? Thanks for the help.
Reply With Quote
  #370  
Old 07-06-2007, 05:22 PM
alessai alessai is offline
 
Join Date: Feb 2006
Posts: 153
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

magnus.... could yo see my suggestion ? and is it possible?
Reply With Quote
  #371  
Old 07-06-2007, 07:04 PM
magnus's Avatar
magnus magnus is offline
 
Join Date: Apr 2002
Location: Miami, FL
Posts: 1,107
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by alessai View Post
magnus.... could yo see my suggestion ? and is it possible?
I need more information before I could even remotely begin to address your question. For example, a link to whichever modification you're trying to use in conjuction with this one.
Reply With Quote
 


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 07:52 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.07894 seconds
  • Memory Usage 2,343KB
  • 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
  • (1)bbcode_code
  • (2)bbcode_php
  • (4)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
  • (4)pagenav_pagelink
  • (2)pagenav_pagelinkrel
  • (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