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

Reply
 
Thread Tools
[AJAX] vBShout v2.0 Details »»
[AJAX] vBShout v2.0
Version: 2.0, by Zero Tolerance Zero Tolerance is offline
Developer Last Online: Nov 2023 Show Printable Version Email this Page

Version: 3.5.0 RC2 Rating:
Released: 07-27-2005 Last Update: 04-22-2006 Installs: 1831
Uses Plugins Template Edits
Additional Files  
No support by the author.

[high]Staff Edit/Update[/high]

I have released an updated version of this hack (version 2.0.1), this version fixes some security issues with this hack. All version prior to this one allow users to insert html in their shouts, this can cause problems with them using html that breaks the site layout or malicious javascript. Download the new zip file (vBshout_fixed.zip) and upload the new vbshout.php file to patch/upgrade. If you want to manual instructions they are in the zip file, in the file bugfixes.txt

Second Staff update

I've uploaded a new version of this hack, dubbed '2.0.2'. This one should fix the html injection issues without breaking special characters. To upgrade, download the new zip file and upload the new vbshout.php file.

Please note that this only fixes the html injection issues. I do not use this hack on my own forum (although I've tested this on a client's board) so I will not be fixing the server load issues. I suggest you do not install this hack if you can't deal with the extra server load, as it's rather intensive.

- Brad

[high]End staff edit[/high]

Well, been a while since I've been to vb.org and released anything, thought i'd break the trend and whip up something quick while I have a little spare time.

A shoutbox as you would assume, a very simple one to start off with, but does include AJAX Technology, which pushes the shoutbox 1 step closer to live, messages from other people will appear with no refreshing, and so will yours that you post

A preview is below, i'd estimate a 50 second installation max

Primary Features:
- AJAX Technology (no refreshing)
- Administration control an display element options
- Fast format editor

Change Log::

- v1.1:
WOL (Who's Online) Correction

- v1.2:
New Posting Featurs (Bold/Italic/Underline/Colour/Font)
Admin Controls

- Change location/position of shoutbox
- Change number of shouts displayed
- Switch vbcode/similes on/off
- v1.3
Firefox javascript issue fixed
New Admin Controls

- Command Activation
- Swtch extra format options on/off
- Change position of editor (above/below messages)
New Commands

- /prune (Clears the shoutbox completely)
- /prune [username] (Clears all shouts posted by specified user)
- v1.4
Usergroup HTML Markup For Usernames
Clear Editor Button
Emoticons Pop Up Menu
Time display configurated to vBulletin settings
Username Links To Profile
New Admin Conrols

New vBShout Position (Directly Above Forums)
Banned Users
Banned Usergroups
Banned Permissions
Smilie Pop-Up Box Height
Smilie Pop-Up Box Width
New Commands

"/me" - Action message (all users are able to use this command)
/pruneshout [shout] - Deletes a single shout
- v1.5
Improved Smilies Display
XHTML 1.0 Transitional Valid (couple of errors fixed)
New Admin Options

Shoutbox Height
Smilies To Show
Shout Messages Order
Banned Permissions (fixed)
- v1.6
Bug Fixes:

- Unable to delete shouts that used /me command fixed
- Shouts being displayed from bottom-upwards only showed first 20 shouts
Automatically parses URL's

- v2.0
New Archive

- Displays shouts and pages
- Stats and top 10 shouters
- AJAX Edit/Delete (staff can edit/delete all shouts)
Enjoy,

- Zero Tolerance

Show Your Support

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

Comments
  #1762  
Old 05-13-2006, 02:06 PM
ohgenki ohgenki is offline
 
Join Date: Apr 2002
Location: Singapore
Posts: 76
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by DjTaz
i tried this, guess what happened? the shoutbox disappeared totally!
Reply With Quote
  #1763  
Old 05-13-2006, 04:25 PM
DjTaz DjTaz is offline
 
Join Date: Apr 2003
Posts: 251
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by ohgenki
i tried this, guess what happened? the shoutbox disappeared totally!
I hadnt tried that hack myself as its not something i want, but the code looks to be sound from what i can see - are you sure you did it exactly as it said ?

Step 1 is important
1) Change the hook location for 'vBShout [Template Alteration]' to: forumdisplay_complete


and in Step 2 basically you change the code to this :

Code:
 
$Used    = 0;
$UsedArr = array();
$smilies = $db->query_read("
		SELECT smilieid, smilietext, smiliepath, smilie.title,
		imagecategory.title AS category
		FROM " . TABLE_PREFIX . "smilie AS smilie
		LEFT JOIN " . TABLE_PREFIX . "imagecategory AS imagecategory USING(imagecategoryid)
		ORDER BY imagecategory.displayorder, smilie.displayorder
	");
$Smilie_Build  = '';
$Total_Smilies = $db->num_rows($smilies);

if ($Total_Smilies > 0)
{
	while ($emo = $db->fetch_array($smilies))
	{
		if ($vbulletin->options['shout_smilies_show'] > 0)
		{ 
			$Smilie_Cache[] = $emo;
		}
		else
		{
			$Smilie_Build .= '<a href="#" onclick="return sb_Smilie(\''.$emo['smilietext'].'\')"><img src="'.$emo['smiliepath'].'" alt="'.$emo['title'].'" border="0" /></a> ';
		}
	}

	if ($vbulletin->options['shout_smilies_show'] > $Total_Smilies)
	{
		$vbulletin->options['shout_smilies_show'] = $Total_Smilies;
	}

	if ($vbulletin->options['shout_smilies_show'] > 0)
	{
		while ($Used < $vbulletin->options['shout_smilies_show'])
		{
			$GetEmo = $Total_Smilies;
			$GetEmo = rand(0, $GetEmo);

			if (!in_array($GetEmo, $UsedArr) && $Smilie_Cache[$GetEmo])
			{
				$Used++;
				$GetEmo = $Smilie_Cache[$GetEmo];
				$Smilie_Build .= '<a href="#" onclick="return sb_Smilie(\''.$GetEmo['smilietext'].'\')"><img src="'.$GetEmo['smiliepath'].'" alt="'.$GetEmo['title'].'" border="0" /></a> ';
			}
		}
	}
}
else
{
	$Smilie_Build = 'No Emoticons Available';
}

$Options_DropDown         = array(); // Items included will be parsed to create drop down menus
$DropDowns                = array(); // Completed constructed drop down menus

$Options_DropDown['font_selector']    = array('Default', 'Arial', 'Arial Black', 'Arial Narrow', 'Book Antiqua', 'Century Gothic', 'Comic Sans MS', 'Courier New', 'Fixedsys', 'Franklin Gothic Medium', 'Garamond', 'Georgia', 'Impact', 'Lucida Console', 'Lucida Sans Unicode', 'Microsoft Sans Serif', 'Palatino Linotype', 'System', 'Tahoma', 'Times New Roman', 'Trebuchet MS', 'Verdana');
$Options_DropDown['color_selector']   = array();
$Options_DropDown['color_selector'][] = 'Default';

$hex   = array();
$hex[] = '0';
$hex[] = '3';
$hex[] = '6';
$hex[] = '9';
$hex[] = 'C';
$hex[] = 'F';

for ($a = 0; $a < 6; $a++)
{
	for ($b = 0; $b < 6; $b++)
	{
		for ($c = 0; $c < 6; $c++)
		{
			$Options_DropDown['color_selector'][] = '#' . $hex[$a].$hex[$a].$hex[$b].$hex[$b].$hex[$c].$hex[$c];
		}
	}
}

if (is_array($Options_DropDown))
{
	foreach ($Options_DropDown as $Menu => $Options)
	{
		$DropDowns[$Menu] = '';
		if (is_array($Options))
		{
			foreach ($Options as $Selection)
			{
				if (preg_match("#^\#([a-z0-9]+)$#i", $Selection))
				{
					$Extra = ' style="color:'.$Selection.';"';
				}
				else
				{
					$Extra = '';
				}

				if ($Selection == 'Default')
				{
					$Text = (($Menu == 'color_selector') ? 'Color' : 'Font Face') . ' [Default]';
				}
				else
				{
					$Text = $Selection;
				}

				$DropDowns[$Menu] .= '<option value="'.$Selection.'"'.$Extra.'>'.$Text.'</option>' . "\n";
			}
		}
	}
}

function isBanned($user)
{
	return (isBanned_Check($user['userid'], 'shout_banned_users') || isBanned_Check($user['usergroupid'], 'shout_banned_usergroups'));	
}

function isBanned_Check($bash, $against)
{
	global $vbulletin;
	return in_array($bash, iif($vbulletin->options[$against], explode(',', $vbulletin->options[$against]), array()));
}

if ($vbulletin->options['shout_banned_perms'] == 2 && isBanned($vbulletin->userinfo))
{
	$Shoutox = '';
}
else
{
	eval('$Shoutbox = "' . fetch_template('forumhome_vbshout') . '";');
}




if ($forumid ==1)
{
$vbulletin->templatecache['FORUMDISPLAY'] = str_replace('$navbar', '$navbar' . ' $Shoutbox', $vbulletin->templatecache['FORUMDISPLAY']);
}
I changed the forumid to 1 on my forums and it works well when i clicked on Main Forum - but it wont work if you dont change the hook location ... well done to lierduh for that edit !
Reply With Quote
  #1764  
Old 05-13-2006, 04:50 PM
utw-Mephisto utw-Mephisto is offline
 
Join Date: Jan 2005
Posts: 648
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by DjTaz
I hadnt tried that hack myself as its not something i want, but the code looks to be sound from what i can see - are you sure you did it exactly as it said ?

Step 1 is important
1) Change the hook location for 'vBShout [Template Alteration]' to: forumdisplay_complete


and in Step 2 basically you change the code to this :

Code:
 
$Used    = 0;
$UsedArr = array();
$smilies = $db->query_read("
		SELECT smilieid, smilietext, smiliepath, smilie.title,
		imagecategory.title AS category
		FROM " . TABLE_PREFIX . "smilie AS smilie
		LEFT JOIN " . TABLE_PREFIX . "imagecategory AS imagecategory USING(imagecategoryid)
		ORDER BY imagecategory.displayorder, smilie.displayorder
	");
$Smilie_Build  = '';
$Total_Smilies = $db->num_rows($smilies);

if ($Total_Smilies > 0)
{
	while ($emo = $db->fetch_array($smilies))
	{
		if ($vbulletin->options['shout_smilies_show'] > 0)
		{ 
			$Smilie_Cache[] = $emo;
		}
		else
		{
			$Smilie_Build .= '<a href="#" onclick="return sb_Smilie(\''.$emo['smilietext'].'\')"><img src="'.$emo['smiliepath'].'" alt="'.$emo['title'].'" border="0" /></a> ';
		}
	}

	if ($vbulletin->options['shout_smilies_show'] > $Total_Smilies)
	{
		$vbulletin->options['shout_smilies_show'] = $Total_Smilies;
	}

	if ($vbulletin->options['shout_smilies_show'] > 0)
	{
		while ($Used < $vbulletin->options['shout_smilies_show'])
		{
			$GetEmo = $Total_Smilies;
			$GetEmo = rand(0, $GetEmo);

			if (!in_array($GetEmo, $UsedArr) && $Smilie_Cache[$GetEmo])
			{
				$Used++;
				$GetEmo = $Smilie_Cache[$GetEmo];
				$Smilie_Build .= '<a href="#" onclick="return sb_Smilie(\''.$GetEmo['smilietext'].'\')"><img src="'.$GetEmo['smiliepath'].'" alt="'.$GetEmo['title'].'" border="0" /></a> ';
			}
		}
	}
}
else
{
	$Smilie_Build = 'No Emoticons Available';
}

$Options_DropDown         = array(); // Items included will be parsed to create drop down menus
$DropDowns                = array(); // Completed constructed drop down menus

$Options_DropDown['font_selector']    = array('Default', 'Arial', 'Arial Black', 'Arial Narrow', 'Book Antiqua', 'Century Gothic', 'Comic Sans MS', 'Courier New', 'Fixedsys', 'Franklin Gothic Medium', 'Garamond', 'Georgia', 'Impact', 'Lucida Console', 'Lucida Sans Unicode', 'Microsoft Sans Serif', 'Palatino Linotype', 'System', 'Tahoma', 'Times New Roman', 'Trebuchet MS', 'Verdana');
$Options_DropDown['color_selector']   = array();
$Options_DropDown['color_selector'][] = 'Default';

$hex   = array();
$hex[] = '0';
$hex[] = '3';
$hex[] = '6';
$hex[] = '9';
$hex[] = 'C';
$hex[] = 'F';

for ($a = 0; $a < 6; $a++)
{
	for ($b = 0; $b < 6; $b++)
	{
		for ($c = 0; $c < 6; $c++)
		{
			$Options_DropDown['color_selector'][] = '#' . $hex[$a].$hex[$a].$hex[$b].$hex[$b].$hex[$c].$hex[$c];
		}
	}
}

if (is_array($Options_DropDown))
{
	foreach ($Options_DropDown as $Menu => $Options)
	{
		$DropDowns[$Menu] = '';
		if (is_array($Options))
		{
			foreach ($Options as $Selection)
			{
				if (preg_match("#^\#([a-z0-9]+)$#i", $Selection))
				{
					$Extra = ' style="color:'.$Selection.';"';
				}
				else
				{
					$Extra = '';
				}

				if ($Selection == 'Default')
				{
					$Text = (($Menu == 'color_selector') ? 'Color' : 'Font Face') . ' [Default]';
				}
				else
				{
					$Text = $Selection;
				}

				$DropDowns[$Menu] .= '<option value="'.$Selection.'"'.$Extra.'>'.$Text.'</option>' . "\n";
			}
		}
	}
}

function isBanned($user)
{
	return (isBanned_Check($user['userid'], 'shout_banned_users') || isBanned_Check($user['usergroupid'], 'shout_banned_usergroups'));	
}

function isBanned_Check($bash, $against)
{
	global $vbulletin;
	return in_array($bash, iif($vbulletin->options[$against], explode(',', $vbulletin->options[$against]), array()));
}

if ($vbulletin->options['shout_banned_perms'] == 2 && isBanned($vbulletin->userinfo))
{
	$Shoutox = '';
}
else
{
	eval('$Shoutbox = "' . fetch_template('forumhome_vbshout') . '";');
}




if ($forumid ==1)
{
$vbulletin->templatecache['FORUMDISPLAY'] = str_replace('$navbar', '$navbar' . ' $Shoutbox', $vbulletin->templatecache['FORUMDISPLAY']);
}
I changed the forumid to 1 on my forums and it works well when i clicked on Main Forum - but it wont work if you dont change the hook location ... well done to lierduh for that edit !
It finally works for me THANKS !!!!!
Reply With Quote
  #1765  
Old 05-13-2006, 05:26 PM
Sir_Yaro's Avatar
Sir_Yaro Sir_Yaro is offline
 
Join Date: Jun 2004
Location: Ireland
Posts: 98
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Could you be so kind and fix word wrap code as well?
https://vborg.vbsupport.ru/showpost....postcount=1762
Reply With Quote
  #1766  
Old 05-13-2006, 05:45 PM
DjTaz DjTaz is offline
 
Join Date: Apr 2003
Posts: 251
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Sir_Yaro
Could you be so kind and fix word wrap code as well?
https://vborg.vbsupport.ru/showpost....postcount=1762
This isnt my hack and im only helping a few people out if i can - to have both the parsed version and the wordwrap would take too much of my time to figure out as i would have to go through all the code , and since i dont need this for myself , i wont be doing that.
Reply With Quote
  #1767  
Old 05-13-2006, 09:30 PM
danb00 danb00 is offline
 
Join Date: Jan 2003
Posts: 23
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

well the shoutbox wont display on my forums and i cant find perms in usergroup perms manager....
Reply With Quote
  #1768  
Old 05-14-2006, 10:45 AM
Spin Doctor's Avatar
Spin Doctor Spin Doctor is offline
 
Join Date: Feb 2005
Posts: 72
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Spin Doctor
hey guys i need to make it so my moderators cant edit the shoutbox, how do i do this???

Id like it so only my Smods and myself can, however it seems my mods have the same priverlages

still need help on this, i cant use my shoutbox untill someone helps me
Reply With Quote
  #1769  
Old 05-14-2006, 03:09 PM
S`ke S`ke is offline
 
Join Date: Feb 2006
Posts: 4
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I can not see icon? How to fix?
Reply With Quote
  #1770  
Old 05-14-2006, 06:46 PM
Iain M's Avatar
Iain M Iain M is offline
 
Join Date: Jul 2005
Location: Glasgow, Scotland
Posts: 256
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Spin Doctor
still need help on this, i cant use my shoutbox untill someone helps me
edit template forumhome_vbshout_archive_shout

find:
Code:
				<if condition="$bbuserinfo[userid] == $Shout[s_by] OR can_moderate()">
					<span style='float:right'>
						[<a href='#' onclick='return Shout.Edit({$Shout['sid']})'>Edit</a> | <a href='#' onclick='return Shout.Delete({$Shout['sid']})'>Delete</a>]
					</span>
				</if>
Replace with:
Code:
				<if condition="$bbuserinfo[usergroupid] == 5 OR $bbuserinfo[usergroupid] == 6">
					<span style='float:right'>
						[<a href='#' onclick='return Shout.Edit({$Shout['sid']})'>Edit</a> | <a href='#' onclick='return Shout.Delete({$Shout['sid']})'>Delete</a>]
					</span>
				</if>
thats for Super Mods and Admins to edit shouts
Reply With Quote
  #1771  
Old 05-14-2006, 08:31 PM
Sir_Yaro's Avatar
Sir_Yaro Sir_Yaro is offline
 
Join Date: Jun 2004
Location: Ireland
Posts: 98
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

thanks to that, this:
Code:
dlluuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuugieeeeeeeeeeeeeeee zaaaaaaaaaaaaaaaaaaaaapissssssssssssssssyyyyyyyyyyyy http://packages.ubuntu.com/cgi-bin/search_contents.pl?word=libborqt&searchmode=searchfiles&case=insensitive&version=breezy&arch=i386 dffffffffffffffffffffffffffffffff hhhhhhhhhhhhhhhhhhhhhhhhhhh
will look like that:
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 04:54 PM.


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.07231 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
  • (5)bbcode_code
  • (6)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
  • (6)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