News:

Bored?  Looking to kill some time?  Want to chat with other SMF users?  Join us in IRC chat or Discord

Main Menu

nneonneo's Shoutbox

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

Previous topic - Next topic

nneonneo

@AJ32: Yes, they have changed the string handling in beta 4, which I relied on.

Here's the fix:

In yshout/js/yshout.js, change
function complex_escape(text) {
return escape(textToEntities(text.replace(/&#/g, "&#"))).replace(/\+/g, "%2B");
}

to
function complex_escape(text) {
return text.replace(/&#/g, "&#").php_to8bit().php_urlencode();
}


This will ONLY work in beta 4.
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!

panetolikos6

Hello,
Congratulations and many thanks for the mod which is the most succesful part of my site. I use Nneonneo's Ajax Shoutbox 1.09 and my forum is SMF 1.1.3. I am very satisfied with that.

The only thing that I wish to add is the option "Return" for users, as it is for moderators and admins. Sorry if it is answered before, but I searched, but couldn't find it. I want to add it because sometimes it doesn't refresh due to server problems.

Thank you!

AJ32

Quote from: nneonneo on September 08, 2008, 05:58:13 PM
@AJ32: Yes, they have changed the string handling in beta 4, which I relied on.

Here's the fix:

In yshout/js/yshout.js, change
function complex_escape(text) {
   return escape(textToEntities(text.replace(/&#/g, "&#"))).replace(/+/g, "%2B");
}

to
function complex_escape(text) {
   return text.replace(/&#/g, "&#").php_to8bit().php_urlencode();
}


This will ONLY work in beta 4.

Thanks, works great!  :)

sadiqsaad

Greetings,

I am having a little trouble in adding this code

// YSHOUT HERE - shoutbox code
      echo '
                     <br /><b>',$txt['yshout_shoutbox'],'</b><br /><br />
                     <div id="yshout">',$txt['yshout_loading'],'<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></div>';
      // YSHOUT END - shoutbox code



<?php
// Version: 1.1.5; 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.5';

/* 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? */
$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="qTp, Clan, qTp Clan, Counter Strike, CS 1.6, game, online, server, team, teamspeak, Counter Strike 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" />';

// 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" />';

// YSHOUT HERE - <head> code
 
global $boardurl,$shoutFile;
 
$shoutFile='home';
 
$scripturlparsed = parse_url($scripturl);
 
$scriptpath=isset($scripturlparsed['path'])?$scripturlparsed['path']:'/';
 
$args='';
  foreach(
$_GET as $key => $value) // passthrough $_GET
     
$args.='&'.urlencode($key).'='.urlencode($value);
  echo
'
  <script src="'
,$boardurl,'/yshout/js/moo.ajax.js" type="text/javascript"></script>
  <script src="'
,$boardurl,'/yshout/settings.js" type="text/javascript"></script>
  <script type="text/javascript"><!-- // --><![CDATA[
  window.onload=function(){loadChat();};
  var shoutFile="'
,$shoutFile,'";
  var yshout_php="'
,$scriptpath,'?yshout',$args,'";
  // ]]></script>
  <script src="'
,$boardurl,'/yshout/js/yshout.js?July062008" type="text/javascript"></script>
  <style type="text/css">
     #yshout {
        font-size: 10px;
        overflow: hidden;
     }
     #yshout #yshout-toollinks { /* tool links (History, Commands, etc.) */
     }
     #yshout #shouts { /* main shouts area */
     }
     #yshout .shout { /* one shout */
        margin: 0 0 0; /* Top Bottom Linespacing */
        line-height: 1;
     }
     #yshout .shout-timestamp {
        font-style: normal;
        font-weight: normal;
     }
     #yshout .shout-adminlinks { /* del and ban buttons */
        font-size: 6pt;
        color: #141414;
     }
     #yshout #shout-form {
        margin: 0;
        padding: 0;
     }
     #yshout #shout-form fieldset {
        border: none;
     }
     #yshout #forum-name {
        width: 70px;
        margin-right: 5px;
     }
     #yshout #shout-text {
        width: 310px;
        margin-right: 5px;
     }
     #yshout #shout-button {
        width: 55px;
     }
     #yshout .shout-invalid { /* invalid shout (shout textbox) */
        background: #FFFDD1;
     }
  </style>'
;
 
// YSHOUT END - <head> code

// 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>
</head>
<body>'
;
echo '
<div align="center"/>
<div id="widthControl"/>
 <div id="topside-l">
<div id="topside-r">
<div id="topbar"><span style="font-size: 10pt; color: silver; font-family: tahoma; float: right; width: 10%;">'
, $context['current_time'], '</span></div>
<div id="navbar">'
, template_menu(), '</div>
 <div id="header_bg">
 <table width="100%" border="0" cellpadding="0" cellspacing="0">
 <tr>
<td class="header_bg"><a href="'
, $scripturl, '"><img src="', $settings['images_url'], '/basic.png" style="float:left; margin-left: 18px; margin-bottom: 50px;" border="0" alt="', $context['forum_name'], '" /></a></td>
 </tr>
 </table>'
;

// The main content should go here.
echo '
<div align="center">
<div class="page" style="width:100%; text-align:left">
<div style="padding:0px 15px 0px 15px" align="left"><br />
<table class="tborder" cellpadding="6" cellspacing="1" border="0" width="100%" align="center">
<tr>
<td class="windowbg" width="100%">'
, theme_linktree1(), '</td>
<td class="windowbg2" nowrap="nowrap"><div class="smalltext">'
;
if ($context['user']['is_logged'])
{
echo '<b>', $txt['hello_member_ndt'], ' ', $context['user']['name'], '</b><br />';

// Only tell them about their messages if they can read their messages!
if ($context['allow_pm'])
echo $txt[152], ' <a href="', $scripturl, '?action=pm">', $context['user']['messages'], ' ', $context['user']['messages'] != 1 ? $txt[153] : $txt[471], '</a>', $txt['newmessages4'], ' ', $context['user']['unread_messages'], ' ', $context['user']['unread_messages'] == 1 ? $txt['newmessages0'] : $txt['newmessages1'] , '.<br />';
echo '
<a href="'
, $scripturl, '?action=unread">', $txt['unread_since_visit'], '</a> <br />
<a href="'
, $scripturl, '?action=unreadreplies">', $txt['show_unread_replies'], '</a><br />';

// 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'];

// 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 />';
}
}

if($context['user']['is_guest'])
{
echo '
<form action="'
, $scripturl, '?action=login2" method="post" accept-charset="', $context['character_set'], '"', empty($context['disable_login_hashing']) ? ' onsubmit="hashLoginPassword(this, \'' . $context['session_id'] . '\');"' : '', '>
<script language="JavaScript" type="text/javascript" src="'
, $settings['default_theme_url'], '/sha1.js"></script>
<table cellpadding="0" cellspacing="3" border="0">
<tr>
<td class="middletext">'
, $txt[35], '</td>
<td><input type="text" class="bginput" style="font-size: 11px" name="user" size="10" value="'
, $txt[35], '" onfocus="if (this.value == \'', $txt[35], '\') this.value = \'\';" /></td>
<td class="middletext" nowrap="nowrap"><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 class="middletext">'
, $txt[36], '</td>
<td><input type="password" class="bginput" style="font-size: 11px" name="passwrd" size="10" /></td>
<td><input type="submit" class="button" value="'
, $txt[34], '" /></td>
</tr>
</table>
<input type="hidden" name="hash_passwrd" value="" />
</form>'
;
}
echo '
</div></td>
</tr>
</table><br />'
;
}

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

echo
'
<div id="footer">
<span class="smalltext" style="margin-bottom: 2ex; margin-top: 2ex;">'
, theme_copyright(), '<br /><br />' , $txt['c_copy'], ' | <a href="http://validator.w3.org/check/referer" target="_self">XHTML</a> | <a href="http://jigsaw.w3.org/css-validator/check/referer" target="_self">CSS</a></span>
</div>'
;

// Show the load time?
if ($context['show_load_time'])
echo '
<div>'
, $txt['smf301'], $context['load_time'], $txt['smf302'], $context['load_queries'], $txt['smf302b'], '</div>';
$nb=' | ';
echo '
</div>
</div>'
;

// 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>'
;
}

// 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>
</div>
</div>
 </div>
</body></html>'
;
}

// Show a linktree. This is that thing that shows "My Community | General Category | General Discussion"..
function theme_linktree()
{ }

// Show a linktree...
function theme_linktree1()
{
 global $context, $settings, $options;

 // Folder style or inline?  Inline has a smaller font.
 echo '<div class="navbar" style="font-size:9pt">';

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

 // 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 class="inlineimg" src="'
. $settings['images_url'] . '/icons/linktree_side.gif" alt="" border="0" /> <img class="inlineimg" src="' . $settings['images_url'] . '/icons/folder_open.gif" alt="+" border="0" /> ';

// Show the link, including a URL if it should have one.
echo '<b>', $settings['linktree_link'] && isset($tree['url']) ? '<a href="' . $tree['url'] . '">' . $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 ' &#38;#187; ';
 }

 echo '</div>';
}

// 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 '
<ul>'
;

// Show the [home] button.
echo '
<li'
, $current_action == 'home' ? ' class="active"' : '', '><a href="', $scripturl, '">', $txt[103], '</a></li>';

// Show the [help] button.
echo '
<li'
, $current_action == 'help' ? ' class="active"' : '', '><a href="', $scripturl, '?action=help">', $txt[119], '</a></li>';

// How about the [search] button?
if ($context['allow_search'])
echo '
<li'
, $current_action == 'search' ? ' class="active"' : '', '><a href="', $scripturl, '?action=search">', $txt[182], '</a></li>';

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

// Edit Profile... [profile]
if ($context['allow_edit_profile'])
echo '
<li'
, $current_action == 'profile' ? ' class="active"' : '', '><a href="', $scripturl, '?action=profile">', $txt[467], '</a></li>';

// Go to PM center... [pm]
if ($context['user']['is_logged'] && $context['allow_pm'])
echo '
<li'
, $current_action == 'pm' ? ' class="active"' : '', '><a href="', $scripturl, '?action=pm">' , $txt['pm_short'] , ' ', $context['user']['unread_messages'] > 0 ? '<blink>['. $context['user']['unread_messages'] . ']</blink>' : '' , '</a></li>';

// The [calendar]!
if ($context['allow_calendar'])
echo '
<li'
, $current_action == 'calendar' ? ' class="active"' : '', '><a href="', $scripturl, '?action=calendar">', $txt['calendar24'], '</a></li>';

// the [member] list button
if ($context['allow_memberlist'])
echo '
<li'
, $current_action == 'mlist' ? ' class="active"' : '', '><a href="', $scripturl, '?action=mlist">' , $txt[331] , '</a></li>';

// If the user is a guest, show [login] and [register] buttons.
if ($context['user']['is_guest'])
{
echo '
<li'
, $current_action == 'login' ? ' class="active"' : '', '><a href="', $scripturl, '?action=login">', $txt[34], '</a></li>
<li'
, $current_action == 'register' ? ' class="active"' : '', '><a href="', $scripturl, '?action=register">', $txt[97], '</a></li>';
}
// Otherwise, they might want to [logout]...
else
echo '
<li'
, $current_action == 'logout' ? ' class="active"' : '', '><a href="', $scripturl, '?action=logout;sesc=', $context['session_id'], '">', $txt[108], '</a></li>';
echo '</ul>';
}

// 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> </td>';

echo '
<td class="'
, $direction == 'top' ? 'main' : 'mirror', 'tab_' , $context['right_to_left'] ? 'last' : 'first' , '"> </td>
<td class="'
, $direction == 'top' ? 'main' : 'mirror', 'tab_back">', implode(' <strong> | </strong> ', $button_strip) , '</td>
<td class="'
, $direction == 'top' ? 'main' : 'mirror', 'tab_' , $context['right_to_left'] ? 'first' : 'last' , '"> </td>';
}

?>


Kindly guide me where to add this code. I want the shoutbox on the red highlighted area.



[unplugged]

@pipo_il_primero

try this:

/* Default theme style. Modify to your taste. */
#yshout #shouts{
   font-size: 16px;
}
#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: 11px;
   margin: 0;
   padding: 0;
}
#yshout #forum-name {
   color: #666666;
   width: 70px;
   margin-right: 5px;
}
#yshout #shout-text {
   color: #000000;
   width: 150px;
   margin-right: 5px;
}
#yshout #shout-button {
   width: 55px;
}


« Next Edit: Tomorrow at 08:34:45 PM by SunKing »   <---- « someone stole my sig... :o »



[unplugged]

@sadiqsaad

What theme are you using? From what I can see in that image, you may need to add that code to the BoardIndex.template.php to get it to show up in that location. That, however, will only render the shoutbox on the main page, not any others. I will be more than happy to help you integrate the shoutbox into your theme, just need to know the theme, and then we will figure out the best location for it.  ;D
« Next Edit: Tomorrow at 08:34:45 PM by SunKing »   <---- « someone stole my sig... :o »



sadiqsaad


[unplugged]

CHECK HERE to see if that's what you want. If so, then you can use the attached file. If not, then tell me exactly where you would like it, please.
« Next Edit: Tomorrow at 08:34:45 PM by SunKing »   <---- « someone stole my sig... :o »



machmanx

This is wierd, I got the shoutbox setup, and I can setup permissions for guests, regular users, and global mods, but NOT regular mods.  Why is this?

Using SMF 2.0 Beta 4 with only this mod installed.

[unplugged]

#3729
@Threnelegy

If you will attach your index.template.php, I'll gladly fix it for you.

@machmanx

I believe regular mods are all board specific (the permissions for them don't quite follow the same rules).
You can take a look here for a possible solution.
« Next Edit: Tomorrow at 08:34:45 PM by SunKing »   <---- « someone stole my sig... :o »



machmanx

That makes sense, but the option is just not listed.  So when I try to add that option to moderators, I get this error: "You can only select one action to modify the permissions".  That's when I noticed, the enter button says "Shout!".  Look:-

http://img411.imageshack.us/my.php?image=smfglitch2nf4.jpg

Why is that?

[unplugged]

I just installed it on SMF 2.0 Beta 4 and I don't have that problem with the "Set Permissions" button. As far as the moderator permissions, you'll notice that there are other permissions as well that are not available to that membergroup.
« Next Edit: Tomorrow at 08:34:45 PM by SunKing »   <---- « someone stole my sig... :o »



[unplugged]

Why would this javascript cause the shoutbox to stop working?

var staticmenuids=["staticmenu"]

var staticmenuoffsetY=[]

function getmenuoffsetY(){
for (var i=0; i<staticmenuids.length; i++){
var currentmenu=document.getElementById(staticmenuids[i])
staticmenuoffsetY.push(isNaN(parseInt(currentmenu.style.top))? 0 : parseInt(currentmenu.style.top))
}
initstaticmenu()
}

function initstaticmenu(){
var iebody=(document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
var topcorner=(window.pageYOffset)? window.pageYOffset : iebody.scrollTop
for (var i=0; i<staticmenuids.length; i++)
document.getElementById(staticmenuids[i]).style.top=topcorner+staticmenuoffsetY[i]+"px"
setTimeout("initstaticmenu()", 100)
}

if (window.addEventListener)
window.addEventListener("load", getmenuoffsetY, false)
else if (window.attachEvent)
window.attachEvent("onload", getmenuoffsetY)

« Next Edit: Tomorrow at 08:34:45 PM by SunKing »   <---- « someone stole my sig... :o »



nneonneo

@machmanx: Huh?! Shout! on the submit button? That is very strange. Perhaps it might be a bug in your browser? Try Shift+Refresh.

@SunKing: I suspect the "window.addEventListener("load", getmenuoffsetY, false) and "window.attachEvent("onload", getmenuoffsetY)" lines are overwriting the shoutbox's onload handler. The proper way to do this would be to chain the handlers together, e.g. by using some code from this page to chain them together.
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!

machmanx

Thanks, Sunking.  I already knew that, but I guess it's better just to create a new group.

Nneonneo, it was simply a browser refresh issue, lol!  I can't believe that!  Sorry for troubling you ;D

[unplugged]

HOLY!!!!

I am really dabbling in unknown territory when it comes to javascript, and especially with things like "chaining" onload events. I can't even spell onload events.  :P

That is some very good information you pointed me to, nneonneo, and after reading it, I have managed to chain the onload events and everything works great so far. Thank you very much for "directing" me.
« Next Edit: Tomorrow at 08:34:45 PM by SunKing »   <---- « someone stole my sig... :o »



Threnelegy

Thanks SunKing, here it is. I've got the 'custom profile fields' mod installed also, I'm not sure if that might conflict or not.

[unplugged]

It's pushing midnight here, so I will get on it when I get home from work tomorrow.
« Next Edit: Tomorrow at 08:34:45 PM by SunKing »   <---- « someone stole my sig... :o »



sadiqsaad

Thx brother thats really what I wanted. I uploaded the file but now I am getting this error

Fatal error: require_once() [function.require]: Failed opening required '/Subs-Post.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/certcoll/public_html/qtpclan/forum/yshout/yshout.php on line 195

sadiqsaad

Quote from: nneonneo on August 30, 2008, 01:44:42 PM
@dangerboy: OK, then just add
global $sourcedir;
before
require_once($sourcedir . '/Subs-Post.php');


Ok I tried this solution but now my my forum is weird. Here is the url

http://qtpclan.co.cc/forum [nofollow]

Advertisement: