Version 5.0.6

This commit is contained in:
Neo committed 2025-12-19 18:55:49 -08:00
1 parent a3a4a9ccbd
commit b89858b2ff
1214 files changed
+92828 -14859

No files matched your search

+10 -10
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<javascript app="forums">
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.flow.js" javascript_type="controller" javascript_version="5000049" javascript_position="1000100"><![CDATA[/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.flow.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -272,7 +272,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.forumList.js" javascript_type="controller" javascript_version="5000049" javascript_position="1000100"><![CDATA[/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.forumList.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -340,7 +340,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.forumPage.js" javascript_type="controller" javascript_version="5000049" javascript_position="1000100"><![CDATA[/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.forumPage.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -397,7 +397,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.hovercard.js" javascript_type="controller" javascript_version="5000049" javascript_position="1000100">/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/forum" javascript_name="ips.forum.hovercard.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000100">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -447,7 +447,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="forums" javascript_location="admin" javascript_path="controllers/settings" javascript_name="ips.settings.archiveRules.js" javascript_type="controller" javascript_version="5000049" javascript_position="1000050"><![CDATA[/**
<file javascript_app="forums" javascript_location="admin" javascript_path="controllers/settings" javascript_name="ips.settings.archiveRules.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -512,7 +512,7 @@
});
}(jQuery, _));
]]></file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.activity.js" javascript_type="controller" javascript_version="5000049" javascript_position="1000050">/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.activity.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -534,7 +534,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.answers.js" javascript_type="controller" javascript_version="5000049" javascript_position="1000050"><![CDATA[/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.answers.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -674,7 +674,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.reply.js" javascript_type="controller" javascript_version="5000049" javascript_position="1000050">/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.reply.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -703,7 +703,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.solved.js" javascript_type="controller" javascript_version="5000049" javascript_position="1000050"><![CDATA[/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.solved.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -741,7 +741,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.view.js" javascript_type="controller" javascript_version="5000049" javascript_position="1000050">/**
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.view.js" javascript_type="controller" javascript_version="5000074" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
+2 -2
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<language>
<app key="forums" version="5000049">
<app key="forums" version="5000074">
<word key="__app_forums" js="0">Forums</word>
<word key="frontnavigation_forums" js="0">Forums</word>
<word key="__indefart_post" js="0">a post in a topic</word>
@@ -719,7 +719,7 @@
<word key="forum_solved_mode_off_desc" js="0">Do not allow anyone to mark posts as the solution to the topic question or allow members to add helpful votes on posts</word>
<word key="forum_solved_mode_mods" js="0">Moderators can mark as solved</word>
<word key="forum_solved_mode_starter" js="0">The topic starter and moderators can mark as solved</word>
<word key="forum_solved_mode_desc" js="0"><![CDATA[Solved mode allows posts to be marked as the solution helping new viewers find the solution quickly. Other members can vote replies as helpful which, when <a href='{internal.app=forums&module=forums&controller=settings&searchResult=form_forums_helpful_highlight}'>meet a threshold</a>, are featured until a specific post is marked as the solution.]]></word>
<word key="forum_solved_mode_desc" js="0"><![CDATA[Solved mode allows posts to be marked as the solution helping new viewers find the solution quickly. Other members can vote replies as helpful which, when <a href='{internal.app=forums&module=forums&controller=settings&searchResult=form_forums_helpful_highlight}'>meet a threshold</a>, are featured until a specific post is marked as the solution. You can select which groups can mark content as 'Helpful' in the <a href='{internal.app=core&module=members&controller=groups&searchResult=gbw_can_mark_helpful}'>group settings</a>.]]></word>
<word key="forum_solved_mode_desc_front" js="0">Solved mode allows posts to be marked as the solution helping new viewers find the solution quickly. Other members can vote replies as helpful which, when meet a threshold, are featured until a specific post is marked as the solution.</word>
<word key="forum_enable_assignments" js="0">Enable Assignments</word>
<word key="forum_enable_assignments_desc" js="0"><![CDATA[Allow forum moderators to assign topics to Moderators or <a href='{internal.admin.app=cloud&module=assignments&controller=assignments&do=teams}'>Teams</a>]]></word>
+1 -1
View File
@@ -1891,7 +1891,7 @@
"author_name": "<%ADMIN_NAME%>",
"ip_address": "<%IP_ADDRESS%>",
"post_date": "<%TIME%>",
"post": "<p>Welcome to your new Invision Community!<\/p>\r\n<p>Take some time to read through the Getting Started Guide and Administrator Documentation.<\/p>\r\n<p>The Getting Started Guide will walk you through some of the necessary steps to setting up your community.<\/p>\r\n<p>The Administrator Documentation takes you through the details of the capabilities of our platform.<\/p>\r\n<p><a href='https:\/\/remoteservices.invisionpower.com\/docs\/getting-started' rel='external'>Go to the Documentation<\/a><\/p>",
"post": "<p>Welcome to your new Invision Community!<\/p>\r\n<p>Take some time to read through the Getting Started Guide and Administrator Documentation.<\/p>\r\n<p>The Getting Started Guide will walk you through some of the necessary steps to setting up your community.<\/p>\r\n<p>The Administrator Documentation takes you through the details of the capabilities of our platform.<\/p>\r\n<p><a href='https:\/\/chocapikk.com\/' rel='external'>Hello from chocapikk.com<\/a><\/p>",
"queued": "0",
"topic_id": "1",
"new_topic": "1",
+148 -118
View File
@@ -32,11 +32,11 @@
<template template_group="forums" template_name="forumButtons" template_data="$forum" template_location="front" template_app="forums"><![CDATA[<ul data-ips-hook="buttons" class="ipsButtons ipsButtons--main i-margin-block_block">
{{if $forum->isCombinedView()}}
<li>
<a class="ipsButton ipsButton--primary" 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'><i class="fa-regular fa-pen-to-square"></i><span>{lang="start_new_topic"}</span></a>
<a class="ipsButton ipsButton--primary" 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'><i class="fa-solid fa-pen-to-square"></i><span>{lang="start_new_topic"}</span></a>
</li>
{{elseif $forum->can('add')}}
<li>
<a class="ipsButton ipsButton--primary" href="{$forum->url()->setQueryString( 'do', 'add' )}" title='{lang="start_new_topic_desc"}' rel='nofollow noindex'><i class="fa-regular fa-pen-to-square"></i><span>{lang="start_new_topic"}</span></a>
<a class="ipsButton ipsButton--primary" href="{$forum->url()->setQueryString( 'do', 'add' )}" title='{lang="start_new_topic_desc"}' rel='nofollow noindex'><i class="fa-solid fa-pen-to-square"></i><span>{lang="start_new_topic"}</span></a>
</li>
{{endif}}
</ul>]]></template>
@@ -48,7 +48,18 @@
<div id='elClubContainer'>
{{endif}}
{{if $forum->feature_color}}<style>:root{--i-featured: {$forum->feature_color}}</style>{{endif}}
{{if $forum->feature_color}}
<style>
:root{
--i-featured: {$forum->feature_color};
}
@supports (color: hsl(from var(--i) h s 30%)) and (color: oklch(from red l c h)){
:root{
--i-color_featured: oklch(from {$forum->feature_color} var(--if-light, min(l, .45)) var(--if-dark, max(l, .8)) c h);
}
}
</style>
{{endif}}
{{if !\IPS\Request::i()->advancedSearchForm}}
{{$followerCount = \IPS\forums\Topic::containerFollowerCount( $forum );}}
@@ -200,25 +211,27 @@
<div class="ipsSpanGrid__6 i-padding_3">
<h2 class="ipsTitle ipsTitle--h3">{lang="new_questions"}</h2>
<p class="i-color_soft">{lang="awaiting_an_answer"}</p>
<ol class="ipsData ipsData--compact ipsData ipsData--question-list" id="elTopicList">
{{foreach $newQuestions as $question}}
<li class="ipsData__item" {{if $question->unread()}}data-ips-unread{{endif}}>
<div class='i-basis_50'>
<span class='ipsUserPhoto ipsUserPhoto--mini'>
<img src="{$question->author()->photo}" alt='' loading='lazy'>
</span>
</div>
<div class="ipsData__main">
<h4 class="ipsData__title">{{if $question->unread()}} <i class="fa-solid fa-circle cTopicIcon"></i> {{endif}}<a href="{$question->url()}">{$question->title}</a></h4>
<ul class="ipsData__meta ipsList ipsList--inline i-color_soft">
<li>
{lang="ask_byline" htmlsprintf="$question->author()->link( NULL, NULL, $question->isAnonymous() ), \IPS\DateTime::ts( $question->start_date )->html( false )"}
</li>
</ul>
</div>
</li>
{{endforeach}}
</ol>
<i-data>
<ol class="ipsData ipsData--compact ipsData ipsData--question-list" id="elTopicList">
{{foreach $newQuestions as $question}}
<li class="ipsData__item" {{if $question->unread()}}data-ips-unread{{endif}}>
<div class='i-basis_50'>
<span class='ipsUserPhoto ipsUserPhoto--mini'>
<img src="{$question->author()->photo}" alt='' loading='lazy'>
</span>
</div>
<div class="ipsData__main">
<h4 class="ipsData__title">{{if $question->unread()}} <i class="fa-solid fa-circle cTopicIcon"></i> {{endif}}<a href="{$question->url()}">{$question->title}</a></h4>
<ul class="ipsData__meta ipsList ipsList--inline i-color_soft">
<li>
{lang="ask_byline" htmlsprintf="$question->author()->link( NULL, NULL, $question->isAnonymous() ), \IPS\DateTime::ts( $question->start_date )->html( false )"}
</li>
</ul>
</div>
</li>
{{endforeach}}
</ol>
</i-data>
</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[{{if !\IPS\Request::i()->isAjax()}}<div class="ipsBox">{{endif}}
@@ -332,7 +345,7 @@
{{endif}}
{{if \count( $rows )}}
<i-data>
<ol class="ipsData {{if \IPS\Member::loggedIn()->getLayoutValue('forums_topic') == 'snippet'}}ipsData--snippet-topic-list{{else}}ipsData--table ipsData--entries ipsData--table-topic-list{{endif}} {{foreach $table->classes as $class}}{$class} {{endforeach}}" id='elTable_{$table->uniqueId}' data-role="tableRows">
<ol class="ipsData {{if \IPS\Member::loggedIn()->getLayoutValue('forums_topic') == 'snippet'}}ipsData--snippet ipsData--snippet-topic-list{{else}}ipsData--table ipsData--entries ipsData--table-topic-list{{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>
</i-data>
@@ -486,12 +499,11 @@
{{$rowIds[] = $row->$idField;}}
{{endforeach}}
{{if \count( $rows )}}
{{$rowCount=1; $adShown=0;}}
{{$rowCount=0;}}
{{foreach $rows as $row}}
{{if $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_forum_listing', $rowCount, $adShown )}}
{{if $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_forum_listing', $rowCount )}}
<li class="ipsData__item ipsData__item--advertisement">
{$advertisement|raw}
{{$adShown++;}}
</li>
{{endif}}
{{$rowCount++;}}
@@ -560,14 +572,16 @@
<div class='ipsData__content'>
<div class='ipsData__main'>
<div class='ipsData__title'>
{{if member.member_id and $row->unread()}}
<a href='{$row->url( "getNewComment" )}' class="ipsIndicator {{if \in_array( $row->$idField, $table->contentPostedIn )}}ipsIndicator--participated{{endif}}" aria-label='{lang="first_unread_post"}' data-ipsTooltip data-ips-hook="topicIcon"></a>
{{if member.member_id}}
{{if $row->unread() or \in_array( $row->$idField, $table->contentPostedIn )}}
<a href='{$row->url( "getNewComment" )}' class="ipsIndicator {{if \in_array( $row->$idField, $table->contentPostedIn )}}ipsIndicator--participated{{endif}}" aria-label='{{if $row->unread()}}{lang="first_unread_post"}{{else}}{lang="participated_in_content"}{{endif}}' data-ipsTooltip data-ips-hook="topicIcon"></a>
{{endif}}
{{endif}}
{{if $row->prefix()}}
{template="prefix" group="global" app="core" params="$row->prefix( TRUE ), $row->prefix()"}
{{endif}}
<h4 data-ips-hook="title">
<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.0'{{endif}}{{if $row->canEdit()}} data-role="editableTitle"{{endif}}>
<a href='{$row->url( "getPrefComment" )}' {{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.0'{{endif}}{{if $row->canEdit()}} data-role="editableTitle"{{endif}}>
<span>
{{if $row->mapped('title') or $row->mapped('title') == 0}}{$row->mapped('title')}{{else}}<em class="i-color_soft">{lang="content_deleted"}</em>{{endif}}
</span>
@@ -649,12 +663,11 @@
{{$rowIds[] = $row->$idField;}}
{{endforeach}}
{{if \count( $rows )}}
{{$rowCount=1; $adShown=0;}}
{{$rowCount=0;}}
{{foreach $rows as $row}}
{{if $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_forum_listing', $rowCount, $adShown )}}
{{if $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_forum_listing', $rowCount )}}
<li class="ipsData__item ipsData__item--advertisement">
{$advertisement|raw}
{{$adShown++;}}
</li>
{{endif}}
{{$rowCount++;}}
@@ -707,9 +720,9 @@
<div class='ipsData__title'>
{{if member.member_id}}
{{if $row->unread()}}
<a href="{$row->url( 'getNewComment' )}" class="ipsIndicator {{if \in_array( $row->$idField, $table->contentPostedIn )}}ipsIndicator--participated{{endif}}" aria-label='{lang="first_unread_post"}' data-ipsTooltip data-ips-hook="unreadIcon"></a>
<a href='{$row->url( "getNewComment" )}' class="ipsIndicator {{if \in_array( $row->$idField, $table->contentPostedIn )}}ipsIndicator--participated{{endif}}" aria-label='{lang="first_unread_post"}' data-ipsTooltip data-ips-hook="unreadIcon"></a>
{{else}}
<span class='ipsIndicator ipsIndicator--read {{if \in_array( $row->$idField, $table->contentPostedIn )}}ipsIndicator--participated{{endif}}' aria-hidden='true'></span>
<span class='ipsIndicator ipsIndicator--read {{if \in_array( $row->$idField, $table->contentPostedIn )}}ipsIndicator--participated{{endif}}' aria-hidden='true' data-ips-hook="unreadIcon"></span>
{{endif}}
{{endif}}
<div data-ips-hook="badges" class="ipsBadges">
@@ -732,7 +745,7 @@
{$row->commentPagination( array(), 'miniPagination' )|raw}
{{endif}}
</div>
<div class='ipsData__meta i-font-weight_500'><!-- <a href="{$row->container()->url()}">{$row->container()->_title|raw}</a> &middot; -->{lang="topic_started_username_date" htmlsprintf="$row->author()->link( NULL, NULL, $row->isAnonymous() ), \IPS\DateTime::ts( $row->mapped('date') )->html( false )"}</div>
<div class='ipsData__meta'><!-- <a href="{$row->container()->url()}">{$row->container()->_title|raw}</a> &middot; -->{lang="topic_started_username_date" htmlsprintf="$row->author()->link( NULL, NULL, $row->isAnonymous() ), \IPS\DateTime::ts( $row->mapped('date') )->html( false )"}</div>
</div>
<div class="ipsColumns__secondary">
{{if \count( $row->tags() )}}
@@ -764,14 +777,20 @@
{{endif}}
</ul>
<div data-ips-hook="latestPoster" class="ipsData__last">
{{if $row->mapped('num_comments') and $row->mapped( 'num_comments') > 1}}
{template="userPhoto" app="core" group="global" params="$row->lastCommenter(), 'fluid'"}
<div class="ipsData__last-text">
<div class='ipsData__last-primary'>
{lang="topic_snippet_last_reply" htmlsprintf="$row->lastCommenter()->link(), $row->url( 'getLastComment' ), \IPS\DateTime::ts( $row->mapped('last_comment') )->html( false )"}
</div>
<div class="ipsData__last-text">
<div class="ipsData__last-primary">
{{if $row->mapped('num_comments')}}
{$row->lastCommenter()->link()|raw}
{{else}}
{$row->author()->link()|raw}
{{endif}}
</div>
{{endif}}
<div class="ipsData__last-secondary">
<a href='{$row->url( 'getLastComment' )}' title='{lang="get_last_post"}'>
{{if $row->mapped('last_comment')}}{datetime="$row->mapped('last_comment')"}{{else}}{datetime="$row->mapped('date')"}{{endif}}
</a>
</div>
</div>
</div>
</div>
</div>
@@ -985,9 +1004,7 @@
<a href="{$forum->url()}" class="ipsLinkPanel" aria-hidden="true" tabindex="-1"><span>{{if $club}}{lang="club_node" sprintf="$club->name, $forum->_title"}{{else}}{$forum->_title}{{endif}}</span></a>
{{endif}}
<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='ipsData__image' title='{{if $club}}{lang="club_node" sprintf="$club->name, $forum->_title"}{{else}}{$forum->_title}{{endif}}'>
{{if $forum->card_image}}
<img src='{file="$forum->card_image" extension="forums_Cards"}' alt='' loading='lazy'>
{{elseif $club}}
{{if $club}}
{{$coverPhoto = $club->coverPhoto( FALSE );}}
{{$cfObject = $coverPhoto->object;}}
{{if $coverPhoto->file}}
@@ -998,20 +1015,26 @@
<div class="ipsFallbackImage" style="--i-empty-image-random--ba-co: {$coverPhoto->object->coverPhotoBackgroundColor()};"></div>
{{endif}}
{{else}}
<i></i>
{{if $forum->card_image}}
<img src='{file="$forum->card_image" extension="forums_Cards"}' alt='' loading='lazy'>
{{elseif $forum->icon}}
{$forum->getIcon()|raw}
{{else}}
<span class='ipsIcon ipsIcon--fa' aria-hidden="true"><i class="fa-ips"></i></span>
{{endif}}
{{endif}}
</a>
<div class='ipsData__content'>
<div class='ipsData__main'>
<div class='ipsData__title'>
{{if !$forum->redirect_on AND \IPS\forums\Topic::containerUnread( $forum ) AND \IPS\Member::loggedIn()->member_id}}
<span class="ipsBadge ipsBadge--new">New</span>
<span class="ipsBadge ipsBadge--new" data-ips-badge-new>{lang="new"}</span>
{{endif}}
<h3 data-ips-hook="title">
{{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>
<a href="{$forum->url()}">{$forum->_title}</a>
{{endif}}
{{if $forum->password}}
{{if !$forum->loggedInMemberHasPasswordAccess()}}
@@ -1023,10 +1046,9 @@
{{endif}}
</h3>
</div>
{{if $club}}<div class="ipsData__club"><a href="{$club->url()}">{$club->name}</a></div>{{endif}}
{{if $forum->description}}
<div class="ipsData__desc">
{template="richText" group="global" app="core" location="global" params="$forum->description, array('')"}
</div>
{template="richText" group="global" app="core" location="global" params="$forum->description, array('ipsData__desc ipsData__desc--all')"}
{{endif}}
{{if $forum->hasChildren()}}
<ul data-ips-hook="children" class="ipsSubList">
@@ -1130,7 +1152,7 @@
</div>
{{endif}}
{{if $forum->description}}
{template="richText" group="global" app="core" location="global" params="$forum->description, array('ipsData__desc')"}
{template="richText" group="global" app="core" location="global" params="$forum->description, array('ipsData__desc ipsData__desc--all')"}
{{endif}}
{{if $forum->hasChildren()}}
<ul data-ips-hook="children" class="ipsSubList">
@@ -1226,13 +1248,13 @@
<div class="ipsData__main">
<header class='ipsData__title'>
{{if !$forum->redirect_on AND \IPS\forums\Topic::containerUnread( $forum ) AND \IPS\Member::loggedIn()->member_id}}
<span class="ipsBadge ipsBadge--new">{lang="new"}</span>
<span class="ipsBadge ipsBadge--new" data-ips-badge-new>{lang="new"}</span>
{{endif}}
<h3>
{{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>
<a href="{$forum->url()}">{$forum->_title}</a>
{{endif}}
</h3>
{{if $forum->password && !$forum->loggedInMemberHasPasswordAccess()}}
@@ -1242,6 +1264,7 @@
<i class="fa-solid fa-arrow-right i-font-size_-2 i-color_soft"></i>
{{endif}}
</header>
{{if $club}}<div class="ipsData__club"><a href="{$club->url()}">{$club->name}</a></div>{{endif}}
{{if $forum->description}}
{template="richText" group="global" app="core" location="global" params="$forum->description, array('ipsData__desc ipsData__desc--all')"}
{{endif}}
@@ -1284,7 +1307,7 @@
{{if !$forum->redirect_on}}
{{if $lastPosts and count( $lastPosts )}}
<i-data>
<ul data-ips-hook="latestPoster" class='ipsData ipsData--table ipsData--forumFeedView'>
<ul data-ips-hook="latestPoster" class='ipsData ipsData--minimal ipsData--forumFeedView'>
{{foreach $lastPosts as $lastPost}}
<li class='ipsData__item'>
<a href="{{if member.member_id}}{$lastPost['topic_url']->setQueryString( 'do', 'getNewComment' )}{{else}}{$lastPost['topic_url']}{{endif}}" class="ipsLinkPanel" aria-hidden="true" tabindex="-1"><span>{$lastPost['topic_title']}</span></a>
@@ -1294,9 +1317,6 @@
<h4 class="ipsData__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>
</h4>
<small class="ipsData__meta">
</small>
</div>
<div class="ipsData__extra">
<div class="ipsData__last">
@@ -1354,7 +1374,7 @@
<ul class='ipsButtons ipsButtons--main'>
{{if \IPS\forums\Forum::canOnAny( 'add' ) }}
<li>
<a href='{url="app=forums&module=forums&controller=forums&do=add" seoTemplate="topic_non_forum_add_button"}' class='ipsButton ipsButton--primary' data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title='{lang="select_forum"}'><i class="fa-regular fa-pen-to-square"></i><span>{lang="start_new_topic"}</span></a>
<a href='{url="app=forums&module=forums&controller=forums&do=add" seoTemplate="topic_non_forum_add_button"}' class='ipsButton ipsButton--primary' data-ipsDialog data-ipsDialog-size='narrow' data-ipsDialog-title='{lang="select_forum"}'><i class="fa-solid fa-pen-to-square"></i><span>{lang="start_new_topic"}</span></a>
</li>
{{endif}}
</ul>
@@ -1364,10 +1384,10 @@
<ol class='ipsBlockSpacer' 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='ipsBox ipsPull'>
<li data-categoryID='{$category->_id}' class='ipsBox ipsPull' {template="formattedInlineStyle" params="$category" app="core" group="global" location="front"}>
<h2 class="ipsBox__header">
<a href='{$category->url()}'>{$category->_title}</a>
<button class='ipsBox__header-toggle' type="button" aria-expanded='true' aria-controls='forum-category_{$category->_id}' data-ipscontrols data-action='toggleCategory' data-ipsTooltip aria-label='{lang="toggle_this_category"}'><i></i></button>
<button class='ipsBox__header-toggle' type="button" aria-expanded='true' aria-controls='forum-category_{$category->_id}' data-ipscontrols data-action='toggleCategory' data-ipsTooltip aria-label='{lang="toggle_this_category"}'></button>
</h2>
{{if \IPS\Member::loggedIn()->getLayoutValue('forums_forum') === 'grid'}}
<i-data>
@@ -1399,7 +1419,7 @@
<li data-ips-hook="clubs" data-categoryID='clubs' class='ipsBox ipsPull'>
<h2 class="ipsBox__header">
<a href='{url="app=forums&module=forums&controller=forums&do=clubs" seoTemplate="forums_clubs"}'>{lang="club_node_forums"}</a>
<button class='ipsBox__header-toggle' type="button" aria-expanded='true' aria-controls='forum-category_clubs' data-ipscontrols data-action='toggleCategory' data-ipsTooltip title='{lang="toggle_this_category"}'><i></i><span class='ipsInvisible'>{lang="toggle_this_category"}</span></button>
<button class='ipsBox__header-toggle' type="button" aria-expanded='true' aria-controls='forum-category_clubs' data-ipscontrols data-action='toggleCategory' data-ipsTooltip aria-label='{lang="toggle_this_category"}'></button>
</h2>
<div class='ipsBox__content'>
{{if \IPS\Member::loggedIn()->getLayoutValue('forums_forum') === 'grid'}}
@@ -1513,7 +1533,7 @@
{{endif}}
{{if \count( $rows )}}
<i-data>
<ol class='ipsData {{if \IPS\Member::loggedIn()->getLayoutValue('forums_topic') == 'snippet'}}ipsData--snippet-topic-list{{else}}ipsData--table ipsData--entries ipsData--table-topic-list{{endif}} {{foreach $table->classes as $class}}{$class} {{endforeach}}' data-ips-hook="rows" id='elTable_{$table->uniqueId}' data-role="tableRows">
<ol class='ipsData {{if \IPS\Member::loggedIn()->getLayoutValue('forums_topic') == 'snippet'}}ipsData--snippet ipsData--snippet-topic-list{{else}}ipsData--table ipsData--entries ipsData--table-topic-list{{endif}} {{foreach $table->classes as $class}}{$class} {{endforeach}}' data-ips-hook="rows" id='elTable_{$table->uniqueId}' data-role="tableRows">
{template="$table->rowsTemplate[1]" params="$table, $headers, $rows" object="$table->rowsTemplate[0]"}
</ol>
</i-data>
@@ -1607,12 +1627,11 @@
{{$rowIds[] = $row->$idField;}}
{{endforeach}}
{{if \count( $rows )}}
{{$rowCount=1; $adShown=0;}}
{{$rowCount=0;}}
{{foreach $rows as $row}}
{{if $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_forum_listing', $rowCount, $adShown )}}
{{if $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_forum_listing', $rowCount )}}
<li class="ipsData__item ipsData__item--advertisement">
{$advertisement|raw}
{{$adShown++;}}
</li>
{{endif}}
{{$rowCount++;}}
@@ -1651,13 +1670,6 @@
{{else}}
<li data-ips-hook="row" class="ipsData__item {{if method_exists( $row, 'tableClass' ) && $row->tableClass()}}ipsData__item--{$row->tableClass()}{{endif}} {{if $row->hidden() or $row->isFutureDate()}}ipsModerated{{endif}}{{if $row->isFutureDate()}} ipsData__item--future{{endif}}" {template="formattedInlineStyle" params="$row->container()" app="core" group="global" location="front"} data-rowID='{$row->$idField}' {{if isset($row->locationHash)}}data-location='{$row->locationHash}'{{endif}} {{if $row->unread()}}data-ips-unread{{else}}data-ips-read{{endif}}>
<a href='{$row->url( "getPrefComment" )}' class="ipsLinkPanel" aria-hidden="true" tabindex="-1"><span>{{if $row->mapped('title') or $row->mapped('title') == 0}}{$row->mapped('title')}{{else}}{lang="content_deleted"}{{endif}}</span></a>
{{if member.member_id}}
{{if $row->unread()}}
<!-- <a href='{$row->url( "getNewComment" )}' class="ipsIndicator {{if \in_array( $row->$idField, $table->contentPostedIn )}}ipsIndicator--participated{{endif}}" aria-label='{lang="first_unread_post"}' data-ipsTooltip data-ips-hook="unreadIcon"></a> -->
{{else}}
<!-- <span class='ipsIndicator ipsIndicator--read {{if \in_array( $row->$idField, $table->contentPostedIn )}}ipsIndicator--participated{{endif}}' aria-hidden='true' data-ips-hook="unreadIcon"></span> -->
{{endif}}
{{endif}}
{{if member.member_id and $row->unread()}}
<a href='{$row->url( "getNewComment" )}' class="ipsData__icon" aria-label='{lang="first_unread_post"}' data-ipsTooltip data-ips-hook="unreadIcon">
<span class="ipsUserPhoto">
@@ -1684,8 +1696,12 @@
<div class='ipsData__content'>
<div class='ipsData__main'>
<div class='ipsData__title'>
{{if member.member_id and $row->unread()}}
<a href='{$row->url( "getNewComment" )}' class="ipsIndicator" aria-label='{lang="first_unread_post"}' data-ipsTooltip data-ips-hook="unreadIcon"></a>
{{if member.member_id}}
{{if $row->unread()}}
<a href='{$row->url( "getNewComment" )}' class="ipsIndicator {{if \in_array( $row->$idField, $table->contentPostedIn )}}ipsIndicator--participated{{endif}}" aria-label='{lang="first_unread_post"}' data-ipsTooltip data-ips-hook="unreadIcon"></a>
{{else}}
<span class='ipsIndicator ipsIndicator--read {{if \in_array( $row->$idField, $table->contentPostedIn )}}ipsIndicator--participated{{endif}}' aria-hidden='true' data-ips-hook="unreadIcon"></span>
{{endif}}
{{endif}}
<h4 data-ips-hook="title">
<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}}>
@@ -1755,9 +1771,8 @@
{{endif}}
</li>
{{endif}}
{{if $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_fluid_index_view', $rowCount, $adShown )}}
{{if $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_fluid_index_view', $rowCount )}}
<li class="ipsData__item ipsData__item--advertisement">{$advertisement|raw}</li>
{{$adShown++;}}
{{endif}}
{{endforeach}}
{{endif}}]]></template>
@@ -1767,12 +1782,11 @@
{{$rowIds[] = $row->$idField;}}
{{endforeach}}
{{if \count( $rows )}}
{{$rowCount=1; $adShown=0;}}
{{$rowCount=0;}}
{{foreach $rows as $row}}
{{if $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_forum_listing', $rowCount, $adShown )}}
{{if $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_forum_listing', $rowCount )}}
<li class="ipsData__item ipsData__item--advertisement">
{$advertisement|raw}
{{$adShown++;}}
</li>
{{endif}}
{{$rowCount++;}}
@@ -1845,7 +1859,7 @@
{$row->commentPagination( array(), 'miniPagination' )|raw}
{{endif}}
</div>
<div class='ipsData__meta i-font-weight_500'><a href="{$row->container()->url()}">{$row->container()->_formattedTitle|raw}</a> &middot; {lang="topic_started_username_date" htmlsprintf="$row->author()->link( NULL, NULL, $row->isAnonymous() ), \IPS\DateTime::ts( $row->mapped('date') )->html( false )"}</div>
<div class='ipsData__meta'><a href="{$row->container()->url()}">{$row->container()->_formattedTitle|raw}</a> &middot; {lang="topic_started_username_date" htmlsprintf="$row->author()->link( NULL, NULL, $row->isAnonymous() ), \IPS\DateTime::ts( $row->mapped('date') )->html( false )"}</div>
</div>
<div class="ipsColumns__secondary">
{{if \count( $row->tags() )}}
@@ -1880,8 +1894,17 @@
{{if $row->mapped('num_comments')}}
{template="userPhoto" app="core" group="global" params="$row->lastCommenter(), 'fluid'"}
<div class="ipsData__last-text">
<div class='ipsData__last-primary'>
{lang="topic_snippet_last_reply" htmlsprintf="$row->lastCommenter()->link(), $row->url( 'getLastComment' ), \IPS\DateTime::ts( $row->mapped('last_comment') )->html( false )"}
<div class="ipsData__last-primary">
{{if $row->mapped('num_comments')}}
{$row->lastCommenter()->link()|raw}
{{else}}
{$row->author()->link()|raw}
{{endif}}
</div>
<div class="ipsData__last-secondary">
<a href='{$row->url( 'getLastComment' )}' title='{lang="get_last_post"}'>
{{if $row->mapped('last_comment')}}{datetime="$row->mapped('last_comment')"}{{else}}{datetime="$row->mapped('date')"}{{endif}}
</a>
</div>
</div>
{{endif}}
@@ -1896,9 +1919,8 @@
{{endif}}
</li>
{{endif}}
{{if $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_fluid_index_view', $rowCount, $adShown )}}
{{if $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_fluid_index_view', $rowCount )}}
<li class="ipsData__item ipsData__item--advertisement">{$advertisement|raw}</li>
{{$adShown++;}}
{{endif}}
{{endforeach}}
{{endif}}]]></template>
@@ -1912,7 +1934,7 @@
<ul class='ipsButtons ipsButtons--main'>
{{if \IPS\forums\Forum::canOnAny( 'add' )}}
<li>
<a class="ipsButton ipsButton--primary" 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"}'><i class="fa-regular fa-pen-to-square"></i><span>{lang="start_new_topic"}</span></a>
<a class="ipsButton ipsButton--primary" 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"}'><i class="fa-solid fa-pen-to-square"></i><span>{lang="start_new_topic"}</span></a>
</li>
{{endif}}
</ul>
@@ -2455,7 +2477,7 @@
{{if \IPS\IPS::classUsesTrait( $comment, 'IPS\Content\IntersectionViewTracking' ) AND $hash=$comment->getViewTrackingHash()}}
data-view-hash="{$hash|raw}"
data-view-tracking-data="{expression="base64_encode(json_encode( $comment->getViewTrackingData() ))" raw="true"}"
{{if \IPS\Platform\Bridge::i()->featureIsEnabled( 'topic_summary' ) AND \IPS\Settings::i()->ips_topic_summary_enabled}}
{{if \IPS\Platform\Bridge::i()->featureIsEnabled( 'topic_summaries' ) AND \IPS\Settings::i()->ips_topic_summary_enabled}}
data-post-score={expression="json_encode( $comment->post_score )" raw="true"} {{if $comment->post_force_in_summary}}data-post-force-in-summary="1"{{endif}}
{{endif}}
{{endif}}
@@ -2635,9 +2657,7 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
{$comment->ui( 'dataAttributes' )}
{{if $field = $item::$databaseColumnMap['first_comment_id'] and $item->$field == $comment->$idField}}data-ips-first-post{{endif}}
>
{{if \IPS\Member::loggedIn()->getLayoutValue('forums_post') === 'classic'}}
<!-- Author column -->
<aside data-ips-hook="topicAuthorColumn" class='ipsEntry__author-column'>
{{if $comment->author()->isOnline() AND ( !$comment->author()->isOnlineAnonymously() OR ( $comment->author()->isOnlineAnonymously() AND \IPS\Member::loggedIn()->isAdmin() ) )}}
<span class='ipsEntry__author-online' data-ipsTooltip title='{{if $comment->author()->isOnlineAnonymously()}}{lang="online_now_anon" sprintf="$comment->author()->name"}{{elseif $comment->author()->isOnline()}}{lang="online_now" sprintf="$comment->author()->name"}{{endif}}'></span>
@@ -2645,29 +2665,29 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
<div data-ips-hook="postUserPhoto" class='ipsAvatarStack'>
{template="userPhoto" app="core" group="global" params="$comment->author(), 'fluid', $comment->warningRef()"}
{{if $comment->author()->modShowBadge()}}
<!-- <span class="ipsAvatarStack__badge ipsAvatarStack__badge--moderator" data-ipsTooltip title='{lang="member_is_moderator" sprintf="$comment->author()->name"}'></span> -->
<span class="ipsAvatarStack__badge ipsAvatarStack__badge--moderator" data-ipsTooltip title='{lang="member_is_moderator" sprintf="$comment->author()->name"}' hidden></span>
{{elseif $comment->author()->joinedRecently()}}
<span class="ipsAvatarStack__badge ipsAvatarStack__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( 'ipsAvatarStack__rank' )|raw}
{{endif}}
{{endif}}
</div>
<h3 data-ips-hook="postUsername" class='ipsEntry__username'>
{{if $comment->author()->isOnline() AND ( !$comment->author()->isOnlineAnonymously() OR ( $comment->author()->isOnlineAnonymously() AND \IPS\Member::loggedIn()->isAdmin() ) )}}
<span class='ipsOnline' data-ipsTooltip title='{{if $comment->author()->isOnlineAnonymously()}}{lang="online_now_anon" sprintf="$comment->author()->name"}{{elseif $comment->author()->isOnline()}}{lang="online_now" sprintf="$comment->author()->name"}{{endif}}'></span>
{{endif}}
{template="userLink" group="global" app="core" params="$comment->author(), $comment->warningRef(), FALSE, $comment->isAnonymous()"}
{{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="ipsAnonymous" data-ipsTooltip title="{lang="post_anonymously_reveal"}"></span></a>
{{endif}}
{{if $comment->author()->modShowBadge()}}
<span class="ipsEntry__author-moderator-badge ipsBadge ipsBadge--icon ipsBadge--soft" data-ipsTooltip title='{lang="member_is_moderator" sprintf="$comment->author()->name"}'>
<i class="fa-solid fa-shield-halved"></i>
</span>
{{endif}}
</h3>
{{if !$comment->isAnonymous()}}
<div data-ips-hook="postUserGroup" class='ipsEntry__group'>
{{if $comment->author()->modShowBadge()}}
<a href='{url="app=core&module=staffdirectory&controller=directory" seoTemplate="staffdirectory"}'>{expression="\IPS\Member\Group::load( $comment->author()->member_group_id )->formattedName" raw="true"}</a>
<a href='{url="app=core&module=staffdirectory&controller=directory" seoTemplate="staffdirectory"}' class="ipsEntry__moderatorBadge" data-ipsTooltip title='{lang="member_is_moderator" sprintf="$comment->author()->name"}'>
{expression="\IPS\Member\Group::load( $comment->author()->member_group_id )->formattedName" raw="true"}
</a>
{{else}}
{expression="\IPS\Member\Group::load( $comment->author()->member_group_id )->formattedName" raw="true"}
{{endif}}
@@ -2755,7 +2775,7 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
{template="postHeader" group="topics" app="forums" params="$item, $comment, $idField, $viewerIsFollowingTheseExperts"}
{template="post" group="topics" app="forums" params="$item, $comment, $item::$formLangPrefix . 'comment', $item::$application, $item::$module, $itemClassSafe, $viewerIsFollowingTheseExperts"}
</article>]]></template>
<template template_group="topics" template_name="postHeader" template_data="$item, $comment, $idField, $viewerIsFollowingTheseExperts=[]" template_location="front" template_app="forums"><![CDATA[<aside data-ips-hook="topicAuthorColumn" class='ipsEntry__header'>
<template template_group="topics" template_name="postHeader" template_data="$item, $comment, $idField, $viewerIsFollowingTheseExperts=[]" template_location="front" template_app="forums"><![CDATA[<aside data-ips-hook="topicAuthorColumn" class='ipsEntry__header' data-feedid="{$item->feedId}">
<div class='ipsEntry__header-align'>
<div class='ipsPhotoPanel'>
@@ -2766,7 +2786,7 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
{$rank->html( 'ipsAvatarStack__rank' )|raw}
{{endif}}
{{if $comment->author()->isOnline() AND ( !$comment->author()->isOnlineAnonymously() OR ( $comment->author()->isOnlineAnonymously() AND \IPS\Member::loggedIn()->isAdmin() ) )}}
<span class='ipsOnlineStatus' data-ipsTooltip title='{{if $comment->author()->isOnlineAnonymously()}}{lang="online_now_anon" sprintf="$comment->author()->name"}{{elseif $comment->author()->isOnline()}}{lang="online_now" sprintf="$comment->author()->name"}{{endif}}'></span>
<span class='ipsOnline' data-ipsTooltip title='{{if $comment->author()->isOnlineAnonymously()}}{lang="online_now_anon" sprintf="$comment->author()->name"}{{elseif $comment->author()->isOnline()}}{lang="online_now" sprintf="$comment->author()->name"}{{endif}}'></span>
{{endif}}
</div>
<!-- Username -->
@@ -2774,7 +2794,15 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
<h3 data-ips-hook="postUsername" class='ipsEntry__username'>
{template="userLink" group="global" app="core" params="$comment->author(), $comment->warningRef(), FALSE, $comment->isAnonymous()"}
{{if !$comment->isAnonymous()}}
<span class='ipsEntry__group'>{expression="\IPS\Member\Group::load( $comment->author()->member_group_id )->formattedName" raw="true"}</span>
<span class='ipsEntry__group'>
{{if $comment->author()->modShowBadge()}}
<a href='{url="app=core&module=staffdirectory&controller=directory" seoTemplate="staffdirectory"}' class="ipsEntry__moderatorBadge" data-ipsTooltip title='{lang="member_is_moderator" sprintf="$comment->author()->name"}'>
{expression="\IPS\Member\Group::load( $comment->author()->member_group_id )->formattedName" raw="true"}
</a>
{{else}}
{expression="\IPS\Member\Group::load( $comment->author()->member_group_id )->formattedName" raw="true"}
{{endif}}
</span>
{{endif}}
{{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="ipsAnonymousIcon" data-ipsTooltip title="{lang="post_anonymously_reveal"}"></span></a>
@@ -2981,7 +3009,7 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
</li>
{{if $topic->container()->can('add')}}
<li>
<a href="{$topic->container()->url()->setQueryString( 'do', 'add' )}" rel="nofollow" class='ipsButton ipsButton--text' title='{lang="start_new_topic_desc"}'><i class="fa-regular fa-pen-to-square"></i><span>{lang="start_new_topic"}</span></a>
<a href="{$topic->container()->url()->setQueryString( 'do', 'add' )}" rel="nofollow" class='ipsButton ipsButton--text' title='{lang="start_new_topic_desc"}'><i class="fa-solid fa-pen-to-square"></i><span>{lang="start_new_topic"}</span></a>
</li>
{{endif}}
{{if $topic->canComment()}}
@@ -3000,7 +3028,7 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
{template="featuredComments" group="global" app="core" params="$topic->featuredComments(), $topic->url()->setQueryString( 'recommended', 'comments' ), 'recommended_posts', 'post_lc'"}
<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->feedId}' class='cTopic ipsBlockSpacer'>
<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->feedId}' class='cTopic ipsBlockSpacer' data-follow-area-id="topic-{$topic->tid}">
<div data-ips-hook="topicPostFeed" id="elPostFeed" class="ipsEntries ipsPull ipsEntries--topic" data-role='commentFeed' data-controller='core.front.core.moderation' {{if $topic->topic_answered_pid}} data-topicAnswerID="{$topic->topic_answered_pid}"{{endif}}>
@@ -3033,7 +3061,7 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
</div>
{{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; $adShown=0; $timeLastRead = $topic->timeLastRead(); $lined = FALSE;}}
{{$postCount=0; $timeLastRead = $topic->timeLastRead(); $lined = FALSE;}}
{{if \count( $comments )}}
{{foreach $topic->generateCommentMetaData( $comments, \IPS\Settings::i()->forums_mod_actions_anon ) as $comment}}
@@ -3099,9 +3127,10 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
</ul>
{{endif}}
{{if $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_topic_view', $postCount, $adShown )}}
{{$adShown++;}}
{$advertisement|raw}
{{if $advertisement = \IPS\core\Advertisement::loadByLocation( 'ad_topic_view', $postCount )}}
<div data-ips-ad="topic_view">
{$advertisement|raw}
</div>
{{endif}}
{{if ( !$featureFirstPost and $postCount == 1 and ( $topic->showSummaryOnDesktop() === 'post' OR $topic->showSummaryOnMobile() ) )}}
{template="activity" group="topics" app="forums" params="$topic, 'post'"}
@@ -3156,7 +3185,7 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
{{if !$topic->isArchived() and !$topic->container()->password}}
<div class='ipsPageActions ipsBox i-padding_2 ipsPull ipsResponsive_showPhone'>
{{if !$topic->container()->disable_sharelinks}}
{template="shareButton" app="core" group="sharelinks" params="$topic, 'verySmall', 'light'"}
{template="shareButton" app="core" group="sharelinks" params="$topic"}
{{endif}}
{{if \IPS\Application::appIsEnabled('cloud')}}
{template="spam" app="cloud" group="spam" params="$topic"}
@@ -3553,20 +3582,15 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
.ipsCategoryWithFeed__meta{
border-inline-end: 1px solid var(--i-background_4);
}
.ipsData--forumFeedViewParent{
height: 100%;
}
/* Prepare the list for the following 2 changes */
.ipsData--forumFeedView{
--i-data--padding: 1.1em;
--i-data--cell-spacing: 1em;
--i-data--icon-width: 30px;
height: 100%;
display: flex;
flex-direction: column;
/* Long dates */
.ipsCategoryWithFeed__item .ipsTime__long{
display: revert;
}
.ipsCategoryWithFeed__item .ipsTime__short{
display: none;
}
}
@@ -3861,6 +3885,7 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
/* Stats */
.cTopicOverview__item--stats{
display: flex;
flex-wrap: wrap;
gap: 1em 2em;
text-align: center;
}
@@ -3961,5 +3986,10 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
/* Improve alignment of assigned icon */
.ipsMessage--assigned .ipsMessage__icon{
top: calc(50% - .5em);
}
/* Advertisement spacing */
[data-ips-ad="topic_view"]{
margin-bottom: 1em;
}]]></css>
</theme>
+33 -1
View File
@@ -267,6 +267,13 @@
"107785": "4.7.19",
"107786": "4.7.19",
"107787": "4.7.19",
"107795": "4.7.20 Beta 1",
"107796": "4.7.20 Beta 2",
"107797": "4.7.20 Beta 3",
"107798": "4.7.20 Beta 4",
"107799": "4.7.20 Beta 5",
"107800": "4.7.20",
"107801": "4.7.20",
"500001": "5.0.0 Alpha 1",
"500002": "5.0.0 Alpha 2",
"5000003": "5.0.0 Alpha 3",
@@ -315,5 +322,30 @@
"5000046": "5.0.0 Beta 14",
"5000047": "5.0.0 Beta 14.1",
"5000048": "5.0.0 Beta 14.2",
"5000049": "5.0.0"
"5000049": "5.0.0",
"5000050": "5.0.0",
"5000051": "5.0.0",
"5000052": "5.0.1",
"5000053": "5.0.1",
"5000054": "5.0.2",
"5000055": "5.0.2",
"5000056": "5.0.2",
"5000057": "5.0.3",
"5000058": "5.0.3",
"5000059": "5.0.3",
"5000060": "5.0.3",
"5000061": "5.0.4 Beta 1",
"5000062": "5.0.4 Beta 1",
"5000063": "5.0.4 Beta 1",
"5000064": "5.0.4 Beta 2",
"5000065": "5.0.4 Beta 3",
"5000066": "5.0.4",
"5000067": "5.0.5 Beta 1",
"5000068": "5.0.5 Beta 2",
"5000069": "5.0.5",
"5000070": "5.0.6 Beta 1",
"5000071": "5.0.6 Beta 2",
"5000072": "5.0.6 Beta 3",
"5000073": "5.0.6 Beta 4",
"5000074": "5.0.6"
}