1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307: 308: 309: 310: 311: 312: 313: 314: 315: 316: 317: 318: 319: 320: 321: 322: 323: 324: 325: 326: 327: 328: 329: 330: 331: 332: 333: 334: 335: 336: 337: 338: 339: 340: 341: 342: 343: 344: 345: 346: 347: 348: 349: 350: 351: 352: 353: 354: 355: 356: 357: 358: 359: 360: 361: 362: 363: 364: 365: 366: 367: 368: 369: 370: 371: 372: 373: 374: 375: 376: 377: 378: 379: 380: 381: 382: 383: 384: 385: 386: 387: 388: 389: 390: 391: 392: 393: 394: 395: 396: 397: 398: 399: 400: 401: 402: 403: 404: 405: 406: 407: 408: 409: 410: 411: 412: 413: 414: 415: 416: 417: 418: 419: 420: 421: 422: 423: 424: 425: 426: 427: 428: 429: 430: 431: 432: 433: 434: 435: 436: 437: 438: 439: 440: 441: 442: 443: 444: 445: 446: 447: 448: 449: 450: 451: 452: 453: 454: 455: 456: 457: 458: 459: 460: 461: 462: 463: 464: 465: 466: 467: 468: 469: 470: 471: 472: 473: 474: 475: 476: 477: 478: 479: 480: 481: 482: 483: 484: 485: 486: 487: 488: 489: 490: 491: 492: 493: 494: 495: 496: 497: 498: 499: 500: 501: 502: 503: 504: 505: 506: 507: 508: 509: 510: 511: 512: 513: 514: 515: 516: 517: 518: 519: 520: 521: 522: 523: 524: 525: 526: 527: 528: 529: 530: 531: 532: 533: 534: 535: 536: 537: 538: 539: 540: 541: 542: 543: 544: 545: 546: 547: 548: 549: 550: 551: 552: 553: 554: 555: 556: 557: 558: 559: 560: 561: 562: 563: 564: 565: 566: 567: 568: 569: 570: 571: 572: 573: 574: 575: 576: 577: 578: 579: 580: 581: 582: 583: 584: 585: 586: 587: 588: 589: 590: 591: 592: 593: 594: 595: 596: 597: 598: 599: 600: 601: 602: 603: 604: 605: 606: 607: 608: 609: 610: 611: 612: 613: 614: 615: 616: 617: 618: 619: 620: 621: 622: 623: 624: 625: 626: 627: 628: 629: 630: 631: 632: 633: 634: 635: 636: 637: 638: 639: 640: 641: 642: 643: 644: 645: 646: 647: 648: 649: 650: 651: 652: 653: 654: 655: 656: 657: 658: 659: 660: 661: 662: 663: 664: 665: 666: 667: 668: 669: 670: 671: 672: 673: 674: 675: 676: 677: 678: 679: 680: 681: 682: 683: 684: 685: 686: 687: 688: 689: 690: 691: 692: 693: 694: 695: 696: 697: 698: 699: 700: 701: 702: 703: 704: 705: 706: 707: 708: 709: 710: 711: 712: 713: 714: 715: 716: 717: 718: 719: 720: 721: 722: 723: 724: 725: 726: 727: 728: 729: 730: 731: 732: 733: 734: 735: 736: 737: 738: 739: 740: 741: 742:
<?php
function template_init()
{
global $settings, $txt;
$settings['theme_version'] = '2.1';
$settings['require_theme_strings'] = false;
$settings['avatars_on_indexes'] = false;
$settings['avatars_on_boardIndex'] = false;
$settings['page_index'] = array(
'extra_before' => '<span class="pages">' . $txt['pages'] . '</span>',
'previous_page' => '<span class="main_icons previous_page"></span>',
'current_page' => '<span class="current_page">%1$d</span> ',
'page' => '<a class="nav_page" href="{URL}">%2$s</a> ',
'expand_pages' => '<span class="expand_pages" onclick="expandPages(this, {LINK}, {FIRST_PAGE}, {LAST_PAGE}, {PER_PAGE});"> ... </span>',
'next_page' => '<span class="main_icons next_page"></span>',
'extra_after' => '',
);
if (!isset($settings['disable_files']))
$settings['disable_files'] = array();
}
function template_html_above()
{
global $context, $scripturl, $txt, $modSettings;
echo '<!DOCTYPE html>
<html', $context['right_to_left'] ? ' dir="rtl"' : '', !empty($txt['lang_locale']) ? ' lang="' . str_replace("_", "-", substr($txt['lang_locale'], 0, strcspn($txt['lang_locale'], "."))) . '"' : '', '>
<head>
<meta charset="', $context['character_set'], '">';
template_css();
template_javascript();
echo '
<title>', $context['page_title_html_safe'], '</title>
<meta name="viewport" content="width=device-width, initial-scale=1">';
foreach ($context['meta_tags'] as $meta_tag)
{
echo '
<meta';
foreach ($meta_tag as $meta_key => $meta_value)
echo ' ', $meta_key, '="', $meta_value, '"';
echo '>';
}
echo '
<meta name="theme-color" content="#557EA0">';
if (!empty($context['robot_no_index']))
echo '
<meta name="robots" content="noindex">';
if (!empty($context['canonical_url']))
echo '
<link rel="canonical" href="', $context['canonical_url'], '">';
echo '
<link rel="help" href="', $scripturl, '?action=help">
<link rel="contents" href="', $scripturl, '">', ($context['allow_search'] ? '
<link rel="search" href="' . $scripturl . '?action=search">' : '');
if (!empty($modSettings['xmlnews_enable']) && (!empty($modSettings['allow_guestAccess']) || $context['user']['is_logged']))
echo '
<link rel="alternate" type="application/rss+xml" title="', $context['forum_name_html_safe'], ' - ', $txt['rss'], '" href="', $scripturl, '?action=.xml;type=rss2', !empty($context['current_board']) ? ';board=' . $context['current_board'] : '', '">
<link rel="alternate" type="application/atom+xml" title="', $context['forum_name_html_safe'], ' - ', $txt['atom'], '" href="', $scripturl, '?action=.xml;type=atom', !empty($context['current_board']) ? ';board=' . $context['current_board'] : '', '">';
if (!empty($context['links']['next']))
echo '
<link rel="next" href="', $context['links']['next'], '">';
if (!empty($context['links']['prev']))
echo '
<link rel="prev" href="', $context['links']['prev'], '">';
if (!empty($context['current_board']))
echo '
<link rel="index" href="', $scripturl, '?board=', $context['current_board'], '.0">';
echo $context['html_headers'];
echo '
</head>
<body id="', $context['browser_body_id'], '" class="action_', !empty($context['current_action']) ? $context['current_action'] : (!empty($context['current_board']) ?
'messageindex' : (!empty($context['current_topic']) ? 'display' : 'home')), !empty($context['current_board']) ? ' board_' . $context['current_board'] : '', '">
<div id="footerfix">';
}
function template_body_above()
{
global $context, $settings, $scripturl, $txt, $modSettings, $maintenance;
echo '
<div id="top_section">
<div class="inner_wrap">';
if ($context['user']['is_logged'])
{
echo '
<ul class="floatleft" id="top_info">
<li>
<a href="', $scripturl, '?action=profile"', !empty($context['self_profile']) ? ' class="active"' : '', ' id="profile_menu_top" onclick="return false;">';
if (!empty($context['user']['avatar']))
echo $context['user']['avatar']['image'];
echo $context['user']['name'], '</a>
<div id="profile_menu" class="top_menu"></div>
</li>';
if ($context['allow_pm'])
echo '
<li>
<a href="', $scripturl, '?action=pm"', !empty($context['self_pm']) ? ' class="active"' : '', ' id="pm_menu_top">', $txt['pm_short'], !empty($context['user']['unread_messages']) ? ' <span class="amt">' . $context['user']['unread_messages'] . '</span>' : '', '</a>
<div id="pm_menu" class="top_menu scrollable"></div>
</li>';
echo '
<li>
<a href="', $scripturl, '?action=profile;area=showalerts;u=', $context['user']['id'], '"', !empty($context['self_alerts']) ? ' class="active"' : '', ' id="alerts_menu_top">', $txt['alerts'], !empty($context['user']['alerts']) ? ' <span class="amt">' . $context['user']['alerts'] . '</span>' : '', '</a>
<div id="alerts_menu" class="top_menu scrollable"></div>
</li>';
echo '
<li id="nojs_logout">
<a href="', $scripturl, '?action=logout;', $context['session_var'], '=', $context['session_id'], '">', $txt['logout'], '</a>
<script>document.getElementById("nojs_logout").style.display = "none";</script>
</li>';
echo '
</ul>';
}
elseif (empty($maintenance))
echo '
<ul class="floatleft welcome">
<li>', sprintf($txt[$context['can_register'] ? 'welcome_guest_register' : 'welcome_guest'], $txt['guest_title'], $context['forum_name_html_safe'], $scripturl . '?action=login', 'return reqOverlayDiv(this.href, ' . JavaScriptEscape($txt['login']) . ');', $scripturl . '?action=signup'), '</li>
</ul>';
else
echo '
<ul class="floatleft welcome">
<li>', sprintf($txt['welcome_guest'], $txt['guest_title'], '', $scripturl . '?action=login', 'return true;'), '</li>
</ul>';
if (!empty($modSettings['userLanguage']) && !empty($context['languages']) && count($context['languages']) > 1)
{
echo '
<form id="languages_form" method="get" class="floatright">
<select id="language_select" name="language" onchange="this.form.submit()">';
foreach ($context['languages'] as $language)
echo '
<option value="', $language['filename'], '"', isset($context['user']['language']) && $context['user']['language'] == $language['filename'] ? ' selected="selected"' : '', '>', str_replace('-utf8', '', $language['name']), '</option>';
echo '
</select>
<noscript>
<input type="submit" value="', $txt['quick_mod_go'], '">
</noscript>
</form>';
}
if ($context['allow_search'])
{
echo '
<form id="search_form" class="floatright" action="', $scripturl, '?action=search2" method="post" accept-charset="', $context['character_set'], '">
<input type="search" name="search" value=""> ';
$selected = !empty($context['current_topic']) ? 'current_topic' : (!empty($context['current_board']) ? 'current_board' : 'all');
echo '
<select name="search_selection">
<option value="all"', ($selected == 'all' ? ' selected' : ''), '>', $txt['search_entireforum'], ' </option>';
if (!empty($context['current_topic']))
echo '
<option value="topic"', ($selected == 'current_topic' ? ' selected' : ''), '>', $txt['search_thistopic'], '</option>';
if (!empty($context['current_board']))
echo '
<option value="board"', ($selected == 'current_board' ? ' selected' : ''), '>', $txt['search_thisboard'], '</option>';
if (!empty($context['allow_memberlist']))
echo '
<option value="members"', ($selected == 'members' ? ' selected' : ''), '>', $txt['search_members'], ' </option>';
echo '
</select>';
if (!empty($context['current_topic']))
echo '
<input type="hidden" name="sd_topic" value="', $context['current_topic'], '">';
elseif (!empty($context['current_board']))
echo '
<input type="hidden" name="sd_brd" value="', $context['current_board'], '">';
echo '
<input type="submit" name="search2" value="', $txt['search'], '" class="button">
<input type="hidden" name="advanced" value="0">
</form>';
}
echo '
</div><!-- .inner_wrap -->
</div><!-- #top_section -->';
echo '
<div id="header">
<h1 class="forumtitle">
<a id="top" href="', $scripturl, '">', empty($context['header_logo_url_html_safe']) ? $context['forum_name_html_safe'] : '<img src="' . $context['header_logo_url_html_safe'] . '" alt="' . $context['forum_name_html_safe'] . '">', '</a>
</h1>';
echo '
', empty($settings['site_slogan']) ? '<img id="smflogo" src="' . $settings['images_url'] . '/smflogo.svg" alt="Simple Machines Forum" title="Simple Machines Forum">' : '<div id="siteslogan">' . $settings['site_slogan'] . '</div>', '';
echo '
</div>
<div id="wrapper">
<div id="upper_section">
<div id="inner_section">
<div id="inner_wrap">
<div class="user">
', $context['current_time'], '
</div>';
if (!empty($settings['enable_news']) && !empty($context['random_news_line']))
echo '
<div class="news">
<h2>', $txt['news'], ': </h2>
<p>', $context['random_news_line'], '</p>
</div>';
echo '
<hr class="clear">
</div>';
echo '
<a class="menu_icon mobile_user_menu"></a>
<div id="main_menu">
<div id="mobile_user_menu" class="popup_container">
<div class="popup_window description">
<div class="popup_heading">', $txt['mobile_user_menu'], '
<a href="javascript:void(0);" class="main_icons hide_popup"></a>
</div>
', template_menu(), '
</div>
</div>
</div>';
theme_linktree();
echo '
</div><!-- #inner_section -->
</div><!-- #upper_section -->';
echo '
<div id="content_section">
<div id="main_content_section">';
}
function template_body_below()
{
global $context, $txt, $scripturl, $modSettings;
echo '
</div><!-- #main_content_section -->
</div><!-- #content_section -->
</div><!-- #wrapper -->
</div><!-- #footerfix -->';
echo '
<div id="footer">
<div class="inner_wrap">';
echo '
<ul>
<li class="floatright"><a href="', $scripturl, '?action=help">', $txt['help'], '</a> ', (!empty($modSettings['requireAgreement'])) ? '| <a href="' . $scripturl . '?action=help;sa=rules">' . $txt['terms_and_rules'] . '</a>' : '', ' | <a href="#top_section">', $txt['go_up'], ' ▲</a></li>
<li class="copyright">', theme_copyright(), '</li>
</ul>';
if ($context['show_load_time'])
echo '
<p>', sprintf($txt['page_created_full'], $context['load_time'], $context['load_queries']), '</p>';
echo '
</div>
</div><!-- #footer -->';
}
function template_html_below()
{
template_javascript(true);
echo '
</body>
</html>';
}
function theme_linktree($force_show = false)
{
global $context, $shown_linktree, $scripturl, $txt;
if (empty($context['linktree']) || (!empty($context['dont_default_linktree']) && !$force_show))
return;
echo '
<div class="navigate_section">
<ul>';
if ($context['user']['is_logged'])
echo '
<li class="unread_links">
<a href="', $scripturl, '?action=unread" title="', $txt['unread_since_visit'], '">', $txt['view_unread_category'], '</a>
<a href="', $scripturl, '?action=unreadreplies" title="', $txt['show_unread_replies'], '">', $txt['unread_replies'], '</a>
</li>';
foreach ($context['linktree'] as $link_num => $tree)
{
echo '
<li', ($link_num == count($context['linktree']) - 1) ? ' class="last"' : '', '>';
if ($link_num != 0)
echo '
<span class="dividers">', $context['right_to_left'] ? ' ◄ ' : ' ► ', '</span>';
if (isset($tree['extra_before']))
echo $tree['extra_before'], ' ';
if (isset($tree['url']))
echo '
<a href="' . $tree['url'] . '"><span>' . $tree['name'] . '</span></a>';
else
echo '
<span>' . $tree['name'] . '</span>';
if (isset($tree['extra_after']))
echo ' ', $tree['extra_after'];
echo '
</li>';
}
echo '
</ul>
</div><!-- .navigate_section -->';
$shown_linktree = true;
}
function template_menu()
{
global $context;
echo '
<ul class="dropmenu menu_nav">';
foreach ($context['menu_buttons'] as $act => $button)
{
echo '
<li class="button_', $act, '', !empty($button['sub_buttons']) ? ' subsections"' : '"', '>
<a', $button['active_button'] ? ' class="active"' : '', ' href="', $button['href'], '"', isset($button['target']) ? ' target="' . $button['target'] . '"' : '', '>
', $button['icon'], '<span class="textmenu">', $button['title'], !empty($button['amt']) ? ' <span class="amt">' . $button['amt'] . '</span>' : '', '</span>
</a>';
if (!empty($button['sub_buttons']))
{
echo '
<ul>';
foreach ($button['sub_buttons'] as $childbutton)
{
echo '
<li', !empty($childbutton['sub_buttons']) ? ' class="subsections"' : '', '>
<a href="', $childbutton['href'], '"', isset($childbutton['target']) ? ' target="' . $childbutton['target'] . '"' : '', '>
', $childbutton['title'], !empty($childbutton['amt']) ? ' <span class="amt">' . $childbutton['amt'] . '</span>' : '', '
</a>';
if (!empty($childbutton['sub_buttons']))
{
echo '
<ul>';
foreach ($childbutton['sub_buttons'] as $grandchildbutton)
echo '
<li>
<a href="', $grandchildbutton['href'], '"', isset($grandchildbutton['target']) ? ' target="' . $grandchildbutton['target'] . '"' : '', '>
', $grandchildbutton['title'], !empty($grandchildbutton['amt']) ? ' <span class="amt">' . $grandchildbutton['amt'] . '</span>' : '', '
</a>
</li>';
echo '
</ul>';
}
echo '
</li>';
}
echo '
</ul>';
}
echo '
</li>';
}
echo '
</ul><!-- .menu_nav -->';
}
function template_button_strip($button_strip, $direction = '', $strip_options = array())
{
global $context, $txt;
if (!is_array($strip_options))
$strip_options = array();
$buttons = array();
foreach ($button_strip as $key => $value)
{
if (!isset($value['test']) || !empty($context[$value['test']]))
{
if (!isset($value['id']))
$value['id'] = $key;
$button = '
<a class="button button_strip_' . $key . (!empty($value['active']) ? ' active' : '') . (isset($value['class']) ? ' ' . $value['class'] : '') . '" ' . (!empty($value['url']) ? 'href="' . $value['url'] . '"' : '') . ' ' . (isset($value['custom']) ? ' ' . $value['custom'] : '') . '>'.(!empty($value['icon']) ? '<span class="main_icons '.$value['icon'].'"></span>' : '').'' . $txt[$value['text']] . '</a>';
if (!empty($value['sub_buttons']))
{
$button .= '
<div class="top_menu dropmenu ' . $key . '_dropdown">
<div class="viewport">
<div class="overview">';
foreach ($value['sub_buttons'] as $element)
{
if (isset($element['test']) && empty($context[$element['test']]))
continue;
$button .= '
<a href="' . $element['url'] . '"><strong>' . $txt[$element['text']] . '</strong>';
if (isset($txt[$element['text'] . '_desc']))
$button .= '<br><span>' . $txt[$element['text'] . '_desc'] . '</span>';
$button .= '</a>';
}
$button .= '
</div><!-- .overview -->
</div><!-- .viewport -->
</div><!-- .top_menu -->';
}
$buttons[] = $button;
}
}
if (empty($buttons))
return;
echo '
<div class="buttonlist', !empty($direction) ? ' float' . $direction : '', '"', (empty($buttons) ? ' style="display: none;"' : ''), (!empty($strip_options['id']) ? ' id="' . $strip_options['id'] . '"' : ''), '>
', implode('', $buttons), '
</div>';
}
function template_quickbuttons($list_items, $list_class = null, $output_method = 'echo')
{
global $txt;
if (!empty($list_class))
call_integration_hook('integrate_' . $list_class . '_quickbuttons', array(&$list_items));
foreach ($list_items as $key => $li)
{
if ($key == 'more')
{
foreach ($li as $subkey => $subli)
if (isset($subli['show']) && !$subli['show'])
unset($list_items[$key][$subkey]);
if (empty($list_items[$key]))
unset($list_items[$key]);
}
elseif (isset($li['show']) && !$li['show'])
unset($list_items[$key]);
}
if (empty($list_items))
return;
$output = '
<ul class="quickbuttons' . (!empty($list_class) ? ' quickbuttons_' . $list_class : '') . '">';
$list_item_format = function($li)
{
$html = '
<li' . (!empty($li['class']) ? ' class="' . $li['class'] . '"' : '') . (!empty($li['id']) ? ' id="' . $li['id'] . '"' : '') . (!empty($li['custom']) ? $li['custom'] : '') . '>';
if (isset($li['content']))
$html .= $li['content'];
else
$html .= '
<a' . (!empty($li['href']) ? ' href="' . $li['href'] . '"' : '') . (!empty($li['javascript']) ? $li['javascript'] : '') . '>
' . (!empty($li['icon']) ? '<span class="main_icons ' . $li['icon'] . '"></span>' : '') . (!empty($li['label']) ? $li['label'] : '') . '
</a>';
$html .= '
</li>';
return $html;
};
foreach ($list_items as $key => $li)
{
if ($key == 'more')
{
$output .= '
<li class="post_options">' . $txt['post_options'] . '
<ul>';
foreach ($li as $subli)
$output .= $list_item_format($subli);
$output .= '
</ul>
</li>';
}
else
$output .= $list_item_format($li);
}
$output .= '
</ul><!-- .quickbuttons -->';
if ($output_method == 'echo')
echo $output;
else
return $output;
}
function template_maint_warning_above()
{
global $txt, $context, $scripturl;
echo '
<div class="errorbox" id="errors">
<dl>
<dt>
<strong id="error_serious">', $txt['forum_in_maintenance'], '</strong>
</dt>
<dd class="error" id="error_list">
', sprintf($txt['maintenance_page'], $scripturl . '?action=admin;area=serversettings;' . $context['session_var'] . '=' . $context['session_id']), '
</dd>
</dl>
</div>';
}
function template_maint_warning_below()
{
}
?>