vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3.5 Template Modifications (https://vborg.vbsupport.ru/forumdisplay.php?f=155)
-   -   vBShout On All Pages (https://vborg.vbsupport.ru/showthread.php?t=111532)

Dhitch 03-27-2006 10:00 PM

vBShout On All Pages
 
Didn't really know where to put this..
Requirements:
vBShout
Description:
This is pretty much an extension of the arcade shout mod. I was trying to figure out how to get the shoutbox on all pages, and so decided to use the ArcadeShout code to do it. This is a very simple hack.

Visit: http://dnlister.com to view a live version of it.
To install, first open the plugin manager, and find the vBShout [Template Alteration] hook. Open it for editing. Replace all of the code inside with:
Code:

function htmlProof($text){
  $text = stripslashes($_POST['message']);
  $text = htmlspecialchars($text);
  $text = preg_replace('?<(/?(b|i|font|font color=.*?))>?ie', 'html_entity_decode(\'$0\')', $text);
  return $text;
};//EoFn htmlProof

$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";
                        }
                }
        }
}

Then open up the Header template, and go to the very bottom, and add this:
Code:

<!-- ArcadeShout -->
$thread[title]
<form action="vbshout.php?{$session['sessionurl']}" method="post" name="vbshoutform" onsubmit="return postShout(this)">
<input type='hidden' name='do' value='shout' />
<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="80%" align="center">
<thead>
<tr>
<td class="thead"><a style="float:$stylevar[right]" href="#top" onclick="return toggle_collapse('forumhome_vbshout')"><img id="collapseimg_forumhome_vbshout" src="$stylevar[imgdir_button]/collapse_thead$vbcollapse[collapseimg_gamepanel].gif" alt="" border="0" /></a>
<center><a href='vbshout.php?{$session['sessionurl_q']}do=archive'>ShoutBoxX</a></center>
</td>
</tr>
</thead>
<tbody id="collapseobj_forumhome_vbshout" style="$vbcollapse[collapseobj_forumhome_vbshout]">
<tr>
<td class="alt1" align="left" width="100%">
<if condition="!$vboptions[shout_editor_position]">
<if condition="$bbuserinfo[userid] > 0">
<table width='100%' border='0' cellpadding='0' cellspacing='0'>
<tr>
<td width='100%'>
<input type="text" name="shout" style="width: 90%"id="input_box" class="bginput" />
</td>
<td style='white-space:nowrap' width='1%'>
<input type="submit" value="Shout" class="button" />
<if condition="$vboptions[shout_extra_options]">
<input type='button' class='button' value='Clear' onclick='sb_Clear()' />
</if>
</td>
</tr>
</table>
</if>
</if>
<div id="vbshout" style="overflow:auto;height:84px;width:100%;">
Don't Wait For Me To Load... Get Posting!
</div>
<if condition="$vboptions[shout_editor_position]">
<if condition="$bbuserinfo[userid] > 0">
<div style="height: 2px"></div>
<table width='100%' border='0' cellpadding='0' cellspacing='0'>
<tr>
<td width='100%'>
<input type="text" name="shout" style="width: 90%" class="bginput" />
</td>
<td style='white-space:nowrap' width='1%'>
<input type="submit" value="Shout" class="button" />
<if condition="$vboptions[shout_extra_options]">
<input type='button' class='button' value='Clear' onclick='sb_Clear()' />
</if>
</td>
</tr>
</table>
</if>
</if>
</td>
</tr>
</tbody>
</table>
</form>
<br />
<script type='text/javascript'>
<!--
postingShout = false
function requestShouts()
{
if (!postingShout)
{
ShoutRequest = new vB_AJAX_Handler(true)
ShoutRequest.onreadystatechange(showShouts)
ShoutRequest.send('vbshout.php', 'nocache=' + (5 * Math.random() * 1.33) )
}
}
function showShouts()
{
if (ShoutRequest)
{
if (ShoutRequest.handler.readyState == 4 && ShoutRequest.handler.status == 200 && ShoutRequest.handler.responseText)
{
Shouts = fetch_object('vbshout')
Shouts.innerHTML = '<table cellpadding="1" cellspacing="3" border="0" width="95%" align="left">' + ShoutRequest.handler.responseText + '</table>'
setTimeout('requestShouts()', 10000)
<if condition="$vboptions[shout_messages_order]">
document.getElementById('vbshout').scrollTop = 99999;
</if>
}
}
}
function sb_CollectHV(sbForm)
{
rString = ''
inputObjs = sbForm.getElementsByTagName('input')
for (i = 0; i < inputObjs.length; i++)
{
if (inputObjs[i].type == 'hidden' && inputObjs[i].value != '')
{
rString += '&' + inputObjs[i].name + '=' + PHP.urlencode(inputObjs[i].value)
}
}
return rString
}
function postShout(formObj)
{
doShout = new vB_AJAX_Handler(true)
doShout.onreadystatechange(postedShout)
if (postingShout)
{
alert('Posting in progress..')
return false
}
Shout = formObj.shout.value
if (Shout.replace(/ /g, '') == '')
{
alert('You must enter a shout!')
return false
}
doShout.send('vbshout.php', 'do=shout&shout=' + PHP.urlencode(Shout) + sb_CollectHV(document.forms['vbshoutform']))
sb_Clear()
postingShout = true
return false
}
function postedShout()
{
if (doShout.handler.readyState == 4 && doShout.handler.status == 200)
{
postingShout = false
requestShouts()
}
}
function sb_Input_SC(sProperty, setting)
{
eval('document.forms["vbshoutform"].shout.style.' + sProperty + ' = "' + setting + '"')
eval('document.forms["vbshoutform"].' + sProperty + '.value = "' + setting + '"')
}
function sb_Clear()
{
document.forms["vbshoutform"].shout.value = ''
return true;
}
requestShouts()
-->
</script>
<!-- /ArcadeShout -->

After that is done, you will have a shoutbox on all pages! It works fully, aswell. To change the name,
Find in the above code:
Code:

<center><a href='vbshout.php?{$session['sessionurl_q']}do=archive'>ShoutBoxX</a></center>
And change the text saying ShoutBoxX.
To change the size, find:
Code:

<div id="vbshout" style="overflow:auto;height:84px;width:100%;">
And change the hieght value.


All done! Everything should be working, and you will have a shoutbox on all pages!

Tyegurl 03-28-2006 12:46 AM

wish i had known this b4 i went and modified my forums with the ibpro arcade shout to show on all pages lol

nice thanks will install and give it a go!

forget it mine was much easier lol but nice job!

2 template edits could be more if you wanted and copy and paste....sorry.

Snake 03-28-2006 11:49 AM

Thanks for the hack!

bashy 03-28-2006 12:47 PM

Hi

Thanks for this but the BB code buttons and smily button has now dissapeared and advice please?

Dhitch 03-28-2006 06:58 PM

You can re-add them manually, I will at a later time update the code to include them, but just use HTML to add the formatting.
Code:

<b> = bold
</b> = end bold
<i> = Italic
</i> = end italic
<u> = underline
</u> = end underline
<font color="#000000"> = Colors in hex, replace the 000000 with the color you want.
<font size="any # here"> = Put a number
<img src="http://putthishttplinkheretogetanimage"> = Makes an image appear


wssm 03-29-2006 12:19 PM

what's up you all..

i opened the plugin manager, and i didn't find the vBShout [Template Alteration] hook. what can i do ?:banana:

sickboy6ths 03-31-2006 07:53 AM

Thanks! But how did you make it on your forum so, that in your who's online.. you can really see what a member is doing, instead of always and only see "Viewing the shoutbox" cause that is sooo annoying me :) ty!

Desihunk 04-02-2006 04:10 PM

I don't really like the way the SB comes out to be...

hotwheels 04-10-2006 08:12 PM

good stuff

furst 04-10-2006 09:38 PM

Any way to get it to be above the "What's Going On" box and put it in that position on all pages?


All times are GMT. The time now is 09:30 AM.

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.01143 seconds
  • Memory Usage 1,787KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (5)bbcode_code_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (1)pagenav_pagelink
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.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
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete