Files
IPB/applications/forums/data/theme.xml
T
2025-12-19 16:21:27 -08:00

5885 lines
299 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<theme name="Default" author_name="Invision Power Services, Inc" author_url="https://www.invisioncommunity.com">
<template template_group="forums" template_name="clubForums" template_data="" template_location="front" template_app="forums"><![CDATA[
<div class="ipsPageHeader ipsClearfix">
<header class='ipsSpacer_bottom'>
<h1 class="ipsType_pageTitle">{lang="club_node_forums"}</h1>
</header>
</div>
<div class='ipsList_reset cForumList ipsBox ipsSpacer_bottom' data-controller='forums.front.forum.forumList' data-baseURL=''>
<h2 class='ipsType_sectionTitle ipsType_reset'>{lang="subforums_header_category"}</h2>
{{if \IPS\forums\Forum::getMemberView() === 'grid'}}
<div class='ipsPadding ipsAreaBackground_light ipsRadius:bl ipsRadius:br' data-role="forums">
<div class='ipsForumGrid'>
{{foreach \IPS\forums\Forum::clubNodes() as $childforum}}
{template="forumGridItem" group="index" app="forums" params="$childforum"}
{{endforeach}}
</div>
</div>
{{else}}
<ol class="ipsDataList ipsDataList_zebra ipsDataList_large ipsAreaBackground_reset">
{{foreach \IPS\forums\Forum::clubNodes() as $childforum}}
{template="forumRow" group="index" app="forums" params="$childforum, TRUE"}
{{endforeach}}
</ol>
{{endif}}
</div>]]></template>
<template template_group="forums" template_name="forumButtons" template_data="$forum" template_location="front" template_app="forums"><![CDATA[{{if $forum->isCombinedView()}}
<li class='ipsToolList_primaryAction'>
<a class="ipsButton ipsButton_medium ipsButton_important ipsButton_fullWidth" href="{$forum->url()->setQueryString( [ 'do' => 'createMenu', 'root' => $forum->id ] )}" data-ipsDialog-title='{lang="select_forum"}' data-ipsDialog data-ipsDialog-size='narrow' title='{lang="create_new_topic"}' rel='nofollow noindex'>{lang="start_new_topic"}</a>
</li>
{{elseif $forum->can('add')}}
<li class='ipsToolList_primaryAction'>
{{if $forum->forums_bitoptions['bw_enable_answers']}}
<a class="ipsButton ipsButton_medium ipsButton_important ipsButton_fullWidth" href="{$forum->url()->setQueryString( 'do', 'add' )}" title='{lang="ask_a_question_desc"}' rel='nofollow noindex'>{lang="ask_a_question"}</a>
{{else}}
<a class="ipsButton ipsButton_medium ipsButton_important ipsButton_fullWidth" href="{$forum->url()->setQueryString( 'do', 'add' )}" title='{lang="start_new_topic_desc"}' rel='nofollow noindex'>{lang="start_new_topic"}</a>
{{endif}}
</li>
{{endif}}
{{if $forum->sub_can_post}}
{template="viewChangeList" group="global" app="forums" params="$forum"}
{{endif}}
]]></template>
<template template_group="forums" template_name="forumDisplay" template_data="$forum, $table" template_location="front" template_app="forums"><![CDATA[
{{if $club = $forum->club()}}
{{if settings.clubs and settings.clubs_header == 'full'}}
{template="header" app="core" group="clubs" params="$club, $forum"}
{{endif}}
<div id='elClubContainer'>
{{endif}}
{{if !\IPS\Request::i()->advancedSearchForm}}
{{$followerCount = \IPS\forums\Topic::containerFollowerCount( $forum );}}
<div class="ipsPageHeader {{if $forum->feature_color}}ipsPageHeader--hasFeatureColor{{endif}} ipsBox ipsResponsive_pull ipsPadding ipsClearfix" {{if $forum->feature_color}}style="border-color: {$forum->feature_color}"{{endif}}>
<header>
{{if \IPS\Application::appIsEnabled('cloud') AND \IPS\cloud\Application::featureIsEnabled( 'realtime' )}}
<div data-controller='cloud.front.realtime.whosViewing' data-location='{expression="\IPS\cloud\Realtime::i()->getLocationHash()"}' data-visibleClass='ipsMargin_bottom:half'></div>
{{endif}}
<h1 class="ipsType_pageTitle">{$forum->_title}</h1>
{{if $forum->description}}
{template="richText" group="global" app="core" location="global" params="$forum->description, array('ipsType_normal')"}
{{endif}}
{{if $forum->show_rules == 1}}
<hr class='ipsHr'>
<a href="#elForumRules" class='ipsJS_show ipsType_normal' data-ipsDialog data-ipsDialog-title="{lang="forums_forum_{$forum->id}_rulestitle"}" data-ipsDialog-content="#elForumRules">{lang="forums_forum_{$forum->id}_rulestitle"}</a>
<div id='elForumRules' class='ipsAreaBackground_light ipsPad ipsJS_hide'>
{template="richText" group="global" app="core" location="global" params="\IPS\Member::loggedIn()->language()->addToStack('forums_forum_' . $forum->id . '_rules'), array('ipsType_medium')"}
</div>
{{elseif $forum->show_rules == 2}}
<hr class='ipsHr'>
<strong class='ipsType_normal'>{lang="forums_forum_{$forum->id}_rulestitle"}</strong>
{template="richText" group="global" app="core" location="global" params="\IPS\Member::loggedIn()->language()->addToStack('forums_forum_' . $forum->id . '_rules'), array('ipsType_normal', 'ipsSpacer_top')"}
{{endif}}
{{if $forum->sub_can_post and !$forum->password}}
<hr class='ipsHr ipsResponsive_hidePhone' />
<div class='ipsClearfix ipsResponsive_hidePhone'>
<div class='ipsPos_right'>
{{if \IPS\Application::appIsEnabled('cloud')}}
{template="analyticsButton" app="cloud" group="analytics" params="$forum, $forum->_id"}
{{endif}}
{template="follow" app="core" group="global" params="'forums','forum', $forum->_id, $followerCount"}
</div>
</div>
{{endif}}
</header>
</div>
{{if $forum->isCombinedView()}}
<li class='ipsToolList_primaryAction ipsResponsive_hideDesktop ipsResponsive_block'>
<a class="ipsButton ipsButton_medium ipsButton_link ipsButton_fullWidth" href="#" rel="nofollow" data-ipsDialog data-ipsDialog-title='{lang="forums_simple_dialog_title"}' data-ipsDialog-content='#elFluidFormFilters'>
<span data-role='fluidForumMobileDesc'>{lang="forums_simple_filter_by"}</span> <i class='fa fa-angle-down'></i></a>
</li>
{{endif}}
{{if ! $forum->isCombinedView() and $forum->children()}}
<div class='ipsList_reset cForumList ipsBox ipsSpacer_bottom ipsResponsive_pull' data-controller='core.global.core.table, forums.front.forum.forumList' data-baseURL=''>
<h2 class='ipsType_sectionTitle ipsType_reset'>{{if $forum->sub_can_post}}{lang="subforums_header"}{{else}}{lang="subforums_header_category"}{{endif}}</h2>
{{if \IPS\forums\Forum::getMemberView() === 'grid'}}
<div class='ipsPadding' data-role="forums">
<div class='ipsForumGrid'>
{{foreach $forum->children( 'view' ) as $childforum}}
{template="forumGridItem" group="index" app="forums" params="$childforum"}
{{endforeach}}
</div>
</div>
{{else}}
<ol class="ipsDataList ipsDataList_zebra ipsDataList_large ipsAreaBackground_reset">
{{foreach $forum->children( 'view' ) as $childforum}}
{template="forumRow" group="index" app="forums" params="$childforum, TRUE"}
{{endforeach}}
</ol>
{{endif}}
</div>
{{endif}}
{{endif}}
<div data-controller='forums.front.forum.forumPage'>
<ul class="ipsToolList ipsToolList_horizontal ipsSpacer_both">
{template="forumButtons" group="forums" params="$forum"}
</ul>
{$table|raw}
</div>
{{if \IPS\Member::loggedIn()->member_id || !\IPS\Request::i()->advancedSearchForm && $forum->sub_can_post and !$forum->password}}
<div class='ipsBox ipsPadding ipsResponsive_pull ipsResponsive_showPhone ipsMargin_vertical'>
<div class='ipsShareLinks'>
{{if \IPS\Member::loggedIn()->member_id}}
<div>
<a href="{$forum->url()->setQueryString( array( 'do' => 'markRead', 'fromForum' => 1 ) )->csrf()}" title='{lang="mark_forum_read_title"}' class='ipsButton ipsButton_verySmall ipsButton_link ipsButton_fullWidth'><i class="fa fa-check"></i> {lang="mark_forum_read"}</a>
</div>
{{endif}}
{{if !\IPS\Request::i()->advancedSearchForm && $forum->sub_can_post and !$forum->password}}
<div>
{template="follow" app="core" group="global" params="'forums','forum', $forum->_id, $followerCount"}
</div>
{{endif}}
</div>
</div>
{{endif}}
{{if $forum->club()}}
</div>
{{endif}}]]></template>
<template template_group="forums" template_name="forumHome" template_data="$forum, $featuredTopic, $popularQuestions, $newQuestions" template_location="front" template_app="forums"><![CDATA[<br>
{{if $featuredTopic}}
<div class="ipsPad">
<h2 class="ipsType_sectionHead">{lang="featured_question"}</h2>
<br><br>
<div class="ipsPhotoPanel ipsPhotoPanel_small ipsClearfix">
<img src='{expression="$featuredTopic->author()->photo"}' class="ipsUserPhoto ipsUserPhoto_small ipsPos_left">
<div>
<h3 class="ipsType_reset ipsType_large">
<a href="{$featuredTopic->url()}">{$featuredTopic->title}</a>
</h3>
<p class="ipsType_reset ipsType_normal ipsType_light">{lang="ask_byline" htmlsprintf="$featuredTopic->author()->link( NULL, NULL, $featuredTopic->isAnonymous() ), \IPS\DateTime::ts( $featuredTopic->start_date )->html()"}</p>
<br>
<div class="ipsType_normal" data-ipsTruncate data-ipsTruncate-type="remove" data-ipsTruncate-size="5 lines">
{$featuredTopic->truncated()}
</div>
</div>
</div>
</div>
<hr class="ipsHr">
{{endif}}
<div class="ipsGrid ipsGrid_collapsePhone">
<div class="ipsGrid_span6 ipsPad">
<h2 class="ipsType_sectionHead">{lang="most_popular_questions"}</h2>
<p class="ipsType_reset ipsType_light">{lang="from_the_past_30_days"}</p>
<ol class="ipsDataList ipsDataList_reducedSpacing" id="elTopicList">
{{foreach $popularQuestions as $question}}
<li class="ipsDataItem {{if $question->unread()}}ipsDataItem_unread{{endif}}">
<div class='ipsDataItem_generic ipsDataItem_size1'>
<img src="{$question->author()->photo}" class='ipsUserPhoto ipsUserPhoto_mini'>
</div>
<div class="ipsDataItem_main">
<h4 class="ipsDataItem_title">{{if $question->unread()}} <i class="fa fa-circle cTopicIcon"></i> {{endif}}<a href="{$question->url()}">{$question->title}</a></h4>
<ul class="ipsDataItem_meta ipsList_inline ipsType_light">
{{if $question->bestAnswer()}}
<li>
{lang="best_answer_by" htmlsprintf="$question->bestAnswer()->author()->link( NULL, NULL, $question->bestAnswer()->isAnonymous() ), \IPS\DateTime::ts( $question->bestAnswer()->post_date )->html()"}
</li>
{{endif}}
</ul>
</div>
</li>
{{endforeach}}
</ol>
</div>
<div class="ipsGrid_span6 ipsPad">
<h2 class="ipsType_sectionHead">{lang="new_questions"}</h2>
<p class="ipsType_reset ipsType_light">{lang="awaiting_an_answer"}</p>
<ol class="ipsDataList ipsDataList_reducedSpacing" id="elTopicList">
{{foreach $newQuestions as $question}}
<li class="ipsDataItem {{if $question->unread()}}ipsDataItem_unread{{endif}}">
<div class='ipsDataItem_generic ipsDataItem_size1'>
<img src="{$question->author()->photo}" class='ipsUserPhoto ipsUserPhoto_mini'>
</div>
<div class="ipsDataItem_main">
<h4 class="ipsDataItem_title">{{if $question->unread()}} <i class="fa fa-circle cTopicIcon"></i> {{endif}}<a href="{$question->url()}">{$question->title}</a></h4>
<ul class="ipsDataItem_meta ipsList_inline ipsType_light">
<li>
{lang="ask_byline" htmlsprintf="$question->author()->link( NULL, NULL, $question->isAnonymous() ), \IPS\DateTime::ts( $question->start_date )->html()"}
</li>
</ul>
</div>
</li>
{{endforeach}}
</ol>
</div>
</div>]]></template>
<template template_group="forums" template_name="forumPasswordPopup" template_data="$forum, $id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class='', $attributes=array(), $sidebar=NULL, $form=NULL" template_location="front" template_app="forums"><![CDATA[<form accept-charset='utf-8' class="ipsForm ipsForm_vertical" method='post' action='{$action}' data-ipsValidation novalidate>
<input type="hidden" name="{$id}_submitted" value="1">
{{foreach $hiddenValues as $k => $v}}
<input type="hidden" name="{$k}" value="{$v}">
{{endforeach}}
<div class='ipsPad'>
<p class='ipsType_normal ipsType_reset'>
{lang="enter_forum_password_1" sprintf="$forum->_title"}
</p>
<br>
<ul class='ipsList_reset'>
{{foreach $elements as $collection}}
{{foreach $collection as $input}}
{{if $input instanceof \IPS\Helpers\Form\Text}}
<li class="ipsFieldRow ipsFieldRow_primary ipsFieldRow_noLabel ipsFieldRow_fullWidth {{if $input->error}}ipsFieldRow_error{{endif}}">
<input type="{$input->formType}" required placeholder="{lang="$input->name"}" name='{$input->name}' id='{$input->htmlId}'>
{{if $input->error}}
<br>
<span class="ipsType_warning">{lang="$input->error"}</span>
{{endif}}
</li>
{{endif}}
{{endforeach}}
{{endforeach}}
</ul>
</div>
<div class='ipsPad ipsAreaBackground ipsType_right'>
<button type="submit" class="ipsButton ipsButton_primary ipsButton_small">{lang="enter_forum"}</button>
</div>
</form>]]></template>
<template template_group="forums" template_name="forumSelector" template_data="$form" template_location="front" template_app="forums"><![CDATA[
<div class='ipsPad'>
{$form|raw}
</div>]]></template>
<template template_group="forums" template_name="forumTable" template_data="$table, $headers, $rows, $quickSearch" template_location="front" template_app="forums"><![CDATA[<div class='ipsBox ipsResponsive_pull' data-baseurl='{$table->baseUrl}' data-resort='{$table->resortKey}' data-tableID='topics' {{if $table->dummyLoading}}data-dummyLoading{{endif}} data-controller='core.global.core.table{{if $table->canModerate()}},core.front.core.moderation{{endif}}'>
{{if $table->title}}
<h2 class='ipsType_sectionTitle ipsHide {{if !$table->container()->forums_bitoptions['bw_enable_answers']}}ipsType_medium{{endif}} ipsType_reset ipsClear'>{$table->title}</h2>
{{endif}}
{{if $table->count > 0}}
<div class="ipsButtonBar ipsPad_half ipsClearfix ipsClear">
{{if $table->canModerate()}}
<ul class="ipsButtonRow ipsPos_right ipsClearfix">
<li>
<a class="ipsJS_show" href="#elCheck_menu" id="elCheck_{$table->uniqueId}" title='{lang="{$table->langPrefix}select_rows_tooltip"}' data-ipsTooltip data-ipsAutoCheck data-ipsAutoCheck-context="#elTable_{$table->uniqueId}" data-ipsMenu data-ipsMenu-activeClass="ipsButtonRow_active">
<span class="cAutoCheckIcon ipsType_medium"><i class="fa fa-square-o"></i></span> <i class="fa fa-caret-down"></i>
<span class='ipsNotificationCount' data-role='autoCheckCount'>0</span>
</a>
<ul class="ipsMenu ipsMenu_auto ipsMenu_withStem ipsHide" id="elCheck_{$table->uniqueId}_menu">
<li class="ipsMenu_title">{lang="{$table->langPrefix}select_rows"}</li>
<li class="ipsMenu_item" data-ipsMenuValue="all"><a href="#">{lang="all"}</a></li>
<li class="ipsMenu_item" data-ipsMenuValue="none"><a href="#">{lang="none"}</a></li>
{{if \count($table->getFilters())}}
<li class="ipsMenu_sep"><hr></li>
{{foreach $table->getFilters() as $filter}}
<li class="ipsMenu_item" data-ipsMenuValue="{$filter}"><a href="#">{lang="$filter"}</a></li>
{{endforeach}}
{{endif}}
</ul>
</li>
</ul>
{{endif}}
<ul class="ipsButtonRow ipsPos_right ipsClearfix">
{{if isset( $table->sortOptions ) and !empty( $table->sortOptions ) }}
<li>
<a href="#elSortByMenu_menu" id="elSortByMenu_{$table->uniqueId}" data-role='sortButton' data-ipsMenu data-ipsMenu-activeClass="ipsButtonRow_active" data-ipsMenu-selectable="radio">{lang="sort_by"} <i class="fa fa-caret-down"></i></a>
<ul class="ipsMenu ipsMenu_auto ipsMenu_withStem ipsMenu_selectable ipsHide" id="elSortByMenu_{$table->uniqueId}_menu">
{{$custom = TRUE;}}
{{foreach $table->sortOptions as $k => $col}}
<li class="ipsMenu_item {{if $col === $table->getSortByColumn()}}{{$custom = FALSE;}}ipsMenu_itemChecked{{endif}}" data-ipsMenuValue="{$col}" data-sortDirection='{$table->getSortDirection( $col )}'><a href="{$table->baseUrl->setQueryString( array( 'filter' => $table->filter, 'sortby' => $col, 'sortdirection' => $table->getSortDirection( $col ) ) )->setPage('page', 1)}" rel="nofollow">{lang="{$table->langPrefix}sort_{$k}"}</a></li>
{{endforeach}}
{{if $table->advancedSearch}}
<li class="ipsMenu_item {{if $custom}}ipsMenu_itemChecked{{endif}}" data-noSelect="true">
<a href='{$table->baseUrl->setQueryString( array( 'advancedSearchForm' => '1', 'filter' => $table->filter, 'sortby' => $table->sortBy, 'sortdirection' => $table->sortDirection ) )}' rel="nofollow" data-ipsDialog data-ipsDialog-title='{lang="custom_sort"}'>{lang="custom"}</a>
</li>
{{endif}}
</ul>
</li>
{{endif}}
{{if !empty( $table->filters )}}
<li>
<a href="#elFilterByMenu_menu" id="elFilterByMenu_{$table->uniqueId}" data-role='tableFilterMenu' data-ipsMenu data-ipsMenu-activeClass="ipsButtonRow_active" data-ipsMenu-selectable="radio">{lang="filter_by"} <i class="fa fa-caret-down"></i></a>
<ul class='ipsMenu ipsMenu_auto ipsMenu_withStem ipsMenu_selectable ipsHide' data-role="tableFilterMenu" id='elFilterByMenu_{$table->uniqueId}_menu'>
<li data-action="tableFilter" data-ipsMenuValue='' class='ipsMenu_item {{if !$table->filter}}ipsMenu_itemChecked{{endif}}'>
<a href='{$table->baseUrl->setQueryString( array( 'filter' => '', 'sortby' => $table->sortBy, 'sortdirection' => $table->sortDirection ) )->setPage('page', 1)}' rel="nofollow">{lang="{$table->langPrefix}all"}</a>
</li>
{{foreach $table->filters as $k => $q}}
<li data-action="tableFilter" data-ipsMenuValue='{$k}' class='ipsMenu_item {{if $k === $table->filter}}ipsMenu_itemChecked{{endif}}'>
<a href='{$table->baseUrl->setQueryString( array( 'filter' => $k, 'sortby' => $table->sortBy, 'sortdirection' => $table->sortDirection ) )->setPage('page', 1)}' rel="nofollow">{lang="{$table->langPrefix}{$k}"}</a>
</li>
{{endforeach}}
</ul>
</li>
{{endif}}
</ul>
{{if \IPS\Member::loggedIn()->member_id}}
<ul class="ipsButtonRow ipsPos_right ipsClearfix ipsResponsive_hidePhone">
<li>
<a href="{$table->baseUrl->setQueryString( array( 'do' => 'markRead', 'fromForum' => 1 ) )->csrf()}" title='{lang="mark_forum_read_title"}' data-action='markForumRead'><i class="fa fa-check"></i> {lang="mark_forum_read"}</a>
</li>
</ul>
{{endif}}
<div data-role="tablePagination" {{if $table->pages <= 1}}class='ipsHide'{{endif}}>
{template="pagination" group="global" app="core" location="global" params="$table->baseUrl, $table->pages, $table->page, $table->limit, TRUE, $table->getPaginationKey()"}
</div>
</div>
{{endif}}
{{if $table->canModerate()}}
<form action="{$table->baseUrl->csrf()}" method="post" data-role='moderationTools' data-ipsPageAction>
{{endif}}
{{if \count( $rows )}}
<ol class='{{if \IPS\forums\Forum::getMemberListView() == 'snippet'}}ipsSnippetList{{else}}ipsClear{{endif}} ipsDataList cForumTopicTable {{if $table->container()->forums_bitoptions['bw_enable_answers']}}cForumQuestions{{endif}} {{foreach $table->classes as $class}}{$class} {{endforeach}}' id='elTable_{$table->uniqueId}' data-role="tableRows">
{template="$table->rowsTemplate[1]" params="$table, $headers, $rows" object="$table->rowsTemplate[0]"}
</ol>
{{else}}
<div class='ipsType_center ipsPadding'>
<p class='ipsType_reset ipsType_large ipsMargin_bottom'>{{if $table->container()->forums_bitoptions['bw_enable_answers']}}{lang="no_questions_in_forum"}{{else}}{lang="no_topics_in_forum"}{{endif}}</p>
{{if $table->container()->can('add')}}
<a href='{$table->container()->url()->setQueryString( 'do', 'add' )}' rel="nofollow" class='ipsButton ipsButton_primary ipsButton_medium'>
{{if $table->container()->forums_bitoptions['bw_enable_answers']}}
{lang="submit_first_question"}
{{else}}
{lang="submit_first_topic"}
{{endif}}
</a>
{{endif}}
</div>
{{endif}}
{{if $table->canModerate()}}
<div class="ipsAreaBackground ipsPad ipsClearfix ipsJS_hide" data-role="pageActionOptions">
<div class="ipsPos_right">
<select name="modaction" data-role="moderationAction">
{{if $table->canModerate('unhide')}}
<option value='approve' data-icon='check-circle'>{lang="approve"}</option>
{{endif}}
{{if $table->canModerate('feature') or $table->canModerate('unfeature')}}
<optgroup label="{lang="feature"}" data-icon='star' data-action='feature'>
{{if $table->canModerate('feature')}}
<option value='feature'>{lang="feature"}</option>
{{endif}}
{{if $table->canModerate('unhide')}}
<option value='unfeature'>{lang="unfeature"}</option>
{{endif}}
</optgroup>
{{endif}}
{{if $table->canModerate('pin') or $table->canModerate('unpin')}}
<optgroup label="{lang="pin"}" data-icon='thumb-tack' data-action='pin'>
{{if $table->canModerate('pin')}}
<option value='pin'>{lang="pin"}</option>
{{endif}}
{{if $table->canModerate('unpin')}}
<option value='unpin'>{lang="unpin"}</option>
{{endif}}
</optgroup>
{{endif}}
{{if $table->canModerate('hide') or $table->canModerate('unhide')}}
<optgroup label="{lang="hide"}" data-icon='eye' data-action='hide'>
{{if $table->canModerate('hide')}}
<option value='hide'>{lang="hide"}</option>
{{endif}}
{{if $table->canModerate('unhide')}}
<option value='unhide'>{lang="unhide"}</option>
{{endif}}
</optgroup>
{{endif}}
{{if $table->canModerate('lock') or $table->canModerate('unlock')}}
<optgroup label="{lang="lock"}" data-icon='lock' data-action='lock'>
{{if $table->canModerate('lock')}}
<option value='lock'>{lang="lock"}</option>
{{endif}}
{{if $table->canModerate('unlock')}}
<option value='unlock'>{lang="unlock"}</option>
{{endif}}
</optgroup>
{{endif}}
{{if $table->canModerate('move')}}
<option value='move' data-icon='arrow-right'>{lang="move"}</option>
{{endif}}
{{if $table->canModerate('split_merge')}}
<option value='merge' data-icon='level-up'>{lang="merge"}</option>
{{endif}}
{{if $table->canModerate('delete')}}
<option value='delete' data-icon='trash'>{lang="delete"}</option>
{{endif}}
{{if $table->savedActions}}
<optgroup label="{lang="saved_actions"}" data-icon='tasks' data-action='saved_actions'>
{{foreach $table->savedActions as $k => $v}}
<option value='savedAction-{$k}'>{$v}</option>
{{endforeach}}
</optgroup>
{{endif}}
</select>
<button type="submit" class="ipsButton ipsButton_alternate ipsButton_verySmall">{lang="submit"}</button>
</div>
</div>
</form>
{{endif}}
<div class="ipsButtonBar ipsPad_half ipsClearfix ipsClear {{if $table->pages <= 1}}ipsHide{{endif}}" data-role="tablePagination">
{template="pagination" group="global" app="core" location="global" params="$table->baseUrl, $table->pages, $table->page, $table->limit, TRUE, $table->getPaginationKey()"}
</div>
</div>]]></template>
<template template_group="forums" template_name="popularQuestionRow" template_data="$question, $forum" template_location="front" template_app="forums"><![CDATA[{{$iposted = $forum->contentPostedIn( null, array( $question->tid ) );}}
{{if !$question->mapped('moved_to')}}
<li class="ipsDataItem cForumQuestion {{if $question->unread()}}ipsDataItem_unread{{endif}} {{if $question->hidden()}}ipsModerated{{endif}}">
<div class='ipsDataItem_icon'>
{{if $question->topic_answered_pid}}
<span title='{lang="answered"}' class='cBestAnswerIndicator' data-ipsTooltip>
<i class='fa fa-check'></i>
</span>
{{else}}
<span title='{lang="awaiting_answer"}' class='cBestAnswerIndicator cBestAnswerIndicator_off' data-ipsTooltip>
<i class='fa fa-question'></i>
</span>
{{endif}}
</div>
<div class='ipsDataItem_main'>
<h4 class='ipsDataItem_title ipsType_break ipsContained_container'>
<span class='ipsType_break ipsContained'>
{{if $question->locked()}}
<i class='fa fa-lock' data-ipsTooltip title='{lang="topic_locked"}'></i>
{{endif}}
{{if $question->unread()}}
<a href='{$question->url( 'getNewComment' )}' title='{lang="first_unread_post"}' data-ipsTooltip>
<span class='ipsItemStatus'><i class="fa {{if \in_array( $question->tid, $iposted )}}fa-star{{else}}fa-circle{{endif}}"></i></span>
</a>
{{else}}
{{if \in_array( $question->tid, $iposted )}}
<span class='ipsItemStatus ipsItemStatus_read ipsItemStatus_posted'><i class="fa fa-star"></i></span>
{{endif}}
{{endif}}
{{if $question->mapped('pinned') || $question->mapped('featured') || $question->hidden() === -1 || $question->hidden() === 1}}
<span>
{{if $question->hidden() === -1}}
<span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{$question->hiddenBlurb()}'><i class='fa fa-eye-slash'></i></span>
{{elseif $question->hidden() === 1}}
<span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{lang="pending_approval"}'><i class='fa fa-warning'></i></span>
{{endif}}
{{if $question->mapped('pinned')}}
<span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="pinned"}'><i class='fa fa-thumb-tack'></i></span>
{{endif}}
{{if $question->mapped('featured')}}
<span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="featured"}'><i class='fa fa-star'></i></span>
{{endif}}
</span>
{{endif}}
{{if $question->prefix()}}
{template="prefix" group="global" app="core" params="$question->prefix( TRUE ), $question->prefix()"}
{{endif}}
<a href='{$question->url()}'>
{{if $question->mapped('title')}}{$question->mapped('title')}{{else}}<em class="ipsType_light">{lang="content_deleted"}</em>{{endif}}
</a>
</span>
</h4>
<div class='ipsDataItem_meta'>
<p class='ipsType_reset ipsType_normal ipsType_light'>
{lang="ask_byline" htmlsprintf="$question->author()->link( NULL, NULL, $question->isAnonymous() ), \IPS\DateTime::ts( $question->start_date )->html()"}
</p>
</div>
{{if \count( $question->tags() )}}
<p>{template="tags" group="global" app="core" params="$question->tags()"}</p>
{{endif}}
</div>
<div class='ipsDataItem_generic ipsDataItem_size2 ipsType_center cForumQuestion_stat'>
<span>{{if $question->question_rating}}{$question->question_rating}{{else}}0{{endif}}</span>
<span class='ipsType_light'>{lang="votes_no_number" pluralize="$question->question_rating"}</span>
</div>
<div class='ipsDataItem_generic ipsDataItem_size2 ipsType_center cForumQuestion_stat'>
{{foreach $question->stats(FALSE) AS $k => $v}}
{{if $k == 'forums_comments' OR $k == 'answers_no_number'}}
<span>{number="$v"}</span>
<span class='ipsType_light'>{lang="answers_no_number" pluralize="$v"}</span>
{{endif}}
{{endforeach}}
</div>
</li>
{{endif}}]]></template>
<template template_group="forums" template_name="qaForum" template_data="$table, $popularQuestions, $newQuestions, $featuredTopic, $forum" template_location="front" template_app="forums"><![CDATA[
{{if $popularQuestions && $newQuestions}}
<div class='ipsBox ipsSpacer_bottom ipsSpacer_double'>
<h2 class='ipsType_sectionTitle ipsType_reset ipsHide'>{lang="explore_questions_title"}</h2>
<div class="ipsTabs ipsClearfix" id="elQuestionsTabs" data-ipsTabBar data-ipsTabBar-contentarea="#elQuestionsTabsContent">
<a href="#elQuestionsTabs" data-action="expandTabs"><i class="fa fa-caret-down"></i></a>
<ul role="tablist" class="ipsList_reset">
<li>
<a href="#elPopularQuestions" role="tab" id="elPopularQuestions" class="ipsTabs_item {{if \count( $popularQuestions ) || !\count( $popularQuestions ) && !\count( $newQuestions )}}ipsTabs_activeItem{{endif}}" role="tab" aria-selected="{{if \count( $popularQuestions ) || !\count( $popularQuestions ) && !\count( $newQuestions )}}true{{else}}false{{endif}}">
{lang="popular_questions_title"}
</a>
</li>
<li>
<a href="#elNewQuestions" id="elNewQuestions" role="tab" class="ipsTabs_item {{if !\count( $popularQuestions ) && \count( $newQuestions )}}ipsTabs_activeItem{{endif}}" role="tab" aria-selected="{{if !\count( $popularQuestions ) && \count( $newQuestions )}}true{{else}}false{{endif}}">
{{if \IPS\Settings::i()->forums_new_questions}}{lang="new_questions_title_no_answer"}{{else}}{lang="new_questions_title_no_best"}{{endif}}
</a>
</li>
</ul>
</div>
<section id='elQuestionsTabsContent'>
<div id="ipsTabs_elQuestionsTabs_elPopularQuestions_panel" class="ipsTabs_panel" aria-labelledby="elPopularQuestions">
{{if \count( $popularQuestions )}}
<ol class='ipsDataList ipsDataList_zebra ipsClear cForumTopicTable cForumQuestions cTopicList' id='elTable_popularQuestions' data-role="tableRows">
{{foreach $popularQuestions as $question}}
{template="popularQuestionRow" params="$question, $forum" group="forums"}
{{endforeach}}
</ol>
{{else}}
<div class='ipsType_center ipsType_light ipsPad'>
<p class='ipsType_reset ipsType_large'>{lang="no_popular_questions"}</p>
</div>
{{endif}}
</div>
<div id="ipsTabs_elQuestionsTabs_elNewQuestions_panel" class="ipsTabs_panel" aria-labelledby="elNewQuestions">
{{if \count( $newQuestions )}}
<ol class='ipsDataList ipsDataList_zebra ipsClear cForumTopicTable cForumQuestions cTopicList' id='elTable_newQuestions' data-role="tableRows">
{{foreach $newQuestions as $question}}
{template="popularQuestionRow" params="$question, $forum" group="forums"}
{{endforeach}}
</ol>
{{else}}
<div class='ipsType_center ipsType_light ipsPad'>
<p class='ipsType_reset ipsType_large'>{lang="no_new_questions"}</p>
</div>
{{endif}}
</div>
</section>
</div>
{{else}}
{{if $popularQuestions}}
<section class='ipsBox ipsSpacer_bottom ipsSpacer_double'>
<h2 class='ipsType_sectionTitle ipsType_reset'>{lang="popular_questions_title"}</h2>
{{if \count( $popularQuestions )}}
<ol class='ipsDataList ipsDataList_readStatus ipsClear cForumTopicTable' id='elTable_' data-role="tableRows">
{{foreach $popularQuestions as $question}}
{template="popularQuestionRow" params="$question, $forum" group="forums"}
{{endforeach}}
</ol>
{{else}}
<div class='ipsType_center ipsType_light ipsPad'>
<p class='ipsType_reset ipsType_large'>{lang="no_popular_questions"}</p>
</div>
{{endif}}
</section>
{{endif}}
{{if $newQuestions}}
<section class='ipsBox ipsSpacer_bottom ipsSpacer_double'>
<h2 class='ipsType_sectionTitle ipsType_reset'>{{if \IPS\Settings::i()->forums_new_questions}}{lang="new_questions_title_no_answer"}{{else}}{lang="new_questions_title_no_best"}{{endif}}</h2>
{{if \count( $newQuestions )}}
<ol class='ipsDataList ipsDataList_readStatus ipsClear cForumTopicTable' id='elTable_' data-role="tableRows">
{{foreach $newQuestions as $question}}
{template="popularQuestionRow" params="$question, $forum" group="forums"}
{{endforeach}}
</ol>
{{else}}
<div class='ipsType_center ipsType_light ipsPad'>
<p class='ipsType_reset ipsType_large'>{lang="no_new_questions"}</p>
</div>
{{endif}}
</section>
{{endif}}
{{endif}}
{$table|raw}]]></template>
<template template_group="forums" template_name="questionRow" template_data="$table, $headers, $rows" template_location="front" template_app="forums"><![CDATA[{{$rowIds = array();}}
{{foreach $rows as $row}}
{{$idField = $row::$databaseColumnId;}}
{{$rowIds[] = $row->$idField;}}
{{endforeach}}
{{if \count( $rows )}}
{{$rowCount=0;}}
{{foreach $rows as $row}}
{{if $rowCount == 1 AND $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_forum_listing' )}}
<li class="ipsDataItem">
{$advertisement|raw}
</li>
{{endif}}
{{$rowCount++;}}
{{$idField = $row::$databaseColumnId;}}
{{if $row->mapped('moved_to')}}
{{if $movedTo = $row->movedTo()}}
<li class="ipsDataItem {{if \IPS\forums\Forum::getMemberListView() == 'snippet'}}ipsTopicSnippet ipsQuestionSnippet{{endif}}">
<div class='ipsDataItem_icon ipsType_center ipsType_noBreak'>
<i class="fa fa-arrow-left ipsType_large"></i>
</div>
<div class='ipsDataItem_main'>
<h4 class='ipsDataItem_title ipsType_break'>
<span class='ipsType_break ipsContained'>
<em><a href='{$movedTo->url()}' title='{lang="go_to_new_location"}'>{$row->mapped('title')}</a></em>
</span>
</h4>
<div class='ipsDataItem_meta'>
{{if isset( $row::$databaseColumnMap['status'] )}}
{{$statusField = $row::$databaseColumnMap['status'];}}
{{if $row->$statusField == 'merged'}}
<p class='ipsType_reset ipsType_light ipsType_blendLinks'>{lang="question_merged_to" sprintf="$movedTo->url(), $movedTo->mapped('title')"}</p>
{{else}}
<p class='ipsType_reset ipsType_light ipsType_blendLinks'>{lang="question_moved_to" sprintf="$movedTo->container()->url(), $movedTo->container()->_title"}</p>
{{endif}}
{{else}}
<p class='ipsType_reset ipsType_light ipsType_blendLinks'>{lang="question_moved_to" sprintf="$movedTo->container()->url(), $movedTo->container()->_title"}</p>
{{endif}}
</div>
</div>
{{if $table->canModerate()}}
<div class='ipsDataItem_modCheck'>
<span class='ipsCustomInput'>
<input type='checkbox' data-role='moderation' name="moderate[{$row->$idField}]" data-actions="{expression="implode( ' ', $table->multimodActions( $row ) )"}" data-state='{{if $row->mapped('pinned')}}pinned{{endif}} {{if $row->mapped('featured')}}featured{{endif}}'>
<span></span>
</span>
</div>
{{endif}}
</li>
{{endif}}
{{else}}
<li class="ipsDataItem {{if \IPS\forums\Forum::getMemberListView() == 'snippet'}}ipsTopicSnippet ipsQuestionSnippet{{endif}} {{if $row->unread()}}ipsDataItem_unread{{endif}} {{if method_exists( $row, 'tableClass' ) && $row->tableClass()}}ipsDataItem_{$row->tableClass()}{{endif}} {{if $row->hidden()}}ipsModerated{{endif}} cForumQuestion" data-rowID='{$row->$idField}'>
<div class='ipsDataItem_icon'>
{{if $row->topic_answered_pid}}
<span title='{lang="answered"}' class='cBestAnswerIndicator' data-ipsTooltip>
<i class='fa fa-check'></i>
</span>
{{else}}
<span title='{lang="awaiting_answer"}' class='cBestAnswerIndicator cBestAnswerIndicator_off' data-ipsTooltip>
<i class='fa fa-question'></i>
</span>
{{endif}}
</div>
<div class='ipsDataItem_main'>
<h4 class='ipsDataItem_title ipsContained_container'>
<span class='ipsType_break ipsContained'>
{{if $row->locked()}}
<span><i class='fa fa-lock' data-ipsTooltip title='{lang="topic_locked"}'></i></span>
{{endif}}
{{if $row->unread()}}
<span>
<a href='{$row->url( 'getNewComment' )}' title='{lang="first_unread_post"}' data-ipsTooltip>
<span class='ipsItemStatus'><i class="fa {{if \in_array( $row->$idField, $table->contentPostedIn )}}fa-star{{else}}fa-circle{{endif}}"></i></span>
</a>
</span>
{{else}}
{{if \in_array( $row->$idField, $table->contentPostedIn )}}
<span><span class='ipsItemStatus ipsItemStatus_read ipsItemStatus_posted'><i class="fa fa-star"></i></span></span>
{{endif}}
{{endif}}
{{if $row->mapped('pinned') || $row->mapped('featured') || $row->hidden() === -1 || $row->hidden() === 1}}
<span>
{{if $row->hidden() === -1}}
<span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{$row->hiddenBlurb()}'><i class='fa fa-eye-slash'></i></span>
{{elseif $row->hidden() === 1}}
<span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{lang="pending_approval"}'><i class='fa fa-warning'></i></span>
{{endif}}
{{if $row->mapped('pinned')}}
<span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="pinned"}'><i class='fa fa-thumb-tack'></i></span>
{{endif}}
{{if $row->mapped('featured')}}
<span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="featured"}'><i class='fa fa-star'></i></span>
{{endif}}
</span>
{{endif}}
{{if $row->prefix()}}
<span>{template="prefix" group="global" app="core" params="$row->prefix( TRUE ), $row->prefix()"}</span>
{{endif}}
<a href='{$row->url( "getPrefComment" )}' title='{{if $row->mapped('title')}}{$row->mapped('title')}{{else}}{lang="content_deleted"}{{endif}} {{if $row->canEdit()}}{lang="click_hold_edit"}{{endif}}' {{if $row->tableHoverUrl and $row->canView()}}data-ipsHover data-ipsHover-target='{$row->url()->setQueryString('preview', 1)}' data-ipsHover-timeout='1.5'{{endif}} {{if $row->canEdit()}} data-role="editableTitle"{{endif}}>
<span>
{{if $row->mapped('title')}}{$row->mapped('title')}{{else}}<em class="ipsType_light">{lang="content_deleted"}</em>{{endif}}
</span>
</a>
</span>
</h4>
{{if \IPS\forums\Forum::getMemberListView() == 'snippet'}}
<div class='ipsTopicSnippet__snippet ipsType_normal ipsType_blendLinks ipsType_break'>
<p>{$row->firstComment->snippet(680)}</p>
</div>
{{endif}}
<div class='ipsDataItem_meta'>
<p class='ipsDataItem_meta ipsType_reset ipsType_light ipsType_blendLinks'>
<span>
{lang="ask_byline_itemprop" htmlsprintf="$row->author()->link( NULL, NULL, $row->isAnonymous() ), \IPS\DateTime::ts( $row->start_date )->html()"}
</span>
{{if \IPS\Request::i()->controller != 'forums'}}
{lang="in"} <a href="{$row->container()->url()}">{$row->container()->_title}</a>
{{endif}}
</p>
{{if \count( $row->tags() )}}
<div>{template="tags" group="global" app="core" params="$row->tags()"}</div>
{{endif}}
</div>
</div>
<div class='ipsDataItem_generic ipsDataItem_size2 ipsType_center cForumQuestion_stat'>
<span>{{if $row->question_rating}}{$row->question_rating}{{else}}0{{endif}}</span>
<span class='ipsType_light'>{lang="votes_no_number" pluralize="$row->question_rating"}</span>
</div>
<div class='ipsDataItem_generic ipsDataItem_size2 ipsType_center cForumQuestion_stat'>
{{foreach $row->stats(FALSE) AS $k => $v}}
{{if $k == 'forums_comments' OR $k == 'answers_no_number'}}
<span>{number="$v"}</span>
<span class='ipsType_light'>
{lang="answers_no_number" pluralize="$v"}
{{if \IPS\forums\Topic::modPermission( 'unhide', NULL, $row->container() ) AND $unapprovedComments = $row->mapped('unapproved_comments')}}
&nbsp;<a href='{$row->url()->setQueryString( 'queued_posts', 1 )}' class='ipsType_warning ipsType_small ipsResponsive_noFloat' data-ipsTooltip title='{lang="queued_posts_badge" pluralize="$row->topic_queuedposts"}'><i class='fa fa-warning'></i> <strong>{$unapprovedComments}</strong></a>
{{endif}}
</span>
{{endif}}
{{endforeach}}
</div>
{{if $table->canModerate()}}
<div class='ipsDataItem_modCheck'>
<span class='ipsCustomInput'>
<input type='checkbox' data-role='moderation' name="moderate[{$row->$idField}]" data-actions="{expression="implode( ' ', $table->multimodActions( $row ) )"}" data-state='{{if $row->tableStates()}}{$row->tableStates()}{{endif}}'>
<span></span>
</span>
</div>
{{endif}}
</li>
{{endif}}
{{endforeach}}
{{endif}}]]></template>
<template template_group="forums" template_name="topicHover" template_data="$topic, $overviews" template_location="front" template_app="forums"><![CDATA[
<div class='cTopicHovercard' data-controller='forums.front.forum.hovercard' data-topicID='{$topic->tid}'>
{{if \count( $overviews ) > 1}}
<div class="ipsTabs ipsTabs_small ipsTabs_container ipsClearfix" id="elTopic_{$topic->tid}" data-ipsTabBar data-ipsTabBar-contentarea="#elTopic_{$topic->tid}_content">
<a href="#elTopic_{$topic->tid}" data-action="expandTabs"><i class="fa fa-caret-down"></i></a>
<ul role="tablist">
{{foreach $overviews as $tabID => $tabData}}
<li>
<a href="#ipsTabs_elTopic_{$topic->tid}_elTopic_{$topic->tid}_{$tabID}_panel" id="elTopic_{$topic->tid}_{$tabID}" class="ipsTabs_item ipsType_center" role="tab" aria-selected="{{if $tabID == 'firstPost'}}true{{else}}false{{endif}}">{lang="$tabData[0]"}</a>
</li>
{{endforeach}}
</ul>
</div>
<div id='elTopic_{$topic->tid}_content' class='ipsTabs_panels ipsTabs_contained cTopicHovercard_container ipsScrollbar'>
{{else}}
<div class='ipsPad cTopicHovercard_container ipsScrollbar'>
{{endif}}
{{foreach $overviews as $tabID => $tabData}}
{{if \count( $overviews ) > 1}}
<div id='ipsTabs_elTopic_{$topic->tid}_elTopic_{$topic->tid}_{$tabID}_panel' class='ipsTabs_panel'>
{{endif}}
<div class='ipsPhotoPanel ipsPhotoPanel_tiny ipsClearfix'>
{template="userPhoto" group="global" app="core" params="$tabData[1]->author(), 'tiny'"}
<div class='ipsType_small'>
<strong>{$tabData[1]->author()->link( NULL, NULL, $tabData[1]->isAnonymous() )|raw}</strong>
<p class='ipsType_reset ipsType_light ipsType_blendLinks'>
{datetime="$tabData[1]->mapped('date')"}
{{if $tabData[1]->item()->unread() }}
&middot; <a href='{$tabData[1]->item()->url('markRead')->csrf()}' title='{lang="mark_topic_read"}' data-action='markTopicRead'><i class='fa fa-check'></i> {lang="mark_topic_read"}</a>
{{endif}}
{{if $tabData[1]->canReportOrRevoke() === TRUE}}
&middot; <a href='{$tabData[1]->url('report')}' {{if member.member_id or \IPS\Helpers\Form\Captcha::supportsModal()}}data-ipsDialog data-ipsDialog-remoteSubmit data-ipsDialog-size='medium' data-ipsDialog-flashMessage='{lang="report_submit_success"}' data-ipsDialog-title="{lang="report_post"}"{{endif}} data-action='reportComment' title='{lang="report_post"}'><span class='ipsResponsive_showPhone ipsResponsive_inline'><i class='fa fa-flag'></i></span><span class='ipsResponsive_hidePhone ipsResponsive_inline'>{lang="report_post"}</span></a>
{{endif}}
</p>
</div>
</div>
<hr class='ipsHr'>
<div class='ipsType_richText ipsType_small' data-controller='core.front.core.lightboxedImages'>
{$tabData[1]->content()|raw}
</div>
{{if \count( $overviews ) > 1}}
</div>
{{endif}}
{{endforeach}}
</div>
{{if \IPS\Settings::i()->core_datalayer_enabled}}
<script>
if ( IpsDataLayerConfig && !window.IpsDataLayerConfig && IpsDataLayerConfig._events.content_view.enabled ) {
$('body').trigger( 'ipsDataLayer', {
_key: 'content_view',
_properties: {expression="json_encode(array_replace($topic->getDataLayerProperties(), ['view_location' => 'hovercard', 'page_number' => null]))" raw="true"}
} );
}
</script>
{{endif}}
</div>]]></template>
<template template_group="forums" template_name="topicRow" template_data="$table, $headers, $rows" template_location="front" template_app="forums"><![CDATA[{{$rowIds = array();}}
{{foreach $rows as $row}}
{{$idField = $row::$databaseColumnId;}}
{{$rowIds[] = $row->$idField;}}
{{endforeach}}
{{if \count( $rows )}}
{{$rowCount=0;}}
{{foreach $rows as $row}}
{{if $rowCount == 1 AND $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_forum_listing' )}}
<li class="ipsDataItem">
{$advertisement|raw}
</li>
{{endif}}
{{$rowCount++;}}
{{$idField = $row::$databaseColumnId;}}
{{if $row->mapped('moved_to')}}
{{if $movedTo = $row->movedTo() AND $movedTo->container()->can('view')}}
<li class="ipsDataItem">
<div class='ipsDataItem_icon ipsType_center ipsType_noBreak'>
<i class="fa fa-arrow-left ipsType_large"></i>
</div>
<div class='ipsDataItem_main'>
<h4 class='ipsDataItem_title ipsContained_container'>
<em><a href='{$movedTo->url()}' title='{lang="go_to_new_location"}'>{$row->mapped('title')}</a></em>
</h4>
<div class='ipsDataItem_meta'>
{{if isset( $row::$databaseColumnMap['status'] )}}
{{$statusField = $row::$databaseColumnMap['status'];}}
{{if $row->$statusField == 'merged'}}
<p class='ipsType_reset ipsType_light ipsType_blendLinks'>{lang="topic_merged_to" sprintf="$movedTo->url( 'getPrefComment' ), $movedTo->mapped('title')"}</p>
{{else}}
<p class='ipsType_reset ipsType_light ipsType_blendLinks'>{lang="topic_moved_to" sprintf="$movedTo->container()->url(), $movedTo->container()->_title"}</p>
{{endif}}
{{else}}
<p class='ipsType_reset ipsType_light ipsType_blendLinks'>{lang="topic_moved_to" sprintf="$movedTo->container()->url(), $movedTo->container()->_title"}</p>
{{endif}}
</div>
</div>
{{if $table->canModerate()}}
<div class='ipsDataItem_modCheck'>
<span class='ipsCustomInput'>
<input type='checkbox' data-role='moderation' name="moderate[{$row->$idField}]" data-actions="{{if $row->mapped('featured')}}unfeature{{endif}} {{if $row->mapped('pinned')}}unpin{{endif}} delete" data-state='{{if $row->mapped('pinned')}}pinned{{endif}} {{if $row->mapped('featured')}}featured{{endif}}'>
<span></span>
</span>
</div>
{{endif}}
</li>
{{endif}}
{{else}}
<li class="ipsDataItem ipsDataItem_responsivePhoto {{if $row->groupsPosted}}ipsDataItem_highlighted{{endif}} {{if $row->unread()}}ipsDataItem_unread{{endif}} {{if method_exists( $row, 'tableClass' ) && $row->tableClass()}}ipsDataItem_{$row->tableClass()}{{endif}} {{if $row->hidden() or $row->isFutureDate()}}ipsModerated{{endif}} {{if $row->isFutureDate()}}ipsModerated_alternate{{endif}}" data-rowID='{$row->$idField}' data-location='{{if isset($row->locationHash)}}{$row->locationHash}{{endif}}' data-controller='forums.front.forum.topicRow'>
{{if member.member_id}}
<div class='ipsDataItem_icon ipsPos_top'>
{{if $row->unread()}}
<a href='{$row->url( 'getNewComment' )}' title='{lang="first_unread_post"}' data-ipsTooltip>
<span class='ipsItemStatus'><i class="fa {{if \in_array( $row->$idField, $table->contentPostedIn )}}fa-star{{else}}fa-circle{{endif}}"></i></span>
</a>
{{else}}
{{if \in_array( $row->$idField, $table->contentPostedIn )}}
<span class='ipsItemStatus ipsItemStatus_read ipsItemStatus_posted'><i class="fa fa-star"></i></span>
{{else}}
&nbsp;
{{endif}}
{{endif}}
</div>
{{endif}}
<div class='ipsDataItem_main'>
{{if $row->groupsPosted}}
{template="groupPostedBadges" group="global" app="core" location="front" params="$row->groupsPosted, 'topic_posted_in_groups', 'ipsResponsive_hidePhone ipsMargin_left ipsPos_right'"}
{{endif}}
<h4 class='ipsDataItem_title ipsContained_container'>
{{if $row->locked()}}
<span>
<i class='ipsType_medium fa fa-lock' data-ipsTooltip title='{lang="topic_locked"}'></i>
</span>
{{if $row->topic_open_time && $row->topic_open_time > time()}}
<span><strong class='ipsType_small ipsType_noBreak' data-ipsTooltip title='{lang="topic_unlocks_at" sprintf="\IPS\DateTime::ts( $row->topic_open_time )->relative(), \IPS\DateTime::ts( $row->topic_open_time )->localeTime( FALSE )"}'>{lang="topic_unlocks_at_short" sprintf="\IPS\DateTime::ts($row->topic_open_time)->relative(1)"}</strong>&nbsp;&nbsp;</span>
{{endif}}
{{elseif !$row->locked() && $row->topic_close_time && $row->topic_close_time > time()}}
<span><strong class='ipsType_small ipsType_noBreak' data-ipsTooltip title='{lang="topic_locks_at" sprintf="\IPS\DateTime::ts( $row->topic_close_time )->relative(), \IPS\DateTime::ts( $row->topic_close_time )->localeTime( FALSE )"}'><i class='fa fa-clock-o'></i> {lang="topic_locks_at_short" sprintf="\IPS\DateTime::ts($row->topic_close_time)->relative(1)"}</strong>&nbsp;&nbsp;</span>
{{endif}}
{{if $row->isSolved()}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="this_is_solved"}'><i class='fa fa-check'></i></span></span>
{{endif}}
{{if $row->mapped('poll')}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_neutral" data-ipsTooltip title='{lang="topic_has_poll"}'><i class='fa fa-question'></i></span></span>
{{endif}}
{{if $row->isFutureDate() || $row->mapped('pinned') || $row->mapped('featured') || $row->hidden() === -1 || $row->hidden() === 1}}
{{if $row->isFutureDate()}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{$row->futureDateBlurb()}'><i class='fa fa-clock-o'></i></span></span>
{{endif}}
{{if $row->hidden() === -1}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{$row->hiddenBlurb()}'><i class='fa fa-eye-slash'></i></span></span>
{{elseif $row->hidden() === 1}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{lang="pending_approval"}'><i class='fa fa-warning'></i></span></span>
{{elseif $row->canToggleItemModeration() and $row->itemModerationEnabled()}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{lang="topic_moderation_enabled"}'><i class='fa fa-user-times'></i></span></span>
{{endif}}
{{if $row->mapped('pinned')}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="pinned"}'><i class='fa fa-thumb-tack'></i></span></span>
{{endif}}
{{if $row->mapped('featured')}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="featured"}'><i class='fa fa-star'></i></span></span>
{{endif}}
{{endif}}
{{if $row->prefix()}}
<span>{template="prefix" group="global" app="core" params="$row->prefix( TRUE ), $row->prefix()"}</span>
{{endif}}
<span class='ipsType_break ipsContained'>
<a href='{$row->url( "getPrefComment" )}' class='' title='{{if $row->mapped('title')}}{$row->mapped('title')}{{else}}{lang="content_deleted"}{{endif}} {{if $row->canEdit()}}{lang="click_hold_edit"}{{endif}}' {{if $row->tableHoverUrl and $row->canView()}} data-ipsHover data-ipsHover-target='{$row->url()->setQueryString('preview', 1)}' data-ipsHover-timeout='1.5'{{endif}}{{if $row->canEdit()}} data-role="editableTitle"{{endif}}>
<span>
{{if $row->mapped('title') or $row->mapped('title') == 0}}{$row->mapped('title')}{{else}}<em class="ipsType_light">{lang="content_deleted"}</em>{{endif}}
</span>
</a>
</span>
{{if $row->commentPageCount() > 1}}
{$row->commentPagination( array(), 'miniPagination' )|raw}
{{endif}}
</h4>
<span data-role="activeUsers"></span>
<div class='ipsDataItem_meta ipsType_reset ipsType_light ipsType_blendLinks'>
<span>
{lang="byline_itemprop" htmlsprintf="$row->author()->link( NULL, NULL, $row->isAnonymous() )"}
</span>{datetime="$row->mapped('date')" lowercase="true"}
{{if !\in_array( \IPS\Dispatcher::i()->controller, array( 'forums', 'index' ) )}}
{lang="in"} <a href="{$row->container()->url()}">{$row->container()->_title}</a>
{{endif}}
{{if \count( $row->tags() )}}
&nbsp;&nbsp;
{template="tags" group="global" app="core" params="$row->tags(), true"}
{{endif}}
</div>
</div>
<ul class='ipsDataItem_stats'>
{{if $row->groupsPosted}}
<li class='ipsResponsive_showPhone ipsMargin:none'>
{template="groupPostedBadges" group="global" app="core" location="front" params="$row->groupsPosted, 'topic_posted_in_groups'"}
</li>
{{endif}}
{{foreach $row->stats(FALSE) as $k => $v}}
<li {{if $k == 'num_views'}}class='ipsType_light'{{endif}} data-statType='{$k}'>
{{if \in_array( $k, $row->hotStats )}}<span class="ipsDataItem_stats_hot" data-text='{lang="hot_item"}' data-ipsTooltip title='{lang="hot_item_desc"}'>{{endif}}
<span class='ipsDataItem_stats_number'>{number="$v" format="short"}</span>
<span class='ipsDataItem_stats_type'>{lang="{$k}" pluralize="$v" format="short"}</span>
{{if \in_array( $k, $row->hotStats )}}</span>{{endif}}
{{if ( $k == 'forums_comments' OR $k == 'answers_no_number' ) && \IPS\forums\Topic::modPermission( 'unhide', NULL, $row->container() ) AND $unapprovedComments = $row->mapped('unapproved_comments')}}
&nbsp;<a href='{$row->url()->setQueryString( 'queued_posts', 1 )}' class='ipsType_warning ipsType_small' data-ipsTooltip title='{lang="queued_posts_badge" pluralize="$row->topic_queuedposts"}'><i class='fa fa-warning'></i> <strong>{$unapprovedComments}</strong></a>
{{endif}}
</li>
{{endforeach}}
</ul>
<ul class='ipsDataItem_lastPoster ipsDataItem_withPhoto ipsType_blendLinks'>
<li>
{{if $row->mapped('num_comments')}}
{template="userPhoto" app="core" group="global" params="$row->lastCommenter(), 'tiny'"}
{{else}}
{template="userPhoto" app="core" group="global" params="$row->author(), 'tiny'"}
{{endif}}
</li>
<li>
{{if $row->mapped('num_comments')}}
{{if $row->mapped('last_comment_anon')}}
{template="userLink" app="core" group="global" params="$row->author(), NULL, NULL, TRUE"}
{{else}}
{$row->lastCommenter()->link()|raw}
{{endif}}
{{else}}
{$row->author()->link( NULL, NULL, $row->isAnonymous() )|raw}
{{endif}}
</li>
<li class="ipsType_light">
{{if ! \IPS\Output::i()->reduceLinks()}}<a href='{$row->url( 'getLastComment' )}' title='{lang="get_last_post"}' class='ipsType_blendLinks'>{{endif}}
{{if $row->mapped('last_comment')}}{datetime="$row->mapped('last_comment')"}{{else}}{datetime="$row->mapped('date')"}{{endif}}
{{if ! \IPS\Output::i()->reduceLinks()}}</a>{{endif}}
</li>
</ul>
{{if $table->canModerate()}}
<div class='ipsDataItem_modCheck'>
<span class='ipsCustomInput'>
<input type='checkbox' data-role='moderation' name="moderate[{$row->$idField}]" data-actions="{expression="implode( ' ', $table->multimodActions( $row ) )"}" data-state='{{if $row->tableStates()}}{$row->tableStates()}{{endif}}'>
<span></span>
</span>
</div>
{{endif}}
</li>
{{endif}}
{{endforeach}}
{{endif}}]]></template>
<template template_group="forums" template_name="topicRowSnippet" template_data="$table, $headers, $rows" template_location="front" template_app="forums"><![CDATA[{{$rowIds = array();}}
{{foreach $rows as $row}}
{{$idField = $row::$databaseColumnId;}}
{{$rowIds[] = $row->$idField;}}
{{endforeach}}
{{if \count( $rows )}}
{{$rowCount=0;}}
{{foreach $rows as $row}}
{{if $rowCount == 1 AND $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_forum_listing' )}}
<li class="ipsDataItem">
{$advertisement|raw}
</li>
{{endif}}
{{$rowCount++;}}
{{$idField = $row::$databaseColumnId;}}
{{if $row->mapped('moved_to')}}
{{if $movedTo = $row->movedTo() AND $movedTo->container()->can('view')}}
<li class="ipsDataItem ipsTopicSnippet">
<div class='ipsFlex ipsFlex-ai:center'>
<div class='ipsTopicSnippet__avatar ipsFlex-flex:00'>
<i class="fa fa-arrow-left ipsType_large"></i>
</div>
<div class='ipsFlex-flex:11'>
<h4 class='ipsDataItem_title'>
<span>
<em><a href='{$movedTo->url()}' title='{lang="go_to_new_location"}'>{$row->mapped('title')}</a></em>
</span>
</h4>
<div class='ipsDataItem_meta'>
{{if isset( $row::$databaseColumnMap['status'] )}}
{{$statusField = $row::$databaseColumnMap['status'];}}
{{if $row->$statusField == 'merged'}}
<p class='ipsType_reset ipsType_light ipsType_blendLinks'>{lang="topic_merged_to" sprintf="$movedTo->url( 'getPrefComment' ), $movedTo->mapped('title')"}</p>
{{else}}
<p class='ipsType_reset ipsType_light ipsType_blendLinks'>{lang="topic_moved_to" sprintf="$movedTo->container()->url(), $movedTo->container()->_title"}</p>
{{endif}}
{{else}}
<p class='ipsType_reset ipsType_light ipsType_blendLinks'>{lang="topic_moved_to" sprintf="$movedTo->container()->url(), $movedTo->container()->_title"}</p>
{{endif}}
</div>
</div>
{{if $table->canModerate()}}
<div class='ipsFlex-as:center'>
<span class='ipsCustomInput'>
<input type='checkbox' data-role='moderation' name="moderate[{$row->$idField}]" data-actions="{{if $row->mapped('featured')}}unfeature{{endif}} {{if $row->mapped('pinned')}}unpin{{endif}} delete" data-state='{{if $row->mapped('pinned')}}pinned{{endif}} {{if $row->mapped('featured')}}featured{{endif}}'>
<span></span>
</span>
</div>
{{endif}}
</div>
</li>
{{endif}}
{{else}}
<li class="ipsDataItem ipsTopicSnippet {{if $row->groupsPosted}}ipsDataItem_highlighted{{endif}} {{if $row->unread()}}ipsDataItem_unread{{else}}ipsDataItem_read{{endif}} {{if method_exists( $row, 'tableClass' ) && $row->tableClass()}}ipsDataItem_{$row->tableClass()}{{endif}} {{if $row->hidden() or $row->isFutureDate()}}ipsModerated{{endif}}{{if $row->isFutureDate()}} ipsModerated_alternate{{endif}}" data-rowID='{$row->$idField}' {{if isset($row->locationHash)}}data-location='{$row->locationHash}'{{endif}}'>
<div class='ipsTopicSnippet__top ipsFlex ipsFlex-ai:start'>
<!-- Topic starter avatar -->
<div class='ipsTopicSnippet__avatar ipsFlex-flex:00'>
{template="userPhoto" app="core" group="global" params="$row->author(), 'small'"}
</div>
<div class='ipsTopicSnippet__top-align ipsFlex-flex:11 ipsFlex ipsFlex-ai:start ipsFlex-jc:between'>
<div class='ipsTopicSnippet__top-main ipsFlex-flex:11 ipsFlex ipsFlex-ai:start ipsFlex-jc:between sm:ipsFlex-fd:column'>
<div class='ipsTopicSnippet__title ipsFlex-flex:11'>
<h4 class='ipsDataItem_title'>
{{if $row->isFutureDate()}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{$row->futureDateBlurb()}'><i class='fa fa-clock-o'></i></span></span>
{{endif}}
{{if $row->locked()}}
<span>
<i class='ipsType_medium fa fa-lock' data-ipsTooltip title='{lang="topic_locked"}'></i>
</span>
{{endif}}
{{if $row->isSolved()}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="this_is_solved"}'><i class='fa fa-check'></i></span></span>
{{endif}}
{{if $row->hidden() === -1}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{$row->hiddenBlurb()}'><i class='fa fa-eye-slash'></i></span></span>
{{elseif $row->hidden() === 1}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{lang="pending_approval"}'><i class='fa fa-warning'></i></span></span>
{{elseif $row->canToggleItemModeration() and $row->itemModerationEnabled()}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{lang="topic_moderation_enabled"}'><i class='fa fa-user-times'></i></span></span>
{{endif}}
{{if $row->mapped('pinned')}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="pinned"}'><i class='fa fa-thumb-tack'></i></span></span>
{{endif}}
{{if $row->mapped('featured')}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="featured"}'><i class='fa fa-star'></i></span></span>
{{endif}}
{{if $row->mapped('poll')}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_neutral" data-ipsTooltip title='{lang="topic_has_poll"}'><i class='fa fa-question'></i></span></span>
{{endif}}
<!-- Prefix -->
{{if $row->prefix()}}
<span>{template="prefix" group="global" app="core" params="$row->prefix( TRUE ), $row->prefix()"}</span>
{{endif}}
<!-- Topic title -->
<span class='ipsType_break'>
<!-- Unread/participated icon -->
{{if member.member_id}}
<span>
{{if $row->unread()}}
<a href="{$row->url( 'getNewComment' )}" title='{lang="first_unread_post"}' data-ipsTooltip>
<span class='ipsItemStatus'><i class="fa {{if \in_array( $row->$idField, $table->contentPostedIn )}}fa-star{{else}}fa-circle{{endif}}"></i></span>
</a>
{{else}}
{{if \in_array( $row->$idField, $table->contentPostedIn )}}
<span class='ipsItemStatus ipsItemStatus_read ipsItemStatus_posted'><i class="fa fa-star"></i></span>
{{endif}}
{{endif}}
</span>
{{endif}}
<a href='{$row->url( "getPrefComment" )}' class='' title='{{if $row->mapped('title')}}{$row->mapped('title')}{{else}}{lang="content_deleted"}{{endif}} {{if $row->canEdit()}}{lang="click_hold_edit"}{{endif}}' {{if $row->tableHoverUrl and $row->canView()}} data-ipsHover data-ipsHover-target='{$row->url()->setQueryString('preview', 1)}' data-ipsHover-timeout='1.5'{{endif}}{{if $row->canEdit()}} data-role="editableTitle"{{endif}}>
<span>
{{if $row->mapped('title') or $row->mapped('title') == 0}}{$row->mapped('title')}{{else}}<em class="ipsType_light">{lang="content_deleted"}</em>{{endif}}
</span>
</a>
</span>
{{if $row->commentPageCount() > 1}}
{$row->commentPagination( array(), 'miniPagination' )|raw}
{{endif}}
</h4>
<!-- Author -->
<div class='ipsTopicSnippet__date ipsType_light ipsType_blendLinks'>{datetime="$row->mapped('date')" lowercase="true"} {lang="search_byline" htmlsprintf="$row->author()->link( NULL, NULL, $row->isAnonymous() )"} {{if !\in_array( \IPS\Dispatcher::i()->controller, array( 'forums', 'index' ) )}} {lang="in"} <a href="{$row->container()->url()}">{$row->container()->_title}</a>{{endif}}</div>
</div>
<div class='ipsTopicSnippet__stats-align ipsFlex-flex:00 ipsFlex ipsFlex-ai:center'>
<ul class='ipsTopicSnippet__stats ipsFlex ipsFlex-ai:center ipsFlex-fw:wrap ipsList_reset'>
{{if $row->groupsPosted}}
<li>
{template="groupPostedBadges" group="global" app="core" location="front" params="$row->groupsPosted, 'topic_posted_in_groups'"}
</li>
{{endif}}
{{if $row->followerCount}}
<li class='ipsType_light'>
<span class='ipsDataItem_stats_type'>
<a href='{url="app=core&module=system&controller=notifications&do=followers&follow_app=forums&follow_area=topic&follow_id={$row->tid}"}' rel="nofollow" title='{lang="followers_tooltip"}' class='ipsType_blendLinks ipsType_noUnderline' data-ipsTooltip data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title='{lang="who_follows_this"}'>{lang="topic_follower_count" pluralize="$row->followerCount"}</a>
</span>
</li>
{{endif}}
{{foreach $row->stats(FALSE) as $k => $v}}
<li {{if $k == 'num_views'}}class='ipsType_light'{{endif}} data-statType="{$k}">
{{if \in_array( $k, $row->hotStats )}}<span class="ipsDataItem_stats_hot" data-text='{lang="hot_item"}' data-ipsTooltip title='{lang="hot_item_desc"}'>{{endif}}
<span class='ipsDataItem_stats_number'>{number="$v" format="short"}</span>
<span class='ipsDataItem_stats_type'>{lang="{$k}" pluralize="$v" format="short"}</span>
{{if \in_array( $k, $row->hotStats )}}</span>{{endif}}
{{if ( $k == 'forums_comments' OR $k == 'answers_no_number' ) && \IPS\forums\Topic::modPermission( 'unhide', NULL, $row->container() ) AND $unapprovedComments = $row->mapped('unapproved_comments')}}
</li>
<li>
<a href='{$row->url()->setQueryString( 'queued_posts', 1 )}' class='ipsType_warning ipsType_small ipsPos_right ipsResponsive_noFloat' data-ipsTooltip title='{lang="queued_posts_badge" pluralize="$row->topic_queuedposts"}'><i class='fa fa-warning'></i> <strong>{$unapprovedComments}</strong></a>
{{endif}}
</li>
{{endforeach}}
</ul>
</div>
</div>
{{if $table->canModerate()}}
<div class='ipsTopicSnippet__mod'>
<span class='ipsCustomInput'>
<input type='checkbox' data-role='moderation' name="moderate[{$row->$idField}]" data-actions="{expression="implode( ' ', $table->multimodActions( $row ) )"}" data-state='{{if $row->tableStates()}}{$row->tableStates()}{{endif}}'>
<span></span>
</span>
</div>
{{endif}}
</div>
</div>
<!-- Topic snippet -->
{{if isset($row->firstComment)}}
<div class='ipsTopicSnippet__snippet ipsType_normal ipsType_blendLinks ipsType_break'>
<p>{$row->firstComment->snippet(680)}</p>
</div>
{{endif}}
<!-- Bottom -->
<div class='ipsTopicSnippet__bottom ipsFlex ipsFlex-jc:between ipsFlex-ai:start '>
<!-- Last reply author -->
<div class='ipsTopicSnippet__last ipsFlex ipsFlex-ai:center'>
<!-- Avatar -->
<span class='ipsTopicSnippet__last-avatar'>{template="userPhoto" app="core" group="global" params="$row->lastCommenter(), 'tiny'"}</span>
<!-- Username and date -->
<div class='ipsTopicSnippet__last-text ipsType_light ipsType_blendLinks'>
{lang="topic_snippet_last_reply" htmlsprintf="$row->lastCommenter()->link(), $row->url( 'getLastComment' ), \IPS\DateTime::ts( $row->mapped('last_comment') )->html()"}
</div>
</div>
<div class='ipsTopicSnippet__meta ipsFlex ipsFlex-ai:center ipsFlex-fw:wrap'>
{{if $row->locked()}}
{{if $row->topic_open_time && $row->topic_open_time > time()}}
<span><strong class='ipsType_small ipsType_noBreak' data-ipsTooltip title='{lang="topic_unlocks_at" sprintf="\IPS\DateTime::ts( $row->topic_open_time )->relative(), \IPS\DateTime::ts( $row->topic_open_time )->localeTime( FALSE )"}'>{lang="topic_unlocks_at_short" sprintf="\IPS\DateTime::ts($row->topic_open_time)->relative(1)"}</strong>&nbsp;&nbsp;</span>
{{endif}}
{{elseif !$row->locked() && $row->topic_close_time && $row->topic_close_time > time()}}
<span><strong class='ipsType_small ipsType_noBreak' data-ipsTooltip title='{lang="topic_locks_at" sprintf="\IPS\DateTime::ts( $row->topic_close_time )->relative(), \IPS\DateTime::ts( $row->topic_close_time )->localeTime( FALSE )"}'><i class='fa fa-clock-o'></i> {lang="topic_locks_at_short" sprintf="\IPS\DateTime::ts($row->topic_close_time)->relative(1)"}</strong>&nbsp;&nbsp;</span>
{{endif}}
{{if \count( $row->tags() )}}
<div class='ipsTopicSnippet-meta__tags'>
{template="tags" group="global" app="core" params="$row->tags(), true"}
</div>
{{endif}}
<!-- Reactions -->
<div class='ipsTopicSnippet__reactions'>
{template="reactionOverview" group="global" app="core" params="$row, NULL, NULL"}
</div>
</div>
</div>
</li>
{{endif}}
{{endforeach}}
{{endif}}]]></template>
<template template_group="global" template_name="commentTableHeader" template_data="$comment, $topic" template_location="front" template_app="forums"><![CDATA[{{$idField = $topic::$databaseColumnId;}}
{{$iposted = $topic->container()->contentPostedIn( NULL, [ $topic->$idField ] );}}
<div class='sm:ipsMargin_top:double'>
<h3 class='ipsType_sectionHead ipsType_break'>
{{if $topic->unread()}}
<a href='{$topic->url( 'getNewComment' )}' title='{lang="first_unread_post"}' data-ipsTooltip>
<span class='ipsItemStatus'><i class="fa {{if \in_array( $topic->$idField, $iposted )}}fa-star{{else}}fa-circle{{endif}}"></i></span>
</a>
{{else}}
{{if \in_array( $topic->$idField, $iposted )}}
<span><span class='ipsItemStatus ipsItemStatus_read ipsItemStatus_posted'><i class="fa fa-star"></i></span></span>
{{endif}}
{{endif}}
<a href='{$comment->url()}' title='{lang="view_this_topic" sprintf="$topic->title"}'>{$topic->title}</a>
{{if $topic->container()->allow_rating}}
{template="rating" group="global" location="front" app="core" params="'large', $topic->rating_hits ? ( $topic->rating_total / $topic->rating_hits ) : 0"}
{{endif}}
</h3>
<p class='ipsType_normal ipsType_light ipsType_blendLinks ipsType_reset'>{lang="in"} <a href='{$topic->container()->url()}'>{$topic->container()->_title}</a></p>
</div>]]></template>
<template template_group="global" template_name="embedPost" template_data="$comment, $item, $url" template_location="front" template_app="forums"><![CDATA[
<div data-embedInfo-maxSize='{{if settings.max_internalembed_width}}{setting="max_internalembed_width"}{{else}}100%{{endif}}' class='ipsRichEmbed'>
{template="embedHeader" group="embed" app="core" params="$comment, $item->mapped('title'), $comment->mapped('date'), $url"}
<div class='ipsPadding'>
<div class='ipsRichEmbed_originalItem ipsAreaBackground_reset ipsPad ipsSpacer_bottom ipsType_blendLinks'>
<div>
{template="embedOriginalItem" group="embed" app="core" params="$item, TRUE"}
</div>
</div>
<div class='ipsType_richText ipsType_medium' data-truncate='3'>
{$comment->truncated(TRUE)|raw}
</div>
{{if settings.reputation_enabled and \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and \count( $comment->reactions() )}}
<ul class='ipsList_inline ipsSpacer_top ipsSpacer_half'>
<li>
{template="reactionOverview" app="core" group="global" params="$comment, TRUE, 'small'"}
</li>
</ul>
{{endif}}
</div>
</div>]]></template>
<template template_group="global" template_name="embedTopic" template_data="$item, $url" template_location="front" template_app="forums"><![CDATA[<div data-embedInfo-maxSize='{{if settings.max_internalembed_width}}{setting="max_internalembed_width"}{{else}}100%{{endif}}' class='ipsRichEmbed'>
{template="embedHeader" group="embed" app="core" params="$item, $item->mapped('title'), $item->mapped('date'), $url"}
{{if $contentImage = $item->contentImages(1)}}
{{$attachType = key( $contentImage[0] );}}
{{$firstPhoto = \IPS\File::get( $attachType, $contentImage[0][ $attachType ] );}}
<div class='ipsRichEmbed_masthead ipsRichEmbed_mastheadBg ipsType_center'>
<a href='{$url}' style='background-image: url( "{expression="str_replace( array( '(', ')' ), array( '\(', '\)' ), $firstPhoto->url )"}" )'>
<img src='{$firstPhoto->url}' class='ipsHide' alt=''>
</a>
</div>
{{endif}}
<div class='ipsPadding'>
<div class='ipsType_richText ipsType_medium' data-truncate='3'>
{$item->truncated(TRUE)|raw}
</div>
{template="embedItemStats" group="embed" app="core" params="$item"}
</div>
</div>]]></template>
<template template_group="global" template_name="manageFollowNodeRow" template_data="$table, $headers, $rows" template_location="front" template_app="forums"><![CDATA[{{foreach $rows as $row}}
{{$contentItemClass = $row::$contentItemClass;}}
<li class="ipsDataItem {{if method_exists( $row, 'tableClass' ) && $row->tableClass()}}ipsDataItem_{$row->tableClass()}{{endif}}" data-controller='core.front.system.manageFollowed' data-followID='{$row->_followData['follow_area']}-{$row->_followData['follow_rel_id']}'>
<div class='ipsDataItem_main'>
<h4 class='ipsDataItem_title'>
{{if $row->_locked}}
<i class="fa fa-lock"></i>
{{endif}}
<a href='{$row->url()}'>
{$row->_title}
</a>
</h4>
<ul class='ipsList_inline ipsType_light'>
{{if $row->memberCanAccessOthersTopics( \IPS\Member::loggedIn() ) }}
{{$count = \IPS\forums\Topic::contentCount( $row, FALSE, TRUE );}}
<li>{lang="posts_number" pluralize="$count"}</li>
{{endif}}
</ul>
</div>
<div class='ipsDataItem_generic ipsDataItem_size1 ipsType_center ipsType_large'>
<span class='ipsBadge ipsBadge_icon ipsBadge_new {{if !$row->_followData['follow_is_anon']}}ipsHide{{endif}}' data-role='followAnonymous' data-ipsTooltip title='{lang="follow_is_anon"}'><i class='fa fa-eye-slash'></i></span>
</div>
<div class='ipsDataItem_generic ipsDataItem_size6'>
<ul class='ipsList_reset'>
<li title='{lang="follow_when"}' data-role='followDate'><i class='fa fa-clock-o'></i> {datetime="$row->_followData['follow_added']"}</li>
<li title='{lang="follow_how"}' data-role='followFrequency'>
{{if $row->_followData['follow_notify_freq'] == 'none'}}
<i class='fa fa-bell-slash-o'></i>
{{else}}
<i class='fa fa-bell'></i>
{{endif}} {lang="follow_freq_{$row->_followData['follow_notify_freq']}"}
</li>
</ul>
</div>
<div class='ipsDataItem_generic ipsDataItem_size6 ipsType_center'>
{template="manageFollow" group="system" app="core" params="$row->_followData['follow_app'], $row->_followData['follow_area'], $row->_followData['follow_rel_id']"}
</div>
{{if $table->canModerate()}}
<div class='ipsDataItem_modCheck'>
<span class='ipsCustomInput'>
<input type='checkbox' data-role='moderation' name="moderate[{$row->_id}]" data-actions="{expression="implode( ' ', $table->multimodActions( $row ) )"}" data-state=''>
<span></span>
</span>
</div>
{{endif}}
</li>
{{endforeach}}]]></template>
<template template_group="global" template_name="row" template_data="$table, $headers, $topic, $showReadMarkers=TRUE" template_location="front" template_app="forums"><![CDATA[{{$idField = $topic::$databaseColumnId;}}
{{$iPosted = isset( $table->contentPostedIn ) ? $table->contentPostedIn : ( ( $table AND method_exists( $table, 'container' ) AND $topic->container() !== NULL ) ? $topic->container()->contentPostedIn() : array() );}}
<li class="ipsDataItem ipsDataItem_responsivePhoto {{if $showReadMarkers and $topic->unread()}}ipsDataItem_unread{{endif}} {{if method_exists( $topic, 'tableClass' ) && $topic->tableClass()}}ipsDataItem_{$topic->tableClass()}{{endif}} {{if $topic->hidden()}}ipsModerated{{endif}}">
{{if $showReadMarkers}}
{{if $topic->unread()}}
<div class='ipsDataItem_icon ipsPos_top'>
<a href='{$topic->url( 'getNewComment' )}' title='{lang="first_unread_post"}' data-ipsTooltip>
<span class='ipsItemStatus'><i class="fa {{if \in_array( $topic->$idField, $iPosted )}}fa-star{{else}}fa-circle{{endif}}"></i></span>
</a>
</div>
{{else}}
{{if \in_array( $topic->$idField, $iPosted )}}
<div class='ipsDataItem_icon ipsPos_top'>
<span class='ipsItemStatus ipsItemStatus_read ipsItemStatus_posted'><i class="fa fa-star"></i></span>
</div>
{{else}}
<div class='ipsDataItem_icon ipsPos_top'>&nbsp;</div>
{{endif}}
{{endif}}
{{endif}}
<div class='ipsDataItem_main'>
<h4 class='ipsDataItem_title ipsContained_container'>
{{if $topic->mapped('pinned') || $topic->mapped('featured') || $topic->hidden() === -1 || $topic->hidden() === 1 || $topic->isSolved()}}
{{if $topic->hidden() === -1}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{$topic->hiddenBlurb()}'><i class='fa fa-eye-slash'></i></span></span>
{{elseif $topic->hidden() === 1}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{lang="pending_approval"}'><i class='fa fa-warning'></i></span></span>
{{endif}}
{{if $topic->mapped('pinned')}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="pinned"}'><i class='fa fa-thumb-tack'></i></span></span>
{{endif}}
{{if $topic->mapped('featured')}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="featured"}'><i class='fa fa-star'></i></span></span>
{{endif}}
{{if $topic->isSolved()}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="this_is_solved"}'><i class='fa fa-check'></i></span></span>
{{endif}}
{{endif}}
{{if $topic->prefix()}}
<span>{template="prefix" group="global" app="core" params="$topic->prefix( TRUE ), $topic->prefix()"}</span>
{{endif}}
<span class='ipsType_break ipsContained'>
<a href='{$topic->url( "getPrefComment" )}' {{if $topic->tableHoverUrl AND $topic->canView()}}data-ipsHover data-ipsHover-target='{$topic->url()->setQueryString('preview', 1)}' data-ipsHover-timeout='1.5' {{endif}}>
{{if $topic->isQuestion()}}
<strong class='ipsType_light'>{lang="question_title"}:</strong>
{{endif}}
{$topic->mapped('title')}
</a>
</span>
{{if $topic->commentPageCount() > 1}}
{$topic->commentPagination( array(), 'miniPagination' )|raw}
{{endif}}
</h4>
<p class='ipsType_reset ipsType_medium ipsType_light'>
{lang="byline" htmlsprintf="$topic->author()->link( NULL, NULL, $topic->isAnonymous() )"} {datetime="$topic->mapped('date')"}
{{if \IPS\Request::i()->controller != 'forums'}}
{lang="in"} <a href="{$topic->container()->url()}">{$topic->container()->_title}</a>
{{endif}}
</p>
<ul class='ipsList_inline ipsClearfix ipsType_light'>
{{if $topic->isQuestion()}}
{{if $topic->topic_answered_pid}}
<li class='ipsType_success'><i class='fa fa-check-circle'></i> <strong>{lang="answered"}</strong></li>
{{else}}
<li class='ipsType_light'><i class='fa fa-question'></i> {lang="awaiting_answer"}</li>
{{endif}}
{{endif}}
</ul>
{{if \count( $topic->tags() )}}
&nbsp;&nbsp;
{template="tags" group="global" app="core" params="$topic->tags(), true, true"}
{{endif}}
</div>
<ul class='ipsDataItem_stats'>
{{if $topic->isQuestion()}}
<li>
<span class='ipsDataItem_stats_number'>{{if $topic->question_rating}}{$topic->question_rating}{{else}}0{{endif}}</span>
<span class='ipsDataItem_stats_type'>{lang="votes_no_number" pluralize="$topic->question_rating"}</span>
</li>
{{foreach $topic->stats(FALSE) as $k => $v}}
{{if $k == 'forums_comments' OR $k == 'answers_no_number'}}
<li>
<span class='ipsDataItem_stats_number'>{number="$v"}</span>
<span class='ipsDataItem_stats_type'>{lang="answers_no_number" pluralize="$v"}</span>
</li>
{{endif}}
{{endforeach}}
{{else}}
{{foreach $topic->stats(FALSE) as $k => $v}}
<li {{if \in_array( $k, $topic->hotStats )}}class="ipsDataItem_stats_hot" data-text='{lang="hot_item"}' data-ipsTooltip title='{lang="hot_item_desc"}'{{endif}}>
<span class='ipsDataItem_stats_number'>{number="$v"}</span>
<span class='ipsDataItem_stats_type'>{lang="{$k}" pluralize="$v"}</span>
</li>
{{endforeach}}
{{endif}}
</ul>
<ul class='ipsDataItem_lastPoster ipsDataItem_withPhoto'>
<li>
{{if $topic->mapped('num_comments')}}
{template="userPhoto" app="core" group="global" params="$topic->lastCommenter(), 'tiny'"}
{{else}}
{template="userPhoto" app="core" group="global" params="$topic->author(), 'tiny'"}
{{endif}}
</li>
<li>
{{if $topic->mapped('num_comments')}}
{$topic->lastCommenter()->link()|raw}
{{else}}
{$topic->author()->link( NULL, NULL, $topic->isAnonymous() )|raw}
{{endif}}
</li>
<li class="ipsType_light">
<a href='{$topic->url( 'getLastComment' )}' title='{lang="get_last_post"}' class='ipsType_blendLinks'>
{{if $topic->mapped('last_comment')}}{datetime="$topic->mapped('last_comment')"}{{else}}{datetime="$topic->mapped('date')"}{{endif}}
</a>
</li>
</ul>
{{if $table AND method_exists( $table, 'canModerate' ) AND $table->canModerate()}}
<div class='ipsDataItem_modCheck'>
<span class='ipsCustomInput'>
<input type='checkbox' data-role='moderation' name="moderate[{$topic->tid}]" data-actions="{expression="implode( ' ', $table->multimodActions( $topic ) )"}" data-state='{{if $topic->tableStates()}}{$topic->tableStates()}{{endif}}'>
<span></span>
</span>
</div>
{{endif}}
</li>]]></template>
<template template_group="global" template_name="rows" template_data="$table, $headers, $rows" template_location="front" template_app="forums">{{if \count( $rows )}}
{{foreach $rows as $row}}
{template=&quot;row&quot; group=&quot;global&quot; app=&quot;forums&quot; params=&quot;$table, $headers, $row&quot;}
{{endforeach}}
{{endif}}</template>
<template template_group="global" template_name="searchNoPermission" template_data="$lang, $link=NULL" template_location="front" template_app="forums"><![CDATA[<li class="ipsStreamItem ipsStreamItem_contentBlock ipsAreaBackground_reset ipsPad">
<div class='ipsType_center ipsType_light ipsType_large'>
{$lang}{{if $link}} <a href="{$link}">{lang="enter_password"}</a>{{endif}}
</div>
</li>
]]></template>
<template template_group="global" template_name="viewChange" template_data="$hideMobile=FALSE" template_location="front" template_app="forums"><![CDATA[{{if settings.forums_default_view_choose and member.member_id}}
{{$chooseable = json_decode( \IPS\Settings::i()->forums_default_view_choose, true );}}
{{$chosen = \IPS\forums\Forum::getMemberView();}}
<li>
<ul class='ipsButton_split'>
{{if $chooseable == '*' OR \in_array( 'table', $chooseable )}}
<li>
<a href="{url="app=forums&module=forums&controller=index&do=setMethod&method=table" seoTemplate="forums" csrf="true"}" class='ipsButton {{if $chosen == 'table'}}ipsButton_primary{{else}}ipsButton_veryLight{{endif}} ipsButton_narrow ipsButton_medium' data-ipsTooltip data-ipsTooltip-safe title="{lang="forums_default_view_table" escape="true"}" rel="nofollow">
<i class='fa fa-align-justify'></i>
</a>
</li>
{{endif}}
{{if $chooseable == '*' OR \in_array( 'grid', $chooseable )}}
<li>
<a href="{url="app=forums&module=forums&controller=index&do=setMethod&method=grid" seoTemplate="forums" csrf="true"}" class='ipsButton {{if $chosen == 'grid'}}ipsButton_primary{{else}}ipsButton_veryLight{{endif}} ipsButton_narrow ipsButton_medium' data-ipsTooltip data-ipsTooltip-safe title="{lang="forums_default_view_grid" escape="true"}" rel="nofollow">
<i class='fa fa-th-large'></i>
</a>
</li>
{{endif}}
{{if $chooseable == '*' OR \in_array( 'fluid', $chooseable )}}
<li>
<a href="{url="app=forums&module=forums&controller=index&do=setMethod&method=fluid" seoTemplate="forums" csrf="true"}" class='ipsButton {{if $chosen == 'fluid'}}ipsButton_primary{{else}}ipsButton_veryLight{{endif}} ipsButton_narrow ipsButton_medium' data-ipsTooltip data-ipsTooltip-safe title="{lang="forums_default_view_fluid" escape="true"}" rel="nofollow">
<i class='fa fa-th-list'></i>
</a>
</li>
{{endif}}
</ul>
</li>
{{endif}}]]></template>
<template template_group="global" template_name="viewChangeList" template_data="$forum, $hideMobile=FALSE" template_location="front" template_app="forums"><![CDATA[{{if settings.forums_view_list_choose and member.member_id}}
{{$chosen = \IPS\forums\Forum::getMemberListView();}}
<li>
<ul class='ipsButton_split'>
<li>
<a href="{$forum->url()->setQueryString( array( 'do' => 'setMethod', 'method' => 'list') )->csrf()}" class='ipsButton {{if $chosen == 'list'}}ipsButton_primary{{else}}ipsButton_veryLight{{endif}} ipsButton_narrow ipsButton_medium' data-ipsTooltip data-ipsTooltip-safe title='{lang="forums_topic_list_list"}' rel="nofollow">
<i class='fa fa-align-justify'></i>
</a>
</li>
<li>
<a href="{$forum->url()->setQueryString( array( 'do' => 'setMethod', 'method' => 'snippet') )->csrf()}" class='ipsButton {{if $chosen == 'snippet'}}ipsButton_primary{{else}}ipsButton_veryLight{{endif}} ipsButton_narrow ipsButton_medium' data-ipsTooltip data-ipsTooltip-safe title='{lang="forums_topic_list_snippet"}' rel="nofollow">
<i class='fa fa-th-list'></i>
</a>
</li>
</ul>
</li>
{{endif}}]]></template>
<template template_group="index" template_name="forumGridItem" template_data="$forum, $isSubForum=FALSE" template_location="front" template_app="forums"><![CDATA[{{if $forum->can('view')}}
{{$lastPost = $forum->lastPost();}}
{{$club = $forum->club();}}
<div class="ipsBox ipsBox--child cForumGrid {{if \IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}cForumGrid--unread ipsDataItem_unread{{endif}} {{if !\IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}cForumGrid--read{{endif}} {{if $forum->redirect_on}}cForumGrid--redirect{{elseif $forum->forums_bitoptions['bw_enable_answers']}}cForumGrid--answers{{elseif $forum->password}}cForumGrid--password{{else}}cForumGrid--forum{{endif}}" data-forumID="{$forum->_id}">
<div class='cForumGrid__hero'>
<a {{if $forum->password && !$forum->loggedInMemberHasPasswordAccess()}}href="{$forum->url()->setQueryString( 'passForm', '1' )}" data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title='{lang="forum_requires_password" sprintf="$forum->_title"}'{{else}}href="{$forum->url()}"{{endif}} class='cForumGrid__hero-link' aria-hidden='true'>
{{if $club and ! $forum->card_image}}
{{$coverPhoto = $club->coverPhoto( FALSE );}}
{{$cfObject = $coverPhoto->object;}}
{{if $coverPhoto->file}}
<span class='cForumGrid__hero-image' role='img' data-ipsLazyLoad data-background-src="{$coverPhoto->file->url}" aria-label='{$forum->_title}'></span>
{{elseif ! empty( $cfObject::$coverPhotoDefault )}}
<span class='cForumGrid__hero-image' role='img' data-ipsLazyLoad data-background-src="{resource="pattern.png" app="core" location="global"}" style="background-color: {$coverPhoto->object->coverPhotoBackgroundColor()};" aria-label='{$forum->_title}'></span>
{{endif}}
{{else}}
<span class='cForumGrid__hero-image' role='img' {{if $forum->card_image}}data-ipsLazyLoad data-background-src="{file="$forum->card_image" extension="forums_Cards"}"{{endif}} aria-label='{$forum->_title}'></span>
{{endif}}
</a>
</div>
<div class='ipsFlex-flex:11'>
<div class='cForumGrid__contentAlign'>
<div class="cForumGrid__icon ipsFlex-flex:00">
{{if !$forum->redirect_on}}
{{if \IPS\forums\Topic::containerUnread( $forum ) AND \IPS\Member::loggedIn()->member_id}}<a href="{{if $isSubForum}}{$forum->url()->setQueryString( array( 'do' => 'markRead', 'return' => $forum->parent_id ) )->csrf()}{{else}}{$forum->url()->setQueryString( 'do', 'markRead' )->csrf()}{{endif}}" data-action='markAsRead' title='{lang="mark_forum_read"}' data-ipsTooltip>{{endif}}
{{endif}}
{{if $club}}
<img src="{{if $club->profile_photo}}{file="$club->profile_photo" extension="core_Clubs"}{{else}}{resource="default_club.png" app="core" location="global"}{{endif}}" alt='' class='ipsItemStatus ipsItemStatus_large {{if !\IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsItemStatus_read{{endif}}'>
{{elseif $forum->icon}}
<img src="{file="$forum->icon" extension="forums_Icons"}" alt='' class='ipsItemStatus ipsItemStatus_custom {{if !\IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsItemStatus_read{{endif}}'>
{{else}}
{{if $forum->redirect_on}}
<span class='ipsItemStatus ipsItemStatus_large cForumIcon_redirect {{if !\IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsItemStatus_read{{endif}}' {template="formattedInlineStyle" params="$forum" app="core" group="global" location="front"}>
<i class='fa fa-arrow-right'></i>
</span>
{{elseif $forum->forums_bitoptions['bw_enable_answers']}}
<span class='ipsItemStatus ipsItemStatus_large cForumIcon_answers {{if !\IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsItemStatus_read{{endif}}' {template="formattedInlineStyle" params="$forum" app="core" group="global" location="front"}>
<i class='fa fa-question'></i>
</span>
{{elseif $forum->password}}
<span class='ipsItemStatus ipsItemStatus_large cForumIcon_password {{if !\IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsItemStatus_read{{endif}}' {template="formattedInlineStyle" params="$forum" app="core" group="global" location="front"}>
{{if $forum->loggedInMemberHasPasswordAccess()}}
<i class='fa fa-unlock'></i>
{{else}}
<i class='fa fa-lock'></i>
{{endif}}
</span>
{{else}}
<span class='ipsItemStatus ipsItemStatus_large cForumIcon_normal {{if !\IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsItemStatus_read{{endif}}' {template="formattedInlineStyle" params="$forum" app="core" group="global" location="front"}>
<i class="fa fa-comments"></i>
</span>
{{endif}}
{{endif}}
{{if !$forum->redirect_on and \IPS\forums\Topic::containerUnread( $forum ) AND \IPS\Member::loggedIn()->member_id}}
</a>
{{endif}}
</div>
<div class='cForumGrid__content'>
<div class='ipsFlex ipsFlex-ai:center ipsFlex-fw:wrap ipsFlex-jc:between'>
<h3 class='cForumGrid__title ipsType_reset'>
{{if $forum->password && !$forum->loggedInMemberHasPasswordAccess()}}
<a href="{$forum->url()->setQueryString( 'passForm', '1' )}" data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title='{lang="forum_requires_password" sprintf="$forum->_title"}'>{$forum->_title}</a>
{{else}}
<a href="{$forum->url()}">{{if $club}}{lang="club_node" sprintf="$club->name, $forum->_title"}{{else}}{$forum->_title}{{endif}}</a>
{{endif}}
</h3>
{{if !$forum->redirect_on}}
<ul class='cForumGrid__title-stats ipsList_reset ipsType_light'>
{{$count = \IPS\forums\Topic::contentCount( $forum, FALSE, TRUE );}}
{{if $count > 0}}<li>{lang="posts_number" pluralize="$count" format="short"}</li>{{endif}}
{{if $forum->followerCount}}
<li data-el='grid-follower-count'>
<a href='{url="app=core&module=system&controller=notifications&do=followers&follow_app=forums&follow_area=forum&follow_id={$forum->_id}"}' title='{lang="followers_tooltip"}' class='ipsType_blendLinks ipsType_noUnderline' data-ipsTooltip data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title='{lang="who_follows_this"}'>{lang="forum_follower_count" pluralize="$forum->followerCount"}</a>
</li>
{{endif}}
</ul>
{{endif}}
</div>
{{if $forum->description OR $forum->hasChildren() OR (\IPS\forums\Topic::modPermission( 'unhide', NULL, $forum ) AND ( $forum->queued_topics OR $forum->queued_posts ))}}
<div class='cForumGrid__description ipsFlex-flex:11'>
{{if $forum->description}}
{template="richText" group="global" app="core" location="global" params="$forum->description, array('ipsType_medium')"}
{{endif}}
{{if \IPS\forums\Topic::modPermission( 'unhide', NULL, $forum ) AND ( $forum->queued_topics OR $forum->queued_posts )}}
<strong class='ipsType_warning ipsType_medium'>
<i class='fa fa-warning'></i>
{{if $forum->queued_topics}}
<a href='{$forum->url()->setQueryString( array( 'filter' => 'queued_topics' ) )}' data-ipsTooltip title='{lang="queued_topics_badge" pluralize="$forum->queued_topics"}' class='ipsType_blendLinks'>{$forum->queued_topics}</a>
{{else}}
<span class='ipsType_light'>0</span>
{{endif}}
/
{{if $forum->queued_posts}}
<a href='{$forum->url()->setQueryString( array( 'filter' => 'queued_posts' ) )}' data-ipsTooltip title='{lang="queued_posts_badge" pluralize="$forum->queued_posts"}' class='ipsType_blendLinks'>{$forum->queued_posts}</a>
{{else}}
<span class='ipsType_light'>0</span>
{{endif}}
</strong>
{{endif}}
{{if $forum->hasChildren()}}
<div class='ipsMargin_top:half'>
<ul class="cForumGrid__subforums">
{{foreach $forum->children() as $subforum}}
<li class="{{if \IPS\forums\Topic::containerUnread( $subforum )}}cForumGrid__unread-subforum{{endif}} ">
<a href="{$subforum->url()}">{$subforum->_title}</a>
</li>
{{endforeach}}
</ul>
</div>
{{endif}}
</div>
{{endif}}
</div>
</div>
</div>
<div class='cForumGrid__last'>
{{if !$forum->redirect_on}}
{{if $lastPost}}
<div class='ipsPhotoPanel ipsPhotoPanel_tiny'>
{template="userPhoto" app="core" group="global" params="$lastPost['author'], 'tiny'"}
<div>
<ul class='ipsList_reset'>
<li class='ipsDataItem_lastPoster__title'><a href="{{if member.member_id}}{$lastPost['topic_url']->setQueryString( 'do', 'getNewComment' )}{{else}}{$lastPost['topic_url']}{{endif}}" class='ipsType_break' title='{$lastPost['topic_title']}'>{$lastPost['topic_title']}</a></li>
{{if member.member_id}}
{{$lastPostURL = $lastPost['topic_url']->setQueryString( 'do', 'getLastComment' );}}
{{else}}
{{$lastPostURL = $lastPost['topic_url']; }}
{{endif}}
<li class='ipsType_light ipsTruncate ipsTruncate_line'>{lang="topic_snippet_last_reply" htmlsprintf="$lastPost['author']->link(), $lastPostURL, \IPS\DateTime::ts( $lastPost['date'] )->html()"}</li>
</ul>
</div>
</div>
{{else}}
<p class='ipsType_light ipsType_reset ipsTruncate ipsTruncate_line'>{{if $forum->password}}{lang="no_forum_posts_password"}{{else}}{lang="no_forum_posts"}{{endif}}</p>
{{endif}}
{{else}}
<p class='ipsType_light ipsType_reset ipsTruncate ipsTruncate_line'>
{lang="redirect_hits" pluralize="$forum->redirect_hits"}
</p>
{{endif}}
</div>
</div>
{{endif}}]]></template>
<template template_group="index" template_name="forumRow" template_data="$forum, $isSubForum=FALSE, $table=NULL" template_location="front" template_app="forums"><![CDATA[{{if $forum->can('view')}}
{{$lastPost = $forum->lastPost();}}
{{$club = $forum->club();}}
<li class="cForumRow ipsDataItem ipsDataItem_responsivePhoto {{if \IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsDataItem_unread{{endif}} ipsClearfix" data-forumID="{$forum->_id}">
<div class="ipsDataItem_icon ipsDataItem_category">
{{if !$forum->redirect_on}}
{{if \IPS\forums\Topic::containerUnread( $forum ) AND \IPS\Member::loggedIn()->member_id}}<a href="{{if $isSubForum}}{$forum->url()->setQueryString( array( 'do' => 'markRead', 'return' => $forum->parent_id ) )->csrf()}{{else}}{$forum->url()->setQueryString( 'do', 'markRead' )->csrf()}{{endif}}" data-action='markAsRead' title='{lang="mark_forum_read"}' data-ipsTooltip>{{endif}}
{{endif}}
{{if $club}}
<img src="{{if $club->profile_photo}}{file="$club->profile_photo" extension="core_Clubs"}{{else}}{resource="default_club.png" app="core" location="global"}{{endif}}" alt='' class='ipsItemStatus ipsItemStatus_large {{if !\IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsItemStatus_read{{endif}}'>
{{elseif $forum->icon}}
<img src="{file="$forum->icon" extension="forums_Icons"}" alt='' class='ipsItemStatus ipsItemStatus_custom {{if !\IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsItemStatus_read{{endif}}'>
{{else}}
{{if $forum->redirect_on}}
<span class='ipsItemStatus ipsItemStatus_large cForumIcon_redirect {{if !\IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsItemStatus_read{{endif}}' {template="formattedInlineStyle" params="$forum" app="core" group="global" location="front"}>
<i class='fa fa-arrow-right'></i>
</span>
{{elseif $forum->forums_bitoptions['bw_enable_answers']}}
<span class='ipsItemStatus ipsItemStatus_large cForumIcon_answers {{if !\IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsItemStatus_read{{endif}}' {template="formattedInlineStyle" params="$forum" app="core" group="global" location="front"}>
<i class='fa fa-question'></i>
</span>
{{elseif $forum->password}}
<span class='ipsItemStatus ipsItemStatus_large cForumIcon_password {{if !\IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsItemStatus_read{{endif}}' {template="formattedInlineStyle" params="$forum" app="core" group="global" location="front"}>
{{if $forum->loggedInMemberHasPasswordAccess()}}
<i class='fa fa-unlock'></i>
{{else}}
<i class='fa fa-lock'></i>
{{endif}}
</span>
{{else}}
<span class='ipsItemStatus ipsItemStatus_large cForumIcon_normal {{if !\IPS\forums\Topic::containerUnread( $forum ) && !$forum->redirect_on}}ipsItemStatus_read{{endif}}' {template="formattedInlineStyle" params="$forum" app="core" group="global" location="front"}>
<i class="fa fa-comments"></i>
</span>
{{endif}}
{{endif}}
{{if !$forum->redirect_on and \IPS\forums\Topic::containerUnread( $forum ) AND \IPS\Member::loggedIn()->member_id}}
</a>
{{endif}}
</div>
<div class="ipsDataItem_main">
<h4 class="ipsDataItem_title ipsType_break">
{{if $forum->password && !$forum->loggedInMemberHasPasswordAccess()}}
<a href="{$forum->url()->setQueryString( 'passForm', '1' )}" data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title='{lang="forum_requires_password" sprintf="$forum->_title"}'>{$forum->_title}</a>
{{else}}
<a href="{$forum->url()}">{{if $club}}{lang="club_node" sprintf="$club->name, $forum->_title"}{{else}}{$forum->_title}{{endif}}</a>
{{endif}}
{{if $forum->redirect_on}}
&nbsp;&nbsp;<span class='ipsType_light ipsType_medium'>({lang="redirect_hits" pluralize="$forum->redirect_hits"})</span>
{{endif}}
</h4>
{{if $forum->hasChildren()}}
<ul class="ipsDataItem_subList ipsList_inline">
{{foreach $forum->children() as $subforum}}
<li class="{{if \IPS\forums\Topic::containerUnread( $subforum )}}ipsDataItem_unread{{endif}}">
<a href="{$subforum->url()}">{{if \IPS\forums\Topic::containerUnread( $subforum )}}<span class='ipsItemStatus ipsItemStatus_tiny {{if !\IPS\forums\Topic::containerUnread( $subforum ) && !$subforum->redirect_on}}ipsItemStatus_read{{endif}}'><i class="fa fa-circle"></i></span>&nbsp;{{endif}}{$subforum->_title}</a>
</li>
{{endforeach}}
</ul>
{{endif}}
{{if $forum->description}}
{template="richText" group="global" app="core" location="global" params="$forum->description, array('ipsDataItem_meta', 'ipsContained')"}
{{endif}}
</div>
{{if !$forum->redirect_on}}
<div class="ipsDataItem_stats ipsDataItem_statsLarge">
{{if $lastPost AND ( $forum->can_view_others OR \IPS\Member::loggedIn()->modPermission('can_read_all_topics') OR ( \is_array( \IPS\Member::loggedIn()->modPermission('forums') ) AND \in_array( $forum->_id, \IPS\Member::loggedIn()->modPermission('forums') ) ))}}
<dl>
{{$count = \IPS\forums\Topic::contentCount( $forum, FALSE, TRUE );}}
<dt class="ipsDataItem_stats_number">{number="$count" format="short"}</dt>
<dd class="ipsDataItem_stats_type ipsType_light">{lang="posts_no_number" pluralize="$count" format="short"}</dd>
</dl>
{{endif}}
{{if \IPS\forums\Topic::modPermission( 'unhide', NULL, $forum ) AND $unapprovedContent = $forum->unapprovedContentRecursive() and ( $unapprovedContent['topics'] OR $unapprovedContent['posts'] )}}
<strong class='ipsType_warning ipsType_medium'>
<i class='fa fa-warning'></i>
{{if $unapprovedContent['topics']}}
<a href='{$forum->url()->setQueryString( array( 'filter' => 'queued_topics' ) )}' data-ipsTooltip title='{lang="queued_topics_badge" pluralize="$unapprovedContent['topics']"}' class='ipsType_blendLinks'>{$unapprovedContent['topics']}</a>
{{else}}
<span class='ipsType_light'>0</span>
{{endif}}
/
{{if $unapprovedContent['posts']}}
<a href='{$forum->url()->setQueryString( array( 'filter' => 'queued_posts' ) )}' data-ipsTooltip title='{lang="queued_posts_badge" pluralize="$unapprovedContent['posts']"}' class='ipsType_blendLinks'>{$unapprovedContent['posts']}</a>
{{else}}
<span class='ipsType_light'>0</span>
{{endif}}
</strong>
{{endif}}
</div>
<ul class="ipsDataItem_lastPoster ipsDataItem_withPhoto">
{{if $lastPost}}
<li>{template="userPhoto" app="core" group="global" params="$lastPost['author'], 'tiny'"}</li>
{{if $lastPost['topic_title']}}<li class='ipsDataItem_lastPoster__title'><a href="{{if member.member_id}}{$lastPost['topic_url']->setQueryString( 'do', 'getNewComment' )}{{else}}{$lastPost['topic_url']}{{endif}}" title='{$lastPost['topic_title']}'>{$lastPost['topic_title']}</a></li>{{endif}}
<li class='ipsType_light ipsType_blendLinks'>
{{if $forum->last_poster_anon}}
{lang="byline_nodate" htmlsprintf="$lastPost['author']->link( NULL, NULL, TRUE )"},
{{else}}
{lang="byline_nodate" htmlsprintf="$lastPost['author']->link()"},
{{endif}}
{{if $lastPost['topic_title']}}
<a href='{{if member.member_id}}{$lastPost['topic_url']->setQueryString( 'do', 'getLastComment' )}{{else}}{$lastPost['topic_url']}{{endif}}' title='{lang="get_last_post"}'>{datetime="$lastPost['date']"}</a>
{{else}}
{datetime="$lastPost['date']"}
{{endif}}
</li>
{{else}}
<li class='ipsType_light ipsResponsive_showDesktop'>{{if $forum->password}}{lang="no_forum_posts_password"}{{else}}{lang="no_forum_posts"}{{endif}}</li>
{{endif}}
</ul>
{{endif}}
{{if $table and $table->canModerate()}}
<div class='ipsDataItem_modCheck'>
<span class='ipsCustomInput'>
<input type='checkbox' data-role='moderation' name="moderate[{$forum->_id}]" data-actions="{expression="implode( ' ', $table->multimodActions( $forum ) )"}" data-state=''>
<span></span>
</span>
</div>
{{endif}}
</li>
{{endif}}]]></template>
<template template_group="index" template_name="forumTableRow" template_data="$table, $headers, $forums" template_location="front" template_app="forums">{{foreach $forums as $forum}}
{template=&quot;forumRow&quot; group=&quot;index&quot; app=&quot;forums&quot; params=&quot;$forum, FALSE, $table&quot;}
{{endforeach}}</template>
<template template_group="index" template_name="index" template_data="" template_location="front" template_app="forums"><![CDATA[
<div class='ipsPageHeader ipsClearfix ipsMargin_bottom cForumHeader ipsHeaderButtons ipsFlex ipsFlex-ai:center ipsFlex-jc:between'>
<h1 class='ipsType_pageTitle ipsFlex-flex:11 ipsType_break'>
{lang="forums"}
</h1>
{{if \IPS\forums\Forum::canOnAny( 'add' ) }}
<ul class='ipsToolList ipsToolList_horizontal ipsClearfix sm:ipsPos_none sm:ipsMargin:none ipsFlex-flex:00'>
<li class='ipsToolList_primaryAction ipsResponsive_hidePhone'>
<a class="ipsButton ipsButton_medium ipsButton_important" href="{url="app=forums&module=forums&controller=forums&do=add" seoTemplate="topic_non_forum_add_button"}" data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title='{lang="select_forum"}'>{lang="start_new_topic"}</a>
</li>
{template="viewChange" group="global" app="forums" params=""}
</ul>
{{endif}}
</div>
<ul class="ipsToolList ipsToolList_horizontal ipsResponsive_hideDesktop ipsResponsive_hideTablet ipsResponsive_block ipsClearfix">
{template="indexButtons" group="index" app="forums" params="FALSE"}
</ul>
<section>
<ol class='ipsList_reset cForumList' data-controller='core.global.core.table, forums.front.forum.forumList' data-baseURL=''>
{{foreach \IPS\forums\Forum::roots() as $category}}
{{if $category->can('view') && $category->hasChildren()}}
<li data-categoryID='{$category->_id}' class='cForumRow ipsBox ipsSpacer_bottom ipsResponsive_pull'>
<h2 class="ipsType_sectionTitle ipsType_reset cForumTitle">
<a href='#' class='ipsPos_right ipsJS_show ipsType_noUnderline cForumToggle' data-action='toggleCategory' data-ipsTooltip title='{lang="toggle_this_category"}'></a>
<a href='{$category->url()}'>{$category->_title}</a>
</h2>
{{if \IPS\forums\Forum::getMemberView() === 'grid'}}
<div class='ipsPadding ipsAreaBackground_light ipsRadius:bl ipsRadius:br' data-role="forums">
<div class='ipsForumGrid'>
{{foreach $category->children() as $forum}}
{template="forumGridItem" group="index" app="forums" params="$forum"}
{{endforeach}}
</div>
</div>
{{else}}
<ol class="ipsDataList ipsDataList_large ipsDataList_zebra" data-role="forums">
{{foreach $category->children() as $forum}}
{template="forumRow" group="index" app="forums" params="$forum"}
{{endforeach}}
</ol>
{{endif}}
</li>
{{endif}}
{{endforeach}}
{{if settings.club_nodes_in_apps and $clubForums = \IPS\forums\Forum::clubNodes()}}
<li data-categoryID='clubs' class='cForumRow ipsBox ipsSpacer_bottom ipsResponsive_pull'>
<h2 class="ipsType_sectionTitle ipsType_reset cForumTitle">
<a href='#' class='ipsPos_right ipsJS_show ipsType_noUnderline cForumToggle' data-action='toggleCategory' data-ipsTooltip title='{lang="toggle_this_category"}'></a>
<a href='{url="app=forums&module=forums&controller=forums&do=clubs" seoTemplate="forums_clubs"}'>{lang="club_node_forums"}</a>
</h2>
{{if \IPS\forums\Forum::getMemberView() === 'grid'}}
<div class='ipsPadding ipsAreaBackground_light ipsRadius:bl ipsRadius:br' data-role="forums">
<div class='ipsForumGrid'>
{{foreach $clubForums as $forum}}
{template="forumGridItem" group="index" app="forums" params="$forum"}
{{endforeach}}
</div>
</div>
{{else}}
<ol class="ipsDataList ipsDataList_large ipsDataList_zebra" data-role="forums">
{{foreach $clubForums as $forum}}
{template="forumRow" group="index" app="forums" params="$forum"}
{{endforeach}}
</ol>
{{endif}}
</li>
{{endif}}
</ol>
</section>]]></template>
<template template_group="index" template_name="indexButtons" template_data="$showViewButtons=TRUE, $showFilterButton=FALSE" template_location="front" template_app="forums"><![CDATA[
{{if $showFilterButton}}
<li class='ipsToolList_primaryAction ipsResponsive_hideDesktop ipsResponsive_block'>
<a class="ipsButton ipsButton_medium ipsButton_link ipsButton_fullWidth" href="#" rel="nofollow" data-ipsDialog data-ipsDialog-title='{lang="forums_simple_dialog_title"}' data-ipsDialog-content='#elFluidFormFilters'>
<span data-role='fluidForumMobileDesc'>{lang="forums_simple_filter_by"}</span> <i class='fa fa-angle-down'></i></a>
</li>
{{endif}}
{{if \IPS\forums\Forum::canOnAny('add')}}
<li class='ipsToolList_primaryAction ipsResponsive_hideTablet'>
<a class="ipsButton ipsButton_medium ipsButton_important ipsButton_fullWidth" href="{url="app=forums&module=forums&controller=forums&do=add"}" rel="nofollow" data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title='{lang="select_forum"}'>{lang="start_new_topic"}</a>
</li>
{{endif}}
{{if $showViewButtons}}
{template="viewChange" group="global" app="forums" params=""}
{{endif}}]]></template>
<template template_group="index" template_name="simplifiedForumTable" template_data="$table, $headers, $rows, $quickSearch" template_location="front" template_app="forums"><![CDATA[<div class='ipsBox cForumFluidTable' data-baseurl='{$table->baseUrl}' data-resort='{$table->resortKey}' data-tableID='topics' data-dummyLoading data-controller='core.global.core.table{{if $table->canModerate()}},core.front.core.moderation{{endif}}'>
{{if $table->title}}
<h2 class='ipsType_sectionTitle ipsHide {{if !$table->container()->forums_bitoptions['bw_enable_answers']}}ipsType_medium{{endif}} ipsType_reset ipsClear'>{$table->title}</h2>
{{endif}}
{{if $table->count > 0}}
<div class="ipsButtonBar ipsPad_half ipsClearfix ipsClear">
{{if $table->canModerate()}}
<ul class="ipsButtonRow ipsPos_right ipsClearfix">
<li>
<a class="ipsJS_show" href="#elCheck_menu" id="elCheck_{$table->uniqueId}" title='{lang="{$table->langPrefix}select_rows_tooltip"}' data-ipsTooltip data-ipsAutoCheck data-ipsAutoCheck-context="#elTable_{$table->uniqueId}" data-ipsMenu data-ipsMenu-activeClass="ipsButtonRow_active">
<span class="cAutoCheckIcon ipsType_medium"><i class="fa fa-square-o"></i></span> <i class="fa fa-caret-down"></i>
<span class='ipsNotificationCount' data-role='autoCheckCount'>0</span>
</a>
<ul class="ipsMenu ipsMenu_auto ipsMenu_withStem ipsHide" id="elCheck_{$table->uniqueId}_menu">
<li class="ipsMenu_title">{lang="{$table->langPrefix}select_rows"}</li>
<li class="ipsMenu_item" data-ipsMenuValue="all"><a href="#">{lang="all"}</a></li>
<li class="ipsMenu_item" data-ipsMenuValue="none"><a href="#">{lang="none"}</a></li>
{{if \count($table->getFilters())}}
<li class="ipsMenu_sep"><hr></li>
{{foreach $table->getFilters() as $filter}}
<li class="ipsMenu_item" data-ipsMenuValue="{$filter}"><a href="#">{lang="$filter"}</a></li>
{{endforeach}}
{{endif}}
</ul>
</li>
</ul>
{{endif}}
<ul class="ipsButtonRow ipsPos_right ipsClearfix">
{{if settings.forums_view_list_choose and member.member_id}}
{{$chosen = \IPS\forums\Forum::getMemberListView();}}
<li>
<a href="#elViewByMenu" id="elViewByMenu" data-role="viewButton" data-ipsMenu data-ipsMenu-activeClass="ipsButtonRow_active" data-ipsMenu-selectable="radio">{lang="view"} <i class="fa fa-caret-down"></i></a>
<ul class="ipsMenu ipsMenu_auto ipsMenu_withStem ipsMenu_selectable ipsHide" id="elViewByMenu_menu">
<li class="ipsMenu_item {{if $chosen === 'list'}}ipsMenu_itemChecked{{endif}}">
{{if ! empty(request.id)}}
<a href="{url="app=forums&module=forums&controller=forums&do=setMethod&method=list" csrf="true"}&id={request="id"}">
{{else}}
<a href="{url="app=forums&module=forums&controller=forums&do=setMethod&method=list" csrf="true"}">
{{endif}}
{lang="forums_topic_list_list"}
</a>
</li>
<li class="ipsMenu_item {{if $chosen === 'snippet'}}ipsMenu_itemChecked{{endif}}">
{{if ! empty(request.id)}}
<a href="{url="app=forums&module=forums&controller=forums&do=setMethod&method=snippet" csrf="true"}&id={request="id"}">
{{else}}
<a href="{url="app=forums&module=forums&controller=forums&do=setMethod&method=snippet" csrf="true"}">
{{endif}}
{lang="forums_topic_list_snippet"}
</a>
</li>
</ul>
</li>
{{endif}}
{{if isset( $table->sortOptions ) and !empty( $table->sortOptions ) }}
<li>
<a href="#elSortByMenu_menu" id="elSortByMenu_{$table->uniqueId}" data-role='sortButton' data-ipsMenu data-ipsMenu-activeClass="ipsButtonRow_active" data-ipsMenu-selectable="radio">{lang="sort_by"} <i class="fa fa-caret-down"></i></a>
<ul class="ipsMenu ipsMenu_auto ipsMenu_withStem ipsMenu_selectable ipsHide" id="elSortByMenu_{$table->uniqueId}_menu">
{{$custom = TRUE;}}
{{foreach $table->sortOptions as $k => $col}}
<li class="ipsMenu_item {{if $col === $table->getSortByColumn()}}{{$custom = FALSE;}}ipsMenu_itemChecked{{endif}}" data-ipsMenuValue="{$col}" data-sortDirection='{$table->getSortDirection( $col )}'><a href="{$table->baseUrl->setQueryString( array( 'filter' => $table->filter, 'sortby' => $col, 'sortdirection' => $table->getSortDirection( $col ) ) )->setPage( 'page', 1 )}" rel="nofollow">{lang="{$table->langPrefix}sort_{$k}"}</a></li>
{{endforeach}}
{{if $table->advancedSearch}}
<li class="ipsMenu_item {{if $custom}}ipsMenu_itemChecked{{endif}}" data-noSelect="true">
<a href='{$table->baseUrl->setQueryString( array( 'advancedSearchForm' => '1', 'filter' => $table->filter, 'sortby' => $table->sortBy, 'sortdirection' => $table->sortDirection ) )}' data-ipsDialog data-ipsDialog-title='{lang="custom_sort"}' rel="nofollow">{lang="custom"}</a>
</li>
{{endif}}
</ul>
</li>
{{endif}}
{{if !empty( $table->filters )}}
<li>
<a href="#elFilterByMenu_menu" id="elFilterByMenu_{$table->uniqueId}" data-role='tableFilterMenu' data-ipsMenu data-ipsMenu-activeClass="ipsButtonRow_active" data-ipsMenu-selectable="radio">{lang="filter_by"} <i class="fa fa-caret-down"></i></a>
<ul class='ipsMenu ipsMenu_auto ipsMenu_withStem ipsMenu_selectable ipsHide' data-role="tableFilterMenu" id='elFilterByMenu_{$table->uniqueId}_menu'>
<li data-action="tableFilter" data-ipsMenuValue='' class='ipsMenu_item {{if !$table->filter}}ipsMenu_itemChecked{{endif}}'>
<a href='{$table->baseUrl->setQueryString( array( 'filter' => '', 'sortby' => $table->sortBy, 'sortdirection' => $table->sortDirection ) )->setPage( 'page', 1 )}' rel="nofollow">{lang="{$table->langPrefix}all"}</a>
</li>
{{foreach $table->filters as $k => $q}}
<li data-action="tableFilter" data-ipsMenuValue='{$k}' class='ipsMenu_item {{if $k === $table->filter}}ipsMenu_itemChecked{{endif}}'>
<a href='{$table->baseUrl->setQueryString( array( 'filter' => $k, 'sortby' => $table->sortBy, 'sortdirection' => $table->sortDirection) )->setPage( 'page', 1 )}' rel="nofollow">{lang="{$table->langPrefix}{$k}"}</a>
</li>
{{endforeach}}
</ul>
</li>
{{endif}}
</ul>
<div data-role="tablePagination" {{if $table->pages <= 1}}class='ipsHide'{{endif}}>
{template="pagination" group="global" app="core" location="global" params="$table->baseUrl, $table->pages, $table->page, $table->limit, TRUE, $table->getPaginationKey()"}
</div>
</div>
{{endif}}
{{if $table->canModerate()}}
<form action="{$table->baseUrl->csrf()}" method="post" data-role='moderationTools' data-ipsPageAction>
{{endif}}
{{if \count( $rows )}}
<ol class='ipsDataList ipsDataList_zebra ipsClear cForumTopicTable {{foreach $table->classes as $class}}{$class} {{endforeach}}' id='elTable_{$table->uniqueId}' data-role="tableRows">
{template="$table->rowsTemplate[1]" params="$table, $headers, $rows" object="$table->rowsTemplate[0]"}
</ol>
{{else}}
<div class='ipsType_center ipsPad'>
<p class='ipsType_large'>{lang="no_topics_in_forum"}</p>
</div>
{{endif}}
{{if $table->canModerate()}}
<div class="ipsAreaBackground ipsPad ipsClearfix ipsJS_hide" data-role="pageActionOptions">
<div class="ipsPos_right">
<select name="modaction" data-role="moderationAction">
{{if $table->canModerate('unhide')}}
<option value='approve' data-icon='check-circle'>{lang="approve"}</option>
{{endif}}
{{if $table->canModerate('feature') or $table->canModerate('unfeature')}}
<optgroup label="{lang="feature"}" data-icon='star' data-action='feature'>
{{if $table->canModerate('feature')}}
<option value='feature'>{lang="feature"}</option>
{{endif}}
{{if $table->canModerate('unhide')}}
<option value='unfeature'>{lang="unfeature"}</option>
{{endif}}
</optgroup>
{{endif}}
{{if $table->canModerate('pin') or $table->canModerate('unpin')}}
<optgroup label="{lang="pin"}" data-icon='thumb-tack' data-action='pin'>
{{if $table->canModerate('pin')}}
<option value='pin'>{lang="pin"}</option>
{{endif}}
{{if $table->canModerate('unpin')}}
<option value='unpin'>{lang="unpin"}</option>
{{endif}}
</optgroup>
{{endif}}
{{if $table->canModerate('hide') or $table->canModerate('unhide')}}
<optgroup label="{lang="hide"}" data-icon='eye' data-action='hide'>
{{if $table->canModerate('hide')}}
<option value='hide'>{lang="hide"}</option>
{{endif}}
{{if $table->canModerate('unhide')}}
<option value='unhide'>{lang="unhide"}</option>
{{endif}}
</optgroup>
{{endif}}
{{if $table->canModerate('lock') or $table->canModerate('unlock')}}
<optgroup label="{lang="lock"}" data-icon='lock' data-action='lock'>
{{if $table->canModerate('lock')}}
<option value='lock'>{lang="lock"}</option>
{{endif}}
{{if $table->canModerate('unlock')}}
<option value='unlock'>{lang="unlock"}</option>
{{endif}}
</optgroup>
{{endif}}
{{if $table->canModerate('move')}}
<option value='move' data-icon='arrow-right'>{lang="move"}</option>
{{endif}}
{{if $table->canModerate('split_merge')}}
<option value='merge' data-icon='level-up'>{lang="merge"}</option>
{{endif}}
{{if $table->canModerate('delete')}}
<option value='delete' data-icon='trash'>{lang="delete"}</option>
{{endif}}
{{if $table->savedActions}}
<optgroup label="{lang="saved_actions"}" data-icon='tasks' data-action='saved_actions'>
{{foreach $table->savedActions as $k => $v}}
<option value='savedAction-{$k}'>{$v}</option>
{{endforeach}}
</optgroup>
{{endif}}
</select>
<button type="submit" class="ipsButton ipsButton_alternate ipsButton_verySmall">{lang="submit"}</button>
</div>
</div>
</form>
{{endif}}
<div class="ipsButtonBar ipsPad_half ipsClearfix ipsClear {{if $table->pages <= 1}}ipsHide{{endif}}" data-role="tablePagination">
{template="pagination" group="global" app="core" location="global" params="$table->baseUrl, $table->pages, $table->page, $table->limit, TRUE, $table->getPaginationKey()"}
</div>
</div>]]></template>
<template template_group="index" template_name="simplifiedTopicRow" template_data="$table, $headers, $rows" template_location="front" template_app="forums"><![CDATA[{{$rowIds = array();}}
{{foreach $rows as $row}}
{{$idField = $row::$databaseColumnId;}}
{{$rowIds[] = $row->$idField;}}
{{endforeach}}
{{if \count( $rows )}}
{{$rowCount=0; $adShown=0;}}
{{foreach $rows as $row}}
{{if $rowCount == 1 AND $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_forum_listing' )}}
<li class="ipsDataItem">
{$advertisement|raw}
</li>
{{endif}}
{{$rowCount++;}}
{{$idField = $row::$databaseColumnId;}}
{{if $row->mapped('moved_to')}}
{{if $movedTo = $row->movedTo() AND $movedTo->container()->can('view')}}
<li class="ipsDataItem">
<div class='ipsDataItem_icon ipsType_center ipsType_noBreak'>
<i class="fa fa-arrow-left ipsType_large"></i>
</div>
<div class='ipsDataItem_main'>
<h4 class='ipsDataItem_title ipsContained_container'>
<span class='ipsType_break ipsContained'>
<em><a href='{$movedTo->url( "getPrefComment" )}' title='{lang="go_to_new_location"}'>{$row->mapped('title')}</a></em>
</span>
</h4>
<div class='ipsDataItem_meta'>
{{if isset( $row::$databaseColumnMap['status'] )}}
{{$statusField = $row::$databaseColumnMap['status'];}}
{{if $row->$statusField == 'merged'}}
<p class='ipsType_reset ipsType_light ipsType_blendLinks'>{lang="topic_merged_to" sprintf="$movedTo->url( 'getPrefComment' ), $movedTo->mapped('title')"}</p>
{{else}}
<p class='ipsType_reset ipsType_light ipsType_blendLinks'>{lang="topic_moved_to" sprintf="$movedTo->container()->url(), $movedTo->container()->_title"}</p>
{{endif}}
{{else}}
<p class='ipsType_reset ipsType_light ipsType_blendLinks'>{lang="topic_moved_to" sprintf="$movedTo->container()->url(), $movedTo->container()->_title"}</p>
{{endif}}
</div>
</div>
{{if $table->canModerate()}}
<div class='ipsDataItem_modCheck'>
<span class='ipsCustomInput'>
<input type='checkbox' data-role='moderation' name="moderate[{$row->$idField}]" data-actions="{{if $row->mapped('featured')}}unfeature{{endif}} {{if $row->mapped('pinned')}}unpin{{endif}} delete" data-state='{{if $row->mapped('pinned')}}pinned{{endif}} {{if $row->mapped('featured')}}featured{{endif}}'>
<span></span>
</span>
</div>
{{endif}}
</li>
{{endif}}
{{else}}
<li class="ipsDataItem ipsDataItem_responsivePhoto {{if $row->unread()}}ipsDataItem_unread{{endif}} {{if method_exists( $row, 'tableClass' ) && $row->tableClass()}}ipsDataItem_{$row->tableClass()}{{endif}} {{if $row->hidden() or $row->isFutureDate()}}ipsModerated{{endif}}{{if $row->isFutureDate()}} ipsModerated_alternate{{endif}}" data-rowID='{$row->$idField}' {{if isset($row->locationHash)}}data-location='{$row->locationHash}'{{endif}}>
<div class='ipsDataItem_icon ipsType_blendLinks'>
{template="userPhoto" app="core" group="global" params="$row->author(), 'tiny'"}
</div>
<div class='ipsDataItem_main'>
{{if $row->groupsPosted}}
{template="groupPostedBadges" group="global" app="core" location="front" params="$row->groupsPosted, 'topic_posted_in_groups', 'ipsResponsive_hidePhone ipsMargin_left ipsPos_right'"}
{{endif}}
<h4 class='ipsDataItem_title ipsContained_container'>
{{if member.member_id}}
{{if $row->unread()}}
<span>
<a href='{$row->url( 'getNewComment' )}' title='{lang="first_unread_post"}' data-ipsTooltip>
<span class='ipsItemStatus'><i class="fa {{if \in_array( $row->$idField, $table->contentPostedIn )}}fa-star{{else}}fa-circle{{endif}}"></i></span>
</a>
</span>
{{else}}
{{if \in_array( $row->$idField, $table->contentPostedIn )}}
<span>
<span class='ipsItemStatus ipsItemStatus_read ipsItemStatus_posted'><i class="fa fa-star"></i></span>
</span>
{{endif}}
{{endif}}
{{endif}}
{{if $row->locked()}}
<span>
<i class='ipsType_medium fa fa-lock' data-ipsTooltip title='{lang="topic_locked"}'></i>
</span>
{{if $row->topic_open_time && $row->topic_open_time > time()}}
<span><strong class='ipsType_small ipsType_noBreak' data-ipsTooltip title='{lang="topic_unlocks_at" sprintf="\IPS\DateTime::ts( $row->topic_open_time )->relative(), \IPS\DateTime::ts( $row->topic_open_time )->localeTime( FALSE )"}'>{lang="topic_unlocks_at_short" sprintf="\IPS\DateTime::ts($row->topic_open_time)->relative(1)"}</strong>&nbsp;&nbsp;</span>
{{endif}}
{{elseif !$row->locked() && $row->topic_close_time && $row->topic_close_time > time()}}
<span><strong class='ipsType_small ipsType_noBreak' data-ipsTooltip title='{lang="topic_locks_at" sprintf="\IPS\DateTime::ts( $row->topic_close_time )->relative(), \IPS\DateTime::ts( $row->topic_close_time )->localeTime( FALSE )"}'><i class='fa fa-clock-o'></i> {lang="topic_locks_at_short" sprintf="\IPS\DateTime::ts($row->topic_close_time)->relative(1)"}</strong>&nbsp;&nbsp;</span>
{{endif}}
{{if $row->mapped('poll')}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_neutral" data-ipsTooltip title='{lang="topic_has_poll"}'><i class='fa fa-question'></i></span></span>
{{endif}}
{{if $row->isFutureDate() || $row->mapped('pinned') || $row->mapped('featured') || $row->hidden() === -1 || $row->hidden() === 1 || $row->isSolved()}}
{{if $row->isFutureDate()}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{$row->futureDateBlurb()}'><i class='fa fa-clock-o'></i></span></span>
{{endif}}
{{if $row->hidden() === -1}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{$row->hiddenBlurb()}'><i class='fa fa-eye-slash'></i></span></span>
{{elseif $row->hidden() === 1}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{lang="pending_approval"}'><i class='fa fa-warning'></i></span></span>
{{endif}}
{{if $row->mapped('pinned')}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="pinned"}'><i class='fa fa-thumb-tack'></i></span></span>
{{endif}}
{{if $row->mapped('featured')}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="featured"}'><i class='fa fa-star'></i></span></span>
{{endif}}
{{if $row->isSolved()}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="this_is_solved"}'><i class='fa fa-check'></i></span></span>
{{endif}}
{{endif}}
{{if $row->prefix()}}
<span>{template="prefix" group="global" app="core" params="$row->prefix( TRUE ), $row->prefix()"}</span>
{{endif}}
<span class='ipsType_break ipsContained'>
<a href='{$row->url( "getPrefComment" )}' class='' title='{{if $row->mapped('title')}}{$row->mapped('title')}{{else}}{lang="content_deleted"}{{endif}} {{if $row->canEdit()}}{lang="click_hold_edit"}{{endif}}' {{if $row->tableHoverUrl and $row->canView()}} data-ipsHover data-ipsHover-target='{$row->url()->setQueryString('preview', 1)}' data-ipsHover-timeout='1.5'{{endif}}{{if $row->canEdit()}} data-role="editableTitle"{{endif}}>
<span>
{{if $row->mapped('title') or $row->mapped('title') == 0}}{$row->mapped('title')}{{else}}<em class="ipsType_light">{lang="content_deleted"}</em>{{endif}}
</span>
</a>
</span>
{{if $row->commentPageCount() > 1}}
{$row->commentPagination( array(), 'miniPagination' )|raw}
{{endif}}
</h4>
<div class='ipsDataItem_meta ipsType_reset ipsType_light ipsType_blendLinks'>
<span>
{lang="byline_itemprop" htmlsprintf="$row->author()->link( NULL, NULL, $row->isAnonymous() )"}
</span>{datetime="$row->mapped('date')" lowercase="true"}
{lang="in"} <a href="{$row->container()->url()}">{{if $club = $row->container()->club()}}{lang="club_node" sprintf="$club->name, $row->container()->_title"}{{else}}{$row->container()->_formattedTitle|raw}{{endif}}</a>
{{if \count( $row->tags() )}}
&nbsp;&nbsp;
{template="tags" group="global" app="core" params="$row->tags(), true"}
{{endif}}
</div>
</div>
<ul class='ipsDataItem_stats'>
{{if $row->groupsPosted}}
<li class='ipsResponsive_showPhone ipsMargin:none'>
{template="groupPostedBadges" group="global" app="core" location="front" params="$row->groupsPosted, 'topic_posted_in_groups'"}
</li>
{{endif}}
{{foreach $row->stats(FALSE) as $k => $v}}
<li {{if $k == 'num_views'}}class='ipsType_light'{{endif}} data-statType='{$k}'>
{{if \in_array( $k, $row->hotStats )}}<span class="ipsDataItem_stats_hot" data-text='{lang="hot_item"}' data-ipsTooltip title='{lang="hot_item_desc"}'>{{endif}}
<span class='ipsDataItem_stats_number'>{number="$v" format="short"}</span>
<span class='ipsDataItem_stats_type'>{lang="{$k}" pluralize="$v" format="short"}</span>
{{if \in_array( $k, $row->hotStats )}}</span>{{endif}}
{{if ( $k == 'forums_comments' OR $k == 'answers_no_number' ) && \IPS\forums\Topic::modPermission( 'unhide', NULL, $row->container() ) AND $unapprovedComments = $row->mapped('unapproved_comments')}}
&nbsp;<a href='{$row->url()->setQueryString( 'queued_posts', 1 )}' class='ipsType_warning ipsType_small' data-ipsTooltip title='{lang="queued_posts_badge" pluralize="$row->topic_queuedposts"}'><i class='fa fa-warning'></i> <strong>{$unapprovedComments}</strong></a>
{{endif}}
</li>
{{endforeach}}
<li class="ipsType_light ipsResponsive_hideDesktop">
<a href='{$row->url( 'getLastComment' )}' title='{lang="get_last_post"}' class='ipsType_blendLinks'>
{lang="updated"} {{if $row->mapped('last_comment')}}{datetime="$row->mapped('last_comment')"}{{else}}{datetime="$row->mapped('date')"}{{endif}}
</a>
</li>
</ul>
<ul class='ipsDataItem_lastPoster ipsDataItem_noPhoto ipsType_blendLinks ipsResponsive_hidePhone ipsResponsive_hideTablet'>
<li>
{{if $row->mapped('num_comments')}}
{$row->lastCommenter()->link()|raw}
{{else}}
{$row->author()->link()|raw}
{{endif}}
</li>
<li class="ipsType_light">
<a href='{$row->url( 'getLastComment' )}' title='{lang="get_last_post"}' class='ipsType_blendLinks'>
{{if $row->mapped('last_comment')}}{datetime="$row->mapped('last_comment')"}{{else}}{datetime="$row->mapped('date')"}{{endif}}
</a>
</li>
</ul>
{{if $table->canModerate()}}
<div class='ipsDataItem_modCheck'>
<span class='ipsCustomInput'>
<input type='checkbox' data-role='moderation' name="moderate[{$row->$idField}]" data-actions="{expression="implode( ' ', $table->multimodActions( $row ) )"}" data-state='{{if $row->tableStates()}}{$row->tableStates()}{{endif}}'>
<span></span>
</span>
</div>
{{endif}}
</li>
{{endif}}
{{if $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_fluid_index_view' ) and ( $rowCount + 1 > $advertisement->_additional_settings['ad_fluid_index_view_number'] and ( ( $rowCount + 1 ) % $advertisement->_additional_settings['ad_fluid_index_view_number'] === 1 ) )}}
{{if $advertisement->_additional_settings['ad_fluid_index_view_repeat'] == -1 or ( $advertisement->_additional_settings['ad_fluid_index_view_repeat'] > $adShown )}}
<li>{$advertisement|raw}</li>
{{$adShown++;}}
{{endif}}
{{endif}}
{{endforeach}}
{{endif}}]]></template>
<template template_group="index" template_name="simplifiedTopicRowSnippet" template_data="$table, $headers, $rows" template_location="front" template_app="forums"><![CDATA[{{$rowIds = array();}}
{{foreach $rows as $row}}
{{$idField = $row::$databaseColumnId;}}
{{$rowIds[] = $row->$idField;}}
{{endforeach}}
{{if \count( $rows )}}
{{$rowCount=0; $adShown=0;}}
{{foreach $rows as $row}}
{{if $rowCount == 1 AND $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_forum_listing' )}}
<li class="ipsDataItem">
{$advertisement|raw}
</li>
{{endif}}
{{$rowCount++;}}
{{$idField = $row::$databaseColumnId;}}
{{if $row->mapped('moved_to')}}
{{if $movedTo = $row->movedTo() AND $movedTo->container()->can('view')}}
<li class="ipsDataItem ipsTopicSnippet">
<div class='ipsFlex ipsFlex-ai:center'>
<div class='ipsTopicSnippet__avatar ipsFlex-flex:00'>
<i class="fa fa-arrow-left ipsType_large"></i>
</div>
<div class='ipsFlex-flex:11'>
<h4 class='ipsDataItem_title'>
<span>
<em><a href='{$movedTo->url()}' title='{lang="go_to_new_location"}'>{$row->mapped('title')}</a></em>
</span>
</h4>
<div class='ipsDataItem_meta'>
{{if isset( $row::$databaseColumnMap['status'] )}}
{{$statusField = $row::$databaseColumnMap['status'];}}
{{if $row->$statusField == 'merged'}}
<p class='ipsType_reset ipsType_light ipsType_blendLinks'>{lang="topic_merged_to" sprintf="$movedTo->url( 'getPrefComment' ), $movedTo->mapped('title')"}</p>
{{else}}
<p class='ipsType_reset ipsType_light ipsType_blendLinks'>{lang="topic_moved_to" sprintf="$movedTo->container()->url(), $movedTo->container()->_title"}</p>
{{endif}}
{{else}}
<p class='ipsType_reset ipsType_light ipsType_blendLinks'>{lang="topic_moved_to" sprintf="$movedTo->container()->url(), $movedTo->container()->_title"}</p>
{{endif}}
</div>
</div>
{{if $table->canModerate()}}
<div class='ipsFlex-as:center'>
<span class='ipsCustomInput'>
<input type='checkbox' data-role='moderation' name="moderate[{$row->$idField}]" data-actions="{{if $row->mapped('featured')}}unfeature{{endif}} {{if $row->mapped('pinned')}}unpin{{endif}} delete" data-state='{{if $row->mapped('pinned')}}pinned{{endif}} {{if $row->mapped('featured')}}featured{{endif}}'>
<span></span>
</span>
</div>
{{endif}}
</div>
</li>
{{endif}}
{{else}}
<li class="ipsDataItem ipsTopicSnippet {{if $row->groupsPosted}}ipsDataItem_highlighted{{endif}} {{if $row->unread()}}ipsDataItem_unread{{else}}ipsDataItem_read{{endif}} {{if method_exists( $row, 'tableClass' ) && $row->tableClass()}}ipsDataItem_{$row->tableClass()}{{endif}} {{if $row->hidden() or $row->isFutureDate()}}ipsModerated{{endif}}{{if $row->isFutureDate()}} ipsModerated_alternate{{endif}}" data-rowID='{$row->$idField}' {{if isset($row->locationHash)}}data-location='{$row->locationHash}'{{endif}}>
<div class='ipsTopicSnippet__top ipsFlex ipsFlex-ai:start'>
<!-- Topic starter avatar -->
<div class='ipsTopicSnippet__avatar ipsFlex-flex:00'>
{template="userPhoto" app="core" group="global" params="$row->author(), 'small'"}
</div>
<div class='ipsTopicSnippet__top-align ipsFlex-flex:11 ipsFlex ipsFlex-ai:start ipsFlex-jc:between'>
<div class='ipsTopicSnippet__top-main ipsFlex-flex:11 ipsFlex ipsFlex-ai:start ipsFlex-jc:between sm:ipsFlex-fd:column'>
<div class='ipsTopicSnippet__title ipsFlex-flex:11'>
<h4 class='ipsDataItem_title'>
{{if $row->locked()}}
<span>
<i class='ipsType_medium fa fa-lock' data-ipsTooltip title='{lang="topic_locked"}'></i>
</span>
{{endif}}
{{if $row->isFutureDate()}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{$row->futureDateBlurb()}'><i class='fa fa-clock-o'></i></span></span>
{{endif}}
{{if $row->isSolved()}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="this_is_solved"}'><i class='fa fa-check'></i></span></span>
{{endif}}
{{if $row->hidden() === -1}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{$row->hiddenBlurb()}'><i class='fa fa-eye-slash'></i></span></span>
{{elseif $row->hidden() === 1}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{lang="pending_approval"}'><i class='fa fa-warning'></i></span></span>
{{elseif $row->canToggleItemModeration() and $row->itemModerationEnabled()}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{lang="topic_moderation_enabled"}'><i class='fa fa-user-times'></i></span></span>
{{endif}}
{{if $row->mapped('pinned')}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="pinned"}'><i class='fa fa-thumb-tack'></i></span></span>
{{endif}}
{{if $row->mapped('featured')}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="featured"}'><i class='fa fa-star'></i></span></span>
{{endif}}
{{if $row->mapped('poll')}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_neutral" data-ipsTooltip title='{lang="topic_has_poll"}'><i class='fa fa-question'></i></span></span>
{{endif}}
<!-- Prefix -->
{{if $row->prefix()}}
<span>{template="prefix" group="global" app="core" params="$row->prefix( TRUE ), $row->prefix()"}</span>
{{endif}}
<!-- Topic title -->
<span class='ipsType_break'>
<!-- Unread/participated icon -->
{{if member.member_id}}
<span>
{{if $row->unread()}}
<a href="{$row->url( 'getNewComment' )}" title='{lang="first_unread_post"}' data-ipsTooltip>
<span class='ipsItemStatus'><i class="fa {{if \in_array( $row->$idField, $table->contentPostedIn )}}fa-star{{else}}fa-circle{{endif}}"></i></span>
</a>
{{else}}
{{if \in_array( $row->$idField, $table->contentPostedIn )}}
<span class='ipsItemStatus ipsItemStatus_read ipsItemStatus_posted'><i class="fa fa-star"></i></span>
{{endif}}
{{endif}}
</span>
{{endif}}
<a href='{$row->url( "getPrefComment" )}' class='' title='{{if $row->mapped('title')}}{$row->mapped('title')}{{else}}{lang="content_deleted"}{{endif}} {{if $row->canEdit()}}{lang="click_hold_edit"}{{endif}}' {{if $row->tableHoverUrl and $row->canView()}} data-ipsHover data-ipsHover-target='{$row->url()->setQueryString('preview', 1)}' data-ipsHover-timeout='1.5'{{endif}}{{if $row->canEdit()}} data-role="editableTitle"{{endif}}>
<span>
{{if $row->mapped('title') or $row->mapped('title') == 0}}{$row->mapped('title')}{{else}}<em class="ipsType_light">{lang="content_deleted"}</em>{{endif}}
</span>
</a>
</span>
{{if $row->commentPageCount() > 1}}
{$row->commentPagination( array(), 'miniPagination' )|raw}
{{endif}}
</h4>
<!-- Author -->
<div class='ipsTopicSnippet__date ipsType_light ipsType_blendLinks'>{datetime="$row->mapped('date')" lowercase="true"} {lang="search_byline" htmlsprintf="$row->author()->link( NULL, NULL, $row->isAnonymous() )"} {{if !\in_array( \IPS\Dispatcher::i()->controller, array( 'forums', 'index' ) )}} {lang="in"} <a href="{$row->container()->url()}">{$row->container()->_title}</a>{{endif}}</div>
</div>
<div class='ipsTopicSnippet__stats-align ipsFlex-flex:00 ipsFlex ipsFlex-ai:center'>
<ul class='ipsTopicSnippet__stats ipsFlex ipsFlex-ai:center ipsFlex-fw:wrap ipsList_reset'>
{{if $row->groupsPosted}}
<li>
{template="groupPostedBadges" group="global" app="core" location="front" params="$row->groupsPosted, 'topic_posted_in_groups'"}
</li>
{{endif}}
{{if $row->followerCount}}
<li class='ipsType_light'>
<span class='ipsDataItem_stats_type'>
<a href='{url="app=core&module=system&controller=notifications&do=followers&follow_app=forums&follow_area=topic&follow_id={$row->tid}"}' title='{lang="followers_tooltip"}' class='ipsType_blendLinks ipsType_noUnderline' data-ipsTooltip data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title='{lang="who_follows_this"}'>{lang="topic_follower_count" pluralize="$row->followerCount"}</a>
</span>
</li>
{{endif}}
{{foreach $row->stats(FALSE) as $k => $v}}
<li {{if $k == 'num_views'}}class='ipsType_light'{{endif}} data-statType="{$k}">
{{if \in_array( $k, $row->hotStats )}}<span class="ipsDataItem_stats_hot" data-text='{lang="hot_item"}' data-ipsTooltip title='{lang="hot_item_desc"}'>{{endif}}
<span class='ipsDataItem_stats_number'>{number="$v" format="short"}</span>
<span class='ipsDataItem_stats_type'>{lang="{$k}" pluralize="$v" format="short"}</span>
{{if \in_array( $k, $row->hotStats )}}</span>{{endif}}
{{if ( $k == 'forums_comments' OR $k == 'answers_no_number' ) && \IPS\forums\Topic::modPermission( 'unhide', NULL, $row->container() ) AND $unapprovedComments = $row->mapped('unapproved_comments')}}
</li>
<li>
<a href='{$row->url()->setQueryString( 'queued_posts', 1 )}' class='ipsType_warning ipsType_small ipsPos_right ipsResponsive_noFloat' data-ipsTooltip title='{lang="queued_posts_badge" pluralize="$row->topic_queuedposts"}'><i class='fa fa-warning'></i> <strong>{$unapprovedComments}</strong></a>
{{endif}}
</li>
{{endforeach}}
</ul>
</div>
</div>
{{if $table->canModerate()}}
<div class='ipsTopicSnippet__mod'>
<span class='ipsCustomInput'>
<input type='checkbox' data-role='moderation' name="moderate[{$row->$idField}]" data-actions="{expression="implode( ' ', $table->multimodActions( $row ) )"}" data-state='{{if $row->tableStates()}}{$row->tableStates()}{{endif}}'>
<span></span>
</span>
</div>
{{endif}}
</div>
</div>
<!-- Topic snippet -->
{{if isset($row->firstComment)}}
<div class='ipsTopicSnippet__snippet ipsType_normal ipsType_blendLinks ipsType_break'>
<p>{$row->firstComment->snippet(680)}</p>
</div>
{{endif}}
<!-- Bottom -->
<div class='ipsTopicSnippet__bottom ipsFlex ipsFlex-jc:between ipsFlex-ai:start '>
<!-- Last reply author -->
<div class='ipsTopicSnippet__last ipsFlex ipsFlex-ai:center'>
<!-- Avatar -->
<span class='ipsTopicSnippet__last-avatar'>{template="userPhoto" app="core" group="global" params="$row->lastCommenter(), 'tiny'"}</span>
<!-- Username and date -->
<div class='ipsTopicSnippet__last-text ipsType_light ipsType_blendLinks'>
{lang="topic_snippet_last_reply" htmlsprintf="$row->lastCommenter()->link(), $row->url( 'getLastComment' ), \IPS\DateTime::ts( $row->mapped('last_comment') )->html()"}
</div>
</div>
<div class='ipsTopicSnippet__meta ipsFlex ipsFlex-ai:center ipsFlex-fw:wrap'>
{{if $row->locked()}}
{{if $row->topic_open_time && $row->topic_open_time > time()}}
<span><strong class='ipsType_small ipsType_noBreak' data-ipsTooltip title='{lang="topic_unlocks_at" sprintf="\IPS\DateTime::ts( $row->topic_open_time )->relative(), \IPS\DateTime::ts( $row->topic_open_time )->localeTime( FALSE )"}'>{lang="topic_unlocks_at_short" sprintf="\IPS\DateTime::ts($row->topic_open_time)->relative(1)"}</strong>&nbsp;&nbsp;</span>
{{endif}}
{{elseif !$row->locked() && $row->topic_close_time && $row->topic_close_time > time()}}
<span><strong class='ipsType_small ipsType_noBreak' data-ipsTooltip title='{lang="topic_locks_at" sprintf="\IPS\DateTime::ts( $row->topic_close_time )->relative(), \IPS\DateTime::ts( $row->topic_close_time )->localeTime( FALSE )"}'><i class='fa fa-clock-o'></i> {lang="topic_locks_at_short" sprintf="\IPS\DateTime::ts($row->topic_close_time)->relative(1)"}</strong>&nbsp;&nbsp;</span>
{{endif}}
{{if \count( $row->tags() )}}
<div class='ipsTopicSnippet-meta__tags'>
{template="tags" group="global" app="core" params="$row->tags(), true"}
</div>
{{endif}}
<!-- Reactions -->
<div class='ipsTopicSnippet__reactions'>
{template="reactionOverview" group="global" app="core" params="$row, NULL, NULL"}
</div>
</div>
</div>
</li>
{{endif}}
{{if $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_fluid_index_view' ) and ( $rowCount + 1 > $advertisement->_additional_settings['ad_fluid_index_view_number'] and ( ( $rowCount + 1 ) % $advertisement->_additional_settings['ad_fluid_index_view_number'] === 1 ) )}}
{{if $advertisement->_additional_settings['ad_fluid_index_view_repeat'] == -1 or ( $advertisement->_additional_settings['ad_fluid_index_view_repeat'] > $adShown )}}
<li>{$advertisement|raw}</li>
{{$adShown++;}}
{{endif}}
{{endif}}
{{endforeach}}
{{endif}}]]></template>
<template template_group="index" template_name="simplifiedView" template_data="$table" template_location="front" template_app="forums"><![CDATA[<div class="ipsPageHeader ipsClearfix ipsMargin_bottom sm:ipsMargin_bottom:none cForumHeader ipsHeaderButtons">
{{if \IPS\forums\Forum::canOnAny( 'add' )}}
<ul class='ipsToolList ipsToolList_horizontal ipsClearfix ipsPos_right sm:ipsMargin_bottom:none'>
<li class='ipsToolList_primaryAction ipsResponsive_hidePhone'>
<a class="ipsButton ipsButton_medium ipsButton_important" href="{url="app=forums&module=forums&controller=forums&do=add" seoTemplate="topic_non_forum_add_button"}" rel="nofollow" data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title='{lang="select_forum"}'>{lang="start_new_topic"}</a>
</li>
{template="viewChange" group="global" app="forums" params=""}
</ul>
{{endif}}
<h1 class="ipsType_pageTitle">
{lang="topics"}
</h1>
</div>
<ul class="ipsToolList ipsToolList_horizontal ipsResponsive_hideDesktop ipsResponsive_block ipsClearfix">
{template="indexButtons" group="index" app="forums" params="FALSE, TRUE"}
</ul>
{$table|raw}]]></template>
<template template_group="index" template_name="simplifiedViewForumSidebar" template_data="$forum, $depth=0" template_location="front" template_app="forums"><![CDATA[<div data-controller="forums.front.forum.flow" data-rootForum="{$forum->_id}" class='ipsBox cForumMiniList_wrapper' id='elFluidFormFilters'>
<div class='ipsSideMenu'>
<ul class='ipsSideMenu_list cForumMiniList cForumMiniList_multiRoot'>
<li class="cForumMiniList_category" data-category>
{{if $forum->sub_can_post}}
{{$lastPost = $forum->lastPost();}}
{{$unread = \IPS\forums\Topic::containerUnread( $forum );}}
{{$children = $forum->children();}}
<a href="{$forum->url()}" data-parent-id="{$forum->_id}" data-node-id="{$forum->_id}" data-has-children="1" class='ipsSideMenu_item'>
<span class='cForumMiniList_blob' {{if $forum->feature_color}}style="background-color: {$forum->feature_color}; color: {$forum->_featureTextColor};"{{endif}} {{if $lastPost AND $lastPost['date']}}title="{lang="forum_simple_view_last_post"} {datetime="$lastPost['date']"}" data-ipsTooltip data-ipsTooltip-safe{{endif}}>
<span></span>
<i class='fa fa-check'></i>
</span>
<span class='cForumMiniList_title ipsTruncate ipsTruncate_line'>
{{if $unread}}<strong>{{endif}}{$forum->_title}{{if $unread}}</strong>{{endif}}
</span>
<span class='ipsType_small ipsType_light cForumMiniList_count'>{number="\IPS\forums\Topic::contentCountItemsOnly( $forum )" format="short"}</span>
</a>
{{else}}
<a href="{$forum->url()}" data-parent-id="{$forum->_id}" data-node-id="{$forum->_id}" class='ipsSideMenu_item ipsTruncate ipsTruncate_line'>{$forum->_title}</a>
{{endif}}
{{if $forum->hasChildren()}}
<ul class='ipsSideMenu_list cForumMiniList'>
{template="simplifiedViewForumSidebar_children" app="forums" location="front" group="index" params="$forum, $depth+1"}
</ul>
{{endif}}
</li>
</ul>
</div>
<div class='ipsResponsive_hideDesktop ipsResponsive_block'>
<hr class='ipsHr'>
<a href='#' class='ipsButton ipsButton_fullWidth ipsButton_primary ipsButton_medium' data-action='dialogClose'>{lang="done_forum_filtering"}</a>
</div>
</div>]]></template>
<template template_group="index" template_name="simplifiedViewForumSidebar_children" template_data="$parent" template_location="front" template_app="forums"><![CDATA[{{if $parent->hasChildren() }}
{{foreach $parent->children() as $idx => $forum}}
{{$lastPost = $forum->lastPost();}}
{{$unread = \IPS\forums\Topic::containerUnread( $forum );}}
{{$children = $forum->children();}}
{{if ! $forum->redirect_on and ( $forum->can('read') or !$forum->sub_can_post ) }}
<li class="{{if $children}}cForumMiniList_category{{endif}}">
<a href="{$forum->url()}" data-parent-id="{$parent->_id}" data-node-id="{$forum->_id}" data-has-children="{{if $children}}1{{else}}0{{endif}}" class='ipsSideMenu_item {{if !$unread}}cForumMiniList_unread{{endif}}'>
<span class='cForumMiniList_blob' {{if $forum->feature_color}}style="background-color: {$forum->feature_color}; color: {$forum->_featureTextColor};"{{endif}} {{if $lastPost AND $lastPost['date']}}title="{lang="forum_simple_view_last_post"} {datetime="$lastPost['date']"}" data-ipsTooltip data-ipsTooltip-safe{{endif}}>
<span></span>
<i class='fa fa-check'></i>
</span>
<span class='cForumMiniList_title ipsTruncate ipsTruncate_line'>
{{if $unread}}<strong>{{endif}}{$forum->_title}{{if $unread}}</strong>{{endif}}
</span>
<span class='ipsType_small ipsType_light cForumMiniList_count'>{number="\IPS\forums\Topic::contentCountItemsOnly( $forum )" format="short"}</span>
</a>
{{if $children}}
<ul class='ipsSideMenu_list cForumMiniList'>
{template="simplifiedViewForumSidebar_children" app="forums" location="front" group="index" params="$forum, 1"}
</ul>
{{endif}}
</li>
{{endif}}
{{endforeach}}
{{endif}}]]></template>
<template template_group="index" template_name="simplifiedViewSidebar" template_data="$forumIds, $map" template_location="front" template_app="forums"><![CDATA[<div data-controller="forums.front.forum.flow" class='ipsBox cForumMiniList_wrapper' id='elFluidFormFilters'>
<div class='ipsSideMenu'>
<ul class='ipsSideMenu_list cForumMiniList {{if \count( \IPS\forums\Forum::roots() ) === 1}}cForumMiniList_singleRoot{{else}}cForumMiniList_multiRoot{{endif}}'>
{{if \count( \IPS\forums\Forum::roots() ) === 1}}
{{foreach \IPS\forums\Forum::roots() as $category}}
{template="simplifiedViewSidebar_children" app="forums" location="front" group="index" params="$forumIds, $category, 0"}
{{endforeach}}
{{else}}
{{foreach \IPS\forums\Forum::roots() as $category}}
{{if $category->hasChildren()}}
<li class="" data-category>
<a href="{$category->url()}" data-parent-id="{$category->_id}" data-node-id="{$category->_id}" class='ipsSideMenu_item ipsTruncate ipsTruncate_line'>{$category->_title}</a>
{{if $category->hasChildren()}}
<ul class='ipsSideMenu_list cForumMiniList'>
{template="simplifiedViewSidebar_children" app="forums" location="front" group="index" params="$forumIds, $category, 0"}
</ul>
{{endif}}
</li>
{{endif}}
{{endforeach}}
{{endif}}
{{if settings.club_nodes_in_apps and $clubForums = \IPS\forums\Forum::clubNodes()}}
<li class="{{if \in_array( 'clubs', $map )}}cForumMiniList_categorySelected{{endif}}">
<a href="{url="app=forums&module=forums&controller=index&forumId=clubs" seoTemplate="forums"}" data-parent-id="clubs" data-node-id="clubs" class='{{if \in_array( 'clubs', $map )}}cForumMiniList_selected{{endif}} ipsSideMenu_item ipsTruncate ipsTruncate_line'>{lang="club_node_forums"}</a>
<ul class='ipsSideMenu_list cForumMiniList'>
{{foreach $clubForums as $idx => $forum}}
{{$lastPost = $forum->lastPost();}}
{{$unread = \IPS\forums\Topic::containerUnread( $forum );}}
{{$children = $forum->children();}}
{{if ! $forum->redirect_on and $forum->can('read') }}
<li class="{{if $children}}cForumMiniList_category{{endif}} {{if isset( $map[ $forum->parent_id ] ) AND \in_array( $forum->_id, $map[ $forum->parent_id ] )}}cForumMiniList_categorySelected{{endif}}">
<a href="{$forum->url()}" data-parent-id="clubs" data-node-id="{$forum->_id}" data-has-children="{{if $children}}1{{else}}0{{endif}}" class='{{if \in_array( $forum->_id, $forumIds )}}cForumMiniList_selected{{endif}} ipsSideMenu_item {{if !$unread}}cForumMiniList_unread{{endif}}'>
<span class='cForumMiniList_blob' {{if $forum->feature_color}}style="background-color: {$forum->feature_color}; color: {$forum->_featureTextColor};"{{endif}} {{if $lastPost AND $lastPost['date']}}title="{lang="forum_simple_view_last_post"} {datetime="$lastPost['date']"}" data-ipsTooltip data-ipsTooltip-safe{{endif}}>
<span></span>
<i class='fa fa-check'></i>
</span>
<span class='cForumMiniList_title ipsTruncate ipsTruncate_line'>
{{if $unread}}<strong>{{endif}}{lang="club_node" sprintf="$forum->club()->name, $forum->_title"}{{if $unread}}</strong>{{endif}}
</span>
<span class='ipsType_small ipsType_light cForumMiniList_count'>{number="\IPS\forums\Topic::contentCount( $forum )" format="short"}</span>
</a>
</li>
{{endif}}
{{endforeach}}
</ul>
</li>
{{endif}}
</ul>
</div>
<div class='ipsResponsive_hideDesktop ipsResponsive_block'>
<hr class='ipsHr'>
<a href='#' class='ipsButton ipsButton_fullWidth ipsButton_primary ipsButton_medium' data-action='dialogClose'>{lang="done_forum_filtering"}</a>
</div>
</div>]]></template>
<template template_group="index" template_name="simplifiedViewSidebar_children" template_data="$forumIds, $parent, $depth" template_location="front" template_app="forums"><![CDATA[{{if $parent->hasChildren() and $depth < 5}}
{{foreach $parent->children() as $idx => $forum}}
{{$lastPost = $forum->lastPost();}}
{{$unread = \IPS\forums\Topic::containerUnread( $forum );}}
{{$children = $forum->children();}}
{{if ! $forum->redirect_on and ( $forum->can('read') or !$forum->sub_can_post ) }}
<li class="{{if $children}}cForumMiniList_category{{endif}}">
<a href="{$forum->url()}" data-parent-id="{$parent->_id}" data-node-id="{$forum->_id}" data-has-children="{{if $children}}1{{else}}0{{endif}}" class='ipsSideMenu_item {{if !$unread}}cForumMiniList_unread{{endif}}'>
<span class='cForumMiniList_blob' {{if $forum->feature_color}}style="background-color: {$forum->feature_color}; color: {$forum->_featureTextColor};"{{endif}} {{if $lastPost AND $lastPost['date']}}title="{lang="forum_simple_view_last_post"} {datetime="$lastPost['date']"}" data-ipsTooltip data-ipsTooltip-safe{{endif}}>
<span></span>
<i class='fa fa-check'></i>
</span>
<span class='cForumMiniList_title ipsTruncate ipsTruncate_line'>
{{if $unread}}<strong>{{endif}}{$forum->_title}{{if $unread}}</strong>{{endif}}
</span>
<span class='ipsType_small ipsType_light cForumMiniList_count'>{number="\IPS\forums\Topic::contentCount( $forum )" format="short"}</span>
</a>
{{if $children}}
<ul class='ipsSideMenu_list cForumMiniList'>
{template="simplifiedViewSidebar_children" app="forums" location="front" group="index" params="$forumIds, $forum, $depth+1"}
</ul>
{{endif}}
</li>
{{endif}}
{{endforeach}}
{{endif}}]]></template>
<template template_group="livesearch" template_name="forum" template_data="$forum" template_location="admin" template_app="forums"><![CDATA[<li class='ipsPad_half ipsClearfix' data-role='result'>
<a href='{url="app=forums&module=forums&controller=forums&do=form&id="}{$forum->id}' class='ipsPos_left'>{$forum->_title}</a>
</li>
]]></template>
<template template_group="settings" template_name="archiveOffCic" template_data="" template_location="admin" template_app="forums"><![CDATA[<div class='ipsPadding'>
<p class='ipsType_large'>
{lang="archiving_blurb_off_cloud"}
</p>
</div>]]></template>
<template template_group="settings" template_name="archiveRuleGtLt" template_data="$name, $value" template_location="admin" template_app="forums"><![CDATA[<select name="{$name}[0]">
<option value=">" {{if isset( $value[0] ) and $value[0] == '>'}}selected{{endif}}>{lang="greater_than"}</option>
<option value="<" {{if isset( $value[0] ) and $value[0] == '<'}}selected{{endif}}>{lang="less_than"}</option>
</select>
<input type="number" name="{$name}[1]" value="{{if isset( $value[1] )}}{$value[1]}{{endif}}" id='el{$name}_1' class="ipsField_short"> {lang="or"}
<span class='ipsCustomInput'>
<input type="checkbox" name="{$name}[2]" data-control="unlimited" {{if isset( $value[2] ) and $value[2]}}checked{{endif}}>
<span></span>
</span> <label for='el{$name}_1' class='ipsField_unlimited'>{{if \in_array( $name, array( 'archive_topic_post', 'archive_topic_view', 'archive_topic_rating', 'archive_not_topic_post', 'archive_not_topic_view', 'archive_not_topic_rating' ) )}}{lang="no_restriction"}{{else}}{lang="any_time"}{{endif}}</label>]]></template>
<template template_group="settings" template_name="archiveRules" template_data="$form, $totalTopics, $existingCount, $existingPercentage" template_location="admin" template_app="forums"><![CDATA[<div data-controller="forums.admin.settings.archiveRules">
<div class="ipsPad ipsType_normal">{lang="archiving_blurb"}</div>
<div data-ipsSticky data-ipsSticky-spacing='60' class="ipsPad_half ipsAreaBackground_reset ipsType_center">
<strong>{lang="archive_rules_effects"}</strong><br>
<div class="ipsProgressBar">
<div class="ipsProgressBar_progress" style="width:{$existingPercentage}%" data-role="percentageBar"><span data-role="percentage">{$existingPercentage}</span>% (<span data-role="number">{$existingCount}</span>/{$totalTopics})</div>
</div>
</div>
{$form|raw}
</div>]]></template>
<template template_group="settings" template_name="archiveRuleTime" template_data="$name, $value" template_location="admin" template_app="forums"><![CDATA[<select name="{$name}[0]">
<option value="<" {{if isset( $value[0] ) and $value[0] == '<'}}selected{{endif}}>{lang="greater_than"}</option>
<option value=">" {{if isset( $value[0] ) and $value[0] == '>'}}selected{{endif}}>{lang="less_than"}</option>
</select>
<input type="number" name="{$name}[1]" value="{{if isset( $value[1] )}}{$value[1]}{{endif}}" class="ipsField_short" min="0">
<select name="{$name}[2]">
<option value="d" {{if isset( $value[2] ) and $value[2] == 'd'}}selected{{endif}}>{lang="days"}</option>
<option value="m" {{if isset( $value[2] ) and $value[2] == 'm'}}selected{{endif}}>{lang="months"}</option>
<option value="y" {{if isset( $value[2] ) and $value[2] == 'y'}}selected{{endif}}>{lang="years"}</option>
</select>
{lang="ago"} {lang="or"}
<span class='ipsCustomInput'>
<input type="checkbox" name="{$name}[3]" id='el{$name}_3' data-control="unlimited" {{if isset( $value[3] ) and $value[3]}}checked{{endif}}>
<span></span>
</span> <label for='el{$name}_3' class='ipsField_unlimited'>{{if mb_strpos( $name, 'not' )}}{lang="no_restriction"}{{else}}{lang="any_time"}{{endif}}</label>]]></template>
<template template_group="settings" template_name="popularNow" template_data="$name, $value, $popularNowMaximum" template_location="admin" template_app="forums"><![CDATA[<input type="number" name="{$name}[posts]" value="{$value['posts']}" class="ipsField_short"> {lang="posts_in_the_last"} <input type="number" name="{$name}[minutes]" value="{$value['minutes']}" max="{$popularNowMaximum}" class="ipsField_short"> {lang="minutes"} {lang="or"}
<span class='ipsCustomInput'>
<input type="checkbox" name="{$name}[never]" id='el{$name}_never' data-control="unlimited" {{if !$value['posts']}}checked{{endif}}>
<span></span>
</span> <label for='el{$name}_never' class='ipsField_unlimited'>{lang="never"}</label>]]></template>
<template template_group="stats" template_name="solvedPercentage" template_data="$value, $total, $solved, $previousValue=NULL, $previousTotal=NULL, $previousSolved=NULL, $nodes=array()" template_location="admin" template_app="forums"><![CDATA[ <div>
<span class='cStat__number cStat__number--medium' data-number='{$value}' data-ipsTooltip title="{lang="stats_solved_tooltip" sprintf="$solved, $total"}">{$value}%</span>
{{if isset( $previousValue )}}
<p class='ipsType_reset cStat__change cStat__change--large {{if $previousValue > $value}}ipsType_negative{{elseif $previousValue < $value}}ipsType_positive{{else}}ipsType_neutral{{endif}}' data-ipsTooltip title="{lang="stats_solved_tooltip_prev" sprintf="$previousSolved, $previousTotal, $previousValue"}">
{{if $previousValue > $value}}
-{expression="$previousValue - $value"}%
{{elseif $previousValue < $value}}
{{if $previousValue}}+{expression="$value - $previousValue"}%{{else}}+ ∞{{endif}}
{{else}}
&mdash;
{{endif}}
</p>
{{endif}}
{{if \count( $nodes )}}
<hr class='ipsHr'>
<div class='ipsFlex'>
<div class='cStatTile__split'>
<p class='ipsType_reset cStat__change cStat__change--small'>
{lang="overview_stats_curfilter" list="$nodes"}
</p>
</div>
</div>
{{endif}}
</div>]]></template>
<template template_group="stats" template_name="statsTypeWrapper" template_data="$form, $solvedCount, $recommendedCount, $startTime, $endTime" template_location="admin" template_app="forums"><![CDATA[<div class=''>
<div class='ipsBox'>
<h1 class='ipsBox_titleBar'>{lang="stats_posts_by_type"}</h1>
<div>
{$form|raw}
</div>
</div>
</div>
<div class='ipsSpacer_top ipsSpacer_double'>
<table class="ipsTable ipsTable_responsive ipsTable_zebra " data-role="table">
<thead>
<tr class="ipsAreaBackground">
<th>{lang="stats_posts_type_type"}</th>
<th>{lang="stats_posts_type_count"}</th>
</tr>
</thead>
<tbody>
<tr class="ipsClearfix">
<td class="">
{lang="stats_posts_type_solved"}
</td>
<td><a href='{url="app=forums&module=stats&controller=posts&do=showSolvedPosts&startTime={$startTime}&endTime={$endTime}"}' data-ipsDialog data-ipsDialog-title='{lang="stats_posts_type_solved"}' title="{lang="stats_posts_show_posts"}" data-ipsTooltip>{$solvedCount}</a></td>
</tr>
<tr>
<td class=" ipsTable_wrap ipsTable_primary ">
{lang="stats_posts_type_recommended"}
</td>
<td><a href='{url="app=forums&module=stats&controller=posts&do=showRecommendedPosts&startTime={$startTime}&endTime={$endTime}"}' data-ipsDialog data-ipsDialog-title='{lang="stats_posts_type_recommended"}' title="{lang="stats_posts_show_posts"}" data-ipsTooltip>{$recommendedCount}</a></td>
</tr>
</tbody>
</table>
</div>
]]></template>
<template template_group="stats" template_name="timeToSolved" template_data="$value, $previousValue=NULL, $nodes=array()" template_location="admin" template_app="forums"><![CDATA[ <div>
<span class='cStat__number cStat__number--medium' data-number='{$value}'>{expression="\IPS\DateTime::roundedDiffFromSeconds( $value )"}</span>
{{if isset( $previousValue )}}
<p class='ipsType_reset cStat__change cStat__change--large {{if $previousValue < $value}}ipsType_negative{{elseif $previousValue > $value}}ipsType_positive{{else}}ipsType_neutral{{endif}}' data-ipsTooltip title="{lang="previous_period"} {expression="\IPS\DateTime::roundedDiffFromSeconds( $previousValue )"}">
{{if $previousValue > $value}}
-{expression="round( 100 - ( $value / $previousValue * 100 ), 2 )"}%
{{elseif $previousValue < $value}}
{{if $previousValue}}+{expression="round( ( ( $value - $previousValue ) / $previousValue ) * 100, 2 )"}%{{else}}+ ∞{{endif}}
{{else}}
&mdash;
{{endif}}
</p>
{{endif}}
{{if \count( $nodes )}}
<hr class='ipsHr'>
<div class='ipsFlex'>
<div class='cStatTile__split'>
<p class='ipsType_reset cStat__change cStat__change--small'>
{lang="overview_stats_curfilter" list="$nodes"}
</p>
</div>
</div>
{{endif}}
</div>]]></template>
<template template_group="submit" template_name="createTopic" template_data="$form, $forum, $title" template_location="front" template_app="forums"><![CDATA[
{{if $club = $forum->club()}}
{{if settings.clubs and settings.clubs_header == 'full'}}
{template="header" app="core" group="clubs" params="$club, $forum"}
{{endif}}
<div id='elClubContainer'>
{{endif}}
{template="pageHeader" if="!\IPS\Request::i()->isAjax()" group="global" app="core" params="\IPS\Member::loggedIn()->language()->addToStack( $title )"}
{$form|raw}
{{if $club = $forum->club()}}
</div>
{{endif}}]]></template>
<template template_group="submit" template_name="createTopicForm" template_data="$forum, $hasModOptions, $topic, $id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class='', $attributes=array(), $sidebar=NULL, $form=NULL, $errorTabs=array()" template_location="front" template_app="forums"><![CDATA[{{$modOptions = array( 'topic_create_state', 'create_topic_locked', 'create_topic_pinned', 'create_topic_hidden', 'create_topic_featured', 'topic_open_time', 'topic_close_time');}}
<form accept-charset='utf-8' class="ipsForm {$class}" action="{$action}" method="post" {{if $uploadField}}enctype="multipart/form-data"{{endif}} data-ipsForm data-ipsFormSubmit>
<input type="hidden" name="{$id}_submitted" value="1">
{{foreach $hiddenValues as $k => $v}}
<input type="hidden" name="{$k}" value="{$v}">
{{endforeach}}
{{if $uploadField}}
<input type="hidden" name="MAX_FILE_SIZE" value="{$uploadField}">
<input type="hidden" name="plupload" value="{expression="md5( mt_rand() )"}">
{{endif}}
{{if $form->error}}
<p class="ipsMessage ipsMessage_error">{$form->error}</p>
{{endif}}
<div class='ipsBox ipsResponsive_pull'>
<h2 class='ipsType_sectionTitle ipsType_reset ipsHide'>{lang="topic_details"}</h2>
{{if \count( $elements ) > 1}}
{{if !empty( $errorTabs )}}
<p class="ipsMessage ipsMessage_error ipsJS_show">{lang="tab_error"}</p>
{{endif}}
<div class='ipsTabs ipsClearfix ipsJS_show' id='tabs_{$id}' data-ipsTabBar data-ipsTabBar-contentArea='#ipsTabs_content_{$id}'>
<a href='#tabs_{$id}' data-action='expandTabs'><i class='fa fa-caret-down'></i></a>
<ul role='tablist'>
{{foreach $elements as $name => $content}}
<li>
<a href='#ipsTabs_tabs_{$id}_{$id}_tab_{$name}_panel' id='{$id}_tab_{$name}' class="ipsTabs_item {{if \in_array( $name, $errorTabs )}}ipsTabs_error{{endif}}" role="tab" aria-selected="{{if $name == 'mainTab'}}true{{else}}false{{endif}}">
{{if \in_array( $name, $errorTabs )}}<i class="fa fa-exclamation-circle"></i> {{endif}}{lang="$name"}
</a>
</li>
{{endforeach}}
</ul>
</div>
<div id='ipsTabs_content_{$id}' class='ipsTabs_panels'>
{{foreach $elements as $name => $contents}}
<div id='ipsTabs_tabs_{$id}_{$id}_tab_{$name}_panel' class="ipsTabs_panel ipsPadding" aria-labelledby="{$id}_tab_{$name}" aria-hidden="false">
{{if $hasModOptions && $name == 'topic_mainTab'}}
<div class='ipsColumns ipsColumns_collapsePhone'>
<div class='ipsColumn ipsColumn_fluid'>
{{endif}}
<ul class='ipsForm ipsForm_vertical'>
{{foreach $contents as $inputName => $input}}
{{if !\in_array( $inputName, $modOptions )}}
{$input|raw}
{{endif}}
{{endforeach}}
</ul>
{{if $hasModOptions && $name == 'topic_mainTab'}}
</div>
<div class='ipsColumn ipsColumn_wide'>
{template="createTopicModOptions" group="submit" app="forums" params="$elements, $modOptions"}
</div>
</div>
{{endif}}
</div>
{{endforeach}}
</div>
{{else}}
<div class='ipsPadding'>
{{if $hasModOptions}}
<div class='ipsColumns ipsColumns_collapsePhone'>
<div class='ipsColumn ipsColumn_fluid'>
{{endif}}
<ul class='ipsForm ipsForm_vertical'>
{{foreach $elements as $collection}}
{{foreach $collection as $inputName => $input}}
{{if !\in_array( $inputName, $modOptions )}}
{$input|raw}
{{endif}}
{{endforeach}}
{{endforeach}}
</ul>
{{if $hasModOptions}}
</div>
<div class='ipsColumn ipsColumn_wide'>
{template="createTopicModOptions" group="submit" app="forums" params="$elements, $modOptions"}
</div>
</div>
{{endif}}
</div>
{{endif}}
<div class='ipsAreaBackground_reset ipsPadding ipsType_center ipsBorder_top ipsRadius:bl ipsRadius:br'>
{{if $topic}}
<button type='submit' class='ipsButton ipsButton_large ipsButton_primary' tabindex="1" accesskey="s" role="button">{{if $forum->forums_bitoptions['bw_enable_answers']}}{lang="submit_question_edit"}{{else}}{lang="submit_topic_edit"}{{endif}}</button>
{{else}}
<button type='submit' class='ipsButton ipsButton_large ipsButton_primary' tabindex="1" accesskey="s" role="button">{{if $forum->forums_bitoptions['bw_enable_answers']}}{lang="submit_question"}{{else}}{lang="submit_topic"}{{endif}}</button>
{{endif}}
</div>
</div>
</form>]]></template>
<template template_group="submit" template_name="createTopicModOptions" template_data="$elements, $modOptions" template_location="front" template_app="forums"><![CDATA[
<div class='ipsBox ipsBox--child'>
<h3 class='ipsType_sectionTitle'>{lang="topic_moderator_options"}</h3>
<ul class='ipsPadding ipsForm ipsForm_vertical'>
{{foreach $elements as $collection}}
{{foreach $collection as $inputName => $input}}
{{if \in_array( $inputName, $modOptions )}}
{{if $inputName == 'topic_open_time' or $inputName == 'topic_close_time'}}
<li class='ipsFieldRow ipsClearfix'>
<label class="ipsFieldRow_label" for="elInput_{$input->name}">{lang="$input->name"}</label>
<ul class='ipsFieldRow_content ipsList_reset cCreateTopic_date'>
<li>
<i class='fa fa-calendar'></i>
<input type="date" name="{$input->name}" id="elInput_{$input->name}" class="ipsField_short" data-control="date" placeholder='{expression="str_replace( array( 'YYYY', 'MM', 'DD' ), array( \IPS\Member::loggedIn()->language()->addToStack('_date_format_yyyy'), \IPS\Member::loggedIn()->language()->addToStack('_date_format_mm'), \IPS\Member::loggedIn()->language()->addToStack('_date_format_dd') ), str_replace( 'Y', 'YY', \IPS\Member::loggedIn()->language()->preferredDateFormat() ) )"}' value="{{if $input->value instanceof \IPS\DateTime}}{$input->value->format('Y-m-d')}{{else}}{$input->value}{{endif}}" data-preferredFormat="{{if $input->value instanceof \IPS\DateTime}}{$input->value->localeDate()}{{else}}{$input->value}{{endif}}">
</li>
<li>
<i class='fa fa-clock-o'></i>
<input name="{$input->name}_time" type="time" size="12" class="ipsField_short" placeholder="{lang="_time_format_hhmm"}" step="60" min="00:00" value="{{if $input->value instanceof \IPS\DateTime}}{$input->value->format('H:i')}{{endif}}">
</li>
</ul>
</li>
{{else}}
{$input|raw}
{{endif}}
{{endif}}
{{endforeach}}
{{endforeach}}
</ul>
</div>]]></template>
<template template_group="topics" template_name="activity" template_data="$topic, $location" template_location="front" template_app="forums"><![CDATA[{{$lastPoster = \IPS\Member::load( $topic->last_poster_id);}}
{{$members = $topic->topPosters(4);}}
{{$busy = $topic->showSummaryFeature('popularDays') ? $topic->popularDays(4) : FALSE;}}
{{$reacted = $topic->showSummaryFeature('topPost') ? $topic->topReactedPosts(3) : FALSE;}}
{{$images = $topic->showSummaryFeature('uploads') ? $topic->imageAttachments(4) : FALSE;}}
{{$isQA = $topic->container()->forums_bitoptions['bw_enable_answers'];}}
{{if $location == 'sidebar'}}
<div class="ipsBox ipsResponsive_hideTablet ipsResponsive_hidePhone cTopicOverview cTopicOverview--sidebar ipsFlex ipsFlex-fd:column md:ipsFlex-fd:row sm:ipsFlex-fd:column" data-controller='forums.front.topic.activity'>
{{else}}
<div class="ipsBox cTopicOverview cTopicOverview--inline ipsFlex ipsFlex-fd:row md:ipsFlex-fd:row sm:ipsFlex-fd:column ipsMargin_bottom sm:ipsMargin_bottom:half sm:ipsMargin_top:half ipsResponsive_pull {{if $topic->showSummaryOnDesktop() != 'post'}}ipsResponsive_hideDesktop ipsResponsive_block{{endif}} {{if ! $topic->showSummaryOnMobile()}}ipsResponsive_hidePhone ipsResponsive_block{{endif}}" data-controller='forums.front.topic.activity'>
{{endif}}
<div class='cTopicOverview__header ipsAreaBackground_light ipsFlex sm:ipsFlex-fw:wrap sm:ipsFlex-jc:center'>
<ul class='cTopicOverview__stats ipsPadding ipsMargin:none sm:ipsPadding_horizontal:half ipsFlex ipsFlex-flex:10 ipsFlex-jc:around ipsFlex-ai:center'>
<li class='cTopicOverview__statItem ipsType_center'>
<span class='cTopicOverview__statTitle ipsType_light ipsTruncate ipsTruncate_line'>{{if $isQA}}{lang="forum_preview_posts_answers"}{{else}}{lang="replies"}{{endif}}</span>
<span class='cTopicOverview__statValue'>{number="$topic->posts-1" format="short"}</span>
</li>
<li class='cTopicOverview__statItem ipsType_center'>
<span class='cTopicOverview__statTitle ipsType_light ipsTruncate ipsTruncate_line'>{lang="topicactivity_created"}</span>
<span class='cTopicOverview__statValue'>{datetime="$topic->start_date" short="true"}</span>
</li>
<li class='cTopicOverview__statItem ipsType_center'>
<span class='cTopicOverview__statTitle ipsType_light ipsTruncate ipsTruncate_line'>{lang="last_reply"}</span>
<span class='cTopicOverview__statValue'>{datetime="$topic->last_post" short="true"}</span>
</li>
</ul>
<a href='#' data-action='toggleOverview' class='cTopicOverview__toggle cTopicOverview__toggle--inline ipsType_large ipsType_light ipsPad ipsFlex ipsFlex-ai:center ipsFlex-jc:center'><i class='fa fa-chevron-down'></i></a>
</div>
{{if $location !== 'sidebar'}}
<div class='cTopicOverview__preview ipsFlex-flex:10' data-role="preview">
<div class='cTopicOverview__previewInner ipsPadding_vertical ipsPadding_horizontal ipsResponsive_hidePhone ipsFlex ipsFlex-fd:row'>
{{if $members}}
<div class='cTopicOverview__section--users ipsFlex-flex:00'>
<h4 class='ipsType_reset cTopicOverview__sectionTitle ipsType_dark ipsType_uppercase ipsType_noBreak'>{{if $isQA}}{lang="topicactivity_topposters_qa"}{{else}}{lang="topicactivity_topposters"}{{endif}}</h4>
<ul class='cTopicOverview__dataList ipsMargin:none ipsPadding:none ipsList_style:none ipsFlex ipsFlex-jc:between ipsFlex-ai:center'>
{{foreach $members as $data}}
<li class="cTopicOverview__dataItem ipsMargin_right ipsFlex ipsFlex-jc:start ipsFlex-ai:center">
{template="userPhoto" app="core" group="global" params="$data['member'], 'tiny'"}
<p class='ipsMargin:none ipsPadding_left:half ipsPadding_right ipsType_right'>{$data['count']}</p>
</li>
{{endforeach}}
</ul>
</div>
{{endif}}
{{if $busy}}
<div class='cTopicOverview__section--popularDays ipsFlex-flex:00 ipsPadding_left ipsPadding_left:double'>
<h4 class='ipsType_reset cTopicOverview__sectionTitle ipsType_dark ipsType_uppercase ipsType_noBreak'>{lang="topicactivity_populardays"}</h4>
<ul class='cTopicOverview__dataList ipsMargin:none ipsPadding:none ipsList_style:none ipsFlex ipsFlex-jc:between ipsFlex-ai:center'>
{{foreach $busy as $row}}
<li class='ipsFlex-flex:10'>
<a href="{$topic->shareableUrl( $row['commentId'] )}" rel="nofollow" class='cTopicOverview__dataItem ipsMargin_right ipsType_blendLinks ipsFlex ipsFlex-jc:between ipsFlex-ai:center'>
<p class='ipsMargin:none'>{$row['date']->dayAndShortMonth()}</p>
<p class='ipsMargin:none ipsMargin_horizontal ipsType_light'>{$row['count']}</p>
</a>
</li>
{{endforeach}}
</ul>
</div>
{{endif}}
</div>
</div>
{{endif}}
{{if $members OR $busy OR $reacted OR $images}}
<div class='cTopicOverview__body ipsPadding {{if $location !== 'sidebar'}}ipsHide ipsFlex ipsFlex-flex:11 ipsFlex-fd:column{{endif}}' data-role="overview">
{{if $members}}
<div class='cTopicOverview__section--users ipsMargin_bottom'>
<h4 class='ipsType_reset cTopicOverview__sectionTitle ipsType_withHr ipsType_dark ipsType_uppercase ipsMargin_bottom'>{{if $isQA}}{lang="topicactivity_topposters_qa"}{{else}}{lang="topicactivity_topposters"}{{endif}}</h4>
<ul class='cTopicOverview__dataList ipsList_reset ipsFlex {{if $location == 'sidebar'}}ipsFlex-jc:between{{else}}ipsFlex-jc:start{{endif}} ipsFlex-ai:center ipsFlex-fw:wrap ipsGap:8 ipsGap_row:5'>
{{foreach $members as $data}}
<li class="cTopicOverview__dataItem cTopicOverview__dataItem--split ipsFlex ipsFlex-jc:start ipsFlex-ai:center ipsFlex-flex:11">
{template="userPhoto" app="core" group="global" params="$data['member'], 'tiny'"}
<p class='ipsMargin:none ipsMargin_left:half cTopicOverview__dataItemInner ipsType_left'>
<strong class='ipsTruncate ipsTruncate_line'><a href='{$data['member']->url()}' class='ipsType_blendLinks'>{$data['member']->name}</a></strong>
<span class='ipsType_light'>{lang="topicactivity_number_posts" pluralize="$data['count']"}</span>
</p>
</li>
{{endforeach}}
</ul>
</div>
{{endif}}
{{if $busy}}
<div class='cTopicOverview__section--popularDays ipsMargin_bottom'>
<h4 class='ipsType_reset cTopicOverview__sectionTitle ipsType_withHr ipsType_dark ipsType_uppercase ipsMargin_top:half ipsMargin_bottom'>{lang="topicactivity_populardays"}</h4>
<ul class='cTopicOverview__dataList ipsList_reset ipsFlex {{if $location == 'sidebar'}}ipsFlex-jc:between{{else}}ipsFlex-jc:start{{endif}} ipsFlex-ai:center ipsFlex-fw:wrap ipsGap:8 ipsGap_row:5'>
{{foreach $busy as $row}}
<li class='ipsFlex-flex:10'>
<a href="{$topic->shareableUrl( $row['commentId'] )}" rel="nofollow" class='cTopicOverview__dataItem ipsType_blendLinks'>
<p class='ipsMargin:none ipsType_bold'>{$row['date']->dayAndShortMonth()} {$row['date']->format('Y')}</p>
<p class='ipsMargin:none ipsType_light'>{lang="topicactivity_number_posts" pluralize="$row['count']"}</p>
</a>
</li>
{{endforeach}}
</ul>
</div>
{{endif}}
{{if $reacted}}
<div class='cTopicOverview__section--topPost ipsMargin_bottom'>
<h4 class='ipsType_reset cTopicOverview__sectionTitle ipsType_withHr ipsType_dark ipsType_uppercase ipsMargin_top:half'>{lang="topicactivity_popularposts"}</h4>
{{foreach $reacted as $data}}
<a href="{$data['comment']->url()}" rel="nofollow" class="ipsType_noLinkStyling ipsBlock">
<div class='ipsPhotoPanel ipsPhotoPanel_tiny ipsClearfix ipsMargin_top'>
<span class='ipsUserPhoto ipsUserPhoto_tiny'>
<img src='{$data['comment']->author()->photo}' alt='{$data['comment']->author()->name}'>
</span>
<div>
<h5 class='ipsType_reset ipsType_bold ipsType_normal ipsType_blendLinks'>{$data['comment']->author()->name}</h5>
<p class='ipsMargin:none ipsType_light ipsType_resetLh'>{datetime="$data['comment']->mapped('date')"}</p>
</div>
</div>
<p class='ipsMargin:none ipsMargin_top:half ipsType_medium ipsType_richText' data-ipsTruncate data-ipsTruncate-size='3 lines' data-ipsTruncate-type='remove'>
{$data['comment']->truncated(true, 200)}
</p>
</a>
{{endforeach}}
</div>
{{endif}}
{{if $images}}
<div class='cTopicOverview__section--images'>
<h4 class='ipsType_reset cTopicOverview__sectionTitle ipsType_withHr ipsType_dark ipsType_uppercase ipsMargin_top:half'>{lang="topicactivity_images"}</h4>
<div class="ipsMargin_top:half" data-controller='core.front.core.lightboxedImages'>
<ul class='cTopicOverview__imageGrid ipsMargin:none ipsPadding:none ipsList_style:none ipsFlex ipsFlex-fw:wrap'>
{{foreach $images as $row}}
{{$image = \IPS\File::get( 'core_Attachment', ( $row['attach_thumb_location'] ) ? $row['attach_thumb_location'] : $row['attach_location'] )->url;}}
<li class='cTopicOverview__image'>
<a href="{$row['commentUrl']}" rel="nofollow" class='ipsThumb ipsThumb_bg' data-background-src="{$image}">
<img src="{expression="\IPS\Text\Parser::blankImage()"}" data-src="{$image}" class="ipsImage">
</a>
</li>
{{endforeach}}
</ul>
</div>
</div>
{{endif}}
</div>
{{if $location !== 'sidebar'}}
<a href='#' data-action='toggleOverview' class='cTopicOverview__toggle cTopicOverview__toggle--afterStats ipsType_large ipsType_light ipsPad ipsFlex ipsFlex-ai:center ipsFlex-jc:center'><i class='fa fa-chevron-down'></i></a>
{{endif}}
{{endif}}
{{if $location == 'sidebar'}}
</div>
{{else}}
</div>
{{endif}}
]]></template>
<template template_group="topics" template_name="post" template_data="$item, $comment, $editorName, $app, $type, $class=''" template_location="front" template_app="forums"><![CDATA[{{$idField = $comment::$databaseColumnId;}}
<div id='comment-{$comment->$idField}_wrap' data-controller='core.front.core.comment' data-commentApp='{$app}' data-commentType='{$type}' data-commentID="{$comment->$idField}" data-quoteData='{expression="json_encode( array('userid' => $comment->author()->member_id, 'username' => $comment->author()->name, 'timestamp' => $comment->mapped('date'), 'contentapp' => $comment::$application, 'contenttype' => $type, 'contentid' => $item->tid, 'contentclass' => $class, 'contentcommentid' => $comment->$idField) )"}' class='ipsComment_content ipsType_medium'>
<div class='ipsComment_meta ipsType_light ipsFlex ipsFlex-ai:center ipsFlex-jc:between ipsFlex-fd:row-reverse'>
<div class='ipsType_light ipsType_reset ipsType_blendLinks ipsComment_toolWrap'>
<div class='ipsResponsive_hidePhone ipsComment_badges'>
<ul class='ipsList_reset ipsFlex ipsFlex-jc:end ipsFlex-fw:wrap ipsGap:2 ipsGap_row:1'>
{{if ! $comment->isFirst() and $comment->author()->member_id AND $comment->author()->member_id == $item->author()->member_id}}
<li><strong class="ipsBadge ipsBadge_large ipsComment_authorBadge">{lang="author"}</strong></li>
{{endif}}
{{if $comment->author()->hasHighlightedReplies()}}
<li><strong class='ipsBadge ipsBadge_large ipsBadge_highlightedGroup'>{expression="\IPS\Member\Group::load( $comment->author()->member_group_id )->name" raw="true"}</strong></li>
{{endif}}
{{if ( $comment->item()->isSolved() and $comment->item()->mapped('solved_comment_id') == $comment->pid )}}
<li><strong class='ipsBadge ipsBadge_large ipsBadge_positive ipsBadge_reverse'><i class='fa fa-check'></i> {lang="this_is_a_solved_post"}</strong></li>
{{endif}}
{{if $comment->isFeatured()}}
<li><strong class='ipsBadge ipsBadge_large ipsBadge_popular'>{lang="this_is_a_featured_post"}</strong></li>
{{endif}}
{{if ( settings.reputation_enabled and settings.reputation_highlight and $comment->reactionCount() >= settings.reputation_highlight ) }}
<li><strong class='ipsBadge ipsBadge_large ipsBadge_popular'>{lang="this_is_a_popular_post"}</strong></li>
{{endif}}
</ul>
</div>
<ul class='ipsList_reset ipsComment_tools'>
<li>
<a href='#elControls_{$comment->$idField}_menu' class='ipsComment_ellipsis' id='elControls_{$comment->$idField}' title='{lang="more_options"}' data-ipsMenu data-ipsMenu-appendTo='#comment-{$comment->$idField}_wrap'><i class='fa fa-ellipsis-h'></i></a>
<ul id='elControls_{$comment->$idField}_menu' class='ipsMenu ipsMenu_narrow ipsHide'>
{{if $comment->canReportOrRevoke() === TRUE}}
<li class='ipsMenu_item'><a href='{$comment->url('report')}' {{if member.member_id or \IPS\Helpers\Form\Captcha::supportsModal()}}data-ipsDialog data-ipsDialog-remoteSubmit data-ipsDialog-size='medium' data-ipsDialog-flashMessage='{lang="report_submit_success"}' data-ipsDialog-title="{lang="report_post"}"{{endif}} data-action='reportComment' title='{lang="report_content"}'>{lang="report"}</a></li>
{{endif}}
{{if ! \IPS\Output::i()->reduceLinks()}}
{{if $comment->mapped('first') }}
<li class='ipsMenu_item'><a href='{$comment->item()->url()}' title='{lang="share_this_post"}' data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-content='#elShareComment_{$comment->$idField}_menu' data-ipsDialog-title="{lang="share_this_post"}" id='elSharePost_{$comment->$idField}' data-role='shareComment'>{lang="share"}</a></li>
{{else}}
<li class='ipsMenu_item'><a href='{$comment->shareableUrl()}' rel="nofollow" title='{lang="share_this_post"}' data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-content='#elShareComment_{$comment->$idField}_menu' data-ipsDialog-title="{lang="share_this_post"}" id='elSharePost_{$comment->$idField}' data-role='shareComment'>{lang="share"}</a></li>
{{endif}}
{{endif}}
{{if $comment->canRecognize() === TRUE}}
<li class='ipsMenu_item'><a href='{$comment->author()->url()->setQueryString( array( 'do' => 'recognize', 'content_class' => \get_class( $comment ), 'content_id' => $comment->$idField ) )}' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-flashMessage='{lang="recognize_submit_success"}' data-ipsDialog-title="{lang="recognize_author" sprintf="$comment->author()->name"}">{lang="recognize_author" sprintf="$comment->author()->name"}</a></li>
{{elseif $comment->canRemoveRecognize()}}
<li class='ipsMenu_item'><a href='{$comment->author()->url()->setQueryString( array( 'do' => 'unrecognize', 'content_class' => \get_class( $comment ), 'content_id' => $comment->$idField ) )}' data-confirm data-confirmSubMessage='{lang="recognize_author_remove_desc"}'>{lang="recognize_author_remove"}</a></li>
{{endif}}
{{if $comment->canEdit() || ( !$comment->mapped('first') and ( $comment->canPromoteToSocialMedia() || $comment->item()->canSolve() || $comment->canDelete() || $comment->canHide() || $comment->canUnhide() || $comment->canSplit() || $item->canFeatureComment() || $item->canUnfeatureComment() || ( $comment->hidden() == -2 AND \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content') ) ) )}}
<li class='ipsMenu_sep'><hr></li>
{{endif}}
{{if $comment->canEdit()}}
{{if $comment->mapped('first') and $comment->item()->canEdit()}}
<li class='ipsMenu_item'><a href='{$comment->item()->url()->setQueryString( 'do', 'edit' )}'>{lang="edit"}</a></li>
{{else}}
<li class='ipsMenu_item'><a href='{$comment->url('edit')}' data-action='editComment'>{lang="edit"}</a></li>
{{endif}}
{{endif}}
{{if $comment->hidden() == -2 AND \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content')}}
<li class='ipsMenu_item'><a href='{$comment->url('restore')->csrf()}' data-confirm data-confirmSubMessage='{lang="restore_as_visible_desc"}'>{lang="restore_as_visible"}</a></li>
<li class='ipsMenu_item'><a href='{$comment->url('restore')->csrf()->setQueryString( 'restoreAsHidden', 1 )}' data-confirm data-confirmSubMessage='{lang="restore_as_hidden_desc"}'>{lang="restore_as_hidden"}</a></li>
<li class='ipsMenu_item'><a href='{$comment->url('delete')->csrf()->setQueryString( 'immediately', 1 )}' data-confirm data-confirmSubMessage='{lang="delete_immediately_desc"}'>{lang="delete_immediately"}</a></li>
{{else}}
{{if $comment instanceof \IPS\Content\Hideable}}
{{if !$comment->hidden() and $comment->canHide()}}
<li class='ipsMenu_item'><a href='{$comment->url('hide')}' data-ipsDialog data-ipsDialog-title="{lang="hide"}" data-ipsDialog-destructOnClose='true'>{lang="hide"}</a></li>
{{elseif $comment->hidden() and $comment->canUnhide()}}
<li class='ipsMenu_item'><a href='{$comment->url('unhide')->csrf()}'>{lang="unhide"}</a></li>
{{endif}}
{{endif}}
{{if $comment->canSplit()}}
<li class='ipsMenu_item'><a href='{$comment->url('split')}' data-action='splitComment' data-ipsDialog data-ipsDialog-title="{lang="split_to_new" sprintf="\IPS\Member::loggedIn()->language()->addToStack( $item::$title )"}" data-ipsDialog-destructOnClose='true'>{lang="split"}</a></li>
{{endif}}
{{if $comment->canDelete()}}
<li class='ipsMenu_item'><a href='{$comment->url('delete')->csrf()->setPage('page',\IPS\Request::i()->page)}' data-action='deleteComment' data-updateOnDelete="#commentCount">{lang="delete"}</a></li>
{{endif}}
{{if $comment->isFeatured() AND $item->canUnfeatureComment()}}
<li class='ipsMenu_item'><a href='{$comment->url('unfeature')->csrf()->setPage('page',\IPS\Request::i()->page)}' data-action="unrecommendComment">{lang="unrecommend_content"}</a></li>
{{endif}}
{{if !$comment->isFeatured() AND $item->canFeatureComment()}}
<li class='ipsMenu_item'><a href='{$comment->url('feature')->setPage('page',\IPS\Request::i()->page)}' data-ipsDialog data-ipsDialog-title='{lang="recommend_post"}' data-ipsDialog-remoteSubmit data-ipsDialog-size='medium' data-action="recommendComment" data-ipsDialog-destructOnClose='true'>{lang="recommend_content"}</a></li>
{{endif}}
{{if ( ! $comment->mapped('first') and $comment->canPromoteToSocialMedia() )}}
<li class='ipsMenu_item'>{template="promoteLink" app="core" group="global" params="$comment"}</li>
{{endif}}
{{endif}}
</ul>
</li>
{{if \count( $item->commentMultimodActions() ) and !$comment->mapped('first')}}
<li><span class='ipsCustomInput'>
<input type="checkbox" name="multimod[{$comment->$idField}]" value="1" data-role="moderation" data-actions="{{if $comment->canSplit()}}split merge{{endif}} {{if $comment->hidden() === -1 AND $comment->canUnhide()}}unhide{{elseif $comment->hidden() === 1 AND $comment->canUnhide()}}approve{{elseif $comment->canHide()}}hide{{endif}} {{if $comment->canDelete()}}delete{{endif}}" data-state='{{if $comment->tableStates()}}{$comment->tableStates()}{{endif}}'>
<span></span>
</span></li>
{{endif}}
</ul>
</div>
<div class='ipsType_reset ipsResponsive_hidePhone'>
{{if ! \IPS\Output::i()->reduceLinks()}} <a href='{$comment->shareableUrl()}' rel="nofollow" class='ipsType_blendLinks'>{{endif}}
{$comment->dateLine()|raw}
{{if ! \IPS\Output::i()->reduceLinks()}}</a>{{endif}}
{{if $comment->ip_address and \IPS\Member::loggedIn()->modPermission('can_use_ip_tools') and \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'modcp' ) )}}
&middot; <a class='ipsType_blendLinks ipsType_light ipsType_noUnderline ipsType_noBreak' href="{url="app=core&module=modcp&controller=modcp&tab=ip_tools&ip=$comment->ip_address" seoTemplate="modcp_ip_tools"}" data-ipsMenu data-ipsMenu-menuID='{$comment->$idField}_ip_menu'>{lang="ip_short"} <i class='fa fa-angle-down'></i></a>
{{endif}}
<span class='ipsResponsive_hidePhone'>
{{if $comment->editLine()}}
({lang="edited_lc"})
{{endif}}
{{if $comment->hidden() AND $comment->hidden() != -2}}
&middot; {$comment->hiddenBlurb()}
{{elseif $comment->hidden() == -2}}
&middot; {$comment->deletedBlurb()}
{{endif}}
</span>
</div>
</div>
{{if member.modPermission('mod_see_warn') and $comment->warning}}
{template="commentWarned" group="global" app="core" params="$comment"}
{{endif}}
{{if $comment->showRecognized()}}
{template="commentRecognized" group="global" app="core" params="$comment"}
{{endif}}
<div class='cPost_contentWrap'>
{{if $comment->hidden() !== 0}}
<div class='ipsResponsive_showPhone ipsResponsive_block ipsSpacer_bottom'>
{{if $comment->hidden() AND $comment->hidden() != -2}}
{$comment->hiddenBlurb()}
{{elseif $comment->hidden() == -2}}
{$comment->deletedBlurb()}
{{endif}}
</div>
{{endif}}
<div data-role='commentContent' class='ipsType_normal ipsType_richText ipsPadding_bottom ipsContained' data-controller='core.front.core.lightboxedImages'>
{$comment->content()|raw}
{{if $comment->editLine()}}
{$comment->editLine()|raw}
{{endif}}
</div>
{{if ( \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and settings.reputation_enabled and $comment->hasReactionBar() ) || ( $comment->hidden() === 1 && ( $comment->canUnhide() || $comment->canDelete() ) ) || ( $comment->hidden() === 0 and $item->canComment() and $editorName ) || $comment->item()->canSolve() }}
<div class='ipsItemControls'>
{{if !( $comment->hidden() === 1 && ( $comment->canUnhide() || $comment->canDelete() ) )}}
{{if \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and settings.reputation_enabled}}
{template="reputation" group="global" app="core" params="$comment"}
{{endif}}
{{endif}}
<ul class='ipsComment_controls ipsClearfix ipsItemControls_left' data-role="commentControls">
{{if $comment->hidden() === 1 && ( $comment->canUnhide() || $comment->canDelete() )}}
{{if $comment->canUnhide()}}
<li><a href='{$comment->url('unhide')->csrf()}' class='ipsButton ipsButton_verySmall ipsButton_positive' data-action='approveComment'><i class='fa fa-check'></i> {lang="approve"}</a></li>
{{endif}}
{{if $comment->canDelete()}}
<li><a href='{$comment->url('delete')->csrf()->setPage('page',\IPS\Request::i()->page)}' data-action='deleteComment' data-updateOnDelete="#commentCount" class='ipsButton ipsButton_verySmall ipsButton_negative'><i class='fa fa-times'></i> {lang="delete"}</a></li>
{{endif}}
{{if $comment->canEdit() || $comment->canSplit() || $comment->canHide()}}
<li>
<a href='#elControls_{$comment->$idField}_moderator_menu' id='elControls_{$comment->$idField}_moderator' data-ipsMenu data-ipsMenu-appendTo='#comment-{$comment->$idField}_wrap'>{lang="moderator_tools"} &nbsp;<i class='fa fa-caret-down'></i></a>
<ul id='elControls_{$comment->$idField}_moderator_menu' class='ipsMenu ipsMenu_narrow ipsHide'>
{{if $comment->canEdit()}}
{{if $comment->mapped('first') and $comment->item()->canEdit()}}
<li class='ipsMenu_item'><a href='{$comment->item()->url()->setQueryString( 'do', 'edit' )}'>{lang="edit"}</a></li>
{{else}}
<li class='ipsMenu_item'><a href='{$comment->url('edit')}' data-action='editComment'>{lang="edit"}</a></li>
{{endif}}
{{endif}}
{{if $comment->canSplit()}}
<li class='ipsMenu_item'><a href='{$comment->url('split')}' data-action='splitComment' data-ipsDialog data-ipsDialog-title="{lang="split_to_new" sprintf="\IPS\Member::loggedIn()->language()->addToStack( $item::$title )"}" data-ipsDialog-destructOnClose='true'>{lang="split"}</a></li>
{{endif}}
{{if $comment instanceof \IPS\Content\Hideable and $comment->canHide()}}
<li class='ipsMenu_item'><a href='{$comment->url('hide')->csrf()}' data-ipsDialog data-ipsDialog-title="{lang="hide"}" data-ipsDialog-destructOnClose='true'>{lang="hide"}</a></li>
{{endif}}
</ul>
</li>
{{endif}}
{{else}}
{{if ! $comment->mapped('first') AND $comment->item()->canSolve() AND ! $comment->item()->isSolved() AND $comment->item()->isNotModeratorButCanSolve()}}
<li><a href='{$item->url()->csrf()->setQueryString( array( 'do' => 'solve', 'answer' => $comment->pid ) )}' data-action="solveComment" class="ipsButton ipsButton_verySmall"><i class="fa fa-check"></i> {lang="solve_content"}</a></li>
{{endif}}
{{if $comment->hidden() === 0 and $item->canComment() and $editorName}}
<li data-ipsQuote-editor='{$editorName}' data-ipsQuote-target='#comment-{$comment->$idField}' class='ipsJS_show'>
<button class='ipsButton ipsButton_light ipsButton_verySmall ipsButton_narrow cMultiQuote ipsHide' data-action='multiQuoteComment' data-ipsTooltip data-ipsQuote-multiQuote data-mqId='mq{$comment->$idField}' title='{lang="multiquote"}'><i class='fa fa-plus'></i></button>
</li>
<li data-ipsQuote-editor='{$editorName}' data-ipsQuote-target='#comment-{$comment->$idField}' class='ipsJS_show'>
<a href='#' data-action='quoteComment' data-ipsQuote-singleQuote>{lang="quote"}</a>
</li>
{{endif}}
{{if ( $comment->item()->isSolved() and $comment->item()->mapped('solved_comment_id') == $comment->pid ) AND $comment->item()->canSolve()}}
<li><a href='{$item->url()->csrf()->setQueryString( array( 'do' => 'unsolve', 'answer' => $comment->pid ) )}' data-action="unsolveComment">{lang="unsolve_content"}</a></li>
{{endif}}
{{if $comment->item()->canSolve() AND ! $comment->item()->isSolved() AND ! $comment->item()->isNotModeratorButCanSolve()}}
<li><a href='{$item->url()->csrf()->setQueryString( array( 'do' => 'solve', 'answer' => $comment->pid ) )}' data-action="solveComment">{lang="solve_content"}</a></li>
{{endif}}
{{if \IPS\Application::appIsEnabled('cloud')}}
<li>{template="spam" app="cloud" group="spam" params="$comment, FALSE"}</li>
{{endif}}
{{endif}}
<li class='ipsHide' data-role='commentLoading'>
<span class='ipsLoading ipsLoading_tiny ipsLoading_noAnim'></span>
</li>
</ul>
</div>
{{endif}}
{{if $comment->author()->signature AND trim( $comment->author()->signature )}}
{template="signature" group="global" app="core" params="$comment->author()"}
{{endif}}
</div>
{{if $comment->ip_address and \IPS\Member::loggedIn()->modPermission('can_use_ip_tools') and \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'modcp' ) )}}
<div class='ipsHide ipsPadding ipsMenu ipsMenu_veryWide' id='{$comment->$idField}_ip_menu'>
<h5 class='ipsType_normal ipsType_reset'>{lang="ip_address"}</h5>
<input type='text' autofocus class='ipsField_fullWidth ipsMargin_vertical:half' value='{$comment->ip_address}'>
<a href='{url="app=core&module=modcp&controller=modcp&tab=ip_tools&ip=$comment->ip_address" seoTemplate="modcp_ip_tools"}' class='ipsButton ipsButton_light ipsButton_small ipsButton_fullWidth'>{lang="more_about_ip_address"} <i class='fa fa-angle-right'></i></a>
</div>
{{endif}}
{{if ! \IPS\Output::i()->reduceLinks()}}
{template="sharemenu" group="global" app="core" params="$comment"}
{{endif}}
</div>]]></template>
<template template_group="topics" template_name="postContainer" template_data="$item, $comment, $votes=array(), $otherClasses=''" template_location="front" template_app="forums"><![CDATA[{{$idField = $comment::$databaseColumnId;}}
{{$itemClassSafe = str_replace( '\\', '_', mb_substr( $comment::$itemClass, 4 ) );}}
{{if $comment->isIgnored()}}
<div class='ipsComment ipsComment_ignored ipsType_light' id='elIgnoreComment_{$comment->$idField}' data-ignoreCommentID='elComment_{$comment->$idField}' data-ignoreUserID='{$comment->author()->member_id}'>
{lang="ignoring_content" sprintf="$comment->author()->name"} <a href='#elIgnoreComment_{$comment->$idField}_menu' data-ipsMenu data-ipsMenu-menuID='elIgnoreComment_{$comment->$idField}_menu' data-ipsMenu-appendTo='#elIgnoreComment_{$comment->$idField}' data-action="ignoreOptions" title='{lang="see_post_ignore_options"}' class='ipsType_blendLinks'>{lang="options"} <i class='fa fa-caret-down'></i></a>
<ul class='ipsMenu ipsHide' id='elIgnoreComment_{$comment->$idField}_menu'>
<li class='ipsMenu_item ipsJS_show' data-ipsMenuValue='showPost'><a href='#'>{lang="show_this_post"}</a></li>
<li class='ipsMenu_sep ipsJS_show'><hr></li>
<li class='ipsMenu_item' data-ipsMenuValue='stopIgnoring'><a href='{url="app=core&module=system&controller=ignore&do=remove&id={$comment->author()->member_id}" seoTemplate="ignore"}'>{lang="stop_ignoring_posts_by" sprintf="$comment->author()->name"}</a></li>
<li class='ipsMenu_item'><a href='{url="app=core&module=system&controller=ignore" seoTemplate="ignore"}'>{lang="change_ignore_preferences"}</a></li>
</ul>
</div>
{{endif}}
<a id='findComment-{$comment->$idField}'></a>
<a id='comment-{$comment->$idField}'></a>
<article {{if $comment->author()->hasHighlightedReplies()}}data-memberGroup="{$comment->author()->member_group_id}" {{endif}} id='elComment_{$comment->$idField}' class='cPost ipsBox ipsResponsive_pull {{if $otherClasses}}{$otherClasses}{{endif}} ipsComment {{if ( settings.reputation_enabled and settings.reputation_highlight and $comment->reactionCount() >= settings.reputation_highlight ) OR $comment->isFeatured()}}ipsComment_popular{{endif}} ipsComment_parent ipsClearfix ipsClear ipsColumns ipsColumns_noSpacing ipsColumns_collapsePhone {{if $comment->author()->hasHighlightedReplies()}}ipsComment_highlighted{{endif}} {{if $comment->isIgnored()}}ipsHide{{endif}} {{if $comment->hidden() OR $item->hidden() === -2}}ipsModerated{{endif}} {{if ( $comment->item()->isSolved() and $comment->item()->mapped('solved_comment_id') == $comment->pid )}}ipsComment_solved{{endif}}'>
{{if $item->isQuestion() and !$comment->new_topic}}
{template="postRating" group="topics" app="forums" params="$item, $comment, $votes"}
{{endif}}
{{if $comment->author()->hasHighlightedReplies() || ( $comment->item()->isSolved() and $comment->item()->mapped('solved_comment_id') == $comment->pid ) || $comment->isFeatured() || ( settings.reputation_enabled and settings.reputation_highlight and $comment->reactionCount() >= settings.reputation_highlight ) }}
<div class='ipsResponsive_showPhone ipsComment_badges'>
<ul class='ipsList_reset ipsFlex ipsFlex-fw:wrap ipsGap:2 ipsGap_row:1'>
{{if $comment->author()->hasHighlightedReplies()}}
<li><strong class='ipsBadge ipsBadge_large ipsBadge_highlightedGroup'>{expression="\IPS\Member\Group::load( $comment->author()->member_group_id )->name" raw="true"}</strong></li>
{{endif}}
{{if ( $comment->item()->isSolved() and $comment->item()->mapped('solved_comment_id') == $comment->pid )}}
<li><strong class='ipsBadge ipsBadge_large ipsBadge_positive ipsBadge_reverse'><i class='fa fa-check'></i> {lang="this_is_a_solved_post"}</strong></li>
{{endif}}
{{if $comment->isFeatured()}}
<li><strong class='ipsBadge ipsBadge_large ipsBadge_popular'>{lang="this_is_a_featured_post"}</strong></li>
{{endif}}
{{if ( settings.reputation_enabled and settings.reputation_highlight and $comment->reactionCount() >= settings.reputation_highlight ) }}
<li><strong class='ipsBadge ipsBadge_large ipsBadge_popular'>{lang="this_is_a_popular_post"}</strong></li>
{{endif}}
</ul>
</div>
{{endif}}
<div class='cAuthorPane_mobile ipsResponsive_showPhone'>
<div class='cAuthorPane_photo'>
<div class='cAuthorPane_photoWrap'>
{template="userPhoto" app="core" group="global" params="$comment->author(), 'large', $comment->warningRef()"}
{{if $comment->author()->modShowBadge()}}
<span class="cAuthorPane_badge cAuthorPane_badge--moderator" data-ipsTooltip title="{lang="member_is_moderator" sprintf="$comment->author()->name"}"></span>
{{elseif $comment->author()->joinedRecently()}}
<span class="cAuthorPane_badge cAuthorPane_badge--new" data-ipsTooltip title="{lang="member_is_new_badge" sprintf="$comment->author()->name"}"></span>
{{endif}}
{{if !$comment->isAnonymous() and $comment->author()->canHaveAchievements() and \IPS\core\Achievements\Rank::show() and $rank = $comment->author()->rank()}}
<a href="{url="app=core&module=members&controller=profile&id={$comment->author()->member_id}&do=badges" seoTemplate="profile_badges" seoTitle="$comment->author()->members_seo_name"}" rel="nofollow">
{$rank->html( 'cAuthorPane_badge cAuthorPane_badge--rank ipsOutline ipsOutline:2px' )|raw}
</a>
{{endif}}
</div>
</div>
<div class='cAuthorPane_content'>
<h3 class='ipsType_sectionHead cAuthorPane_author ipsType_break ipsType_blendLinks ipsFlex ipsFlex-ai:center'>
{template="userLink" group="global" app="core" params="$comment->author(), $comment->warningRef(), TRUE, $comment->isAnonymous()"}
</h3>
<div class='ipsType_light ipsType_reset'>
<a href='{$comment->shareableUrl()}' rel="nofollow" class='ipsType_blendLinks'>{$comment->dateLine()|raw}</a>
{{if $comment->ip_address and \IPS\Member::loggedIn()->modPermission('can_use_ip_tools') and \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'modcp' ) )}}
&middot; <a class='ipsType_blendLinks ipsType_light ipsType_noUnderline ipsType_noBreak' href="{url="app=core&module=modcp&controller=modcp&tab=ip_tools&ip=$comment->ip_address" seoTemplate="modcp_ip_tools"}" data-ipsMenu data-ipsMenu-menuID='{$comment->$idField}_ip_menu'>{lang="ip_short"} <i class='fa fa-angle-down'></i></a>
{{endif}}
</div>
</div>
</div>
<aside class='ipsComment_author cAuthorPane ipsColumn ipsColumn_medium ipsResponsive_hidePhone'>
<h3 class='ipsType_sectionHead cAuthorPane_author ipsType_blendLinks ipsType_break'><strong>{template="userLink" group="global" app="core" params="$comment->author(), $comment->warningRef(), FALSE, $comment->isAnonymous()"}</strong>
{{if $comment->isAnonymous() and \IPS\Member::loggedIn()->modPermission('can_view_anonymous_posters')}}
<a data-ipsHover data-ipsHover-width="370" data-ipsHover-onClick href="{{if $comment->isFirst()}}{$comment->item()->url( 'reveal' )->csrf()}{{else}}{$comment->url( 'reveal' )->csrf()}{{endif}}" rel="nofollow"><span class="cAuthorPane_badge cAuthorPane_badge--anon" data-ipsTooltip title="{lang="post_anonymously_reveal"}"></span></a>
{{endif}}
</h3>
<ul class='cAuthorPane_info ipsList_reset'>
<li data-role='photo' class='cAuthorPane_photo'>
<div class='cAuthorPane_photoWrap'>
{template="userPhoto" app="core" group="global" params="$comment->author(), 'large', $comment->warningRef()"}
{{if $comment->author()->modShowBadge()}}
<span class="cAuthorPane_badge cAuthorPane_badge--moderator" data-ipsTooltip title="{lang="member_is_moderator" sprintf="$comment->author()->name"}"></span>
{{elseif $comment->author()->joinedRecently()}}
<span class="cAuthorPane_badge cAuthorPane_badge--new" data-ipsTooltip title="{lang="member_is_new_badge" sprintf="$comment->author()->name"}"></span>
{{endif}}
{{if !$comment->isAnonymous() and $comment->author()->canHaveAchievements() and \IPS\core\Achievements\Rank::show() and $rank = $comment->author()->rank()}}
{$rank->html( 'cAuthorPane_badge cAuthorPane_badge--rank ipsOutline ipsOutline:2px' )|raw}
{{endif}}
</div>
</li>
{{if !$comment->isAnonymous()}}
<li data-role='group'>{expression="\IPS\Member\Group::load( $comment->author()->member_group_id )->formattedName" raw="true"}</li>
{{if \IPS\Member\Group::load( $comment->author()->member_group_id )->g_icon }}
<li data-role='group-icon'><img src='{file="$comment->author()->group['g_icon']" extension="core_Theme"}' alt='' class='cAuthorGroupIcon'></li>
{{endif}}
{{endif}}
{{if $comment->author()->member_id}}
<li data-role='stats' class='ipsMargin_top'>
<ul class="ipsList_reset ipsType_light ipsFlex ipsFlex-ai:center ipsFlex-jc:center ipsGap_row:2 cAuthorPane_stats">
<li>
{{if \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members', 'front' ) ) }}
<a href="{url="app=core&module=members&controller=profile&id={$comment->author()->member_id}&do=content" seoTemplate="profile_content" seoTitle="$comment->author()->members_seo_name"}" rel="nofollow" title="{lang="member_post_count" pluralize="$comment->author()->member_posts"}" data-ipsTooltip class="ipsType_blendLinks">
{{endif}}
<i class="fa fa-comment"></i> {number="$comment->author()->member_posts" format="short"}
{{if \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members', 'front' ) ) }}
</a>
{{endif}}
</li>
{{if isset( $comment->author_solved_count )}}
<li>
{{if \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members', 'front' ) ) }}
<a href='{url="app=core&module=members&controller=profile&id={$comment->author()->member_id}&do=solutions" seoTemplate="profile_solutions" seoTitle="$comment->author()->members_seo_name"}' rel="nofollow" title="{lang="solved_badge_tooltip" pluralize="$comment->author_solved_count"}" data-ipsTooltip class='ipsType_blendLinks'>
{{endif}}
<i class='fa fa-check-circle'></i> {number="$comment->author_solved_count"}
{{if \IPS\Member::loggedIn()->canAccessModule( \IPS\Application\Module::get( 'core', 'members', 'front' ) ) }}
</a>
{{endif}}
</li>
{{endif}}
</ul>
</li>
{{endif}}
{{if $comment->author()->member_id}}
{template="customFieldsDisplay" group="global" app="core" params="$comment->author()"}
{{endif}}
</ul>
</aside>
<div class='ipsColumn ipsColumn_fluid ipsMargin:none'>
{template="post" group="topics" app="forums" params="$item, $comment, $item::$formLangPrefix . 'comment', $item::$application, $item::$module, $itemClassSafe"}
</div>
</article>]]></template>
<template template_group="topics" template_name="postRating" template_data="$item, $comment, $votes=array()" template_location="front" template_app="forums"><![CDATA[{{$idField = $comment::$databaseColumnId;}}
<div class='cRatingColumn ipsClearfix {{if $comment->post_bwoptions['best_answer']}}cRatingColumn_on{{else}}ipsAreaBackground_light{{endif}} {{if isset( $votes[ $comment->$idField ] ) && $votes[ $comment->$idField ] === 1}}cRatingColumn_up{{elseif isset( $votes[ $comment->$idField ] ) && $votes[ $comment->$idField ] === -1}}cRatingColumn_down{{endif}} ipsColumn ipsColumn_narrow ipsType_center' data-controller='forums.front.topic.answers'>
<ul class='ipsList_reset cPostRating_controls'>
{{if !$item->isArchived() }}
{{if $comment->post_bwoptions['best_answer'] or $item->canSetBestAnswer()}}
<li class='cPostRating_bestAnswer'>
{{if $item->canSetBestAnswer() and !$comment->post_bwoptions['best_answer']}}
<a href='{$item->url()->csrf()->setQueryString( array( 'do' => 'bestAnswer', 'answer' => $comment->pid ) )}' title='{lang="set_as_best_answer"}' class='cBestAnswerIndicator cBestAnswerIndicator_off' data-ipsTooltip><i class='fa fa-check'></i></a>
{{else}}
{{if $item->canSetBestAnswer()}}
<a href='{$item->url()->csrf()->setQueryString( array( 'do' => 'unsetBestAnswer', 'answer' => $comment->pid ) )}' title='{lang="unset_as_best_answer"}' class='cBestAnswerIndicator' data-ipsTooltip><i class='fa fa-check'></i></a>
{{else}}
<strong class='cBestAnswerIndicator' data-ipsTooltip title='{lang="best_answer_tooltip"}'><i class='fa fa-check'></i></strong>
{{endif}}
{{endif}}
</li>
{{endif}}
{{if $comment->canVote()}}
<li class='cPostRating_up'>
<a href='{$item->url()->setQueryString( array( 'do' => 'rateAnswer', 'answer' => $comment->pid, 'rating' => 1 ) )->csrf()}' class='cAnswerRate cAnswerRate_up {{if isset( $votes[ $comment->$idField ] ) && $votes[ $comment->$idField ] === 1}}ipsType_positive{{endif}}' title='{{if isset( $votes[ $comment->$idField ] ) && $votes[ $comment->$idField ] === 1}}{lang="remove_your_vote"}{{else}}{lang="vote_answer_up"}{{endif}}' data-ipsTooltip><i class='fa fa-angle-up'></i></a>
</li>
{{else}}
<li class='cPostRating_up'>
<span class='cAnswerRate cAnswerRate_up cAnswerRate_noPermission' {{if !\IPS\Member::loggedIn()->member_id}}data-ipsTooltip title='{lang="sign_in_rate_answer"}'{{endif}}><i class='fa fa-angle-up'></i></span>
</li>
{{endif}}
<li class='cPostRating_count'>
<span title="{lang="votes_no_number" pluralize="$comment->post_field_int"}" data-role="voteCount" data-voteCount="{$comment->post_field_int}" class='cAnswerRating {{if isset( $votes[ $comment->$idField ] ) && $votes[ $comment->$idField ] === 1}}ipsType_positive{{elseif isset( $votes[ $comment->$idField ] ) && $votes[ $comment->$idField ] === -1}}ipsType_negative{{endif}}'>{$comment->post_field_int}</span>
</li>
{{if $comment->canVote() && \IPS\Settings::i()->forums_answers_downvote}}
<li class='cPostRating_down'>
<a href='{$item->url()->setQueryString( array( 'do' => 'rateAnswer', 'answer' => $comment->pid, 'rating' => -1 ) )->csrf()}' class='cAnswerRate cAnswerRate_down {{if isset( $votes[ $comment->$idField ] ) && $votes[ $comment->$idField ] === -1}}ipsType_negative{{endif}}' title='{{if isset( $votes[ $comment->$idField ] ) && $votes[ $comment->$idField ] === -1}}{lang="remove_your_vote"}{{else}}{lang="vote_answer_down"}{{endif}}' data-ipsTooltip><i class='fa fa-angle-down'></i></a>
</li>
{{elseif \IPS\Settings::i()->forums_answers_downvote}}
<li class='cPostRating_down'>
<span class='cAnswerRate cAnswerRate_down cAnswerRate_noPermission' {{if !\IPS\Member::loggedIn()->member_id}}data-ipsTooltip title='{lang="sign_in_rate_answer"}'{{endif}}><i class='fa fa-angle-down'></i></span>
</li>
{{endif}}
{{else}}
{{if isset($comment->post_field_int) }}
<li class='cPostRating_count'>
<span title="{lang="votes_no_number" pluralize="$comment->post_field_int"}" data-role="voteCount" data-voteCount="{$comment->post_field_int}" class='cAnswerRating {{if isset( $votes[ $comment->$idField ] ) && $votes[ $comment->$idField ] === 1}}ipsType_positive{{elseif isset( $votes[ $comment->$idField ] ) && $votes[ $comment->$idField ] === -1}}ipsType_negative{{endif}}'>{$comment->post_field_int}</span>
</li>
{{endif}}
{{endif}}
</ul>
</div>]]></template>
<template template_group="topics" template_name="topic" template_data="$topic, $comments, $question=NULL, $votes=array(), $nextUnread=NULL, $pagination=NULL, $topicVotes=array()" template_location="front" template_app="forums"><![CDATA[
{{if $club = $topic->container()->club()}}
{{if settings.clubs and settings.clubs_header == 'full'}}
{template="header" app="core" group="clubs" params="$club, $topic->container()"}
{{endif}}
<div id='elClubContainer'>
{{endif}}
<div class='ipsPageHeader ipsResponsive_pull ipsBox ipsPadding sm:ipsPadding:half ipsMargin_bottom'>
{{if \IPS\Application::appIsEnabled('cloud') AND \IPS\cloud\Application::featureIsEnabled( 'realtime' )}}
<div data-controller='cloud.front.realtime.whosViewing' data-location='{expression="\IPS\cloud\Realtime::i()->getLocationHash()"}' data-visibleClass='ipsMargin_bottom:half'></div>
{{endif}}
{{if $topic->isQuestion()}}
<div class='ipsFlex ipsFlex-ai:stretch ipsFlex-jc:center'>
<ul class='ipsList_reset cRatingColumn cRatingColumn_question ipsType_center ipsMargin_right ipsFlex-flex:00 ipsBorder_right'>
{{if $topic->canVote()}}
<li>
<a href='{$topic->url()->setQueryString( array( 'do' => 'rateQuestion', 'rating' => 1 ) )->csrf()}' class='cAnswerRate cAnswerRate_up {{if isset( $topicVotes[ \IPS\Member::loggedIn()->member_id ] ) && $topicVotes[ \IPS\Member::loggedIn()->member_id ] === 1}}ipsType_positive{{endif}}' title='{{if isset( $topicVotes[ \IPS\Member::loggedIn()->member_id ] ) && $topicVotes[ \IPS\Member::loggedIn()->member_id ] === 1}}{lang="remove_your_vote"}{{else}}{lang="vote_question_up"}{{endif}}' data-ipsTooltip><i class='fa fa-angle-up'></i></a>
</li>
{{else}}
<li>
<span class='cAnswerRate cAnswerRate_up cAnswerRate_noPermission' {{if !\IPS\Member::loggedIn()->member_id}}data-ipsTooltip title='{lang="sign_in_rate_question"}'{{endif}}><i class='fa fa-angle-up'></i></span>
</li>
{{endif}}
<li><span data-role="voteCount" data-voteCount="{expression="\intval( $topic->question_rating )"}" class='cAnswerRating {{if isset( $topicVotes[ \IPS\Member::loggedIn()->member_id ] ) && $topicVotes[ \IPS\Member::loggedIn()->member_id ] === 1}}ipsType_positive{{elseif isset( $topicVotes[ \IPS\Member::loggedIn()->member_id ] ) && $topicVotes[ \IPS\Member::loggedIn()->member_id ] === -1}}ipsType_negative{{endif}}'>{expression="\intval( $topic->question_rating )"}</span></li>
{{if $topic->canVote() && \IPS\Settings::i()->forums_questions_downvote}}
<li>
<a href='{$topic->url()->setQueryString( array( 'do' => 'rateQuestion', 'rating' => -1 ) )->csrf()}' class='cAnswerRate cAnswerRate_down {{if isset( $topicVotes[ \IPS\Member::loggedIn()->member_id ] ) && $topicVotes[ \IPS\Member::loggedIn()->member_id ] === -1}}ipsType_negative{{endif}}' title='{{if isset( $topicVotes[ \IPS\Member::loggedIn()->member_id ] ) && $topicVotes[ \IPS\Member::loggedIn()->member_id ] === -1}}{lang="remove_your_vote"}{{else}}{lang="vote_question_down"}{{endif}}' data-ipsTooltip><i class='fa fa-angle-down'></i></a>
</li>
{{elseif \IPS\Settings::i()->forums_questions_downvote}}
<li>
<span class='cAnswerRate cAnswerRate_down cAnswerRate_noPermission' {{if !\IPS\Member::loggedIn()->member_id}}data-ipsTooltip title='{lang="sign_in_rate_question"}'{{endif}}><i class='fa fa-angle-down'></i></span>
</li>
{{endif}}
</ul>
<div class='ipsFlex-flex:11'>
{{endif}}
<div class='ipsFlex ipsFlex-ai:center ipsFlex-fw:wrap ipsGap:4'>
<div class='ipsFlex-flex:11'>
<h1 class='ipsType_pageTitle ipsContained_container'>
{{if $topic->isFutureDate() || $topic->mapped('pinned') || $topic->mapped('featured') || $topic->hidden() === -1 || $topic->hidden() === 1 || $topic->hidden() === -2 || $topic->isSolved() || ( $topic->canToggleItemModeration() and $topic->itemModerationEnabled() )}}
{{if $topic->isFutureDate()}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_warning" data-ipsTooltip title='{$topic->futureDateBlurb()}'><i class='fa fa-clock-o'></i></span></span>
{{endif}}
{{if $topic->hidden() === -1}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_warning" data-ipsTooltip title='{$topic->hiddenBlurb()}'><i class='fa fa-eye-slash'></i></span></span>
{{elseif $topic->hidden() === -2}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_warning" data-ipsTooltip title='{$topic->deletedBlurb()}'><i class='fa fa-trash'></i></span></span>
{{elseif $topic->hidden() === 1}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_warning" data-ipsTooltip title='{lang="pending_approval"}'><i class='fa fa-warning'></i></span></span>
{{elseif $topic->canToggleItemModeration() and $topic->itemModerationEnabled()}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_warning" data-ipsTooltip title='{lang="topic_moderation_enabled"}'><i class='fa fa-user-times'></i></span></span>
{{endif}}
{{if $topic->mapped('pinned')}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_positive" data-ipsTooltip title='{lang="pinned"}'><i class='fa fa-thumb-tack'></i></span></span>
{{endif}}
{{if $topic->mapped('featured')}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_positive" data-ipsTooltip title='{lang="featured"}'><i class='fa fa-star'></i></span></span>
{{endif}}
{{endif}}
{{if $topic->prefix() OR ( $topic->canEdit() AND $topic::canTag( NULL, $topic->container() ) AND $topic::canPrefix( NULL, $topic->container() ) )}}
<span {{if !$topic->prefix()}}class='ipsHide'{{endif}} {{if ( $topic->canEdit() AND $topic::canTag( NULL, $topic->container() ) AND $topic::canPrefix( NULL, $topic->container() ) )}}data-editablePrefix{{endif}}>
{template="prefix" group="global" app="core" params="$topic->prefix( TRUE ), $topic->prefix()"}
</span>
{{endif}}
{{if $topic->canEdit()}}
<span class='ipsType_break ipsContained' data-controller="core.front.core.moderation">
<span data-role="editableTitle" title='{lang="click_hold_edit"}'>{$topic->title}</span>
</span>
{{else}}
<span class='ipsType_break ipsContained'>
<span>{$topic->title}</span>
</span>
{{endif}}
</h1>
{{if $topic->locked() && $topic->topic_open_time && $topic->topic_open_time > time()}}
<p class='ipsType_reset ipsType_medium'><strong><i class='fa fa-clock-o'></i> {lang="topic_unlocks_at" htmlsprintf="\IPS\DateTime::ts( $topic->topic_open_time )->html(), \IPS\DateTime::ts( $topic->topic_open_time )->localeTime( FALSE )"}</strong></p>
{{elseif !$topic->locked() && $topic->topic_close_time && $topic->topic_close_time > time()}}
<p class='ipsType_reset ipsType_medium'><strong><i class='fa fa-clock-o'></i> {lang="topic_locks_at" htmlsprintf="\IPS\DateTime::ts( $topic->topic_close_time )->html(), \IPS\DateTime::ts( $topic->topic_close_time )->localeTime( FALSE )"}</strong></p>
{{endif}}
{{if \count( $topic->tags() ) OR ( $topic->canEdit() AND $topic::canTag( NULL, $topic->container() ) )}}
{template="tags" group="global" app="core" params="$topic->tags(), FALSE, FALSE, ( $topic->canEdit() AND ( \count( $topic->tags() ) OR $topic::canTag( NULL, $topic->container() ) ) ) ? $topic->url() : NULL"}
{{endif}}
</div>
{{if $topic->container()->forum_allow_rating}}
<div class='ipsFlex-flex:00 ipsType_light'>
{{if $topic->canRate()}}
<p class='ipsType_reset ipsType_small'>
{{if $topic->isQuestion()}}{lang="rate_this_question"}{{else}}{lang="rate_this_topic"}{{endif}}
</p>
{{endif}}
{$topic->rating()|raw}
</div>
{{endif}}
</div>
<hr class='ipsHr'>
<div class='ipsPageHeader__meta ipsFlex ipsFlex-jc:between ipsFlex-ai:center ipsFlex-fw:wrap ipsGap:3'>
<div class='ipsFlex-flex:11'>
<div class='ipsPhotoPanel ipsPhotoPanel_mini ipsPhotoPanel_notPhone ipsClearfix'>
{template="userPhoto" group="global" app="core" params="$topic->author(), 'mini', $topic->warningRef()"}
<div>
<p class='ipsType_reset ipsType_blendLinks'>
<span class='ipsType_normal'>
{{if $topic->isQuestion()}}
<strong>{lang="ask_byline_no_date" htmlsprintf="$topic->author()->link( $topic->warningRef(), NULL, $topic->isAnonymous() )"},</strong><br />
<span class='ipsType_light'>{datetime="$topic->start_date"}</span>
{{else}}
<strong>{lang="byline_nodate" htmlsprintf="$topic->author()->link( $topic->warningRef(), NULL, $topic->isAnonymous() )"}</strong><br />
<span class='ipsType_light'>{datetime="$topic->start_date"} {lang="in"} <a href="{$topic->container()->url()}">{$topic->container()->_formattedTitle|raw}</a></span>
{{endif}}
</span>
</p>
</div>
</div>
</div>
{{if !$topic->isArchived() and !$topic->container()->password}}
<div class='ipsFlex-flex:01 ipsResponsive_hidePhone'>
<div class='ipsShareLinks'>
{{if !$topic->container()->disable_sharelinks}}
{template="shareButton" app="core" group="sharelinks" params="$topic"}
{{endif}}
{{if \IPS\Application::appIsEnabled('cloud')}}
{template="spam" app="cloud" group="spam" params="$topic"}
{{endif}}
{template="analyticsItemLink" app="core" group="system" params="$topic"}
{template="promote" app="core" group="global" params="$topic"}
{template="follow" app="core" group="global" params="'forums', 'topic', $topic->tid, $topic->followersCount()"}
</div>
</div>
{{endif}}
</div>
{{if $topic->isSolved()}}
{{if $solvedComment = $topic->getSolution() AND ( $solvedComment->hidden() == 0 OR ( \in_array( $solvedComment->hidden(), array( 1, -1 ) ) AND $solvedComment->canUnhide() ) )}}
<div class='ipsBox ipsBox--child ipsComment ipsComment_solved ipsMargin:none ipsMargin_top ipsPadding:half'>
<div class='ipsFlex ipsFlex-ai:center sm:ipsFlex-fd:column ipsGap:3'>
<a href="{$topic->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $topic->topic_answered_pid ))}" rel="nofollow" class='ipsButton ipsButton_verySmall ipsButton_positive sm:ipsFlex-as:stretch'>{lang="solved_and_go"}</a>
<span class='ipsFlex-flex:10 ipsType_positive ipsType_normal'>
{lang="solved_byline" htmlsprintf="$solvedComment->author()->name"}, {datetime="$solvedComment->mapped('date')"}
</span>
</div>
</div>
{{endif}}
{{endif}}
{{if $topic->isQuestion()}}
</div>
</div>
{{endif}}
</div>
{{if $topic->canSolve() AND ! $topic->isSolved() AND $topic->isNotModeratorButCanSolve()}}
<div class='cContentMessage cContentMessage_color ipsMessage_success ipsMargin_vertical' data-controller='forums.front.topic.solved'>
<h3 class='cContentMessage__header'>{lang="solved_did_it_tho_title" sprintf="\IPS\Member::loggedIn()->name"}</h3>
<div class='ipsPadding'>
{lang="solved_did_it_tho_desc"}
{{if member.members_bitoptions['no_solved_reenage']}}
<div class='ipsMargin_top'>
<a href="#" data-action="mailSolvedReminders" class="ipsButton ipsButton_verySmall"><i class="fa fa-envelope"></i>&nbsp; {lang="solved_reengage_on"}</a>
</div>
{{endif}}
</div>
</div>
{{endif}}
{template="contentItemMessages" group="global" app="core" params="$topic->getMessages(), $topic"}
{{if $topic->hidden() === 1 and $topic->canUnhide()}}
<div class="ipsMessage ipsMessage_warning ipsSpacer_top">
<p class="ipsType_reset">{$topic->hiddenBlurb()}</p>
<ul class='ipsList_inline ipsSpacer_top'>
<li><a href="{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unhide' ) )}" class="ipsButton ipsButton_positive ipsButton_verySmall" title='{lang="approve_title_topic"}'><i class="fa fa-check"></i> {lang="approve"}</a></li>
{{if $topic->canDelete()}}
<li><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'delete' ) )}' data-confirm title='{lang="topic_delete_title"}' class='ipsButton ipsButton_negative ipsButton_verySmall'><i class='fa fa-times'></i> {lang="delete"}</a></li>
{{endif}}
</ul>
</div>
{{endif}}
<div class='ipsClearfix'>
<ul class="ipsToolList ipsToolList_horizontal ipsClearfix ipsSpacer_both {{if !$topic->canComment() and !( $topic->canPin() or $topic->canUnpin() or $topic->canFeature() or $topic->canUnfeature() or $topic->canHide() or $topic->canUnhide() or $topic->canMove() or $topic->canLock() or $topic->canUnlock() or $topic->canDelete() or $topic->availableSavedActions() )}}ipsResponsive_hidePhone{{endif}}">
{{if $topic->canComment()}}
<li class='ipsToolList_primaryAction'>
<span data-controller='forums.front.topic.reply'>
{{if $topic->container()->forums_bitoptions['bw_enable_answers']}}
<a href='#replyForm' rel="nofollow" class='ipsButton {{if $topic->locked()}}ipsButton_link ipsButton_link--negative{{else}}ipsButton_important{{endif}} ipsButton_medium ipsButton_fullWidth' data-action='replyToTopic'>{lang="answer_this_question"}{{if $topic->locked()}} ({lang="locked"}){{endif}}</a>
{{else}}
<a href='#replyForm' rel="nofollow" class='ipsButton {{if $topic->locked()}}ipsButton_link ipsButton_link--negative{{else}}ipsButton_important{{endif}} ipsButton_medium ipsButton_fullWidth' data-action='replyToTopic'>{lang="reply_to_this_topic"}{{if $topic->locked()}} ({lang="locked"}){{endif}}</a>
{{endif}}
</span>
</li>
{{endif}}
{{if $topic->container()->can('add')}}
<li class='ipsResponsive_hidePhone'>
{{if $topic->container()->forums_bitoptions['bw_enable_answers']}}
<a href="{$topic->container()->url()->setQueryString( 'do', 'add' )}" rel="nofollow" class='ipsButton ipsButton_link ipsButton_medium ipsButton_fullWidth' title='{lang="ask_a_question_desc"}'>{lang="ask_a_question"}</a>
{{else}}
<a href="{$topic->container()->url()->setQueryString( 'do', 'add' )}" rel="nofollow" class='ipsButton ipsButton_link ipsButton_medium ipsButton_fullWidth' title='{lang="start_new_topic_desc"}'>{lang="start_new_topic"}</a>
{{endif}}
</li>
{{endif}}
{{if ( $topic->canPin() or $topic->canUnpin() or $topic->canFeature() or $topic->canUnfeature() or $topic->canHide() or $topic->canUnhide() or $topic->canMove() or $topic->canLock() or $topic->canUnlock() or $topic->canDelete() or $topic->availableSavedActions() or $topic->canMerge() or $topic->canUnarchive() or $topic->canRemoveArchiveExcludeFlag() or \IPS\Member::loggedIn()->modPermission('can_view_moderation_log') or $topic->canToggleItemModeration() ) or ( $topic->isFutureDate() and $topic::canFuturePublish( NULL, $topic->container() ) ) or ( $topic->hidden() == -2 AND \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content') )}}
<li>
<a href='#elTopicActions_menu' id='elTopicActions' class='ipsButton ipsButton_link ipsButton_medium ipsButton_fullWidth' data-ipsMenu>{lang="moderator_actions"} <i class='fa fa-caret-down'></i></a>
<ul id='elTopicActions_menu' class='ipsMenu ipsMenu_auto ipsHide'>
{{if \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content') AND $topic->hidden() == -2}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'restore' ) )}' data-confirm data-confirmSubMessage='{lang="restore_as_visible_desc"}'>{lang="restore_as_visible"}</a></li>
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'restoreAsHidden' ) )}' data-confirm data-confirmSubMessage='{lang="restore_as_hidden_desc"}'>{lang="restore_as_hidden"}</a></li>
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'delete', 'immediate' => 1 ) )}' data-confirm data-confirmSubMessage='{lang="delete_immediately_desc"}'>{lang="delete_immediately"}</a></li>
{{else}}
{{if $topic->isFutureDate() and $topic::canFuturePublish( NULL, $topic->container() )}}
<li class='ipsMenu_item'><a href='{$topic->url('moderate')->csrf()->setQueryString( array( 'action' => 'publish' ) )}' data-confirm title='{lang="publish_now"}'>{lang="publish"}</a></li>
{{endif}}
{{if $topic->canFeature()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'feature' ) )}'>{lang="feature"}</a></li>
{{endif}}
{{if $topic->canUnfeature()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unfeature' ) )}' >{lang="unfeature"}</a></li>
{{endif}}
{{if $topic->canPin()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'pin' ) )}' >{lang="pin"}</a></li>
{{endif}}
{{if $topic->canUnpin()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unpin' ) )}' >{lang="unpin"}</a></li>
{{endif}}
{{if $topic->canHide()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'hide' ) )}' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="hide"}" data-ipsDialog-destructOnClose='true'>{lang="hide"}</a></li>
{{endif}}
{{if $topic->canUnhide()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unhide' ) )}' data-ipsDialog-destructOnClose='true'>{{if $topic->hidden() === 1}}{lang="approve"}{{else}}{lang="unhide"}{{endif}}</a></li>
{{endif}}
{{if $topic->canLock()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'lock' ) )}' {{if member.modPermission('can_manage_alerts') AND $topic->author()->member_id }} data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="lock"}" data-ipsDialog-destructOnClose='true' {{endif}}>{lang="lock"}</a></li>
{{endif}}
{{if $topic->canUnlock()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unlock' ) )}' >{lang="unlock"}</a></li>
{{endif}}
{{if $topic->canMove()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'move' ) )}' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="move"}" data-ipsDialog-destructOnClose='true'>{lang="move"}</a></li>
{{endif}}
{{if $topic->canMerge()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'merge' ) )}' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="merge"}" data-ipsDialog-destructOnClose='true'>{lang="merge"}</a></li>
{{endif}}
{{if $topic->canUnarchive()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'unarchive' ) )}' data-confirm data-confirmSubMessage="{$topic->unarchiveBlurb()}" >{lang="unarchive"}</a></li>
{{endif}}
{{if $topic->canRemoveArchiveExcludeFlag()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'removeArchiveExclude' ) )}' >{lang="remove_archive_exlude"}</a></li>
{{endif}}
{{if $topic->canDelete()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'delete' ) )}' data-confirm >{lang="delete"}</a></li>
{{endif}}
{{if $topic->canOnMessage( 'add' )}}
<li class='ipsMenu_item'><a href='{$topic->url()->setQueryString( array( 'do' => 'messageForm' ) )}' data-ipsDialog data-ipsDialog-title='{lang="add_message"}' data-ipsDialog-destructOnClose='true'>{lang="add_message"}</a></li>
{{endif}}
{{if $topic->canToggleItemModeration()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'toggleItemModeration' ) )}' data-confirm data-confirmMessage='{{if $topic->itemModerationEnabled()}}{lang="disable_topic_moderation_confirm"}{{else}}{lang="enable_topic_moderation_confirm"}{{endif}}'>{{if $topic->itemModerationEnabled()}}{lang="disable_topic_moderation"}{{else}}{lang="enable_topic_moderation"}{{endif}}</a></li>
{{endif}}
{{if !$topic->isArchived() and $topic->availableSavedActions()}}
<li class='ipsMenu_sep'><hr></li>
{{foreach $topic->availableSavedActions() as $action}}
<li class="ipsMenu_item"><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'savedAction', 'action' => $action->_id ) )}' data-confirm>{$action->_title}</a></li>
{{endforeach}}
{{endif}}
{{endif}}
{{if \IPS\Member::loggedIn()->modPermission('can_view_moderation_log')}}
<li class='ipsMenu_sep'><hr></li>
<li class="ipsMenu_item"><a data-ipsDialog data-ipsDialogTitle="{lang="moderation_log"}" href='{$topic->url()->setQueryString( array( 'do' => 'modLog' ) )}'>{lang="moderation_log"}</a></li>
{{endif}}
</ul>
</li>
{{endif}}
</ul>
</div>
{{if $poll = $topic->getPoll()}}
<div class='ipsBox ipsResponsive_pull'>
{$poll|raw}
</div>
<br>
{{endif}}
<div id='comments' data-controller='core.front.core.commentFeed,forums.front.topic.view, core.front.core.ignoredComments' {{if settings.auto_polling_enabled}}data-autoPoll{{endif}} data-baseURL='{$topic->url()}' {{if $topic->isLastPage()}}data-lastPage{{endif}} data-feedID='topic-{$topic->tid}' class='cTopic ipsClear ipsSpacer_top'>
{{if $topic->isQuestion() && $question}}
<div class='ipsBox ipsResponsive_pull'>
<h2 class='ipsType_sectionTitle ipsType_reset'>{lang="question_title"}</h2>
{template="postContainer" group="topics" app="forums" params="$topic, $question, $votes, 'cPostQuestion ipsBox--child sm:ipsPadding_horizontal:half'"}
</div>
{{if ( $topic->showSummaryOnDesktop() === 'post' OR $topic->showSummaryOnMobile() )}}
<div class="ipsSpacer_top">{template="activity" group="topics" app="forums" params="$topic, 'post'"}</div>
{{endif}}
<div class='ipsSpacer_both'>
<div class="ipsBox ipsResponsive_pull ipsMargin_bottom">
<h2 class='ipsType_sectionTitle ipsType_reset ipsHide'>{lang="answer_count" pluralize="( $topic->posts ) ? $topic->posts - 1 : 0"}</h2>
<div class="ipsPadding:half ipsClearfix">
<ul class="ipsPos_right ipsButtonRow ipsClearfix sm:ipsMargin_bottom:half">
{{if ( \count( $topic->commentMultimodActions() ) && ( $topic->posts > 1 OR $topic->mapped('unapproved_comments') > 0 OR $topic->mapped('hidden_comments') > 0 ) ) || $pagination}}
<li>
<a class="ipsJS_show" href="#elCheck_menu" id="elCheck" title='{lang="select_rows_tooltip"}' data-ipsTooltip data-ipsAutoCheck data-ipsAutoCheck-context="#elPostFeed" data-ipsMenu data-ipsMenu-activeClass="ipsButtonRow_active">
<span class="cAutoCheckIcon ipsType_medium"><i class="fa fa-square-o"></i></span> <i class="fa fa-caret-down"></i>
<span class='ipsNotificationCount' data-role='autoCheckCount'>0</span>
</a>
<ul class="ipsMenu ipsMenu_auto ipsMenu_withStem ipsHide" id="elCheck_menu">
<li class="ipsMenu_title">{lang="select_rows"}</li>
<li class="ipsMenu_item" data-ipsMenuValue="all"><a href="#">{lang="all"}</a></li>
<li class="ipsMenu_item" data-ipsMenuValue="none"><a href="#">{lang="none"}</a></li>
<li class="ipsMenu_sep"><hr></li>
<li class="ipsMenu_item" data-ipsMenuValue="hidden"><a href="#">{lang="hidden"}</a></li>
<li class="ipsMenu_item" data-ipsMenuValue="unhidden"><a href="#">{lang="unhidden"}</a></li>
<li class="ipsMenu_item" data-ipsMenuValue="unapproved"><a href="#">{lang="unapproved"}</a></li>
</ul>
</li>
{{endif}}
<li>
<a href='{$topic->url()}' id="elSortBy_answers" {{if !isset( request.sortby )}}class='ipsButtonRow_active{{endif}}'>{lang="sort_by_answers"}</a>
</li>
<li>
<a href='{$topic->url()->setQueryString( 'sortby', 'date' )}' id="elSortBy_date" {{if isset( request.sortby ) and request.sortby == 'date'}}class='ipsButtonRow_active'{{endif}}>{lang="sort_by_date"}</a>
</li>
</ul>
{{if $pagination}}
{$pagination|raw}
{{endif}}
</div>
</div>
</div>
{{else}}
{{if ( \count( $topic->commentMultimodActions() ) && ( $topic->posts > 1 OR $topic->mapped('unapproved_comments') > 0 OR $topic->mapped('hidden_comments') > 0 ) ) || $pagination}}
<div class="ipsBox ipsResponsive_pull ipsPadding:half ipsClearfix ipsClear ipsMargin_bottom">
{{if \count( $topic->commentMultimodActions() )}}
<ul class="ipsButtonRow ipsPos_right ipsClearfix sm:ipsMargin_bottom:half">
<li>
<a class="ipsJS_show" href="#elCheck_menu" id="elCheck" title='{lang="select_rows_tooltip"}' data-ipsTooltip data-ipsAutoCheck data-ipsAutoCheck-context="#elPostFeed" data-ipsMenu data-ipsMenu-activeClass="ipsButtonRow_active">
<span class="cAutoCheckIcon ipsType_medium"><i class="fa fa-square-o"></i></span> <i class="fa fa-caret-down"></i>
<span class='ipsNotificationCount' data-role='autoCheckCount'>0</span>
</a>
<ul class="ipsMenu ipsMenu_auto ipsMenu_withStem ipsHide" id="elCheck_menu">
<li class="ipsMenu_title">{lang="select_rows"}</li>
<li class="ipsMenu_item" data-ipsMenuValue="all"><a href="#">{lang="all"}</a></li>
<li class="ipsMenu_item" data-ipsMenuValue="none"><a href="#">{lang="none"}</a></li>
<li class="ipsMenu_sep"><hr></li>
<li class="ipsMenu_item" data-ipsMenuValue="hidden"><a href="#">{lang="hidden"}</a></li>
<li class="ipsMenu_item" data-ipsMenuValue="unhidden"><a href="#">{lang="unhidden"}</a></li>
<li class="ipsMenu_item" data-ipsMenuValue="unapproved"><a href="#">{lang="unapproved"}</a></li>
</ul>
</li>
</ul>
{{endif}}
{{if $pagination}}
{$pagination|raw}
{{endif}}
</div>
{{endif}}
{{endif}}
{template="featuredComments" group="global" app="core" params="$topic->featuredComments(), $topic->url()->setQueryString( 'recommended', 'comments' ), 'recommended_posts', 'post_lc'"}
<div id="elPostFeed" data-role='commentFeed' data-controller='core.front.core.moderation' {{if $topic->isQuestion() AND $topic->topic_answered_pid}} data-topicAnswerID="{$topic->topic_answered_pid}"{{endif}}>
<form action="{$topic->url()->csrf()->setQueryString( 'do', 'multimodComment' )->setPage('page', (int) \IPS\Request::i()->page )}" method="post" data-ipsPageAction data-role='moderationTools'>
{{$postCount=0; $timeLastRead = $topic->timeLastRead(); $lined = FALSE;}}
{{if \count( $comments )}}
{{foreach $topic->generateCommentMetaData( $comments, \IPS\Settings::i()->forums_mod_actions_anon ) as $comment}}
{{if (!$topic->isQuestion() and !$lined and $timeLastRead and $timeLastRead->getTimestamp() < $comment->mapped('date'))}}
{{if $lined = TRUE and $postCount}}
<div class='ipsUnreadBar'>
<span>{lang="topic_meta_unread"}</span>
</div>
{{endif}}
{{endif}}
{{$postCount++;}}
{template="postContainer" group="topics" app="forums" params="$topic, $comment, $votes, ( $topic->isQuestion() ) ? 'cPostQuestion' : ''"}
{{if !$topic->isQuestion() and ( isset( $comment->metaData['comment']['moderation'] ) OR isset( $comment->metaData['comment']['timeGap'] ) )}}
<ul class='ipsTopicMeta'>
{{if isset( $comment->metaData['comment']['moderation'] )}}
{{foreach $comment->metaData['comment']['moderation'] as $modAction}}
<li class="ipsTopicMeta__item ipsTopicMeta__item--moderation">
<span class='ipsTopicMeta__time ipsType_light'>{datetime="$modAction['row']['ctime']" short="true"}</span>
<span class='ipsTopicMeta__action'>{$modAction['blurb']}</span>
</li>
{{endforeach}}
{{endif}}
{{if isset( $comment->metaData['comment']['timeGap'] )}}
<li class="ipsTopicMeta__item ipsTopicMeta__item--time">
{$comment->metaData['comment']['timeGap']['blurb']}...
</li>
{{endif}}
</ul>
{{endif}}
{{if $postCount == 1 AND $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_topic_view' )}}
{$advertisement|raw}
{{endif}}
{{if ( ( ! $topic->isQuestion() and $postCount == 1 ) and ( $topic->showSummaryOnDesktop() === 'post' OR $topic->showSummaryOnMobile() ) )}}
{template="activity" group="topics" app="forums" params="$topic, 'post'"}
{{endif}}
{{endforeach}}
{{else}}
{{if $topic->isQuestion()}}
<p class='ipsType_center ipsType_light ipsType_large ipsPad' data-role="noComments">
{lang="no_answers"}
</p>
{{endif}}
{{endif}}
{template="commentMultimod" app="core" group="global" params="$topic"}
</form>
</div>
{{if $pagination}}
<div class='ipsBox ipsPadding:half ipsMargin_top ipsClearfix ipsClear'>
{$pagination|raw}
</div>
{{endif}}
{{if $topic->isArchived()}}
<div class='ipsMessage ipsMessage_general ipsSpacer_top'>
<h4 class='ipsMessage_title'>{lang="topic_is_archived"}</h4>
<p class='ipsType_reset'>
{lang="topic_archived_desc"}
</p>
</div>
{{endif}}
{{if ( $topic->commentForm() || $topic->locked() || \IPS\Member::loggedIn()->restrict_post || \IPS\Member::loggedIn()->members_bitoptions['unacknowledged_warnings'] || !\IPS\Member::loggedIn()->checkPostsPerDay()) && !$topic->isArchived()}}
<a id='replyForm'></a>
<div data-role='replyArea' class='cTopicPostArea ipsBox ipsResponsive_pull ipsPadding {{if !$topic->canComment()}}cTopicPostArea_noSize{{endif}} ipsSpacer_top' {{if \IPS\Application::appIsEnabled('cloud') AND \IPS\cloud\Application::featureIsEnabled( 'realtime' )}}data-controller='cloud.front.realtime.forumsReplyArea,cloud.front.realtime.whosTyping'{{endif}}>
{{if $topic->commentForm()}}
{{if $topic->locked()}}
<p class='ipsType_reset ipsType_warning ipsComposeArea_warning ipsSpacer_bottom ipsSpacer_half'><i class='fa fa-info-circle'></i> {lang="topic_locked_can_comment"}</p>
{{elseif ( $topic->getPoll() and $topic->getPoll()->poll_only )}}
<p class='ipsType_reset ipsType_warning ipsComposeArea_warning ipsSpacer_bottom ipsSpacer_half'><i class='fa fa-info-circle'></i> {lang="topic_poll_can_comment"}</p>
{{endif}}
{$topic->commentForm()|raw}
{{else}}
{{if $topic->locked()}}
{template="commentUnavailable" group="forms" location="front" app="core" params="'topic_locked_cannot_comment'"}
{{elseif \IPS\Member::loggedIn()->restrict_post}}
{template="commentUnavailable" group="forms" location="front" app="core" params="'restricted_cannot_comment', \IPS\Member::loggedIn()->warnings(5,NULL,'rpa'), \IPS\Member::loggedIn()->restrict_post"}
{{elseif \IPS\Member::loggedIn()->members_bitoptions['unacknowledged_warnings']}}
{template="commentUnavailable" group="forms" location="front" app="core" params="'unacknowledged_warning_cannot_post', \IPS\Member::loggedIn()->warnings( 1, FALSE )"}
{{elseif !\IPS\Member::loggedIn()->checkPostsPerDay()}}
{template="commentUnavailable" group="forms" location="front" app="core" params="'member_exceeded_posts_per_day'"}
{{endif}}
{{endif}}
</div>
{{endif}}
{{if !$topic->isArchived() and !$topic->container()->password}}
<div class='ipsBox ipsPadding ipsResponsive_pull ipsResponsive_showPhone ipsMargin_top'>
<div class='ipsShareLinks'>
{{if !$topic->container()->disable_sharelinks}}
{template="shareButton" app="core" group="sharelinks" params="$topic, 'verySmall', 'light'"}
{{endif}}
{{if \IPS\Application::appIsEnabled('cloud')}}
{template="spam" app="cloud" group="spam" params="$topic"}
{{endif}}
{template="analyticsItemLink" app="core" group="system" params="$topic"}
{template="follow" app="core" group="global" params="'forums', 'topic', $topic->tid, $topic->followersCount()"}
{{if $topic->canPromoteToSocialMedia() and ( $topic instanceof \IPS\Content or $topic instanceof \IPS\Node\Model )}}
{template="promote" app="core" group="global" params="$topic"}
{{endif}}
</div>
</div>
{{endif}}
</div>
{{if ( $topic->canPin() or $topic->canUnpin() or $topic->canFeature() or $topic->canUnfeature() or $topic->canHide() or $topic->canUnhide() or $topic->canMove() or $topic->canLock() or $topic->canUnlock() or $topic->canDelete() or $topic->availableSavedActions() or $topic->canMerge() or $topic->canUnarchive() or $topic->canRemoveArchiveExcludeFlag() or \IPS\Member::loggedIn()->modPermission('can_view_moderation_log') or $topic->canToggleItemModeration() ) or ( $topic->hidden() == -2 AND \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content') )}}
<ul class="ipsToolList ipsToolList_horizontal ipsClearfix ipsSpacer_top ipsResponsive_hidePhone">
<li>
<a href='#elTopicActionsBottom_menu' id='elTopicActionsBottom' class='ipsButton ipsButton_link ipsButton_link--light ipsButton_medium ipsButton_fullWidth' data-ipsMenu>{lang="moderator_actions"} <i class='fa fa-caret-down'></i></a>
<ul id='elTopicActionsBottom_menu' class='ipsMenu ipsMenu_auto ipsHide'>
{{if \IPS\Member::loggedIn()->modPermission('can_manage_deleted_content') AND $topic->hidden() == -2}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'restore' ) )}' data-confirm data-confirmSubMessage='{lang="restore_as_visible_desc"}'>{lang="restore_as_visible"}</a></li>
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'restoreAsHidden' ) )}' data-confirm data-confirmSubMessage='{lang="restore_as_hidden_desc"}'>{lang="restore_as_hidden"}</a></li>
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'delete', 'immediate' => 1 ) )}' data-confirm data-confirmSubMessage='{lang="delete_immediately_desc"}'>{lang="delete_immediately"}</a></li>
{{else}}
{{if $topic->canFeature()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'feature' ) )}'>{lang="feature"}</a></li>
{{endif}}
{{if $topic->canUnfeature()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unfeature' ) )}' >{lang="unfeature"}</a></li>
{{endif}}
{{if $topic->canPin()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'pin' ) )}' >{lang="pin"}</a></li>
{{endif}}
{{if $topic->canUnpin()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unpin' ) )}' >{lang="unpin"}</a></li>
{{endif}}
{{if $topic->canHide()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'hide' ) )}' data-ipsDialog data-ipsDialog-title="{lang="hide"}">{lang="hide"}</a></li>
{{endif}}
{{if $topic->canUnhide()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unhide' ) )}' >{{if $topic->hidden() === 1}}{lang="approve"}{{else}}{lang="unhide"}{{endif}}</a></li>
{{endif}}
{{if $topic->canLock()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'lock' ) )}' {{if member.modPermission('can_manage_alerts') AND $topic->author()->member_id }} data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="lock"}" data-ipsDialog-destructOnClose='true' {{endif}}>{lang="lock"}</a></li>
{{endif}}
{{if $topic->canUnlock()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'unlock' ) )}' >{lang="unlock"}</a></li>
{{endif}}
{{if $topic->canMove()}}
<li class='ipsMenu_item'><a href='{$topic->url()->setQueryString( array( 'do' => 'move' ) )}' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="move"}" >{lang="move"}</a></li>
{{endif}}
{{if $topic->canMerge()}}
<li class='ipsMenu_item'><a href='{$topic->url()->setQueryString( array( 'do' => 'merge' ) )}' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title="{lang="merge"}" >{lang="merge"}</a></li>
{{endif}}
{{if $topic->canUnarchive()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'unarchive' ) )}' data-confirm data-confirmSubMessage="{$topic->unarchiveBlurb()}" >{lang="unarchive"}</a></li>
{{endif}}
{{if $topic->canRemoveArchiveExcludeFlag()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'removeArchiveExclude' ) )}' >{lang="remove_archive_exlude"}</a></li>
{{endif}}
{{if $topic->canDelete()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'moderate', 'action' => 'delete' ) )}' data-confirm >{lang="delete"}</a></li>
{{endif}}
{{if $topic->canOnMessage( 'add' )}}
<li class='ipsMenu_item'><a href='{$topic->url()->setQueryString( array( 'do' => 'messageForm' ) )}' data-ipsDialog data-ipsDialog-title='{lang="add_message"}'>{lang="add_message"}</a></li>
{{endif}}
{{if $topic->canToggleItemModeration()}}
<li class='ipsMenu_item'><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'toggleItemModeration' ) )}' data-confirm data-confirmMessage='{{if $topic->itemModerationEnabled()}}{lang="disable_topic_moderation_confirm"}{{else}}{lang="enable_topic_moderation_confirm"}{{endif}}'>{{if $topic->itemModerationEnabled()}}{lang="disable_topic_moderation"}{{else}}{lang="enable_topic_moderation"}{{endif}}</a></li>
{{endif}}
{{if !$topic->isArchived() and $topic->availableSavedActions()}}
<li class='ipsMenu_sep'><hr></li>
{{foreach $topic->availableSavedActions() as $action}}
<li class="ipsMenu_item"><a href='{$topic->url()->csrf()->setQueryString( array( 'do' => 'savedAction', 'action' => $action->_id ) )}' data-confirm>{$action->_title}</a></li>
{{endforeach}}
{{endif}}
{{if \IPS\Member::loggedIn()->modPermission('can_view_moderation_log')}}
<li class='ipsMenu_sep'><hr></li>
<li class="ipsMenu_item"><a data-ipsDialog data-ipsDialogTitle="{lang="moderation_log"}" href='{$topic->url()->setQueryString( array( 'do' => 'modLog' ) )}'>{lang="moderation_log"}</a></li>
{{endif}}
{{endif}}
</ul>
</li>
</ul>
{{endif}}
<div class='ipsPager ipsSpacer_top'>
<div class="ipsPager_prev">
{{if \IPS\forums\Forum::isSimpleView( $topic->container() )}}
<a href="{url="app=forums&module=forums&controller=index" seoTemplate="forums"}" title="{{if $topic->isQuestion() }}{lang="go_back_to_qa_forum"}{{else}}{lang="go_back_to_forum"}{{endif}}" rel="parent">
<span class="ipsPager_type">{{if $topic->isQuestion() }}{lang="go_back_to_qa_forum"}{{else}}{lang="go_back_to_forum"}{{endif}}</span>
</a>
{{else}}
<a href="{$topic->container()->url()}" title="{lang="go_to_forum" sprintf="$topic->container()->metaTitle()"}" rel="parent">
<span class="ipsPager_type">{{if $topic->isQuestion() }}{lang="go_back_to_qa_forum"}{{else}}{lang="go_back_to_forum"}{{endif}}</span>
</a>
{{endif}}
</div>
{{if $nextUnread !== NULL}}
<div class='ipsPager_next'>
<a href="{$topic->url()->setQueryString( array( 'do' => 'nextUnread' ) )}" title='{{if $topic->isQuestion()}}{lang="view_next_unread_question_title"}{{else}}{lang="view_next_unread_title"}{{endif}}'>
<span class="ipsPager_type">{{if $topic->isQuestion()}}{lang="view_next_unread_question"}{{else}}{lang="view_next_unread"}{{endif}}</span>
</a>
</div>
{{endif}}
</div>
{{if $topic->container()->club()}}
</div>
{{endif}}]]></template>
<template template_group="widgets" template_name="forumStatistics" template_data="$stats, $orientation='vertical'" template_location="front" template_app="forums"><![CDATA[<h3 class='ipsType_reset ipsWidget_title'>{lang="block_forumStatistics"}</h3>
<div class='ipsWidget_inner'>
{{if $orientation == 'vertical'}}
<ul class='ipsDataList'>
<li class='ipsDataItem'>
<div class='ipsDataItem_main ipsPos_middle'>
<strong>{lang="total_topics"}</strong>
</div>
<div class='ipsDataItem_stats ipsDataItem_statsLarge'>
<span class='ipsDataItem_stats_number'>{number="$stats['total_topics']" format="short"}</span>
</div>
</li>
<li class='ipsDataItem'>
<div class='ipsDataItem_main ipsPos_middle'>
<strong>{lang="total_posts"}</strong>
</div>
<div class='ipsDataItem_stats ipsDataItem_statsLarge'>
<span class='ipsDataItem_stats_number'>{number="$stats['total_posts']" format="short"}</span>
</div>
</li>
</ul>
{{else}}
<div class='ipsGrid ipsGrid_collapsePhone ipsWidget_stats'>
<div class='ipsGrid_span6 ipsType_center'>
<span class='ipsType_large ipsWidget_statsCount'>{number="$stats['total_topics']" format="short"}</span><br>
<span class='ipsType_light ipsType_medium'>{lang="total_topics"}</span>
</div>
<div class='ipsGrid_span6 ipsType_center'>
<span class='ipsType_large ipsWidget_statsCount'>{number="$stats['total_posts']" format="short"}</span><br>
<span class='ipsType_light ipsType_medium'>{lang="total_posts"}</span>
</div>
</div>
{{endif}}
</div>]]></template>
<template template_group="widgets" template_name="hotTopics" template_data="$topics, $orientation='vertical'" template_location="front" template_app="forums"><![CDATA[{{if !empty( $topics ) }}
<h3 class='ipsWidget_title ipsType_reset'>{lang="block_hotTopics"}</h3>
{{if $orientation == 'vertical'}}
<div class='ipsWidget_inner'>
<ul class='ipsDataList ipsDataList_reducedSpacing'>
{{foreach $topics as $topic}}
<li class='ipsDataItem{{if $topic->hidden()}} ipsModerated{{endif}}'>
<div class='ipsDataItem_icon ipsPos_top'>
{template="userPhoto" group="global" app="core" params="$topic->author(), 'tiny'"}
</div>
<div class='ipsDataItem_main cWidgetComments'>
<div class="ipsCommentCount ipsPos_right {{if ( $topic->posts - 1 ) === 0}}ipsFaded{{endif}}" data-ipsTooltip title='{lang="replies_number" pluralize="$topic->posts - 1"}'>{expression="\IPS\Member::loggedIn()->language()->formatNumber( $topic->posts - 1 )"}</div>
<div class='ipsType_break ipsContained'>
{{if $topic->mapped('featured') || $topic->hidden() === -1 || $topic->hidden() === 1}}
{{if $topic->hidden() === -1}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{$topic->hiddenBlurb()}'><i class='fa fa-eye-slash'></i></span></span>
{{elseif $topic->hidden() === 1}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{lang="pending_approval"}'><i class='fa fa-warning'></i></span></span>
{{endif}}
{{if $topic->mapped('featured')}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="featured"}'><i class='fa fa-star'></i></span></span>
{{endif}}
{{if $topic->isSolved()}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="this_is_solved"}'><i class='fa fa-check'></i></span></span>
{{endif}}
{{endif}}
<a href="{$topic->url( "getPrefComment" )}" title='{lang="view_this_topic" sprintf="$topic->title"}' class='ipsDataItem_title'>{$topic->title}</a>
</div>
<p class='ipsType_reset ipsType_medium ipsType_blendLinks ipsContained'>
<span>{lang="byline_nodate" htmlsprintf="$topic->author()->link( NULL, NULL, $topic->isAnonymous() )"}</span><br>
<span class='ipsType_light'>{lang="topic_started_date" htmlsprintf="\IPS\DateTime::ts( $topic->mapped('date') )->html()"}</span>
</p>
</div>
</li>
{{endforeach}}
</ul>
</div>
{{else}}
<div class='ipsWidget_inner'>
<ul class='ipsDataList'>
{{foreach $topics as $topic}}
{template="row" group="global" app="forums" params="NULL, NULL, $topic, FALSE"}
{{endforeach}}
</ul>
</div>
{{endif}}
{{endif}}]]></template>
<template template_group="widgets" template_name="poll" template_data="$topic, $poll, $orientation='vertical'" template_location="front" template_app="forums">{$poll|raw}
</template>
<template template_group="widgets" template_name="pollFormWidget" template_data="$url, $id, $action, $elements, $hiddenValues, $actionButtons, $uploadField, $class='', $attributes=array(), $sidebar=NULL, $form=NULL" template_location="front" template_app="forums"><![CDATA[<form accept-charset='utf-8' class="ipsForm {$class}" action="{$url->setQueryString( 'do', 'widgetPoll' )}" method="post" {{if $uploadField}}enctype="multipart/form-data"{{endif}} {{foreach $attributes as $k => $v}}{$k}="{$v}"{{endforeach}} data-ipsForm>
<input type="hidden" name="{$id}_submitted" value="1">
{{foreach $hiddenValues as $k => $v}}
<input type="hidden" name="{$k}" value="{$v}">
{{endforeach}}
{{foreach $elements as $collection}}
<ol class='ipsList_reset cPollList cPollList_questions'>
{{$i = 0;}}
{{foreach $collection as $idx => $input}}
{{$i++;}}
<li class='ipsFieldRow ipsFieldRow_noLabel'>
<h4 class='ipsType_normal ipsType_reset'><span class='ipsType_break ipsContained'>{$i}. {$input->label}</span></h4>
{{if !$input->options['multiple']}}
{template="radio" app="core" location="global" group="forms" params="$input->name, $input->value, $input->required, $input->options['options'], $input->options['disabled'], '', $input->options['disabled']"}
{{else}}
{template="checkboxset" app="core" location="global" group="forms" params="$input->name, $input->value, $input->required, $input->options['options'], FALSE, NULL, $input->options['disabled'], $input->options['toggles'], NULL, NULL, 'all', array(), TRUE, isset( $input->options['descriptions'] ) ? $input->options['descriptions'] : NULL, FALSE, FALSE, $input->options['condense']"}
{{endif}}
{{if $input->error}}
<br>
<span class="ipsType_warning">{lang="$input->error"}</span>
{{endif}}
</li>
{{endforeach}}
</ol>
{{endforeach}}
<hr class='ipsHr'>
<ul class="ipsList_reset ipsFieldRow_fullWidth ipsClearfix">
{{foreach $actionButtons as $button}}
<li class='ipsSpacer_bottom ipsSpacer_half'>{$button|raw}</li>
{{endforeach}}
<li class='ipsSpacer_bottom ipsSpacer_half'>
<a class='ipsButton ipsButton_fullWidth ipsButton_link ipsButton_small' title='{lang="show_results_title"}' href="{$url->setQueryString('do', 'widgetPoll')->setQueryString( array( '_poll' => 'results', 'nullVote' => 1 ) )->csrf()}" {{if !settings.allow_result_view}}data-viewResults-confirm="{lang="warn_allow_result_view"}"{{endif}} data-action='viewResults'>
{lang="show_results"}
</a>
</li>
<li>
<a class='ipsButton ipsButton_fullWidth ipsButton_link ipsButton_small' title='{lang="show_results_title"}' href="{$url}">
{lang="poll_view_topic"}
</a>
</li>
</ul>
</form>]]></template>
<template template_group="widgets" template_name="pollWidget" template_data="$poll, $url" template_location="front" template_app="forums"><![CDATA[{{if !isset( \IPS\Request::i()->fetchPoll )}}
<section data-controller='core.front.core.poll'>
{{endif}}
{{if $poll->canVote() and request._poll != 'results' and ( !$poll->getVote() or request._poll == 'form') and $pollForm = $poll->buildForm()}}
<h3 class='ipsWidget_title ipsType_reset'>
<span class='ipsType_break ipsContained'>
<span class='ipsType_small ipsType_light ipsPos_right' data-ipsTooltip title='{lang="poll_num_votes" pluralize="$poll->votes"}'><i class='fa fa-check-square-o'></i> {$poll->votes}</span>
{$poll->poll_question}
</span>
</h3>
<div class='ipsPad ipsWidget_inner ipsClearfix' data-role='pollContents'>
{$pollForm->customTemplate( array( \IPS\Theme::i()->getTemplate( 'widgets', 'forums', 'front' ), 'pollFormWidget' ), $url )|raw}
</div>
{{elseif ( $poll->canViewResults() and !$poll->canVote() ) or $poll->getVote() or ( request._poll == 'results' and settings.allow_result_view )}}
<h3 class='ipsWidget_title ipsType_reset'>
<span class='ipsType_break ipsContained'>
<span class='ipsType_small ipsType_light ipsPos_right' data-ipsTooltip title='{lang="poll_num_votes" pluralize="$poll->votes"}'><i class='fa fa-check-square-o'></i> {$poll->votes}</span>
{$poll->poll_question}
</span>
</h3>
<div class='ipsPad ipsWidget_inner ipsClearfix' data-role='pollContents'>
<ol class='ipsList_reset cPollList'>
{{$i = 0;}}
{{foreach $poll->choices as $questionId => $question}}
{{$i++;}}
<li>
<h3 class='ipsType_normal ipsType_reset'><span class='ipsType_break ipsContained'>{$i}. {$question['question']}</span></h3>
<br>
<ul class='ipsList_reset cPollList_choices'>
{{foreach $question['choice'] as $k => $choice}}
<li class='ipsGrid ipsGrid_collapsePhone'>
<div class='ipsGrid_span4 ipsType_right ipsType_richText ipsType_small ipsType_break'>
{$choice|raw}
</div>
<div class='ipsGrid_span7'>
<span class='cPollVoteBar'>
<span style='width: {{if array_sum( $question['votes'] ) > 0 }}{expression="\intval( ( $question['votes'][ $k ] / array_sum( $question['votes'] ) ) * 100 )"}{{else}}0{{endif}}%' data-votes='{{if array_sum( $question['votes'] ) > 0}}{expression="round( ( $question['votes'][ $k ] / array_sum( $question['votes'] ) ) * 100, 2 )"}{{else}}0{{endif}}%' {{if array_sum( $question['votes'] ) && \intval( ( $question['votes'][ $k ] / array_sum( $question['votes'] ) ) * 100 ) > 30}}class='cPollVoteBar_inside'{{endif}}></span>
</span>
</div>
</li>
{{endforeach}}
</ul>
</li>
{{endforeach}}
</ol>
<hr class='ipsHr'>
<ul class='ipsList_reset'>
{{if $poll->canVote() || !member.member_id}}
{{if $poll->canVote()}}
<li>
<a href="{$url->setQueryString('do', 'widgetPoll')->setQueryString( '_poll', 'form' )}" title='{lang="show_vote_options"}' class='ipsButton ipsButton_link ipsButton_small ipsButton_fullWidth' data-action='viewResults'>
<i class='fa fa-caret-left'></i> {lang="show_vote_options"}
</a>
</li>
{{endif}}
{{if !member.member_id}}
<li class='ipsType_light'>
{lang="poll_guest" sprintf="\IPS\Http\Url::internal( 'app=core&module=system&controller=login', 'front', 'login' ), \IPS\Http\Url::internal( 'app=core&module=system&controller=register', 'front', 'register' )"}
</li>
{{endif}}
{{endif}}
<li>
<a class='ipsButton ipsButton_link ipsButton_small ipsButton_fullWidth ipsSpacer_top' href="{$url}">{lang="poll_view_topic"}</a>
</li>
</ul>
</div>
{{else}}
<h3 class='ipsWidget_title ipsType_reset'>
<span class='ipsType_break ipsContained'>
<span class='ipsType_small ipsType_light ipsPos_right' data-ipsTooltip title='{lang="poll_num_votes" pluralize="$poll->votes"}'><i class='fa fa-check-square-o'></i> {$poll->votes}</span>
{$poll->poll_question}
</span>
</h3>
<div class='ipsPad_half ipsWidget_inner ipsClearfix' data-role='pollContents'>
{lang="no_permission_poll"}{{if !\IPS\Member::loggedIn()->member_id}} {lang="poll_guest" sprintf="\IPS\Http\Url::internal( 'app=core&module=system&controller=login', 'front', 'login' ), \IPS\Http\Url::internal( 'app=core&module=system&controller=register', 'front', 'register' )"}{{endif}}
</div>
{{endif}}
{{if !isset( \IPS\Request::i()->fetchPoll )}}
</section>
{{endif}}]]></template>
<template template_group="widgets" template_name="postFeed" template_data="$comments, $title, $orientation='vertical'" template_location="front" template_app="forums"><![CDATA[{{if !empty( $comments ) }}
<h3 class='ipsType_reset ipsWidget_title'>{$title}</h3>
{{if $orientation == 'vertical'}}
<div class='ipsWidget_inner'>
<ul class='ipsDataList ipsDataList_reducedSpacing'>
{{foreach $comments as $comment}}
<li class='ipsDataItem'>
<div class='ipsDataItem_icon ipsPos_top'>
{template="userPhoto" group="global" app="core" params="$comment->author(), 'tiny'"}
</div>
<div class='ipsDataItem_main'>
<div class='ipsType_break ipsContained'><a href="{$comment->url()}" title='{lang="view_this_topic" sprintf="$comment->item()->title"}' class='ipsDataItem_title'>{{if $comment->item()->isSolved()}}<span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="this_is_solved"}'><i class='fa fa-check'></i></span>{{endif}} {$comment->item()->title}</a></div>
<p class='ipsType_reset ipsType_light ipsType_blendLinks ipsType_break'>{lang="byline_nodate" htmlsprintf="$comment->author()->link( NULL, NULL, $comment->isAnonymous() )"} &middot; <a href='{$comment->item()->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $comment->pid ) )}' class='ipsType_blendLinks'>{$comment->dateLine()|raw}</a></p>
<div class='ipsType_medium ipsType_textBlock ipsType_richText ipsType_break ipsContained ipsSpacer_top ipsSpacer_half' data-ipsTruncate data-ipsTruncate-type='remove' data-ipsTruncate-size='{{if $orientation == 'vertical'}}6 lines{{else}}2 lines{{endif}}' data-ipsTruncate-watch='false'>
{$comment->truncated( TRUE, NULL )|raw}
</div>
</div>
</li>
{{endforeach}}
</ul>
</div>
{{else}}
<div class='ipsWidget_inner'>
<ul class='ipsList_reset ipsPadding sm:ipsPadding:half'>
{{foreach $comments as $comment}}
<li class='ipsBox ipsBox--child ipsClearfix ipsMargin_bottom'>
<div class='ipsComment_header ipsPhotoPanel ipsPhotoPanel_mini'>
{template="userPhoto" app="core" group="global" params="$comment->author(), 'mini', $comment->warningRef()"}
<div>
<h3 class='ipsComment_author ipsType_blendLinks'>
<strong class='ipsType_normal'>{template="userLink" app="core" group="global" params="$comment->author(), $comment->warningRef(), NULL, $comment->isAnonymous()"}</strong>
{template="reputationBadge" group="global" app="core" params="$comment->author()"}
</h3>
<p class='ipsComment_meta ipsType_light ipsType_medium'>
<a href='{$comment->item()->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $comment->pid ) )}' class='ipsType_blendLinks'>{$comment->dateLine()|raw}</a>
{{if $comment->editLine()}}
({lang="edited_lc"})
{{endif}}
{{if $comment->hidden()}}
&middot; {$comment->hiddenBlurb()}
{{endif}}
</p>
{{if member.modPermission('mod_see_warn') and $comment->warning}}
{template="commentWarned" group="global" app="core" params="$comment"}
{{endif}}
</div>
</div>
<div class='ipsPadding_vertical sm:ipsPadding_vertical:half ipsPadding_horizontal ipsClearfix'>
<div class='ipsType_break ipsContained'><a href="{$comment->url()}" title='{lang="view_this_topic" sprintf="$comment->item()->title"}' class='ipsDataItem_title ipsTruncate ipsTruncate_line'>{{if $comment->item()->isSolved()}}<span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="this_is_solved"}'><i class='fa fa-check'></i></span>{{endif}} {wordbreak="$comment->item()->title"}</a></div>
<div data-role='commentContent' class='ipsType_normal ipsType_richText ipsContained' data-controller='core.front.core.lightboxedImages'>
{{if $comment->hidden() === 1 && $comment->author()->member_id == \IPS\Member::loggedIn()->member_id}}
<strong class='ipsType_medium ipsType_warning'><i class='fa fa-info-circle'></i> {lang="comment_awaiting_approval"}</strong>
{{endif}}
{$comment->content()|raw}
{{if $comment->editLine()}}
{$comment->editLine()|raw}
{{endif}}
</div>
</div>
<div class='ipsItemControls'>
<ul class='ipsComment_controls ipsClearfix ipsItemControls_left' data-role="commentControls">
{{if $comment->canReportOrRevoke() === TRUE}}
<li><a href='{$comment->url('report')}' {{if member.member_id or \IPS\Helpers\Form\Captcha::supportsModal()}}data-ipsDialog data-ipsDialog-remoteSubmit data-ipsDialog-size='medium' data-ipsDialog-flashMessage='{lang="report_submit_success"}' data-ipsDialog-title="{lang="report"}"{{endif}} data-action='reportComment' title='{lang="report_content"}'>{lang="report"}</a></li>
{{endif}}
</ul>
{{if $comment->hidden() !== 1 && \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\Reactable' ) and settings.reputation_enabled}}
{template="reputation" group="global" app="core" params="$comment"}
{{endif}}
</div>
</li>
{{endforeach}}
</ul>
</div>
{{endif}}
{{endif}}
]]></template>
<template template_group="widgets" template_name="topicFeed" template_data="$topics, $title, $orientation='vertical'" template_location="front" template_app="forums"><![CDATA[{{if !empty( $topics ) }}
<h3 class='ipsWidget_title ipsType_reset'>{$title}</h3>
{{if $orientation == 'vertical'}}
<div class='ipsWidget_inner'>
<ul class='ipsDataList ipsDataList_reducedSpacing'>
{{foreach $topics as $topic}}
<li class='ipsDataItem {{if $topic->hidden()}} ipsModerated{{endif}}'>
<div class='ipsDataItem_icon ipsPos_top'>
{template="userPhoto" group="global" app="core" params="$topic->author(), 'tiny'"}
</div>
<div class='ipsDataItem_main cWidgetComments'>
<div class="ipsCommentCount ipsPos_right {{if ( $topic->posts - 1 ) === 0}}ipsFaded{{endif}}" data-ipsTooltip title='{lang="replies_number" pluralize="$topic->posts - 1"}'>{expression="\IPS\Member::loggedIn()->language()->formatNumber( $topic->posts - 1 )"}</div>
<div class='ipsType_break ipsContained'>
{{if $topic->mapped('featured') || $topic->hidden() === -1 || $topic->hidden() === 1 || $topic->isSolved()}}
{{if $topic->hidden() === -1}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{$topic->hiddenBlurb()}'><i class='fa fa-eye-slash'></i></span></span>
{{elseif $topic->hidden() === 1}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_warning" data-ipsTooltip title='{lang="pending_approval"}'><i class='fa fa-warning'></i></span></span>
{{endif}}
{{if $topic->mapped('featured')}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="featured"}'><i class='fa fa-star'></i></span></span>
{{endif}}
{{if $topic->isSolved()}}
<span><span class="ipsBadge ipsBadge_icon ipsBadge_small ipsBadge_positive" data-ipsTooltip title='{lang="this_is_solved"}'><i class='fa fa-check'></i></span></span>
{{endif}}
{{endif}}
<a href="{$topic->url( "getPrefComment" )}" title='{lang="view_this_topic" sprintf="$topic->title"}' class='ipsDataItem_title'>{$topic->title}</a>
</div>
<p class='ipsType_reset ipsType_light ipsType_blendLinks ipsType_break'>
{$topic->author()->link()|raw} &middot; {lang="topic_started_date" htmlsprintf="\IPS\DateTime::ts( $topic->mapped('date') )->html()"}
</p>
</div>
</li>
{{endforeach}}
</ul>
</div>
{{else}}
<div class='ipsWidget_inner'>
<ul class='ipsDataList'>
{{foreach $topics as $topic}}
{template="row" group="global" app="forums" location="front" params="NULL, NULL, $topic, FALSE"}
{{endforeach}}
</ul>
</div>
{{endif}}
{{endif}}]]></template>
<css css_location="front" css_app="forums" css_attributes="" css_path="." css_name="embed.css"></css>
<css css_location="front" css_app="forums" css_attributes="" css_path="." css_name="forums_responsive.css"><![CDATA[/* BOTH */
@media screen and (max-width: 979px) {
.cAuthorPane {
margin-bottom: 0 !important;
}
.cTopicList .cBestAnswerIndicator {
width: 18px;
height: 18px;
line-height: 18px;
font-size: 11px;
}
.cTopicList .ipsDataItem_icon {
min-width: 25px;
}
html[dir="ltr"] .cTopicList .ipsDataItem_icon + .ipsDataItem_main,
html[dir="ltr"] .cTopicList .ipsDataItem_icon + .ipsDataItem_main + .ipsDataItem_stats {
margin-left: var(--sp-6) !important;
}
html[dir="rtl"] .cTopicList .ipsDataItem_icon + .ipsDataItem_main,
html[dir="rtl"] .cTopicList .ipsDataItem_icon + .ipsDataItem_main + .ipsDataItem_stats {
margin-right: var(--sp-6) !important;
}
.cTopicList .ipsDataItem_main {
padding: 0;
}
.cForumFluidTable .ipsDataItem_stats {
min-width: 130px !important;
display: flex;
flex-wrap: wrap;
align-items: center;
}
/* Fluid view juggling */
html[dir="ltr"] .cForumFluidTable .ipsDataItem_modCheck {
position: absolute;
bottom: var(--sp-3);
right: var(--sp-3) !important;
left: auto !important;
}
html[dir="rtl"] .cForumFluidTable .ipsDataItem_modCheck {
position: absolute;
left: var(--sp-3) !important;
right: auto !important;
}
/* User photo */
html[dir="ltr"] .cForumFluidTable .cTopicList .ipsDataItem_icon {
left: 5px;
top: 15px;
position: absolute;
}
html[dir="rtl"] .cForumFluidTable .cTopicList .ipsDataItem_icon {
right: 5px;
top: 15px;
position: absolute;
}
/* Unread dot */
.cForumFluidTable .ipsItemStatus {
position: absolute;
top: 55px;
width: 38px;
text-align: center;
}
html[dir="ltr"] .cForumFluidTable .ipsItemStatus {
left: 5px;
}
html[dir="rtl"] .cForumFluidTable .ipsItemStatus {
right: 5px;
}
html[dir="ltr"] .cForumFluidTable .cTopicList .ipsDataItem_icon + .ipsDataItem_main, html[dir="ltr"] .cForumFluidTable .cTopicList .ipsDataItem_icon + .ipsDataItem_main + .ipsDataItem_stats {
margin-left: 40px !important;
}
html[dir="rtl"] .cForumFluidTable .cTopicList .ipsDataItem_icon + .ipsDataItem_main, html[dir="rtl"] .cForumFluidTable .cTopicList .ipsDataItem_icon + .ipsDataItem_main + .ipsDataItem_stats {
margin-right: 40px !important;
}
html[dir="ltr"] .cForumFluidTable .ipsDataItem.ipsDataItem_responsivePhoto .ipsDataItem_main {
margin-right: 10px !important;
}
html[dir="rtl"] .cForumFluidTable .ipsDataItem.ipsDataItem_responsivePhoto .ipsDataItem_main {
margin-left: 10px !important;
}
.cForumMiniList_wrapper {
display: none;
}
.cForumMiniList_wrapper .ipsSideMenu {
border: 0;
}
.ipsDialog .cForumMiniList_wrapper,
.cForumMiniList {
display: block !important;
}
.ipsDialog #elFluidFormFilters {
padding: 10px 15px 15px;
border: 0;
margin-top: 10px;
}
/* loading styles */
.cForumFluidTable .ipsDataItem.ipsDataItem_loading {
padding-left: 0;
padding-right: 0;
}
html[dir="ltr"] .cForumFluidTable .ipsDataItem_loading > div > span:last-child {
right: 15px;
}
html[dir="rtl"] .cForumFluidTable .ipsDataItem_loading > div > span:last-child {
left: 15px;
}
}
/* TABLETS */
@media screen and (min-width: 768px) and (max-width: 979px) {
.cForumQuestion .ipsDataItem_main {
width: 100%;
padding-left: 5px !important;
}
.cForumQuestion .ipsDataItem_main,
.cForumQuestion .cForumQuestion_stat {
display: table-cell;
}
.cForumQuestions .cForumQuestion .cForumQuestion_stat + .ipsDataItem_modCheck {
position: absolute;
top: 40px;
padding: 0 4px;
}
}
/* PHONES */
@media screen and (max-width: 767px) {
/* Forum grid layout */
.cAuthorPane_mobile {
display: flex;
align-items: center;
position: relative;
padding: var(--sp-5) var(--sp-4) var(--sp-3);
}
.cAuthorPane_photo{
flex: 0 0 auto;
margin: 0;
}
.cAuthorPane_content{
flex: 1 1 0;
min-width: 0;
}
.cPost.ipsComment .ipsUserPhoto {
display: inline-block;
width: 40px;
height: 40px;
margin: 0;
}
[dir='ltr'] .cAuthorPane_mobile .cAuthorPane_photo{
margin-right: var(--sp-3);
}
[dir='rtl'] .cAuthorPane_mobile .cAuthorPane_photo{
margin-left: var(--sp-3);
}
.cPost.ipsComment .cAuthorPane_author {
line-height: 16px;
max-width: calc(100% - 15px);
margin: 0;
}
.cPost.ipsComment .cAuthorPane_author > a {
font-size: {fontsize="base"};
line-height: {fontsize="large"};
font-weight: bold;
}
.cPost .ipsComment_meta {
padding-top: 0;
padding-bottom: 0;
position: absolute;
top: -46px;
}
html[dir="ltr"] .cPost .ipsComment_meta {
right: 0;
}
html[dir="rtl"] .cPost .ipsComment_meta {
left: 0;
}
/* Normal comments have an absolutely-positioned toolbox, but we need to revert that for posts */
/* since ipsComment_meta contains the tools in forums and is itself abs positioned (above) */
html[dir] .cPost .ipsComment_toolWrap {
position: relative;
left: 0;
right: 0;
}
/* on popular posts we show a flag, so we need to adjust positioning for that */
.cPost.ipsComment.ipsComment_popular .ipsComment_popularFlag {
top: -60px;
height: 55px;
padding-top: 18px;
}
html[dir] .ipsComment.ipsComment_popular [data-role="commentContent"] {
padding-right: 0;
padding-left: 0;
}
/* Q&A-specific changes */
.cPost.cPostQuestion {
margin-bottom: 20px;
}
.cPost .cRatingColumn {
margin-bottom: 0 !important;
padding: var(--sp-4) var(--sp-4) var(--sp-2) var(--sp-4) !important;
}
.cPost .cRatingColumn ul.cPostRating_controls li {
display: inline-block;
float: left;
}
.cPost .cRatingColumn ul.cPostRating_controls .cPostRating_bestAnswer {
float: right;
}
.cPost .cRatingColumn .cAnswerRate {
font-size: 40px;
}
.cPost .cRatingColumn .cAnswerRate.cAnswerRate_up {
top: -1px;
}
.cPost .cRatingColumn .cAnswerRating {
margin: 0 10px;
font-size: 16px;
font-weight: bold;
}
.cPost .cRatingColumn .cBestAnswerIndicator {
width: 30px;
height: 30px;
line-height: 30px;
font-size: 15px;
}
/* ---- */
.cForumGrid .cForumGrid_forumInfo.ipsPad {
padding: 15px;
}
html[dir] .cPost .cPost_contentWrap {
padding: var(--sp-2) 0 0 0;
}
html[dir] .cPost .ipsComment_content {
padding-left: var(--sp-4);
padding-right: var(--sp-4);
position: static;
}
.cPost .cAuthorPane + .ipsColumn {
margin-bottom: 0;
}
html[dir="ltr"] .cTopic .ipsComment.ipsComment_ignored {
padding-left: 7px;
}
html[dir="rtl"] .cTopic .ipsComment.ipsComment_ignored {
padding-right: 7px;
}
/* Forum view */
.cForumRow .ipsItemStatus_custom {
max-width: 26px;
}
html[dir="ltr"] .cForumQuestions.cTopicList .ipsDataItem_main {
margin-left: 40px;
}
html[dir="rtl"] .cForumQuestions.cTopicList .ipsDataItem_main {
margin-right: 40px;
}
.cForumQuestions.cTopicList .cForumQuestion_stat {
display: inline-block !important;
}
.cForumQuestions .cForumQuestion .cForumQuestion_stat,
.cForumQuestions .cForumQuestion .cForumQuestion_stat span:first-child {
display: inline-block;
min-width: 0;
color: inherit;
}
.cForumQuestions .cForumQuestion .cForumQuestion_stat span {
font-size: 13px;
color: inherit;
font-weight: bold;
}
html[dir="ltr"] .cForumQuestions .cForumQuestion .ipsDataItem_modCheck,
html[dir="ltr"] .cForumQuestions .cForumQuestion .ipsDataItem_main + .cForumQuestion_stat {
margin-left: 30px;
}
html[dir="rtl"] .cForumQuestions .cForumQuestion .ipsDataItem_modCheck,
html[dir="rtl"] .cForumQuestions .cForumQuestion .ipsDataItem_main + .cForumQuestion_stat {
margin-right: 30px;
}
.cForumQuestions .cForumQuestion .cForumQuestion_stat + .ipsDataItem_modCheck {
position: absolute;
top: 50px;
}
html[dir="ltr"] .cForumQuestions .cForumQuestion .cForumQuestion_stat + .ipsDataItem_modCheck {
left: -15px;
}
html[dir="rtl"] .cForumQuestions .cForumQuestion .cForumQuestion_stat + .ipsDataItem_modCheck {
right: -15px;
}
html[dir="ltr"] .cForumQuestions .cForumQuestion .cForumQuestion_stat + .cForumQuestion_stat {
margin-left: 10px;
}
html[dir="rtl"] .cForumQuestions .cForumQuestion .cForumQuestion_stat + .cForumQuestion_stat {
margin-right: 10px;
}
}]]></css>
<css css_location="front" css_app="forums" css_attributes="" css_path="." css_name="forums.css"><![CDATA[.cForumList .ipsDataItem {
border-bottom-width: 1px;
}
.cForumList .ipsDataItem_main {
vertical-align: middle;
}
.cForumList .ipsDataItem_title {
font-size: {fontsize="large"};
}
/* Forum grid layout */
.ipsForumGrid{
--ipsForumGrid--width: 300px;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(var(--ipsForumGrid--width), 1fr));
gap: var(--sp-5);
}
.ipsForumGrid *{
min-width: 0;
}
.cForumGrid{
display: flex;
flex-direction: column;
}
.cForumGrid__hero{
color: #fff;
text-shadow: rgba(0,0,0,0.5) 0px 1px 1px;
position: relative;
border-radius: var(--box--radius) var(--box--radius) 0 0;
margin: -1px;
margin-bottom: 0;
background-color: rgb( var(--theme-area_background_dark) );
}
.cForumGrid__hero-link{
max-height: 200px;
display: block;
border-radius: inherit;
overflow: hidden;
}
.cForumGrid__hero-link::before{
padding-bottom: calc(9 / 16 * 100%);
border: 1px solid rgba( var(--theme-text_color), 0.25 );
content: '';
display: block;
border-radius: inherit;
position: relative;
z-index: 1;
}
.cForumGrid__hero-image{
position: absolute; top: 0; left: 0; right: 0; bottom: 0;
background-size: cover;
background-position: 50% 50%;
border-radius: inherit;
}
.cForumGrid__contentAlign{
padding: var(--sp-5);
display: flex;
gap: 12px;
}
.cForumGrid__icon .ipsItemStatus_custom{
max-width: 34px;
}
.cForumGrid__icon .ipsItemStatus_large{
max-width: 34px;
max-height: 34px;
}
.cForumGrid__content{
flex: 1 1 auto;
align-self: center;
}
.cForumGrid__title{
line-height: 1.1;
font-weight: 500;
}
@media (min-width: 500px){
.cForumGrid__title{
font-size: 18px;
}
}
.cForumGrid--unread .cForumGrid__title{
font-weight: 700;
}
.cForumGrid__title-stats{
display: flex;
font-weight: 500;
}
.cForumGrid__title-stats li:not(:first-child)::before{
content: '/';
margin: 0 .8em;
opacity: .6;
}
.cForumGrid__description{
color: rgb(var(--theme-text_light));
}
:where(.cForumGrid__description .ipsType_richText) a{
color: inherit;
}
.cForumGrid__description .ipsType_richText p:first-child{
margin-top: var(--sp-2);
}
.cForumGrid__subforums{
margin: .5em 0 0;
padding: 0;
list-style: none;
display: flex;
flex-wrap: wrap;
gap: .5em 2em;
}
.cForumGrid__subforums a{
display: flex;
align-items: baseline;
}
.cForumGrid__unread-subforum{
font-weight: 700;
}
.cForumGrid__subforums a::before{
flex: 0 0 auto;
content: '\f114';
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
margin-inline-end: .5em;
opacity: .7;
}
.cForumGrid__subforums .cForumGrid__unread-subforum a::before{
content: "\f07b";
}
.cForumGrid__last {
padding: var(--sp-3) var(--sp-5);
border-top: 1px solid rgba(var(--theme-text_color), .06);
border-bottom-left-radius: inherit;
border-bottom-right-radius: inherit;
}
.cForumGrid__last .ipsUserPhoto{
margin-top: 3px;
}
.cForumGrid__last .ipsDataItem_lastPoster__title{
font-weight: 500;
}
.cForumGrid__last .ipsType_light a{
color: inherit;
}
.cForumTopicTable .ipsDataItem_title {
display: block;
}
.cForumTitle {}
.cForumRow_hidden .cForumTitle {
opacity: 0.5;
}
.cForumRow_hidden > .ipsDataList {
display: none !important;
}
.cForumToggle {
font-size: 18px;
opacity: 0.2;
transition: 0.3s all linear;
width: 20px;
height: 20px;
}
.cForumToggle:hover {
opacity: 1;
}
.cForumToggle:after {
content: "\f078";
font-family: "FontAwesome";
font-size: 18px;
}
.cForumRow_hidden .cForumToggle:after {
content: "\f053";
}
html[dir="rtl"] .cForumRow_hidden .cForumToggle:after {
content: "\f054";
}
.cTopicList .ipsDataItem_icon {
min-width: 21px;
padding-inline-end: 0;
}
.cTopicList .ipsLiveActivity--small {
margin-inline-end: calc( var(--sp-2) * -1 );
display: inline-block;
}
.cTopicHovercard .cTopicHovercard_container {
height: 200px;
overflow: auto;
border-bottom: 0;
}
.cTopicHovercard .ipsType_richText {
font-size: {fontsize="x_small"};
}
.cTopicHovercard hr.ipsHr {
margin: 7px 0;
}
/* Q&A RATINGS */
.cForumQuestion_stat > span:first-child {
display: block;
font-size: 22px;
}
.cRatingColumn {
width: 65px;
padding: 15px 15px 0 15px !important;
}
[dir='ltr'] .cRatingColumn{
border-top-left-radius: var(--box--radius);
border-bottom-left-radius: var(--box--radius);
}
[dir='rtl'] .cRatingColumn{
border-top-right-radius: var(--box--radius);
border-bottom-right-radius: var(--box--radius);
}
.cRatingColumn.cRatingColumn_question {
padding-top: 0 !important;
}
.cRatingColumn_on {
background: var(--positive-light);
}
.cRatingColumn_up {
border-color: var(--positive-dark);
}
.cRatingColumn_down {
border-color: var(--negative-dark);
}
.cRatingColumn > ul > li {
display: block;
}
.cRatingColumn_question {
padding: 0 !important;
}
.cRatingColumn_question {
margin-inline-end: calc( var(--sp-4) * -1 );
}
@media screen and (max-width: 767px) {
.cRatingColumn_question {
margin-inline-end: calc( var(--sp-3) * -1 );
}
}
.cAnswerRate {
font-size: 50px;
line-height: 10px;
position: relative;
display: block;
overflow: hidden;
}
.cAnswerRate.cAnswerRate_up {
margin-bottom: 10px;
}
html[dir="ltr"] .cAnswerRate {
left: 1px;
}
html[dir="rtl"] .cAnswerRate {
right: 1px;
}
.cAnswerRate:not( .ipsType_positive ):not( .ipsType_negative ),
.cAnswerRate:hover:not( .ipsType_positive ):not( .ipsType_negative ) {
color: rgb( var(--theme-text_color) );
}
span.cAnswerRate:not( .ipsType_positive ):not( .ipsType_negative ),
span.cAnswerRate:hover:not( .ipsType_positive ):not( .ipsType_negative ) {
color: rgb( var(--theme-text_light) );
opacity: 0.5;
cursor: not-allowed;
}
.cAnswerRate.ipsType_positive:hover {
color: var(--positive-dark);
}
.cAnswerRate.ipsType_negative:hover {
color: var(--negative-dark);
}
.cAnswerRate > .fa {
line-height: 30px;
}
span.cAnswerRate.cAnswerRate_noPermission {
opacity: 0.25 !important;
}
.cAnswerRating {
font-size: 22px;
font-weight: 500;
line-height: 30px;
display: block;
margin-top: -8px;
}
.cBestAnswerIndicator {
display: inline-block;
color: var(--positive-light);
font-size: 22px;
width: 36px;
height: 36px;
text-align: center;
line-height: 36px;
position: relative;
background: var(--positive-dark);
border-radius: 36px;
margin-bottom: 5px;
}
.ipsDataList .cBestAnswerIndicator {
margin-bottom: 0;
}
.cBestAnswerIndicator_off {
background: #d4d4d4;
}
.cBestAnswerIndicator_off:hover {
background: #c9c9c9;
color: #fff;
}
a.cBestAnswerIndicator:not( .cBestAnswerIndicator_off ):hover {
line-height: 34px;
}
a.cBestAnswerIndicator:not( .cBestAnswerIndicator_off ):hover i.fa:before {
content: '\f00d';
color: #fff;
}
/* POST WRAPPER STYLES */
.cPost {
display: flex;
}
/*.cPost.ipsModerated,
.cPost.ipsModerated .cAuthorPane {
background: rgb( var(--theme-moderated) );
}*/
.cPost.ipsComment_selected:not( .ipsComment_moderated ) {
background: rgb( var(--theme-selected) );
}
/*.cTopic .cPost.ipsComment:last-of-type {
margin-bottom: 0;
}*/
.cPost.cPostQuestion.ipsBox--child {
border: 0;
box-shadow: none;
}
.cPost .cAuthorPane{
flex: 0 0 auto;
margin: 0 !important;
}
.cPost .ipsComment_meta {
padding: var(--sp-5) 0;
}
.cPost .ipsComment_controls {
margin: 0;
padding: 0;
}
.cPost .cPost_contentWrap {
position: relative;
flex: 1 1 auto;
display: flex;
flex-direction: column;
}
.cPost .cPost_contentWrap,
.cPost .ipsComment_meta{
padding-inline-end: var(--sp-4);
}
/* Remove horizontal scrollbar when editing posts */
.cPost_contentWrap .ipsToolList_horizontal{
margin: 0;
}
.cPost.ipsComment .ipsType_richText {
margin-top: 0;
}
.cPost .ipsComment_content {
display: flex;
flex-direction: column;
min-height: 100%;
}
html[dir] .cPost .ipsComment_content {
padding-right: 0;
padding-left: 0;
}
.ipsApp .cTopic [data-role="commentFeed"] > .ipsComment:first-child {
padding-top: 15px;
}
.cPostShareMenu h5 {
margin-bottom: 5px;
}
.cTopic .ipsComment.ipsComment_ignored {
padding-inline-start: 200px;
}
/* REPLY AREA / CREATE TOPIC */
.cTopicPostArea .ipsComposeArea {
margin-top: 0;
}
/*.cTopicPostArea:not( .cTopicPostArea_noSize ) .ipsComposeArea_dummy {
min-height: 200px;
}*/
/*.cTopicPostArea hr {
display: none;
}*/
.cCreateTopic_date input {
max-width: 100% !important;
width: 100% !important;
margin-bottom: 7px;
}
.cCreateTopic_date input {
padding-inline-start: 35px !important;
}
.cCreateTopic_date li {
position: relative;
}
.cCreateTopic_date i {
position: absolute;
top: 13px;
font-size: 18px;
}
html[dir="ltr"] .cCreateTopic_date i {
left: 10px;
}
html[dir="rtl"] .cCreateTopic_date i {
right: 10px;
}
/* FEATURED TOPICS */
.cFeaturedTopics h2 {
font-weight: 500;
}
/* Unread bar */
.ipsUnreadBar {
color: rgb( var(--theme-item_status) );
margin-bottom: var(--sp-5);
display: flex;
align-items: center;
}
.ipsUnreadBar:before,
.ipsUnreadBar:after {
content: '';
height: 2px;
border-radius: 3px;
background: rgb( var(--theme-item_status) );
}
.ipsUnreadBar:before {
flex: 0 0 calc(200px - var(--sp-4));
}
.ipsUnreadBar:after {
flex: 1 1 auto;
}
.ipsUnreadBar span{
padding: 0 var(--sp-4);
font-weight: 500;
}
@media screen and (max-width: 767px) {
html[dir] .ipsUnreadBar {
margin-left: var(--sp-1);
margin-right: var(--sp-1);
}
.ipsUnreadBar:before {
display: none;
}
.ipsUnreadBar span {
padding-inline-start: 0;
}
}
/* Topic meta */
.ipsTopicMeta {
list-style: none;
margin-top: calc( ( var(--sp-5) * -1 ) + var(--sp-4) );
margin-bottom: var(--sp-2);
padding: 0;
display: flex;
flex-direction: column;
align-items: flex-start;
border-radius: var(--radius-1);
}
.ipsTopicMeta {
margin-inline-start: calc(200px - var(--sp-4));
}
.ipsTopicMeta__item {
background-color: var(--box--backgroundColor);
box-shadow: var(--box--boxShadow);
border-radius: var(--radius-1);
padding: 6px var(--sp-4);
font-size: {fontsize="small"};
color: rgb( var(--theme-text_color) );
word-break: break-word;
display: inline-flex;
margin-bottom: var(--sp-2);
}
.ipsTopicMeta__time {
color: rgb( var(--theme-text_light) );
}
.ipsTopicMeta__time {
margin-inline-end: var(--sp-2);
}
.ipsTopicMeta__action {
flex: 1;
}
.ipsTopicMeta a{
color: inherit;
}
@media screen and (max-width: 767px) {
html[dir] .ipsTopicMeta {
margin-inline-start: var(--sp-1);
margin-inline-end: var(--sp-1);
align-items: stretch;
}
.ipsTopicMeta__item {
padding: var(--sp-2) var(--sp-4);
display: block;
}
}
/* Mini sidebar list */
.cForumMiniList_button.ipsButton_split {
margin-top: 2px;
}
.cForumMiniList_wrapper {
padding: 10px;
}
ul.ipsButton_split.cForumMiniList_buttonShowFlow {
margin-top: 8px;
}
ul.ipsButton_split.cForumMiniList_button {
text-transform: none;
}
html[dir] .cForumMiniList_wrapper > .ipsSideMenu > .ipsSideMenu_list.cForumMiniList_multiRoot > li > .cForumMiniList {
border: 0;
}
.ipsSideMenu > .cForumMiniList > li:not( .cForumMiniList_category ) > .cForumMiniList {
margin-inline-start: 0;
}
.ipsSideMenu > .cForumMiniList_singleRoot .cForumMiniList {
border-inline-start-width: 0;
}
.cForumMiniList .ipsSideMenu_item + .ipsSideMenu_list .ipsSideMenu_item {
font-size: {fontsize="small"};
padding: 8px 10px;
line-height: {fontsize="large"};
}
.cForumMiniList .ipsSideMenu_item {
font-size: {fontsize="medium"};
padding: 7px 10px;
display: flex;
align-items: center;
}
.cForumMiniList .ipsSideMenu_item .cForumMiniList_title {
min-width: 0;
}
.cForumMiniList.cForumMiniList_multiRoot > li > a {
font-size: {fontsize="large"};
font-weight: 500;
padding: 8px 12px;
margin: 0;
color: rgb( var(--theme-text_dark) );
}
.cForumMiniList_count {
margin-inline-start: 12px;
}
.cForumMiniList_count .fa {
font-size: 8px;
}
.cForumMiniList .cForumMiniList_blob {
flex: 0 0 auto;
font-size: 18px;
width: 1em;
height: 1em;
border-radius: 3px;
display: inline-flex;
justify-content: center;
align-items: center;
color: #fff;
background: rgb( var(--theme-area_background_dark) );
opacity: 0.3;
position: relative;
}
.cForumMiniList .cForumMiniList_blob {
margin-inline-end: 10px;
}
.cForumMiniList .cForumMiniList_blob > span {
position: absolute;
top: 2px;
left: 2px;
right: 2px;
bottom: 2px;
background: rgb( var(--theme-area_background_reset) );
border-radius: 2px;
}
.cForumMiniList .cForumMiniList_blob .fa {
display: none;
font-size: .6em;
}
.cForumMiniList .cForumMiniList_selected > .cForumMiniList_blob {
opacity: 1;
}
.cForumMiniList .cForumMiniList_selected > .cForumMiniList_blob .fa {
display: block;
}
.cForumMiniList .cForumMiniList_selected > .cForumMiniList_blob > span {
display: none;
}
.cForumFluidTable .ipsDataItem_lastPoster.ipsDataItem_noPhoto {
min-width: 170px;
}
.cForumFluidTable .ipsItemStatus {
position: relative;
top: -1px;
}
.cForumFluidTable .ipsBadge_pill {
height: 18px;
line-height: 18px;
position: relative;
top: -2px;
}
.cForumMiniList > li > a.cForumMiniList_selected {
background: rgb( var(--theme-area_background) );
}
/* Loading styles */
.cForumFluidTable .ipsDataItem_loading > div > span:last-child:after {
left: 10px;
width: 38px;
height: 38px;
border-radius: 38px;
}
html[dir="ltr"] .cForumFluidTable .ipsDataItem_loading > div > span:last-child {
left: 56px;
right: 500px;
}
html[dir="rtl"] .cForumFluidTable .ipsDataItem_loading > div > span:last-child {
right: 56px;
left: 500px;
}
html[dir="ltr"] .cForumFluidTable .ipsDataItem_loading > div > span:last-child:after {
left: -46px;
}
html[dir="rtl"] .cForumFluidTable .ipsDataItem_loading > div > span:last-child:after {
right: -46px;
}
.cForumFluidTable .ipsDataItem_loading > div > span:first-child {
width: 0;
height: 0;
}
.cForumFluidTable .ipsDataItem_loading > div > span:first-child {
top: 15px;
}
.ipsSnippetList{
margin: 0;
padding: .2px 0; /* Prevent collapsing margins */
list-style: none;
}
.ipsTopicSnippet{
--ipsTopicSnippet--padding: 20px;
--ipsTopicSnippet__avatar--width: 40px;
padding: var(--ipsTopicSnippet--padding);
}
.ipsTopicSnippet__top{
margin-bottom: var(--sp-2);
}
/* Avatar */
.ipsTopicSnippet__avatar{
flex-basis: 1em;
font-size: var(--ipsTopicSnippet__avatar--width);
box-sizing: content-box;
text-align: center;
}
.ipsTopicSnippet__avatar{
margin-inline-end: var(--ipsTopicSnippet--padding);
}
.ipsTopicSnippet__avatar .ipsUserPhoto{
margin: 0;
width: 1em;
height: 1em;
display: block;
}
/* Fix alignment of moved arrow */
.ipsTopicSnippet__avatar .fa-arrow-left{
display: block;
}
.ipsTopicSnippet__title .ipsDataItem_title{
margin: 0 0 0.2em 0;
display: block;
}
/* Fix alignment of participated icon, when fluid view and expanded view are both enabled on small mobile screens */
.cForumFluidTable .ipsTopicSnippet__title .ipsItemStatus{
position: static;
}
.ipsTopicSnippet__title .ipsTag_prefix{
display: inline-block;
}
.ipsTopicSnippet__date{
font-size: 0.9em;
}
.ipsTopicSnippet__date::first-letter{
text-transform: uppercase;
}
/* Snippet excerpt */
.ipsTopicSnippet__snippet p{
margin: 0;
display: -webkit-box;
-webkit-line-clamp: 4;
-webkit-box-orient: vertical;
overflow: hidden;
line-height: 1.5;
}
@media (min-width: 800px){
.ipsTopicSnippet__snippet p{
-webkit-line-clamp: 3;
}
}
.ipsTopicSnippet__bottom{
flex-wrap: wrap-reverse;
}
.ipsTopicSnippet__last{
margin-top: var(--sp-2);
}
.ipsTopicSnippet__last-avatar{
font-size: 20px;
margin-inline-end: .3em;
}
.ipsTopicSnippet__last .ipsUserPhoto{
margin: 0;
width: 1em;
height: 1em;
}
.ipsTopicSnippet__snippet,
.ipsTopicSnippet__bottom{
padding-inline-start: calc(var(--ipsTopicSnippet__avatar--width) + var(--ipsTopicSnippet--padding));
}
.ipsTopicSnippet__stats{
text-transform: uppercase;
font-size: .8em;
font-weight: 700;
padding: .3em 0;
}
.ipsTopicSnippet__stats li{
flex: 0 0 auto;
}
.ipsTopicSnippet__stats li:not(:first-child)::before{
content: '/';
margin: 0 .6em;
opacity: .4;
}
.ipsTopicSnippet__meta{
margin-top: 0.2em;
}
.ipsTopicSnippet__meta > *:not(:first-child){
margin-inline-start: 15px;
}
/* Reactions */
.ipsTopicSnippet__reactions .ipsReactOverview--reactions img{
max-width: 1.7em;
max-height: 1.7em;
}
.ipsTopicSnippet__reactions .ipsReactOverview--points{
display: flex;
align-items: center;
}
[dir='ltr'] .ipsTopicSnippet__reactions .ipsReactOverview--points p{
margin: 0 0 0 .6em;
}
[dir='rtl'] .ipsTopicSnippet__reactions .ipsReactOverview--points p{
margin: 0 .6em 0 0;
}
.ipsTopicSnippet__mod{
margin-inline-start: 20px;
flex: 0 0 auto;
}
.ipsTopicSnippet__mod .ipsCustomInput{
vertical-align: middle;
}
@media (max-width: 767px){
.ipsTopicSnippet{
margin-left: 0;
margin-right: 0;
border-width: 1px 0 !important; /* Required to overwrite an earlier !important */
border-radius: 0;
}
.ipsTopicSnippet__avatar{
display: none;
}
[dir='ltr'] .ipsTopicSnippet__snippet,
[dir='ltr'] .ipsTopicSnippet__bottom,
[dir='rtl'] .ipsTopicSnippet__snippet,
[dir='rtl'] .ipsTopicSnippet__bottom{
padding-left: 0;
padding-right: 0;
}
}
@media (max-width: 600px){
.ipsTopicSnippet{
--ipsTopicSnippet__avatar--width: 30px;
--ipsTopicSnippet--padding: 15px;
}
}
/* Fixes for Q and A forums */
[dir="ltr"] .ipsQuestionSnippet .ipsTopicSnippet__snippet,
[dir="ltr"] .ipsQuestionSnippet .ipsTopicSnippet__bottom,
[dir="rtl"] .ipsQuestionSnippet .ipsTopicSnippet__snippet,
[dir="rtl"] .ipsQuestionSnippet .ipsTopicSnippet__bottom{
padding: 0;
}
.ipsQuestionSnippet .ipsTopicSnippet__snippet{
margin: 10px 0;
}
@media (min-width: 980px){
.ipsQuestionSnippet{
display: flex;
align-items: center;
}
.ipsQuestionSnippet .ipsDataItem_icon,
.ipsQuestionSnippet .ipsDataItem_main,
.ipsQuestionSnippet .ipsDataItem_generic{
padding: 0;
}
.ipsQuestionSnippet .ipsDataItem_icon{
flex: 0 0 36px;
align-self: flex-start;
}
.ipsQuestionSnippet .ipsDataItem_icon{
margin-inline-end: 15px;
}
}
/* Analytics and statistics */
.ipsFluidGrid--analytics-and-statistics{
--FluidGrid--width: 300px;
}
.ipsLayout_sidebarUsed .ipsFluidGrid--analytics-and-statistics{
--FluidGrid--width: 340px;
}
.analytics-and-statistics {
font-weight: normal;
}
.analytics-and-statistics--chart {
padding-bottom: 0px;
}
/* Hide empty page header on analytics page */
.ipsPageHeader:has(.ipsType_pageTitle:empty:only-child){
display: none;
}]]></css>
<css css_location="front" css_app="forums" css_attributes="" css_path="." css_name="posts.css"></css>
<css css_location="front" css_app="forums" css_attributes="" css_path="." css_name="topics.css"><![CDATA[/* Ensure border-radius is followed */
.cTopicOverview{
overflow: hidden;
}
.cTopicOverview__header {
flex: 0 0 auto;
}
.cTopicOverview__stats {
max-height: 90px;
max-width: 100%;
list-style: none;
}
.cTopicOverview__toggle {
min-width: 80px;
transition: 0.1s all ease-in-out;
}
.cTopicOverview__toggle .fa {
transition: 0.2s all ease-in-out;
}
.cTopicOverview--expanded .cTopicOverview__toggle .fa {
transform: rotate(180deg);
}
.cTopicOverview__toggle:hover {
background: rgb( var(--theme-area_background_light) );
color: inherit;
}
.cTopicOverview__toggle--inline {
display: none;
}
.cTopicOverview__toggle--afterStats {
max-height: 90px;
}
.cTopicOverview--inline .cTopicOverview__statItem{
padding-right: var(--sp-7);
}
html[dir='ltr'] .cTopicOverview--inline .cTopicOverview__statItem:last-child,
html[dir='rtl'] .cTopicOverview--inline .cTopicOverview__statItem:first-child{
padding-right: 0;
}
.cTopicOverview__statItem > span {
display: block;
}
.cTopicOverview__statValue {
font-weight: bold;
font-size: {fontsize="large"};
}
.cTopicOverview__sectionTitle {
font-size: 12px;
}
.cTopicOverview__dataList {
margin-left: -4px;
margin-right: -4px;
list-style: none;
}
.cTopicOverview__dataItem {
{{if theme.rounded_photos}}
border-radius: 500px;
{{else}}
border-radius: 2px;
{{endif}}
font-size: {fontsize="small"};
min-width: 110px;
flex-basis: 100px;
}
.cTopicOverview--inline .cTopicOverview__dataItem {
min-height: 34px;
}
.cTopicOverview--sidebar .cTopicOverview__dataItem--split {
width: 50%;
}
.cTopicOverview--inline .cTopicOverview__dataItem--split {
width: 25%;
}
a.cTopicOverview__dataItem.ipsType_blendLinks:hover {
color: rgb( var(--theme-link_color) );
}
.cTopicOverview__preview .cTopicOverview__dataItem {
min-width: 0;
flex-basis: auto;
}
.cTopicOverview--inline .cTopicOverview__dataItem {
max-width: 200px;
}
.cTopicOverview__dataItemInner {
text-overflow: ellipsis;
overflow: hidden;
line-height: 1.2;
}
.cTopicOverview__dataItemInner > strong {
display: inline-block;
margin-bottom: 2px;
}
.cTopicOverview__preview {
position: relative;
overflow: hidden;
min-height: 90px;
}
.cTopicOverview__preview:after {
content: '';
pointer-events: none;
display: block;
position: absolute;
right: 0;
top: 0;
bottom: 0;
background-image: linear-gradient(to right, rgba( var(--theme-area_background_reset), 0 ) 0%, rgba( var(--theme-area_background_reset), 1 ) 100%);
width: 250px;
}
.cTopicOverview__preview .ipsUserPhoto_tiny {
width: 28px;
height: 28px;
}
.cTopicOverview__previewInner {
position: absolute;
left: 0;
right: 0;
bottom: 0;
top: 0;
}
.cTopicOverview__imageGrid {
height: 100%;
margin: -1px -1px 0 -1px;
list-style:none;
}
.cTopicOverview__image {
position: relative;
max-width: 150px;
padding: 1px;
}
.cTopicOverview--sidebar .cTopicOverview__image {
width: 50%;
}
.cTopicOverview--inline .cTopicOverview__image {
width: 25%;
}
.cTopicOverview__image .ipsThumb {
border: none !important;
}
.cTopicOverview__image > a {
display: block;
height: 0;
padding-top: 100%;
}
@media screen and (max-width: 1150px) {
.cTopicOverview {
flex-direction: column;
}
.cTopicOverview__preview,
.cTopicOverview__toggle--afterStats {
display: none;
}
.cTopicOverview__toggle--inline {
display: flex;
}
}
@media screen and (max-width: 767px) {
.cTopicOverview--inline .cTopicOverview__image {
width: 50%;
max-width: 50%;
}
}]]></css>
</theme>