Version 4.7.23

This commit is contained in:
Neo committed 2025-12-19 16:21:27 -08:00
1 parent 7124a02564
commit 25ddeb65d6
1791 files changed
+76990 -44452

No files matched your search

+38 -19
View File
@@ -930,15 +930,16 @@
</li>
{{endif}}
{{foreach $row->stats(FALSE) as $k => $v}}
<li {{if $k == 'num_views'}}class='ipsType_light'{{elseif \in_array( $k, $row->hotStats )}}class="ipsDataItem_stats_hot" data-text='{lang="hot_item"}' data-ipsTooltip title='{lang="hot_item_desc"}'{{endif}} data-statType='{$k}'>
<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>
@@ -960,9 +961,9 @@
{{endif}}
</li>
<li class="ipsType_light">
<a href='{$row->url( 'getLastComment' )}' title='{lang="get_last_post"}' class='ipsType_blendLinks'>
{{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}}
</a>
{{if ! \IPS\Output::i()->reduceLinks()}}</a>{{endif}}
</li>
</ul>
{{if $table->canModerate()}}
@@ -1129,11 +1130,15 @@
</li>
{{endif}}
{{foreach $row->stats(FALSE) as $k => $v}}
<li {{if $k == 'num_views'}}class='ipsType_light'{{elseif \in_array( $k, $row->hotStats )}}class="ipsDataItem_stats_hot" data-text='{lang="hot_item"}' data-ipsTooltip title='{lang="hot_item_desc"}'{{endif}} data-statType="{$k}">
<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 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>
</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}}
@@ -1279,7 +1284,7 @@
</h4>
<ul class='ipsList_inline ipsType_light'>
{{if $row->memberCanAccessOthersTopics( \IPS\Member::loggedIn() ) }}
{{$count = \IPS\forums\Topic::contentCount( $row, TRUE );}}
{{$count = \IPS\forums\Topic::contentCount( $row, FALSE, TRUE );}}
<li>{lang="posts_number" pluralize="$count"}</li>
{{endif}}
</ul>
@@ -1569,7 +1574,7 @@
</h3>
{{if !$forum->redirect_on}}
<ul class='cForumGrid__title-stats ipsList_reset ipsType_light'>
{{$count = \IPS\forums\Topic::contentCount( $forum, TRUE );}}
{{$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'>
@@ -1711,7 +1716,7 @@
<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, TRUE );}}
{{$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>
@@ -2176,9 +2181,11 @@
</li>
{{endif}}
{{foreach $row->stats(FALSE) as $k => $v}}
<li {{if $k == 'num_views'}}class='ipsType_light'{{elseif \in_array( $k, $row->hotStats )}}class="ipsDataItem_stats_hot" data-text='{lang="hot_item"}' data-ipsTooltip title='{lang="hot_item_desc"}'{{endif}}>
<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}}
@@ -2375,11 +2382,15 @@
</li>
{{endif}}
{{foreach $row->stats(FALSE) as $k => $v}}
<li {{if $k == 'num_views'}}class='ipsType_light'{{elseif \in_array( $k, $row->hotStats )}}class="ipsDataItem_stats_hot" data-text='{lang="hot_item"}' data-ipsTooltip title='{lang="hot_item_desc"}'{{endif}} data-statType="{$k}">
<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 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>
</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}}
@@ -2934,7 +2945,7 @@
<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->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $row['commentId'] ) )}" rel="nofollow" class='cTopicOverview__dataItem ipsMargin_right ipsType_blendLinks ipsFlex ipsFlex-jc:between ipsFlex-ai:center'>
<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>
@@ -2946,6 +2957,7 @@
</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'>
@@ -2969,7 +2981,7 @@
<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->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $row['commentId'] ) )}" rel="nofollow" class='cTopicOverview__dataItem ipsType_blendLinks'>
<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>
@@ -3020,6 +3032,7 @@
{{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}}
@@ -3058,10 +3071,12 @@
{{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->item()->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $comment->$idField ) )}' 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>
<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>
@@ -3118,7 +3133,9 @@
</div>
<div class='ipsType_reset ipsResponsive_hidePhone'>
<a href='{$comment->item()->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $comment->$idField ) )}' rel="nofollow" class='ipsType_blendLinks'>{$comment->dateLine()|raw}</a>
{{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}}
@@ -3237,8 +3254,9 @@
<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 ) );}}
@@ -3253,6 +3271,7 @@
</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}}
@@ -3299,7 +3318,7 @@
{template="userLink" group="global" app="core" params="$comment->author(), $comment->warningRef(), TRUE, $comment->isAnonymous()"}
</h3>
<div class='ipsType_light ipsType_reset'>
<a href='{$comment->item()->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $comment->$idField ) )}' rel="nofollow" class='ipsType_blendLinks'>{$comment->dateLine()|raw}</a>
<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}}
@@ -3780,7 +3799,7 @@
{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', \IPS\Request::i()->page )}" method="post" data-ipsPageAction data-role='moderationTools'>
<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}}