Files
legacy_rock/forum/Themes/default/Post.template.php
2014-01-05 23:52:19 +04:00

956 lines
41 KiB
PHP

<?php
// Version: 1.0; Post
// The main template for the post page.
function template_main()
{
global $context, $settings, $options, $txt, $scripturl, $modSettings, $months;
if ($context['show_spellchecking'])
echo '
<script language="JavaScript1.2" type="text/javascript" src="', $settings['default_theme_url'], '/spellcheck.js"></script>';
// Start the javascript... and boy is there a lot.
echo '
<script language="JavaScript1.2" type="text/javascript"><!--';
// This javascript attempts to keep the users current session alive.
if (!$context['user']['is_guest'])
echo '
setTimeout("fetchSession();", 60000);
function fetchSession()
{
$.get("', $scripturl, '?action=jsoption;sesc=', $context['session_id'], ';" + (new Date().getTime()));
setTimeout("fetchSession();", 60000);
}';
// Here we have the code for showing the message icon from the select box.
echo '
function showimage()
{
document.images.icons.src = "', $settings['images_url'], '/post/" + document.postmodify.icon.options[document.postmodify.icon.selectedIndex].value + ".gif";
}';
// This function caches attachment paths so they can be used if "preview" is used.
echo '
function updateAttachmentCache()
{
if (typeof(document.postmodify.attachmentPreview) == "undefined")
return;
document.postmodify.attachmentPreview.value = "";
if (typeof(document.postmodify["attachment[]"].length) != "undefined")
{
var tempArray = [];
for (var i = 0; i < document.postmodify["attachment[]"].length; i++)
tempArray[i] = document.postmodify["attachment[]"][i].value;
document.postmodify.attachmentPreview.value = tempArray.join(", ");
}
else
document.postmodify.attachmentPreview.value = document.postmodify["attachment[]"].value;
}';
// Code for showing and hiding additional options.
if (!empty($settings['additional_options_collapsable']))
echo '
var currentSwap = false;
function swapOptions()
{
document.getElementById("postMoreExpand").src = smf_images_url + "/" + (currentSwap ? "collapse.gif" : "expand.gif");
document.getElementById("postMoreExpand").alt = currentSwap ? "-" : "+";
document.getElementById("postMoreOptions").style.display = currentSwap ? "" : "none";
if (document.getElementById("postAttachment"))
document.getElementById("postAttachment").style.display = currentSwap ? "" : "none";
if (document.getElementById("postAttachment2"))
document.getElementById("postAttachment2").style.display = currentSwap ? "" : "none";
currentSwap = !currentSwap;
}';
// If this is a poll - use some javascript to ensure the user doesn't create a poll with illegal option combinations.
if ($context['make_poll'])
echo '
function pollOptions()
{
var expireTime = document.getElementById("poll_expire");
if (isEmptyText(expireTime) || expireTime.value == 0)
{
document.postmodify.poll_hide[2].disabled = true;
if (document.postmodify.poll_hide[2].checked)
document.postmodify.poll_hide[1].checked = true;
}
else
document.postmodify.poll_hide[2].disabled = false;
}
var pollOptionNum = 0;
function addPollOption()
{
if (pollOptionNum == 0)
{
for (var i = 0; i < document.postmodify.elements.length; i++)
if (document.postmodify.elements[i].id.substr(0, 8) == "options[")
pollOptionNum++;
}
pollOptionNum++
setOuterHTML(document.getElementById("pollMoreOptions"), \'<br /><label for="options[\' + pollOptionNum + \']">', $txt['smf22'], ' \' + pollOptionNum + \'</label>: <input type="text" name="options[\' + pollOptionNum + \']" id="options[\' + pollOptionNum + \']" value="" size="25" /><span id="pollMoreOptions"></span>\');
}';
// If we are making a calendar event we want to ensure we show the current days in a month etc... this is done here.
if ($context['make_event'])
echo '
var monthLength = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
function generateDays()
{
var days = 0, selected = 0;
var dayElement = document.getElementById("day"), yearElement = document.getElementById("year"), monthElement = document.getElementById("month");
monthLength[1] = 28;
if (yearElement.options[yearElement.selectedIndex].value % 4 == 0)
monthLength[1] = 29;
selected = dayElement.selectedIndex;
while (dayElement.options.length)
dayElement.options[0] = null;
days = monthLength[monthElement.value - 1];
for (i = 1; i <= days; i++)
dayElement.options[dayElement.length] = new Option(i, i);
if (selected < days)
dayElement.selectedIndex = selected;
}';
// End of the javascript, start the form and display the link tree.
echo '
// --></script>
<form action="', $scripturl, '?action=', $context['destination'], ';', empty($context['current_board']) ? '' : 'board=' . $context['current_board'], '" method="post" name="postmodify" onsubmit="submitonce(this);" enctype="multipart/form-data" style="margin: 0;">
<table width="100%" align="center" cellpadding="0" cellspacing="3">
<tr>
<td valign="bottom" colspan="2">
', theme_linktree(), '
</td>
</tr>
</table>';
// If the user wants to see how their message looks - the preview table is where it's at!
if (isset($context['preview_message']))
{
echo '
<table border="0" width="100%" cellspacing="1" cellpadding="3" class="bordercolor" align="center" style="table-layout: fixed;">
<tr class="titlebg">
<td>', $context['preview_subject'], '</td>
</tr>
<tr>
<td class="windowbg" width="100%">
<div style="overflow: auto; width: 100%;">', $context['preview_message'];
if($modSettings['nowplayingEnabled'] && $context['preview_nowplaying'] != '')
{
if($modSettings['nowplaying_image'] != '')
$nowplayingstring = '<img src="'. $settings['images_url'] . '/'. $modSettings['nowplaying_image'] . '" alt="" border="0" />';
else
$nowplayingstring = '<img src="'. $settings['images_url'] . '/cddisc.gif" alt="" border="0" />';
if(isset($modSettings['nowplaying_text']))
$nowplayingstring .= '&nbsp;' . $modSettings['nowplaying_text'];
echo '<br /><br />', $nowplayingstring, '&nbsp;<b>', $context['preview_nowplaying'], '</b>';
}
echo '</div>
</td>
</tr>
</table><br />';
}
if ($context['make_event'] && (!$context['event']['new'] || !empty($context['current_board'])))
echo '
<input type="hidden" name="eventid" value="', $context['event']['id'], '">';
// Start the main table.
echo '
<table border="0" width="100%" align="center" cellspacing="1" cellpadding="3" class="bordercolor">
<tr class="titlebg">
<td>', $context['page_title'], '</td>
</tr>
<tr>
<td class="windowbg">', isset($context['current_topic']) ? '
<input type="hidden" name="topic" value="' . $context['current_topic'] . '" />' : '', '
<table border="0" cellpadding="3" width="100%">';
// If an error occurred, explain what happened.
if (!empty($context['post_error']['messages']))
{
echo '
<tr>
<td></td>
<td align="left">
', $context['error_type'] == 'serious' ? '<b>' . $txt['error_while_submitting'] . '</b>' : '', '
<div style="color: red; margin: 1ex 0 2ex 3ex;">
', implode('<br />', $context['post_error']['messages']), '
</div>
</td>
</tr>';
}
// If it's locked, show a message to warn the replyer.
if ($context['locked'])
echo '
<tr>
<td></td>
<td align="left">
', $txt['smf287'], '
</td>
</tr>';
// Guests have to put in their name and email...
if (isset($context['name']) && isset($context['email']))
echo '
<tr>
<td align="right">
<b', isset($context['post_error']['long_name']) || isset($context['post_error']['no_name']) || isset($context['post_error']['bad_name']) ? ' style="color: #FF0000;"' : '', '>', $txt[68], ':</b>
</td>
<td>
<input type="text" name="guestname" size="25" value="', $context['name'], '" />
</td>
</tr>
<tr>
<td align="right">
<b', isset($context['post_error']['no_email']) || isset($context['post_error']['bad_email']) ? ' style="color: #FF0000;"' : '', '>', $txt[69], ':</b>
</td>
<td>
<input type="text" name="email" size="25" value="', $context['email'], '" />
</td>
</tr>';
// Are you posting a calendar event?
if ($context['make_event'])
{
echo '
<tr>
<td align="right">
<b', isset($context['post_error']['no_event']) ? ' style="color: #FF0000;"' : '', '>', $txt['calendar12'], '</b>
</td>
<td class="smalltext">
<input type="text" name="evtitle" maxlength="30" size="30" value="', $context['event']['title'], '" />
</td>
</tr><tr>
<td></td>
<td class="smalltext">
<input type="hidden" name="calendar" value="1" />', $txt['calendar10'], '&nbsp;
<select name="year" id="year" onchange="generateDays();">';
// Show a list of all the years we allow...
for ($year = $modSettings['cal_minyear']; $year <= $modSettings['cal_maxyear']; $year++)
echo '
<option value="', $year, '"', $year == $context['event']['year'] ? ' selected="selected"' : '', '>', $year, '</option>';
echo '
</select>&nbsp;
', $txt['calendar9'], '&nbsp;
<select name="month" id="month" onchange="generateDays();">';
// There are 12 months per year - ensure that they all get listed.
for ($month = 1; $month <= 12; $month++)
echo '
<option value="', $month, '"', $month == $context['event']['month'] ? ' selected="selected"' : '', '>', $months[$month], '</option>';
echo '
</select>&nbsp;
', $txt['calendar11'], '&nbsp;
<select name="day" id="day">';
// This prints out all the days in the current month - this changes dynamically as we switch months.
for ($day = 1; $day <= $context['event']['last_day']; $day++)
echo '
<option value="', $day, '"', $day == $context['event']['day'] ? ' selected="selected"' : '', '>', $day, '</option>';
echo '
</select>
</td>
</tr>';
// If events can span more than one day then allow the user to select how long it should last.
if ($context['event']['new'] && !empty($modSettings['cal_allowspan']))
{
echo '
<tr>
<td align="right"><b>', $txt['calendar54'], '</b></td>
<td class="smalltext">
<select name="span">';
for ($days = 1; $days <= $modSettings['cal_maxspan']; $days++)
echo '
<option value="', $days, '"', $days == $context['event']['span'] ? ' selected="selected"' : '', '>', $days, '</option>';
echo '
</select>
</td>
</tr>';
}
// If this is a new event let the user specify which board they want the linked post to be put into.
if ($context['event']['new'] && $context['is_new_topic'])
{
echo '
<tr>
<td align="right"><b>', $txt['calendar13'], '</b></td>
<td class="smalltext">
<select name="board">';
foreach ($context['event']['boards'] as $board)
echo '
<option value="', $board['id'], '"', $board['id'] == $context['event']['board'] ? ' selected="selected"' : '', '>', $board['cat']['name'], ' - ', $board['prefix'], $board['name'], '</option>';
echo '
</select>
</td>
</tr>';
}
}
// Now show the subject box for this post.
echo '
<tr>
<td align="right">
<b', isset($context['post_error']['no_subject']) ? ' style="color: #FF0000;"' : '', '>', $txt[70], ':</b>
</td>
<td>
<input type="text" maxlength="50" name="subject"', $context['subject'] == '' ? '' : ' value="' . $context['subject'] . '"', ' size="80" maxlength="80" tabindex="1" />
</td>
</tr>';
if ($context['is_first_post'])
echo '
<tr>
<td align="right">
<b>Подзаголовок:</b>
</td>
<td>
<input type="text" maxlength="50" name="subtitle"', $context['subtitle'] == '' ? '' : ' value="' . $context['subtitle'] . '"', ' size="80" maxlength="80" tabindex="2" />
</td>
</tr>';
echo '
<tr>
<td align="right">
<b>', $txt[71], ':</b>
</td>
<td>
<select name="icon" id="icon" onchange="showimage()">';
// Loop through each message icon allowed, adding it to the drop down list.
foreach ($context['icons'] as $icon)
echo '
<option value="', $icon['value'], '"', $icon['value'] == $context['icon'] ? ' selected="selected"' : '', '>', $icon['name'], '</option>';
echo '
</select>
<img src="', $settings['images_url'], '/post/', $context['icon'], '.gif" name="icons" border="0" hspace="15" alt="" />
</td>
</tr>';
// If this is a poll then display all the poll options!
if ($context['make_poll'])
{
echo '
<tr>
<td align="right">
<b', isset($context['post_error']['no_question']) ? ' style="color: #FF0000;"' : '', '>', $txt['smf21'], ':</b>
</td>
<td align="left">
<input type="text" name="question" value="', (isset($context['question']) ? $context['question'] : ''), '" size="80" />
</td>
</tr>
<tr>
<td align="right"></td>
<td>';
// Loop through all the choices and print them out.
foreach ($context['choices'] as $choice)
{
echo '
<label for="options[', $choice['id'], ']">', $txt['smf22'], ' ', $choice['number'], '</label>: <input type="text" name="options[', $choice['id'], ']" id="options[', $choice['id'], ']" value="', $choice['label'], '" size="25" />';
if (!$choice['is_last'])
echo '<br />';
}
echo '
<span id="pollMoreOptions"></span> <a href="javascript:addPollOption(); void(0);">(', $txt['poll_add_option'], ')</a>
</td>
</tr>
<tr>
<td align="right"><b>', $txt['poll_options'], ':</b></td>
<td class="smalltext"><input type="text" name="poll_max_votes" size="2" value="', $context['poll_options']['max_votes'], '" /> ', $txt['poll_options5'], '</td>
</tr>
<tr>
<td align="right"></td>
<td class="smalltext">', $txt['poll_options1a'], ' <input type="text" id="poll_expire" name="poll_expire" size="2" value="', $context['poll_options']['expire'], '" onchange="pollOptions();" /> ', $txt['poll_options1b'], '</td>
</tr>
<tr>
<td align="right"></td>
<td class="smalltext"><label for="poll_change_vote"><input type="checkbox" id="poll_change_vote" name="poll_change_vote" ', !empty($context['poll_options']['change_vote']) ? 'checked="checked"' : '', ' class="check" /> ', $txt['poll_options7'], '</label></td>
</tr>
<tr>
<td align="right"></td>
<td class="smalltext">
<input type="radio" id="poll_hide" name="poll_hide" value="0"', $context['poll_options']['hide'] == 0 ? ' checked="checked"' : '', ' class="check" /> ', $txt['poll_options2'], '<br />
<input type="radio" id="poll_hide" name="poll_hide" value="1"', $context['poll_options']['hide'] == 1 ? ' checked="checked"' : '', ' class="check" /> ', $txt['poll_options3'], '<br />
<input type="radio" id="poll_hide" name="poll_hide" value="2"', $context['poll_options']['hide'] == 2 ? ' checked="checked"' : '', empty($context['poll_options']['expire']) ? ' disabled="disabled"' : '', ' class="check" /> ', $txt['poll_options4'], '<br />
<br />
</td>
</tr>';
}
// The below function prints the BBC, smileys and the message itself out.
theme_postbox($context['message']);
if($modSettings['nowplayingEnabled'])
{
echo'
<tr>
<td align="right"><b>', $txt['nowplaying3'], '</b></td>
<td>
<input type="text" size="80" name="nowplaying"', $context['nowplaying'] == '' ? '' : ' value="' . $context['nowplaying'] . '"', ' tabindex="4" />
</td>
</tr>';
}
// If this message has been edited in the past - display when it was.
if (isset($context['last_modified']))
echo '
<tr>
<td valign="top" align="right">
<b>', $txt[211], ':</b>
</td>
<td>
', $context['last_modified'], '
</td>
</tr>';
// If the admin has enabled the hiding of the additional options - show a link and image for it.
if (!empty($settings['additional_options_collapsable']))
echo '
<tr>
<td colspan="2" style="padding-left: 5ex;">
<a href="javascript:swapOptions();"><img src="', $settings['images_url'], '/expand.gif" alt="+" border="0" id="postMoreExpand" /></a> <a href="javascript:swapOptions();"><b>', $txt['post_additionalopt'], '</b></a>
</td>
</tr>';
// Display the check boxes for all the standard options - if they are available to the user!
echo '
<tr>
<td></td>
<td>
<div id="postMoreOptions">
<table width="80%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="smalltext">', $context['can_notify'] ? '<input type="hidden" name="notify" value="0" /><label for="check_notify"><input type="checkbox" name="notify" id="check_notify"' . ($context['notify'] || !empty($options['auto_notify']) ? ' checked="checked"' : '') . ' value="1" class="check" /> ' . $txt['smf14'] . '</label>' : '', '</td>
<td class="smalltext">', $context['can_lock'] ? '<input type="hidden" name="lock" value="0" /><label for="check_lock"><input type="checkbox" name="lock" id="check_lock"' . ($context['locked'] ? ' checked="checked"' : '') . ' value="1" class="check" /> ' . $txt['smf15'] . '</label>' : '', '</td>
</tr>
<tr>
<td class="smalltext"><label for="check_back"><input type="checkbox" name="goback" id="check_back"' . ($context['back_to_topic'] || !empty($options['return_to_post']) ? ' checked="checked"' : '') . ' value="1" class="check" /> ' . $txt['back_to_topic'] . '</label></td>
<td class="smalltext">', $context['can_sticky'] ? '<input type="hidden" name="sticky" value="0" /><label for="check_sticky"><input type="checkbox" name="sticky" id="check_sticky"' . ($context['sticky'] ? ' checked="checked"' : '') . ' value="1" class="check" /> ' . $txt['sticky_after2'] . '</label>' : '', '</td>
</tr>
<tr>
<td class="smalltext"><label for="check_smileys"><input type="checkbox" name="ns" id="check_smileys"', $context['use_smileys'] ? '' : ' checked="checked"', ' value="NS" class="check" /> ', $txt[277], '</label></td>', '
<td class="smalltext">', $context['can_move'] ? '<input type="hidden" name="move" value="0" /><label for="check_move"><input type="checkbox" name="move" id="check_move" value="1" class="check" /> ' . $txt['move_after2'] . '</label>' : '', '</td>
</tr>', $context['can_announce'] && $context['is_first_post'] ? '
<tr>
<td class="smalltext"><label for="check_announce"><input type="checkbox" name="announce_topic" id="check_announce" value="1" class="check" /> ' . $txt['announce_topic'] . '</label></td>
<td class="smalltext"></td>
</tr>' : '', '
</table>
</div>
</td>
</tr>';
// If this post already has attachments on it - give information about them.
if (!empty($context['current_attachments']))
{
echo '
<tr id="postAttachment">
<td align="right" valign="top">
<b>', $txt['smf119b'], ':</b>
</td>
<td class="smalltext">
<input type="hidden" name="attach_del[]" value="0" />
', $txt['smf130'], ':<br />';
foreach ($context['current_attachments'] as $attachment)
echo '
<input type="checkbox" name="attach_del[]" value="', $attachment['id'], '" checked="checked" class="check" /> ', $attachment['name'], '<br />';
echo '
<br />
</td>
</tr>';
}
// Is the user allowed to post any additional ones? If so give them the boxes to do it!
if (isset($context['warning']))
echo'
<tr>
<td align="center" colspan="2">
<font size="2">' . $txt['visual_postmod_appear'] . '</font>
</td>
</tr>';
elseif ($context['can_post_attachment'])
{
echo '
<tr id="postAttachment2">
<td align="right" valign="top">
<b>', $txt['smf119'], ':</b>
</td>
<td class="smalltext">
', ($context['attached'] != '' ? $txt['attach_preview'] . ': ' . $context['attached'] . '<br />' : ''), '
<input type="file" size="48" name="attachment[]" onchange="updateAttachmentCache();" />';
// Show more boxes only if they aren't approaching their limit.
if ($context['num_allowed_attachments'] > 1)
echo '
<script language="JavaScript" type="text/javascript"><!--
var allowed_attachments = ', $context['num_allowed_attachments'], ' - 1;
function addAttachment()
{
if (allowed_attachments <= 0)
return alert("', $txt['more_attachments_error'], '");
setOuterHTML(document.getElementById("moreAttachments"), \'<br /><input type="file" size="48" name="attachment[]" onchange="updateAttachmentCache();" /><span id="moreAttachments"></span>\');
allowed_attachments = allowed_attachments - 1;
return true;
}
// --></script>
<span id="moreAttachments"></span> <a href="javascript:addAttachment(); void(0);">(', $txt['more_attachments'], ')</a><br />
<noscript><input type="file" size="48" name="attachment[]" onchange="updateAttachmentCache();" /><br /></noscript>';
// Show some useful information such as allowed extensions, maximum size and amount of attachments allowed.
if (!empty($modSettings['attachmentCheckExtensions']))
echo '
', $txt['smf120'], ': ', $context['allowed_extensions'], '<br />';
echo '
', $txt['smf121'], ': ', $modSettings['attachmentSizeLimit'], ' ' . $txt['smf211'], !empty($modSettings['attachmentNumPerPostLimit']) ? ', ' . $txt['maxAttachPerPost'] . ': ' . $modSettings['attachmentNumPerPostLimit'] : '', '
<input type="hidden" name="attachmentPreview" value="" />
</td>
</tr>';
}
// Finally, the submit buttons - and some javascript to hide the additional options on load.
echo '
<tr>
<td align="center" colspan="2">';
if (!empty($settings['additional_options_collapsable']) && empty($context['attached']))
echo '
<script language="JavaScript" type="text/javascript"><!--
swapOptions();
// --></script>';
echo '
<span class="smalltext"><br />', $txt['smf16'], '</span><br />
<input type="submit" name="post" value="', $context['submit_label'], '" onclick="return submitThisOnce(this);" accesskey="s" tabindex="5" />
<input type="submit" name="preview" value="', $txt[507], '" onclick="return (typeof(document.postmodify.attachmentPreview) == &quot;undefined&quot; || !document.postmodify.attachmentPreview.value || confirm(\'' . $txt['attach_lose'] . '\')) &amp;&amp; submitThisOnce(this);" accesskey="p" tabindex="6" />';
// Option to delete an event if user is editing one.
if ($context['make_event'] && !$context['event']['new'])
echo '
<input type="submit" name="deleteevent" value="', $txt['calendar22'], '" onclick="return confirm(\'', $txt['calendar21'], '\');" />';
// Spell check button if the option is enabled.
if ($context['show_spellchecking'])
echo '
<input type="button" value="', $txt['spell_check'], '" onclick="spellCheck(\'postmodify\', \'message\');" />';
// This image is a cunning way to keep a session alive - works with some javascript above.
echo '<img src="', $settings['images_url'], '/blank.gif" alt="" id="fetchSessionTemp" />
</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>';
// Assuming this isn't a new topic pass across the number of replies when the topic was created.
if (isset($context['num_replies']))
echo '
<input type="hidden" name="num_replies" value="', $context['num_replies'], '" />';
echo '
<input type="hidden" name="sc" value="', $context['session_id'], '" />
<input type="hidden" name="seqnum" value="', $context['form_sequence_number'], '" />
</form>';
// A hidden form to post data to the spell checking window.
if ($context['show_spellchecking'])
echo '
<form name="spell_form" id="spell_form" method="post" target="spellWindow" action="', $scripturl, '?action=spellcheck">
<input type="hidden" name="spell_formname" value="" />
<input type="hidden" name="spell_fieldname" value="" />
<input type="hidden" name="spellstring" value="" />
</form>';
// If the user is replying to a topic show the previous posts.
if (isset($context['previous_posts']) && count($context['previous_posts']) > 0)
{
echo '
<br /><br />
<table cellspacing="1" cellpadding="0" width="92%" align="center" class="bordercolor">
<tr>
<td>
<table width="100%" class="windowbg" cellspacing="0" cellpadding="2" align="center" style="table-layout: fixed;">
<tr class="titlebg">
<td colspan="2">', $txt[468], '</td>
</tr>';
foreach ($context['previous_posts'] as $post)
{
echo '
<tr class="catbg">
<td colspan="2" align="left" class="smalltext">
<div style="float: right;">', $txt[280], ': ', $post['time'], '</div>
', $txt[279], ': ', $post['poster'], '
</td>
</tr><tr class="windowbg2">
<td colspan="2" class="smalltext" id="msg', $post['id'], '" width="100%">
<div align="right" class="smalltext"><a href="#top" onclick="reqWin(\'', $scripturl, '?action=quotefast;quote=', $post['id'], ';sesc=', $context['session_id'], '\', 240, 90);">', $txt[260], '</a></div>
<div style="overflow: auto; width: 100%;">', $post['message'];
if($modSettings['nowplayingEnabled'] && $post['nowplaying'] != '')
{
if($modSettings['nowplaying_image'] != '')
$nowplayingstring = '<img src="'. $settings['images_url'] . '/'. $modSettings['nowplaying_image'] . '" alt="" border="0" />';
else
$nowplayingstring = '<img src="'. $settings['images_url'] . '/cddisc.gif" alt="" border="0" />';
if(isset($modSettings['nowplaying_text']))
$nowplayingstring .= '&nbsp;' . $modSettings['nowplaying_text'];
echo '<br /><br />', $nowplayingstring, '&nbsp;<b>', $post['nowplaying'], '</b>';
}
echo '</div>
</td>
</tr>';
}
echo '
</table>
</td>
</tr>
</table>';
}
}
// This function displays all the stuff you'd expect to see with a message box, the box, BBC buttons and of course smileys.
function template_postbox(&$message)
{
global $context, $settings, $options, $txt, $modSettings;
// Assuming BBC code is enabled then print the buttons and some javascript to handle it.
if ($context['show_bbc'])
{
echo '
<tr>
<td align="right"></td>
<td valign="middle">
<script language="JavaScript" type="text/javascript"><!--
function bbc_highlight(something, mode)
{
something.style.backgroundImage = "url(" + smf_images_url + (mode ? "/bbc/bbc_hoverbg.gif)" : "/bbc/bbc_bg.gif)");
}
// --></script>';
// The below array makes it dead easy to add images to this page. Add it to the array and everything else is done for you!
$context['bbc_tags'] = array();
$context['bbc_tags'][] = array(
'bold' => array('code' => 'b', 'before' => '[b]', 'after' => '[/b]', 'description' => $txt[253]),
'italicize' => array('code' => 'i', 'before' => '[i]', 'after' => '[/i]', 'description' => $txt[254]),
'underline' => array('code' => 'u', 'before' => '[u]', 'after' => '[/u]', 'description' => $txt[255]),
'strike' => array('code' => 's', 'before' => '[s]', 'after' => '[/s]', 'description' => $txt[441]),
array(),
'pre' => array('code' => 'pre', 'before' => '[pre]', 'after' => '[/pre]', 'description' => $txt[444]),
'left' => array('code' => 'left', 'before' => '[left]', 'after' => '[/left]', 'description' => $txt[445]),
'center' => array('code' => 'center', 'before' => '[center]', 'after' => '[/center]', 'description' => $txt[256]),
'right' => array('code' => 'right', 'before' => '[right]', 'after' => '[/right]', 'description' => $txt[446]),
array(),
'hr' => array('code' => 'hr', 'before' => '[hr]', 'description' => $txt[531]),
array(),
'size' => array('code' => 'size', 'before' => '[size=10pt]', 'after' => '[/size]', 'description' => $txt[532]),
'face' => array('code' => 'font', 'before' => '[font=Verdana]', 'after' => '[/font]', 'description' => $txt[533]),
);
$context['bbc_tags'][] = array(
'flash' => array('code' => 'flash', 'before' => '[flash=200,200]', 'after' => '[/flash]', 'description' => $txt[433]),
'video' => array('code' => 'video', 'before' => '[video]', 'after' => '[/video]', 'description' => 'Вставить видео'),
'img' => array('code' => 'img', 'before' => '[img]', 'after' => '[/img]', 'description' => $txt[435]),
'url' => array('code' => 'url', 'before' => '[url]', 'after' => '[/url]', 'description' => $txt[257]),
'email' => array('code' => 'email', 'before' => '[email]', 'after' => '[/email]', 'description' => $txt[258]),
'ftp' => array('code' => 'ftp', 'before' => '[ftp]', 'after' => '[/ftp]', 'description' => $txt[434]),
array(),
'table' => array('code' => 'table', 'before' => '[table]', 'after' => '[/table]', 'description' => $txt[436]),
'tr' => array('code' => 'td', 'before' => '[tr]', 'after' => '[/tr]', 'description' => $txt[449]),
'td' => array('code' => 'td', 'before' => '[td]', 'after' => '[/td]', 'description' => $txt[437]),
array(),
'sup' => array('code' => 'sup', 'before' => '[sup]', 'after' => '[/sup]', 'description' => $txt[447]),
'sub' => array('code' => 'sub', 'before' => '[sub]', 'after' => '[/sub]', 'description' => $txt[448]),
'tele' => array('code' => 'tt', 'before' => '[tt]', 'after' => '[/tt]', 'description' => $txt[440]),
array(),
'code' => array('code' => 'code', 'before' => '[code]', 'after' => '[/code]', 'description' => $txt[259]),
'quote' => array('code' => 'quote', 'before' => '[quote]', 'after' => '[/quote]', 'description' => $txt[260]),
array(),
'list' => array('code' => 'list', 'before' => '[list]\n[li]', 'after' => '[/li]\n[li][/li]\n[/list]', 'description' => $txt[261]),
);
// Here loop through the array, printing the images/rows/separators!
foreach ($context['bbc_tags'][0] as $image => $tag)
{
// Is there a "before" part for this bbc button? If not, it can't be a button!!
if (isset($tag['before']))
{
// Is this tag disabled?
if (!empty($context['disabled_tags'][$tag['code']]))
continue;
// If there's no after, we're just replacing the entire selection in the post box.
if (!isset($tag['after']))
echo '<a href="javascript:void(0);" onclick="replaceText(\'', $tag['before'], '\', document.', $context['post_form'], '.', $context['post_box_name'], '); return false;">';
// On the other hand, if there is one we are surrounding the selection ;).
else
echo '<a href="javascript:void(0);" onclick="surroundText(\'', $tag['before'], '\', \'', $tag['after'], '\', document.', $context['post_form'], '.', $context['post_box_name'], '); return false;">';
// Okay... we have the link. Now for the image and the closing </a>!
echo '<img onmouseover="bbc_highlight(this, true);" onmouseout="if (window.bbc_highlight) bbc_highlight(this, false);" src="', $settings['images_url'], '/bbc/', $image, '.gif" align="bottom" width="23" height="22" alt="', $tag['description'], '" title="', $tag['description'], '" border="0" style="background-image: url(', $settings['images_url'], '/bbc/bbc_bg.gif); margin: 1px 2px 1px 1px;" /></a>';
}
// I guess it's a divider...
else
echo '<img src="', $settings['images_url'], '/bbc/divider.gif" alt="|" style="margin: 0 3px 0 3px;" />';
}
// Print a drop down list for all the colors we allow!
if (!isset($context['disabled_tags']['color']))
echo ' <select onchange="surroundText(\'[color=\'+this.options[this.selectedIndex].value+\']\', \'[/color]\', document.', $context['post_form'], '.', $context['post_box_name'], '); this.selectedIndex = 0;" style="margin-bottom: 1ex;">
<option value="" selected="selected">', $txt['change_color'], '</option>
<option value="Black">', $txt[262], '</option>
<option value="Red">', $txt[263], '</option>
<option value="Yellow">', $txt[264], '</option>
<option value="Pink">', $txt[265], '</option>
<option value="Green">', $txt[266], '</option>
<option value="Orange">', $txt[267], '</option>
<option value="Purple">', $txt[268], '</option>
<option value="Blue">', $txt[269], '</option>
<option value="Beige">', $txt[270], '</option>
<option value="Brown">', $txt[271], '</option>
<option value="Teal">', $txt[272], '</option>
<option value="Navy">', $txt[273], '</option>
<option value="Maroon">', $txt[274], '</option>
<option value="LimeGreen">', $txt[275], '</option>
</select>';
echo '<br />';
// Print the buttom row of buttons!
foreach ($context['bbc_tags'][1] as $image => $tag)
{
if (isset($tag['before']))
{
// Is this tag disabled?
if (!empty($context['disabled_tags'][$tag['code']]))
continue;
// If there's no after, we're just replacing the entire selection in the post box.
if (!isset($tag['after']))
echo '<a href="javascript:void(0);" onclick="replaceText(\'', $tag['before'], '\', document.', $context['post_form'], '.', $context['post_box_name'], '); return false;">';
// On the other hand, if there is one we are surrounding the selection ;).
else
echo '<a href="javascript:void(0);" onclick="surroundText(\'', $tag['before'], '\', \'', $tag['after'], '\', document.', $context['post_form'], '.', $context['post_box_name'], '); return false;">';
// Okay... we have the link. Now for the image and the closing </a>!
echo '<img onmouseover="bbc_highlight(this, true);" onmouseout="if (window.bbc_highlight) bbc_highlight(this, false);" src="', $settings['images_url'], '/bbc/', $image, '.gif" align="bottom" width="23" height="22" alt="', $tag['description'], '" title="', $tag['description'], '" border="0" style="background-image: url(', $settings['images_url'], '/bbc/bbc_bg.gif); margin: 1px 2px 1px 1px;" /></a>';
}
// I guess it's a divider...
else
echo '<img src="', $settings['images_url'], '/bbc/divider.gif" alt="|" style="margin: 0 3px 0 3px;" />';
}
echo '
</td>
</tr>';
}
// Now start printing all of the smileys.
if (!empty($context['smileys']['postform']))
{
echo '
<tr>
<td align="right"></td>
<td valign="middle">';
// Show each row of smileys ;).
foreach ($context['smileys']['postform'] as $smiley_row)
{
foreach ($smiley_row['smileys'] as $smiley)
echo '
<a href="javascript:void(0);" onclick="replaceText(\' ', $smiley['code'], '\', document.', $context['post_form'], '.', $context['post_box_name'], '); return false;"><img src="', $settings['smileys_url'], '/', $smiley['filename'], '" align="bottom" alt="', $smiley['description'], '" title="', $smiley['description'], '" border="0" /></a>';
// If this isn't the last row, show a break.
if (empty($smiley_row['last']))
echo '<br />';
}
// If the smileys popup is to be shown... show it!
if (!empty($context['smileys']['popup']))
echo '
<a href="javascript:moreSmileys();">[', $txt['more_smileys'], ']</a>';
echo '
</td>
</tr>';
}
// If there are additional smileys then ensure we provide the javascript for them.
if (!empty($context['smileys']['popup']))
{
echo '
<script language="JavaScript" type="text/javascript"><!--
var smileys = [';
foreach ($context['smileys']['popup'] as $smiley_row)
{
echo '
[';
foreach ($smiley_row['smileys'] as $smiley)
{
echo '
["', $smiley['code'], '","', $smiley['filename'], '","', $smiley['js_description'], '"]';
if (empty($smiley['last']))
echo ',';
}
echo ']';
if (empty($smiley_row['last']))
echo ',';
}
echo '];
var smileyPopupWindow;
function moreSmileys()
{
var row, i;
if (smileyPopupWindow)
smileyPopupWindow.close();
smileyPopupWindow = window.open("", "add_smileys", "toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,width=480,height=220,resizable=yes");
smileyPopupWindow.document.write(\'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n<html>\');
smileyPopupWindow.document.write(\'\n\t<head>\n\t\t<title>', $txt['more_smileys_title'], '</title>\n\t\t<link rel="stylesheet" type="text/css" href="', $settings['theme_url'], '/style.css" />\n\t</head>\');
smileyPopupWindow.document.write(\'\n\t<body style="margin: 1ex;">\n\t\t<table width="100%" cellpadding="5" cellspacing="0" border="0" class="tborder">\n\t\t\t<tr class="titlebg"><td align="left">', $txt['more_smileys_pick'], '</td></tr>\n\t\t\t<tr class="windowbg"><td align="left">\');
for (row = 0; row < smileys.length; row++)
{
for (i = 0; i < smileys[row].length; i++)
{
smileys[row][i][2] = smileys[row][i][2].replace(/"/g, \'&quot;\');
smileyPopupWindow.document.write(\'<a href="javascript:void(0);" onclick="window.opener.replaceText(&quot; \' + smileys[row][i][0] + \'&quot;, window.opener.document.', $context['post_form'], '.', $context['post_box_name'], '); window.focus(); return false;"><img src="', $settings['smileys_url'], '/\' + smileys[row][i][1] + \'" alt="\' + smileys[row][i][2] + \'" title="\' + smileys[row][i][2] + \'" style="padding: 4px;" border="0" /></a>\');
}
smileyPopupWindow.document.write("<br />");
}
smileyPopupWindow.document.write(\'</td></tr>\n\t\t\t<tr><td align="center" class="windowbg"><a href="javascript:window.close();\\">', $txt['more_smileys_close_window'], '</a></td></tr>\n\t\t</table>\n\t</body>\n</html>\');
smileyPopupWindow.document.close();
}
// --></script>';
}
// Finally the most important bit - the actual text box to write in!
echo '
<tr>
<td valign="top" align="right"></td>
<td>
<textarea class="editor" name="', $context['post_box_name'], '" rows="', $context['post_box_rows'], '" cols="', $context['post_box_columns'], '" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onchange="storeCaret(this);" tabindex="3"', isset($context['post_error']['no_message']) || isset($context['post_error']['long_message']) ? ' style="border: 1px solid red;"' : '', '>', $message, '</textarea>
</td>
</tr>';
}
// The template for the spellchecker.
function template_spellcheck()
{
global $context, $settings, $options, $txt;
// The style information that makes the spellchecker look... like the forum hopefully!
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html', $context['right_to_left'] ? ' dir="rtl"' : '', '>
<head>
<title>', $txt['spell_check'], '</title>
<meta http-equiv="Content-Type" content="text/html; charset=', $context['character_set'], '" />
<link rel="stylesheet" type="text/css" href="', $settings['theme_url'], '/style.css" />
<style type="text/css">
body, td
{
font-size: small;
margin: 0;
}
.highlight
{
color: #FF0000;
font-weight: bold;
}
#spellview
{
border-style: outset;
border: 1px solid #000000;
padding: 5px;
width: 98%;
height: 344px;
overflow: auto;
}';
if ($context['browser']['needs_size_fix'])
echo '
@import(', $settings['default_theme_url'], '/fonts-compat.css);';
// As you may expect - we need a lot of javascript for this... load it form the separate files.
echo '
</style>
<script language="JavaScript" type="text/javascript"><!--
var spell_formname = "', $_POST['spell_formname'], '";
var spell_fieldname = "', $_POST['spell_fieldname'], '";
// --></script>
<script language="JavaScript" type="text/javascript" src="', $settings['default_theme_url'], '/spellcheck.js"></script>
<script language="JavaScript" type="text/javascript" src="', $settings['default_theme_url'], '/script.js"></script>
<script language="JavaScript" type="text/javascript"><!--
', $context['spell_js'], '
// --></script>
</head>
<body onload="startsp();">
<form name="fm1" onsubmit="return false;" style="margin: 0;">
<div id="spellview">&nbsp;</div>
<table border="0" cellpadding="4" cellspacing="0" width="100%"><tr class="windowbg">
<td width="50%" valign="top">
', $txt['spellcheck_change_to'], '<br />
<input type="text" name="changeto" style="width: 98%;" />
</td>
<td width="50%">
', $txt['spellcheck_suggest'], '<br />
<select name="suggestions" style="width: 98%;" size="5" onclick="if (this.selectedIndex != -1) this.form.changeto.value = this.options[this.selectedIndex].text">
</select>
</td>
</tr></table>
<div class="titlebg" align="right" style="padding: 4px;">
<input type="button" name="change" value="', $txt['spellcheck_change'], '" onclick="replaceWord()" />
<input type="button" name="changeall" value="', $txt['spellcheck_change_all'], '" onclick="replaceAll()" />
<input type="button" name="ignore" value="', $txt['spellcheck_ignore'], '" onclick="nextWord(false)" />
<input type="button" name="ignoreall" value="', $txt['spellcheck_ignore_all'], '" onclick="nextWord(true)" />
</div>
</form>
</body>
</html>';
}
?>