annotate 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
rev   line source
Chris@76 1 <?php
Chris@76 2 /**
Chris@76 3 * Simple Machines Forum (SMF)
Chris@76 4 *
Chris@76 5 * @package SMF
Chris@76 6 * @author Simple Machines
Chris@76 7 * @copyright 2011 Simple Machines
Chris@76 8 * @license http://www.simplemachines.org/about/smf/license.php BSD
Chris@76 9 *
Chris@76 10 * @version 2.0
Chris@76 11 */
Chris@76 12
Chris@76 13 // This function displays all the stuff you get with a richedit box - BBC, smileys etc.
Chris@76 14 function template_control_richedit($editor_id, $smileyContainer = null, $bbcContainer = null)
Chris@76 15 {
Chris@76 16 global $context, $settings, $options, $txt, $modSettings, $scripturl;
Chris@76 17
Chris@76 18 $editor_context = &$context['controls']['richedit'][$editor_id];
Chris@76 19
Chris@76 20 echo '
Chris@76 21 <div>
Chris@76 22 <div style="width: 98.8%;">
Chris@76 23 <div>
Chris@76 24 <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>
Chris@76 25 </div>
Chris@76 26 <div id="', $editor_id, '_resizer" class="richedit_resize"></div>
Chris@76 27 </div>
Chris@76 28 </div>
Chris@76 29 <input type="hidden" name="', $editor_id, '_mode" id="', $editor_id, '_mode" value="0" />
Chris@76 30 <script type="text/javascript"><!-- // --><![CDATA[';
Chris@76 31
Chris@76 32 // Show the smileys.
Chris@76 33 if ((!empty($context['smileys']['postform']) || !empty($context['smileys']['popup'])) && !$editor_context['disable_smiley_box'] && $smileyContainer !== null)
Chris@76 34 {
Chris@76 35 echo '
Chris@76 36 var oSmileyBox_', $editor_id, ' = new smc_SmileyBox({
Chris@76 37 sUniqueId: ', JavaScriptEscape('smileyBox_' . $editor_id), ',
Chris@76 38 sContainerDiv: ', JavaScriptEscape($smileyContainer), ',
Chris@76 39 sClickHandler: ', JavaScriptEscape('oEditorHandle_' . $editor_id . '.insertSmiley'), ',
Chris@76 40 oSmileyLocations: {';
Chris@76 41
Chris@76 42 foreach ($context['smileys'] as $location => $smileyRows)
Chris@76 43 {
Chris@76 44 echo '
Chris@76 45 ', $location, ': [';
Chris@76 46 foreach ($smileyRows as $smileyRow)
Chris@76 47 {
Chris@76 48 echo '
Chris@76 49 [';
Chris@76 50 foreach ($smileyRow['smileys'] as $smiley)
Chris@76 51 echo '
Chris@76 52 {
Chris@76 53 sCode: ', JavaScriptEscape($smiley['code']), ',
Chris@76 54 sSrc: ', JavaScriptEscape($settings['smileys_url'] . '/' . $smiley['filename']), ',
Chris@76 55 sDescription: ', JavaScriptEscape($smiley['description']), '
Chris@76 56 }', empty($smiley['isLast']) ? ',' : '';
Chris@76 57
Chris@76 58 echo '
Chris@76 59 ]', empty($smileyRow['isLast']) ? ',' : '';
Chris@76 60 }
Chris@76 61 echo '
Chris@76 62 ]', $location === 'postform' ? ',' : '';
Chris@76 63 }
Chris@76 64 echo '
Chris@76 65 },
Chris@76 66 sSmileyBoxTemplate: ', JavaScriptEscape('
Chris@76 67 %smileyRows% %moreSmileys%
Chris@76 68 '), ',
Chris@76 69 sSmileyRowTemplate: ', JavaScriptEscape('
Chris@76 70 <div>%smileyRow%</div>
Chris@76 71 '), ',
Chris@76 72 sSmileyTemplate: ', JavaScriptEscape('
Chris@76 73 <img src="%smileySource%" align="bottom" alt="%smileyDescription%" title="%smileyDescription%" id="%smileyId%" />
Chris@76 74 '), ',
Chris@76 75 sMoreSmileysTemplate: ', JavaScriptEscape('
Chris@76 76 <a href="#" id="%moreSmileysId%">[' . (!empty($context['smileys']['postform']) ? $txt['more_smileys'] : $txt['more_smileys_pick']) . ']</a>
Chris@76 77 '), ',
Chris@76 78 sMoreSmileysLinkId: ', JavaScriptEscape('moreSmileys_' . $editor_id), ',
Chris@76 79 sMoreSmileysPopupTemplate: ', JavaScriptEscape('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Chris@76 80 <html>
Chris@76 81 <head>
Chris@76 82 <title>' . $txt['more_smileys_title'] . '</title>
Chris@76 83 <link rel="stylesheet" type="text/css" href="' . $settings['theme_url'] . '/css/index' . $context['theme_variant'] . '.css?fin20" />
Chris@76 84 </head>
Chris@76 85 <body id="help_popup">
Chris@76 86 <div class="padding windowbg">
Chris@76 87 <div class="cat_bar">
Chris@76 88 <h3 class="catbg">
Chris@76 89 ' . $txt['more_smileys_pick'] . '
Chris@76 90 </h3>
Chris@76 91 </div>
Chris@76 92 <div class="padding">
Chris@76 93 %smileyRows%
Chris@76 94 </div>
Chris@76 95 <div class="smalltext centertext">
Chris@76 96 <a href="#" id="%moreSmileysCloseLinkId%">' . $txt['more_smileys_close_window'] . '</a>
Chris@76 97 </div>
Chris@76 98 </div>
Chris@76 99 </body>
Chris@76 100 </html>'), '
Chris@76 101 });';
Chris@76 102 }
Chris@76 103
Chris@76 104 if ($context['show_bbc'] && $bbcContainer !== null)
Chris@76 105 {
Chris@76 106 echo '
Chris@76 107 var oBBCBox_', $editor_id, ' = new smc_BBCButtonBox({
Chris@76 108 sUniqueId: ', JavaScriptEscape('BBCBox_' . $editor_id), ',
Chris@76 109 sContainerDiv: ', JavaScriptEscape($bbcContainer), ',
Chris@76 110 sButtonClickHandler: ', JavaScriptEscape('oEditorHandle_' . $editor_id . '.handleButtonClick'), ',
Chris@76 111 sSelectChangeHandler: ', JavaScriptEscape('oEditorHandle_' . $editor_id . '.handleSelectChange'), ',
Chris@76 112 aButtonRows: [';
Chris@76 113
Chris@76 114 // Here loop through the array, printing the images/rows/separators!
Chris@76 115 foreach ($context['bbc_tags'] as $i => $buttonRow)
Chris@76 116 {
Chris@76 117 echo '
Chris@76 118 [';
Chris@76 119 foreach ($buttonRow as $tag)
Chris@76 120 {
Chris@76 121 // Is there a "before" part for this bbc button? If not, it can't be a button!!
Chris@76 122 if (isset($tag['before']))
Chris@76 123 echo '
Chris@76 124 {
Chris@76 125 sType: \'button\',
Chris@76 126 bEnabled: ', empty($context['disabled_tags'][$tag['code']]) ? 'true' : 'false', ',
Chris@76 127 sImage: ', JavaScriptEscape($settings['images_url'] . '/bbc/' . $tag['image'] . '.gif'), ',
Chris@76 128 sCode: ', JavaScriptEscape($tag['code']), ',
Chris@76 129 sBefore: ', JavaScriptEscape($tag['before']), ',
Chris@76 130 sAfter: ', isset($tag['after']) ? JavaScriptEscape($tag['after']) : 'null', ',
Chris@76 131 sDescription: ', JavaScriptEscape($tag['description']), '
Chris@76 132 }', empty($tag['isLast']) ? ',' : '';
Chris@76 133
Chris@76 134 // Must be a divider then.
Chris@76 135 else
Chris@76 136 echo '
Chris@76 137 {
Chris@76 138 sType: \'divider\'
Chris@76 139 }', empty($tag['isLast']) ? ',' : '';
Chris@76 140 }
Chris@76 141
Chris@76 142 // Add the select boxes to the first row.
Chris@76 143 if ($i == 0)
Chris@76 144 {
Chris@76 145 // Show the font drop down...
Chris@76 146 if (!isset($context['disabled_tags']['font']))
Chris@76 147 echo ',
Chris@76 148 {
Chris@76 149 sType: \'select\',
Chris@76 150 sName: \'sel_face\',
Chris@76 151 oOptions: {
Chris@76 152 \'\': ', JavaScriptEscape($txt['font_face']), ',
Chris@76 153 \'courier\': \'Courier\',
Chris@76 154 \'arial\': \'Arial\',
Chris@76 155 \'arial black\': \'Arial Black\',
Chris@76 156 \'impact\': \'Impact\',
Chris@76 157 \'verdana\': \'Verdana\',
Chris@76 158 \'times new roman\': \'Times New Roman\',
Chris@76 159 \'georgia\': \'Georgia\',
Chris@76 160 \'andale mono\': \'Andale Mono\',
Chris@76 161 \'trebuchet ms\': \'Trebuchet MS\',
Chris@76 162 \'comic sans ms\': \'Comic Sans MS\'
Chris@76 163 }
Chris@76 164 }';
Chris@76 165
Chris@76 166 // Font sizes anyone?
Chris@76 167 if (!isset($context['disabled_tags']['size']))
Chris@76 168 echo ',
Chris@76 169 {
Chris@76 170 sType: \'select\',
Chris@76 171 sName: \'sel_size\',
Chris@76 172 oOptions: {
Chris@76 173 \'\': ', JavaScriptEscape($txt['font_size']), ',
Chris@76 174 \'1\': \'8pt\',
Chris@76 175 \'2\': \'10pt\',
Chris@76 176 \'3\': \'12pt\',
Chris@76 177 \'4\': \'14pt\',
Chris@76 178 \'5\': \'18pt\',
Chris@76 179 \'6\': \'24pt\',
Chris@76 180 \'7\': \'36pt\'
Chris@76 181 }
Chris@76 182 }';
Chris@76 183
Chris@76 184 // Print a drop down list for all the colors we allow!
Chris@76 185 if (!isset($context['disabled_tags']['color']))
Chris@76 186 echo ',
Chris@76 187 {
Chris@76 188 sType: \'select\',
Chris@76 189 sName: \'sel_color\',
Chris@76 190 oOptions: {
Chris@76 191 \'\': ', JavaScriptEscape($txt['change_color']), ',
Chris@76 192 \'black\': ', JavaScriptEscape($txt['black']), ',
Chris@76 193 \'red\': ', JavaScriptEscape($txt['red']), ',
Chris@76 194 \'yellow\': ', JavaScriptEscape($txt['yellow']), ',
Chris@76 195 \'pink\': ', JavaScriptEscape($txt['pink']), ',
Chris@76 196 \'green\': ', JavaScriptEscape($txt['green']), ',
Chris@76 197 \'orange\': ', JavaScriptEscape($txt['orange']), ',
Chris@76 198 \'purple\': ', JavaScriptEscape($txt['purple']), ',
Chris@76 199 \'blue\': ', JavaScriptEscape($txt['blue']), ',
Chris@76 200 \'beige\': ', JavaScriptEscape($txt['beige']), ',
Chris@76 201 \'brown\': ', JavaScriptEscape($txt['brown']), ',
Chris@76 202 \'teal\': ', JavaScriptEscape($txt['teal']), ',
Chris@76 203 \'navy\': ', JavaScriptEscape($txt['navy']), ',
Chris@76 204 \'maroon\': ', JavaScriptEscape($txt['maroon']), ',
Chris@76 205 \'limegreen\': ', JavaScriptEscape($txt['lime_green']), ',
Chris@76 206 \'white\': ', JavaScriptEscape($txt['white']), '
Chris@76 207 }
Chris@76 208 }';
Chris@76 209 }
Chris@76 210 echo '
Chris@76 211 ]', $i == count($context['bbc_tags']) - 1 ? '' : ',';
Chris@76 212 }
Chris@76 213 echo '
Chris@76 214 ],
Chris@76 215 sButtonTemplate: ', JavaScriptEscape('
Chris@76 216 <img id="%buttonId%" src="%buttonSrc%" align="bottom" width="23" height="22" alt="%buttonDescription%" title="%buttonDescription%" />
Chris@76 217 '), ',
Chris@76 218 sButtonBackgroundImage: ', JavaScriptEscape($settings['images_url'] . '/bbc/bbc_bg.gif'), ',
Chris@76 219 sButtonBackgroundImageHover: ', JavaScriptEscape($settings['images_url'] . '/bbc/bbc_hoverbg.gif'), ',
Chris@76 220 sActiveButtonBackgroundImage: ', JavaScriptEscape($settings['images_url'] . '/bbc/bbc_hoverbg.gif'), ',
Chris@76 221 sDividerTemplate: ', JavaScriptEscape('
Chris@76 222 <img src="' . $settings['images_url'] . '/bbc/divider.gif" alt="|" style="margin: 0 3px 0 3px;" />
Chris@76 223 '), ',
Chris@76 224 sSelectTemplate: ', JavaScriptEscape('
Chris@76 225 <select name="%selectName%" id="%selectId%" style="margin-bottom: 1ex; font-size: x-small;">
Chris@76 226 %selectOptions%
Chris@76 227 </select>
Chris@76 228 '), ',
Chris@76 229 sButtonRowTemplate: ', JavaScriptEscape('
Chris@76 230 <div>%buttonRow%</div>
Chris@76 231 '), '
Chris@76 232 });';
Chris@76 233 }
Chris@76 234
Chris@76 235 // Now it's all drawn out we'll actually setup the box.
Chris@76 236 echo '
Chris@76 237 var oEditorHandle_', $editor_id, ' = new smc_Editor({
Chris@76 238 sSessionId: ', JavaScriptEscape($context['session_id']), ',
Chris@76 239 sSessionVar: ', JavaScriptEscape($context['session_var']), ',
Chris@76 240 sFormId: ', JavaScriptEscape($editor_context['form']), ',
Chris@76 241 sUniqueId: ', JavaScriptEscape($editor_id), ',
Chris@76 242 bRTL: ', $txt['lang_rtl'] ? 'true' : 'false', ',
Chris@76 243 bWysiwyg: ', $editor_context['rich_active'] ? 'true' : 'false', ',
Chris@76 244 sText: ', JavaScriptEscape($editor_context['rich_active'] ? $editor_context['rich_value'] : ''), ',
Chris@76 245 sEditWidth: ', JavaScriptEscape($editor_context['width']), ',
Chris@76 246 sEditHeight: ', JavaScriptEscape($editor_context['height']), ',
Chris@76 247 bRichEditOff: ', empty($modSettings['disable_wysiwyg']) ? 'false' : 'true', ',
Chris@76 248 oSmileyBox: ', !empty($context['smileys']['postform']) && !$editor_context['disable_smiley_box'] && $smileyContainer !== null ? 'oSmileyBox_' . $editor_id : 'null', ',
Chris@76 249 oBBCBox: ', $context['show_bbc'] && $bbcContainer !== null ? 'oBBCBox_' . $editor_id : 'null', '
Chris@76 250 });
Chris@76 251 smf_editorArray[smf_editorArray.length] = oEditorHandle_', $editor_id, ';';
Chris@76 252
Chris@76 253 echo '
Chris@76 254 // ]]></script>';
Chris@76 255 }
Chris@76 256
Chris@76 257 function template_control_richedit_buttons($editor_id)
Chris@76 258 {
Chris@76 259 global $context, $settings, $options, $txt, $modSettings, $scripturl;
Chris@76 260
Chris@76 261 $editor_context = &$context['controls']['richedit'][$editor_id];
Chris@76 262
Chris@76 263 echo '
Chris@76 264 <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" />';
Chris@76 265
Chris@76 266 if ($editor_context['preview_type'])
Chris@76 267 echo '
Chris@76 268 <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" />';
Chris@76 269
Chris@76 270 if ($context['show_spellchecking'])
Chris@76 271 echo '
Chris@76 272 <input type="button" value="', $txt['spell_check'], '" tabindex="', $context['tabindex']++, '" onclick="oEditorHandle_', $editor_id, '.spellCheckStart();" class="button_submit" />';
Chris@76 273 }
Chris@76 274
Chris@76 275 // What's this, verification?!
Chris@76 276 function template_control_verification($verify_id, $display_type = 'all', $reset = false)
Chris@76 277 {
Chris@76 278 global $context, $settings, $options, $txt, $modSettings;
Chris@76 279
Chris@76 280 $verify_context = &$context['controls']['verification'][$verify_id];
Chris@76 281
Chris@76 282 // Keep track of where we are.
Chris@76 283 if (empty($verify_context['tracking']) || $reset)
Chris@76 284 $verify_context['tracking'] = 0;
Chris@76 285
Chris@76 286 // How many items are there to display in total.
Chris@76 287 $total_items = count($verify_context['questions']) + ($verify_context['show_visual'] ? 1 : 0);
Chris@76 288
Chris@76 289 // If we've gone too far, stop.
Chris@76 290 if ($verify_context['tracking'] > $total_items)
Chris@76 291 return false;
Chris@76 292
Chris@76 293 // Loop through each item to show them.
Chris@76 294 for ($i = 0; $i < $total_items; $i++)
Chris@76 295 {
Chris@76 296 // If we're after a single item only show it if we're in the right place.
Chris@76 297 if ($display_type == 'single' && $verify_context['tracking'] != $i)
Chris@76 298 continue;
Chris@76 299
Chris@76 300 if ($display_type != 'single')
Chris@76 301 echo '
Chris@76 302 <div id="verification_control_', $i, '" class="verification_control">';
Chris@76 303
Chris@76 304 // Do the actual stuff - image first?
Chris@76 305 if ($i == 0 && $verify_context['show_visual'])
Chris@76 306 {
Chris@76 307 if ($context['use_graphic_library'])
Chris@76 308 echo '
Chris@76 309 <img src="', $verify_context['image_href'], '" alt="', $txt['visual_verification_description'], '" id="verification_image_', $verify_id, '" />';
Chris@76 310 else
Chris@76 311 echo '
Chris@76 312 <img src="', $verify_context['image_href'], ';letter=1" alt="', $txt['visual_verification_description'], '" id="verification_image_', $verify_id, '_1" />
Chris@76 313 <img src="', $verify_context['image_href'], ';letter=2" alt="', $txt['visual_verification_description'], '" id="verification_image_', $verify_id, '_2" />
Chris@76 314 <img src="', $verify_context['image_href'], ';letter=3" alt="', $txt['visual_verification_description'], '" id="verification_image_', $verify_id, '_3" />
Chris@76 315 <img src="', $verify_context['image_href'], ';letter=4" alt="', $txt['visual_verification_description'], '" id="verification_image_', $verify_id, '_4" />
Chris@76 316 <img src="', $verify_context['image_href'], ';letter=5" alt="', $txt['visual_verification_description'], '" id="verification_image_', $verify_id, '_5" />
Chris@76 317 <img src="', $verify_context['image_href'], ';letter=6" alt="', $txt['visual_verification_description'], '" id="verification_image_', $verify_id, '_6" />';
Chris@76 318
Chris@76 319 if (WIRELESS)
Chris@76 320 echo '<br />
Chris@76 321 <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" />';
Chris@76 322 else
Chris@76 323 echo '
Chris@76 324 <div class="smalltext" style="margin: 4px 0 8px 0;">
Chris@76 325 <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 />
Chris@76 326 ', $txt['visual_verification_description'], ':', $display_type != 'quick_reply' ? '<br />' : '', '
Chris@76 327 <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" />
Chris@76 328 </div>';
Chris@76 329 }
Chris@76 330 else
Chris@76 331 {
Chris@76 332 // Where in the question array is this question?
Chris@76 333 $qIndex = $verify_context['show_visual'] ? $i - 1 : $i;
Chris@76 334
Chris@76 335 echo '
Chris@76 336 <div class="smalltext">
Chris@76 337 ', $verify_context['questions'][$qIndex]['q'], ':<br />
Chris@76 338 <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" />
Chris@76 339 </div>';
Chris@76 340 }
Chris@76 341
Chris@76 342 if ($display_type != 'single')
Chris@76 343 echo '
Chris@76 344 </div>';
Chris@76 345
Chris@76 346 // If we were displaying just one and we did it, break.
Chris@76 347 if ($display_type == 'single' && $verify_context['tracking'] == $i)
Chris@76 348 break;
Chris@76 349 }
Chris@76 350
Chris@76 351 // Assume we found something, always,
Chris@76 352 $verify_context['tracking']++;
Chris@76 353
Chris@76 354 // Tell something displaying piecemeal to keep going.
Chris@76 355 if ($display_type == 'single')
Chris@76 356 return true;
Chris@76 357 }
Chris@76 358
Chris@76 359 ?>