diff forum/Themes/default/GenericControls.template.php @ 76:e3e11437ecea website

Add forum code
author Chris Cannam
date Sun, 07 Jul 2013 11:25:48 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/forum/Themes/default/GenericControls.template.php	Sun Jul 07 11:25:48 2013 +0200
@@ -0,0 +1,359 @@
+<?php
+/**
+ * Simple Machines Forum (SMF)
+ *
+ * @package SMF
+ * @author Simple Machines
+ * @copyright 2011 Simple Machines
+ * @license http://www.simplemachines.org/about/smf/license.php BSD
+ *
+ * @version 2.0
+ */
+
+// This function displays all the stuff you get with a richedit box - BBC, smileys etc.
+function template_control_richedit($editor_id, $smileyContainer = null, $bbcContainer = null)
+{
+	global $context, $settings, $options, $txt, $modSettings, $scripturl;
+
+	$editor_context = &$context['controls']['richedit'][$editor_id];
+
+	echo '
+		<div>
+			<div style="width: 98.8%;">
+				<div>
+					<textarea class="editor" name="', $editor_id, '" id="', $editor_id, '" rows="', $editor_context['rows'], '" cols="600" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onchange="storeCaret(this);" tabindex="', $context['tabindex']++, '" style="height: ', $editor_context['height'], '; ', isset($context['post_error']['no_message']) || isset($context['post_error']['long_message']) ? 'border: 1px solid red;' : '', '">', $editor_context['value'], '</textarea>
+				</div>
+				<div id="', $editor_id, '_resizer" class="richedit_resize"></div>
+			</div>
+		</div>
+		<input type="hidden" name="', $editor_id, '_mode" id="', $editor_id, '_mode" value="0" />
+		<script type="text/javascript"><!-- // --><![CDATA[';
+
+		// Show the smileys.
+		if ((!empty($context['smileys']['postform']) || !empty($context['smileys']['popup'])) && !$editor_context['disable_smiley_box'] && $smileyContainer !== null)
+		{
+			echo '
+				var oSmileyBox_', $editor_id, ' = new smc_SmileyBox({
+					sUniqueId: ', JavaScriptEscape('smileyBox_' . $editor_id), ',
+					sContainerDiv: ', JavaScriptEscape($smileyContainer), ',
+					sClickHandler: ', JavaScriptEscape('oEditorHandle_' . $editor_id . '.insertSmiley'), ',
+					oSmileyLocations: {';
+
+			foreach ($context['smileys'] as $location => $smileyRows)
+			{
+				echo '
+						', $location, ': [';
+				foreach ($smileyRows as $smileyRow)
+				{
+					echo '
+							[';
+					foreach ($smileyRow['smileys'] as $smiley)
+						echo '
+								{
+									sCode: ', JavaScriptEscape($smiley['code']), ',
+									sSrc: ', JavaScriptEscape($settings['smileys_url'] . '/' . $smiley['filename']), ',
+									sDescription: ', JavaScriptEscape($smiley['description']), '
+								}', empty($smiley['isLast']) ? ',' : '';
+
+				echo '
+							]', empty($smileyRow['isLast']) ? ',' : '';
+				}
+				echo '
+						]', $location === 'postform' ? ',' : '';
+			}
+			echo '
+					},
+					sSmileyBoxTemplate: ', JavaScriptEscape('
+						%smileyRows% %moreSmileys%
+					'), ',
+					sSmileyRowTemplate: ', JavaScriptEscape('
+						<div>%smileyRow%</div>
+					'), ',
+					sSmileyTemplate: ', JavaScriptEscape('
+						<img src="%smileySource%" align="bottom" alt="%smileyDescription%" title="%smileyDescription%" id="%smileyId%" />
+					'), ',
+					sMoreSmileysTemplate: ', JavaScriptEscape('
+						<a href="#" id="%moreSmileysId%">[' . (!empty($context['smileys']['postform']) ? $txt['more_smileys'] : $txt['more_smileys_pick']) . ']</a>
+					'), ',
+					sMoreSmileysLinkId: ', JavaScriptEscape('moreSmileys_' . $editor_id), ',
+					sMoreSmileysPopupTemplate: ', JavaScriptEscape('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+						<html>
+							<head>
+								<title>' . $txt['more_smileys_title'] . '</title>
+								<link rel="stylesheet" type="text/css" href="' . $settings['theme_url'] . '/css/index' . $context['theme_variant'] . '.css?fin20" />
+							</head>
+							<body id="help_popup">
+								<div class="padding windowbg">
+									<div class="cat_bar">
+										<h3 class="catbg">
+											' . $txt['more_smileys_pick'] . '
+										</h3>
+									</div>
+									<div class="padding">
+										%smileyRows%
+									</div>
+									<div class="smalltext centertext">
+										<a href="#" id="%moreSmileysCloseLinkId%">' . $txt['more_smileys_close_window'] . '</a>
+									</div>
+								</div>
+							</body>
+						</html>'), '
+				});';
+		}
+
+		if ($context['show_bbc'] && $bbcContainer !== null)
+		{
+			echo '
+				var oBBCBox_', $editor_id, ' = new smc_BBCButtonBox({
+					sUniqueId: ', JavaScriptEscape('BBCBox_' . $editor_id), ',
+					sContainerDiv: ', JavaScriptEscape($bbcContainer), ',
+					sButtonClickHandler: ', JavaScriptEscape('oEditorHandle_' . $editor_id . '.handleButtonClick'), ',
+					sSelectChangeHandler: ', JavaScriptEscape('oEditorHandle_' . $editor_id . '.handleSelectChange'), ',
+					aButtonRows: [';
+
+			// Here loop through the array, printing the images/rows/separators!
+			foreach ($context['bbc_tags'] as $i => $buttonRow)
+			{
+				echo '
+						[';
+				foreach ($buttonRow as $tag)
+				{
+					// Is there a "before" part for this bbc button? If not, it can't be a button!!
+					if (isset($tag['before']))
+						echo '
+							{
+								sType: \'button\',
+								bEnabled: ', empty($context['disabled_tags'][$tag['code']]) ? 'true' : 'false', ',
+								sImage: ', JavaScriptEscape($settings['images_url'] . '/bbc/' . $tag['image'] . '.gif'), ',
+								sCode: ', JavaScriptEscape($tag['code']), ',
+								sBefore: ', JavaScriptEscape($tag['before']), ',
+								sAfter: ', isset($tag['after']) ? JavaScriptEscape($tag['after']) : 'null', ',
+								sDescription: ', JavaScriptEscape($tag['description']), '
+							}', empty($tag['isLast']) ? ',' : '';
+
+					// Must be a divider then.
+					else
+						echo '
+							{
+								sType: \'divider\'
+							}', empty($tag['isLast']) ? ',' : '';
+				}
+
+				// Add the select boxes to the first row.
+				if ($i == 0)
+				{
+					// Show the font drop down...
+					if (!isset($context['disabled_tags']['font']))
+						echo ',
+							{
+								sType: \'select\',
+								sName: \'sel_face\',
+								oOptions: {
+									\'\': ', JavaScriptEscape($txt['font_face']), ',
+									\'courier\': \'Courier\',
+									\'arial\': \'Arial\',
+									\'arial black\': \'Arial Black\',
+									\'impact\': \'Impact\',
+									\'verdana\': \'Verdana\',
+									\'times new roman\': \'Times New Roman\',
+									\'georgia\': \'Georgia\',
+									\'andale mono\': \'Andale Mono\',
+									\'trebuchet ms\': \'Trebuchet MS\',
+									\'comic sans ms\': \'Comic Sans MS\'
+								}
+							}';
+
+					// Font sizes anyone?
+					if (!isset($context['disabled_tags']['size']))
+						echo ',
+							{
+								sType: \'select\',
+								sName: \'sel_size\',
+								oOptions: {
+									\'\': ', JavaScriptEscape($txt['font_size']), ',
+									\'1\': \'8pt\',
+									\'2\': \'10pt\',
+									\'3\': \'12pt\',
+									\'4\': \'14pt\',
+									\'5\': \'18pt\',
+									\'6\': \'24pt\',
+									\'7\': \'36pt\'
+								}
+							}';
+
+					// Print a drop down list for all the colors we allow!
+					if (!isset($context['disabled_tags']['color']))
+						echo ',
+							{
+								sType: \'select\',
+								sName: \'sel_color\',
+								oOptions: {
+									\'\': ', JavaScriptEscape($txt['change_color']), ',
+									\'black\': ', JavaScriptEscape($txt['black']), ',
+									\'red\': ', JavaScriptEscape($txt['red']), ',
+									\'yellow\': ', JavaScriptEscape($txt['yellow']), ',
+									\'pink\': ', JavaScriptEscape($txt['pink']), ',
+									\'green\': ', JavaScriptEscape($txt['green']), ',
+									\'orange\': ', JavaScriptEscape($txt['orange']), ',
+									\'purple\': ', JavaScriptEscape($txt['purple']), ',
+									\'blue\': ', JavaScriptEscape($txt['blue']), ',
+									\'beige\': ', JavaScriptEscape($txt['beige']), ',
+									\'brown\': ', JavaScriptEscape($txt['brown']), ',
+									\'teal\': ', JavaScriptEscape($txt['teal']), ',
+									\'navy\': ', JavaScriptEscape($txt['navy']), ',
+									\'maroon\': ', JavaScriptEscape($txt['maroon']), ',
+									\'limegreen\': ', JavaScriptEscape($txt['lime_green']), ',
+									\'white\': ', JavaScriptEscape($txt['white']), '
+								}
+							}';
+				}
+				echo '
+						]', $i == count($context['bbc_tags']) - 1 ? '' : ',';
+			}
+			echo '
+					],
+					sButtonTemplate: ', JavaScriptEscape('
+						<img id="%buttonId%" src="%buttonSrc%" align="bottom" width="23" height="22" alt="%buttonDescription%" title="%buttonDescription%" />
+					'), ',
+					sButtonBackgroundImage: ', JavaScriptEscape($settings['images_url'] . '/bbc/bbc_bg.gif'), ',
+					sButtonBackgroundImageHover: ', JavaScriptEscape($settings['images_url'] . '/bbc/bbc_hoverbg.gif'), ',
+					sActiveButtonBackgroundImage: ', JavaScriptEscape($settings['images_url'] . '/bbc/bbc_hoverbg.gif'), ',
+					sDividerTemplate: ', JavaScriptEscape('
+						<img src="' . $settings['images_url'] . '/bbc/divider.gif" alt="|" style="margin: 0 3px 0 3px;" />
+					'), ',
+					sSelectTemplate: ', JavaScriptEscape('
+						<select name="%selectName%" id="%selectId%" style="margin-bottom: 1ex; font-size: x-small;">
+							%selectOptions%
+						</select>
+					'), ',
+					sButtonRowTemplate: ', JavaScriptEscape('
+						<div>%buttonRow%</div>
+					'), '
+				});';
+		}
+
+		// Now it's all drawn out we'll actually setup the box.
+		echo '
+				var oEditorHandle_', $editor_id, ' = new smc_Editor({
+					sSessionId: ', JavaScriptEscape($context['session_id']), ',
+					sSessionVar: ', JavaScriptEscape($context['session_var']), ',
+					sFormId: ', JavaScriptEscape($editor_context['form']), ',
+					sUniqueId: ', JavaScriptEscape($editor_id), ',
+					bRTL: ', $txt['lang_rtl'] ? 'true' : 'false', ',
+					bWysiwyg: ', $editor_context['rich_active'] ? 'true' : 'false', ',
+					sText: ', JavaScriptEscape($editor_context['rich_active'] ? $editor_context['rich_value'] : ''), ',
+					sEditWidth: ', JavaScriptEscape($editor_context['width']), ',
+					sEditHeight: ', JavaScriptEscape($editor_context['height']), ',
+					bRichEditOff: ', empty($modSettings['disable_wysiwyg']) ? 'false' : 'true', ',
+					oSmileyBox: ', !empty($context['smileys']['postform']) && !$editor_context['disable_smiley_box'] && $smileyContainer !== null ? 'oSmileyBox_' . $editor_id : 'null', ',
+					oBBCBox: ', $context['show_bbc'] && $bbcContainer !== null ? 'oBBCBox_' . $editor_id : 'null', '
+				});
+				smf_editorArray[smf_editorArray.length] = oEditorHandle_', $editor_id, ';';
+
+		echo '
+			// ]]></script>';
+}
+
+function template_control_richedit_buttons($editor_id)
+{
+	global $context, $settings, $options, $txt, $modSettings, $scripturl;
+
+	$editor_context = &$context['controls']['richedit'][$editor_id];
+
+	echo '
+		<input type="submit" value="', isset($editor_context['labels']['post_button']) ? $editor_context['labels']['post_button'] : $txt['post'], '" tabindex="', $context['tabindex']++, '" onclick="return submitThisOnce(this);" accesskey="s" class="button_submit" />';
+
+	if ($editor_context['preview_type'])
+		echo '
+		<input type="submit" name="preview" value="', isset($editor_context['labels']['preview_button']) ? $editor_context['labels']['preview_button'] : $txt['preview'], '" tabindex="', $context['tabindex']++, '" onclick="', $editor_context['preview_type'] == 2 ? 'return event.ctrlKey || previewPost();' : 'return submitThisOnce(this);', '" accesskey="p" class="button_submit" />';
+
+	if ($context['show_spellchecking'])
+		echo '
+		<input type="button" value="', $txt['spell_check'], '" tabindex="', $context['tabindex']++, '" onclick="oEditorHandle_', $editor_id, '.spellCheckStart();" class="button_submit" />';
+}
+
+// What's this, verification?!
+function template_control_verification($verify_id, $display_type = 'all', $reset = false)
+{
+	global $context, $settings, $options, $txt, $modSettings;
+
+	$verify_context = &$context['controls']['verification'][$verify_id];
+
+	// Keep track of where we are.
+	if (empty($verify_context['tracking']) || $reset)
+		$verify_context['tracking'] = 0;
+
+	// How many items are there to display in total.
+	$total_items = count($verify_context['questions']) + ($verify_context['show_visual'] ? 1 : 0);
+
+	// If we've gone too far, stop.
+	if ($verify_context['tracking'] > $total_items)
+		return false;
+
+	// Loop through each item to show them.
+	for ($i = 0; $i < $total_items; $i++)
+	{
+		// If we're after a single item only show it if we're in the right place.
+		if ($display_type == 'single' && $verify_context['tracking'] != $i)
+			continue;
+
+		if ($display_type != 'single')
+			echo '
+			<div id="verification_control_', $i, '" class="verification_control">';
+
+		// Do the actual stuff - image first?
+		if ($i == 0 && $verify_context['show_visual'])
+		{
+			if ($context['use_graphic_library'])
+				echo '
+				<img src="', $verify_context['image_href'], '" alt="', $txt['visual_verification_description'], '" id="verification_image_', $verify_id, '" />';
+			else
+				echo '
+				<img src="', $verify_context['image_href'], ';letter=1" alt="', $txt['visual_verification_description'], '" id="verification_image_', $verify_id, '_1" />
+				<img src="', $verify_context['image_href'], ';letter=2" alt="', $txt['visual_verification_description'], '" id="verification_image_', $verify_id, '_2" />
+				<img src="', $verify_context['image_href'], ';letter=3" alt="', $txt['visual_verification_description'], '" id="verification_image_', $verify_id, '_3" />
+				<img src="', $verify_context['image_href'], ';letter=4" alt="', $txt['visual_verification_description'], '" id="verification_image_', $verify_id, '_4" />
+				<img src="', $verify_context['image_href'], ';letter=5" alt="', $txt['visual_verification_description'], '" id="verification_image_', $verify_id, '_5" />
+				<img src="', $verify_context['image_href'], ';letter=6" alt="', $txt['visual_verification_description'], '" id="verification_image_', $verify_id, '_6" />';
+
+			if (WIRELESS)
+				echo '<br />
+				<input type="text" name="', $verify_id, '_vv[code]" value="', !empty($verify_context['text_value']) ? $verify_context['text_value'] : '', '" size="30" tabindex="', $context['tabindex']++, '" class="input_text" />';
+			else
+				echo '
+				<div class="smalltext" style="margin: 4px 0 8px 0;">
+					<a href="', $verify_context['image_href'], ';sound" id="visual_verification_', $verify_id, '_sound" rel="nofollow">', $txt['visual_verification_sound'], '</a> / <a href="#" id="visual_verification_', $verify_id, '_refresh">', $txt['visual_verification_request_new'], '</a>', $display_type != 'quick_reply' ? '<br />' : '', '<br />
+					', $txt['visual_verification_description'], ':', $display_type != 'quick_reply' ? '<br />' : '', '
+					<input type="text" name="', $verify_id, '_vv[code]" value="', !empty($verify_context['text_value']) ? $verify_context['text_value'] : '', '" size="30" tabindex="', $context['tabindex']++, '" class="input_text" />
+				</div>';
+		}
+		else
+		{
+			// Where in the question array is this question?
+			$qIndex = $verify_context['show_visual'] ? $i - 1 : $i;
+
+			echo '
+				<div class="smalltext">
+					', $verify_context['questions'][$qIndex]['q'], ':<br />
+					<input type="text" name="', $verify_id, '_vv[q][', $verify_context['questions'][$qIndex]['id'], ']" size="30" value="', $verify_context['questions'][$qIndex]['a'], '" ', $verify_context['questions'][$qIndex]['is_error'] ? 'style="border: 1px red solid;"' : '', ' tabindex="', $context['tabindex']++, '" class="input_text" />
+				</div>';
+		}
+
+		if ($display_type != 'single')
+			echo '
+			</div>';
+
+		// If we were displaying just one and we did it, break.
+		if ($display_type == 'single' && $verify_context['tracking'] == $i)
+			break;
+	}
+
+	// Assume we found something, always,
+	$verify_context['tracking']++;
+
+	// Tell something displaying piecemeal to keep going.
+	if ($display_type == 'single')
+		return true;
+}
+
+?>
\ No newline at end of file