Página 2 de 3

Re: Icone citar não aparece nos tópicos

Enviado: 12 Fev 2012, 21:10
por robra
Poste todo o conteúdo de seu arquivo includes/message_parser.php entre o BBcode Code.

Abraço. Imagem

Re: Icone citar não aparece nos tópicos

Enviado: 12 Fev 2012, 22:09
por tucao
Segue o arquivo abaixo.

Código: Selecionar todos

<?php
/**
*
* @package phpBB3
* @version $Id$
* @copyright (c) 2005 phpBB Group
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*
*/

/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
	exit;
}

if (!class_exists('bbcode'))
{
	include($phpbb_root_path . 'includes/bbcode.' . $phpEx);
}

/**
* BBCODE FIRSTPASS
* BBCODE first pass class (functions for parsing messages for db storage)
* @package phpBB3
*/
class bbcode_firstpass extends bbcode
{
	var $message = '';
	var $warn_msg = array();
	var $parsed_items = array();

	/**
	* Parse BBCode
	*/
	function parse_bbcode()
	{
		if (!$this->bbcodes)
		{
			$this->bbcode_init();
		}

		global $user;

		$this->bbcode_bitfield = '';
		$bitfield = new bitfield();

		foreach ($this->bbcodes as $bbcode_name => $bbcode_data)
		{
			if (isset($bbcode_data['disabled']) && $bbcode_data['disabled'])
			{
				foreach ($bbcode_data['regexp'] as $regexp => $replacement)
				{
					if (preg_match($regexp, $this->message))
					{
						$this->warn_msg[] = sprintf($user->lang['UNAUTHORISED_BBCODE'] , '[' . $bbcode_name . ']');
						continue;
					}
				}
			}
			else
			{
				foreach ($bbcode_data['regexp'] as $regexp => $replacement)
				{
					// The pattern gets compiled and cached by the PCRE extension,
					// it should not demand recompilation
					if (preg_match($regexp, $this->message))
					{
						$this->message = preg_replace($regexp, $replacement, $this->message);
						$bitfield->set($bbcode_data['bbcode_id']);
					}
				}
			}
		}

		$this->bbcode_bitfield = $bitfield->get_base64();
	}

	/**
	* Prepare some bbcodes for better parsing
	*/
	function prepare_bbcodes()
	{
		// Ok, seems like users instead want the no-parsing of urls, smilies, etc. after and before and within quote tags being tagged as "not a bug".
		// Fine by me ;) Will ease our live... but do not come back and cry at us, we won't hear you.

		/* Add newline at the end and in front of each quote block to prevent parsing errors (urls, smilies, etc.)
		if (strpos($this->message, '[quote') !== false && strpos($this->message, '[/quote]') !== false)
		{
			$this->message = str_replace("\r\n", "\n", $this->message);

			// We strip newlines and spaces after and before quotes in quotes (trimming) and then add exactly one newline
			$this->message = preg_replace('#\[quote(=".*?")?\]\s*(.*?)\s*\[/quote\]#siu', '[quote\1]' . "\n" . '\2' ."\n[/quote]", $this->message);
		}
		*/

		// Add other checks which needs to be placed before actually parsing anything (be it bbcodes, smilies, urls...)
	}

	/**
	* Init bbcode data for later parsing
	*/
	function bbcode_init()
	{
		static $rowset;

		// This array holds all bbcode data. BBCodes will be processed in this
		// order, so it is important to keep [code] in first position and
		// [quote] in second position.
		$this->bbcodes = array(
			'code'			=> array('bbcode_id' => 8,	'regexp' => array('#\[code(?:=([a-z]+))?\](.+\[/code\])#ise' => "\$this->bbcode_code('\$1', '\$2')")),
			'quote'			=> array('bbcode_id' => 0,	'regexp' => array('#\[quote(?:="(.*?)")?\](.+)\[/quote\]#ise' => "\$this->bbcode_quote('\$0')")),
			'attachment'	=> array('bbcode_id' => 12,	'regexp' => array('#\[attachment=([0-9]+)\](.*?)\[/attachment\]#ise' => "\$this->bbcode_attachment('\$1', '\$2')")),
			'b'				=> array('bbcode_id' => 1,	'regexp' => array('#\[b\](.*?)\[/b\]#ise' => "\$this->bbcode_strong('\$1')")),
			'i'				=> array('bbcode_id' => 2,	'regexp' => array('#\[i\](.*?)\[/i\]#ise' => "\$this->bbcode_italic('\$1')")),
			'url'			=> array('bbcode_id' => 3,	'regexp' => array('#\[url(=(.*))?\](.*)\[/url\]#iUe' => "\$this->validate_url('\$2', '\$3')")),
			'img'			=> array('bbcode_id' => 4,	'regexp' => array('#\[img\](.*)\[/img\]#iUe' => "\$this->bbcode_img('\$1')")),
			'size'			=> array('bbcode_id' => 5,	'regexp' => array('#\[size=([\-\+]?\d+)\](.*?)\[/size\]#ise' => "\$this->bbcode_size('\$1', '\$2')")),
			'color'			=> array('bbcode_id' => 6,	'regexp' => array('!\[color=(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z\-]+)\](.*?)\[/color\]!ise' => "\$this->bbcode_color('\$1', '\$2')")),
			'u'				=> array('bbcode_id' => 7,	'regexp' => array('#\[u\](.*?)\[/u\]#ise' => "\$this->bbcode_underline('\$1')")),
			'list'			=> array('bbcode_id' => 9,	'regexp' => array('#\[list(?:=(?:[a-z0-9]|disc|circle|square))?].*\[/list]#ise' => "\$this->bbcode_parse_list('\$0')")),
			'email'			=> array('bbcode_id' => 10,	'regexp' => array('#\[email=?(.*?)?\](.*?)\[/email\]#ise' => "\$this->validate_email('\$1', '\$2')")),
			'flash'			=> array('bbcode_id' => 11,	'regexp' => array('#\[flash=([0-9]+),([0-9]+)\](.*?)\[/flash\]#ie' => "\$this->bbcode_flash('\$1', '\$2', '\$3')"))
		);

		// Zero the parsed items array
		$this->parsed_items = array();

		foreach ($this->bbcodes as $tag => $bbcode_data)
		{
			$this->parsed_items[$tag] = 0;
		}

		if (!is_array($rowset))
		{
			global $db;
			$rowset = array();

			$sql = 'SELECT *
				FROM ' . BBCODES_TABLE;
			$result = $db->sql_query($sql);

			while ($row = $db->sql_fetchrow($result))
			{
				$rowset[] = $row;
			}
			$db->sql_freeresult($result);
		}

		foreach ($rowset as $row)
		{
			$this->bbcodes[$row['bbcode_tag']] = array(
				'bbcode_id'	=> (int) $row['bbcode_id'],
				'regexp'	=> array($row['first_pass_match'] => str_replace('$uid', $this->bbcode_uid, $row['first_pass_replace']))
			);
		}
	}

	/**
	* Making some pre-checks for bbcodes as well as increasing the number of parsed items
	*/
	function check_bbcode($bbcode, &$in)
	{
		// when using the /e modifier, preg_replace slashes double-quotes but does not
		// seem to slash anything else
		$in = str_replace("\r\n", "\n", str_replace('\"', '"', $in));

		// Trimming here to make sure no empty bbcodes are parsed accidently
		if (trim($in) == '')
		{
			return false;
		}

		$this->parsed_items[$bbcode]++;

		return true;
	}

	/**
	* Transform some characters in valid bbcodes
	*/
	function bbcode_specialchars($text)
	{
		$str_from = array('<', '>', '[', ']', '.', ':');
		$str_to = array('<', '>', '&#91;', '&#93;', '&#46;', '&#58;');

		return str_replace($str_from, $str_to, $text);
	}

	/**
	* Parse size tag
	*/
	function bbcode_size($stx, $in)
	{
		global $user, $config;

		if (!$this->check_bbcode('size', $in))
		{
			return $in;
		}

		if ($config['max_' . $this->mode . '_font_size'] && $config['max_' . $this->mode . '_font_size'] < $stx)
		{
			$this->warn_msg[] = sprintf($user->lang['MAX_FONT_SIZE_EXCEEDED'], $config['max_' . $this->mode . '_font_size']);

			return '[size=' . $stx . ']' . $in . '[/size]';
		}

		// Do not allow size=0
		if ($stx <= 0)
		{
			return '[size=' . $stx . ']' . $in . '[/size]';
		}

		return '[size=' . $stx . ':' . $this->bbcode_uid . ']' . $in . '[/size:' . $this->bbcode_uid . ']';
	}

	/**
	* Parse color tag
	*/
	function bbcode_color($stx, $in)
	{
		if (!$this->check_bbcode('color', $in))
		{
			return $in;
		}

		return '[color=' . $stx . ':' . $this->bbcode_uid . ']' . $in . '[/color:' . $this->bbcode_uid . ']';
	}

	/**
	* Parse u tag
	*/
	function bbcode_underline($in)
	{
		if (!$this->check_bbcode('u', $in))
		{
			return $in;
		}

		return '[u:' . $this->bbcode_uid . ']' . $in . '[/u:' . $this->bbcode_uid . ']';
	}

	/**
	* Parse b tag
	*/
	function bbcode_strong($in)
	{
		if (!$this->check_bbcode('b', $in))
		{
			return $in;
		}

		return '[b:' . $this->bbcode_uid . ']' . $in . '[/b:' . $this->bbcode_uid . ']';
	}

	/**
	* Parse i tag
	*/
	function bbcode_italic($in)
	{
		if (!$this->check_bbcode('i', $in))
		{
			return $in;
		}

		return '[i:' . $this->bbcode_uid . ']' . $in . '[/i:' . $this->bbcode_uid . ']';
	}

	/**
	* Parse img tag
	*/
	function bbcode_img($in)
	{
		global $user, $config;

		if (!$this->check_bbcode('img', $in))
		{
			return $in;
		}

		$in = trim($in);
		$error = false;

		$in = str_replace(' ', '%20', $in);

		// Checking urls
		if (!preg_match('#^' . get_preg_expression('url') . '$#i', $in) && !preg_match('#^' . get_preg_expression('www_url') . '$#i', $in))
		{
			return '[img]' . $in . '[/img]';
		}

		// Try to cope with a common user error... not specifying a protocol but only a subdomain
		if (!preg_match('#^[a-z0-9]+://#i', $in))
		{
			$in = 'http://' . $in;
		}

		if ($config['max_' . $this->mode . '_img_height'] || $config['max_' . $this->mode . '_img_width'])
		{
			$stats = @getimagesize($in);

			if ($stats === false)
			{
				$error = true;
				$this->warn_msg[] = $user->lang['UNABLE_GET_IMAGE_SIZE'];
			}
			else
			{
				if ($config['max_' . $this->mode . '_img_height'] && $config['max_' . $this->mode . '_img_height'] < $stats[1])
				{
					$error = true;
					$this->warn_msg[] = sprintf($user->lang['MAX_IMG_HEIGHT_EXCEEDED'], $config['max_' . $this->mode . '_img_height']);
				}

				if ($config['max_' . $this->mode . '_img_width'] && $config['max_' . $this->mode . '_img_width'] < $stats[0])
				{
					$error = true;
					$this->warn_msg[] = sprintf($user->lang['MAX_IMG_WIDTH_EXCEEDED'], $config['max_' . $this->mode . '_img_width']);
				}
			}
		}

		if ($error || $this->path_in_domain($in))
		{
			return '[img]' . $in . '[/img]';
		}

		return '[img:' . $this->bbcode_uid . ']' . $this->bbcode_specialchars($in) . '[/img:' . $this->bbcode_uid . ']';
	}

	/**
	* Parse flash tag
	*/
	function bbcode_flash($width, $height, $in)
	{
		global $user, $config;

		if (!$this->check_bbcode('flash', $in))
		{
			return $in;
		}

		$in = trim($in);
		$error = false;

		// Do not allow 0-sizes generally being entered
		if ($width <= 0 || $height <= 0)
		{
			return '[flash=' . $width . ',' . $height . ']' . $in . '[/flash]';
		}

		// Apply the same size checks on flash files as on images
		if ($config['max_' . $this->mode . '_img_height'] || $config['max_' . $this->mode . '_img_width'])
		{
			if ($config['max_' . $this->mode . '_img_height'] && $config['max_' . $this->mode . '_img_height'] < $height)
			{
				$error = true;
				$this->warn_msg[] = sprintf($user->lang['MAX_FLASH_HEIGHT_EXCEEDED'], $config['max_' . $this->mode . '_img_height']);
			}

			if ($config['max_' . $this->mode . '_img_width'] && $config['max_' . $this->mode . '_img_width'] < $width)
			{
				$error = true;
				$this->warn_msg[] = sprintf($user->lang['MAX_FLASH_WIDTH_EXCEEDED'], $config['max_' . $this->mode . '_img_width']);
			}
		}

		if ($error || $this->path_in_domain($in))
		{
			return '[flash=' . $width . ',' . $height . ']' . $in . '[/flash]';
		}

		return '[flash=' . $width . ',' . $height . ':' . $this->bbcode_uid . ']' . $this->bbcode_specialchars($in) . '[/flash:' . $this->bbcode_uid . ']';
	}

	/**
	* Parse inline attachments [ia]
	*/
	function bbcode_attachment($stx, $in)
	{
		if (!$this->check_bbcode('attachment', $in))
		{
			return $in;
		}

		return '[attachment=' . $stx . ':' . $this->bbcode_uid . ']<!-- ia' . $stx . ' -->' . trim($in) . '<!-- ia' . $stx . ' -->[/attachment:' . $this->bbcode_uid . ']';
	}

	/**
	* Parse code text from code tag
	* @access private
	*/
	function bbcode_parse_code($stx, &$code)
	{
		switch (strtolower($stx))
		{
			case 'php':

				$remove_tags = false;

				$str_from = array('<', '>', '&#91;', '&#93;', '&#46;', '&#58;', '&#058;');
				$str_to = array('<', '>', '[', ']', '.', ':', ':');
				$code = str_replace($str_from, $str_to, $code);

				if (!preg_match('/\<\?.*?\?\>/is', $code))
				{
					$remove_tags = true;
					$code = "<?php $code ?>";
				}

				$conf = array('highlight.bg', 'highlight.comment', 'highlight.default', 'highlight.html', 'highlight.keyword', 'highlight.string');
				foreach ($conf as $ini_var)
				{
					@ini_set($ini_var, str_replace('highlight.', 'syntax', $ini_var));
				}

				// Because highlight_string is specialcharing the text (but we already did this before), we have to reverse this in order to get correct results
				$code = htmlspecialchars_decode($code);
				$code = highlight_string($code, true);

				$str_from = array('<span style="color: ', '<font color="syntax', '</font>', '<code>', '</code>','[', ']', '.', ':');
				$str_to = array('<span class="', '<span class="syntax', '</span>', '', '', '&#91;', '&#93;', '&#46;', '&#58;');

				if ($remove_tags)
				{
					$str_from[] = '<span class="syntaxdefault"><?php </span>';
					$str_to[] = '';
					$str_from[] = '<span class="syntaxdefault"><?php&nbsp;';
					$str_to[] = '<span class="syntaxdefault">';
				}

				$code = str_replace($str_from, $str_to, $code);
				$code = preg_replace('#^(<span class="[a-z_]+">)\n?(.*?)\n?(</span>)$#is', '$1$2$3', $code);

				if ($remove_tags)
				{
					$code = preg_replace('#(<span class="[a-z]+">)?\?>(</span>)#', '$1&nbsp;$2', $code);
				}

				$code = preg_replace('#^<span class="[a-z]+"><span class="([a-z]+)">(.*)</span></span>#s', '<span class="$1">$2</span>', $code);
				$code = preg_replace('#(?:\s++|&nbsp;)*+</span>$#u', '</span>', $code);

				// remove newline at the end
				if (!empty($code) && substr($code, -1) == "\n")
				{
					$code = substr($code, 0, -1);
				}

				return "[code=$stx:" . $this->bbcode_uid . ']' . $code . '[/code:' . $this->bbcode_uid . ']';
			break;

			default:
				return '[code:' . $this->bbcode_uid . ']' . $this->bbcode_specialchars($code) . '[/code:' . $this->bbcode_uid . ']';
			break;
		}
	}

	/**
	* Parse code tag
	* Expects the argument to start right after the opening [code] tag and to end with 
*/
function bbcode_code($stx, $in)
{
if (!$this->check_bbcode('code', $in))
{
return $in;
}

// We remove the hardcoded elements from the code block here because it is not used in code blocks
// Having it here saves us one preg_replace per message containing

Código: Selecionar todos

 blocks
		// Additionally, magic url parsing should go after parsing bbcodes, but for safety those are stripped out too...
		$htm_match = get_preg_expression('bbcode_htm');
		unset($htm_match[4], $htm_match[5]);
		$htm_replace = array('\1', '\1', '\2', '\1');

		$out = $code_block = '';
		$open = 1;

		while ($in)
		{
			// Determine position and tag length of next code block
			preg_match('#(.*?)(\[code(?:=([a-z]+))?\])(.+)#is', $in, $buffer);
			$pos = (isset($buffer[1])) ? strlen($buffer[1]) : false;
			$tag_length = (isset($buffer[2])) ? strlen($buffer[2]) : false;

			// Determine position of ending code tag
			$pos2 = stripos($in, '
');

// Which is the next block, ending code or code block
if ($pos !== false && $pos < $pos2)
{
// Open new block
if (!$open)
{
$out .= substr($in, 0, $pos);
$in = substr($in, $pos);
$stx = (isset($buffer[3])) ? $buffer[3] : '';
$code_block = '';
}
else
{
// Already opened block, just append to the current block
$code_block .= substr($in, 0, $pos) . ((isset($buffer[2])) ? $buffer[2] : '');
$in = substr($in, $pos);
}

$in = substr($in, $tag_length);
$open++;
}
else
{
// Close the block
if ($open == 1)
{
$code_block .= substr($in, 0, $pos2);
$code_block = preg_replace($htm_match, $htm_replace, $code_block);

// Parse this code block
$out .= $this->bbcode_parse_code($stx, $code_block);
$code_block = '';
$open--;
}
else if ($open)
{
// Close one open tag... add to the current code block
$code_block .= substr($in, 0, $pos2 + 7);
$open--;
}
else
{
// end code without opening code... will be always outside code block
$out .= substr($in, 0, $pos2 + 7);
}

$in = substr($in, $pos2 + 7);
}
}

// if now $code_block has contents we need to parse the remaining code while removing the last closing tag to match up.
if ($code_block)
{
$code_block = substr($code_block, 0, -7);
$code_block = preg_replace($htm_match, $htm_replace, $code_block);

$out .= $this->bbcode_parse_code($stx, $code_block);
}

return $out;
}

/**
* Parse list bbcode
* Expects the argument to start with a tag
*/
function bbcode_parse_list($in)
{
if (!$this->check_bbcode('list', $in))
{
return $in;
}

// $tok holds characters to stop at. Since the string starts with a '[' we'll get everything up to the first ']' which should be the opening
  • tag
    $tok = ']';
    $out = '[';

    // First character is [
    $in = substr($in, 1);
    $list_end_tags = $item_end_tags = array();

    do
    {
    $pos = strlen($in);

    for ($i = 0, $tok_len = strlen($tok); $i < $tok_len; ++$i)
    {
    $tmp_pos = strpos($in, $tok[$i]);

    if ($tmp_pos !== false && $tmp_pos < $pos)
    {
    $pos = $tmp_pos;
    }
    }

    $buffer = substr($in, 0, $pos);
    $tok = $in[$pos];

    $in = substr($in, $pos + 1);

    if ($tok == ']')
    {
    // if $tok is ']' the buffer holds a tag
    if (strtolower($buffer) == '/list' && sizeof($list_end_tags))
    {
    // valid
tag, check nesting so that we don't hit false positives
if (sizeof($item_end_tags) && sizeof($item_end_tags) >= sizeof($list_end_tags))
{
// current li tag has not been closed
$out = preg_replace('/\n?\[$/', '[', $out) . array_pop($item_end_tags) . '][';
}

$out .= array_pop($list_end_tags) . ']';
$tok = '[';
}
else if (preg_match('#^list(=[0-9a-z]+)?$#i', $buffer, $m))
{
// sub-list, add a closing tag
if (empty($m[1]) || preg_match('/^=(?:disc|square|circle)$/i', $m[1]))
{
array_push($list_end_tags, '/list:u:' . $this->bbcode_uid);
}
else
{
array_push($list_end_tags, '/list:o:' . $this->bbcode_uid);
}
$out .= 'list' . substr($buffer, 4) . ':' . $this->bbcode_uid . ']';
$tok = '[';
}
else
{
if (($buffer == '*' || substr($buffer, -2) == '[*') && sizeof($list_end_tags))
{
// the buffer holds a bullet tag and we have a
  • tag open
    if (sizeof($item_end_tags) >= sizeof($list_end_tags))
    {
    if (substr($buffer, -2) == '[*')
    {
    $out .= substr($buffer, 0, -2) . '[';
    }
    // current li tag has not been closed
    if (preg_match('/\n\[$/', $out, $m))
    {
    $out = preg_replace('/\n\[$/', '[', $out);
    $buffer = array_pop($item_end_tags) . "]\n[*:" . $this->bbcode_uid;
    }
    else
    {
    $buffer = array_pop($item_end_tags) . '][*:' . $this->bbcode_uid;
    }
    }
    else
    {
    $buffer = '*:' . $this->bbcode_uid;
    }

    $item_end_tags[] = '/*:m:' . $this->bbcode_uid;
    }
    else if ($buffer == '/*')
    {
    array_pop($item_end_tags);
    $buffer = '/*:' . $this->bbcode_uid;
    }

    $out .= $buffer . $tok;
    $tok = '[]';
    }
    }
    else
    {
    // Not within a tag, just add buffer to the return string
    $out .= $buffer . $tok;
    $tok = ($tok == '[') ? ']' : '[]';
    }
    }
    while ($in);

    // do we have some tags open? close them now
    if (sizeof($item_end_tags))
    {
    $out .= '[' . implode('][', $item_end_tags) . ']';
    }
    if (sizeof($list_end_tags))
    {
    $out .= '[' . implode('][', $list_end_tags) . ']';
    }

    return $out;
    }

    /**
    * Parse quote bbcode
    * Expects the argument to start with a tag
    */
    function bbcode_quote($in)
    {
    global $config, $user;

    /**
    * If you change this code, make sure the cases described within the following reports are still working:
    * #3572 - [quote="[test]test"]test [ test[/quote] - (correct: parsed)
    * #14667 - [quote]test[/quote] test ] and [ test [quote]test[/quote] (correct: parsed)
    * #14770 - [quote="["]test[/quote] (correct: parsed)
    * [quote="test"]test[/quote] (correct: parsed)
    * [quote="[quote]test[/quote]"]test[/quote] (correct: parsed - Username displayed as [quote]test[/quote])
    * #20735 - [quote]test[/[/b]quote] test [/quote][/quote] test - (correct: quoted: "test[/[/b]quote] test" / non-quoted: "[/quote] test" - also failed if layout distorted)
    * #40565 - [quote="a"]a[/quote][quote="a]a[/quote] (correct: first quote tag parsed, second quote tag unparsed)
    */

    $in = str_replace("\r\n", "\n", str_replace('\"', '"', trim($in)));

    if (!$in)
    {
    return '';
    }

    // To let the parser not catch tokens within quote_username quotes we encode them before we start this...
    $in = preg_replace('#quote="(.*?)"\]#ie', "'quote="' . str_replace(array('[', ']', '\\\"'), array('&#91;', '&#93;', '\"'), '\$1') . '"]'", $in);

    $tok = ']';
    $out = '[';

    $in = substr($in, 1);
    $close_tags = $error_ary = array();
    $buffer = '';
    $quote_removal = 0;

    do
    {
    $pos = strlen($in);
    for ($i = 0, $tok_len = strlen($tok); $i < $tok_len; ++$i)
    {
    $tmp_pos = strpos($in, $tok[$i]);
    if ($tmp_pos !== false && $tmp_pos < $pos)
    {
    $pos = $tmp_pos;
    }
    }

    $buffer .= substr($in, 0, $pos);
    $tok = $in[$pos];
    $in = substr($in, $pos + 1);

    if ($tok == ']')
    {
    if (strtolower($buffer) == '/quote' && sizeof($close_tags) && substr($out, -1, 1) == '[')
    {
    // we have found a closing tag
    $out .= array_pop($close_tags) . ']';
    $tok = '[';
    $buffer = '';
    if ($quote_removal)
    {
    $quote_removal --;
    if (!$quote_removal)
    {
    $out = substr($out, 0, $quote_keeplength);
    }
    }

    /* Add space at the end of the closing tag if not happened before to allow following urls/smilies to be parsed correctly
    * Do not try to think for the user. :/ Do not parse urls/smilies if there is no space - is the same as with other bbcodes too.
    * Also, we won't have any spaces within $in anyway, only adding up spaces -> #10982
    if (!$in || $in[0] !== ' ')
    {
    $out .= ' ';
    }*/
    }
    else if (preg_match('#^quote(?:="(.*?)")?$#is', $buffer, $m) && substr($out, -1, 1) == '[')
    {
    $this->parsed_items['quote']++;

    // the buffer holds a valid opening tag
    if ($config['max_quote_depth'] && sizeof($close_tags) >= $config['max_quote_depth'])
    {
    // there are too many nested quotes
    if (!$quote_removal)
    {
    $quote_keeplength = strlen($out) - 1;
    }
    $quote_removal ++;
    }

    array_push($close_tags, '/quote:' . $this->bbcode_uid);

    if (isset($m[1]) && $m[1])
    {
    $username = str_replace(array('&#91;', '&#93;'), array('[', ']'), $m[1]);
    $username = preg_replace('#\[(?!b|i|u|color|url|email|/b|/i|/u|/color|/url|/email)#iU', '&#91;$1', $username);

    $end_tags = array();
    $error = false;

    preg_match_all('#\[((?:/)?(?:[a-z]+))#i', $username, $tags);
    foreach ($tags[1] as $tag)
    {
    if ($tag[0] != '/')
    {
    $end_tags[] = '/' . $tag;
    }
    else
    {
    $end_tag = array_pop($end_tags);
    $error = ($end_tag != $tag) ? true : false;
    }
    }

    if ($error)
    {
    $username = $m[1];
    }

    $out .= 'quote="' . $username . '":' . $this->bbcode_uid . ']';
    }
    else
    {
    $out .= 'quote:' . $this->bbcode_uid . ']';
    }

    $tok = '[';
    $buffer = '';
    }
    else if (preg_match('#^quote="(.*?)#is', $buffer, $m))
    {
    // the buffer holds an invalid opening tag
    $buffer .= ']';
    }
    else
    {
    $out .= $buffer . $tok;
    $tok = '[]';
    $buffer = '';
    }
    }
    else
    {
    /**
    * Old quote code working fine, but having errors listed in bug #3572
    *
    * $out .= $buffer . $tok;
    * $tok = ($tok == '[') ? ']' : '[]';
    * $buffer = '';
    */

    $out .= $buffer . $tok;

    if ($tok == '[')
    {
    // Search the text for the next tok... if an ending quote comes first, then change tok to []
    $pos1 = stripos($in, '[/quote');
    // If the token ] comes first, we change it to ]
    $pos2 = strpos($in, ']');
    // If the token [ comes first, we change it to [
    $pos3 = strpos($in, '[');

    if ($pos1 !== false && ($pos2 === false || $pos1 < $pos2) && ($pos3 === false || $pos1 < $pos3))
    {
    $tok = '[]';
    }
    else if ($pos3 !== false && ($pos2 === false || $pos3 < $pos2))
    {
    $tok = '[';
    }
    else
    {
    $tok = ']';
    }
    }
    else
    {
    $tok = '[]';
    }
    $buffer = '';
    }
    }
    while ($in);

    $out .= $buffer;

    if (sizeof($close_tags))
    {
    $out .= '[' . implode('][', $close_tags) . ']';
    }

    foreach ($error_ary as $error_msg)
    {
    $this->warn_msg[] = $error_msg;
    }

    return $out;
    }

    /**
    * Validate email
    */
    function validate_email($var1, $var2)
    {
    $var1 = str_replace("\r\n", "\n", str_replace('\"', '"', trim($var1)));
    $var2 = str_replace("\r\n", "\n", str_replace('\"', '"', trim($var2)));

    $txt = $var2;
    $email = ($var1) ? $var1 : $var2;

    $validated = true;

    if (!preg_match('/^' . get_preg_expression('email') . '$/i', $email))
    {
    $validated = false;
    }

    if (!$validated)
    {
    return '[email' . (($var1) ? "=$var1" : '') . ']' . $var2 . '[/email]';
    }

    $this->parsed_items['email']++;

    if ($var1)
    {
    $retval = '[email=' . $this->bbcode_specialchars($email) . ':' . $this->bbcode_uid . ']' . $txt . '[/email:' . $this->bbcode_uid . ']';
    }
    else
    {
    $retval = '[email:' . $this->bbcode_uid . ']' . $this->bbcode_specialchars($email) . '[/email:' . $this->bbcode_uid . ']';
    }

    return $retval;
    }

    /**
    * Validate url
    *
    * @param string $var1 optional url parameter for url bbcode: [url(=$var1)]$var2[/url]
    * @param string $var2 url bbcode content: [url(=$var1)]$var2[/url]
    */
    function validate_url($var1, $var2)
    {
    global $config;

    $var1 = str_replace("\r\n", "\n", str_replace('\"', '"', trim($var1)));
    $var2 = str_replace("\r\n", "\n", str_replace('\"', '"', trim($var2)));

    $url = ($var1) ? $var1 : $var2;

    if ($var1 && !$var2)
    {
    $var2 = $var1;
    }

    if (!$url)
    {
    return '[url' . (($var1) ? '=' . $var1 : '') . ']' . $var2 . '[/url]';
    }

    $valid = false;

    $url = str_replace(' ', '%20', $url);

    // Checking urls
    if (preg_match('#^' . get_preg_expression('url') . '$#i', $url) ||
    preg_match('#^' . get_preg_expression('www_url') . '$#i', $url) ||
    preg_match('#^' . preg_quote(generate_board_url(), '#') . get_preg_expression('relative_url') . '$#i', $url))
    {
    $valid = true;
    }

    if ($valid)
    {
    $this->parsed_items['url']++;

    // if there is no scheme, then add http schema
    if (!preg_match('#^[a-z][a-z\d+\-.]*:/{2}#i', $url))
    {
    $url = 'http://' . $url;
    }

    // Is this a link to somewhere inside this board? If so then remove the session id from the url
    if (strpos($url, generate_board_url()) !== false && strpos($url, 'sid=') !== false)
    {
    $url = preg_replace('/(&|\?)sid=[0-9a-f]{32}&/', '\1', $url);
    $url = preg_replace('/(&|\?)sid=[0-9a-f]{32}$/', '', $url);
    $url = append_sid($url);
    }

    return ($var1) ? '[url=' . $this->bbcode_specialchars($url) . ':' . $this->bbcode_uid . ']' . $var2 . '[/url:' . $this->bbcode_uid . ']' : '[url:' . $this->bbcode_uid . ']' . $this->bbcode_specialchars($url) . '[/url:' . $this->bbcode_uid . ']';
    }

    return '[url' . (($var1) ? '=' . $var1 : '') . ']' . $var2 . '[/url]';
    }

    /**
    * Check if url is pointing to this domain/script_path/php-file
    *
    * @param string $url the url to check
    * @return true if the url is pointing to this domain/script_path/php-file, false if not
    *
    * @access private
    */
    function path_in_domain($url)
    {
    global $config, $phpEx, $user;

    if ($config['force_server_vars'])
    {
    $check_path = $config['script_path'];
    }
    else
    {
    $check_path = ($user->page['root_script_path'] != '/') ? substr($user->page['root_script_path'], 0, -1) : '/';
    }

    // Is the user trying to link to a php file in this domain and script path?
    if (strpos($url, ".{$phpEx}") !== false && strpos($url, $check_path) !== false)
    {
    $server_name = $user->host;

    // Forcing server vars is the only way to specify/override the protocol
    if ($config['force_server_vars'] || !$server_name)
    {
    $server_name = $config['server_name'];
    }

    // Check again in correct order...
    $pos_ext = strpos($url, ".{$phpEx}");
    $pos_path = strpos($url, $check_path);
    $pos_domain = strpos($url, $server_name);

    if ($pos_domain !== false && $pos_path >= $pos_domain && $pos_ext >= $pos_path)
    {
    // Ok, actually we allow linking to some files (this may be able to be extended in some way later...)
    if (strpos($url, '/' . $check_path . '/download/file.' . $phpEx) !== 0)
    {
    return false;
    }

    return true;
    }
    }

    return false;
    }
    }

    /**
    * Main message parser for posting, pm, etc. takes raw message
    * and parses it for attachments, bbcode and smilies
    * @package phpBB3
    */
    class parse_message extends bbcode_firstpass
    {
    var $attachment_data = array();
    var $filename_data = array();

    // Helps ironing out user error
    var $message_status = '';

    var $allow_img_bbcode = true;
    var $allow_flash_bbcode = true;
    var $allow_quote_bbcode = true;
    var $allow_url_bbcode = true;

    var $mode;

    /**
    * Init - give message here or manually
    */
    function parse_message($message = '')
    {
    // Init BBCode UID
    $this->bbcode_uid = substr(base_convert(unique_id(), 16, 36), 0, BBCODE_UID_LEN);
    $this->message = $message;
    }

    /**
    * Parse Message
    */
    function parse($allow_bbcode, $allow_magic_url, $allow_smilies, $allow_img_bbcode = true, $allow_flash_bbcode = true, $allow_quote_bbcode = true, $allow_url_bbcode = true, $update_this_message = true, $mode = 'post')
    {
    global $config, $db, $user;

    $this->mode = $mode;

    foreach (array('chars', 'smilies', 'urls', 'font_size', 'img_height', 'img_width') as $key)
    {
    if (!isset($config['max_' . $mode . '_' . $key]))
    {
    $config['max_' . $mode . '_' . $key] = 0;
    }
    }

    $this->allow_img_bbcode = $allow_img_bbcode;
    $this->allow_flash_bbcode = $allow_flash_bbcode;
    $this->allow_quote_bbcode = $allow_quote_bbcode;
    $this->allow_url_bbcode = $allow_url_bbcode;

    // If false, then $this->message won't be altered, the text will be returned instead.
    if (!$update_this_message)
    {
    $tmp_message = $this->message;
    $return_message = &$this->message;
    }

    if ($this->message_status == 'display')
    {
    $this->decode_message();
    }

    // Do some general 'cleanup' first before processing message,
    // e.g. remove excessive newlines(?), smilies(?)
    $match = array('#(script|about|applet|activex|chrome):#i');
    $replace = array("\\1&#058;");
    $this->message = preg_replace($match, $replace, trim($this->message));

    // Store message length...
    $message_length = ($mode == 'post') ? utf8_strlen($this->message) : utf8_strlen(preg_replace('#\[\/?[a-z\*\+\-]+(=[\S]+)?\]#ius', ' ', $this->message));

    // Maximum message length check. 0 disables this check completely.
    if ((int) $config['max_' . $mode . '_chars'] > 0 && $message_length > (int) $config['max_' . $mode . '_chars'])
    {
    $this->warn_msg[] = sprintf($user->lang['TOO_MANY_CHARS_' . strtoupper($mode)], $message_length, (int) $config['max_' . $mode . '_chars']);
    return (!$update_this_message) ? $return_message : $this->warn_msg;
    }

    // Minimum message length check for post only
    if ($mode === 'post')
    {
    if (!$message_length || $message_length < (int) $config['min_post_chars'])
    {
    $this->warn_msg[] = (!$message_length) ? $user->lang['TOO_FEW_CHARS'] : sprintf($user->lang['TOO_FEW_CHARS_LIMIT'], $message_length, (int) $config['min_post_chars']);
    return (!$update_this_message) ? $return_message : $this->warn_msg;
    }
    }

    // Prepare BBcode (just prepares some tags for better parsing)
    if ($allow_bbcode && strpos($this->message, '[') !== false)
    {
    $this->bbcode_init();
    $disallow = array('img', 'flash', 'quote', 'url');
    foreach ($disallow as $bool)
    {
    if (!${'allow_' . $bool . '_bbcode'})
    {
    $this->bbcodes[$bool]['disabled'] = true;
    }
    }

    $this->prepare_bbcodes();
    }

    // Parse smilies
    if ($allow_smilies)
    {
    $this->smilies($config['max_' . $mode . '_smilies']);
    }

    $num_urls = 0;

    // Parse BBCode
    if ($allow_bbcode && strpos($this->message, '[') !== false)
    {
    $this->parse_bbcode();
    $num_urls += $this->parsed_items['url'];
    }

    // Parse URL's
    if ($allow_magic_url)
    {
    $this->magic_url(generate_board_url());

    if ($config['max_' . $mode . '_urls'])
    {
    $num_urls += preg_match_all('#\<!-- ([lmwe]) --\>.*?\<!-- \1 --\>#', $this->message, $matches);
    }
    }

    // Check for "empty" message. We do not check here for maximum length, because bbcode, smilies, etc. can add to the length.
    // The maximum length check happened before any parsings.
    if ($mode === 'post' && utf8_clean_string($this->message) === '')
    {
    $this->warn_msg[] = $user->lang['TOO_FEW_CHARS'];
    return (!$update_this_message) ? $return_message : $this->warn_msg;
    }

    // Check number of links
    if ($config['max_' . $mode . '_urls'] && $num_urls > $config['max_' . $mode . '_urls'])
    {
    $this->warn_msg[] = sprintf($user->lang['TOO_MANY_URLS'], $config['max_' . $mode . '_urls']);
    return (!$update_this_message) ? $return_message : $this->warn_msg;
    }

    if (!$update_this_message)
    {
    unset($this->message);
    $this->message = $tmp_message;
    return $return_message;
    }

    $this->message_status = 'parsed';
    return false;
    }

    /**
    * Formatting text for display
    */
    function format_display($allow_bbcode, $allow_magic_url, $allow_smilies, $update_this_message = true)
    {
    // If false, then the parsed message get returned but internal message not processed.
    if (!$update_this_message)
    {
    $tmp_message = $this->message;
    $return_message = &$this->message;
    }

    if ($this->message_status == 'plain')
    {
    // Force updating message - of course.
    $this->parse($allow_bbcode, $allow_magic_url, $allow_smilies, $this->allow_img_bbcode, $this->allow_flash_bbcode, $this->allow_quote_bbcode, $this->allow_url_bbcode, true);
    }

    // Replace naughty words such as farty pants
    $this->message = censor_text($this->message);

    // Parse BBcode
    if ($allow_bbcode)
    {
    $this->bbcode_cache_init();

    // We are giving those parameters to be able to use the bbcode class on its own
    $this->bbcode_second_pass($this->message, $this->bbcode_uid);
    }

    $this->message = bbcode_nl2br($this->message);
    $this->message = smiley_text($this->message, !$allow_smilies);

    if (!$update_this_message)
    {
    unset($this->message);
    $this->message = $tmp_message;
    return $return_message;
    }

    $this->message_status = 'display';
    return false;
    }

    /**
    * Decode message to be placed back into form box
    */
    function decode_message($custom_bbcode_uid = '', $update_this_message = true)
    {
    // If false, then the parsed message get returned but internal message not processed.
    if (!$update_this_message)
    {
    $tmp_message = $this->message;
    $return_message = &$this->message;
    }

    ($custom_bbcode_uid) ? decode_message($this->message, $custom_bbcode_uid) : decode_message($this->message, $this->bbcode_uid);

    if (!$update_this_message)
    {
    unset($this->message);
    $this->message = $tmp_message;
    return $return_message;
    }

    $this->message_status = 'plain';
    return false;
    }

    /**
    * Replace magic urls of form http://xxx.xxx., www.xxx. and xxx@xxx.xxx.
    * Cuts down displayed size of link if over 50 chars, turns absolute links
    * into relative versions when the server/script path matches the link
    */
    function magic_url($server_url)
    {
    // We use the global make_clickable function
    $this->message = make_clickable($this->message, $server_url);
    }

    /**
    * Parse Smilies
    */
    function smilies($max_smilies = 0)
    {
    global $db, $user;
    static $match;
    static $replace;

    // See if the static arrays have already been filled on an earlier invocation
    if (!is_array($match))
    {
    $match = $replace = array();

    // NOTE: obtain_* function? chaching the table contents?

    // For now setting the ttl to 10 minutes
    switch ($db->sql_layer)
    {
    case 'mssql':
    case 'mssql_odbc':
    $sql = 'SELECT *
    FROM ' . SMILIES_TABLE . '
    ORDER BY LEN(code) DESC';
    break;

    case 'firebird':
    $sql = 'SELECT *
    FROM ' . SMILIES_TABLE . '
    ORDER BY CHAR_LENGTH(code) DESC';
    break;

    // LENGTH supported by MySQL, IBM DB2, Oracle and Access for sure...
    default:
    $sql = 'SELECT *
    FROM ' . SMILIES_TABLE . '
    ORDER BY LENGTH(code) DESC';
    break;
    }
    $result = $db->sql_query($sql, 600);

    while ($row = $db->sql_fetchrow($result))
    {
    if (empty($row['code']))
    {
    continue;
    }

    // (assertion)
    $match[] = preg_quote($row['code'], '#');
    $replace[] = '<!-- s' . $row['code'] . ' --><img src="{SMILIES_PATH}/' . $row['smiley_url'] . '" alt="' . $row['code'] . '" title="' . $row['emotion'] . '" /><!-- s' . $row['code'] . ' -->';
    }
    $db->sql_freeresult($result);
    }

    if (sizeof($match))
    {
    if ($max_smilies)
    {
    $num_matches = preg_match_all('#(?<=^|[\n .])(?:' . implode('|', $match) . ')(?![^<>]*>)#', $this->message, $matches);
    unset($matches);

    if ($num_matches !== false && $num_matches > $max_smilies)
    {
    $this->warn_msg[] = sprintf($user->lang['TOO_MANY_SMILIES'], $max_smilies);
    return;
    }
    }

    // Make sure the delimiter # is added in front and at the end of every element within $match
    $this->message = trim(preg_replace(explode(chr(0), '#(?<=^|[\n .])' . implode('(?![^<>]*>)#' . chr(0) . '#(?<=^|[\n .])', $match) . '(?![^<>]*>)#'), $replace, $this->message));
    }
    }

    /**
    * Parse Attachments
    */
    function parse_attachments($form_name, $mode, $forum_id, $submit, $preview, $refresh, $is_message = false)
    {
    global $config, $auth, $user, $phpbb_root_path, $phpEx, $db;

    $error = array();

    $num_attachments = sizeof($this->attachment_data);
    $this->filename_data['filecomment'] = utf8_normalize_nfc(request_var('filecomment', '', true));
    $upload_file = (isset($_FILES[$form_name]) && $_FILES[$form_name]['name'] != 'none' && trim($_FILES[$form_name]['name'])) ? true : false;

    $add_file = (isset($_POST['add_file'])) ? true : false;
    $delete_file = (isset($_POST['delete_file'])) ? true : false;

    // First of all adjust comments if changed
    $actual_comment_list = utf8_normalize_nfc(request_var('comment_list', array(''), true));

    foreach ($actual_comment_list as $comment_key => $comment)
    {
    if (!isset($this->attachment_data[$comment_key]))
    {
    continue;
    }

    if ($this->attachment_data[$comment_key]['attach_comment'] != $actual_comment_list[$comment_key])
    {
    $this->attachment_data[$comment_key]['attach_comment'] = $actual_comment_list[$comment_key];
    }
    }

    $cfg = array();
    $cfg['max_attachments'] = ($is_message) ? $config['max_attachments_pm'] : $config['max_attachments'];
    $forum_id = ($is_message) ? 0 : $forum_id;

    if ($submit && in_array($mode, array('post', 'reply', 'quote', 'edit')) && $upload_file)
    {
    if ($num_attachments < $cfg['max_attachments'] || $auth->acl_get('a_') || $auth->acl_get('m_', $forum_id))
    {
    $filedata = upload_attachment($form_name, $forum_id, false, '', $is_message);
    $error = $filedata['error'];

    if ($filedata['post_attach'] && !sizeof($error))
    {
    $sql_ary = array(
    'physical_filename' => $filedata['physical_filename'],
    'attach_comment' => $this->filename_data['filecomment'],
    'real_filename' => $filedata['real_filename'],
    'extension' => $filedata['extension'],
    'mimetype' => $filedata['mimetype'],
    'filesize' => $filedata['filesize'],
    'filetime' => $filedata['filetime'],
    'thumbnail' => $filedata['thumbnail'],
    'is_orphan' => 1,
    'in_message' => ($is_message) ? 1 : 0,
    'poster_id' => $user->data['user_id'],
    );

    $db->sql_query('INSERT INTO ' . ATTACHMENTS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));

    $new_entry = array(
    'attach_id' => $db->sql_nextid(),
    'is_orphan' => 1,
    'real_filename' => $filedata['real_filename'],
    'attach_comment'=> $this->filename_data['filecomment'],
    );

    $this->attachment_data = array_merge(array(0 => $new_entry), $this->attachment_data);
    $this->message = preg_replace('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#e', "'[attachment='.(\\1 + 1).']\\2[/attachment]'", $this->message);

    $this->filename_data['filecomment'] = '';

    // This Variable is set to false here, because Attachments are entered into the
    // Database in two modes, one if the id_list is 0 and the second one if post_attach is true
    // Since post_attach is automatically switched to true if an Attachment got added to the filesystem,
    // but we are assigning an id of 0 here, we have to reset the post_attach variable to false.
    //
    // This is very relevant, because it could happen that the post got not submitted, but we do not
    // know this circumstance here. We could be at the posting page or we could be redirected to the entered
    // post. :)
    $filedata['post_attach'] = false;
    }
    }
    else
    {
    $error[] = sprintf($user->lang['TOO_MANY_ATTACHMENTS'], $cfg['max_attachments']);
    }
    }

    if ($preview || $refresh || sizeof($error))
    {
    // Perform actions on temporary attachments
    if ($delete_file)
    {
    include_once($phpbb_root_path . 'includes/functions_admin.' . $phpEx);

    $index = array_keys(request_var('delete_file', array(0 => 0)));
    $index = (!empty($index)) ? $index[0] : false;

    if ($index !== false && !empty($this->attachment_data[$index]))
    {
    // delete selected attachment
    if ($this->attachment_data[$index]['is_orphan'])
    {
    $sql = 'SELECT attach_id, physical_filename, thumbnail
    FROM ' . ATTACHMENTS_TABLE . '
    WHERE attach_id = ' . (int) $this->attachment_data[$index]['attach_id'] . '
    AND is_orphan = 1
    AND poster_id = ' . $user->data['user_id'];
    $result = $db->sql_query($sql);
    $row = $db->sql_fetchrow($result);
    $db->sql_freeresult($result);

    if ($row)
    {
    phpbb_unlink($row['physical_filename'], 'file');

    if ($row['thumbnail'])
    {
    phpbb_unlink($row['physical_filename'], 'thumbnail');
    }

    $db->sql_query('DELETE FROM ' . ATTACHMENTS_TABLE . ' WHERE attach_id = ' . (int) $this->attachment_data[$index]['attach_id']);
    }
    }
    else
    {
    delete_attachments('attach', array(intval($this->attachment_data[$index]['attach_id'])));
    }

    unset($this->attachment_data[$index]);
    $this->message = preg_replace('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#e', "(\\1 == \$index) ? '' : ((\\1 > \$index) ? '[attachment=' . (\\1 - 1) . ']\\2[/attachment]' : '\\0')", $this->message);

    // Reindex Array
    $this->attachment_data = array_values($this->attachment_data);
    }
    }
    else if (($add_file || $preview) && $upload_file)
    {
    if ($num_attachments < $cfg['max_attachments'] || $auth->acl_gets('m_', 'a_', $forum_id))
    {
    $filedata = upload_attachment($form_name, $forum_id, false, '', $is_message);
    $error = array_merge($error, $filedata['error']);

    if (!sizeof($error))
    {
    $sql_ary = array(
    'physical_filename' => $filedata['physical_filename'],
    'attach_comment' => $this->filename_data['filecomment'],
    'real_filename' => $filedata['real_filename'],
    'extension' => $filedata['extension'],
    'mimetype' => $filedata['mimetype'],
    'filesize' => $filedata['filesize'],
    'filetime' => $filedata['filetime'],
    'thumbnail' => $filedata['thumbnail'],
    'is_orphan' => 1,
    'in_message' => ($is_message) ? 1 : 0,
    'poster_id' => $user->data['user_id'],
    );

    $db->sql_query('INSERT INTO ' . ATTACHMENTS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary));

    $new_entry = array(
    'attach_id' => $db->sql_nextid(),
    'is_orphan' => 1,
    'real_filename' => $filedata['real_filename'],
    'attach_comment'=> $this->filename_data['filecomment'],
    );

    $this->attachment_data = array_merge(array(0 => $new_entry), $this->attachment_data);
    $this->message = preg_replace('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#e', "'[attachment='.(\\1 + 1).']\\2[/attachment]'", $this->message);
    $this->filename_data['filecomment'] = '';
    }
    }
    else
    {
    $error[] = sprintf($user->lang['TOO_MANY_ATTACHMENTS'], $cfg['max_attachments']);
    }
    }
    }

    foreach ($error as $error_msg)
    {
    $this->warn_msg[] = $error_msg;
    }
    }

    /**
    * Get Attachment Data
    */
    function get_submitted_attachment_data($check_user_id = false)
    {
    global $user, $db, $phpbb_root_path, $phpEx, $config;

    $this->filename_data['filecomment'] = utf8_normalize_nfc(request_var('filecomment', '', true));
    $attachment_data = (isset($_POST['attachment_data'])) ? $_POST['attachment_data'] : array();
    $this->attachment_data = array();

    $check_user_id = ($check_user_id === false) ? $user->data['user_id'] : $check_user_id;

    if (!sizeof($attachment_data))
    {
    return;
    }

    $not_orphan = $orphan = array();

    foreach ($attachment_data as $pos => $var_ary)
    {
    if ($var_ary['is_orphan'])
    {
    $orphan[(int) $var_ary['attach_id']] = $pos;
    }
    else
    {
    $not_orphan[(int) $var_ary['attach_id']] = $pos;
    }
    }

    // Regenerate already posted attachments
    if (sizeof($not_orphan))
    {
    // Get the attachment data, based on the poster id...
    $sql = 'SELECT attach_id, is_orphan, real_filename, attach_comment
    FROM ' . ATTACHMENTS_TABLE . '
    WHERE ' . $db->sql_in_set('attach_id', array_keys($not_orphan)) . '
    AND poster_id = ' . $check_user_id;
    $result = $db->sql_query($sql);

    while ($row = $db->sql_fetchrow($result))
    {
    $pos = $not_orphan[$row['attach_id']];
    $this->attachment_data[$pos] = $row;
    set_var($this->attachment_data[$pos]['attach_comment'], $_POST['attachment_data'][$pos]['attach_comment'], 'string', true);

    unset($not_orphan[$row['attach_id']]);
    }
    $db->sql_freeresult($result);
    }

    if (sizeof($not_orphan))
    {
    trigger_error('NO_ACCESS_ATTACHMENT', E_USER_ERROR);
    }

    // Regenerate newly uploaded attachments
    if (sizeof($orphan))
    {
    $sql = 'SELECT attach_id, is_orphan, real_filename, attach_comment
    FROM ' . ATTACHMENTS_TABLE . '
    WHERE ' . $db->sql_in_set('attach_id', array_keys($orphan)) . '
    AND poster_id = ' . $user->data['user_id'] . '
    AND is_orphan = 1';
    $result = $db->sql_query($sql);

    while ($row = $db->sql_fetchrow($result))
    {
    $pos = $orphan[$row['attach_id']];
    $this->attachment_data[$pos] = $row;
    set_var($this->attachment_data[$pos]['attach_comment'], $_POST['attachment_data'][$pos]['attach_comment'], 'string', true);

    unset($orphan[$row['attach_id']]);
    }
    $db->sql_freeresult($result);
    }

    if (sizeof($orphan))
    {
    trigger_error('NO_ACCESS_ATTACHMENT', E_USER_ERROR);
    }

    ksort($this->attachment_data);
    }

    /**
    * Parse Poll
    */
    function parse_poll(&$poll)
    {
    global $auth, $user, $config;

    $poll_max_options = $poll['poll_max_options'];

    // Parse Poll Option text ;)
    $tmp_message = $this->message;
    $this->message = $poll['poll_option_text'];
    $bbcode_bitfield = $this->bbcode_bitfield;

    $poll['poll_option_text'] = $this->parse($poll['enable_bbcode'], ($config['allow_post_links']) ? $poll['enable_urls'] : false, $poll['enable_smilies'], $poll['img_status'], false, false, $config['allow_post_links'], false, 'poll');

    $bbcode_bitfield = base64_encode(base64_decode($bbcode_bitfield) | base64_decode($this->bbcode_bitfield));
    $this->message = $tmp_message;

    // Parse Poll Title
    $tmp_message = $this->message;
    $this->message = $poll['poll_title'];
    $this->bbcode_bitfield = $bbcode_bitfield;

    $poll['poll_options'] = explode("\n", trim($poll['poll_option_text']));
    $poll['poll_options_size'] = sizeof($poll['poll_options']);

    if (!$poll['poll_title'] && $poll['poll_options_size'])
    {
    $this->warn_msg[] = $user->lang['NO_POLL_TITLE'];
    }
    else
    {
    if (utf8_strlen(preg_replace('#\[\/?[a-z\*\+\-]+(=[\S]+)?\]#ius', ' ', $this->message)) > 100)
    {
    $this->warn_msg[] = $user->lang['POLL_TITLE_TOO_LONG'];
    }
    $poll['poll_title'] = $this->parse($poll['enable_bbcode'], ($config['allow_post_links']) ? $poll['enable_urls'] : false, $poll['enable_smilies'], $poll['img_status'], false, false, $config['allow_post_links'], false, 'poll');
    if (strlen($poll['poll_title']) > 255)
    {
    $this->warn_msg[] = $user->lang['POLL_TITLE_COMP_TOO_LONG'];
    }
    }

    $this->bbcode_bitfield = base64_encode(base64_decode($bbcode_bitfield) | base64_decode($this->bbcode_bitfield));
    $this->message = $tmp_message;
    unset($tmp_message);

    if (sizeof($poll['poll_options']) == 1)
    {
    $this->warn_msg[] = $user->lang['TOO_FEW_POLL_OPTIONS'];
    }
    else if ($poll['poll_options_size'] > (int) $config['max_poll_options'])
    {
    $this->warn_msg[] = $user->lang['TOO_MANY_POLL_OPTIONS'];
    }
    else if ($poll_max_options > $poll['poll_options_size'])
    {
    $this->warn_msg[] = $user->lang['TOO_MANY_USER_OPTIONS'];
    }

    $poll['poll_max_options'] = ($poll['poll_max_options'] < 1) ? 1 : (($poll['poll_max_options'] > $config['max_poll_options']) ? $config['max_poll_options'] : $poll['poll_max_options']);
    }
    }

    ?>
    [/code]

Re: Icone citar não aparece nos tópicos

Enviado: 13 Fev 2012, 13:17
por robra
Parece que seu arquivo foi editado correto.
Procure pelo texto .quote-icon dentro de todos os arquivos .css da pasta styles/prosilver/theme e aqueles que o tiver, poste todo o conteúdo destes arquivos.

Abraço. Imagem

Re: Icone citar não aparece nos tópicos

Enviado: 13 Fev 2012, 17:59
por tucao
robra, achei esses dois:

buttons.css

Código: Selecionar todos

/* Button Styles
---------------------------------------- */

/* Rollover buttons
   Based on: http://wellstyled.com/css-nopreload-rollovers.html
----------------------------------------*/
.buttons {
	float: left;
	width: auto;
	height: auto;
}

/* Rollover state */
.buttons div {
	float: left;
	margin: 0 5px 0 0;
	background-position: 0 100%;
}

/* Rolloff state */
.buttons div a {
	display: block;
	width: 100%;
	height: 100%;
	background-position: 0 0;
	position: relative;
	overflow: hidden;
}

/* Hide <a> text and hide off-state image when rolling over (prevents flicker in IE) */
/*.buttons div span		{ display: none; }*/
/*.buttons div a:hover	{ background-image: none; }*/
.buttons div span			{ position: absolute; width: 100%; height: 100%; cursor: pointer;}
.buttons div a:hover span	{ background-position: 0 100%; }

/* Big button images */
.reply-icon span	{ background: transparent none 0 0 no-repeat; }
.post-icon span		{ background: transparent none 0 0 no-repeat; }
.locked-icon span	{ background: transparent none 0 0 no-repeat; }
.pmreply-icon span	{ background: none 0 0 no-repeat; }
.newpm-icon span 	{ background: none 0 0 no-repeat; }
.forwardpm-icon span 	{ background: none 0 0 no-repeat; }

/* Set big button dimensions */
.buttons div.reply-icon		{ width: {IMG_BUTTON_TOPIC_REPLY_WIDTH}px; height: {IMG_BUTTON_TOPIC_REPLY_HEIGHT}px; }
.buttons div.post-icon		{ width: {IMG_BUTTON_TOPIC_NEW_WIDTH}px; height: {IMG_BUTTON_TOPIC_NEW_HEIGHT}px; }
.buttons div.locked-icon	{ width: {IMG_BUTTON_TOPIC_LOCKED_WIDTH}px; height: {IMG_BUTTON_TOPIC_LOCKED_HEIGHT}px; }
.buttons div.pmreply-icon	{ width: {IMG_BUTTON_PM_REPLY_WIDTH}px; height: {IMG_BUTTON_PM_REPLY_HEIGHT}px; }
.buttons div.newpm-icon		{ width: {IMG_BUTTON_PM_NEW_WIDTH}px; height: {IMG_BUTTON_PM_NEW_HEIGHT}px; }
.buttons div.forwardpm-icon	{ width: {IMG_BUTTON_PM_FORWARD_WIDTH}px; height: {IMG_BUTTON_PM_FORWARD_HEIGHT}px; }

/* Sub-header (navigation bar)
--------------------------------------------- */
a.print, a.sendemail, a.fontsize {
	display: block;
	overflow: hidden;
	height: 18px;
	text-indent: -5000px;
	text-align: left;
	background-repeat: no-repeat;
}

a.print {
	background-image: none;
	width: 22px;
}

a.sendemail {
	background-image: none;
	width: 22px;
}

a.fontsize {
	background-image: none;
	background-position: 0 -1px;
	width: 29px;
}

a.fontsize:hover {
	background-position: 0 -20px;
	text-decoration: none;
}

/* Icon images
---------------------------------------- */
.sitehome, .icon-faq, .icon-chat, .icon-members, .icon-home, .icon-ucp, .icon-register, .icon-logout,
.icon-bookmark, .icon-bump, .icon-subscribe, .icon-unsubscribe, .icon-pages, .icon-search {
	background-position: 0 50%;
	background-repeat: no-repeat;
	background-image: none;
	padding: 1px 0 0 17px;
}

/* Poster profile icons
----------------------------------------*/
ul.profile-icons {
	padding-top: 10px;
	list-style: none;
}

/* Rollover state */
ul.profile-icons li {
	float: left;
	margin: 0 6px 3px 0;
	background-position: 0 100%;
}

/* Rolloff state */
ul.profile-icons li a {
	display: block;
	width: 100%;
	height: 100%;
	background-position: 0 0;
}

/* Hide <a> text and hide off-state image when rolling over (prevents flicker in IE) */
ul.profile-icons li span { display:none; }
ul.profile-icons li a:hover { background: none; }

/* Positioning of moderator icons */
.postbody ul.profile-icons {
	float: right;
	width: auto;
	padding: 0;
}

.postbody ul.profile-icons li {
	margin: 0 3px;
}

/* Profile & navigation icons */
.email-icon, .email-icon a		{ background: none top left no-repeat; }
.aim-icon, .aim-icon a			{ background: none top left no-repeat; }
.yahoo-icon, .yahoo-icon a		{ background: none top left no-repeat; }
.web-icon, .web-icon a			{ background: none top left no-repeat; }
.msnm-icon, .msnm-icon a			{ background: none top left no-repeat; }
.icq-icon, .icq-icon a			{ background: none top left no-repeat; }
.jabber-icon, .jabber-icon a		{ background: none top left no-repeat; }
.pm-icon, .pm-icon a				{ background: none top left no-repeat; }
.quote-icon, .quote-icon a		{ background: none top left no-repeat; }

/* Moderator icons */
.report-icon, .report-icon a		{ background: none top left no-repeat; }
.warn-icon, .warn-icon a			{ background: none top left no-repeat; }
.edit-icon, .edit-icon a			{ background: none top left no-repeat; }
.delete-icon, .delete-icon a		{ background: none top left no-repeat; }
.info-icon, .info-icon a			{ background: none top left no-repeat; }

/* Set profile icon dimensions */
ul.profile-icons li.email-icon		{ width: {IMG_ICON_CONTACT_EMAIL_WIDTH}px; height: {IMG_ICON_CONTACT_EMAIL_HEIGHT}px; }
ul.profile-icons li.aim-icon	{ width: {IMG_ICON_CONTACT_AIM_WIDTH}px; height: {IMG_ICON_CONTACT_AIM_HEIGHT}px; }
ul.profile-icons li.yahoo-icon	{ width: {IMG_ICON_CONTACT_YAHOO_WIDTH}px; height: {IMG_ICON_CONTACT_YAHOO_HEIGHT}px; }
ul.profile-icons li.web-icon	{ width: {IMG_ICON_CONTACT_WWW_WIDTH}px; height: {IMG_ICON_CONTACT_WWW_HEIGHT}px; }
ul.profile-icons li.msnm-icon	{ width: {IMG_ICON_CONTACT_MSNM_WIDTH}px; height: {IMG_ICON_CONTACT_MSNM_HEIGHT}px; }
ul.profile-icons li.icq-icon	{ width: {IMG_ICON_CONTACT_ICQ_WIDTH}px; height: {IMG_ICON_CONTACT_ICQ_HEIGHT}px; }
ul.profile-icons li.jabber-icon	{ width: {IMG_ICON_CONTACT_JABBER_WIDTH}px; height: {IMG_ICON_CONTACT_JABBER_HEIGHT}px; }
ul.profile-icons li.pm-icon		{ width: {IMG_ICON_CONTACT_PM_WIDTH}px; height: {IMG_ICON_CONTACT_PM_HEIGHT}px; }
ul.profile-icons li.quote-icon	{ width: {IMG_ICON_POST_QUOTE_WIDTH}px; height: {IMG_ICON_POST_QUOTE_HEIGHT}px; }
ul.profile-icons li.report-icon	{ width: {IMG_ICON_POST_REPORT_WIDTH}px; height: {IMG_ICON_POST_REPORT_HEIGHT}px; }
ul.profile-icons li.edit-icon	{ width: {IMG_ICON_POST_EDIT_WIDTH}px; height: {IMG_ICON_POST_EDIT_HEIGHT}px; }
ul.profile-icons li.delete-icon	{ width: {IMG_ICON_POST_DELETE_WIDTH}px; height: {IMG_ICON_POST_DELETE_HEIGHT}px; }
ul.profile-icons li.info-icon	{ width: {IMG_ICON_POST_INFO_WIDTH}px; height: {IMG_ICON_POST_INFO_HEIGHT}px; }
ul.profile-icons li.warn-icon	{ width: {IMG_ICON_USER_WARN_WIDTH}px; height: {IMG_ICON_USER_WARN_HEIGHT}px; }

/* Fix profile icon default margins */
ul.profile-icons li.edit-icon	{ margin: 0 0 0 3px; }
ul.profile-icons li.quote-icon	{ margin: 0 0 0 10px; }
ul.profile-icons li.info-icon, ul.profile-icons li.report-icon	{ margin: 0 3px 0 0; }
colours.css

Código: Selecionar todos

/*  	
--------------------------------------------------------------
Colours and backgrounds for common.css
-------------------------------------------------------------- */

html, body {
	color: #536482;
	background-color: #FFFFFF;
}

h1 {
	color: #FFFFFF;
}

h2 {
	color: #28313F;
}

h3 {
	border-bottom-color: #CCCCCC;
	color: #115098;
}

hr {
	border-color: #FFFFFF;
	border-top-color: #CCCCCC;
}

hr.dashed {
	border-top-color: #CCCCCC;
}

/* Search box
--------------------------------------------- */

#search-box {
	color: #FFFFFF;
}

#search-box #keywords {
	background-color: #FFF;
}

#search-box input {
	border-color: #0075B0;
}

/* Round cornered boxes and backgrounds
---------------------------------------- */
.headerbar {
	background-color: #12A3EB;
	background-image: url("{T_THEME_PATH}/images/bg_header.gif");
	color: #FFFFFF;
}

.navbar {
	background-color: #cadceb;
}

.forabg {
	background-color: #0076b1;
	background-image: url("{T_THEME_PATH}/images/bg_list.gif");
}

.forumbg {
	background-color: #12A3EB;
	background-image: url("{T_THEME_PATH}/images/bg_header.gif");
}

.panel {
	background-color: #ECF1F3;
	color: #28313F;
}

.post:target .content {
	color: #000000;
}

.post:target h3 a {
	color: #000000;
}

.bg1	{ background-color: #ECF3F7; }
.bg2	{ background-color: #e1ebf2;  }
.bg3	{ background-color: #cadceb; }

.ucprowbg {
	background-color: #DCDEE2;
}

.fieldsbg {
	background-color: #E7E8EA;
}

span.corners-top {
	background-image: url("{T_THEME_PATH}/images/corners_left.png");
}

span.corners-top span {
	background-image: url("{T_THEME_PATH}/images/corners_right.png");
}

span.corners-bottom {
	background-image: url("{T_THEME_PATH}/images/corners_left.png");
}

span.corners-bottom span {
	background-image: url("{T_THEME_PATH}/images/corners_right.png");
}

/* Horizontal lists
----------------------------------------*/

ul.navlinks {
	border-bottom-color: #FFFFFF;
}

/* Table styles
----------------------------------------*/
table.table1 thead th {
	color: #FFFFFF;
}

table.table1 tbody tr {
	border-color: #BFC1CF;
}

table.table1 tbody tr:hover, table.table1 tbody tr.hover {
	background-color: #CFE1F6;
	color: #000;
}

table.table1 td {
	color: #536482;
}

table.table1 tbody td {
	border-top-color: #FAFAFA;
}

table.table1 tbody th {
	border-bottom-color: #000000;
	color: #333333;
	background-color: #FFFFFF;
}

table.info tbody th {
	color: #000000;
}

/* Misc layout styles
---------------------------------------- */
dl.details dt {
	color: #000000;
}

dl.details dd {
	color: #536482;
}

.sep {
	color: #1198D9;
}

/* Pagination
---------------------------------------- */

.pagination span strong {
	color: #FFFFFF;
	background-color: #4692BF;
	border-color: #4692BF;
}

.pagination span a, .pagination span a:link, .pagination span a:visited {
	color: #5C758C;
	background-color: #ECEDEE;
	border-color: #B4BAC0;
}

.pagination span a:hover {
	border-color: #368AD2;
	background-color: #368AD2;
	color: #FFF;
}

.pagination span a:active {
	color: #5C758C;
	background-color: #ECEDEE;
	border-color: #B4BAC0;
}

/* Pagination in viewforum for multipage topics */
.row .pagination {
	background-image: url("{T_THEME_PATH}/images/icon_pages.gif");
}

.row .pagination span a, li.pagination span a {
	background-color: #FFFFFF;
}

.row .pagination span a:hover, li.pagination span a:hover {
	background-color: #368AD2;
}

/* Miscellaneous styles
---------------------------------------- */

.copyright {
	color: #555555;
}

.error {
	color: #BC2A4D;
}

.reported {
	background-color: #F7ECEF;
}

li.reported:hover {
	background-color: #ECD5D8 !important;
}
.sticky, .announce {
	/* you can add a background for stickies and announcements*/
}

div.rules {
	background-color: #ECD5D8;
	color: #BC2A4D;
}

p.rules {
	background-color: #ECD5D8;
	background-image: none;
}

/*  	
--------------------------------------------------------------
Colours and backgrounds for links.css
-------------------------------------------------------------- */

a:link	{ color: #105289; }
a:visited	{ color: #105289; }
a:hover	{ color: #D31141; }
a:active	{ color: #368AD2; }

/* Links on gradient backgrounds */
#search-box a:link, .navbg a:link, .forumbg .header a:link, .forabg .header a:link, th a:link {
	color: #FFFFFF;
}

#search-box a:visited, .navbg a:visited, .forumbg .header a:visited, .forabg .header a:visited, th a:visited {
	color: #FFFFFF;
}

#search-box a:hover, .navbg a:hover, .forumbg .header a:hover, .forabg .header a:hover, th a:hover {
	color: #A8D8FF;
}

#search-box a:active, .navbg a:active, .forumbg .header a:active, .forabg .header a:active, th a:active {
	color: #C8E6FF;
}

/* Links for forum/topic lists */
a.forumtitle {
	color: #105289;
}

/* a.forumtitle:visited { color: #105289; } */

a.forumtitle:hover {
	color: #BC2A4D;
}

a.forumtitle:active {
	color: #105289;
}

a.topictitle {
	color: #105289;
}

/* a.topictitle:visited { color: #368AD2; } */

a.topictitle:hover {
	color: #BC2A4D;
}

a.topictitle:active {
	color: #105289;
}

/* Post body links */
.postlink {
	color: #368AD2;
	border-bottom-color: #368AD2;
}

.postlink:visited {
	color: #5D8FBD;
	border-bottom-color: #5D8FBD;
}

.postlink:active {
	color: #368AD2;
}

.postlink:hover {
	background-color: #D0E4F6;
	color: #0D4473;
}

.signature a, .signature a:visited, .signature a:hover, .signature a:active {
	background-color: transparent;
}

/* Profile links */
.postprofile a:link, .postprofile a:visited, .postprofile dt.author a {
	color: #105289;
}

.postprofile a:hover, .postprofile dt.author a:hover {
	color: #D31141;
}

.postprofile a:active {
	color: #105289;
}

/* Profile searchresults */	
.search .postprofile a {
	color: #105289;
}

.search .postprofile a:hover {
	color: #D31141;
}

/* Back to top of page */
a.top {
	background-image: url("{IMG_ICON_BACK_TOP_SRC}");
}

a.top2 {
	background-image: url("{IMG_ICON_BACK_TOP_SRC}");
}

/* Arrow links  */
a.up		{ background-image: url("{T_THEME_PATH}/images/arrow_up.gif") }
a.down		{ background-image: url("{T_THEME_PATH}/images/arrow_down.gif") }
a.left		{ background-image: url("{T_THEME_PATH}/images/arrow_left.gif") }
a.right		{ background-image: url("{T_THEME_PATH}/images/arrow_right.gif") }

a.up:hover {
	background-color: transparent;
}

a.left:hover {
	color: #368AD2;
}

a.right:hover {
	color: #368AD2;
}


/*  	
--------------------------------------------------------------
Colours and backgrounds for content.css
-------------------------------------------------------------- */

ul.forums {
	background-color: #eef5f9;
	background-image: url("{T_THEME_PATH}/images/gradient.gif");
}

ul.topiclist li {
	color: #4C5D77;
}

ul.topiclist dd {
	border-left-color: #FFFFFF;
}

.rtl ul.topiclist dd {
	border-right-color: #fff;
	border-left-color: transparent;
}

ul.topiclist li.row dt a.subforum.read {
	background-image: url("{IMG_SUBFORUM_READ_SRC}");
}

ul.topiclist li.row dt a.subforum.unread {
	background-image: url("{IMG_SUBFORUM_UNREAD_SRC}");
}

li.row {
	border-top-color:  #FFFFFF;
	border-bottom-color: #00608F;
}

li.row strong {
	color: #000000;
}

li.row:hover {
	background-color: #F6F4D0;
}

li.row:hover dd {
	border-left-color: #CCCCCC;
}

.rtl li.row:hover dd {
	border-right-color: #CCCCCC;
	border-left-color: transparent;
}

li.header dt, li.header dd {
	color: #FFFFFF;
}

/* Forum list column styles */
ul.topiclist dd.searchextra {
	color: #333333;
}

/* Post body styles
----------------------------------------*/
.postbody {
	color: #333333;
}

/* Content container styles
----------------------------------------*/
.content {
	color: #333333;
}

.content h2, .panel h2 {
	color: #115098;
	border-bottom-color:  #CCCCCC;
}

dl.faq dt {
	color: #333333;
}

.posthilit {
	background-color: #F3BFCC;
	color: #BC2A4D;
}

/* Post signature */
.signature {
	border-top-color: #CCCCCC;
}

/* Post noticies */
.notice {
	border-top-color:  #CCCCCC;
}

/* BB Code styles
----------------------------------------*/
/* Quote block */
blockquote {
	background-color: #EBEADD;
	background-image: url("{T_THEME_PATH}/images/quote.gif");
	border-color:#DBDBCE;
}

.rtl blockquote {
	background-image: url("{T_THEME_PATH}/images/quote_rtl.gif");
}

blockquote blockquote {
	/* Nested quotes */
	background-color:#EFEED9;
}

blockquote blockquote blockquote {
	/* Nested quotes */
	background-color: #EBEADD;
}

/* Hide block */
dl.hidebox {
	background-color: #FFFFFF;
	border-color: #C9D2D8;
}

dl.hidebox dt {
	border-bottom-color:  #CCCCCC;
}
/* Code block */
dl.codebox {
	background-color: #FFFFFF;
	border-color: #C9D2D8;
}

dl.codebox dt {
	border-bottom-color:  #CCCCCC;
}

dl.codebox code {
	color: #2E8B57;
}

.syntaxbg		{ color: #FFFFFF; }
.syntaxcomment	{ color: #FF8000; }
.syntaxdefault	{ color: #0000BB; }
.syntaxhtml		{ color: #000000; }
.syntaxkeyword	{ color: #007700; }
.syntaxstring	{ color: #DD0000; }

/* Attachments
----------------------------------------*/
.attachbox {
	background-color: #FFFFFF;
	border-color:  #C9D2D8;
}

.pm-message .attachbox {
	background-color: #F2F3F3;
}

.attachbox dd {
	border-top-color: #C9D2D8;
}

.attachbox p {
	color: #666666;
}

.attachbox p.stats {
	color: #666666;
}

.attach-image img {
	border-color: #999999;
}

/* Inline image thumbnails */

dl.file dd {
	color: #666666;
}

dl.thumbnail img {
	border-color: #666666;
	background-color: #FFFFFF;
}

dl.thumbnail dd {
	color: #666666;
}

dl.thumbnail dt a:hover {
	background-color: #EEEEEE;
}

dl.thumbnail dt a:hover img {
	border-color: #368AD2;
}

/* Post poll styles
----------------------------------------*/

fieldset.polls dl {
	border-top-color: #DCDEE2;
	color: #666666;
}

fieldset.polls dl.voted {
	color: #000000;
}

fieldset.polls dd div {
	color: #FFFFFF;
}

.rtl .pollbar1, .rtl .pollbar2, .rtl .pollbar3, .rtl .pollbar4, .rtl .pollbar5 {
	border-right-color: transparent;
}

.pollbar1 {
	background-color: #AA2346;
	border-bottom-color: #74162C;
	border-right-color: #74162C;
}

.rtl .pollbar1 {
	border-left-color: #74162C;
}

.pollbar2 {
	background-color: #BE1E4A;
	border-bottom-color: #8C1C38;
	border-right-color: #8C1C38;
}

.rtl .pollbar2 {
	border-left-color: #8C1C38;
}

.pollbar3 {
	background-color: #D11A4E;
	border-bottom-color: #AA2346;
	border-right-color: #AA2346;
}

.rtl .pollbar3 {
	border-left-color: #AA2346;
}

.pollbar4 {
	background-color: #E41653;
	border-bottom-color: #BE1E4A;
	border-right-color: #BE1E4A;
}

.rtl .pollbar4 {
	border-left-color: #BE1E4A;
}

.pollbar5 {
	background-color: #F81157;
	border-bottom-color: #D11A4E;
	border-right-color: #D11A4E;
}

.rtl .pollbar5 {
	border-left-color: #D11A4E;
}

/* Poster profile block
----------------------------------------*/
.postprofile {
	color: #666666;
	border-left-color: #FFFFFF;
}

.rtl .postprofile {
	border-right-color: #FFFFFF;
	border-left-color: transparent;
}

.pm .postprofile {
	border-left-color: #DDDDDD;
}

.rtl .pm .postprofile {
	border-right-color: #DDDDDD;
	border-left-color: transparent;
}

.postprofile strong {
	color: #000000;
}

.online {
	background-image: url("{IMG_ICON_USER_ONLINE_SRC}");
}

/*  	
--------------------------------------------------------------
Colours and backgrounds for buttons.css
-------------------------------------------------------------- */

/* Big button images */
.reply-icon span	{ background-image: url("{IMG_BUTTON_TOPIC_REPLY_SRC}"); }
.post-icon span		{ background-image: url("{IMG_BUTTON_TOPIC_NEW_SRC}"); }
.locked-icon span	{ background-image: url("{IMG_BUTTON_TOPIC_LOCKED_SRC}"); }
.pmreply-icon span	{ background-image: url("{IMG_BUTTON_PM_REPLY_SRC}") ;}
.newpm-icon span 	{ background-image: url("{IMG_BUTTON_PM_NEW_SRC}") ;}
.forwardpm-icon span	{ background-image: url("{IMG_BUTTON_PM_FORWARD_SRC}") ;}

a.print {
	background-image: url("{T_THEME_PATH}/images/icon_print.gif");
}

a.sendemail {
	background-image: url("{T_THEME_PATH}/images/icon_sendemail.gif");
}

a.fontsize {
	background-image: url("{T_THEME_PATH}/images/icon_fontsize.gif");
}

/* Icon images
---------------------------------------- */
.sitehome						{ background-image: url("{T_THEME_PATH}/images/icon_home.gif"); }
.icon-faq						{ background-image: url("{T_THEME_PATH}/images/icon_faq.gif"); }
.icon-chat						{ background-image: url("{T_THEME_PATH}/images/icon_123flash_chat.gif"); }
.icon-members					{ background-image: url("{T_THEME_PATH}/images/icon_members.gif"); }
.icon-home						{ background-image: url("{T_THEME_PATH}/images/icon_home.gif"); }
.icon-ucp						{ background-image: url("{T_THEME_PATH}/images/icon_ucp.gif"); }
.icon-register					{ background-image: url("{T_THEME_PATH}/images/icon_register.gif"); }
.icon-logout					{ background-image: url("{T_THEME_PATH}/images/icon_logout.gif"); }
.icon-bookmark					{ background-image: url("{T_THEME_PATH}/images/icon_bookmark.gif"); }
.icon-bump						{ background-image: url("{T_THEME_PATH}/images/icon_bump.gif"); }
.icon-subscribe					{ background-image: url("{T_THEME_PATH}/images/icon_subscribe.gif"); }
.icon-unsubscribe				{ background-image: url("{T_THEME_PATH}/images/icon_unsubscribe.gif"); }
.icon-pages						{ background-image: url("{T_THEME_PATH}/images/icon_pages.gif"); }
.icon-search					{ background-image: url("{T_THEME_PATH}/images/icon_search.gif"); }

/* Profile & navigation icons */
.email-icon, .email-icon a		{ background-image: url("{IMG_ICON_CONTACT_EMAIL_SRC}"); }
.aim-icon, .aim-icon a			{ background-image: url("{IMG_ICON_CONTACT_AIM_SRC}"); }
.yahoo-icon, .yahoo-icon a		{ background-image: url("{IMG_ICON_CONTACT_YAHOO_SRC}"); }
.web-icon, .web-icon a			{ background-image: url("{IMG_ICON_CONTACT_WWW_SRC}"); }
.msnm-icon, .msnm-icon a			{ background-image: url("{IMG_ICON_CONTACT_MSNM_SRC}"); }
.icq-icon, .icq-icon a			{ background-image: url("{IMG_ICON_CONTACT_ICQ_SRC}"); }
.jabber-icon, .jabber-icon a		{ background-image: url("{IMG_ICON_CONTACT_JABBER_SRC}"); }
.pm-icon, .pm-icon a				{ background-image: url("{IMG_ICON_CONTACT_PM_SRC}"); }
.quote-icon, .quote-icon a		{ background-image: url("{IMG_ICON_POST_QUOTE_SRC}"); }

/* Moderator icons */
.report-icon, .report-icon a		{ background-image: url("{IMG_ICON_POST_REPORT_SRC}"); }
.edit-icon, .edit-icon a			{ background-image: url("{IMG_ICON_POST_EDIT_SRC}"); }
.delete-icon, .delete-icon a		{ background-image: url("{IMG_ICON_POST_DELETE_SRC}"); }
.info-icon, .info-icon a			{ background-image: url("{IMG_ICON_POST_INFO_SRC}"); }
.warn-icon, .warn-icon a			{ background-image: url("{IMG_ICON_USER_WARN_SRC}"); } /* Need updated warn icon */

/*  	
--------------------------------------------------------------
Colours and backgrounds for cp.css
-------------------------------------------------------------- */

/* Main CP box
----------------------------------------*/

#cp-main h3, #cp-main hr, #cp-menu hr {
	border-color: #A4B3BF;
}

#cp-main .panel li.row {
	border-bottom-color: #B5C1CB;
	border-top-color: #F9F9F9;
}

ul.cplist {
	border-top-color: #B5C1CB;
}

#cp-main .panel li.header dd, #cp-main .panel li.header dt {
	color: #000000;
}

#cp-main table.table1 thead th {
	color: #333333;
	border-bottom-color: #333333;
}

#cp-main .pm-message {
	border-color: #DBDEE2;
	background-color: #FFFFFF;
}

/* CP tabbed menu
----------------------------------------*/
#tabs a {
	background-image: url("{T_THEME_PATH}/images/bg_tabs1.gif");
}

#tabs a span {
	background-image: url("{T_THEME_PATH}/images/bg_tabs2.gif");
	color: #536482;
}

#tabs a:hover span {
	color: #BC2A4D;
}

#tabs .activetab a {
	border-bottom-color: #CADCEB;
}

#tabs .activetab a span {
	color: #333333;
}

#tabs .activetab a:hover span {
	color: #000000;
}

/* Mini tabbed menu used in MCP
----------------------------------------*/
#minitabs li {
	background-color: #E1EBF2;
}

#minitabs li.activetab {
	background-color: #F9F9F9;
}

#minitabs li.activetab a, #minitabs li.activetab a:hover {
	color: #333333;
}

/* UCP navigation menu
----------------------------------------*/

/* Link styles for the sub-section links */
#navigation a {
	color: #333;
	background-color: #B2C2CF;
	background-image: url("{T_THEME_PATH}/images/bg_menu.gif");
}

.rtl #navigation a {
	background-image: url("{T_THEME_PATH}/images/bg_menu_rtl.gif");
	background-position: 0 100%;
}

#navigation a:hover {
	background-color: #aabac6;
	color: #BC2A4D;
}

#navigation #active-subsection a {
	color: #D31141;
	background-color: #F9F9F9;
	background-image: none;
}

#navigation #active-subsection a:hover {
	color: #D31141;
}

/* Preferences pane layout
----------------------------------------*/
#cp-main h2 {
	color: #333333;
}

#cp-main .panel {
	background-color: #F9F9F9;
}

#cp-main .pm {
	background-color: #FFFFFF;
}

#cp-main span.corners-top, #cp-menu span.corners-top {
	background-image: url("{T_THEME_PATH}/images/corners_left2.gif");
}

#cp-main span.corners-top span, #cp-menu span.corners-top span {
	background-image: url("{T_THEME_PATH}/images/corners_right2.gif");
}

#cp-main span.corners-bottom, #cp-menu span.corners-bottom {
	background-image: url("{T_THEME_PATH}/images/corners_left2.gif");
}

#cp-main span.corners-bottom span, #cp-menu span.corners-bottom span {
	background-image: url("{T_THEME_PATH}/images/corners_right2.gif");
}

/* Topicreview */
#cp-main .panel #topicreview span.corners-top, #cp-menu .panel #topicreview span.corners-top {
	background-image: url("{T_THEME_PATH}/images/corners_left.gif");
}

#cp-main .panel #topicreview span.corners-top span, #cp-menu .panel #topicreview span.corners-top span {
	background-image: url("{T_THEME_PATH}/images/corners_right.gif");
}

#cp-main .panel #topicreview span.corners-bottom, #cp-menu .panel #topicreview span.corners-bottom {
	background-image: url("{T_THEME_PATH}/images/corners_left.gif");
}

#cp-main .panel #topicreview span.corners-bottom span, #cp-menu .panel #topicreview span.corners-bottom span {
	background-image: url("{T_THEME_PATH}/images/corners_right.gif");
}

/* Friends list */
.cp-mini {
	background-color: #eef5f9;
}

dl.mini dt {
	color: #425067;
}

/* PM Styles
----------------------------------------*/
/* PM Message history */
.current {
	color: #000000 !important;
}

/* PM panel adjustments */
.pm-panel-header,
#cp-main .pm-message-nav {
	border-bottom-color: #A4B3BF;
}

/* PM marking colours */
.pmlist li.pm_message_reported_colour, .pm_message_reported_colour {
	border-left-color: #BC2A4D;
	border-right-color: #BC2A4D;
}

.pmlist li.pm_marked_colour, .pm_marked_colour {
	border-color: #FF6600;
}

.pmlist li.pm_replied_colour, .pm_replied_colour {
	border-color: #A9B8C2;
}

.pmlist li.pm_friend_colour, .pm_friend_colour {
	border-color: #5D8FBD;
}

.pmlist li.pm_foe_colour, .pm_foe_colour {
	border-color: #000000;
}

/* Avatar gallery */
#gallery label {
	background-color: #FFFFFF;
	border-color: #CCC;
}

#gallery label:hover {
	background-color: #EEE;
}

/*  	
--------------------------------------------------------------
Colours and backgrounds for forms.css
-------------------------------------------------------------- */

/* General form styles
----------------------------------------*/
select {
	border-color: #666666;
	background-color: #FAFAFA;
	color: #000;
}

label {
	color: #425067;
}

option.disabled-option {
	color: graytext;
}

/* Definition list layout for forms
---------------------------------------- */
dd label {
	color: #333;
}

/* Hover effects */
fieldset dl:hover dt label {
	color: #000000;
}

fieldset.fields2 dl:hover dt label {
	color: inherit;
}

/* Quick-login on index page */
fieldset.quick-login input.inputbox {
	background-color: #F2F3F3;
}

/* Posting page styles
----------------------------------------*/

#message-box textarea {
	color: #333333;
}

/* Input field styles
---------------------------------------- */
.inputbox {
	background-color: #FFFFFF; 
	border-color: #B4BAC0;
	color: #333333;
}

.inputbox:hover {
	border-color: #11A3EA;
}

.inputbox:focus {
	border-color: #11A3EA;
	color: #0F4987;
}
/* PM Notify & Guest Register bar
----------------------------------------*/
#info {
    overflow: visible;
	min-width: 750px;
    width: 100%;
    position: fixed;
    left: 0;
    z-index:200;
    margin-top: -15px;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 1.5em;
	font-weight: bold;
}

#infobar a, #infobar a:link, #infobar a:visited, #infobar a:active {
    display: block;
    float: left;
    width:100%;
    clear: both;
    color: #fff;
    padding: .85em 0 .85em 0;
    border-bottom: .25em solid #fff;
	text-align: center;
    text-decoration: none;
	background-image: url("{T_THEME_PATH}/images/pmreg.png");
	background-position: bottom;
	background-repeat:repeat-x;
}

#infobar a:hover {
    color: #fff;
	background-image: url("{T_THEME_PATH}/images/pmreg.png");
	background-position: top;
	background-repeat:repeat-x;
	border-bottom: .25em solid #fff;
	cursor: pointer;
}

/* Form button styles
---------------------------------------- */

a.button1, input.button1, input.button3, a.button2, input.button2 {
	color: #000;
	background-color: #FAFAFA;
	background-image: url("{T_THEME_PATH}/images/bg_button.gif");
}

a.button1, input.button1 {
	border-color: #666666;
}

input.button3 {
	background-image: none;
}

/* Alternative button */
a.button2, input.button2, input.button3 {
	border-color: #666666;
}

/* <a> button in the style of the form buttons */
a.button1, a.button1:link, a.button1:visited, a.button1:active, a.button2, a.button2:link, a.button2:visited, a.button2:active {
	color: #000000;
}

/* Hover states */
a.button1:hover, input.button1:hover, a.button2:hover, input.button2:hover, input.button3:hover {
	border-color: #BC2A4D;
	color: #BC2A4D;
}

input.search {
	background-image: url("{T_THEME_PATH}/images/icon_textbox_search.gif");
}

input.disabled {
	color: #666666;
}

#thumbBox{ /*Outermost DIV for thumbnail viewer*/
position: absolute;
left: 0;
top: 0;
width: auto;
padding: 7px;
padding-bottom: 0;
background: #151515; 
visibility: hidden;
z-index: 10;
cursor: pointer;
}

#thumbBox .footerbar{ /*Footer DIV of thumbbox that contains "close" link */
font: bold 16px Tahoma;
letter-spacing: 5px;
line-height: 1.1em;
color: white;
padding: 5px 0;
text-align: right;
}


#thumbBox #thumbImage{ /*DIV within thumbbox that holds the enlarged image */
background-color: #151515;
color: #FFFFFF;
text-align: left;
font-weight: bold;
}

#thumbLoading{ /*DIV for showing "loading" status while thumbbox is being generated*/
position: absolute;
visibility: hidden;
border: 1px solid black;
background-color: #EFEFEF;
padding: 5px;
z-index: 5;
}

#thumbBox{ /*Outermost DIV for thumbnail viewer*/
position: absolute;
left: 0;
top: 0;
width: auto;
padding: 7px;
padding-bottom: 0;
background: #151515; 
visibility: hidden;
z-index: 10;
cursor: pointer;
}

#thumbBox .footerbar{ /*Footer DIV of thumbbox that contains "close" link */
font: bold 16px Tahoma;
letter-spacing: 5px;
line-height: 1.1em;
color: white;
padding: 5px 0;
text-align: right;
}


#thumbBox #thumbImage{ /*DIV within thumbbox that holds the enlarged image */
background-color: #151515;
color: #FFFFFF;
text-align: left;
font-weight: bold;
}

#thumbLoading{ /*DIV for showing "loading" status while thumbbox is being generated*/
position: absolute;
visibility: hidden;
border: 1px solid black;
background-color: #EFEFEF;
padding: 5px;
z-index: 5;}

Re: Icone citar não aparece nos tópicos

Enviado: 13 Fev 2012, 18:48
por robra
Também parecem estar corretos.
Poste o conteúdo do styles/prosilver/template/viewtopic_body.html.

Abraço. Imagem

Re: Icone citar não aparece nos tópicos

Enviado: 13 Fev 2012, 21:02
por tucao
Segue o arquivo
viewtopic_body.html

Código: Selecionar todos

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Untitled document</title>
</head>
<body>
<p><!-- INCLUDE overall_header.html --> <!-- IF U_MCP --></p>
<p>[&nbsp;<a href="{U_MCP}">{L_MCP}</a>&nbsp;]</p>
<p><!-- ENDIF --></p>
<h2><a href="{U_VIEW_TOPIC}">{TOPIC_TITLE}</a></h2>
<p><!-- NOTE: remove the style="display: none" when you want to have the forum description on the topic body --> <!-- IF FORUM_DESC --></p>
<div style="display: none !important;">{FORUM_DESC}<br /></div>
<p><!-- ENDIF --> <!-- IF MODERATORS --></p>
<p><strong><!-- IF S_SINGLE_MODERATOR -->{L_MODERATOR}<!-- ELSE -->{L_MODERATORS}<!-- ENDIF -->:</strong> {MODERATORS}</p>
<p><!-- ENDIF --> <!-- IF S_FORUM_RULES --></p>
<div class="rules">
<div class="inner"><span class="corners-top"><span></span></span> <!-- IF U_FORUM_RULES --> <a href="{U_FORUM_RULES}">{L_FORUM_RULES}</a> <!-- ELSE --> <strong>{L_FORUM_RULES}</strong><br /> {FORUM_RULES}
      <!-- ENDIF --> <span class="corners-bottom"><span></span></span></div>
</div>
<p><!-- ENDIF --></p>
<div class="topic-actions">
<div class="buttons"><!-- IF not S_IS_BOT and S_DISPLAY_REPLY_INFO -->
<div class="<!-- IF S_IS_LOCKED -->locked-icon<!-- ELSE -->reply-icon<!-- ENDIF -->"><a href="{U_POST_REPLY_TOPIC}" title="<!-- IF S_IS_LOCKED -->{L_TOPIC_LOCKED}<!-- ELSE -->{L_POST_REPLY}<!-- ENDIF -->"><span></span><!-- IF S_IS_LOCKED -->{L_TOPIC_LOCKED_SHORT}<!-- ELSE -->{L_POST_REPLY}<!-- ENDIF --></a></div>
<!-- ENDIF --></div>
<!-- IF S_DISPLAY_SEARCHBOX -->
<div class="search-box"><form method="get" id="topic-search" action="{S_SEARCHBOX_ACTION}"> <fieldset> <input class="inputbox search tiny" type="text" name="keywords" id="search_keywords" size="20" value="{L_SEARCH_TOPIC}" onclick="if(this.value=='{LA_SEARCH_TOPIC}')this.value='';" onblur="if(this.value=='')this.value='{LA_SEARCH_TOPIC}';" /> <input class="button2" type="submit" value="{L_SEARCH}" /> {S_SEARCH_LOCAL_HIDDEN_FIELDS} </fieldset> </form></div>
<!-- ENDIF --> <!-- IF PAGINATION or TOTAL_POSTS -->
<div class="pagination"><!-- IF U_VIEW_UNREAD_POST and not S_IS_BOT --><a href="{U_VIEW_UNREAD_POST}">{L_VIEW_UNREAD_POST}</a> &bull; <!-- ENDIF -->{TOTAL_POSTS}
         <!-- IF PAGE_NUMBER --><!-- IF PAGINATION --> &bull; <a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{PAGE_NUMBER}</a> &bull; <span>{PAGINATION}</span><!-- ELSE --> &bull; {PAGE_NUMBER}<!-- ENDIF --><!-- ENDIF --></div>
<!-- ENDIF --></div>
<div class="clear"></div>
<p><!-- IF S_HAS_POLL --></p>
<form method="post" action="{S_POLL_ACTION}">
<div class="panel">
<div class="inner"><span class="corners-top"><span></span></span>
<div class="content">
<h2>{POLL_QUESTION}</h2>
<p class="author">{L_POLL_LENGTH}<!-- IF S_CAN_VOTE and L_POLL_LENGTH --><br /><!-- ENDIF --><!-- IF S_CAN_VOTE -->{L_MAX_VOTES}<!-- ENDIF --></p>
<fieldset class="polls"> <!-- BEGIN poll_option --> <dl class="<!-- IF poll_option.POLL_OPTION_VOTED -->voted<!-- ENDIF -->"> title="{L_POLL_VOTED_OPTION}"<!-- ENDIF -->>
               <dt><!-- IF S_CAN_VOTE --><label for="vote_{poll_option.POLL_OPTION_ID}">{poll_option.POLL_OPTION_CAPTION}</label><!-- ELSE -->{poll_option.POLL_OPTION_CAPTION}<!-- ENDIF --></dt> <!-- IF S_CAN_VOTE --><dd style="width: auto;"><!-- IF S_IS_MULTI_CHOICE --><input type="checkbox" name="vote_id[]" id="vote_{poll_option.POLL_OPTION_ID}" value="{poll_option.POLL_OPTION_ID}" /> checked="checked"<!-- ENDIF --> /><!-- ELSE --><input type="radio" name="vote_id[]" id="vote_{poll_option.POLL_OPTION_ID}" value="{poll_option.POLL_OPTION_ID}" /> checked="checked"<!-- ENDIF --> /><!-- ENDIF --></dd><!-- ENDIF --> <!-- IF S_DISPLAY_RESULTS --><dd class="resultbar">
<div class="<!-- IF poll_option.POLL_OPTION_PCT < 20 -->pollbar1<!-- ELSEIF poll_option.POLL_OPTION_PCT < 40 -->pollbar2<!-- ELSEIF poll_option.POLL_OPTION_PCT < 60 -->pollbar3<!-- ELSEIF poll_option.POLL_OPTION_PCT < 80 -->pollbar4<!-- ELSE -->pollbar5<!-- ENDIF -->" style="width: {poll_option.POLL_OPTION_PERCENT};">{poll_option.POLL_OPTION_RESULT}</div>
</dd> <dd><!-- IF poll_option.POLL_OPTION_RESULT == 0 -->{L_NO_VOTES}<!-- ELSE -->{poll_option.POLL_OPTION_PERCENT}<!-- ENDIF --></dd><!-- ENDIF --> </dl> <!-- END poll_option --> <!-- IF S_DISPLAY_RESULTS --> <dl> <dt>&nbsp;</dt> <dd class="resultbar">{L_TOTAL_VOTES} : {TOTAL_VOTES}</dd> </dl> <!-- ENDIF --> <!-- IF S_CAN_VOTE --> <dl style="border-top: none;"> <dt>&nbsp;</dt> <dd class="resultbar"><input type="submit" name="update" value="{L_SUBMIT_VOTE}" class="button1" /></dd> </dl> <!-- ENDIF --> <!-- IF not S_DISPLAY_RESULTS --> <dl style="border-top: none;"> <dt>&nbsp;</dt> <dd class="resultbar"><a href="{U_VIEW_RESULTS}">{L_VIEW_RESULTS}</a></dd> </dl> <!-- ENDIF --> </fieldset></div>
<span class="corners-bottom"><span></span></span></div>
{S_FORM_TOKEN}
      {S_HIDDEN_FIELDS}</div>
</form> 
<hr />
<p><!-- ENDIF --> <!-- BEGIN postrow --> <!-- IF postrow.S_FIRST_UNREAD --><a id="unread"></a><!-- ENDIF --></p>
<div id="p{postrow.POST_ID}" class="post <!-- IF postrow.S_ROW_COUNT is odd -->bg1<!-- ELSE -->bg2<!-- ENDIF --><!-- IF postrow.S_UNREAD_POST --> unreadpost<!-- ENDIF --><!-- IF postrow.S_POST_REPORTED --> reported<!-- ENDIF --><!-- IF postrow.S_ONLINE and not postrow.S_IGNORE_POST --> online<!-- ENDIF -->">
<div class="inner"><span class="corners-top"><span></span></span>
<div class="postbody"><!-- IF postrow.S_IGNORE_POST -->
<div class="ignore">{postrow.L_IGNORE_POST}</div>
<!-- ELSE --> <!-- IF not S_IS_BOT --> <!-- IF postrow.U_EDIT or postrow.U_DELETE or postrow.U_REPORT or postrow.U_WARN or postrow.U_INFO or postrow.U_QUOTE --> 
<ul class="profile-icons">
<!-- IF postrow.U_EDIT -->
<li class="edit-icon"><a href="{postrow.U_EDIT}" title="{L_EDIT_POST}"><span>{L_EDIT_POST}</span></a></li>
<!-- ENDIF --> <!-- IF postrow.U_DELETE -->
<li class="delete-icon"><a href="{postrow.U_DELETE}" title="{L_DELETE_POST}"><span>{L_DELETE_POST}</span></a></li>
<!-- ENDIF --> <!-- IF postrow.U_REPORT -->
<li class="report-icon"><a href="{postrow.U_REPORT}" title="{L_REPORT_POST}"><span>{L_REPORT_POST}</span></a></li>
<!-- ENDIF --> <!-- IF postrow.U_WARN -->
<li class="warn-icon"><a href="{postrow.U_WARN}" title="{L_WARN_USER}"><span>{L_WARN_USER}</span></a></li>
<!-- ENDIF --> <!-- IF postrow.U_INFO -->
<li class="info-icon"><a href="{postrow.U_INFO}" title="{L_INFORMATION}"><span>{L_INFORMATION}</span></a></li>
<!-- ENDIF --> <!-- IF postrow.U_QUOTE and $user->data['group_id'] == 5 || $user->data['group_id'] == 4 || $user->data['group_id'] == 8-->
<div class="quote-icon"><a href="{postrow.U_QUOTE}" title="{L_REPLY_WITH_QUOTE}"><span>{L_REPLY_WITH_QUOTE}</span></a></div>
<!-- ENDIF --> 
</ul>
<!-- ENDIF --> <!-- ENDIF -->
<h3>class="first"<!-- ENDIF -->><!-- IF postrow.POST_ICON_IMG --><img src="{T_ICONS_PATH}{postrow.POST_ICON_IMG}" width="{postrow.POST_ICON_IMG_WIDTH}" height="{postrow.POST_ICON_IMG_HEIGHT}" /> <!-- ENDIF --><a href="#p{postrow.POST_ID}">{postrow.POST_SUBJECT}</a></h3>
<p class="author"><!-- IF S_IS_BOT -->{postrow.MINI_POST_IMG}<!-- ELSE --><a href="{postrow.U_MINI_POST}">{postrow.MINI_POST_IMG}</a><!-- ENDIF -->{L_POST_BY_AUTHOR} <strong>{postrow.POST_AUTHOR_FULL}</strong> &raquo; {postrow.POST_DATE}</p>
<!-- IF postrow.S_POST_UNAPPROVED or postrow.S_POST_REPORTED -->
<p class="rules"><!-- IF postrow.S_POST_UNAPPROVED -->{UNAPPROVED_IMG} <a href="{postrow.U_MCP_APPROVE}"><strong>{L_POST_UNAPPROVED}</strong></a><br /><!-- ENDIF --> <!-- IF postrow.S_POST_REPORTED -->{REPORTED_IMG} <a href="{postrow.U_MCP_REPORT}"><strong>{L_POST_REPORTED}</strong></a><!-- ENDIF --></p>
<!-- ENDIF -->
<div class="content">{postrow.MESSAGE}</div>
<!-- IF postrow.S_HAS_ATTACHMENTS --> <dl class="attachbox"> <dt>{L_ATTACHMENTS}</dt> <!-- BEGIN attachment --> <dd>{postrow.attachment.DISPLAY_ATTACHMENT}</dd> <!-- END attachment --> </dl> <!-- ENDIF --> <!-- IF postrow.S_DISPLAY_NOTICE -->
<div class="rules">{L_DOWNLOAD_NOTICE}</div>
<!-- ENDIF --> <!-- IF postrow.EDITED_MESSAGE or postrow.EDIT_REASON -->
<div class="notice">{postrow.EDITED_MESSAGE}
               <!-- IF postrow.EDIT_REASON --><br /><strong>{L_REASON}:</strong> <em>{postrow.EDIT_REASON}</em><!-- ENDIF --></div>
<!-- ENDIF --> <!-- IF postrow.BUMPED_MESSAGE -->
<div class="notice"><br /><br />{postrow.BUMPED_MESSAGE}</div>
<!-- ENDIF --> <!-- IF postrow.SIGNATURE -->
<div id="sig{postrow.POST_ID}" class="signature">{postrow.SIGNATURE}</div>
<!-- ENDIF --> <!-- ENDIF --></div>
<!-- IF not postrow.S_IGNORE_POST --> <dl class="postprofile" id="profile{postrow.POST_ID}"> <dt> <!-- IF postrow.POSTER_AVATAR --> <!-- IF postrow.U_POST_AUTHOR --><a href="{postrow.U_POST_AUTHOR}">{postrow.POSTER_AVATAR}</a><!-- ELSE -->{postrow.POSTER_AVATAR}<!-- ENDIF --><br /> <!-- ENDIF --> <!-- IF not postrow.U_POST_AUTHOR --><strong>{postrow.POST_AUTHOR_FULL}</strong><!-- ELSE -->{postrow.POST_AUTHOR_FULL}<!-- ENDIF --> </dt> <!-- IF postrow.RANK_TITLE or postrow.RANK_IMG --><dd>{postrow.RANK_TITLE}<!-- IF postrow.RANK_TITLE and postrow.RANK_IMG --><br /><!-- ENDIF -->{postrow.RANK_IMG}</dd><!-- ENDIF --> <dd>&nbsp;</dd> <!-- IF postrow.POSTER_POSTS != '' --><dd><strong>{L_POSTS}:</strong> {postrow.POSTER_POSTS}</dd><!-- ENDIF --> <!-- IF postrow.POSTER_JOINED --><dd><strong>{L_JOINED}:</strong> {postrow.POSTER_JOINED}</dd><!-- ENDIF --> <!-- IF postrow.POSTER_FROM --><dd><strong>{L_LOCATION}:</strong> {postrow.POSTER_FROM}</dd><!-- ENDIF --> <!-- IF postrow.S_PROFILE_FIELD1 --> <!-- Use a construct like this to include admin defined profile fields. Replace FIELD1 with the name of your field. --> <dd><strong>{postrow.PROFILE_FIELD1_NAME}:</strong> {postrow.PROFILE_FIELD1_VALUE}</dd> <!-- ENDIF --> <!-- BEGIN custom_fields --> <dd><strong>{postrow.custom_fields.PROFILE_FIELD_NAME}:</strong> {postrow.custom_fields.PROFILE_FIELD_VALUE}</dd> <!-- END custom_fields --> <!-- IF not S_IS_BOT --> <!-- IF postrow.U_PM or postrow.U_EMAIL or postrow.U_WWW or postrow.U_FACEBOOK or postrow.U_MSN or postrow.U_ICQ or postrow.U_YIM or postrow.U_AIM or postrow.U_JABBER --> <dd> 
<ul class="profile-icons">
<!-- IF postrow.U_PM -->
<li class="pm-icon"><a href="{postrow.U_PM}" title="{L_PRIVATE_MESSAGE}"><span>{L_PRIVATE_MESSAGE}</span></a></li>
<!-- ENDIF --> <!-- IF postrow.U_EMAIL -->
<li class="email-icon"><a href="{postrow.U_EMAIL}" title="{L_SEND_EMAIL_USER} {postrow.POST_AUTHOR}"><span>{L_SEND_EMAIL_USER} {postrow.POST_AUTHOR}</span></a></li>
<!-- ENDIF --> <!-- IF postrow.U_WWW -->
<li class="web-icon"><a href="{postrow.U_WWW}" title="{L_VISIT_WEBSITE}: {postrow.U_WWW}"><span>{L_WEBSITE}</span></a></li>
<!-- ENDIF --> <!-- IF postrow.U_FACEBOOK -->
<li class="facebook-icon"><a href="{postrow.U_FACEBOOK}" onclick="popup(this.href, 550, 320); return false;" title="{L_FACEBOOK}"><span>{L_FACEBOOK}</span></a></li>
<!-- ENDIF --> <!-- IF postrow.U_MSN -->
<li class="msnm-icon"><a href="{postrow.U_MSN}" onclick="popup(this.href, 550, 320); return false;" title="{L_MSNM}"><span>{L_MSNM}</span></a></li>
<!-- ENDIF --> <!-- IF postrow.U_ICQ -->
<li class="icq-icon"><a href="{postrow.U_ICQ}" onclick="popup(this.href, 550, 320); return false;" title="{L_ICQ}"><span>{L_ICQ}</span></a></li>
<!-- ENDIF --> <!-- IF postrow.U_YIM -->
<li class="yahoo-icon"><a href="{postrow.U_YIM}" onclick="popup(this.href, 780, 550); return false;" title="{L_YIM}"><span>{L_YIM}</span></a></li>
<!-- ENDIF --> <!-- IF postrow.U_AIM -->
<li class="aim-icon"><a href="{postrow.U_AIM}" onclick="popup(this.href, 550, 320); return false;" title="{L_AIM}"><span>{L_AIM}</span></a></li>
<!-- ENDIF --> <!-- IF postrow.U_JABBER -->
<li class="jabber-icon"><a href="{postrow.U_JABBER}" onclick="popup(this.href, 550, 320); return false;" title="{L_JABBER}"><span>{L_JABBER}</span></a></li>
<!-- ENDIF --> 
</ul>
</dd> <!-- ENDIF --> <!-- ENDIF --> </dl> <!-- ENDIF -->
<div class="back2top"><a href="#wrap" class="top" title="{L_BACK_TO_TOP}">{L_BACK_TO_TOP}</a></div>
<span class="corners-bottom"><span></span></span></div>
</div>
<hr class="divider" />
<p><!-- END postrow --> <!-- IF S_QUICK_REPLY --> <!-- INCLUDE quickreply_editor.html --> <!-- ENDIF --> <!-- IF S_NUM_POSTS > 1 or PREVIOUS_PAGE --></p>
<form id="viewtopic" method="post" action="{S_TOPIC_ACTION}"> <fieldset class="display-options" style="margin-top: 0; "> <!-- IF PREVIOUS_PAGE --><a href="{PREVIOUS_PAGE}" class="left-box {S_CONTENT_FLOW_BEGIN}">{L_PREVIOUS}</a><!-- ENDIF --> <!-- IF NEXT_PAGE --><a href="{NEXT_PAGE}" class="right-box {S_CONTENT_FLOW_END}">{L_NEXT}</a><!-- ENDIF --> <!-- IF not S_IS_BOT --> <label>{L_DISPLAY_POSTS}: {S_SELECT_SORT_DAYS}</label> <label>{L_SORT_BY} {S_SELECT_SORT_KEY}</label> <label>{S_SELECT_SORT_DIR} <input type="submit" name="sort" value="{L_GO}" class="button2" /></label> <!-- ENDIF --> </fieldset> </form> 
<hr />
<p><!-- ENDIF --></p>
<div class="topic-actions">
<div class="buttons"><!-- IF not S_IS_BOT and S_DISPLAY_REPLY_INFO -->
<div class="<!-- IF S_IS_LOCKED -->locked-icon<!-- ELSE -->reply-icon<!-- ENDIF -->"><a href="{U_POST_REPLY_TOPIC}" title="<!-- IF S_IS_LOCKED -->{L_TOPIC_LOCKED}<!-- ELSE -->{L_POST_REPLY}<!-- ENDIF -->"><span></span><!-- IF S_IS_LOCKED -->{L_TOPIC_LOCKED_SHORT}<!-- ELSE -->{L_POST_REPLY}<!-- ENDIF --></a></div>
<!-- ENDIF --></div>
<!-- IF PAGINATION or TOTAL_POSTS -->
<div class="pagination">{TOTAL_POSTS}
         <!-- IF PAGE_NUMBER --><!-- IF PAGINATION --> &bull; <a href="#" onclick="jumpto(); return false;" title="{L_JUMP_TO_PAGE}">{PAGE_NUMBER}</a> &bull; <span>{PAGINATION}</span><!-- ELSE --> &bull; {PAGE_NUMBER}<!-- ENDIF --><!-- ENDIF --></div>
<!-- ENDIF --></div>
<p><!-- INCLUDE jumpbox.html --> <!-- IF S_TOPIC_MOD --></p>
<form method="post" action="{S_MOD_ACTION}"> <fieldset class="quickmod"> <label for="quick-mod-select">{L_QUICK_MOD}:</label> {S_TOPIC_MOD} <input type="submit" value="{L_GO}" class="button2" /> {S_FORM_TOKEN} </fieldset> </form>
<p><!-- ENDIF --> <!-- IF S_DISPLAY_ONLINE_LIST --></p>
<h3><!-- IF U_VIEWONLINE --><a href="{U_VIEWONLINE}">{L_WHO_IS_ONLINE}</a><!-- ELSE -->{L_WHO_IS_ONLINE}<!-- ENDIF --></h3>
<p>{LOGGED_IN_USER_LIST}</p>
<p><!-- ENDIF --> <!-- MOD : AOS Who Visited a Topic - Start --> <!-- IF S_WHO_VISITED_A_TOPIC --></p>
<h3><a href="{U_WVT}" onclick="window.open(this.href,'','statusbar=no,menubar=no,toolbar=no,scrollbars=yes,resizable=yes,width=500,height=300'); return false;">{L_WHO_VISITED_A_TOPIC}</a></h3>
<p><!-- IF NUM_VISITORS -->{NUM_VISITORS}<!-- IF NUM_VISITORS == 1 -->{L_USER_VISIT}<!-- ELSE -->{L_USER_VISITS}<!-- ENDIF --><!-- BEGIN visited_topic --><span title="{visited_topic.USER_LAST_VIEW_TIME}">{visited_topic.USER}</span><!-- IF VIEW_COUNT --> ({visited_topic.USER_VIEW_COUNT})<!-- ENDIF --><!-- IF not visited_topic.S_LAST_ROW -->, <!-- ENDIF --><!-- END visited_topic --><!-- IF NUM_USER_IN_TOPIC -->, ... [<a href="{U_WVT}" onclick="window.open(this.href,'','statusbar=no,menubar=no,toolbar=no,scrollbars=yes,resizable=yes,width=500,height=300'); return false;">{L_VIEW_MORE}</a>]<!-- ENDIF --><!-- ELSE -->{L_NONE_USER_VISIT}<!-- ENDIF --></p>
<p><!-- ENDIF --> <!-- MOD : AOS Who Visited a Topic - End --> <!-- INCLUDE overall_footer.html --></p>
</body>
</html>

Re: Icone citar não aparece nos tópicos

Enviado: 13 Fev 2012, 22:09
por robra
Não foi este mesmo viewtopic_body.html que estava com problemas em seu outro Tópico
erro ao instalar MOD-aos_who_visited_a_topic_1_0_2_2 ??
De onde você baixou este phpbb ?

Abraço. Imagem

Re: Icone citar não aparece nos tópicos

Enviado: 13 Fev 2012, 23:28
por tucao
Ele estava com problemas, depois você me passou um outro arquivo, onde eu fiz as alterações do MOD-aos_who_visited_a_topic_1_0_2_2 e voltou a funcionar.
Esse phpbb fiz a instalação fazem quase 2 anos e fui atualizando, foi do proprio site de hospedagem (Godaddy)

Re: Icone citar não aparece nos tópicos

Enviado: 14 Fev 2012, 08:19
por robra
tucao escreveu:Ele estava com problemas, depois você me passou um outro arquivo, onde eu fiz as alterações do MOD-aos_who_visited_a_topic_1_0_2_2 e voltou a funcionar.
Esse phpbb fiz a instalação fazem quase 2 anos e fui atualizando, foi do proprio site de hospedagem (Godaddy)
Pois é... não é aconselhável instalar o phpBB pelos servições de scripts oferecidos pelo servidor de hospedagem como "Fantástico" ou "Softaculous", porque geralmente apresentam problemas.
O ideal é baixar a versão full do phpBB do site http://www.phpbb.com e realizar o procedimento de instalação desquito aqui: Instalando o phpBB3.
A questão é que existem comandos do buttons.css e do colours.css que estão sendo restringidos ao recurso "Citar".
Para tirarmos as dúvidas faça o seguinte, volte o arquivo includes/message_parser.php à versão anterior antes da edição para este MOD, atualize o Sets de imagem pela aba ESTILOS>>Sets de imagem, cilcando no "Atualizar" na mesma linha do estilo Prosilver, limpe o cache do Fórum e veja se o botão voltou ao normal.
Caso ele volte ao normal, aí é incompatibilidade do MOD com a aversão 3.0.10 do phpbb, já que este MOD parou na versão 3.0.1 do phpbb.
Se o botão continuar com problema, aí não é o MOD.

Abraço. Imagem

Re: Icone citar não aparece nos tópicos

Enviado: 15 Fev 2012, 11:44
por tucao
robra fiz o que me pediu, coloquei outro arquivo antes do MOD e ficou igual.
Baixei a nova versão do phpbb3 e coloquei o arquivo dela, fiz os procedimentos e tambem não funcionou.
Voltei à colocar o mesmo, pra não dar mais zica. :D
Há mais de um ano coloquei o MOD Lightbox Mod 2 - 1.0.0 Beta, onde você clica em uma imagem, ele escurece a tela e amplia a imagem, depois da última atualização tem usuários se queixando que na hora de digitar uma mensagem a tela escurece, os problemas poder estar relacionados?
Abraços