nneonneo's Shoutbox

Started by nneonneo, December 26, 2006, 06:58:11 PM

Previous topic - Next topic

Flying Drupalist

#1060
Great idea, :P I failed at the first location. SSI problem possibly. Perhaps to do with flashchat integration? I know that messes with other functions as well.

I included subspost and ssi here.

nneonneo

How about trying every spot before the require?

Also, maybe the _banlist.php file is corrupt; clear it by resetting it to
<?php
$ban_ips_readpost
= array (
);
$ban_ips_post = array (
);
$ban_names_readpost = array (
);
$ban_names_post = array (
);
$maintenance = false;
?>
Check out the AJAX Shoutbox (my one and only mod to date :P)
Do you like SMF? Are you using ProBoards, InvisionFree, ActiveBoards or some other web-hosted forum? I can help you convert to SMF (without having to purchase a DB conversion)...contact me [nneonneo {at} gmail *dot* com], and see this topic
spammers here!

Flying Drupalist


nneonneo

Weird.

I visited http://www.miydai.com/SSI.php and I got the error
Fatal error: Out of memory (allocated 17039360) (tried to allocate 40961 bytes) in /home/gensun/public_html/Sources/Subs.php on line 2696

so, take a look at that line. It may be a mod which causes a general failure in the SSI script.
Check out the AJAX Shoutbox (my one and only mod to date :P)
Do you like SMF? Are you using ProBoards, InvisionFree, ActiveBoards or some other web-hosted forum? I can help you convert to SMF (without having to purchase a DB conversion)...contact me [nneonneo {at} gmail *dot* com], and see this topic
spammers here!

Flying Drupalist

Thanks, I checked the line and I don't think it's a mod:


// Ends execution.  Takes care of template loading and remembering the previous URL.
function obExit($header = null, $do_footer = null, $from_index = false)
{
   global $context, $settings, $modSettings, $txt;
   static $header_done = false, $footer_done = false;

   // Clear out the stat cache.
   trackStats();

   $do_header = $header === null ? !$header_done : $header;
   if ($do_footer === null)
      $do_footer = $do_header;

   // Has the template/header been done yet?
   if ($do_header)
   {
      // Start up the session URL fixer.
      ob_start('ob_sessrewrite');

      // Just in case we have anything bad already in there...
      if ((isset($_REQUEST['debug']) || isset($_REQUEST['xml']) || (WIRELESS && WIRELESS_PROTOCOL == 'wap')) && in_array($txt['lang_locale'], array('UTF-8', 'ISO-8859-1')))
         ob_start('validate_unicode__recursive');


This is the area around there, the actual ine is ob_start('ob_sessrewrite');

I attached subs.php.

nneonneo

As you have PHP5, can you do this for me?

Place debug_print_backtrace(); right before that crashing line. This will cause a trace to be printed, hopefully before the script dies.

This may cause strange data to appear on your forum, so ignore that stuff and remove it once you get a successful backtrace.
Check out the AJAX Shoutbox (my one and only mod to date :P)
Do you like SMF? Are you using ProBoards, InvisionFree, ActiveBoards or some other web-hosted forum? I can help you convert to SMF (without having to purchase a DB conversion)...contact me [nneonneo {at} gmail *dot* com], and see this topic
spammers here!

PabloW

I have a problem. I installed the mod and did all except putting the second part:
// YSHOUT HERE
echo '
<br /><b>Shout Box</b><br /><br />
<div id="yshout">',$txt['yshout_loading'],'<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></div>';
// YSHOUT END


I dont know where to put it in the index.template.php of my theme. I prefer the shoutbox to appear before the Info Center, i mean below all the forums. Is that possible?

This is my themes index.template.php

<?php
// Version: 1.1; index

/* This template is, perhaps, the most important template in the theme. It
contains the main template layer that displays the header and footer of
the forum, namely with main_above and main_below. It also contains the
menu sub template, which appropriately displays the menu; the init sub
template, which is there to set the theme up; (init can be missing.) and
the linktree sub template, which sorts out the link tree.

The init sub template should load any data and set any hardcoded options.

The main_above sub template is what is shown above the main content, and
should contain anything that should be shown up there.

The main_below sub template, conversely, is shown after the main content.
It should probably contain the copyright statement and some other things.

The linktree sub template should display the link tree, using the data
in the $context['linktree'] variable.

The menu sub template should display all the relevant buttons the user
wants and or needs.

For more information on the templating system, please see the site at:
http://www.simplemachines.org/
*/

// Initialize the template... mainly little settings.
function template_init()
{
global $context, $settings, $options, $txt;

/* Use images from default theme when using templates from the default theme?
if this is 'always', images from the default theme will be used.
if this is 'defaults', images from the default theme will only be used with default templates.
if this is 'never' or isn't set at all, images from the default theme will not be used. */
$settings['use_default_images'] = 'never';

/* What document type definition is being used? (for font size and other issues.)
'xhtml' for an XHTML 1.0 document type definition.
'html' for an HTML 4.01 document type definition. */
$settings['doctype'] = 'xhtml';

/* The version this template/theme is for.
This should probably be the version of SMF it was created for. */
$settings['theme_version'] = '1.1';

/* Set a setting that tells the theme that it can render the tabs. */
$settings['use_tabs'] = true;

/* Use plain buttons - as oppossed to text buttons? */
$settings['use_buttons'] = true;

/* Show sticky and lock status seperate from topic icons? Leave true, icons don't exist for false.*/
$settings['seperate_sticky_lock'] = true;
}

// The main sub template above the content.
function template_main_above()
{
global $context, $settings, $options, $scripturl, $txt, $modSettings;

// Show right to left and the character set for ease of translating.
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"'
, $context['right_to_left'] ? ' dir="rtl"' : '', '><head>
<meta http-equiv="Content-Type" content="text/html; charset='
, $context['character_set'], '" />
<meta name="description" content="'
, $context['page_title'], '" />', empty($context['robot_no_index']) ? '' : '
<meta name="robots" content="noindex" />'
, '
<meta name="keywords" content="PHP, MySQL, bulletin, board, free, open, source, smf, simple, machines, forum" />
<script language="JavaScript" type="text/javascript" src="'
, $settings['default_theme_url'], '/script.js?fin11"></script>
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
var smf_theme_url = "'
, $settings['theme_url'], '";
var smf_images_url = "'
, $settings['images_url'], '";
var smf_scripturl = "'
, $scripturl, '";
var smf_iso_case_folding = '
, $context['server']['iso_case_folding'] ? 'true' : 'false', ';
var smf_charset = "'
, $context['character_set'], '";
// ]]></script>
<title>'
, $context['page_title'], '</title>';

// The ?fin11 part of this link is just here to make sure browsers don't cache it wrongly.
echo '
<link rel="stylesheet" type="text/css" href="'
, $settings['theme_url'], '/style.css?fin11" />
<link rel="stylesheet" type="text/css" href="'
, $settings['default_theme_url'], '/print.css?fin11" media="print" />';

/* Internet Explorer 4/5 and Opera 6 just don't do font sizes properly. (they are big...)
Thus, in Internet Explorer 4, 5, and Opera 6 this will show fonts one size smaller than usual.
Note that this is affected by whether IE 6 is in standards compliance mode.. if not, it will also be big.
Standards compliance mode happens when you use xhtml... */
if ($context['browser']['needs_size_fix'])
echo '
<link rel="stylesheet" type="text/css" href="'
, $settings['default_theme_url'], '/fonts-compat.css" />';

// YSHOUT HERE
global $boardurl;
echo '
<script src="'
,$boardurl,'/yshout/js/prototype.js" type="text/javascript"></script>
<script src="'
,$boardurl,'/yshout/js/moo.ajax.js" type="text/javascript"></script>
<script src="'
,$boardurl,'/yshout/js/behaviour.js" type="text/javascript"></script>
<script src="'
,$boardurl,'/yshout/js/domFunction.js" type="text/javascript"></script>
<script type="text/javascript">

var myfunc = new domFunction(function()
{
loadChat();
}, { "yshout":"id"});
var board_url = "'
, $boardurl, '";

</script>
<script src="'
,$boardurl,'/yshout/js/yshout.js?Jul222007" type="text/javascript"></script>
<script type="text/javascript">var shoutFile = "home.txt";</script>
<style type="text/css">
#yshout {
font-size: 10px;
}
#yshout p {
margin: 0 0 0; /* Top Bottom Linespacing */
}
.shout-invalid {
background: #FFFDD1;
}
#yshout fieldset {
border: none;
}
#yshout em {
font-style: normal;
}
#yshout p {
line-height: 1;
margin-top: 0;
}
#yshout {
overflow: hidden;
}
#yshout .shout-timestamp {
font-weight: normal;
color: #000;
}
#yshout .adminlink {
font-size: 6pt;
color: #141414;
}
#forum-name, #shout-text, #shout-button {
font-size: 9px;
margin: 0;
padding: 0;
}
#yshout #forum-name {
color: #666666;
width: 70px;
margin-right: 5px;
}
#yshout #shout-text {
color: #000000;
width: 310px;
margin-right: 5px;
}
#yshout #shout-button {
width: 55px;
}
#shouts .owner a {
color: #F00;
}
#shouts .moderator a {
color: #00F;
}
</style>'
;
// YSHOUT END


// Show all the relative links, such as help, search, contents, and the like.
echo '
<link rel="help" href="'
, $scripturl, '?action=help" target="_blank" />
<link rel="search" href="'
. $scripturl . '?action=search" />
<link rel="contents" href="'
, $scripturl, '" />';

// If RSS feeds are enabled, advertise the presence of one.
if (!empty($modSettings['xmlnews_enable']))
echo '
<link rel="alternate" type="application/rss+xml" title="'
, $context['forum_name'], ' - RSS" href="', $scripturl, '?type=rss;action=.xml" />';

// If we're viewing a topic, these should be the previous and next topics, respectively.
if (!empty($context['current_topic']))
echo '
<link rel="prev" href="'
, $scripturl, '?topic=', $context['current_topic'], '.0;prev_next=prev" />
<link rel="next" href="'
, $scripturl, '?topic=', $context['current_topic'], '.0;prev_next=next" />';

// If we're in a board, or a topic for that matter, the index will be the board's index.
if (!empty($context['current_board']))
echo '
<link rel="index" href="'
. $scripturl . '?board=' . $context['current_board'] . '.0" />';

// We'll have to use the cookie to remember the header...
if ($context['user']['is_guest'])
$options['collapse_header'] = !empty($_COOKIE['upshrink']);

// Output any remaining HTML headers. (from mods, maybe?)
echo $context['html_headers'], '

<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
var current_header = '
, empty($options['collapse_header']) ? 'false' : 'true', ';

function shrinkHeader(mode)
{'
;

// Guests don't have theme options!!
if ($context['user']['is_guest'])
echo '
document.cookie = "upshrink=" + (mode ? 1 : 0);'
;
else
echo '
smf_setThemeOption("collapse_header", mode ? 1 : 0, null, "'
, $context['session_id'], '");';

echo '
document.getElementById("upshrink").src = smf_images_url + (mode ? "/upshrink2.gif" : "/upshrink.gif");

document.getElementById("upshrinkHeader").style.display = mode ? "none" : "";
document.getElementById("upshrinkHeader2").style.display = mode ? "none" : "";

current_header = mode;
}
// ]]></script>'
;

// the routine for the info center upshrink
echo '
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
var current_header_ic = '
, empty($options['collapse_header_ic']) ? 'false' : 'true', ';

function shrinkHeaderIC(mode)
{'
;

if ($context['user']['is_guest'])
echo '
document.cookie = "upshrinkIC=" + (mode ? 1 : 0);'
;
else
echo '
smf_setThemeOption("collapse_header_ic", mode ? 1 : 0, null, "'
, $context['session_id'], '");';

echo '
document.getElementById("upshrink_ic").src = smf_images_url + (mode ? "/expand.gif" : "/collapse.gif");

document.getElementById("upshrinkHeaderIC").style.display = mode ? "none" : "";

current_header_ic = mode;
}
// ]]></script>'
;

//This is for the pop menus
echo '
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA['
;

echo '
function getposOffset(overlay, offsettype){
var totaloffset=(offsettype=="left")? overlay.offsetLeft : overlay.offsetTop;
var parentEl=overlay.offsetParent;
while (parentEl!=null){
totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
parentEl=parentEl.offsetParent;
}
return totaloffset;
}

function overlay(curobj, subobjstr, opt_position){
if (document.getElementById){
var subobj=document.getElementById(subobjstr)
subobj.style.display=(subobj.style.display!="block")? "block" : "none"
var xpos=getposOffset(curobj, "left")+((typeof opt_position!="undefined" && opt_position.indexOf("right")!=-1)? -(subobj.offsetWidth-curobj.offsetWidth) : 0)
var ypos=getposOffset(curobj, "top")+((typeof opt_position!="undefined" && opt_position.indexOf("bottom")!=-1)? curobj.offsetHeight : 0)
subobj.style.left=xpos+"px"
subobj.style.top=ypos+"px"
return false
}
else
return true
}

function overlayclose(subobj){
document.getElementById(subobj).style.display="none"
}

// ]]></script>'
;

echo '
</head>
<body>'
;
//Change width to 100% if you want it fluid.
echo '
<div align="center">
<table id="widthControl" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="28" height="28"><img src="'
, $settings['images_url'], '/bc_topLeft.gif" width="28" height="28" alt="" /></td>
<td width="100%" height="28" background="'
, $settings['images_url'], '/bc_topBG.gif"><img src="', $settings['images_url'], '/spacer.gif" width="1" height="28" alt="" /></td>
<td width="29" height="28"><img src="'
, $settings['images_url'], '/bc_topRight.gif" width="29" height="28" alt="" /></td>
</tr>
<tr>
<td width="28" background="'
, $settings['images_url'], '/bc_leftBG.gif"><img src="', $settings['images_url'], '/spacer.gif" width="28" height="1" alt="" /></td>
<td width="100%" valign="top" style="background-color:#ffffff;">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="100%" height="67" align="left" valign="top" style="padding:0;">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td align="left" valign="top" height="67" width="527"><img src="'
, $settings['images_url'], '/logo.jpg" width="527" height="67" alt="MUSICONICA" title="MUSICONICA" /></td>
<td align="right" valign="top" height="67" width="100%"><img src="'
, $settings['images_url'], '/lcd.jpg" alt="" /></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2" width="100%" align="left" valign="top" style="padding:0;">'
;

echo '
<div class="tborder" '
, $context['browser']['needs_size_fix'] && !$context['browser']['is_ie6'] ? ' style="width: 100%;"' : '', '>';


// display user name
echo '
<table width="100%" cellspacing="1" cellpadding="5" class="bordercolor" border="0" >
<tr>'
;

echo '
<td class="windowbg2" width="100%" valign="middle" align="left">
'
, theme_linktree2(), '
</td>'
;

echo '
<td width="250" valign="top" class="windowbg"><span class="middletext" style="display:block;width:250px;">'
;

if($context['user']['is_logged'])
{
echo '
<strong>Welcome, '
, $context['user']['name'] , '.</strong><br />';
}

// Go to PM center... [pm]
if ($context['user']['is_logged'] && $context['allow_pm'])
{
echo ((isset($current_action) && $curent_action == 'pm') || $context['browser']['is_ie4']) ? '' : '' , '
<a href="'
, $scripturl, '?action=pm">Private Messages</a>: ', $context['user']['unread_messages'], ' Unread, ', $context['user']['messages'], ' Total.<br />';
}

// Now, onto our second set of info, are they logged in again?
if ($context['user']['is_logged'])
{
// Is the forum in maintenance mode?
if ($context['in_maintenance'] && $context['user']['is_admin'])
echo '
<b>'
, $txt[616], '</b><br />';

// Are there any members waiting for approval?
if (!empty($context['unapproved_members']))
echo '
'
, $context['unapproved_members'] == 1 ? $txt['approve_thereis'] : $txt['approve_thereare'], ' <a href="', $scripturl, '?action=viewmembers;sa=browse;type=approve">', $context['unapproved_members'] == 1 ? $txt['approve_member'] : $context['unapproved_members'] . ' ' . $txt['approve_members'], '</a> ', $txt['approve_members_waiting'], '<br />';

// Show the total time logged in?
if (!empty($context['user']['total_time_logged_in']))
{
echo '
'
, $txt['totalTimeLogged1'], '<br />';

// If days is just zero, don't bother to show it.
if ($context['user']['total_time_logged_in']['days'] > 0)
echo $context['user']['total_time_logged_in']['days'] . $txt['totalTimeLogged2'];

// Same with hours - only show it if it's above zero.
if ($context['user']['total_time_logged_in']['hours'] > 0)
echo $context['user']['total_time_logged_in']['hours'] . $txt['totalTimeLogged3'];

// But, let's always show minutes - Time wasted here: 0 minutes ;).
echo $context['user']['total_time_logged_in']['minutes'], $txt['totalTimeLogged4'], '<br />';
}
}
// Otherwise they're a guest - this time ask them to either register or login - lazy bums...
else
{
echo ' </span>
<script language="JavaScript" type="text/javascript" src="'
, $settings['default_theme_url'], '/sha1.js"></script>

<form action="'
, $scripturl, '?action=login2" method="post" accept-charset="', $context['character_set'], '" class="middletext" style="margin: 3px 1ex 1px 0;"', empty($context['disable_login_hashing']) ? ' onsubmit="hashLoginPassword(this, \'' . $context['session_id'] . '\');"' : '', '>
<table border="0" cellpadding="1" cellspacing="0">
<tr>
<td>Username:</td>
<td><input type="text" name="user" size="10" /></td>
<td><select name="cookielength">
<option value="60">'
, $txt['smf53'], '</option>
<option value="1440">'
, $txt['smf47'], '</option>
<option value="10080">'
, $txt['smf48'], '</option>
<option value="43200">'
, $txt['smf49'], '</option>
<option value="-1" selected="selected">'
, $txt['smf50'], '</option>
</select></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="passwrd" size="10" /></td>
<td><input type="submit" value="'
, $txt[34], '" /></td>
</tr>
</table>
<input type="hidden" name="hash_passwrd" value="" />
</form>'
;
}

echo '
</span>
</td>
</tr>
</table>'
;

echo '
<table id="upshrinkHeader2"'
, empty($options['collapse_header']) ? '' : ' style=""', ' width="100%" cellpadding="4" cellspacing="0" border="0">
<tr>'
;


echo '
<td width="90%" class="column-title">
'
, template_menu(), '
</td>'
;

echo '
</tr>
</table>
</div>'
;


// The main content should go here.
echo '
<div id="bodyarea">'
;

// If you want to put some ads or something on your pages, add them in this.
echo '
<div id="blank-box"></div>'
;
}

function
template_main_below()
{
global $context, $settings, $options, $scripturl, $txt;

echo '
</div>'
;

// Show the "Powered by" and "Valid" logos, as well as the copyright. Remember, the copyright must be somewhere!
echo '

<div id="footerarea" style="text-align: center; padding-bottom: 1ex;'
, $context['browser']['needs_size_fix'] && !$context['browser']['is_ie6'] ? ' width: 100%;' : '', '">
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA[
function smfFooterHighlight(element, value)
{
element.src = smf_images_url + "/" + (value ? "h_" : "") + element.id + ".gif";
}
// ]]></script>
<table cellspacing="0" cellpadding="3" border="0" align="center" width="100%">
<tr>
<td width="28%" valign="middle" align="left">
<a href="http://www.webtechnica.com/" target="_blank"><img src="'
, $settings['images_url'], '/88x31_banner_white.gif" width="88" height="31" alt="Theme by webtechnica.com" title="Theme by webtechnica.com" /></a>.
</td>
<td valign="middle" align="center" style="white-space: nowrap;" class="copyright-links">
'
, theme_copyright(), '
</td>
<td width="28%" valign="middle" align="right" class="copyright-links">
<a href="http://www.mysql.com/" target="_blank" style="font-size:10px;">MySQL</a>&nbsp;|&nbsp;<a href="http://www.php.net/" target="_blank" style="font-size:10px;">PHP</a>&nbsp;|&nbsp;<a href="http://validator.w3.org/check/referer" target="_blank" style="font-size:10px;">XHTML</a>&nbsp;|&nbsp;<a href="http://jigsaw.w3.org/css-validator/check/referer" target="_blank" style="font-size:10px;">CSS</a>
</td>
</tr>
</table>'
;

// Show the load time?
if ($context['show_load_time'])
echo '
<span class="smalltext">'
, $txt['smf301'], $context['load_time'], $txt['smf302'], $context['load_queries'], $txt['smf302b'], '</span>';

// This is an interesting bug in Internet Explorer AND Safari. Rather annoying, it makes overflows just not tall enough.
if (($context['browser']['is_ie'] && !$context['browser']['is_ie4']) || $context['browser']['is_mac_ie'] || $context['browser']['is_safari'] || $context['browser']['is_firefox'])
{
// The purpose of this code is to fix the height of overflow: auto div blocks, because IE can't figure it out for itself.
echo '
<script language="JavaScript" type="text/javascript"><!-- // --><![CDATA['
;

// Unfortunately, Safari does not have a "getComputedStyle" implementation yet, so we have to just do it to code...
if ($context['browser']['is_safari'])
echo '
window.addEventListener("load", smf_codeFix, false);

function smf_codeFix()
{
var codeFix = document.getElementsByTagName ? document.getElementsByTagName("div") : document.all.tags("div");

for (var i = 0; i < codeFix.length; i++)
{
if ((codeFix[i].className == "code" || codeFix[i].className == "post" || codeFix[i].className == "signature") && codeFix[i].offsetHeight < 20)
codeFix[i].style.height = (codeFix[i].offsetHeight + 20) + "px";
}
}'
;
elseif ($context['browser']['is_firefox'])
echo '
window.addEventListener("load", smf_codeFix, false);
function smf_codeFix()
{
var codeFix = document.getElementsByTagName ? document.getElementsByTagName("div") : document.all.tags("div");

for (var i = 0; i < codeFix.length; i++)
{
if (codeFix[i].className == "code" && (codeFix[i].scrollWidth > codeFix[i].clientWidth || codeFix[i].clientWidth == 0))
codeFix[i].style.overflow = "scroll";
}
}'
;
else
echo '
var window_oldOnload = window.onload;

window.onload = smf_codeFix;

function smf_codeFix()
{
var codeFix = document.getElementsByTagName ? document.getElementsByTagName("div") : document.all.tags("div");

for (var i = codeFix.length - 1; i > 0; i--)
{
if (codeFix[i].currentStyle.overflow == "auto" && (codeFix[i].currentStyle.height == "" || codeFix[i].currentStyle.height == "auto") && (codeFix[i].scrollWidth > codeFix[i].clientWidth || codeFix[i].clientWidth == 0) && (codeFix[i].offsetHeight != 0 || codeFix[i].className == "code"))
codeFix[i].style.height = (codeFix[i].offsetHeight + 36) + "px";
}

if (window_oldOnload)
{
window_oldOnload();
window_oldOnload = null;
}
}'
;

echo '
// ]]></script>'
;
}

echo '
</div></td></tr></table>
</td>
<td width="29" background="'
, $settings['images_url'], '/bc_rightBG.gif"><img src="', $settings['images_url'], '/spacer.gif" width="29" height="1" alt="" /></td>
</tr>
<tr>
<td width="28" height="29"><img src="'
, $settings['images_url'], '/bc_bottomLeft.gif" width="28" height="29" alt="" /></td>
<td width="100%" height="29" background="'
, $settings['images_url'], '/bc_bottomBG.gif"><img src="', $settings['images_url'], '/spacer.gif" width="1" height="29" alt="" /></td>
<td width="29" height="29"><img src="'
, $settings['images_url'], '/bc_bottomRight.gif" width="29" height="29" alt="" /></td>
</tr>
</table>'
;

// The following will be used to let the user know that some AJAX process is running
echo '
<div id="ajax_in_progress" style="display: none;'
, $context['browser']['is_ie'] && !$context['browser']['is_ie7'] ? 'position: absolute;' : '', '">', $txt['ajax_in_progress'], '</div>
</div>
</body></html>'
;
}

// If the user is logged in, display stuff like their  new messages, etc...
function theme_newestlink()
{
global $context, $settings, $options, $scripturl, $txt;

if ($context['user']['is_logged'])
{
echo '
<a href="'
, $scripturl, '?action=unread">', $txt['unread_since_visit'], '</a>&nbsp;|&nbsp;<a href="', $scripturl, '?action=unreadreplies">', $txt['show_unread_replies'], '</a>';

}
// Otherwise they're a guest - send them a lovely greating...
else
echo $txt['welcome_guest'];
}

// Show a linktree. This is that thing that shows "My Community | General Category | General Discussion"..
function theme_linktree()
{
global $context, $settings, $options;

echo '<div class="nav-tree" style="font-size: smaller; margin-bottom: 2ex; margin-top: 2ex;text-align:center;">';

// Each tree item has a URL and name. Some may have extra_before and extra_after.
foreach ($context['linktree'] as $link_num => $tree)
{
// Show something before the link?
if (isset($tree['extra_before']))
echo $tree['extra_before'];

// Show the link, including a URL if it should have one.
echo '<b>', $settings['linktree_link'] && isset($tree['url']) ? '<a href="' . $tree['url'] . '" class="nav-tree">' . $tree['name'] . '</a>' : $tree['name'], '</b>';

// Show something after the link...?
if (isset($tree['extra_after']))
echo $tree['extra_after'];

// Don't show a separator for the last one.
if ($link_num != count($context['linktree']) - 1)
echo '&nbsp;&raquo;&nbsp;';
}

echo '</div>';
}

//Show a linktree (this one is a vB look alike, vB clone is below).
function theme_linktree2()
{
global $context, $settings, $options;

// Folder style or inline?  Inline has a smaller font.
echo '<span class="nav-tree" style="font-size: smaller;">';

// Each tree item has a URL and name.  Some may have extra_before and extra_after.
foreach ($context['linktree'] as $link_num => $tree)
{
// Show pretty folder
if ($link_num == 0)
{
echo '<img src="' . $settings['images_url'] . '/icons/folder_open.gif" alt="+" border="0" />&nbsp; ';
}
else if ($link_num == 1)
{
echo '<img src="' . $settings['images_url'] . '/icons/linktree_side.gif" alt="|-" border="0" /><img src="' . $settings['images_url'] . '/icons/folder_open.gif" alt="+" border="0" />&nbsp; ';
}
else
{
echo '&raquo; ';
}

// Show the link, including a URL if it should have one.
echo '<b>', $settings['linktree_link'] && isset($tree['url']) ? '<a href="' . $tree['url'] . '" class="nav-tree">' . $tree['name'] . '</a>' : $tree['name'], '</b>';

if ($link_num == 0)
{
echo '<br />';
}
}

echo '</span>';
}

// Show a linktree (vB Clone).  This is that thing that shows "My Community | General Category | General Discussion"..
function theme_linktree3()
{
       global
$context, $settings, $options;

       
// Folder style or inline?  Inline has a smaller font.
       
echo '<span class="nav-tree">';

echo '<img src="' . $settings['images_url'] . '/icons/folder_open.gif" alt="+" border="0" />&nbsp;';

       
// Each tree item has a URL and name.  Some may have extra_before and extra_after.
       
foreach ($context['linktree'] as $link_num => $tree)
       {
               
// Show something before the link?
               
if (isset($tree['extra_before']))
                       echo
$tree['extra_before'];

               if ((
$link_num == count($context['linktree']) - 1) && count($context['linktree'])>1)
                       echo
'<br />
<img src="'
. $settings['images_url'] . '/icons/linktree_side.gif" alt="|-" border="0" /><img src="' . $settings['images_url'] . '/icons/folder_open.gif" alt="+" border="0" />&nbsp;';

               
// Show the link, including a URL if it should have one.
               
echo '<b>', $settings['linktree_link'] && isset($tree['url']) ? '<a href="' . $tree['url'] . '" class="nav-tree">' . $tree['name'] . '</a>' : $tree['name'], '</b>';

               
// Show something after the link...?
               
if (isset($tree['extra_after']))
                       echo
$tree['extra_after'];

               
// Don't show a separator for the last one.
               
if ($link_num < count($context['linktree']) - 2)
                       echo
'&nbsp;&raquo;&nbsp;';

       }

       echo
'</span>';
}

// Show the menu up top. Something like [home] [help] [profile] [logout]...
function template_menu()
{
global $context, $settings, $options, $scripturl, $txt;

// Work out where we currently are.
$current_action = 'home';
if (in_array($context['current_action'], array('admin', 'ban', 'boardrecount', 'cleanperms', 'detailedversion', 'dumpdb', 'featuresettings', 'featuresettings2', 'findmember', 'maintain', 'manageattachments', 'manageboards', 'managecalendar', 'managesearch', 'membergroups', 'modlog', 'news', 'optimizetables', 'packageget', 'packages', 'permissions', 'pgdownload', 'postsettings', 'regcenter', 'repairboards', 'reports', 'serversettings', 'serversettings2', 'smileys', 'viewErrorLog', 'viewmembers')))
$current_action = 'admin';
if (in_array($context['current_action'], array('search', 'admin', 'calendar', 'profile', 'mlist', 'register', 'login', 'help', 'pm')))
$current_action = $context['current_action'];
if ($context['current_action'] == 'search2')
$current_action = 'search';
if ($context['current_action'] == 'theme')
$current_action = isset($_REQUEST['sa']) && $_REQUEST['sa'] == 'pick' ? 'profile' : 'admin';

// Are we using right-to-left orientation?
if ($context['right_to_left'])
{
$first = 'last';
$last = 'first';
}
else
{
$first = 'first';
$last = 'last';
}

// Show the start of the tab section.
echo '
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>'
;

// Show the [home] button.
echo '
<td class="main-navigation"><a href="'
, $scripturl, '">' , $txt[103] , '</a></td>';

// Show the [help] button.
echo '
<td class="main-navigation"><a href="'
, $scripturl, '?action=help">' , $txt[119] , '</a></td>';

// How about the [search] button?
if ($context['allow_search'])
echo '
<td class="main-navigation"><a href="'
, $scripturl, '?action=search" onClick="return overlay(this, \'subcontent\',\'bottom\')">' , $txt[182] , '<img src="', $settings['images_url'], '/search_down.gif" width="10" height="10" /></a>
<!--Do not remove outer most DIV tag with id="subcontent"-->
<DIV id="subcontent" style="position:absolute; border: 2px solid #3d3d3d; background-color: white; width: 210px; padding: 2px; display:none">
<table width="100%" border="0" cellpadding="0" cellspacing="1">
<tr>
<td class="catbg" height="20" align="left" valign="middle" style="color:#ffffff;">Quick Search</td>
</tr>
<tr>
<td height="26" align="left" valign="middle" class="windowbg">
<form action="'
, $scripturl, '?action=search2" method="post" accept-charset="', $context['character_set'], '" style="margin: 0;">
<input type="text" name="search" value="" style="width: 150px;" />&nbsp;
<input type="submit" name="submit" value="GO" />
<input type="hidden" name="advanced" value="0" />'
;

// Search within current topic?
if (!empty($context['current_topic']['allow_search']))
echo '
<input type="hidden" name="topic" value="'
, $context['current_topic'], '" />';

// If we're on a certain board, limit it to this board ;).
elseif (!empty($context['current_board']['allow_search']))
echo '
<input type="hidden" name="brd['
, $context['current_board'], ']" value="', $context['current_board'], '" />';

if ($context['allow_search'])
echo '
</form></td>
</tr>
<tr>
<td height="20" align="center" valign="middle" class="windowbg"><a href="'
, $scripturl, '?action=search;advanced">Advanced Search</a></td>
</tr>
</table>
<div align="right" style="font-size:10px;"><a href="#" onClick="overlayclose(\'subcontent\'); return false">[Close]</a></div>

</DIV>
</td>'
;

// Is the user allowed to administrate at all? ([admin])
if ($context['allow_admin'])
echo '
<td class="main-navigation"><a href="'
, $scripturl, '?action=admin">' , $txt[2] , '</a></td>';

// The [calendar]!
if ($context['allow_calendar'])
echo '
<td class="main-navigation"><a href="'
, $scripturl, '?action=calendar">' , $txt['calendar24'] , '</a></td>';

// the [member] list button
if ($context['allow_memberlist'])
echo '
<td class="main-navigation"><a href="'
, $scripturl, '?action=mlist">' , $txt[331] , '</a></td>';


// If the user is a guest, show [login] button.
if ($context['user']['is_guest'])
echo '
<td class="main-navigation"><a href="'
, $scripturl, '?action=login">' , $txt[34] , '</a></td>';


// If the user is a guest, also show [register] button.
if ($context['user']['is_guest'])
echo '
<td class="main-navigation"><a href="'
, $scripturl, '?action=register">' , $txt[97] , '</a></td>';


// Otherwise, they might want to [logout]...
if ($context['user']['is_logged'])
echo '
<td class="main-navigation"><a href="'
, $scripturl, '?action=logout;sesc=', $context['session_id'], '">' , $txt[108] , '</a></td>';

// How about the [quick links] button?
if ($context['user']['is_logged'])
echo '
<td class="main-navigation"><a href="'
, $scripturl, '#quicklinks" onClick="return overlay(this, \'quicklinks\',\'bottomright\')">Quick Links<img src="', $settings['images_url'], '/search_down.gif" width="10" height="10" /></a>
<!--Do not remove outer most DIV tag with id="quicklinks"-->
<DIV id="quicklinks" style="position:absolute; border: 2px solid #3d3d3d; background-color: white; width: 150px; padding: 2px; display:none">
<table width="100%" border="0" cellpadding="0" cellspacing="1">
<tr>
<td class="catbg" height="20" align="left" valign="middle" style="color:#ffffff;">Quick Links</td>
</tr>
<tr>
<td height="20" align="left" valign="middle" class="windowbg"><a href="'
, $scripturl, '?action=unread">New Posts</a></td>
</tr>
<tr>
<td height="20" align="left" valign="middle" class="windowbg"><a href="'
, $scripturl, '?action=unreadreplies">New Replies</a></td>
</tr>
<tr>
<td class="catbg" height="20" align="left" valign="middle" style="color:#ffffff;">User Settings</td>
</tr>
<tr>
<td height="20" align="left" valign="middle" class="windowbg"><a href="'
, $scripturl, '?action=profile">View Profile</a></td>
</tr>
<tr>
<td height="20" align="left" valign="middle" class="windowbg"><a href="'
, $scripturl, '?action=profile;u=', $context['user']['id'], ';sa=account">Account Settings</a></td>
</tr>
<tr>
<td height="20" align="left" valign="middle" class="windowbg"><a href="'
, $scripturl, '?action=profile;u=', $context['user']['id'], ';sa=forumProfile">Edit Profile</a></td>
</tr>
</table>
<div align="right" style="font-size:10px;"><a href="#" onClick="overlayclose(\'quicklinks\'); return false">[Close]</a></div>

</DIV>
</td>'
;

// The end of tab section.
echo '
</tr>
</table>'
;

}

// Generate a strip of buttons.
function template_button_strip($button_strip, $direction = 'top', $force_reset = false, $custom_td = '')
{
global $settings, $buttons, $context, $txt, $scripturl;

// Create the buttons...
foreach ($button_strip as $key => $value)
{
if (isset($value['test']) && empty($context[$value['test']]))
{
unset($button_strip[$key]);
continue;
}
elseif (!isset($buttons[$key]) || $force_reset)
$buttons[$key] = '<a href="' . $value['url'] . '" ' .( isset($value['custom']) ? $value['custom'] : '') . '>' . $txt[$value['text']] . '</a>';

$button_strip[$key] = $buttons[$key];
}

if (empty($button_strip))
return '<td>&nbsp;</td>';

echo '
<td class="'
, $direction == 'top' ? 'main' : 'mirror', 'tab_' , $context['right_to_left'] ? 'last' : 'first' , '">&nbsp;</td>
<td height="40" valign="middle" class="'
, $direction == 'top' ? 'main' : 'mirror', 'tab_back">', implode(' &nbsp;&nbsp; ', $button_strip) , '</td>
<td class="'
, $direction == 'top' ? 'main' : 'mirror', 'tab_' , $context['right_to_left'] ? 'first' : 'last' , '">&nbsp;</td>';
}

?>


Please give me a hand with this  :D

mourya

can u make a new release with the corrects and quick fix u sujjested...caz lot of people doesnt know how to do them...so it will be helpfull for them...and  u r shoutbox will definetly become world famous...its just a new release  away...

nneonneo

@mourya: Which fixes are you talking about? Many are specific to the various edits and modifications made to the shoutbox; I don't think many (or any!) are for truly general use...

@PabloW: Placing it in index.template.php will cause it to appear on ALL pages. Since you are asking to put it under the forums list, I would try placing it into BoardIndex.template.php instead (it will show only on the board index).
Check out the AJAX Shoutbox (my one and only mod to date :P)
Do you like SMF? Are you using ProBoards, InvisionFree, ActiveBoards or some other web-hosted forum? I can help you convert to SMF (without having to purchase a DB conversion)...contact me [nneonneo {at} gmail *dot* com], and see this topic
spammers here!

PabloW

#1069
Quote from: nneonneo on September 13, 2007, 09:00:28 AM
@mourya: Which fixes are you talking about? Many are specific to the various edits and modifications made to the shoutbox; I don't think many (or any!) are for truly general use...

@PabloW: Placing it in index.template.php will cause it to appear on ALL pages. Since you are asking to put it under the forums list, I would try placing it into BoardIndex.template.php instead (it will show only on the board index).

Thank you, it worked =D
But now I have another problem. The shoutbox never stops "loading" it always keeps on
Shout Box

...loading shoutbox...

do you what can it be?
THanks for answering!

PabloW

PD: this is my forum www.pawforum.com.ar [nofollow]

PabloW

#1070
Solved! :D Ive just CHMOD the yshout.php to 755 and Walá :P

now i have to adapt it for my forum language, beacause the shout button its in blank, it doesnt show the text that says "shout"

MegaTinkerCoder

Anyone get this to work with TinyPortal and Scribbles theme? I think they have to be loading some other ajax or something, because it works only once it seems... any ideas?
In the middle of difficulty lies opportunity.

Albert Einstein

nneonneo

@PabloW: Good to see you have it working; see the main mod page for the text which needs to be put in Modifications.<language>.php, and feel free to translate it :)

@MegaTinkerCoder: What do you mean, "only once"?
Check out the AJAX Shoutbox (my one and only mod to date :P)
Do you like SMF? Are you using ProBoards, InvisionFree, ActiveBoards or some other web-hosted forum? I can help you convert to SMF (without having to purchase a DB conversion)...contact me [nneonneo {at} gmail *dot* com], and see this topic
spammers here!

MegaTinkerCoder

I am sorry, what I should have said is.

When you are a guest it works fine, when you login it no longer works, but instead the div where the text would display disappears, the hard code text does show. Perhaps I will implement it again and send you a link to show you what I mean...
In the middle of difficulty lies opportunity.

Albert Einstein

rosoner

I installed shout box and everything was fine, but few days latter shout box didn't load. It says ...loading shout box...
and then everything disappear!

There is only command line now!
History Commands ExtendedHistory ShowAdminLinks ReturnToShoutbox
Ko je ukrao moj sir?

PabloW

Quote from: nneonneo on September 13, 2007, 03:10:08 PM
@PabloW: Good to see you have it working; see the main mod page for the text which needs to be put in Modifications.<language>.php, and feel free to translate it :)

@MegaTinkerCoder: What do you mean, "only once"?

I have some questions now. Sometimes when a do a long shout that is larger than one line, the shout appears cutted. but sometimes it appear good, with the 2 lines.dont know why.

another thing. I prefer the last shouts to be in the top of the shoutbox instead of the bottom, the same with the text box to write the shouts. can this be done?
Thanks for reading :)

PabloW

nneonneo

@PabloW: To reverse shouts, add
$chatText=implode("\n", (array_reverse(explode ( "\n", $chatText ))));
before
return $chatText.' '; // hack: totally empty responses can break some browsers;
to put the form on top, move
echo '<div id="shouts">';
echo readChat($chatFile, $logDir);
echo '</div>';

to before
}
if($gzipCompression) ob_end_flush();

As for lines being cutoff or broken, it would depend on the browser and the text (if there is a long word at the end, it may be cut off).

@rosoner: Odd, give me a URL. I will see to it...

@MegaTinkerCoder: Yes, a link would be nice; seeing is believing :)
Check out the AJAX Shoutbox (my one and only mod to date :P)
Do you like SMF? Are you using ProBoards, InvisionFree, ActiveBoards or some other web-hosted forum? I can help you convert to SMF (without having to purchase a DB conversion)...contact me [nneonneo {at} gmail *dot* com], and see this topic
spammers here!

PabloW

#1077
@nneonneo Thank you very much :D Then ill try to add the smilies bar
i invite you to see how it looks, this is it www.pawforum.com.ar [nofollow]


Flying Drupalist

Thanks nneonneo, I added the line.

You can see the result here.

http://www.miydai.com/SSI.php

MegaTinkerCoder

I figured it out, well sorta... I found your directions for installing the shoutbox while using TP, but if you use the Scribbles 2* theme it didn't work for me... hey if it works for others with TP and Scribbles 2 great, but if it doesn't what worked for me was create the php block... and instead of just creating the div use this code:

// YSHOUT HERE
global $boardurl;
echo '
<script src="',$boardurl,'/yshout/js/prototype.js" type="text/javascript"></script>
<script src="',$boardurl,'/yshout/js/moo.ajax.js" type="text/javascript"></script>
<script src="',$boardurl,'/yshout/js/behaviour.js" type="text/javascript"></script>
<script src="',$boardurl,'/yshout/js/domFunction.js" type="text/javascript"></script>
<script type="text/javascript">

var myfunc = new domFunction(function()
{
',empty($options['collapse_header']) ? 'loadChat();':'','
}, { "yshout":"id"});
var board_url = "', $boardurl, '";

</script>
<script src="',$boardurl,'/yshout/js/yshout.js?Mar42007" type="text/javascript"></script>
<script type="text/javascript">var shoutFile = "home.txt";</script>
<style type="text/css">
#yshout {
font-size: 10px;
}
#yshout p {
margin: 0 0 0; /* Top Bottom Linespacing */
}
.shout-invalid {
background: #FFFDD1;
}
#yshout fieldset {
border: none;
}
#yshout em {
font-style: normal;
}
#yshout p {
line-height: 1;
margin-top: 0;
}
#yshout {
overflow: hidden;
}
#yshout .shout-timestamp {
font-weight: normal;
color: #000;
}
#forum-name, #shout-text, #shout-button {
font-size: 9px;
margin: 0;
padding: 0;
}
#yshout #forum-name {
color: #666666;
width: 70px;
margin-right: 5px;
}
#yshout #shout-text {
color: #000000;
width: 310px;
margin-right: 5px;
}
#yshout #shout-button {
width: 55px;
}
#shouts .owner a {
color: #F00;
}
#shouts .moderator a {
color: #00F;
}
</style>';
// YSHOUT END


echo '<div id="yshout"></div>';


DO NOT edit the index.template.php file if you do this phpblock.

What happens with scribbles 2 and TP is that the place you enter the code after the css line is loaded differently then other templates, or so it seems that the function call messes it up... well just in case someone else has the same problem as me try above... perhaps this code will keep any template in TP with the shout box without having to edit templates anymore as long as you have the php block set...

Well here is my page now:

http://www.christiansaflame.com/index.php
In the middle of difficulty lies opportunity.

Albert Einstein

Advertisement: