Version 5.0.0 beta 4

This commit is contained in:
Neo committed 2025-12-19 16:57:00 -08:00
1 parent e86153356a
commit 2f24f9de48
276 files changed
+8614 -6044

No files matched your search

+225 -309
View File
@@ -53,7 +53,8 @@ IPSCONTENT;
if ( $location == 'sidebar' ):
$return .= <<<IPSCONTENT
<div class="ipsWidget cTopicOverview cTopicOverview--sidebar i-flex i-flex-direction_column i-overflow_hidden ipsResponsive_showDesktop"
<div class="ipsWidget cTopicOverviewContainer">
<div class="cTopicOverview cTopicOverview--sidebar ipsResponsive_showDesktop"
IPSCONTENT;
if ( $hasAnyContent ):
@@ -70,7 +71,7 @@ IPSCONTENT;
else:
$return .= <<<IPSCONTENT
<div class="cTopicOverview cTopicOverview--row i-flex
<div class="ipsBox ipsPull cTopicOverviewContainer
IPSCONTENT;
if ( $topic->showSummaryOnDesktop() != 'post' ):
@@ -90,7 +91,8 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
"
">
<div class="cTopicOverview cTopicOverview--main"
IPSCONTENT;
if ( $hasAnyContent ):
@@ -107,225 +109,106 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
<div class='cTopicOverview__header i-background_1 i-flex_00 i-flex i-flex-wrap_wrap'>
<ul class="iTopicOverview__header i-flex_91 i-padding_3 i-flex i-flex-wrap_wrap i-justify-content_space-around i-gap_3 i-text-align_center">
<li>
<span class="i-color_soft i-font-weight_500 i-display_block">
<div class="cTopicOverview__content">
<ul class='cTopicOverview__item cTopicOverview__item--stats'>
IPSCONTENT;
if ( $topic->posts > 1 ):
$return .= <<<IPSCONTENT
<li>
<span class="i-color_soft i-font-weight_500">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'replies', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span>
<span class="i-color_hard i-font-weight_700 i-display_block i-font-size_3">
<span class="i-color_hard i-font-weight_700 i-font-size_3">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->formatNumberShort( $topic->posts-1 );
$return .= <<<IPSCONTENT
</span>
</li>
<li>
<span class="i-color_soft i-font-weight_500 i-display_block">
</li>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
<li>
<span class="i-color_soft i-font-weight_500">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'views', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span>
<span class="i-color_hard i-font-weight_700 i-font-size_3">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->formatNumberShort( $topic->views );
$return .= <<<IPSCONTENT
</span>
</li>
<li>
<span class="i-color_soft i-font-weight_500">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_created', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span>
<span class="i-color_hard i-font-weight_700 i-display_block i-font-size_3">
<span class="i-color_hard i-font-weight_700 i-font-size_3">
IPSCONTENT;
$val = ( $topic->start_date instanceof \IPS\DateTime ) ? $topic->start_date : \IPS\DateTime::ts( $topic->start_date );$return .= $val->html(TRUE, TRUE);
$return .= <<<IPSCONTENT
</span>
</li>
<li>
<span class="i-color_soft i-font-weight_500 i-display_block">
</li>
<li>
<span class="i-color_soft i-font-weight_500">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'last_reply', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span>
<span class="i-color_hard i-font-weight_700 i-display_block i-font-size_3">
<span class="i-color_hard i-font-weight_700 i-font-size_3">
IPSCONTENT;
$val = ( $topic->last_post instanceof \IPS\DateTime ) ? $topic->last_post : \IPS\DateTime::ts( $topic->last_post );$return .= $val->html(TRUE, TRUE);
$return .= <<<IPSCONTENT
</span>
</li>
</ul>
IPSCONTENT;
if ( $location != 'sidebar' ):
$return .= <<<IPSCONTENT
<a href='#' data-action='toggleOverview' class='cTopicOverview__toggle cTopicOverview__toggle--row i-flex_10 i-basis_80 i-color_soft i-font-size_2'><span class="ipsInvisible">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_expand', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span><i class='fa-solid fa-chevron-down'></i></a>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
IPSCONTENT;
if ( $location !== 'sidebar' ):
$return .= <<<IPSCONTENT
<div class='cTopicOverview__preview i-flex_10' data-role="preview">
<div class='cTopicOverview__previewInner i-padding_3 i-flex i-gap_3 ipsResponsive_hidePhone'>
</li>
</ul>
IPSCONTENT;
if ( $members ):
$return .= <<<IPSCONTENT
<div class='cTopicOverview__section--users i-flex_00'>
<h4 class='cTopicOverview__sectionTitle i-font-size_-1 i-color_hard i-text-transform_uppercase i-font-weight_600'>
<div class='cTopicOverview__item cTopicOverview__item--topPosters'>
<h4 class='cTopicOverview__title'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_topposters', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h4>
<ul class='cTopicOverview__dataList i-flex i-justify-content_space-between i-align-items_center i-gap_3 i-margin-top_1'>
<ul class='cTopicOverview__dataList'>
IPSCONTENT;
foreach ( $members as $data ):
$return .= <<<IPSCONTENT
<li class="cTopicOverview__dataItem i-flex i-justify-content_start i-align-items_center i-gap_2">
IPSCONTENT;
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $data['member'], 'tiny' );
$return .= <<<IPSCONTENT
<span>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $data['count'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</span>
</li>
IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
</ul>
</div>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( $busy ):
$return .= <<<IPSCONTENT
<div class='cTopicOverview__section--popularDays i-flex_00'>
<h4 class='cTopicOverview__sectionTitle i-font-size_-1 i-color_hard i-text-transform_uppercase i-font-weight_600'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_populardays', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h4>
<ul class='cTopicOverview__dataList i-flex i-justify-content_space-between i-align-items_center i-gap_3 i-margin-top_1'>
IPSCONTENT;
foreach ( $busy as $row ):
$return .= <<<IPSCONTENT
<li class='i-flex_10'>
<a href="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $topic->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $row['commentId'] ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
" rel="nofollow" class='cTopicOverview__dataItem i-flex i-justify-content_space-between i-align-items_center i-gap_2'>
<span class='i-color_soft'>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $row['date']->dayAndShortMonth(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</span>
<span class='i-font-weight_500 i-color_hard'>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $row['count'], ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</span>
</a>
</li>
IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
</ul>
</div>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
</div>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
<div class='cTopicOverview__body i-padding_3 i-gap_3
IPSCONTENT;
if ( $location !== 'sidebar' ):
$return .= <<<IPSCONTENT
ipsHide i-flex i-flex_11 i-flex-direction_column
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
' data-role="overview">
IPSCONTENT;
if ( $members ):
$return .= <<<IPSCONTENT
<div class='cTopicOverview__section--users'>
<h4 class='ipsTitle ipsTitle--hr ipsTitle--h6 i-font-weight_600 i-text-transform_uppercase i-font-size_-2 i-margin-bottom_2'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_topposters', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h4>
<ul class='cTopicOverview__dataList ipsGrid i-basis_140 i-gap_2'>
IPSCONTENT;
foreach ( $members as $data ):
$return .= <<<IPSCONTENT
<li class="ipsPhotoPanel">
<li class="ipsPhotoPanel">
IPSCONTENT;
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->userPhoto( $data['member'], 'fluid' );
$return .= <<<IPSCONTENT
<div class='ipsPhotoPanel__text'>
<strong class='ipsPhotoPanel__primary'><a href='
<div class='ipsPhotoPanel__text'>
<strong class='ipsPhotoPanel__primary i-color_hard'><a href='
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $data['member']->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
@@ -334,55 +217,55 @@ IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $data['member']->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</a></strong>
<span class='ipsPhotoPanel__secondary'>
<span class='ipsPhotoPanel__secondary'>
IPSCONTENT;
$pluralize = array( $data['count'] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_number_posts', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
$return .= <<<IPSCONTENT
</span>
</div>
</li>
</div>
</li>
IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
</ul>
</div>
</ul>
</div>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( $busy ):
$return .= <<<IPSCONTENT
<div class='cTopicOverview__section--popularDays'>
<h4 class='ipsTitle ipsTitle--hr ipsTitle--h6 i-font-weight_600 i-text-transform_uppercase i-font-size_-2 i-margin-top_4 i-margin-bottom_2'>
<div class='cTopicOverview__item cTopicOverview__item--popularDays'>
<h4 class='cTopicOverview__title'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_populardays', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h4>
<ul class='cTopicOverview__dataList ipsGrid i-basis_140 i-gap_2'>
<ul class='cTopicOverview__dataList'>
IPSCONTENT;
foreach ( $busy as $row ):
$return .= <<<IPSCONTENT
<li>
<a href="
<li>
<a href="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $topic->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $row['commentId'] ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= \IPS\Theme\Template::htmlspecialchars( $topic->shareableUrl( $row['commentId'] ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
" rel="nofollow" class='cTopicOverview__dataItem i-flex i-justify-content_start i-align-items_center i-gap_2'>
<span class='i-font-weight_bold'>
" rel="nofollow" class='cTopicOverview__dataItem i-grid i-color_soft'>
<span class='i-font-weight_bold i-color_hard'>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $row['date']->dayAndShortMonth(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
@@ -391,60 +274,52 @@ IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $row['date']->format('Y'), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</span>
<span class='i-color_soft'>
<span>
IPSCONTENT;
$pluralize = array( $row['count'] ); $return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_number_posts', ENT_DISALLOWED, 'UTF-8', FALSE ), FALSE, array( 'pluralize' => $pluralize ) );
$return .= <<<IPSCONTENT
</span>
</a>
</li>
</a>
</li>
IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
</ul>
</div>
</ul>
</div>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( $reacted ):
$return .= <<<IPSCONTENT
<div class='cTopicOverview__section--topPost'>
<h4 class='ipsTitle ipsTitle--hr ipsTitle--h6 i-font-weight_600 i-text-transform_uppercase i-font-size_-2 i-margin-top_4'>
<div class='cTopicOverview__item cTopicOverview__item--popularPosts'>
<h4 class='cTopicOverview__title'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_popularposts', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h4>
<ul class='cTopicOverview__dataList'>
IPSCONTENT;
foreach ( $reacted as $data ):
$return .= <<<IPSCONTENT
<div class='i-position_relative'>
<a href="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
" rel="nofollow" class="i-position_cover" aria-hidden='true'><span class='ipsInvisible'>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->author()->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</span></a>
<div class='ipsPhotoPanel ipsPhotoPanel--tiny i-margin-top_3'>
<span class='ipsUserPhoto'>
<img src='
<li>
<div class='ipsPhotoPanel ipsPhotoPanel--tiny'>
<span class='ipsUserPhoto'>
<img src='
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->author()->photo, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
@@ -453,74 +328,73 @@ IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->author()->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
' loading='lazy'>
</span>
<div class="ipsPhotoPanel__text">
<h5 class='ipsPhotoPanel__primary'>
</span>
<div class="ipsPhotoPanel__text">
<h5 class='ipsPhotoPanel__primary i-color_hard'>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->author()->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</h5>
<p class='ipsPhotoPanel__secondary'>
<p class='ipsPhotoPanel__secondary'>
<a href="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
" rel="nofollow">
IPSCONTENT;
$val = ( $data['comment']->mapped('date') instanceof \IPS\DateTime ) ? $data['comment']->mapped('date') : \IPS\DateTime::ts( $data['comment']->mapped('date') );$return .= $val->html();
$return .= <<<IPSCONTENT
</p>
</div>
</div>
<p class='i-margin-top_2 ipsRichText ipsTruncate_3'>
</a>
</p>
</div>
</div>
<p class='i-margin-top_2 ipsRichText ipsTruncate_3'>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->truncated(true, 200), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</p>
</div>
</p>
</li>
IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
</div>
</ul>
</div>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( $helpful ):
$return .= <<<IPSCONTENT
<div class='cTopicOverview__section--topPost'>
<h4 class='ipsTitle ipsTitle--hr ipsTitle--h6 i-font-weight_600 i-text-transform_uppercase i-font-size_-2 i-margin-top_4'>
<div class='cTopicOverview__item cTopicOverview__item--helpfulPosts'>
<h4 class='cTopicOverview__title'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_helpfulposts', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h4>
<ul class='cTopicOverview__dataList'>
IPSCONTENT;
foreach ( $helpful as $data ):
$return .= <<<IPSCONTENT
<div class='i-position_relative'>
<a href="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->url(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
" rel="nofollow" class="i-position_cover" aria-hidden='true'><span class='ipsInvisible'>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->author()->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</span></a>
<div class='ipsPhotoPanel ipsPhotoPanel--tiny i-margin-top_3'>
<span class='ipsUserPhoto'>
<img src='
<li>
<div class='ipsPhotoPanel ipsPhotoPanel--tiny'>
<span class='ipsUserPhoto'>
<img src='
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->author()->photo, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
@@ -529,57 +403,63 @@ IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->author()->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
' loading='lazy'>
</span>
<div>
<h5 class='i-font-weight_bold'>
</span>
<div class="ipsPhotoPanel__text">
<h5 class="ipsPhotoPanel__primary i-color_hard">
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->author()->name, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</h5>
<p class='i-color_soft'>
<p class="ipsPhotoPanel__secondary">
<a href="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->shareableUrl(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
" rel="nofollow">
IPSCONTENT;
$val = ( $data['comment']->mapped('date') instanceof \IPS\DateTime ) ? $data['comment']->mapped('date') : \IPS\DateTime::ts( $data['comment']->mapped('date') );$return .= $val->html();
$return .= <<<IPSCONTENT
</p>
</div>
</div>
<p class='i-margin-top_2 ipsRichText ipsTruncate_3'>
</a>
</p>
</div>
</div>
<p class='i-margin-top_2 ipsRichText ipsTruncate_3'>
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $data['comment']->truncated(true, 200), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
</p>
</div>
</p>
</li>
IPSCONTENT;
endforeach;
$return .= <<<IPSCONTENT
</div>
</ul>
</div>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( $images ):
$return .= <<<IPSCONTENT
<div class='cTopicOverview__section--images'>
<h4 class='ipsTitle ipsTitle--hr ipsTitle--h6 i-font-weight_600 i-text-transform_uppercase i-font-size_-2 i-margin-top_4'>
<div class='cTopicOverview__item cTopicOverview__item--images'>
<h4 class='cTopicOverview__title'>
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_images', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</h4>
<div class="i-margin-top_2" data-controller='core.front.core.lightboxedImages'>
<ul class='cTopicOverview__imageGrid ipsGrid i-basis_120 i-gap_1'>
<ul class='cTopicOverview__imageGrid' data-controller='core.front.core.lightboxedImages'>
IPSCONTENT;
@@ -613,7 +493,25 @@ $return .= <<<IPSCONTENT
</ul>
</div>
</div>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
IPSCONTENT;
if ( $hasAnyContent ):
$return .= <<<IPSCONTENT
<button type="button" data-action='toggleOverview' class='cTopicOverview__toggle'><span class="ipsInvisible">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_expand', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span><i class='fa-solid fa-chevron-down'></i></button>
IPSCONTENT;
@@ -621,46 +519,7 @@ endif;
$return .= <<<IPSCONTENT
</div>
IPSCONTENT;
if ( $location !== 'sidebar' and $hasAnyContent ):
$return .= <<<IPSCONTENT
<a href='#' data-action='toggleOverview' class='cTopicOverview__toggle cTopicOverview__toggle--afterStats i-font-size_2 i-color_soft i-padding_3 i-flex i-align-items_center i-justify-content_center'><span class="ipsInvisible">
IPSCONTENT;
$return .= \IPS\Member::loggedIn()->language()->addToStack( htmlspecialchars( 'topicactivity_expand', ENT_DISALLOWED, 'UTF-8', FALSE ), TRUE, array( ) );
$return .= <<<IPSCONTENT
</span><i class='fa-solid fa-chevron-down'></i></a>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( $location == 'sidebar' ):
$return .= <<<IPSCONTENT
</div>
IPSCONTENT;
else:
$return .= <<<IPSCONTENT
</div>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
return $return;
@@ -819,11 +678,31 @@ $return .= <<<IPSCONTENT
>
<div class="ipsEntry__post">
<div class="ipsEntry__meta">
<a href="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->item()->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $comment->$idField ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
if ( ! \IPS\Output::i()->reduceLinks() ):
$return .= <<<IPSCONTENT
" class="ipsEntry__date" rel="nofollow">{$comment->dateLine()}</a>
<a href="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->shareableUrl(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
" class="ipsEntry__date" rel="nofollow">
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
{$comment->dateLine()}
IPSCONTENT;
if ( ! \IPS\Output::i()->reduceLinks() ):
$return .= <<<IPSCONTENT
</a>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
<!-- Traditional badges -->
IPSCONTENT;
@@ -1611,11 +1490,23 @@ endif;
$return .= <<<IPSCONTENT
IPSCONTENT;
if ( ! \IPS\Output::i()->reduceLinks() ):
$return .= <<<IPSCONTENT
IPSCONTENT;
$return .= \IPS\Theme::i()->getTemplate( "global", "core" )->sharemenu( $comment );
$return .= <<<IPSCONTENT
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</div>
IPSCONTENT;
@@ -1727,6 +1618,11 @@ IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
<a id="findComment-
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->$idField, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
"></a>
<div id="comment-
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->$idField, ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
@@ -2816,11 +2712,31 @@ $return .= \IPS\Theme\CustomTemplate::getCustomTemplatesForHookPoint( "forums/fr
$return .= <<<IPSCONTENT
<p class="ipsPhotoPanel__secondary">
<a href="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->item()->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $comment->$idField ) ), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
if ( ! \IPS\Output::i()->reduceLinks() ):
$return .= <<<IPSCONTENT
" rel="nofollow">{$comment->dateLine()}</a>
<a href="
IPSCONTENT;
$return .= \IPS\Theme\Template::htmlspecialchars( $comment->shareableUrl(), ENT_QUOTES | ENT_DISALLOWED, 'UTF-8', FALSE );
$return .= <<<IPSCONTENT
" rel="nofollow">
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
{$comment->dateLine()}
IPSCONTENT;
if ( ! \IPS\Output::i()->reduceLinks() ):
$return .= <<<IPSCONTENT
</a>
IPSCONTENT;
endif;
$return .= <<<IPSCONTENT
</p>
</div>
</div>