This XML file does not appear to have any style information associated with it. The document tree is shown below.
<style title="UI.X Dark" description="The Ultimate Theme Framework" user_selectable="1" base_version_id="2020070" export_version="2">
<assets/>
<templates>
<template title="EWRporta_articles.less" type="public" addon_id="" version_id="2101" version_string="2.1.0.1">
<![CDATA[ .porta-article-pager { margin-top: -(@xf-elementSpacer); } .porta-article-loader { display: none; text-align: center; } .porta-article-item { margin-bottom: @xf-elementSpacer; .porta-article-header { display: block; overflow: hidden; position: relative; .porta-header-image { background-position: center; background-size: cover; height: @xf-EWRporta_header_height; } .porta-header-medio { background-position: center; background-size: cover; height: @xf-EWRporta_medio_height; } .porta-header-text { position: absolute; bottom: 0; left: 0; right: 0; .xf-EWRporta_header_title; >span { position: absolute; bottom: 0; left: 0; right: 0; padding: 0 @xf-elementSpacer; } } .porta-header-play { position: absolute; top: 0; bottom: 20px; left: 0; right: 0; display: flex; align-items: center; justify-content: center; flex-direction: column; .far { color: @xf-textColorAttention; font-size: 100px; text-shadow: 1px 1px 0 #000000, 1px -1px 0 #000000, -1px 1px 0 #000000, -1px -1px 0 #000000; } } } .porta-article-date { float: left; padding: @xf-paddingLarge 0; margin-left: @xf-EWRporta_dateblock_margin; .porta-date-block { .xf-messageUserBlock; width: 50px; padding: 10px; text-align: center; text-transform: uppercase; white-space: nowrap; b { display: block; font-size: 1.5em; } } } .message-inner { display: block; } .message-body .bbWrapper { display: inline; } .block-header { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } } .porta-masonry { margin: 0 ~"calc(-@{xf-sidebarSpacer} / 2)"; .porta-article-item { display: inline-block; width: ~"calc(100% / @xf-EWRporta_masonry_columns)"; .porta-article-container { margin: 0 ~"calc(@xf-sidebarSpacer / 2)"; } } } .porta-article-status { display: none; .porta-article-ellipse { font-size: 20px; position: relative; width: 4em; height: 1em; margin: 10px auto; .loader-ellipse-dot { display: block; width: 1em; height: 1em; border-radius: 0.5em; background: @xf-textColor; position: absolute; animation-duration: 0.5s; animation-timing-function: ease; animation-iteration-count: infinite; } .loader-ellipse-dot:nth-child(1), .loader-ellipse-dot:nth-child(2) { left: 0; } .loader-ellipse-dot:nth-child(3) { left: 1.5em; } .loader-ellipse-dot:nth-child(4) { left: 3em; } @keyframes reveal { from { transform: scale(0.001); } to { transform: scale(1); } } @keyframes slide { to { transform: translateX(1.5em) } } .loader-ellipse-dot:nth-child(1) { animation-name: reveal; } .loader-ellipse-dot:nth-child(2), .loader-ellipse-dot:nth-child(3) { animation-name: slide; } .loader-ellipse-dot:nth-child(4) { animation-name: reveal; animation-direction: reverse; } } } @media (max-width: @xf-responsiveWide) { .porta-masonry { .porta-article-item { width: ~"calc(100% / @xf-EWRporta_masonry_wide)"; } } } @media (max-width: @xf-responsiveMedium) { .porta-masonry { margin: 0 (-@xf-pageEdgeSpacer / 2); .porta-article-item { width: ~"calc(100% / @xf-EWRporta_masonry_medium)"; .porta-article-date { margin-left: -10px; .porta-date-block { width: auto; padding: 10px 5px; transform: rotate(180deg); writing-mode: vertical-rl; b { display: inline; font-size: initial; } } } } } } @media (max-width: @xf-responsiveNarrow) { .porta-masonry { .porta-article-item { display: block; width: 100%; .porta-article-container { margin: 0; } .porta-article-date { display: none; } } } } ]]>
</template>
<template title="MAIL_CONTAINER" type="email" addon_id="XF" version_id="2020032" version_string="2.2.0 Beta 2">
<![CDATA[ <!DOCTYPE html> <html lang="{$xf.language.language_code}" dir="{$xf.language.text_direction}" style="font-size: 62.5%;"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <base href="{$xf.options.boardUrl}/"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="format-detection" content="telephone=no"> <title>{$subject}</title> </head> <body dir="{$xf.language.text_direction}" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"> <table id="bodyTable" border="0" width="100%" height="100%" cellpadding="0" cellspacing="0"> <tr> <td align="center" valign="top" id="bodyTableContainer"> <table border="0" width="600" cellpadding="0" cellspacing="0" class="container" style="table-layout: fixed;" dir="{$xf.language.text_direction}"> <tr> <td class="header" align="center" valign="top"> <a href="{{ link('canonical:index') }}">{$xf.options.boardTitle}</a> </td> </tr> <tr> <td class="content" align="{{ $xf.isRtl ? 'right' : 'left' }}" valign="top"> {$html|raw} </td> </tr> <tr> <td class="footer" align="center" valign="top"> <div>{{ phrase('visit_board_html', {'board_url': link('canonical:index'), 'board_title': $xf.options.boardTitle}) }}</div> <xf:if contentcheck="true"> <div class="footerExtra"><xf:contentcheck>{{ phrase('email_footer_html') }}</xf:contentcheck></div> </xf:if> </td> </tr> </table> </td> </tr> </table> </body> </html> <mail:text> {$text} ----------------------------- {{ phrase('visit_board_text', {'board_title': $xf.options.boardTitle, 'board_url': link('canonical:index')}) }} {{ phrase('email_footer_text') }} </mail:text> ]]>
</template>
<template title="PAGE_CONTAINER" type="public" addon_id="XF" version_id="2020070" version_string="2.2.0">
<![CDATA[ <!DOCTYPE html> <xf:set var="$siteName" value="{$xf.options.boardTitle}" /> <xf:set var="$h1"><xf:h1 fallback="{$siteName}" /></xf:set> <xf:set var="$title"><xf:title formatter="%s | %s" fallback="{$xf.options.boardTitle}" /></xf:set> <xf:set var="$description"><xf:description /></xf:set> <xf:set var="$uix_htmlClasses"></xf:set> <xf:if is="property('uix_pageWidthToggle') != 'disabled'"> <xf:comment> UI.X width toggle class</xf:comment> <xf:set var="$uix_htmlClasses">{{$uix_htmlClasses}} uix_page--{{$uix_pageWidth}}</xf:set> </xf:if> <xf:if is="property('uix_navigationType') == 'sidebarNav'"> <xf:comment> UI.X sidebar navigation toggle class</xf:comment> <xf:if is="!$uix_sidebarNavCollapsed"> <xf:set var="$uix_htmlClasses">{{$uix_htmlClasses}} sidebarNav--active</xf:set> </xf:if> </xf:if> <meta name="apple-mobile-web-app-title" content="{{ $xf.options.boardShortTitle ?: $xf.options.boardTitle }}"> <xf:if is="property('publicIconUrl')"> <link rel="apple-touch-icon" href="{{ base_url(property('publicIconUrl', true)) }}"> <xf:elseif is="property('publicMetadataLogoUrl')" /> <link rel="apple-touch-icon" href="{{ base_url(property('publicMetadataLogoUrl')) }}" /> </xf:if> <xf:if is="property('uix_collapsibleSidebar')"> <xf:comment> UI.X sidebar toggle class</xf:comment> <xf:if is="$uix_sidebarCollapsed"> <xf:set var="$uix_htmlClasses">{{$uix_htmlClasses}} uix_sidebarCollapsed</xf:set> </xf:if> </xf:if> <xf:if is="{$uix_showWelcomeSection}"> <xf:set var="$uix_htmlClasses">{{$uix_htmlClasses}} uix_hasWelcomeSection</xf:set> </xf:if> <xf:comment>SectionLinks Breakpoints</xf:comment> <xf:set var="$uix_subNavContentStatic" value="0" /> <xf:comment>--------- COMPONENT MARKUP MACROS --------- Markup for components can/should be added here in an XF:set if we want the components to have variably set locations </xf:comment> <xf:comment> --- Sidebar trigger --- </xf:comment> <xf:set var="$uix_sidebarTrigger__content"> <xf:if is="{$sidebar}"> <xf:if is="property('uix_collapsibleSidebar') && {$uix_canCollapseSidebar}"> <a class="uix_sidebarTrigger__component uix_sidebarTrigger {{ (property('uix_sidebarTriggerPosition') == 'sectionLinks') ? 'p-navgroup-link' : 'button'}}" data-xf-init="tooltip" title="{{ phrase('th_sidebar_uix')}}" rel="nofollow"> <xf:fa icon="fa-ellipsis-v" class="mdi mdi-dots-vertical" /> <span class="uix_sidebarTrigger--phrase">{{ phrase('th_sidebar_uix') }}</span> </a> </xf:if> <xf:if is="property('uix_sidebarMobileCanvas')"> <a class="uix_sidebarCanvasTrigger uix_sidebarTrigger__component p-navgroup-link" data-xf-init="tooltip" title="{{ phrase('th_sidebar_uix')}}"> <xf:fa icon="fa-ellipsis-v" class="mdi mdi-dots-vertical" /> <span class="uix_sidebarTrigger--phrase">{{ phrase('th_sidebar_uix') }}</span> </a> </xf:if> </xf:if> </xf:set> <xf:macro name="uix_sidebarTrigger__component" arg-location="" arg-content=""> <xf:if is="({$location} == property('uix_sidebarTriggerPosition')) || ({$location} == 'navigation')"> {$content} </xf:if> </xf:macro> <xf:comment> --- Search bar --- </xf:comment> <xf:if is="!{$uix_hideNavigation}"> <xf:set var="$uix_search__component"> <xf:if is="$xf.visitor.canSearch()"> <div class="uix_searchBar"> <div class="uix_searchBarInner"> <form action="{{ link('search/search') }}" method="post" class="uix_searchForm" data-xf-init="quick-search"> <a class="uix_search--close"> <xf:fa icon="fa-window-close" /> </a> <xf:textbox autocomplete="off" class="js-uix_syncValue uix_searchInput uix_searchDropdown__trigger" data-uixsync="search" name="keywords" placeholder="{{ phrase('search...') }}" aria-label="{{ phrase('search') }}" data-menu-autofocus="true" /> <a href="{{ link('search') }}" class="uix_search--settings u-ripple" data-xf-key="{{ phrase('shortcut.search_menu')|for_attr }}" aria-label="{{ phrase('search')|for_attr }}" aria-expanded="false" aria-haspopup="true" title="{{ phrase('search')|for_attr }}"> <xf:fa icon="fa-cog" /> </a> <span class="<xf:if is="property('uix_searchButton')">uix_search--submit</xf:if> uix_searchIcon"> <xf:fa icon="fa-search" /> </span> <xf:csrf /> </form> </div> <xf:if is="property('uix_searchIconBehavior') != 'dropdown'"> <a class="uix_searchIconTrigger p-navgroup-link p-navgroup-link--iconic p-navgroup-link--search u-ripple" aria-label="{{ phrase('search') }}" aria-expanded="false" aria-haspopup="true" title="{{ phrase('search') }}"> <i aria-hidden="true"></i> </a> </xf:if> <xf:if is="property('uix_searchIconBehavior') != 'expand'"> <a href="{{ link('search') }}" class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--search u-ripple js-uix_minimalSearch__target" data-xf-click="menu" aria-label="{{ phrase('search') }}" aria-expanded="false" aria-haspopup="true" title="{{ phrase('search') }}"> <i aria-hidden="true"></i> </a> </xf:if> <div class="menu menu--structural menu--wide" data-menu="menu" aria-hidden="true"> <form action="{{ link('search/search') }}" method="post" class="menu-content" data-xf-init="quick-search"> <h3 class="menu-header">{{ phrase('search') }}</h3> <!--[XF:search_menu:above_input]--> <div class="menu-row"> <xf:if is="$searchConstraints"> <div class="inputGroup inputGroup--joined"> <xf:textbox name="keywords" class="js-uix_syncValue" data-uixsync="search" placeholder="{{ phrase('search...') }}" aria-label="{{ phrase('search') }}" data-menu-autofocus="true" /> <xf:select name="constraints" class="js-quickSearch-constraint" aria-label="{{ phrase('search_within') }}"> <xf:option value="">{{ phrase('everywhere') }}</xf:option> <xf:foreach loop="$searchConstraints" key="$constraintName" value="$constraint"> <xf:option value="{$constraint|json}">{$constraintName}</xf:option> </xf:foreach> </xf:select> </div> <xf:else /> <xf:textbox name="keywords" class="js-uix_syncValue" data-uixsync="search" placeholder="{{ phrase('search...') }}" aria-label="{{ phrase('search') }}" data-menu-autofocus="true" /> </xf:if> </div> <!--[XF:search_menu:above_title_only]--> <div class="menu-row"> <xf:checkbox standalone="true"> <xf:option name="c[title_only]"> <xf:label> {{ phrase('search_titles_only') }} <xf:if is="$xf.options.enableTagging"> <span tabindex="0" role="button" data-xf-init="tooltip" data-trigger="hover focus click" title="{{ phrase('tags_will_also_be_searched') }}"> <xf:fa icon="far fa-question-circle" class="u-muted u-smaller" /> </span> </xf:if> </xf:label> </xf:option> </xf:checkbox> </div> <!--[XF:search_menu:above_member]--> <div class="menu-row"> <div class="inputGroup"> <span class="inputGroup-text" id="ctrl_search_menu_by_member">{{ phrase('by:') }}</span> <input type="text" class="input" name="c[users]" data-xf-init="auto-complete" placeholder="{{ phrase('member')|for_attr }}" aria-labelledby="ctrl_search_menu_by_member" /> </div> </div> <div class="menu-footer"> <span class="menu-footer-controls"> <xf:button type="submit" class="button--primary" icon="search" /> <xf:button href="{{ link('search') }}">{{ phrase('advanced_search...') }}</xf:button> </span> </div> <xf:csrf /> </form> </div> <div class="menu menu--structural menu--wide uix_searchDropdown__menu" aria-hidden="true"> <form action="{{ link('search/search') }}" method="post" class="menu-content" data-xf-init="quick-search"> <!--[XF:search_menu:above_input]--> <xf:if is="$searchConstraints"> <div class="menu-row"> <div class="inputGroup"> <input name="keywords" class="js-uix_syncValue" data-uixsync="search" placeholder="{{ phrase('search...') }}" aria-label="{{ phrase('search') }}" type="hidden" /> <xf:select name="constraints" class="js-quickSearch-constraint" aria-label="{{ phrase('search_within') }}"> <xf:option value="">{{ phrase('everywhere') }}</xf:option> <xf:foreach loop="$searchConstraints" key="$constraintName" value="$constraint"> <xf:option value="{$constraint|json}">{$constraintName}</xf:option> </xf:foreach> </xf:select> </div> </div> <xf:else /> <input name="keywords" class="js-uix_syncValue" data-uixsync="search" placeholder="{{ phrase('search...') }}" aria-label="{{ phrase('search') }}" type="hidden" /> </xf:if> <!--[XF:search_menu:above_title_only]--> <div class="menu-row"> <xf:checkbox standalone="true"> <xf:option name="c[title_only]"> <xf:label> {{ phrase('search_titles_only') }} <xf:if is="$xf.options.enableTagging"> <span tabindex="0" role="button" data-xf-init="tooltip" data-trigger="hover focus click" title="{{ phrase('tags_will_also_be_searched') }}"> <xf:fa icon="far fa-question-circle" class="u-muted u-smaller" /> </span> </xf:if> </xf:label> </xf:option> </xf:checkbox> </div> <!--[XF:search_menu:above_member]--> <div class="menu-row"> <div class="inputGroup"> <span class="inputGroup-text">{{ phrase('by:') }}</span> <input class="input" name="c[users]" data-xf-init="auto-complete" placeholder="{{ phrase('member') }}" /> </div> </div> <div class="menu-footer"> <span class="menu-footer-controls"> <xf:button type="submit" class="button--primary" icon="search" /> <xf:button href="{{ link('search') }}" rel="nofollow">{{ phrase('th_advanced_uix...') }}</xf:button> </span> </div> <xf:csrf /> </form> </div> </div> </xf:if> </xf:set> </xf:if> <xf:macro name="uix_search__component" arg-content="!" arg-location="!"> <xf:if is="(property('uix_searchPosition') == {$location}) || ({$location} == 'navigation')"> {$content} </xf:if> </xf:macro> <xf:comment> --- whats new --- </xf:comment> <xf:if is="!property('uix_removeWhatsNewButtons')"> <xf:set var="$uix_whatsNew__component"> <a href="{{ link('whats-new') }}" class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--whatsnew" title="{{ phrase('whats_new')|for_attr }}"> <i aria-hidden="true"></i> <span class="p-navgroup-linkText">{{ phrase('whats_new') }}</span> </a> </xf:set> </xf:if> <xf:macro name="uix_whatsNew__component" arg-content="!" arg-location="!"> <xf:if is="({$xf.visitor.user_id} && property('uix_userTabsPosition') == {$location}) || ({$location} == 'navigation')"> {$content} </xf:if> </xf:macro> <xf:comment> --- login tabs --- </xf:comment> <xf:set var="$uix_loginTabs__component"> <xf:if is="{$template} != 'login'"> <xf:if is="property('uix_loginStyle') == 'dropdown'"> <a href="{{ link('login') }}" class="p-navgroup-link p-navgroup-link--textual p-navgroup-link--logIn" data-xf-click="menu"> <i></i> <span class="p-navgroup-linkText">{{ phrase('log_in') }}</span> </a> <div class="menu menu--structural menu--medium" data-menu="menu" aria-hidden="true" data-href="{{ link('login') }}"></div> <xf:elseif is="property('uix_loginStyle') == 'modal'" /> <a href="{{ link('login') }}" class="p-navgroup-link u-ripple p-navgroup-link--textual p-navgroup-link--logIn" data-xf-click="overlay" data-follow-redirects="on"> <i></i> <span class="p-navgroup-linkText">{{ phrase('log_in') }}</span> </a> <xf:elseif is="property('uix_loginStyle') == 'link'" /> <a href="{{ link('login') }}" class="p-navgroup-link u-ripple p-navgroup-link--textual p-navgroup-link--logIn" data-follow-redirects="on"> <i></i> <span class="p-navgroup-linkText">{{ phrase('log_in') }}</span> </a> <xf:elseif is="property('uix_loginStyle') == 'slidingPanel'" /> <a href="{{ link('login') }}" id="uix_loginPanel--trigger" class="p-navgroup-link u-ripple p-navgroup-link--textual p-navgroup-link--logIn" rel="nofollow" data-follow-redirects="on"> <i></i> <span class="p-navgroup-linkText">{{ phrase('log_in') }}</span> </a> </xf:if> </xf:if> <xf:if is="{$template} != 'register_form'"> <xf:if is="property('uix_loginStyle') != 'link'"> <a href="{{ link('register') }}" class="p-navgroup-link u-ripple p-navgroup-link--textual p-navgroup-link--register" data-xf-click="overlay" data-follow-redirects="on"> <i></i> <span class="p-navgroup-linkText">{{ phrase('register') }}</span> </a> <xf:else /> <a href="{{ link('register') }}" class="p-navgroup-link u-ripple p-navgroup-link--textual p-navgroup-link--register" data-follow-redirects="on"> <i></i> <span class="p-navgroup-linkText">{{ phrase('register') }}</span> </a> </xf:if> </xf:if> </xf:set> <xf:macro name="uix_loginTabs__component" arg-content="!" arg-location="!"> <xf:if is="property('uix_loginTriggerPosition') == {$location} || ({$location} == 'navigation')"> <xf:if is="{$location} == 'tablinks'"> </xf:if> {$content} </xf:if> </xf:macro> <xf:comment> --- user tabs --- </xf:comment> <xf:if is="!{$uix_hideNavigation}"> <xf:set var="$uix_userTabs__component"> <xf:if is="$xf.visitor.user_state == 'rejected' OR $xf.visitor.user_state == 'disabled'"> <a href="{{ link('account') }}" class="p-navgroup-link u-ripple p-navgroup-link--iconic p-navgroup-link--user"> <xf:avatar user="$xf.visitor" size="xxs" href="" /> <span class="p-navgroup-linkText">{$xf.visitor.username}</span> </a> <a href="{{ link('logout', null, {'t': csrf_token()}) }}" class="p-navgroup-link"> <span class="p-navgroup-linkText">{{ phrase('log_out') }}</span> </a> <xf:else /> <a href="{{ link('account') }}" class="p-navgroup-link u-ripple p-navgroup-link--iconic p-navgroup-link--user" data-xf-click="menu" data-xf-key="{{ phrase('shortcut.visitor_menu')|for_attr }}" data-menu-pos-ref="< .p-navgroup" aria-expanded="false" aria-haspopup="true"> <xf:avatar user="$xf.visitor" size="xxs" href="" /> <span class="p-navgroup-linkText">{$xf.visitor.username}</span> </a> <div class="menu menu--structural menu--wide menu--account" data-menu="menu" aria-hidden="true" data-href="{{ link('account/visitor-menu') }}" data-load-target=".js-visitorMenuBody"> <div class="menu-content js-visitorMenuBody"> <div class="menu-row"> {{ phrase('loading...') }} </div> </div> </div> <a href="{{ link('conversations') }}" class="p-navgroup-link u-ripple p-navgroup-link--iconic p-navgroup-link--conversations js-badge--conversations badgeContainer{{ $xf.visitor.conversations_unread ? ' badgeContainer--highlighted' : '' }}" data-badge="{$xf.visitor.conversations_unread|number}" data-xf-click="menu" data-xf-key="{{ phrase('shortcut.conversations_menu')|for_attr }}" data-menu-pos-ref="< .p-navgroup" aria-label="{{ phrase('inbox')|for_attr }}" aria-expanded="false" aria-haspopup="true"> <i aria-hidden="true"></i> <span class="p-navgroup-linkText">{{ phrase('nav_inbox') }}</span> </a> <div class="menu menu--structural menu--medium" data-menu="menu" aria-hidden="true" data-href="{{ link('conversations/popup') }}" data-nocache="true" data-load-target=".js-convMenuBody"> <div class="menu-content"> <h3 class="menu-header">{{ phrase('conversations') }}</h3> <div class="js-convMenuBody"> <div class="menu-row">{{ phrase('loading...') }}</div> </div> <div class="menu-footer menu-footer--split"> <div class="menu-footer-main"> <ul class="listInline listInline--bullet"> <li><a href="{{ link('conversations') }}">{{ phrase('show_all') }}</a></li> <xf:if is="$xf.visitor.canStartConversation()"> <li><a href="{{ link('conversations/add') }}">{{ phrase('start_new_conversation') }}</a></li> </xf:if> </ul> </div> </div> </div> </div> <a href="{{ link('account/alerts') }}" class="p-navgroup-link u-ripple p-navgroup-link--iconic p-navgroup-link--alerts js-badge--alerts badgeContainer{{ $xf.visitor.alerts_unviewed ? ' badgeContainer--highlighted' : '' }}" data-badge="{$xf.visitor.alerts_unviewed|number}" data-xf-click="menu" data-xf-key="{{ phrase('shortcut.alerts_menu')|for_attr }}" data-menu-pos-ref="< .p-navgroup" aria-label="{{ phrase('alerts')|for_attr }}" aria-expanded="false" aria-haspopup="true"> <i aria-hidden="true"></i> <span class="p-navgroup-linkText">{{ phrase('nav_alerts') }}</span> </a> <div class="menu menu--structural menu--medium" data-menu="menu" aria-hidden="true" data-href="{{ link('account/alerts-popup') }}" data-nocache="true" data-load-target=".js-alertsMenuBody"> <div class="menu-content"> <h3 class="menu-header">{{ phrase('alerts') }}</h3> <div class="js-alertsMenuBody"> <div class="menu-row">{{ phrase('loading...') }}</div> </div> <div class="menu-footer menu-footer--split"> <div class="menu-footer-main"> <ul class="listInline listInline--bullet"> <li><a href="{{ link('account/alerts') }}">{{ phrase('show_all') }}</a></li> <li><a href="{{ link('account/alerts/mark-read') }}" class="js-alertsMarkRead">{{ phrase('mark_read') }}</a></li> <li><a href="{{ link('account/preferences') }}">{{ phrase('preferences') }}</a></li> </ul> </div> </div> </div> </div> </xf:if> </xf:set> </xf:if> <xf:macro name="uix_userTabs__component" arg-content="!" arg-location="!"> <xf:if is="property('uix_userTabsPosition') == {$location} || ({$location} == 'navigation')"> <xf:if is="{$location} == 'tablinks'"> </xf:if> {$content} </xf:if> </xf:macro> <xf:set var="$uix_socialMediaContent"> <xf:include template="uix_socialMedia" /> </xf:set> <xf:macro name="uix_socialMedia__component" arg-content="" arg-location=""> <xf:if is="(property('uix_socialMediaPosition') == {$location}) || ({$location} == 'copyright')"> {$content} </xf:if> </xf:macro> <xf:comment> --- Visitor tabs --- </xf:comment> <xf:if is="!{$uix_hideNavigation}"> <xf:macro name="uix_visitorTabs__component" arg-socialMediaContent="" arg-searchContent="!" arg-location="!" arg-whatsNewContent="!" arg-visitorContent="!" arg-loginTabsContent="!"> <xf:if contentcheck="true"> <xf:contentcheck> <xf:if contentcheck="true"> <div class="p-navgroup p-account {{ $xf.visitor.user_id ? 'p-navgroup--member' : 'p-navgroup--guest' }}"> <xf:contentcheck> <xf:if is="$xf.visitor.user_id"> <xf:macro name="uix_userTabs__component" arg-content="{$visitorContent}" arg-location="{$location}" /> <xf:else /> <xf:macro name="uix_loginTabs__component" arg-content="{$loginTabsContent}" arg-location="{$location}" /> </xf:if> </xf:contentcheck> </div> </xf:if> <xf:if contentcheck="true"> <div class="p-navgroup p-discovery{{ !$xf.visitor.canSearch() ? ' p-discovery--noSearch' : '' }}"> <xf:contentcheck> <xf:macro name="uix_whatsNew__component" arg-content="{$whatsNewContent}" arg-location="{$location}" /> <xf:macro name="uix_search__component" arg-content="{$searchContent}" arg-location="{$location}" /> </xf:contentcheck> </div> </xf:if> <xf:macro name="uix_socialMedia__component" arg-content="{$socialMediaContent}" arg-location="{$location}" /> </xf:contentcheck> </xf:if> </xf:macro> </xf:if> <xf:comment> --- Titlebar --- </xf:comment> <xf:set var="$uix_titlebar__component"> <xf:if is="!{$uix_hidePageTitle} || ( {$pageAction} && !property('uix_pageActionBreadcrumb') && (!property('uix_removePageAction') || {{ !in_array({$template}, ['forum_list', 'forum_new_posts', 'thtopics_forum_newest_posts', 'thtrending_trending_view', 'thtopics_forum_latest_threads', 'thtopics_topic_list']) }} ) )"> <xf:if is="$headerHtml is not empty"> <div class="p-body-header"> <div class="pageContent"> {$headerHtml|raw} </div> </div> <xf:elseif contentcheck="true" /> <div class="p-body-header"> <div class="pageContent"> <xf:contentcheck> <xf:if contentcheck="true"> <div class="uix_headerInner"> <xf:contentcheck> <xf:if contentcheck="true"> <div class="p-title {{ $noH1 ? 'p-title--noH1' : '' }}"> <xf:contentcheck> <xf:if is="!$noH1"> <h1 class="p-title-value">{$h1}</h1> </xf:if> </xf:contentcheck> </div> </xf:if> <xf:if is="$description is not empty"> <div class="p-description">{$description}</div> </xf:if> </xf:contentcheck> </div> </xf:if> <xf:if contentcheck="true"> <div class="uix_headerInner--opposite"> <xf:contentcheck> <xf:if is="!property('uix_pageActionBreadcrumb') && (!property('uix_removePageAction') || ({$template} != 'forum_list') )"> <xf:if contentcheck="true"> <div class="p-title-pageAction"><xf:contentcheck><xf:pageaction /></xf:contentcheck></div> </xf:if> </xf:if> <xf:macro name="uix_sidebarTrigger__component" arg-content="{$uix_sidebarTrigger__content}" arg-location="titlebar" /> </xf:contentcheck> </div> </xf:if> </xf:contentcheck> </div> </div> </xf:if> </xf:if> </xf:set> <xf:macro name="uix_titlebar__component" arg-location="!" arg-content="!"> <xf:if is="property('uix_titlebarLocation') === {$location}"> {$content} </xf:if> </xf:macro> <xf:comment> --- Sidebar --- </xf:comment> <xf:set var="$uix_sidebar__component"> <xf:if is="$sidebar"> <div uix_component="MainSidebar" class="p-body-sidebar"> <div data-ocm-class="offCanvasMenu-backdrop"></div> <div class="uix_sidebarInner {{ (property('uix_stickySidebar') == 'top') ? ' uix_stickyBodyElement' : '' }}"> <div class="uix_sidebar--scroller"> <xf:ad position="container_sidebar_above" /> <xf:macro name="welcomeSection" template="uix_welcomeSection" arg-location="sidebar" arg-showWelcomeSection="{$uix_showWelcomeSection}" /> <xf:foreach loop="$sidebar" value="$sidebarHtml"> {$sidebarHtml} </xf:foreach> <xf:ad position="container_sidebar_below" /> </div> </div> </div> </xf:if> </xf:set> <xf:macro name="uix_sidebar__component" arg-location="!" arg-content="!"> <xf:if is="property('uix_sidebarLocation') === {$location}"> {$content} </xf:if> </xf:macro> <xf:comment> --- Logo --- </xf:comment> <xf:set var="$srcset">{{ property('publicLogoUrl2x') ? base_url(property('publicLogoUrl2x')) . ' 2x' : '' }}</xf:set> <xf:set var="$uix_logo__component"> <div class="p-header-logo p-header-logo--image"> <a class="uix_logo" href="{{ ($xf.options.logoLink && $xf.homePageUrl) ? $xf.homePageUrl : link('index') }}"> <xf:if is="property('publicLogoUrl') || property('publicLogoUrl2x')"> <img src="{{ base_url(property('publicLogoUrl')) }}" srcset="{$srcset}" alt="{$xf.options.boardTitle}" width="{{ property('publicLogoWidth') ?: '' }}" height="{{ property('publicLogoHeight') ?: '' }}" /> <xf:else /> <div class="uix_logo--text"><xf:if is="{{ property('uix_logoIcon') }}"><i class="{{ property('uix_logoIcon') }} uix_logoIcon"></i></xf:if>{{ property('uix_logoText') }}</div> </xf:if> </a> <xf:if is="property('uix_logoSmall')"> <a class="uix_logoSmall" href="{{ ($xf.options.logoLink && $xf.homePageUrl) ? $xf.homePageUrl : link('index') }}"> <img src="{{ base_url(property('uix_logoSmall')) }}" alt="{$xf.options.boardTitle}" /> </a> </xf:if> </div> </xf:set> <xf:macro name="uix_logo__component" arg-content="!"> {$content} </xf:macro> <xf:comment> --- staff bar --- </xf:comment> <xf:set var="$uix_staffbar__component"> <xf:if contentcheck="true"> <div class="p-staffBar <xf:if is="{{ property('uix_stickyStaffBar') && !property('uix_removeHeaderWrapper')}}">uix_stickyBar</xf:if>" data-xf-init="{{ property('uix_stickyStaffBar') ? 'sticky-header' : ''}}"> <div class="pageContent"> <xf:contentcheck> <xf:macro name="uix_socialMedia__component" arg-content="{$uix_socialMediaContent}" arg-location="staffBarLeft" /> <xf:if contentcheck="true"> <xf:comment> --- add primary side staff bar content here ---</xf:comment> <xf:set var="$uix_alwaysStaffBar" value="1" /> <div class="p-staffBar-inner hScroller" data-xf-init="h-scroller"> <div class="hScroller-scroll"> <xf:contentcheck> <xf:if is="$xf.visitor.is_moderator && $xf.session.unapprovedCounts.total"> <a href="{{ link('approval-queue') }}" class="p-staffBar-link badgeContainer badgeContainer--highlighted" data-badge="{$xf.session.unapprovedCounts.total|number}"> {{ phrase('approval_queue') }} </a> </xf:if> <xf:if is="$xf.visitor.is_moderator && !$xf.options.reportIntoForumId && $xf.session.reportCounts.total"> <a href="{{ link('reports') }}" class="p-staffBar-link badgeContainer badgeContainer--visible {{ ($xf.session.reportCounts.total && ($xf.session.reportCounts.lastBuilt > $xf.session.reportLastRead) OR $xf.session.reportCounts.assigned) ? ' badgeContainer--highlighted' : '' }}" data-badge="{{ $xf.session.reportCounts.assigned ? $xf.session.reportCounts.assigned|number . ' / ' . $xf.session.reportCounts.total|number : $xf.session.reportCounts.total|number }}" title="{{ $xf.session.reportCounts.lastBuilt ? phrase('last_report_update:')|for_attr . ' ' . date_time($xf.session.reportCounts.lastBuilt) : '' }}">{{ phrase('reports') }}</a> </xf:if> <xf:if contentcheck="true"> <a class="p-staffBar-link menuTrigger" data-xf-key="alt+m" data-xf-click="menu" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true">{{ phrase('moderator') }}</a> <div class="menu" data-menu="menu" aria-hidden="true"> <div class="menu-content"> <h4 class="menu-header">{{ phrase('moderator_tools') }}</h4> <xf:contentcheck> <!--[XF:mod_tools_menu:top]--> <xf:if is="$xf.visitor.is_moderator"> <a href="{{ link('approval-queue') }}" class="menu-linkRow">{{ phrase('approval_queue') }}</a> </xf:if> <xf:if is="$xf.visitor.is_moderator && !$xf.options.reportIntoForumId"> <a href="{{ link('reports') }}" class="menu-linkRow" title="{{ $xf.session.reportCounts.lastBuilt ? 'Last report update: ' . date_time($xf.session.reportCounts.lastBuilt) : '' }}">{{ phrase('reports') }}</a> </xf:if> <!--[XF:mod_tools_menu:bottom]--> </xf:contentcheck> </div> </div> </xf:if> <xf:if is="$xf.visitor.is_admin"> <a href="{{ base_url('admin.php') }}" class="p-staffBar-link" target="_blank">{{ phrase('admin') }}</a> </xf:if> <xf:if contentcheck="true"> <a href="{{ base_url('admin.php') }}" target="_blank" class="p-staffBar-link menuTrigger uix_adminTrigger" data-xf-click="menu" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true"> <xf:if is="$xf.visitor.is_admin"> {{ phrase('admin') }} <xf:else /> {{ phrase('moderator') }} </xf:if> </a> <div class="menu" data-menu="menu" aria-hidden="true"> <div class="menu-content"> <h4 class="menu-header">{{ phrase('moderator_tools') }}</h4> <xf:contentcheck> <!--[XF:mod_tools_menu:top]--> <xf:if is="$xf.visitor.is_admin"> <a href="{{ base_url('admin.php') }}" target="_blank" class="menu-linkRow">{{ phrase('admin') }}</a> </xf:if> <xf:if is="$xf.visitor.is_moderator"> <a href="{{ link('approval-queue') }}" class="menu-linkRow">{{ phrase('approval_queue') }}</a> </xf:if> <xf:if is="$xf.visitor.is_moderator && !$xf.options.reportIntoForumId"> <a href="{{ link('reports') }}" class="menu-linkRow" title="{{ $xf.session.reportCounts.lastBuilt ? 'Last report update: ' . date_time($xf.session.reportCounts.lastBuilt) : '' }}">{{ phrase('reports') }}</a> </xf:if> <xf:if is="$xf.visitor.is_moderator && $xf.session.unapprovedCounts.total"> <a href="{{ link('approval-queue') }}" class="menu-linkRow badgeContainer badgeContainer--highlighted" data-badge="{$xf.session.unapprovedCounts.total|number}"> {{ phrase('approval_queue') }} </a> </xf:if> <xf:if is="$xf.visitor.is_moderator && !$xf.options.reportIntoForumId && $xf.session.reportCounts.total"> <a href="{{ link('reports') }}" class="menu-linkRow badgeContainer badgeContainer--visible {{ ($xf.session.reportCounts.total && ($xf.session.reportCounts.lastBuilt > $xf.session.reportLastRead) OR $xf.session.reportCounts.assigned) ? ' badgeContainer--highlighted' : '' }}" data-badge="{{ $xf.session.reportCounts.assigned ? $xf.session.reportCounts.assigned|number . ' / ' . $xf.session.reportCounts.total|number : $xf.session.reportCounts.total|number }}" title="{{ $xf.session.reportCounts.lastBuilt ? phrase('last_report_update') . date_time($xf.session.reportCounts.lastBuilt) : '' }}"> {{ phrase('reports') }} </a> </xf:if> <!--[XF:mod_tools_menu:bottom]--> </xf:contentcheck> </div> </div> </xf:if> </xf:contentcheck> </div> </div> </xf:if> <xf:if contentcheck="true"> <div class="p-nav-opposite"> <xf:if is="property('uix_staffBarBreakpoint') != '100%'"> <xf:set var="$uix_responsiveStaffBar" value="1" /> <xf:else /> <xf:set var="$uix_alwaysStaffBar" value="1" /> </xf:if> <xf:contentcheck> <xf:macro name="uix_visitorTabs__component" arg-socialMediaContent="{$uix_socialMediaContent}" arg-whatsNewContent="{$uix_whatsNew__component}" arg-searchContent="{$uix_search__component}" arg-loginTabsContent="{$uix_loginTabs__component}" arg-visitorContent="{$uix_userTabs__component}" arg-location="staffBar" /> </xf:contentcheck> </div> </xf:if> </xf:contentcheck> </div> </div> </xf:if> </xf:set> <xf:if is="!{$uix_alwaysStaffBar} && {$uix_responsiveStaffBar}"> <xf:set var="$uix_htmlClasses">{$uix_htmlClasses} uix_responsiveStaffBar</xf:set> </xf:if> <xf:macro name="uix_staffbar__component" arg-content="!"> {$content} </xf:macro> <xf:comment> --- section links --- </xf:comment> <xf:if is="!{$uix_hideNavigation}"> <xf:set var="$subNavHtml"> <xf:if contentcheck="true"> <div class="p-sectionLinks"> <div class="pageContent"> <xf:contentcheck> <xf:if is="property('uix_viewportWidthRemoveSubNav') != '100%'"> <xf:if is="$selectedNavChildren is not empty"> <xf:set var="$uix_subNavContentStatic" value="1" /> <xf:set var="$uix_htmlClasses">{{$uix_htmlClasses}} uix_hasSectionLinks</xf:set> <div class="p-sectionLinks-inner hScroller" data-xf-init="h-scroller"> <div class="hScroller-scroll"> <ul class="p-sectionLinks-list"> <xf:foreach loop="$selectedNavChildren" key="$navId" value="$navEntry" i="$i"> <li> <xf:macro name="nav_entry" arg-navId="{$navId}" arg-nav="{$navEntry}" arg-shortcut="alt+{$i}" /> </li> </xf:foreach> </ul> </div> </div> </xf:if> <xf:if contentcheck="true"> <div class="p-nav-opposite"> <xf:contentcheck> <xf:if contentcheck="true"> <xf:set var="$uix_subNavContentStatic" value="1" /> <xf:contentcheck> <xf:macro name="uix_visitorTabs__component" arg-socialMediaContent="{$uix_socialMediaContent}" arg-whatsNewContent="{$uix_whatsNew__component}" arg-searchContent="{$uix_search__component}" arg-loginTabsContent="{$uix_loginTabs__component}" arg-visitorContent="{$uix_userTabs__component}" arg-location="tablinks" /> </xf:contentcheck> </xf:if> <xf:macro name="uix_sidebarTrigger__component" arg-content="{$uix_sidebarTrigger__content}" arg-location="sectionLinks" /> </xf:contentcheck> </div> </xf:if> </xf:if> </xf:contentcheck> </div> </div> <xf:elseif is="{$selectedNavEntry}" /> <div class="p-sectionLinks p-sectionLinks--empty"></div> </xf:if> </xf:set> </xf:if> <xf:comment> --- UIX sidebar navigation --- </xf:comment> <xf:set var="$uix_sidebarNav__component"> <div class="uix_sidebarNav"> <div class="uix_sidebarNav__inner {{ property('uix_stickySidenav') ? 'uix_stickyBodyElement' : '' }}"> <div class="uix_sidebar--scroller"> <xf:if contentcheck="true"> <ul class="uix_sidebarNavList js-offCanvasNavSource"> <xf:contentcheck> <xf:foreach loop="$navTree" key="$navSection" value="$navEntry" i="$i" if="{{ $navSection != $xf.app.defaultNavigationId }}"> <li class="uix_sidebarNavList__listItem"> <xf:macro name="nav_entry" arg-sidebarNav="1" arg-navId="{$navSection}" arg-nav="{$navEntry}" arg-selected="{{ $navSection == $pageSection }}" arg-shortcut="{$i}"/> </li> </xf:foreach> </xf:contentcheck> </ul> </xf:if> <xf:if is="$xf.visitor.user_id"> <ul class="uix_sidebarNavList"> <li><div class="p-navEl {{$uix_myAccountLinks == 'profile' ? 'is-selected' : ''}}"><div class="p-navEl__inner u-ripple"><a data-nav-id="profile" href="{{ link('members', $xf.visitor) }}" class="p-navEl-link">{{ phrase('th_profile_uix') }}</a></div></div></li> <li><div class="p-navEl {{$uix_myAccountLinks == 'alerts' ? 'is-selected' : ''}}"><div class="p-navEl__inner u-ripple"><a data-nav-id="alerts" href="{{ link('account/alerts') }}" class="p-navEl-link">{{ phrase('alerts')}}</a></div></div></li> <li><div class="p-navEl {{$uix_myAccountLinks == 'settings' ? 'is-selected' : ''}}"><div class="p-navEl__inner u-ripple"><a data-nav-id="settings" href="{{ link('account/preferences') }}" class="p-navEl-link">{{ phrase('settings')}}</a></div></div></li> </ul> </xf:if> <xf:if contentcheck="true"> <div class="uix_sidebarNav__inner__widgets"> <xf:contentcheck> {$uix_sidebarNavWidgets|raw} </xf:contentcheck> </div> </xf:if> </div> </div> </div> </xf:set> <xf:macro name="uix_sidebarNav__component" arg-content="!"> {$content} </xf:macro> <xf:comment> --- UIX main tab component --- </xf:comment> <xf:set var="$uix_mainTabsOffset"> [ { "breakpoint": "0", "offset": "0" } <xf:if is="{$uix_responsiveStaffBar} && !{$uix_alwaysStaffBar}"> ,{ "breakpoint": "{{ property('uix_staffBarBreakpoint')|escape('json') }}", "offset": "{{property('uix_stickyStaffBarHeight')|escape('json')}}" } </xf:if> <xf:if is="{$uix_alwaysStaffBar}"> ,{ "breakpoint": "0", "offset": "{{property('uix_stickyStaffBarHeight')|escape('json')}}" } </xf:if> <xf:if is="{{property('publicNavSticky')}} != 'none'"> ,{ "breakpoint": "0", "offset": "{{property('uix_stickyNavHeight')|escape('json')}}" } <xf:if is="{{property('publicNavSticky')}} == 'all' && {$uix_subNavContentStatic}" /> ,{ "breakpoint": "{{ property('uix_viewportWidthRemoveSubNav')|escape('json') }}", "offset": "{{(property('uix_stickySectionLinkHeight'))|escape('json')}}" } </xf:if> ] </xf:set> <xf:set var="$uix_mainTabComponent"> <xf:if contentcheck="true"> <div data-xf-init="{{ property('uix_mainTabsSticky') ? 'sticky-header' : ''}}" class="block uix_mainTabBar {{ (property('uix_mainTabsSticky') && property('uix_removeHeaderWrapper')) ? 'uix_stickyBar' : ''}}" data-top-offset-breakpoints="{$uix_mainTabsOffset|for_attr}"> <div class="block-tabHeader tabs hScroller" data-xf-init="h-scroller"> <span class="hScroller-scroll"> <xf:contentcheck> <xf:if is="{$uix_mainTabSets}"> <xf:set var="$uix_hasMainTabs" value="1" /> <xf:macro template="uix_mainTabSets" name="{$uix_mainTabSets}" arg-activeTab="{$uix_mainTabActive}" /> </xf:if> </xf:contentcheck> </span> </div> </div> </xf:if> </xf:set> <xf:macro name="uix_mainTabComponent" arg-content="!" arg-location="!"> <xf:if is="property('uix_tabBarLocation') === {$location} && property('uix_enableMainTabs')"> {{$content}} </xf:if> </xf:macro> <xf:comment> --- Canvases --- </xf:comment> <xf:macro name="uix_canvasTab" arg-icon="!" arg-location="!" arg-canvas="!" arg-type="!"> <xf:if is="{$location} == {$canvas}"> <div class="uix_canvasTab uix_canvasTab__{{$type}}" data-target="uix_canvasPanel__{{$type}}"> <xf:fa icon="fa-{$icon}" /> </div> </xf:if> </xf:macro> <xf:macro name="uix_canvasTabs" arg-location="!"> <div class="uix_canvas__tabs"> <xf:macro name="uix_canvasTab" arg-icon="list" arg-type="navigation" arg-location="{{property('uix_canvas_location_navigation')}}" arg-canvas="{$location}"/> <xf:macro name="uix_canvasTab" arg-icon="grid" arg-type="sidebar" arg-location="{{property('uix_canvas_location_sidebar')}}" arg-canvas="{$location}"/> <xf:macro name="uix_canvasTab" arg-icon="user" arg-type="account" arg-location="{{property('uix_canvas_location_visitorTabs')}}" arg-canvas="{$location}"/> <xf:macro name="uix_canvasTab" arg-icon="email" arg-type="conversations" arg-location="{{property('uix_canvas_location_visitorTabs')}}" arg-canvas="{$location}"/> <xf:macro name="uix_canvasTab" arg-icon="alert" arg-type="alerts" arg-location="{{property('uix_canvas_location_visitorTabs')}}" arg-canvas="{$location}"/> <xf:macro name="uix_canvasTab" arg-icon="star" arg-type="custom" arg-location="{{property('uix_canvas_location_custom')}}" arg-canvas="{$location}"/> </div> </xf:macro> <xf:comment> <xf:set var="$uix_whatsNew__component"> <a href="{{ link('whats-new') }}" class="p-navgroup-link p-navgroup-link--iconic p-navgroup-link--whatsnew" aria-label="{{ phrase('whats_new')|for_attr }}" title="{{ phrase('whats_new') }}"> <i aria-hidden="true"></i> <span class="p-navgroup-linkText">{{ phrase('whats_new') }}</span> </a> </xf:set> <xf:macro name="uix_whatsNew__component" arg-content="!" arg-location="!"> <xf:if is="property('uix_userTabsPosition') == {$location}"> {$content} </xf:if> </xf:macro> </xf:comment> <xf:comment> --- breadcrumb --- </xf:comment> <xf:if is="!{$uix_hideBreadcrumb}"> <xf:set var="$uix_breadcrumbCrumbContent"> <xf:set var="$position" value="{{ 0 }}" /> <xf:set var="$rootBreadcrumb" value="{$navTree.{$xf.options.rootBreadcrumb}}" /> <xf:if is="$rootBreadcrumb AND $rootBreadcrumb.href != $xf.uri AND $rootBreadcrumb.href != $xf.fullUri"> <xf:set var="$position" value="{{ $position + 1 }}" /> <xf:macro name="crumb" arg-position="{$position}" arg-href="{$rootBreadcrumb.href}" arg-value="{$rootBreadcrumb.title}" /> </xf:if> <xf:if is="$selectedNavEntry AND $selectedNavEntry.href AND $selectedNavEntry.href != $xf.uri AND $selectedNavEntry.href != $xf.fullUri AND $selectedNavEntry.href != $rootBreadcrumb.href"> <xf:set var="$position" value="{{ $position + 1 }}" /> <xf:macro name="crumb" arg-position="{$position}" arg-href="{$selectedNavEntry.href}" arg-value="{$selectedNavEntry.title}" /> </xf:if> <xf:foreach loop="$breadcrumbs" value="$breadcrumb" if="$breadcrumb.href != $xf.uri AND $breadcrumb.href != $xf.fullUri"> <xf:set var="$position" value="{{ $position + 1 }}" /> <xf:macro name="crumb" arg-position="{$position}" arg-href="{$breadcrumb.href}" arg-value="{$breadcrumb.value}" /> </xf:foreach> </xf:set> </xf:if> <xf:set var="$breadcrumbCount">{{ count($breadcrumbs)|default(0) }}</xf:set> <xf:set var="$navEntryCount">{{ $selectedNavEntry == null ? 0 : 1 }}</xf:set> <xf:if is="{$uix_breadcrumbCrumbContent} && ({{ ($navEntryCount|escape + $breadcrumbCount|escape) != 1 }} || !property('uix_hideSingleCrumb'))"> <xf:set var="$uix_breadcrumbHasCrumbs" value="1" /> </xf:if> <xf:macro name="breadcrumbs" arg-breadcrumbHasCrumbs="!" arg-crumbContent="!" arg-variant=""> <xf:if contentcheck="true"> <div class="breadcrumb block {{ $variant ? 'p-breadcrumb--' . $variant : '' }}"> <div class="pageContent"> <xf:contentcheck> <xf:if is="{$breadcrumbHasCrumbs}"> <xf:if contentcheck="true"> <ul class="p-breadcrumbs {{ $variant ? 'p-breadcrumbs--' . $variant : '' }}" itemscope itemtype="https://schema.org/BreadcrumbList"> <xf:contentcheck> {{ $crumbContent }} </xf:contentcheck> </ul> </xf:if> </xf:if> </xf:contentcheck> </div> </div> </xf:if> </xf:macro> <xf:macro name="crumb" arg-href="!" arg-value="!" arg-position="{{ 0 }}"> <li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"> <a href="{$href}" itemprop="item"> <xf:if is="{$href} == {$xf.homePageUrl} && property('uix_homeCrumbIcon')"> <xf:fa icon="fa-home" /> <span style="display: none;" itemprop="name">{$value}</span> <xf:else /> <span itemprop="name">{$value}</span> </xf:if> </a> <xf:if is="$position"><meta itemprop="position" content="{$position}" /></xf:if> </li> </xf:macro> <xf:comment> --- Top breadcrumb ---</xf:comment> <xf:set var="$uix_topBreadcrumb__component"> <xf:ad position="container_breadcrumb_top_above" /> <xf:macro name="breadcrumbs" arg-crumbContent="{$uix_breadcrumbCrumbContent}" arg-breadcrumbHasCrumbs="{$uix_breadcrumbHasCrumbs}" /> <xf:ad position="container_breadcrumb_top_below" /> </xf:set> <xf:macro name="uix_topBreadcrumb__component" arg-location="" arg-content="!"> <xf:if is="property('uix_topBreadcrumbLocation') === {$location}"> {$content} </xf:if> </xf:macro> <xf:comment> --- bottom breadcrumb --- </xf:comment> <xf:set var="$uix_bottomBreadcrumb__component"> <xf:if is="!property('uix_removeBottomBreadcrumb')"> <xf:ad position="container_breadcrumb_bottom_above" /> <xf:macro name="breadcrumbs" arg-crumbContent="{$uix_breadcrumbCrumbContent}" arg-breadcrumbHasCrumbs="{$uix_breadcrumbHasCrumbs}" arg-variant="bottom" /> <xf:ad position="container_breadcrumb_bottom_below" /> </xf:if> </xf:set> <xf:macro name="uix_bottomBreadcrumb__component" arg-content="!" arg-location="!"> <xf:if is="property('uix_bottomBreadcrumbLocation') == {$location}"> {$content} </xf:if> </xf:macro> <xf:comment>------ NOTICES ---------</xf:comment> <xf:set var="$uix_notices"> <xf:if is="!{$uix_hideNotices}"> <xf:if is="$notices.block"> <xf:macro template="notice_macros" name="notice_list" arg-type="block" arg-notices="{$notices.block}" /> </xf:if> <xf:if is="$notices.scrolling"> <xf:macro template="notice_macros" name="notice_list" arg-type="scrolling" arg-notices="{$notices.scrolling}" /> </xf:if> </xf:if> </xf:set> <xf:macro name="uix_notices" arg-location="!" arg-content="!"> <xf:if is="{$location} == property('uix_noticeLocation')"> {{$content}} </xf:if> </xf:macro> <xf:comment>------ FOOTER ---------</xf:comment> <xf:set var="$uix_footer"> <footer class="p-footer" id="footer"> <xf:if is="!{$uix_hideExtendedFooter} && property('uix_enableExtendedFooter')"> <xf:include template="uix_extendedFooter" /> </xf:if> <div class="p-footer-inner"> <div class="pageContent"> <div class="p-footer-row"> <xf:if contentcheck="true"> <div class="p-footer-row-main"> <ul class="p-footer-linkList p-footer-choosers"> <xf:contentcheck> <xf:if is="(property('uix_pageWidthToggle') != 'disabled') && $uix_canTogglePageWidth"> <li><a id="uix_widthToggle--trigger" data-xf-init="tooltip" title="{{ phrase('th_toggle_width_uix') }}" rel="nofollow"><xf:fa icon="fa-compress-alt" /></a></li> </xf:if> <xf:if is="$xf.visitor.canChangeStyle() && !{{ property('uix_hideStyleChoose') }}"> <li><a href="{{ link('misc/style') }}" data-xf-click="overlay" data-xf-init="tooltip" title="{{ phrase('style_chooser') }}" rel="nofollow">{$xf.style.title}</a></li> </xf:if> <xf:if is="$xf.visitor.canChangeLanguage()"> <li><a href="{{ link('misc/language') }}" data-xf-click="overlay" data-xf-init="tooltip" title="{{ phrase('language_chooser') }}" rel="nofollow"><i class="fa fa-globe" aria-hidden="true"></i> {$xf.language.title}</a></li> </xf:if> </xf:contentcheck> </ul> </div> </xf:if> </div> <div class="p-footer-row-opposite"> <ul class="p-footer-linkList"> <xf:if is="$xf.visitor.canUseContactForm()"> <xf:if is="$xf.contactUrl"> <li><a href="{$xf.contactUrl}" data-xf-click="{{ ($xf.options.contactUrl.overlay OR $xf.options.contactUrl.type == 'default') ? 'overlay' : '' }}">{{ phrase('contact_us') }}</a></li> </xf:if> </xf:if> <xf:if is="$xf.tosUrl"> <li><a href="{$xf.tosUrl}">{{ phrase('terms_and_rules') }}</a></li> </xf:if> <xf:if is="$xf.privacyPolicyUrl"> <li><a href="{$xf.privacyPolicyUrl}">{{ phrase('privacy_policy') }}</a></li> </xf:if> <xf:if is="$xf.helpPageCount"> <li><a href="{{ link('help') }}">{{ phrase('help') }}</a></li> </xf:if> <xf:if is="$xf.homePageUrl"> <li><a href="{$xf.homePageUrl}">{{ phrase('home') }}</a></li> </xf:if> <li><a href="#top" title="{{ phrase('top') }}" data-xf-click="scroll-to"><i class="fa fa-arrow-up" aria-hidden="true"></i></a></li> <li><a href="{{ link('forums/index.rss', '-') }}" target="_blank" class="p-footer-rssLink" title="{{ phrase('rss')|for_attr }}"><span aria-hidden="true"><i class="fa fa-rss"></i><span class="u-srOnly">{{ phrase('rss') }}</span></span></a></li> </ul> </div> </div> </div> <div class="p-footer-copyrightRow"> <div class="pageContent"> <div class="uix_copyrightBlock"> <xf:if contentcheck="true"> <div class="p-footer-copyright"> <xf:contentcheck> <xf:copyright /> <xf:callback class="ThemeHouse\Core\Branding" method="renderStyleBranding" /><xf:set var="$thBrandingDisplayed" value="1" /> {{ phrase('extra_copyright') }} </xf:contentcheck> </div> </xf:if> <xf:if contentcheck="true"> <div class="p-footer-debug"> <xf:contentcheck> <xf:macro template="debug_macros" name="debug" arg-controller="{$controller}" arg-action="{$actionMethod}" arg-template="{$template}" /> </xf:contentcheck> </div> </xf:if> </div> <xf:comment> <xf:macro name="uix_socialMedia" arg-location="copyright" template="uix_socialMedia" /> </xf:comment> <xf:macro name="uix_socialMedia__component" arg-content="{$uix_socialMediaContent}" arg-location="copyright" /> </div> </div> </footer> </xf:set> <xf:macro name="uix_footer" arg-insideContent="!" arg-location="!" arg-content="!"> <xf:if is="($insideContent && {$location} == 'insideContent') || ($location == 'bottom' && !$insideContent)"> {{$content}} </xf:if> </xf:macro> <xf:comment>------ END COMPONENT MARKUP MACROS ---------</xf:comment> <xf:set var="$thUixFontSize" value="{{ 62.5 * (14 + $xf.visitor.Option.thuix_font_size * 2) / 14 }}" /> <html id="XF" lang="{$xf.language.language_code}" dir="{$xf.language.text_direction}" style="font-size: {$thUixFontSize}%;" data-app="public" data-template="{$template}" data-container-key="{$containerKey}" data-content-key="{$contentKey}" data-logged-in="{{ $xf.visitor.user_id ? 'true' : 'false' }}" data-cookie-prefix="{$xf.cookie.prefix}" data-csrf="{{ csrf_token()|escape('js') }}" class="has-no-js {{ $template ? 'template-' . $template : '' }} {$uix_htmlClasses} {$uix_additionalHtmlClasses}" {{ $xf.runJobs ? ' data-run-jobs=""' : '' }}> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"> <xf:comment> -- moved to top to use in macros <xf:set var="$siteName" value="{$xf.options.boardTitle}" /> <xf:set var="$h1"><xf:h1 fallback="{$siteName}" /></xf:set> <xf:set var="$title"><xf:title formatter="%s | %s" fallback="{$xf.options.boardTitle}" /></xf:set> <xf:set var="$description"><xf:description /></xf:set> </xf:comment> <title>{$title}</title> <link rel="manifest" href="{{ base_url('webmanifest.php') }}"> <xf:if is="property('metaThemeColor')"> <meta name="theme-color" content="{{ parse_less_color(property('metaThemeColor')) }}" /> <meta name="msapplication-TileColor" content="{{ property('metaThemeColor') }}"> </xf:if> <meta name="apple-mobile-web-app-title" content="{{ $xf.options.boardShortTitle ?: $xf.options.boardTitle }}"> <xf:if is="property('publicIconUrl')"> <link rel="apple-touch-icon" href="{{ base_url(property('publicIconUrl', true)) }}"> </xf:if> <xf:foreach loop="$head" value="$headTag"> {$headTag} </xf:foreach> <xf:if is="!$head.meta_site_name && $siteName is not empty"> <xf:macro template="metadata_macros" name="site_name" arg-siteName="{$siteName}" arg-output="{{ true }}" /> </xf:if> <xf:if is="!$head.meta_type"> <xf:macro template="metadata_macros" name="type" arg-type="website" arg-output="{{ true }}" /> </xf:if> <xf:if is="!$head.meta_title"> <xf:macro template="metadata_macros" name="title" arg-title="{{ page_title() ?: $siteName }}" arg-output="{{ true }}" /> </xf:if> <xf:if is="!$head.meta_description && $description is not empty && $pageDescriptionMeta"> <xf:macro template="metadata_macros" name="description" arg-description="{$description}" arg-output="{{ true }}" /> </xf:if> <xf:if is="!$head.meta_share_url"> <xf:macro template="metadata_macros" name="share_url" arg-shareUrl="{$xf.fullUri}" arg-output="{{ true }}" /> </xf:if> <xf:if is="!$head.meta_image_url && property('publicMetadataLogoUrl')"> <xf:macro template="metadata_macros" name="image_url" arg-imageUrl="{{ base_url(property('publicMetadataLogoUrl'), true) }}" arg-output="{{ true }}" /> </xf:if> <xf:macro template="helper_js_global" name="head" arg-app="public" /> <xf:if is="property('publicFaviconUrl')"> <link rel="icon" type="image/png" href="{{ base_url(property('publicFaviconUrl'), true) }}" sizes="32x32" /> </xf:if> <xf:if is="property('publicMetadataLogoUrl')"> <link rel="apple-touch-icon" href="{{ base_url(property('publicMetadataLogoUrl'), true) }}" /> </xf:if> <xf:include template="google_analytics" /> <xf:set var="$uix_stickyStaffBarHeight" value="0" /> <xf:if is="property('uix_stickyStaffBar') && ({$uix_responsiveStaffBar} || {$uix_alwaysStaffBar})"> <xf:set var="$uix_stickyStaffBarHeight" value="{{property('uix_stickyStaffBarHeight')}}" /> </xf:if> </head> <body data-template="{$template}"> <xf:include template="page_style" /> <div id="jumpToTop"></div> <xf:comment> -- Not currently supporting Sidebar navigation when page style is not covered --- <xf:if is="property('uix_navigationType') == 'sidebarNav' && property('uix_pageStyle') != 'covered'"> <xf:macro name="uix_sidebarNav__component" arg-content="{$uix_sidebarNav__component}" /> </xf:if> </xf:comment> <div class="uix_pageWrapper--fixed"> <div class="p-pageWrapper" id="top"> <xf:if is="!{{property('uix_removeHeaderWrapper')}}"> <div class="uix_headerContainer"> <div class="uix_headerContainer--stickyFix"></div> </xf:if> <xf:macro name="uix_staffbar__component" arg-content="{$uix_staffbar__component}" /> <xf:set var="$uix_headerContent"> <xf:if contentcheck="true"> <div class="p-header-content"> <xf:contentcheck> <xf:if is="property('uix_viewportShowLogoBlock') != '0'"> <xf:macro name="uix_logo__component" arg-content="{$uix_logo__component}" /> </xf:if> <xf:if contentcheck="true"> <div class="p-nav-opposite"> <xf:contentcheck> <xf:macro name="uix_visitorTabs__component" arg-socialMediaContent="{$uix_socialMediaContent}" arg-whatsNewContent="{$uix_whatsNew__component}" arg-searchContent="{$uix_search__component}" arg-loginTabsContent="{$uix_loginTabs__component}" arg-visitorContent="{$uix_userTabs__component}" arg-location="header" /> </xf:contentcheck> </div> </xf:if> </xf:contentcheck> </div> </xf:if> </xf:set> <xf:macro name="uix_logoBlock" arg-content=""> <xf:if contentcheck="true"> <header class="p-header p-header--hasExtraContent" id="header"> <div class="p-header-inner"> {$content} <xf:contentcheck> <xf:ad position="container_header" /> </xf:contentcheck> </div> </header> <xf:else /> <header class="p-header" id="header"> <div class="p-header-inner"> {$content} </div> </header> </xf:if> </xf:macro> <xf:if is="{{ !property('uix_navAboveHeader') }}"> <xf:macro name="uix_logoBlock" arg-content="{$uix_headerContent}" /> </xf:if> <xf:set var="$navHtml"> <nav class="p-nav"> <div class="p-nav-inner"> <xf:if is="!{$uix_hideNavigation}"> <xf:set var="$uix_badgeCounter" value="{{$xf.visitor.conversations_unread + $xf.visitor.alerts_unread}}" /> <xf:if is="{{ property('uix_visitorTabsMobile') == 'canvas' }}"> <xf:set var="$uix_visitorTabCanvas" value="1" /> <xf:else /> <xf:set var="$uix_visitorTabCanvas" value="0" /> </xf:if> <a class="p-nav-menuTrigger badgeContainer{{ ($uix_visitorTabCanvas && ($xf.visitor.alerts_unread || $xf.visitor.conversations_unread)) ? ' badgeContainer--highlighted' : '' }}" data-badge="{$uix_badgeCounter|number}" data-xf-click="off-canvas" data-menu=".js-headerOffCanvasMenu" role="button" tabindex="0"> <i aria-hidden="true"></i> <span class="p-nav-menuText">{{ phrase('menu') }}</span> </a> <xf:if is="property('uix_navigationType') == 'sidebarNav' && property('uix_pageStyle') == 'covered'"> <a class="p-nav-menuTrigger uix_sidebarNav--trigger" id="uix_sidebarNav--trigger" rel="nofollow"> <i aria-hidden="true"></i> <span class="p-nav-menuText">{{ phrase('menu') }}</span> </a> </xf:if> </xf:if> <xf:macro name="uix_logo__component" arg-content="{$uix_logo__component}" /> <xf:if is="!{$uix_hideNavigation}"> <xf:if is="property('uix_navigationType') != 'sidebarNav' || property('uix_pageStyle') != 'covered'"> <div class="p-nav-scroller hScroller" data-xf-init="h-scroller" data-auto-scroll=".p-navEl.is-selected"> <div class="hScroller-scroll"> <ul class="p-nav-list js-offCanvasNavSource"> <xf:foreach loop="$navTree" key="$navSection" value="$navEntry" i="$i" if="{{ $navSection != $xf.app.defaultNavigationId }}"> <li> <xf:macro name="nav_entry" arg-navId="{$navSection}" arg-nav="{$navEntry}" arg-selected="{{ $navSection == $pageSection }}" arg-shortcut="{$i}" /> </li> </xf:foreach> </ul> </div> </div> </xf:if> <xf:if is="property('uix_activeNavTitle')"> <div class="uix_activeNavTitle"> <span> <xf:if is="{$uix_mobileActiveNav}"> {{ $uix_mobileActiveNav }} <xf:elseif is="{$selectedNavEntry.href}" /> {$selectedNavEntry.title} <xf:else /> </xf:if> </span> </div> </xf:if> </xf:if> <xf:macro name="uix_search__component" arg-location="navigationLeft" arg-content="{$uix_search__component}" /> <xf:if contentcheck="true"> <div class="p-nav-opposite"> <xf:contentcheck> <xf:macro name="uix_visitorTabs__component" arg-socialMediaContent="{$uix_socialMediaContent}" arg-whatsNewContent="{$uix_whatsNew__component}" arg-searchContent="{$uix_search__component}" arg-loginTabsContent="{$uix_loginTabs__component}" arg-visitorContent="{$uix_userTabs__component}" arg-location="navigation" /> <xf:macro name="uix_sidebarTrigger__component" arg-content="{$uix_sidebarTrigger__content}" arg-location="navigation" /> </xf:contentcheck> </div> </xf:if> </div> <xf:comment> <xf:macro template="uix_megaMenu" name="uix_megaMenu" /> </xf:comment> </nav> </xf:set> <xf:set var="$uix_navOffset"> [ { "breakpoint": "0", "offset": "0" } <xf:if is="{$uix_responsiveStaffBar} && !{$uix_alwaysStaffBar} && {{ property('uix_stickyStaffBar') }}"> ,{ "breakpoint": "{{ property('uix_staffBarBreakpoint')|escape('json') }}", "offset": "{{property('uix_stickyStaffBarHeight')|escape('json')}}" } </xf:if> <xf:if is="{$uix_alwaysStaffBar} && {{ property('uix_stickyStaffBar') }}"> ,{ "breakpoint": "0", "offset": "{{property('uix_stickyStaffBarHeight')|escape('json')}}" } </xf:if> ] </xf:set> <xf:if is="property('publicNavSticky') == 'primary'"> <div class="p-navSticky p-navSticky--primary <xf:if is="{{ (property('publicNavSticky') !== 'none') && !property('uix_removeHeaderWrapper')}}">uix_stickyBar</xf:if>" data-top-offset-breakpoints="{$uix_navOffset|for_attr}" data-xf-init="sticky-header"> {$navHtml|raw} </div> {$subNavHtml|raw} <xf:elseif is="property('publicNavSticky') == 'all'" /> <div class="p-navSticky p-navSticky--all <xf:if is="{{ (property('publicNavSticky') !== 'none') && !property('uix_removeHeaderWrapper')}}">uix_stickyBar</xf:if>" data-top-offset-breakpoints="{$uix_navOffset|for_attr}" data-xf-init="sticky-header"> {$navHtml|raw} {$subNavHtml|raw} </div> <xf:else /> {$navHtml|raw} {$subNavHtml|raw} </xf:if> <xf:if is="{{ property('uix_navAboveHeader') }}"> <xf:macro name="uix_logoBlock" arg-content="{$uix_headerContent}" /> </xf:if> <xf:macro name="welcomeSection" template="uix_welcomeSection" arg-location="header" arg-showWelcomeSection="{$uix_showWelcomeSection}" /> <xf:macro name="uix_topBreadcrumb__component" arg-location="header" arg-content="{$uix_topBreadcrumb__component}" /> <xf:macro name="uix_mainTabComponent" arg-location="header" arg-content="{$uix_mainTabComponent}" /> <xf:macro name="uix_titlebar__component" arg-location="header" arg-content="{$uix_titlebar__component}" /> {{$uix_headerExtra|raw }} <xf:if is="!{{property('uix_removeHeaderWrapper')}}"> </div> </xf:if> <xf:comment> --- UI.X off canvas start ---</xf:comment> <div class="offCanvasMenu offCanvasMenu--nav js-headerOffCanvasMenu" data-menu="menu" aria-hidden="true" data-ocm-builder="navigation"> <div class="offCanvasMenu-backdrop" data-menu-close="true"></div> <div class="offCanvasMenu-content"> <xf:include template="uix_canvasTabs" /> <xf:include template="uix_canvasPanels" /> <xf:macro name="canvasNavPanel"> <div class="offCanvasMenu-header"> {{ phrase('menu') }} <a class="offCanvasMenu-closer" data-menu-close="true" role="button" tabindex="0" aria-label="{{ phrase('close')|for_attr }}"></a> </div> <xf:if is="$xf.visitor.user_id"> <div class="p-offCanvasAccountLink"> <a href="{{ link('account') }}" class="offCanvasMenu-link"> <xf:avatar user="$xf.visitor" size="xxs" href="" /> {$xf.visitor.username} </a> <hr class="offCanvasMenu-separator" /> </div> </xf:if> <div class="js-offCanvasNavTarget"></div> <xf:if is="$xf.visitor.user_id"> <div class="offCanvasMenu-linkHolder {{$uix_myAccountLinks == 'profile' ? 'is-selected' : ''}}"><div class="p-navEl__inner u-ripple"><a data-nav-id="profile" href="{{ link('members', $xf.visitor) }}" class="offCanvasMenu-link">{{ phrase('th_profile_uix') }}</a></div></div> <div class="offCanvasMenu-linkHolder {{$uix_myAccountLinks == 'alerts' ? 'is-selected' : ''}}"><div class="p-navEl__inner u-ripple"><a data-nav-id="alerts" href="{{ link('account/alerts') }}" class="offCanvasMenu-link">{{ phrase('alerts')}}</a></div></div> <div class="offCanvasMenu-linkHolder {{$uix_myAccountLinks == 'settings' ? 'is-selected' : ''}}"><div class="p-navEl__inner u-ripple"><a data-nav-id="settings" href="{{ link('account/preferences') }}" class="offCanvasMenu-link">{{ phrase('settings')}}</a></div></div> </xf:if> <xf:if contentcheck="true"> <div class="uix_sidebarNav__inner__widgets"> <xf:contentcheck> {$uix_sidebarNavWidgets|raw} </xf:contentcheck> </div> </xf:if> </xf:macro> <div class="offCanvasMenu-installBanner js-installPromptContainer" style="display: none;" data-xf-init="install-prompt"> <div class="offCanvasMenu-installBanner-header">{{ phrase('install_app') }}</div> <xf:button class="js-installPromptButton">{{ phrase('install') }}</xf:button> </div> </div> </div> <xf:macro name="uix_titlebar__component" arg-location="belowHeader" arg-content="{$uix_titlebar__component}" /> <div class="p-body"> <xf:if is="property('uix_navigationType') == 'sidebarNav' && property('uix_pageStyle') == 'covered'"> <xf:macro name="uix_sidebarNav__component" arg-content="{$uix_sidebarNav__component}" /> </xf:if> <div class="p-body-inner {{ $removePageWrapper ? 'p-body-inner-none' : ''}}"> <xf:if is="!is_addon_active('ThemeHouse/UIX') && $xf.visitor.is_admin"> <div class="blockMessage blockMessage--error blockMessage--errorUixAddon"> <h2 style="margin: 0 0 .5em 0">UI.X Error</h2> <p> It appears that you do not have the UI.X Add-on installed. Please install this add-on to ensure your style works as expected. You can download the UI.X add-on <a href="https://www.themehouse.com/xenforo/2/addons/uix-addon">here</a>. </p> <xf:button href="https://www.themehouse.com/help/documentation/uix2" class="button--primary"> <xf:fa icon="fa-exclamation-triangle" /> View Documentation </xf:button> </div> </xf:if> <!--XF:EXTRA_OUTPUT--> <xf:macro name="uix_notices" arg-location="aboveMainContainer" arg-content="{$uix_notices}" /> <xf:macro name="uix_titlebar__component" arg-location="aboveMainContainer" arg-content="{$uix_titlebar__component}" /> <div class="uix_welcomeSection"> <style type="text/css"> .uix_welcomeSection { position: relative; background: #212428 url(styles/uix_dark/images/welcome-banner.png); border-radius: 3px; margin-bottom: 20px; background-size: cover; background-position: center; } .uix_welcomeSection .uix_welcomeSection__inner { position: relative; color: #fff; padding: 20px; display: flex; align-items: center; justify-content: center; text-align: center; } .uix_welcomeSection .uix_welcomeSection__text { font-size: 16px; color: rgba(255,255,255,0.75); padding-top: 4px; padding-bottom: 16px; } .uix_welcomeSection .uix_welcomeSection__title { font-size: 26px; margin: 0; font-family: 'Roboto',-apple-system,BlinkMacSystemFont,'Segoe UI','Oxygen','Ubuntu','Cantarell','Fira Sans','Droid Sans','Helvetica Neue',sans-serif; } .button, a.button { Display: none; display: inline-block; border: 1px solid transparent; -webkit-transition: background-color .2s ease; transition: background-color .2s ease; font-size: 14px; font-weight: 500; border-radius: 3px; padding-top: 0; padding-right: 10px; padding-bottom: 0; padding-left: 10px; text-align: center; outline: none; line-height: 32px; height: 32px; text-decoration: none; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; box-sizing: content-box; -webkit-appearance: none; text-transform: uppercase; will-change: box-shadow; transition: all .3s cubic-bezier(.25, .8, .25, 1); border: none; white-space: nowrap; color: #fff; background: transparent; border-color: rgba(20,20,20,0); } </style> <div class="uix_welcomeSection__inner"> <div class="media__container"> <div class="media__body"> <div class="uix_welcomeSection__title">Добро пожаловать!</div> <div class="uix_welcomeSection__text">Для того, чтобы начать взаимодействовать с форумом Вам необходимо будет зарегистрировать аккаунт.</div> <a href="/index.php?register/" class="button--cta button rippleButton"><span class="button-text">Зарегистрироваться</span></a> </div> </div> </div> </div> <div uix_component="MainContainer" class="uix_contentWrapper"> <xf:macro name="uix_notices" arg-location="mainContainerTop" arg-content="{$uix_notices}" /> <xf:ad position="container_content_above" /> <xf:macro name="welcomeSection" template="uix_welcomeSection" arg-location="mainContainerTop" arg-showWelcomeSection="{$uix_showWelcomeSection}" /> <xf:macro name="uix_topBreadcrumb__component" arg-location="mainContainerTop" arg-content="{$uix_topBreadcrumb__component}" /> <xf:macro name="uix_titlebar__component" arg-location="mainContainerTop" arg-content="{$uix_titlebar__component}" /> <xf:macro name="uix_mainTabComponent" arg-location="mainContainerTop" arg-content="{$uix_mainTabComponent}" /> <div class="p-body-main {{ $sidebar ? 'p-body-main--withSidebar' : '' }} {{ $sideNav ? 'p-body-main--withSideNav' : '' }}"> <xf:comment> <xf:if is="$sideNav"> <div class="p-body-sideNavCol"></div> </xf:if> <div class="p-body-contentCol"></div> <xf:if is="$sidebar"> <div class="p-body-sidebarCol"></div> </xf:if> </xf:comment> <xf:if is="$sideNav"> <div class="p-body-sideNav"> <div class="p-body-sideNavTrigger"> <xf:button class="button--link" data-xf-click="off-canvas" data-menu="#js-SideNavOcm"> {{ $sideNavTitle ?: phrase('navigation') }} </xf:button> </div> <div class="p-body-sideNavInner {{ (property('uix_stickySidebar') == 'top') ? ' uix_stickyBodyElement' : '' }}" data-ocm-class="offCanvasMenu offCanvasMenu--blocks" id="js-SideNavOcm" data-ocm-builder="sideNav"> <div class="uix_sidebar--scroller"> <div data-ocm-class="offCanvasMenu-backdrop" data-menu-close="true"></div> <div data-ocm-class="offCanvasMenu-content"> <div class="p-body-sideNavContent"> <xf:ad position="container_sidenav_above" /> <xf:foreach loop="$sideNav" value="$sideNavHtml"> {$sideNavHtml} </xf:foreach> <xf:ad position="container_sidenav_below" /> </div> </div> </div> </div> </div> </xf:if> <xf:macro name="uix_sidebar__component" arg-content="{$uix_sidebar__component}" arg-location="left" /> <div uix_component="MainContent" class="p-body-content"> <!-- ABOVE MAIN CONTENT --> <xf:macro name="uix_notices" arg-location="aboveMainContent" arg-content="{$uix_notices}" /> <xf:macro name="uix_topBreadcrumb__component" arg-location="aboveMainContent" arg-content="{$uix_topBreadcrumb__component}" /> <xf:macro name="welcomeSection" template="uix_welcomeSection" arg-location="aboveMainContent" arg-showWelcomeSection="{$uix_showWelcomeSection}" /> <xf:macro name="uix_titlebar__component" arg-location="aboveMainContent" arg-content="{$uix_titlebar__component}" /> <xf:macro name="uix_mainTabComponent" arg-location="aboveMainContent" arg-content="{$uix_mainTabComponent}" /> <div class="p-body-pageContent"> <xf:macro name="uix_notices" arg-location="mainContentTop" arg-content="{$uix_notices}" /> <xf:macro name="welcomeSection" template="uix_welcomeSection" arg-location="mainContentTop" arg-showWelcomeSection="{$uix_showWelcomeSection}" /> <xf:macro name="uix_topBreadcrumb__component" arg-location="mainContentTop" arg-content="{$uix_topBreadcrumb__component}" /> <xf:macro name="uix_titlebar__component" arg-location="mainContentTop" arg-content="{$uix_titlebar__component}" /> <xf:macro name="uix_mainTabComponent" arg-location="mainContentTop" arg-content="{$uix_mainTabComponent}" /> {$content|raw} <xf:macro name="uix_bottomBreadcrumb__component" arg-content="{$uix_bottomBreadcrumb__component}" arg-location="mainContentBottom" /> </div> <!-- BELOW MAIN CONTENT --> <xf:ad position="container_content_below" /> <xf:macro name="uix_bottomBreadcrumb__component" arg-content="{$uix_bottomBreadcrumb__component}" arg-location="belowMainContent" /> </div> <xf:macro name="uix_sidebar__component" arg-content="{$uix_sidebar__component}" arg-location="right" /> </div> <xf:macro name="uix_bottomBreadcrumb__component" arg-content="{$uix_bottomBreadcrumb__component}" arg-location="mainContainerBottom" /> </div> <xf:macro name="uix_bottomBreadcrumb__component" arg-content="{$uix_bottomBreadcrumb__component}" arg-location="belowMainContainer" /> <xf:macro name="uix_footer" arg-location="insideContent" arg-content="{$uix_footer}" arg-insideContent="{{ property('uix_footerInsideContent')}}" /> </div> </div> <xf:macro name="uix_footer" arg-location="bottom" arg-content="{$uix_footer}" arg-insideContent="{{ property('uix_footerInsideContent')}}" /> <xf:if contentcheck="true"> <div class="uix_fabBar uix_fabBar--active"> <xf:contentcheck> <xf:if is="property('scrollJumpButtons')"> <div class="u-scrollButtons js-scrollButtons" data-trigger-type="{{ property('scrollJumpButtons') }}"> <xf:button href="#top" class="button--scroll ripple-JsOnly" data-xf-click="scroll-to"><xf:fa icon="fa-arrow-up" /><span class="u-srOnly">{{ phrase('top') }}</span></xf:button> <xf:if is="property('scrollJumpButtons') != 'up'"> <xf:button href="#footer" class="button--scroll ripple-JsOnly" data-xf-click="scroll-to"><xf:fa icon="fa-arrow-down" /><span class="u-srOnly">{{ phrase('bottom') }}</span></xf:button> </xf:if> </div> </xf:if> <xf:if is="property('uix_fab') != 'never'"> <xf:if contentcheck="true"> <div class="p-title-pageAction"><xf:contentcheck><xf:pageaction /></xf:contentcheck></div> </xf:if> </xf:if> </xf:contentcheck> </div> </xf:if> <xf:if is="(property('uix_fab') != 'never') && !property('uix_fabScroll')"> <xf:if contentcheck="true"> <div class="uix_fabBar uix_fabBar--mirror"> <div class="p-title-pageAction"><xf:contentcheck><xf:pageaction /></xf:contentcheck></div> </div> </xf:if> </xf:if> <xf:if is="property('uix_visitorTabsMobile') == 'tabbar'"> <xf:macro name="uix_tabBar" template="uix_tabBar" /> </xf:if> </div> </div> <div class="u-bottomFixer js-bottomFixTarget"> <xf:if is="$notices.floating"> <xf:macro template="notice_macros" name="notice_list" arg-type="floating" arg-notices="{$notices.floating}" /> </xf:if> <xf:if is="$notices.bottom_fixer"> <xf:macro template="notice_macros" name="notice_list" arg-type="bottom_fixer" arg-notices="{$notices.bottom_fixer}" /> </xf:if> </div> <xf:include template="uix_config" /> <xf:macro template="helper_js_global" name="body" arg-app="public" arg-jsState="{$jsState}" /> <xf:if is="count($xf.reactionsActive) > 1"> <script type="text/template" id="xfReactTooltipTemplate"> <div class="tooltip-content-inner"> <div class="reactTooltip"> <xf:foreach loop="$xf.reactionsActive" key="$reactionId" value="$reaction"> <xf:reaction id="{$reactionId}" tooltip="true" /> </xf:foreach> </div> </div> </script> </xf:if> <xf:if is="property('uix_loginStyle') == 'slidingPanel'"> <div class="uix__loginForm uix__loginForm--login"> <div class="uix__loginForm--panel"> <xf:include template="login"> <xf:set var="$uix_loginPreventAutoFocus" value="1" /> </xf:include> </div> <div class="uix__loginForm--mask"></div> </div> </xf:if> {$ldJsonHtml|raw} </body> </html> <xf:macro name="nav_entry" arg-sidebarNav="" arg-navId="!" arg-nav="!" arg-selected="{{ false }}" arg-shortcut=""> <div class="p-navEl {{ !$sidebarNav ? 'u-ripple' : '' }} {{ $selected ? 'is-selected' : '' }}" {{ $nav.children ? 'data-has-children="true"' : '' }}> <xf:if is="$sidebarNav"> <div class="p-navEl__inner u-ripple"> </xf:if> <xf:if is="$nav.href"> <xf:macro name="nav_link" arg-navId="{$navId}" arg-nav="{$nav}" arg-class="p-navEl-link {{ $nav.children ? 'p-navEl-link--splitMenu' : '' }}" arg-shortcut="{{ $nav.children ? false : $shortcut }}" /> <xf:if is="$nav.children"> <a data-xf-key="{$shortcut}" data-xf-click="menu" data-menu-pos-ref="< .p-navEl" class="p-navEl-splitTrigger" role="button" tabindex="0" aria-label="{{ phrase('toggle_expanded')|for_attr }}" aria-expanded="false" aria-haspopup="true"> </a> </xf:if> <xf:elseif is="$nav.children" /> <a data-xf-key="{$shortcut}" class="p-navEl-linkHolder" data-menu-pos-ref="< .p-navEl" data-xf-click="menu" role="button" tabindex="0" aria-expanded="false" aria-haspopup="true"> <xf:macro name="nav_link" arg-navId="{$navId}" arg-nav="{$nav}" arg-class="p-navEl-link p-navEl-link--menuTrigger" /> </a> <xf:else /> <xf:macro name="nav_link" arg-navId="{$navId}" arg-nav="{$nav}" arg-class="p-navEl-link" arg-shortcut="{$shortcut}" /> </xf:if> <xf:if is="$nav.children"> <xf:if is="!{$sidebarNav}"> <div class="menu menu--structural" data-menu="menu" aria-hidden="true"> <div class="menu-content"> <xf:foreach loop="$nav.children" key="$childNavId" value="$child"> <xf:macro name="nav_menu_entry" arg-navId="{$childNavId}" arg-nav="{$child}" /> </xf:foreach> </div> </div> </xf:if> </xf:if> <xf:if is="{$sidebarNav} && $nav.children && property('uix_tablinksInSideNav')"> <a class="uix_sidebarNav--trigger <xf:if is="!property('uix_sideNavCollapsed') && $selected">is-expanded</xf:if>" rel="nofollow"><xf:fa icon="fa-chevron-down" /></a> </xf:if> <xf:if is="$sidebarNav"> </div> </xf:if> <xf:if is="property('uix_tablinksInSideNav')"> <xf:if is="{$sidebarNav}"> <div <xf:if is="$nav.children">data-menu="false"</xf:if> class="uix_sidebarNav__subNav <xf:if is="!property('uix_sideNavCollapsed') && $selected">subNav--expand</xf:if>"> <div class="uix_sidebarNav__subNavInner"> <xf:foreach loop="$nav.children" key="$childNavId" value="$child"> <xf:macro name="nav_menu_entry" arg-navId="{$childNavId}" arg-nav="{$child}" /> </xf:foreach> </div> </div> </xf:if> </xf:if> </div> </xf:macro> <xf:macro name="nav_link" arg-navId="!" arg-nav="!" arg-class="" arg-titleHtml="" arg-shortcut="{{ false }}"> <xf:set var="$tag" value="{{ $nav.href ? 'a' : 'span' }}" /> <{$tag} {{ $nav.href ? 'href="' . $nav.href . '"' : '' }} class="{$class} {$nav.attributes.class}" {{ attributes($nav.attributes, ['class']) }} {{ $shortcut !== false ? 'data-xf-key="' . $shortcut . '"' : '' }} data-nav-id="{$navId}"><xf:if is="$nav.icon"><xf:fa icon="{$nav.icon}" /> </xf:if><span>{{ $titleHtml ? $titleHtml|raw : $nav.title }}</span><xf:if is="$nav.counter"> <span class="badge badge--highlighted">{$nav.counter|number}</span></xf:if></{$tag}> </xf:macro> <xf:macro name="nav_menu_entry" arg-navId="!" arg-nav="!" arg-depth="0"> <xf:macro name="nav_link" arg-navId="{$navId}" arg-nav="{$nav}" arg-class="menu-linkRow u-ripple u-indentDepth{$depth} js-offCanvasCopy" /> <xf:if is="$nav.children"> <xf:foreach loop="$nav.children" key="$childNavId" value="$child"> <xf:macro name="nav_menu_entry" arg-navId="{$childNavId}" arg-nav="{$child}" arg-depth="{{ $depth + 1 }}" /> </xf:foreach> <xf:if is="$depth == 0"> <hr class="menu-separator" /> </xf:if> </xf:if> </xf:macro> ]]>
</template>
<template title="account_alerts" type="public" addon_id="XF" version_id="2020031" version_string="2.2.0 Beta 1">
<![CDATA[ <xf:title>{{ phrase('alerts') }}</xf:title> <xf:page option="uix_myAccountLinks" value="alerts" /> <xf:wrap template="account_wrapper" /> <div class="block"> <div class="block-outer"><xf:trim> <div class="block-outer-opposite"> <div class="buttonGroup"> <xf:button href="{{ link('account/alerts/mark-read') }}" class="button--link" overlay="true"> {{ phrase('mark_read') }} </xf:button> </div> </div> </xf:trim></div> <div class="block-container"> <div class="block-body"> <xf:if is="$alerts is not empty"> <ol class="listPlain" data-xf-init="alerts-list"> <xf:foreach loop="$alerts" value="$alert"> <li data-alert-id="{$alert.alert_id}" class="alert js-alert block-row block-row--separated {{ $alert.isUnreadInUi() ? 'is-unread' : '' }}"> <xf:macro template="alert_macros" name="row" arg-alert="{$alert}" /> </li> </xf:foreach> </ol> <xf:elseif is="$page <= 1" /> <div class="block-row">{{ phrase('you_do_not_have_any_recent_alerts') }}</div> <xf:else /> <div class="block-row">{{ phrase('no_alerts_can_be_shown') }}</div> </xf:if> </div> </div> <xf:pagenav link="account/alerts" page="{$page}" perpage="{$perPage}" total="{$totalAlerts}" wrapperclass="block-outer block-outer--after" /> </div> ]]>
</template>
<template title="account_preferences" type="public" addon_id="XF" version_id="2020031" version_string="2.2.0 Beta 1">
<![CDATA[ <xf:title>{{ phrase('preferences') }}</xf:title> <xf:page option="uix_myAccountLinks" value="settings" /> <xf:wrap template="account_wrapper" /> <xf:form action="{{ link('account/preferences') }}" ajax="true" class="block" data-force-flash-message="true"> <div class="block-container"> <div class="block-body"> <xf:if is="$xf.visitor.canChangeStyle()"> <xf:selectrow name="user[style_id]" value="{$xf.visitor.style_id}" label="{{ phrase('style') }}"> <xf:option value="0">{{ phrase('use_default_style:') }} {$defaultStyle.title}</xf:option> <xf:foreach loop="$styles" value="$style"> <xf:option value="{$style.style_id}">{$style.title}{{ !$style.user_selectable ? ' *' : '' }}</xf:option> </xf:foreach> </xf:selectrow> <xf:else /> <xf:hiddenval name="user[style_id]">{$xf.visitor.style_id}</xf:hiddenval> </xf:if> <xf:if is="$xf.visitor.canChangeLanguage()"> <xf:selectrow name="user[language_id]" value="{$xf.visitor.language_id}" label="{{ phrase('language') }}"> <xf:foreach loop="$languages" value="$language"> <xf:option value="{$language.language_id}">{$language.title}{{ !$language.user_selectable ? ' *' : '' }}</xf:option> </xf:foreach> </xf:selectrow> <xf:else /> <xf:hiddenval name="user[language_id]">{{ $xf.visitor.language_id ?: $xf.options.defaultLanguageId }}</xf:hiddenval> </xf:if> <xf:selectrow name="user[timezone]" value="{$xf.visitor.timezone}" label="{{ phrase('time_zone') }}"> <xf:options source="$timeZones" /> </xf:selectrow> <xf:macro template="helper_account" name="email_options_row" arg-showConversationOption="{{ true }}" /> <xf:checkboxrow label="{{ phrase('content_options') }}"> <xf:option value="watch_no_email" name="option[creation_watch_state]" checked="{{ $xf.visitor.Option.creation_watch_state ? true : false }}" label="{{ phrase('automatically_watch_content_you_create...') }}"> <xf:checkbox> <xf:option value="watch_email" name="option[creation_watch_state]" checked="{{ $xf.visitor.Option.creation_watch_state == 'watch_email' }}" label="{{ phrase('and_receive_email_notifications') }}" /> </xf:checkbox> </xf:option> <xf:option value="watch_no_email" name="option[interaction_watch_state]" checked="{{ $xf.visitor.Option.interaction_watch_state ? true : false }}" label="{{ phrase('automatically_watch_content_you_interact_with...') }}"> <xf:checkbox> <xf:option value="watch_email" name="option[interaction_watch_state]" checked="{{ $xf.visitor.Option.interaction_watch_state == 'watch_email' }}" label="{{ phrase('and_receive_email_notifications') }}" /> </xf:checkbox> </xf:option> <xf:option name="option[content_show_signature]" checked="{$xf.visitor.Option.content_show_signature}" label="{{ phrase('show_peoples_signatures_with_their_messages') }}" /> </xf:checkboxrow> <xf:macro template="helper_account" name="activity_privacy_row" /> <xf:macro template="custom_fields_macros" name="custom_fields_edit" arg-type="users" arg-group="preferences" arg-set="{$xf.visitor.Profile.custom_fields}" /> <xf:if is="$xf.options.enableNotices && (count($xf.session.dismissedNotices) > 0)"> <hr class="formRowSep" /> <xf:checkboxrow> <xf:option name="restore_notices" label="{{ phrase('restore_dismissed_notices') }}" hint="{{ phrase('restore_dismissed_notices_hint') }}" /> </xf:checkboxrow> </xf:if> <xf:if is="$xf.visitor.canUsePushNotifications()"> <xf:formrow label="{{ phrase('push_notifications') }}" rowtype="button" explain="{{ phrase('enable_push_explain') }}"> <xf:button class="is-disabled" data-xf-init="push-toggle"> {{ phrase('push_checking_device_capabilities...') }} </xf:button> </xf:formrow> <xf:checkboxrow label=""> <xf:option name="option[push_on_conversation]" checked="{$xf.visitor.Option.push_on_conversation}" label="{{ phrase('receive_push_notification_when_new_conversation_message_is_received') }}" /> </xf:checkboxrow> <xf:js> jQuery.extend(true, XF.config, { skipPushNotificationSubscription: true, skipPushNotificationCta: true }); jQuery.extend(XF.phrases, { push_enable_label: "{{ phrase('push_enable_label')|escape('js') }}", push_disable_label: "{{ phrase('push_disable_label')|escape('js') }}", push_not_supported_label: "{{ phrase('push_not_supported_label')|escape('js') }}", push_blocked_label: "{{ phrase('push_blocked_label')|escape('js') }}" }); </xf:js> <xf:else /> <xf:hiddenval name="option[push_on_conversation]">{$xf.visitor.Option.push_on_conversation}</xf:hiddenval> </xf:if> </div> <xf:if is="$alertOptOuts is not empty"> <xf:css src="notification_opt_out.less" /> <h2 class="block-formSectionHeader"><span class="block-formSectionHeader-aligner">{{ phrase('receive_notification_when_someone...') }}</span></h2> <div class="block-body"> <xf:set var="$canPush" value="{{ $xf.visitor.canUsePushNotifications() }}" /> <xf:foreach loop="$alertOptOuts" key="$contentType" value="$options"> <xf:foreach loop="$options" key="$action" value="$label"> <xf:formrow label="{$label}" data-content-type="{$contentType}" data-action="{$action}"> <ul class="notificationChoices"> <li class="notificationChoices-choice notificationChoices-choice--alert"> <xf:checkbox standalone="true"> <xf:option name="alert[{$contentType}_{$action}]" data-xf-init="{{ $canPush ? 'disabler' : '' }}" data-container="< .notificationChoices | .notificationChoices-choice--push" checked="{{ $xf.visitor.Option.doesReceiveAlert($contentType, $action) }}" label="{{ phrase('alert') }}" /> </xf:checkbox> </li> <xf:if is="$canPush"> <li class="notificationChoices-choice notificationChoices-choice--push"> <xf:checkbox standalone="true"> <xf:option name="push[{$contentType}_{$action}]" checked="{{ $xf.visitor.Option.doesReceivePush($contentType, $action) }}" label="{{ phrase('push') }}" /> </xf:checkbox> <xf:hiddenval name="push_shown[{$contentType}_{$action}]">1</xf:hiddenval> </li> </xf:if> </ul> </xf:formrow> </xf:foreach> <hr class="formRowSep" /> </xf:foreach> </div> </xf:if> <xf:submitrow icon="save" sticky="true" /> </div> </xf:form> ]]>
</template>
<template title="account_visitor_menu" type="public" addon_id="XF" version_id="2020035" version_string="2.2.0 Beta 5">
<![CDATA[ <xf:if contentcheck="true"> <h4 class="menu-tabHeader tabs" data-xf-init="tabs" role="tablist"> <span class="hScroller" data-xf-init="h-scroller"> <span class="hScroller-scroll"> <a href="{{ link('account') }}" class="tabs-tab is-active" role="tab" tabindex="0" aria-controls="{{ unique_id('accountMenu') }}">{{ phrase('your_account') }}</a> <xf:contentcheck> <xf:if is="$xf.visitor.canViewBookmarks()"> <a href="{{ link('account/bookmarks') }}" class="tabs-tab" role="tab" tabindex="0" aria-controls="{{ unique_id('accountMenuBookmarks') }}">{{ phrase('bookmarks') }}</a> </xf:if> <!--[XF:account_tabs:bottom]--> </xf:contentcheck> </span> </span> </h4> <xf:set var="$hasTabs" value="{{ true }}" /> </xf:if> <xf:set var="$accountHtml"> <div class="menu-row menu-row--alt"> <xf:macro name="visitor_panel_row" /> </div> <xf:macro name="visitor_panel_row"> <div class="contentRow contentRow--alignMiddle"> <div class="contentRow-figure"> <span class="avatarWrapper"> <xf:avatar user="{$xf.visitor}" size="s" href="" notooltip="true" /> <xf:if is="$xf.visitor.canUploadAvatar()"> <a class="avatarWrapper-update" href="{{ link('account/avatar') }}" data-xf-click="overlay"><span>{{ phrase('edit') }}</span></a> </xf:if> </span> </div> <div class="contentRow-main"> <h3 class="contentRow-header"><xf:username user="$xf.visitor" rich="true" notooltip="true" /></h3> <div class="contentRow-lesser"> <xf:usertitle user="$xf.visitor" /> </div> </div> </div> <div class="contentRow-minor"> <!--[XF:stats_pairs:above_messages]--> <dl class="pairs pairs--justified fauxBlockLink"> <xf:if is="property('uix_visitorPanelIcons')"> <xf:fa icon="fa-comments" /> <xf:else /> <dt>{{ phrase('messages') }}</dt> </xf:if> <dd> <a href="{{ link('search/member', null, {'user_id': $xf.visitor.user_id}) }}" class="fauxBlockLink-linkRow u-concealed"> {$xf.visitor.message_count|number} </a> </dd> </dl> <!--[XF:stats_pairs:above_reactions]--> <dl class="pairs pairs--justified fauxBlockLink"> <xf:if is="property('uix_visitorPanelIcons')"> <xf:fa icon="fa-thumbs-up" /> <xf:else /> <dt>{{ phrase('reaction_score') }}</dt> </xf:if> <dd> <a href="{{ link('account/reactions') }}" class="fauxBlockLink-linkRow u-concealed"> {$xf.visitor.reaction_score|number} </a> </dd> </dl> <!--[XF:stats_pairs:above_points]--> <xf:if is="$xf.options.enableTrophies"> <dl class="pairs pairs--justified fauxBlockLink"> <xf:if is="property('uix_visitorPanelIcons')"> <xf:fa icon="fa-trophy" /> <xf:else /> <dt>{{ phrase('trophy_points') }}</dt> </xf:if> <dd> <a href="{{ link('members/trophies', $xf.visitor) }}" data-xf-click="overlay" class="fauxBlockLink-linkRow u-concealed"> {$xf.visitor.trophy_points|number} </a> </dd> </dl> </xf:if> </div> </xf:macro> <!--[XF:menu_separator:below_visitor_panel]--> <hr class="menu-separator menu-separator--hard" /> <ul class="listPlain listColumns listColumns--narrow listColumns--together"> <!--[XF:content_links:top]--> <xf:if is="$xf.options.enableNewsFeed"> <li><a href="{{ link('whats-new/news-feed') }}" class="menu-linkRow">{{ phrase('news_feed') }}</a></li> </xf:if> <li><a href="{{ link('search/member', null, {'user_id': $xf.visitor.user_id}) }}" class="menu-linkRow">{{ phrase('your_content') }}</a></li> <li><a href="{{ link('account/reactions') }}" class="menu-linkRow">{{ phrase('reactions_received') }}</a></li> <!--[XF:content_links:bottom]--> </ul> <!--[XF:menu_separator:below_content_links]--> <hr class="menu-separator" /> <ul class="listPlain listColumns listColumns--narrow listColumns--together"> <!--[XF:account_links:top]--> <li><a href="{{ link('account/account-details') }}" class="menu-linkRow">{{ phrase('account_details') }}</a></li> <li><a href="{{ link('account/security') }}" class="menu-linkRow">{{ phrase('password_and_security') }}</a></li> <li><a href="{{ link('account/privacy') }}" class="menu-linkRow">{{ phrase('privacy') }}</a></li> <li><a href="{{ link('account/preferences') }}" class="menu-linkRow">{{ phrase('preferences') }}</a></li> <xf:if is="$xf.visitor.canEditSignature()"> <li><a href="{{ link('account/signature') }}" class="menu-linkRow">{{ phrase('signature') }}</a></li> </xf:if> <xf:if is="$xf.app.userUpgradeCount"> <li><a href="{{ link('account/upgrades') }}" class="menu-linkRow">{{ phrase('account_upgrades') }}</a></li> </xf:if> <xf:if is="$xf.app.connectedAccountCount"> <li><a href="{{ link('account/connected-accounts') }}" class="menu-linkRow">{{ phrase('connected_accounts') }}</a></li> </xf:if> <li><a href="{{ link('account/following') }}" class="menu-linkRow">{{ phrase('following') }}</a></li> <li><a href="{{ link('account/ignored') }}" class="menu-linkRow">{{ phrase('ignoring') }}</a></li> <!--[XF:account_links:bottom]--> </ul> <!--[XF:menu_separator:below_account_links]--> <hr class="menu-separator" /> <a href="{{ link('logout', null, {'t': csrf_token()}) }}" class="menu-linkRow">{{ phrase('log_out') }}</a> <xf:if is="$xf.visitor.canPostOnProfile()"> <xf:form action="{{ link('members/post', $xf.visitor) }}" ajax="true" data-redirect="off" data-reset-complete="true" data-no-auto-focus="true" class="menu-footer"> <span class="u-srOnly" id="ctrl_message">{{ phrase('update_your_status:') }}</span> <xf:textarea name="message" rows="1" autosize="true" maxlength="{$xf.options.profilePostMaxLength}" placeholder="{{ phrase('update_your_status...') }}" data-xf-init="focus-trigger user-mentioner emoji-completer" data-display="< :next" aria-labelledby="ctrl_message" /> <div class="u-hidden u-hidden--transition u-inputSpacer"> <xf:button type="submit" class="button--primary" icon="reply">{{ phrase('post_verb') }}</xf:button> </div> </xf:form> </xf:if> </xf:set> <xf:if is="$hasTabs"> <ul class="tabPanes"> <li class="is-active" role="tabpanel" id="{{ unique_id('accountMenu') }}"> {$accountHtml|raw} </li> <xf:if is="$xf.visitor.canViewBookmarks()"> <li role="tabpanel" id="{{ unique_id('accountMenuBookmarks') }}" data-href="{{ link('account/bookmarks-popup') }}" data-load-target=".js-bookmarksMenuBody"> <div class="js-bookmarksMenuBody"> <div class="menu-row">{{ phrase('loading...') }}</div> </div> <div class="menu-footer menu-footer--close"> <a href="{{ link('account/bookmarks') }}" class="js-bookmarkShowAllLink">{{ phrase('show_all...') }}</a> </div> </li> </xf:if> <!--[XF:account_tab_panes:bottom]--> </ul> <xf:else /> {$accountHtml|raw} </xf:if> ]]>
</template>
<template title="account_wrapper" type="public" addon_id="XF" version_id="2010035" version_string="2.1.0 Beta 5">
<![CDATA[ <xf:sidenav> <div class="block"> <div class="block-container"> <h3 class="block-header">{{ phrase('your_account') }}</h3> <div class="block-body"> <!--[XF:profile_links:top]--> <a class="blockLink" href="{{ link('members', $xf.visitor) }}">{{ phrase('your_profile') }}</a> <a class="blockLink {{ $pageSelected == 'alerts' ? 'is-selected' : '' }}" href="{{ link('account/alerts') }}"> {{ phrase('alerts') }} </a> <a class="blockLink {{ $pageSelected == 'reactions' ? 'is-selected' : '' }}" href="{{ link('account/reactions') }}"> {{ phrase('reactions_received') }} </a> <xf:if is="$xf.visitor.canViewBookmarks()"> <a class="blockLink {{ $pageSelected == 'bookmarks' ? 'is-selected' : '' }}" href="{{ link('account/bookmarks') }}"> {{ phrase('bookmarks') }} </a> </xf:if> <!--[XF:profile_links:bottom]--> </div> <h3 class="block-minorHeader">{{ phrase('settings') }}</h3> <div class="block-body"> <!--[XF:settings_links:top]--> <a class="blockLink {{ $pageSelected == 'account_details' ? 'is-selected' : '' }}" href="{{ link('account/account-details') }}"> {{ phrase('account_details') }} </a> <a class="blockLink {{ $pageSelected == 'security' ? 'is-selected' : '' }}" href="{{ link('account/security') }}"> {{ phrase('password_and_security') }} </a> <a class="blockLink {{ $pageSelected == 'privacy' ? 'is-selected' : '' }}" href="{{ link('account/privacy') }}"> {{ phrase('privacy') }} </a> <a class="blockLink {{ $pageSelected == 'preferences' ? 'is-selected' : '' }}" href="{{ link('account/preferences') }}"> {{ phrase('preferences') }} </a> <xf:if is="$xf.visitor.canEditSignature()"> <a class="blockLink {{ $pageSelected == 'signature' ? 'is-selected' : '' }}" href="{{ link('account/signature') }}"> {{ phrase('signature') }} </a> </xf:if> <xf:if is="$xf.app.userUpgradeCount"> <a class="blockLink {{ $pageSelected == 'upgrades' ? 'is-selected' : '' }}" href="{{ link('account/upgrades') }}"> {{ phrase('account_upgrades') }} </a> </xf:if> <xf:if is="$xf.app.connectedAccountCount"> <a class="blockLink {{ $pageSelected == 'connected_account' ? 'is-selected' : '' }}" href="{{ link('account/connected-accounts') }}"> {{ phrase('connected_accounts') }} </a> </xf:if> <a class="blockLink {{ $pageSelected == 'following' ? 'is-selected' : '' }}" href="{{ link('account/following') }}"> {{ phrase('following') }} </a> <a class="blockLink {{ $pageSelected == 'ignored' ? 'is-selected' : '' }}" href="{{ link('account/ignored') }}"> {{ phrase('ignoring') }} </a> <a href="{{ link('logout', null, {'t': csrf_token()}) }}" class="blockLink">{{ phrase('log_out') }}</a> <!--[XF:settings_links:bottom]--> </div> </div> </div> </xf:sidenav> <xf:page option="sideNavTitle">{{ phrase('your_account') }}</xf:page> <xf:breadcrumb href="{{ link('account') }}">{{ phrase('your_account') }}</xf:breadcrumb> {$innerContent|raw} ]]>
</template>
<template title="adum_user_group_marking.less" type="public" addon_id="" version_id="0" version_string="">
<![CDATA[ .adum-marking-3 {background: red;} ]]>
</template>
<template title="app.less" type="public" addon_id="XF" version_id="2020070" version_string="2.2.0">
<![CDATA[ @_nav-elTransitionSpeed: @xf-animationSpeed; @_navAccount-hPadding: @xf-paddingLarge; @uix_sidebarNavBreakpoint: {{ property('pageWidthMax') + 1 + ( 2 * (property('uix_sidebarNavWidth') + property('elementSpacer')) ) }}px; .u-anchorTarget { .m-stickyHeaderConfig(@xf-publicNavSticky); height: (@_stickyHeader-height + @_stickyHeader-offset); margin-top: -(@_stickyHeader-height + @_stickyHeader-offset); } @supports (scroll-padding-top: 10px) { html:not(.has-browser-safari) { .m-stickyHeaderConfig(@xf-publicNavSticky); scroll-padding-top: (@_stickyHeader-height + @_stickyHeader-offset); } html:not(.has-browser-safari) .u-anchorTarget { height: 0; margin-top: 0; } } .uix_pageWidth--wrapped { width: 100%; <xf:if is="property('uix_pageStyle') == 'wrapped'"> .m-pageWidth(); </xf:if> } .p-pageWrapper { position: relative; display: flex; flex-direction: column; min-height: 100vh; // .xf-pageBackground(); .is-modalOverlayOpen & { & when (unit(xf-default(@xf-overlayMaskBlur, 0)) > 0) { filter: blur(@xf-overlayMaskBlur); } } flex-grow: 1; <xf:if is="property('uix_pageStyle') == 'wrapped'"> .xf-uix_pageWrapper(); @media (min-width: {{ property('responsiveEdgeSpacerRemoval') + 1 }}px) { margin-top: @xf-pageEdgeSpacer; margin-bottom: @xf-pageEdgeSpacer; padding: @xf-pageEdgeSpacer; } @media (max-width: @xf-responsiveEdgeSpacerRemoval) { border: none; box-shadow: none; } </xf:if> } // RESPONSIVE HEADER .p-offCanvasAccountLink { display: none; .avatar {margin-right: 24px;} } @media (max-width: @xf-responsiveNarrow) { .p-offCanvasAccountLink, .p-offCanvasRegisterLink { display: block; } } @media (max-width: @xf-pageWidthMax) { #uix_widthToggle--trigger {display: none;} } #uix_widthToggle--trigger:hover {cursor: pointer;} .uix_page--fixed #uix_widthToggle--trigger .fa--xf:before { .m-faBase(); .m-faContent(@fa-var-expand-alt); } {{ include('app_staffbar.less') }} <xf:if is="{{ property('uix_viewportShowLogoBlock') }} != '100%'"> {{ include('app_header.less') }} </xf:if> {{ include('app_stickynav.less') }} {{ include('app_nav.less') }} {{ include('app_sectionlinks.less') }} {{ include('app_body.less') }} {{ include('app_breadcrumbs.less') }} {{ include('app_title.less') }} {{ include('app_footer.less') }} {{ include('app_inlinemod.less') }} {{ include('app_ignored.less') }} {{ include('app_username_styles.less') }} {{ include('app_user_banners.less') }} {{ include('app_alerts.less') }} {{ include('app_content_vote.less') }} {{ include('uix.less')}} ]]>
</template>
<template title="app_body.less" type="public" addon_id="XF" version_id="2020052" version_string="2.2.0 Release Candidate 2">
<![CDATA[ // ######################################### MAIN BODY ################################# .p-body { display: flex; align-items: stretch; flex-grow: 1; min-height: 1px; // IE11 workaround - related to #139187 position: relative; } .p-body-inner { width: 100%; <xf:if is="property('uix_pageStyle') != 'wrapped'"> .m-pageWidth(); .m-pageInset(); <xf:else /> @media (min-width: {{ property('responsiveEdgeSpacerRemoval') + 1 }}px ) { flex-grow: 1; } @media (max-width: @xf-responsiveEdgeSpacerRemoval) { .m-pageWidth(); .m-pageInset(); } </xf:if> transition: ease-in-out max-width .3s, ease-in-out left .3s, ease-in-out width .3s; display: flex; flex-direction: column; .m-clearFix(); position: relative; left: 0; padding-left: 0; padding-right: 0; padding-bottom: @xf-elementSpacer; .uix_page--fluid & { transition: @uix_moveIn max-width .3s, @uix_moveIn left .3s, @uix_moveIn width .3s; } &.p-body-inner-none { max-width: 100%; width: 100%; margin: 0; padding: 0; } /* > * { margin-bottom: 20px; &:last-child {margin-bottom: 0;} } */ .p-body-header { margin-bottom: @xf-elementSpacer; } } .uix_contentWrapper { // margin-bottom: @xf-elementSpacer; flex-grow: 1; <xf:if is="property('uix_contentWrapper') == 1"> padding: @xf-pageEdgeSpacer; .xf-uix_contentWrapperStyle(); @media (max-width: @xf-responsiveEdgeSpacerRemoval) { padding: {{ property('pageEdgeSpacer') / 2 }}px; margin-left: -{{ property('pageEdgeSpacer') / 2 }}px; margin-right: -{{ property('pageEdgeSpacer') / 2 }}px; border: none; box-shadow: none; } </xf:if> } .p-body-main { // display: table; table-layout: fixed; display: flex; flex-wrap: wrap; justify-content: space-between; width: 100%; max-width: 100%; margin-bottom: auto; min-height: 1px; // IE11 workaround - related to #139187 } .p-body-content { // display: table-cell; vertical-align: top; @media ( min-width: {{ property('uix_sidebarBreakpoint') + 1 }}px ) { <xf:if is="{{ property('uix_sidebarLocation') == 'right' }}"> transition: ease-in width .2s, ease-in max-width .2s; .uix_sidebarCollapsed & { transition: ease-in width .2s .2s, ease-in max-width .2s .2s; } <xf:else /> transition: @uix_moveOut width .2s, ease-in max-width .2s; .uix_sidebarCollapsed & { transition: ease-in width .2s .2s, ease-in max-width .2s .2s; } </xf:if> } flex-grow: 1; max-width: 100%; width: 100%; .p-body-main--withSidebar &, .p-body-main--withSideNav & { // don't let the ad overflow the sidebar area -- this can happen due to how the Adsense JS works ins.adsbygoogle { // -10px gives a little buffer or helps account for no scrollbar being considered max-width: calc(~'100vw - 10px - @{xf-pageEdgeSpacer} - @{xf-pageEdgeSpacer} - @{xf-sidebarWidth} - @{xf-sidebarSpacer}'); @media (min-width: {{ property('uix_sidebarBreakpoint') + 1 }}px ) { // window wider than the max width, so limit to the display area without the sidebar max-width: calc(~'@{xf-pageWidthMax} - @{xf-pageEdgeSpacer} - @{xf-pageEdgeSpacer} - @{xf-sidebarWidth} - @{xf-sidebarSpacer}'); } @media (max-width: @xf-uix_sidebarBreakpoint) { // sidebar/sidenav have been moved/hidden max-width: 100vw; } } } .p-body-main--withSideNav & { @media (min-width: {{ property('uix_sidebarBreakpoint') + 1 }}px ) { width: calc(~"100% - {{ property('sidebarWidth') + property('elementSpacer')}}px"); max-width: calc(~"100% - {{ property('sidebarWidth') + property('elementSpacer')}}px"); display: inline-block; } } .p-body-main--withSidebar & { @media (min-width: {{ property('uix_sidebarBreakpoint') + 1 }}px ) { width: calc(~"100% - {{ property('sidebarWidth') + property('elementSpacer')}}px"); max-width: calc(~"100% - {{ property('sidebarWidth') + property('elementSpacer')}}px"); display: inline-block; } } @media (min-width: {{ property('uix_sidebarBreakpoint') + 1 }}px ) { .p-body-main--withSidebar.p-body-main--withSideNav & { width: calc(~"100% - {{ (property('sidebarWidth') + property('elementSpacer')) * 2 }}px"); max-width: calc(~"100% - {{ (property('sidebarWidth') + property('elementSpacer')) * 2 }}px"); display: inline-block; } } } .p-body-pageContent { > .tabs--standalone:first-child { margin-bottom: (@xf-elementSpacer) / 2; } } .p-body-pageContent { <xf:if is="property('uix_contentWrapper') == 2"> .xf-uix_contentWrapperStyle(); padding: @xf-pageEdgeSpacer; @media (max-width: @xf-responsiveEdgeSpacerRemoval) { padding: {{ property('pageEdgeSpacer') / 2 }}px; margin-left: -{{ property('pageEdgeSpacer') / 2 }}px; margin-right: -{{ property('pageEdgeSpacer') / 2 }}px; border: none; box-shadow: none; } </xf:if> } .p-body-sideNav { display: table-cell; vertical-align: top; width: @xf-sidebarWidth; float: left; } .p-body-sideNavTrigger { display: none; } .p-body-sidebar { // display: table-cell; display: inline-block; vertical-align: top; width: @xf-sidebarWidth; .contentRow-figure .avatar--m { // make these avatars a bit smaller in the sidebar so the content has more space .m-avatarSize(@avatar-m * 2 / 3); } } .p-body-sideNavCol, .p-body-contentCol, .p-body-sidebarCol { display: table-column; } .p-body-sideNavCol, .p-body-sidebarCol { width: @xf-sidebarWidth; } // .block[data-widget-id], .p-body-sideNav, .p-body-sidebar, // .uix_extendedFooterRow, .columnContainer-sidebar { .block-container { .xf-uix_sidebarWidgetWrapper(); } .block-minorHeader, .block-header { display: flex; align-items: center; padding: @xf-uix_widgetPadding; .xf-uix_sidebarWidgetHeading(); } .block-minorHeader:before, .block-header:before { .m-faBase(); font-size: @xf-uix_iconSize !important; padding-right: @xf-paddingMedium; color: @xf-textColorMuted; } .block-footer { padding: @xf-uix_widgetPadding; .xf-uix_sidebarWidgetFooter(); } .block-row { padding: @xf-uix_widgetPadding; .xf-uix_sidebarBlockRow(); } } // ---- Widget icons ----- .p-body-sidebar .block .block-minorHeader:before, .p-body-sideNavContent .block .block-minorHeader:before, .p-body-sidebar .block .block-header:before, .uix_extendedFooterRow .block .block-minorHeader:before, .p-body-sideNavContent .block .block-header:before{ .m-faBase(); } // .block[data-widget-definition], // .block[data-widget-key], .p-body-sideNav, .p-body-sidebar, .uix_extendedFooterRow { <xf:if is="{{ property('uix_defaultSidebarIcon') }}"> .block-minorHeader:before, .block-header:before, { .m-faContent(@fa-var-file-alt); } </xf:if> .block[data-widget-definition="th_userNavigation"] .block-minorHeader:before { .m-faContent(@fa-var-user); } .block[data-widget-definition="members_online"] .block-minorHeader:before { .m-faContent(@fa-var-users); } .block[data-widget-definition="board_totals"] .block-minorHeader:before, .block[data-widget-definition="online_statistics"] .block-minorHeader:before, .block[data-widget-definition="forum_statistics"] .block-minorHeader:before { .m-faContent(@fa-var-chart-bar); } .block[data-widget-definition="share_page"] .block-minorHeader:before { .m-faContent(@fa-var-share); } .block[data-widget-definition="most_messages"] .block-minorHeader:before { .m-faContent(@fa-var-comments); } .block[data-widget-definition="find_member"] .block-minorHeader:before { .m-faContent(@fa-var-search); } .block[data-widget-definition="new_threads"] .block-minorHeader:before, .block[data-widget-definition="new_profile_posts"] .block-minorHeader:before, .block[data-widget-definition="new_posts"] .block-minorHeader:before{ .m-faContent(@fa-var-comment); } .block[data-widget-definition="birthdays"] .block-minorHeader:before{ .m-faContent(@fa-var-birthday-cake); } .block[data-widget-definition="th_navigation"] .block-minorHeader:before{ .m-faContent(@fa-var-list); } body .block[data-widget-key="thuix_footer_facebookWidget"] .block-minorHeader:before { .m-faBase('Brands'); .m-faContent(@fa-var-facebook); } body .block[data-widget-definition="thuix_footer_twitterWidget"] .block-minorHeader:before{ .m-faBase('Brands'); .m-faContent(@fa-var-twitter); } form[data-xf-init*="poll-block"] .block-minorHeader:before { .m-faContent(@fa-var-poll); } } // xpress WP widget support .p-body-sidebar .block-xpress { .block-minorHeader:before { .m-faContent(@fa-var-file-alt); } &.widget_media_gallery .block-minorHeader:before, &.widget_media_audio .block-minorHeader:before { .m-faContent(@fa-var-image); } &.widget_calendar .block-minorHeader:before { .m-faContent(@fa-var-calendar); } &.widget_recent_comments .block-minorHeader:before { .m-faContent(@fa-var-comments); } &.widget_search .block-minorHeader:before { .m-faContent(@fa-var-search); } } <xf:if is="!property('uix_sidebarIcons')"> .p-body-sidebar .block .block-minorHeader:before, .p-body-sideNavContent .block .block-minorHeader:before, .p-body-pageContent .block .block-minorHeader:before, .p-body-sidebar .block .block-header:before, .p-body-sideNavContent .block .block-header:before, .p-body-pageContent .block .block-header:before {display: none !important;} </xf:if> <xf:if is="!property('uix_footerIcons')"> .uix_extendedFooterRow .block .block-minorHeader:before {display: none !important;} </xf:if> .uix_extendedFooterRow .block-minorHeader:before { font-size: @xf-uix_iconSize !important; padding-right: @xf-paddingMedium; } <xf:if is="property('uix_visitorPanelIcons')"> .block[data-widget-definition="visitor_panel"] .pairs { dt:after {display: none;} } </xf:if> .p-body-content, .p-body-sideNav, .p-body-sideNavContent, .uix_sidebarInner { > :first-child { margin-top: 0; } > :last-child { margin-bottom: 0; } } @media (max-width: @xf-uix_sidebarBreakpoint ) { .p-body-sideNavCol, .p-body-contentCol, .p-body-sidebarCol { display: none; width: auto; } /* .p-body-main, .p-body-content { display: block; } */ .p-body-content {flex-grow: 1; width: 100%;} .p-body-sideNav { display: block; width: 100%; } .p-body-sideNavTrigger { margin-bottom: ((@xf-elementSpacer) / 2); text-align: center; .button:before { .m-faBase(); font-size: 120%; vertical-align: middle; display: inline-block; margin: -4px 6px -4px 0; .m-faContent(@fa-var-bars); //, .88em } .has-js & { display: block; } } .has-js .p-body-sideNavInner:not(.offCanvasMenu) { display: none; .m-transitionFadeDown(); } .has-no-js .p-body-sideNavInner { margin-bottom: @xf-elementSpacer; } .p-body-sidebar { width: 100%; float: none; order: 1; flex-grow: 1; display: block; margin-top: @xf-elementSpacer; .uix_sidebarInner { display: flex; flex-wrap: wrap; align-items: stretch; flex-grow: 1; margin: 0 -((@xf-pageEdgeSpacer) / 2); } .uix_sidebarInner .uix_sidebar--scroller > * { margin: 0 ((@xf-pageEdgeSpacer) / 2) @xf-elementSpacer; min-width: @xf-sidebarWidth; flex: 1 1 @xf-sidebarWidth; .block-container { margin-left: 0; margin-right: 0; } &:last-child { margin-bottom: @xf-elementSpacer; } } .uix_sidebarInner.offCanvasMenu-content .uix_sidebar--scroller > * { flex: auto; min-width: 0; } // add an invisible block to ensure that the last row has the correct widths &:after { display: block; content: ''; height: 0; margin: 0 ((@xf-pageEdgeSpacer) / 2); min-width: @xf-sidebarWidth; flex: 1 1 @xf-sidebarWidth; } .block-container { display: flex; flex-direction: column; height: 100%; .block-footer { margin-top: auto; } } } .p-body-main--withSideNav, .p-body-main--withSidebar { .p-body-content { padding: 0; } } } .uix_sidebarCollapsed .uix_sidebarInner { overflow: hidden; } @media (max-width: @xf-responsiveEdgeSpacerRemoval) { .p-body-sideNavContent { // this is likely to contain blocks that overflow the container so account for that margin: 0 -@xf-pageEdgeSpacer; padding: 0 @xf-pageEdgeSpacer; .offCanvasMenu & { margin: 0; padding: 0; } } .p-body-sidebar { display: block; margin-left: 0; margin-right: 0; .uix_sidebarInner > * { // margin-left: 0; // margin-right: 0; min-width: 0; } } } ]]>
</template>
<template title="app_breadcrumbs.less" type="public" addon_id="XF" version_id="2020070" version_string="2.2.0">
<![CDATA[ .breadcrumb { <xf:if is="property('uix_pageStyle') == 'fixed'"> .m-pageWidth(); </xf:if> .pageContent { <xf:if is="property('uix_pageStyle') != 'fixed'"> .m-pageWidth(); </xf:if> } .p-body-inner & { max-width: 100%; width: 100%; padding-left: 0; padding-right: 0; .pageContent { max-width: 100%; width: 100%; padding-left: 0; padding-right: 0; } } } .p-pageWrapper .breadcrumb { @media (min-width: @xf-responsiveNarrow) { .xf-uix_breadcrumbWrapper(); } &.p-breadcrumb--bottom { .xf-uix_breadcrumbWrapperBottom(); } .pageContent { display: flex; align-items: center; > *:not(:last-child) {margin-right: @xf-paddingMedium;} } .uix_breadcrumb--opposite { margin-left: auto; display: inline-flex; align-items: center; > *:not(:last-child) {margin-right: 5px;} } } .p-breadcrumbs { .m-listPlain(); .m-clearFix(); // margin-bottom: 5px; // line-height: 1.5; display: flex; flex-wrap: wrap; align-items: center; flex-grow: 1; @media (min-width: @xf-responsiveNarrow) { .xf-uix_breadcrumbStyle(); } i {font-size: @xf-uix_iconSize;} &.p-breadcrumbs--bottom { // margin-top: @xf-elementSpacer; margin-bottom: 0; } > li { float: left; font-size: @xf-fontSizeSmall; display: flex; align-items: center; font-size: inherit; a { display: inline-block; vertical-align: bottom; max-width: 300px; .m-overflowEllipsis(); .xf-uix_breadcrumbItem(); } &:after, &:before { .m-faBase(); // font-size: 90%; // color: @xf-textColorMuted; } &:after { .m-faContent(@fa-var-angle-right, false ltr); //, .5em .m-faContent(@fa-var-angle-left, false, rtl); //, .5em margin: 0 .5em; } &:first-child { padding-left: 0; } &:last-child { &:after {display: none;} a { font-weight: @xf-fontWeightHeavy; .xf-uix_breadcrumbItem__active(); } } } } @media (max-width: @xf-responsiveMedium) { .p-breadcrumbs > li a { max-width: 200px; } } @media (max-width: @xf-responsiveNarrow) { .p-breadcrumbs { > li { font-size: @xf-fontSizeSmallest; display: none; padding-left: 0; a { display: inline-flex; align-items: center; } &:last-child { // display: block; display: flex; } a { max-width: 90vw; color: inherit !important; &:hover {text-decoration: none;} } &:after { display: none; } a:before { .m-faBase(); .m-faContent(@fa-var-chevron-left, .72em, ltr); .m-faContent(@fa-var-chevron-right, .72em, rtl); // margin-right: .5em; font-size: @xf-uix_iconSizeLarge !important; color: inherit; } } } } ]]>
</template>
<template title="app_footer.less" type="public" addon_id="XF" version_id="2010032" version_string="2.1.0 Beta 2">
<![CDATA[ // ######################################### FOOTER ################################# <xf:comment> may have been removed at xf2 beta .p-footer-debug-list { // color: xf-default(@xf-publicFooterLink--color, inherit); .pairs--debug { display: inline; padding-right: 4px; > dt, > dd { display: inline; color: inherit; a {padding: 0;} } } } </xf:comment> .p-footer { display: flex; flex-direction: column; .xf-publicFooter(); // a {.xf-publicFooterLink();} } .p-footer-inner { order: @xf-uix_footerMenuOrder; <xf:if is="property('uix_pageStyle') != 'covered' && !property('uix_forceCoverFooterMenu')"> .m-pageWidth(); .m-pageInset(); </xf:if> padding-top: @xf-paddingMedium; padding-bottom: @xf-paddingMedium; .xf-uix_footerMenu(); .pageContent { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; <xf:if is="property('uix_pageStyle') == 'covered' || property('uix_forceCoverFooterMenu')"> .m-pageWidth(); .m-pageInset(); <xf:if is="(property('uix_pageStyle') != 'wrapped')"> padding:0; </xf:if> </xf:if> } a { .xf-publicFooterLink(); } } .p-footer-copyrightRow { order: @xf-uix_copyrightOrder; <xf:if is="property('uix_pageStyle') != 'covered' && !property('uix_forceCoverCopyright')"> .m-pageWidth(); .m-pageInset(); </xf:if> .xf-uix_footerCopyrightRow(); .pageContent { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; <xf:if is="property('uix_pageStyle') == 'covered' || property('uix_forceCoverCopyright')"> .m-pageWidth(); .m-pageInset(); <xf:if is="(property('uix_pageStyle') != 'wrapped')"> padding:0; </xf:if> </xf:if> } .p-footer-debug-list li a { color: inherit; &:hover {color: inherit; text-decoration: underline;} } } /* commented out in beta 1 (Ian) .p-footer-row { .m-clearFix(); margin-bottom: -@xf-paddingLarge; } .p-footer-row-main { float: left; margin-bottom: @xf-paddingLarge; } .p-footer-row-opposite { float: right; margin-bottom: @xf-paddingLarge; } */ .p-footer-linkList { .m-listPlain(); // .m-clearFix(); display: inline-flex; flex-wrap: wrap; align-items: center; > li { /* commented out in beta 1 (Ian) float: left; margin-right: .5em; margin: @xf-paddingMedium; */ &:last-child { margin-right: 0; } a { padding: 6px; border-radius: @xf-borderRadiusSmall; display: inline-block; &:hover { .xf-uix_footerLinkHover(); text-decoration: none; // background-color: fade(@xf-publicFooterLink--color, 10%); } } } &.p-footer-choosers { margin: -6px; a { margin: 6px; .xf-uix_footerChooser(); &:hover {.xf-uix_footerChooserHover();} // i {display: none;} } } } .p-footer-rssLink { > span { position: relative; top: -1px; display: inline-block; width: 1.44em; height: 1.44em; line-height: 1.44em; text-align: center; font-size: .8em; background-color: #FFA500; border-radius: 2px; } .fa-rss { color: white; } } /* .p-footer-copyright { margin-top: @xf-elementSpacer; text-align: center; font-size: @xf-fontSizeSmallest; } .p-footer-debug { margin-top: @xf-paddingLarge; text-align: right; font-size: @xf-fontSizeSmallest; } */ @media (max-width: @xf-responsiveMedium) { .p-footer-row-main, .p-footer-row-opposite { float: none; } .p-footer-copyright { text-align: left; padding: 0 4px; // aligns with other links } } ]]>
</template>
<template title="app_header.less" type="public" addon_id="XF" version_id="2020070" version_string="2.2.0">
<![CDATA[ // MAIN HEADER ROW .p-header { .xf-publicHeader(); <xf:if is="property('uix_pageStyle') == 'fixed'"> .m-pageWidth(); </xf:if> .p-header-logo img {max-width: @xf-uix_logoWidth;} a { color: inherit; } .p-header-logo img {width: 100%;max-width: 600px;} } .p-header-inner { .m-pageInset(); <xf:if is="property('uix_pageStyle') != 'fixed'"> .m-pageWidth(); </xf:if> position: relative; } .p-header-content { // padding: @xf-paddingMedium 0; display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; max-width: 100%; <xf:if is="property('uix_viewportCenterLogo') == '100%'"> justify-content: center; flex-direction: column; .p-nav-opposite {margin-top: @xf-paddingLarge; margin-left: 0;} .p-header-logo {margin-right: 0;} </xf:if> @media (max-width: @xf-uix_viewportCenterLogo) { justify-content: center; flex-direction: column; .p-nav-opposite {margin-top: @xf-paddingLarge; margin-left: 0;} .p-header-logo {margin-right: 0;} } } .p-header-logo { vertical-align: middle; // margin-right: auto; a { color: inherit; text-decoration: none; } &.p-header-logo--text { font-size: @xf-fontSizeLargest; } &.p-header-logo--image { img { &[src$="/xenforo-logo.svg"] { height: 36px; } // vertical-align: bottom; // max-width: 100%; // max-height: 200px; } } .uix_logoIcon {.xf-uix_logoIconStyle();} } @media (max-width: @xf-responsiveNarrow) { .p-header-logo { // max-width: 100px; &.p-header-logo--text { font-size: @xf-fontSizeLarge; font-weight: @xf-fontWeightNormal; .m-overflowEllipsis(); } } .p-navgroup-link { .p-navGroup--member & { margin-left: 5px; &:first-of-type { margin-left: 0; } } } } ]]>
</template>
<template title="app_inlinemod.less" type="public" addon_id="XF" version_id="2020031" version_string="2.2.0 Beta 1">
<![CDATA[ // #################################### INLINE MOD BUTTON ################ .inlineModButton { display: inline-block; position: relative; i:before { display: inline-block; .m-faBase(); .m-faContent(@fa-var-check-square, 1em); //, .88em vertical-align: -1px; font-size: 1.2em; margin: -.2em 0; line-height: 1; } &.inlineModButton--noIcon i { display: none; } &.is-mod-active { color: @xf-textColorAttention; .inlineModButton-count { display: inline; } } &:not(.inlineModButton--withLabel) { .inlineModButton-label { .m-visuallyHidden(); } } } .inlineModButton-count { display: none; position: absolute; top: -3px; left: -6px; .xf-contentHighlightBase(); border: @xf-borderSize solid @xf-borderColorAccentContent; border-radius: @xf-borderRadiusSmall; padding: 1px 2px; font-size: 9px; line-height: 1; .inlineModButton--noIcon & { position: static; font-size: 80%; padding-top: 0; padding-bottom: 0; } } // #################################### INLINE MOD BAR ################ .inlineModBar { .xf-inlineModBar(); .m-transitionFadeDown(); .m-clearFix(); .input, .button { padding-top: @xf-paddingSmall; padding-bottom: @xf-paddingSmall; height: auto; line-height: inherit; } &.is-active:first-of-type { .m-dropShadow(0, 0, 8px, 3px, 0.3); } } .inlineModBar-inner { .m-pageWidth(); .m-pageInset(); display: flex; align-items: center; } .inlineModBar-controls { .m-listPlain(); margin-right: auto; display: flex; align-items: center; flex-wrap: wrap; min-height: 35px; max-width: 100%; > li { float: left; display: inline-block; margin-right: 1em; &:last-child { margin-right: 0; } } } .inlineModBar-close { float: right; margin-left: 1em; order: 2; } .inlineModBar-title { font-weight: @xf-fontWeightHeavy; } .button.inlineModBar-goButton { font-size: @xf-fontSizeNormal; line-height: 1.5; // matches select min-width: 0; } .inlineModBarCover { position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: -1; cursor: pointer; } ]]>
</template>
<template title="app_nav.less" type="public" addon_id="XF" version_id="2020170" version_string="2.2.1">
<![CDATA[ // navEl / Navigation Elements for header navigation .p-navEl { .m-clearFix(); display: inline-flex; align-items: center; } .p-navEl-linkHolder { float: left; } .p-navEl-link { float: left; // .m-transition(opacity, background; @_nav-elTransitionSpeed); text-decoration: none !important; max-height: 100%; &.p-navEl-link--menuTrigger { cursor: pointer; &:after { .m-menuGadget(); // .58em opacity: .5; .m-transition(opacity; @_nav-elTransitionSpeed); } &:hover:after { opacity: 1; } } } .p-navEl-splitTrigger { float: left; opacity: .5; cursor: pointer; text-decoration: none; .m-transition(all; @_nav-elTransitionSpeed); &:after { .m-menuGadget(); // .58em line-height: 1; } &:hover { opacity: 1; text-decoration: none; } } // HEADER NAV ROW .p-nav { .xf-publicNav(); <xf:if is="property('uix_pageStyle') == 'fixed'"> .m-pageWidth(); </xf:if> transition: ease-in .15s all; a:not(.button) { color: inherit; } .p-navSticky.is-sticky & { .p-nav-list .p-navEl.is-selected, .p-account { border-radius: 0; } } } a.uix_logo { text-decoration: none; } .p-nav-inner { <xf:if is="property('uix_pageStyle') == 'covered'"> .m-pageWidth(); .m-pageInset(0px); </xf:if> position: relative; <xf:if is="property('uix_navigationBarHeight')"> height: @xf-uix_navigationBarHeight; </xf:if> .p-header-logo { display: inline-flex; align-items: center; margin-right: @xf-paddingLarge; .uix_logo { display: flex; } &.p-header-logo--image img { max-height: calc(@xf-uix_navigationBarHeight - (@xf-uix_navLogoVertSpacing * 2)); .is-sticky & { max-height: calc(@xf-uix_stickyNavHeight - (@xf-uix_navLogoVertSpacing * 2)); } } } .m-clearFix(); display: flex; align-items: center; } .p-nav .uix_activeNavTitle { .xf-uix_activeNavTitleStyle(); display: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; @media (max-width: @xf-publicNavCollapseWidth) and (min-width: @xf-responsiveNarrow) { display: inline-block; } } .p-nav .p-nav-menuTrigger { display: none; vertical-align: middle; align-self: center; // margin-left: max(0px, @xf-pageEdgeSpacer - 6px); margin-right: 5px; padding: 0 8px; &:hover { text-decoration: none; cursor: pointer; } i:after { .m-faBase(); font-size: @xf-fontSizeLargest; .m-faContent(@fa-var-bars); vertical-align: bottom; font-size: @xf-uix_iconSizeLarge; } .p-nav-menuText { display: none; } } <xf:if is="property('uix_logoSmall')"> .uix_logoSmall { <xf:if is="property('uix_brandmarkImage__breakpoint') != '100%'"> display: none; </xf:if> // max-width: 100px; align-self: center; img { display: block; max-height: @header-navHeight; &:not([src$=".svg"]) { width: auto; } } } <xf:if is="property('uix_brandmarkImage__breakpoint') == '100%'"> .p-header-logo.p-header-logo--image .uix_logo {display: none;} </xf:if> @media (max-width: {{ property('uix_brandmarkImage__breakpoint') - 1 }}px) { .uix_logoSmall {display: inline-block;} .p-header-logo.p-header-logo--image .uix_logo {display: none;} } </xf:if> .uix_logo--text { display: flex; align-items: center; white-space: nowrap; .xf-uix_logoText__style(); &:hover { text-decoration: none; } } <xf:if is="property('uix_logoTextBreakpoint')"> @media (max-width: @xf-uix_logoTextBreakpoint) { .uix_logo--text {font-size: @xf-uix_responsiveLogoFontSize;} } </xf:if> .p-nav-scroller { margin-right: auto; max-width: 100%; .hScroller-scroll:not(.is-calculated) { // IE11 seems to want to flash a vertical scrollbar without this here overflow: hidden; } .hScroller-action { .m-hScrollerActionColorVariation( xf-default(@xf-publicNav--background-color, transparent), xf-default(@xf-publicNav--color, ~""), xf-intensify(@xf-publicNav--color, 10%) ); } } .p-nav-list { .m-listPlain(); .m-clearFix(); display: flex; align-items: center; font-size: 0; // this applies padding that will be contained within the scroller. // it needs font-size 0 to not create extra space though /* &:before, &:after { display: inline-block; width: @xf-pageEdgeSpacer; content: ''; } */ > li { display: inline-block; vertical-align: bottom; font-size: @xf-fontSizeNormal; &:first-child { margin-left: 0; } } .badgeContainer:after {margin-left: 4px;} .m-navElHPadding(@xf-publicNavPaddingH); .p-navEl { .xf-publicNavTab(); .m-transition(all; @_nav-elTransitionSpeed); &.is-selected { .xf-publicNavSelected(); .p-navEl-link { <xf:if is="{{ property('uix_viewportWidthRemoveSubNav') }} != '100%'"> @media (min-width: {{ property('uix_viewportWidthRemoveSubNav') + 1 }}px ) { padding-right: @xf-publicNavPaddingH; // since the split trigger is hidden } </xf:if> &:hover { background: none; text-decoration: none; color: inherit; } } .p-navEl-splitTrigger { <xf:if is="{{ property('uix_viewportWidthRemoveSubNav') }} != '100%'"> @media (min-width: {{ property('uix_viewportWidthRemoveSubNav') + 1 }}px )