Version 5.0.0 beta 4
This commit is contained in:
1 parent
e86153356a
commit
2f24f9de48
276 files changed
+8614
-6044
No files matched your search
@@ -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="5000029" 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="5000030" 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="5000029" 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="5000030" 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="5000029" 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="5000030" 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="5000029" 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="5000030" 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="5000029" 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="5000030" 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="5000029" 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="5000030" javascript_position="1000050">/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -530,21 +530,11 @@
|
||||
},
|
||||
|
||||
toggleOverview: function (e) {
|
||||
e.preventDefault();
|
||||
|
||||
if( this.scope.hasClass('cTopicOverview--expanded') ){
|
||||
this.scope.find('[data-role="preview"]').removeClass('ipsHide');
|
||||
this.scope.find('[data-role="overview"]').addClass('ipsHide');
|
||||
this.scope.removeClass('cTopicOverview--expanded');
|
||||
} else {
|
||||
this.scope.find('[data-role="preview"]').addClass('ipsHide');
|
||||
this.scope.find('[data-role="overview"]').removeClass('ipsHide');
|
||||
this.scope.addClass('cTopicOverview--expanded');
|
||||
}
|
||||
this.scope.toggleClass('cTopicOverview--expanded');
|
||||
}
|
||||
});
|
||||
}(jQuery, _));</file>
|
||||
<file javascript_app="forums" javascript_location="front" javascript_path="controllers/topic" javascript_name="ips.topic.answers.js" javascript_type="controller" javascript_version="5000029" 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="5000030" javascript_position="1000050"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -684,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="5000029" 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="5000030" javascript_position="1000050">/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -713,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="5000029" 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="5000030" javascript_position="1000050"><![CDATA[/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
@@ -751,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="5000029" 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="5000030" javascript_position="1000050">/**
|
||||
* Invision Community
|
||||
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
|
||||
*
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<language>
|
||||
<app key="forums" version="5000029">
|
||||
<app key="forums" version="5000030">
|
||||
<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>
|
||||
|
||||
+265
-233
@@ -29,7 +29,7 @@
|
||||
</div>
|
||||
</li>
|
||||
</ol>]]></template>
|
||||
<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 ipsButtons--margin">
|
||||
<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>
|
||||
@@ -912,9 +912,9 @@
|
||||
{{endif}}
|
||||
</div>
|
||||
<div class="ipsData__last-secondary">
|
||||
<a href='{$row->url( 'getLastComment' )}' title='{lang="get_last_post"}'>
|
||||
{{if ! \IPS\Output::i()->reduceLinks()}}<a href='{$row->url( 'getLastComment' )}' title='{lang="get_last_post"}'>{{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}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1334,11 +1334,6 @@
|
||||
{{if !$forum->redirect_on}}
|
||||
{{$count = \IPS\forums\Topic::contentCount( $forum, TRUE );}}
|
||||
<li>{lang="posts_number" pluralize="$count" format="long"}</li>
|
||||
{{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"}' 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}}
|
||||
{{else}}
|
||||
<li>{lang="redirect_hits" pluralize="$forum->redirect_hits"}</li>
|
||||
{{endif}}
|
||||
@@ -1557,11 +1552,6 @@
|
||||
{{if !$forum->redirect_on}}
|
||||
{{$count = \IPS\forums\Topic::contentCount( $forum, TRUE );}}
|
||||
{{if $count > 0}}<li>{lang="posts_number" pluralize="$count" format="long"}</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"}' 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}}
|
||||
{{else}}
|
||||
<li>{lang="redirect_hits" pluralize="$forum->redirect_hits"}</li>
|
||||
{{endif}}
|
||||
@@ -1601,11 +1591,6 @@
|
||||
</small>
|
||||
</div>
|
||||
<div class="ipsData__extra">
|
||||
<ul class="ipsData__stats">
|
||||
<li data-statType='comments' data-v="{$lastPost['posts']}">
|
||||
<span class='ipsData__stats-label'>{lang="num_comments" pluralize="$lastPost['posts']"}</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="ipsData__last">
|
||||
<div class="ipsData__last-text">
|
||||
<div class="ipsData__last-primary">
|
||||
@@ -1624,6 +1609,11 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="ipsData__stats">
|
||||
<li data-statType='comments' data-v="{$lastPost['posts']}">
|
||||
<span class='ipsData__stats-label'>{lang="num_comments" pluralize="$lastPost['posts']"}</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
@@ -2612,144 +2602,118 @@
|
||||
{{$images = $topic->showSummaryFeature('uploads') ? $topic->imageAttachments(4) : FALSE;}}
|
||||
{{$hasAnyContent = (bool) ($members or $reacted or $helpful or $images);}}
|
||||
{{if $location == 'sidebar'}}
|
||||
<div class="ipsWidget cTopicOverview cTopicOverview--sidebar i-flex i-flex-direction_column i-overflow_hidden ipsResponsive_showDesktop" {{if $hasAnyContent}}data-controller='forums.front.topic.activity'{{endif}}>
|
||||
<div class="ipsWidget cTopicOverviewContainer">
|
||||
<div class="cTopicOverview cTopicOverview--sidebar ipsResponsive_showDesktop" {{if $hasAnyContent}}data-controller='forums.front.topic.activity'{{endif}}>
|
||||
{{else}}
|
||||
<div class="cTopicOverview cTopicOverview--row i-flex {{if $topic->showSummaryOnDesktop() != 'post'}}ipsResponsive_hideDesktop{{endif}} {{if ! $topic->showSummaryOnMobile()}}ipsResponsive_hidePhone{{endif}}" {{if $hasAnyContent}}data-controller='forums.front.topic.activity'{{endif}}>
|
||||
<div class="ipsBox ipsPull cTopicOverviewContainer {{if $topic->showSummaryOnDesktop() != 'post'}}ipsResponsive_hideDesktop{{endif}} {{if ! $topic->showSummaryOnMobile()}}ipsResponsive_hidePhone{{endif}}">
|
||||
<div class="cTopicOverview cTopicOverview--main" {{if $hasAnyContent}}data-controller='forums.front.topic.activity'{{endif}}>
|
||||
{{endif}}
|
||||
<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">{lang="replies"}</span>
|
||||
<span class="i-color_hard i-font-weight_700 i-display_block i-font-size_3">{number="$topic->posts-1" format="short"}</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="i-color_soft i-font-weight_500 i-display_block">{lang="topicactivity_created"}</span>
|
||||
<span class="i-color_hard i-font-weight_700 i-display_block i-font-size_3">{datetime="$topic->start_date" short="true"}</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="i-color_soft i-font-weight_500 i-display_block">{lang="last_reply"}</span>
|
||||
<span class="i-color_hard i-font-weight_700 i-display_block i-font-size_3">{datetime="$topic->last_post" short="true"}</span>
|
||||
</li>
|
||||
</ul>
|
||||
{{if $location != 'sidebar'}}
|
||||
<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">{lang="topicactivity_expand"}</span><i class='fa-solid fa-chevron-down'></i></a>
|
||||
{{endif}}
|
||||
</div>
|
||||
{{if $location !== 'sidebar'}}
|
||||
<div class='cTopicOverview__preview i-flex_10' data-role="preview">
|
||||
<div class='cTopicOverview__previewInner i-padding_3 i-flex i-gap_3 ipsResponsive_hidePhone'>
|
||||
{{if $members}}
|
||||
<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'>{lang="topicactivity_topposters"}</h4>
|
||||
<ul class='cTopicOverview__dataList i-flex i-justify-content_space-between i-align-items_center i-gap_3 i-margin-top_1'>
|
||||
{{foreach $members as $data}}
|
||||
<li class="cTopicOverview__dataItem i-flex i-justify-content_start i-align-items_center i-gap_2">
|
||||
{template="userPhoto" app="core" group="global" params="$data['member'], 'tiny'"}
|
||||
<span>{$data['count']}</span>
|
||||
</li>
|
||||
{{endforeach}}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="cTopicOverview__content">
|
||||
<ul class='cTopicOverview__item cTopicOverview__item--stats'>
|
||||
{{if $topic->posts > 1}}
|
||||
<li>
|
||||
<span class="i-color_soft i-font-weight_500">{lang="replies"}</span>
|
||||
<span class="i-color_hard i-font-weight_700 i-font-size_3">{number="$topic->posts-1" format="short"}</span>
|
||||
</li>
|
||||
{{endif}}
|
||||
{{if $busy}}
|
||||
<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'>{lang="topicactivity_populardays"}</h4>
|
||||
<ul class='cTopicOverview__dataList i-flex i-justify-content_space-between i-align-items_center i-gap_3 i-margin-top_1'>
|
||||
{{foreach $busy as $row}}
|
||||
<li class='i-flex_10'>
|
||||
<a href="{$topic->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $row['commentId'] ) )}" rel="nofollow" class='cTopicOverview__dataItem i-flex i-justify-content_space-between i-align-items_center i-gap_2'>
|
||||
<span class='i-color_soft'>{$row['date']->dayAndShortMonth()}</span>
|
||||
<span class='i-font-weight_500 i-color_hard'>{$row['count']}</span>
|
||||
</a>
|
||||
</li>
|
||||
{{endforeach}}
|
||||
</ul>
|
||||
</div>
|
||||
{{endif}}
|
||||
</div>
|
||||
</div>
|
||||
{{endif}}
|
||||
<div class='cTopicOverview__body i-padding_3 i-gap_3 {{if $location !== 'sidebar'}}ipsHide i-flex i-flex_11 i-flex-direction_column{{endif}}' data-role="overview">
|
||||
{{if $members}}
|
||||
<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'>{lang="topicactivity_topposters"}</h4>
|
||||
<ul class='cTopicOverview__dataList ipsGrid i-basis_140 i-gap_2'>
|
||||
{{foreach $members as $data}}
|
||||
<li class="ipsPhotoPanel">
|
||||
{template="userPhoto" app="core" group="global" params="$data['member'], 'fluid'"}
|
||||
<div class='ipsPhotoPanel__text'>
|
||||
<strong class='ipsPhotoPanel__primary'><a href='{$data['member']->url()}'>{$data['member']->name}</a></strong>
|
||||
<span class='ipsPhotoPanel__secondary'>{lang="topicactivity_number_posts" pluralize="$data['count']"}</span>
|
||||
</div>
|
||||
</li>
|
||||
{{endforeach}}
|
||||
</ul>
|
||||
</div>
|
||||
{{endif}}
|
||||
{{if $busy}}
|
||||
<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'>{lang="topicactivity_populardays"}</h4>
|
||||
<ul class='cTopicOverview__dataList ipsGrid i-basis_140 i-gap_2'>
|
||||
{{foreach $busy as $row}}
|
||||
<li>
|
||||
<a href="{$topic->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $row['commentId'] ) )}" rel="nofollow" class='cTopicOverview__dataItem i-flex i-justify-content_start i-align-items_center i-gap_2'>
|
||||
<span class='i-font-weight_bold'>{$row['date']->dayAndShortMonth()} {$row['date']->format('Y')}</span>
|
||||
<span class='i-color_soft'>{lang="topicactivity_number_posts" pluralize="$row['count']"}</span>
|
||||
</a>
|
||||
</li>
|
||||
{{endforeach}}
|
||||
</ul>
|
||||
</div>
|
||||
{{endif}}
|
||||
{{if $reacted}}
|
||||
<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'>{lang="topicactivity_popularposts"}</h4>
|
||||
{{foreach $reacted as $data}}
|
||||
<div class='i-position_relative'>
|
||||
<a href="{$data['comment']->url()}" rel="nofollow" class="i-position_cover" aria-hidden='true'><span class='ipsInvisible'>{$data['comment']->author()->name}</span></a>
|
||||
<div class='ipsPhotoPanel ipsPhotoPanel--tiny i-margin-top_3'>
|
||||
<span class='ipsUserPhoto'>
|
||||
<img src='{$data['comment']->author()->photo}' alt='{$data['comment']->author()->name}' loading='lazy'>
|
||||
</span>
|
||||
<div class="ipsPhotoPanel__text">
|
||||
<h5 class='ipsPhotoPanel__primary'>{$data['comment']->author()->name}</h5>
|
||||
<p class='ipsPhotoPanel__secondary'>{datetime="$data['comment']->mapped('date')"}</p>
|
||||
</div>
|
||||
</div>
|
||||
<p class='i-margin-top_2 ipsRichText ipsTruncate_3'>
|
||||
{$data['comment']->truncated(true, 200)}
|
||||
</p>
|
||||
</div>
|
||||
{{endforeach}}
|
||||
</div>
|
||||
{{endif}}
|
||||
{{if $helpful}}
|
||||
<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'>{lang="topicactivity_helpfulposts"}</h4>
|
||||
{{foreach $helpful as $data}}
|
||||
<div class='i-position_relative'>
|
||||
<a href="{$data['comment']->url()}" rel="nofollow" class="i-position_cover" aria-hidden='true'><span class='ipsInvisible'>{$data['comment']->author()->name}</span></a>
|
||||
<div class='ipsPhotoPanel ipsPhotoPanel--tiny i-margin-top_3'>
|
||||
<span class='ipsUserPhoto'>
|
||||
<img src='{$data['comment']->author()->photo}' alt='{$data['comment']->author()->name}' loading='lazy'>
|
||||
</span>
|
||||
<div>
|
||||
<h5 class='i-font-weight_bold'>{$data['comment']->author()->name}</h5>
|
||||
<p class='i-color_soft'>{datetime="$data['comment']->mapped('date')"}</p>
|
||||
</div>
|
||||
</div>
|
||||
<p class='i-margin-top_2 ipsRichText ipsTruncate_3'>
|
||||
{$data['comment']->truncated(true, 200)}
|
||||
</p>
|
||||
<li>
|
||||
<span class="i-color_soft i-font-weight_500">{lang="views"}</span>
|
||||
<span class="i-color_hard i-font-weight_700 i-font-size_3">{number="$topic->views" format="short"}</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="i-color_soft i-font-weight_500">{lang="topicactivity_created"}</span>
|
||||
<span class="i-color_hard i-font-weight_700 i-font-size_3">{datetime="$topic->start_date" short="true"}</span>
|
||||
</li>
|
||||
<li>
|
||||
<span class="i-color_soft i-font-weight_500">{lang="last_reply"}</span>
|
||||
<span class="i-color_hard i-font-weight_700 i-font-size_3">{datetime="$topic->last_post" short="true"}</span>
|
||||
</li>
|
||||
</ul>
|
||||
{{if $members}}
|
||||
<div class='cTopicOverview__item cTopicOverview__item--topPosters'>
|
||||
<h4 class='cTopicOverview__title'>{lang="topicactivity_topposters"}</h4>
|
||||
<ul class='cTopicOverview__dataList'>
|
||||
{{foreach $members as $data}}
|
||||
<li class="ipsPhotoPanel">
|
||||
{template="userPhoto" app="core" group="global" params="$data['member'], 'fluid'"}
|
||||
<div class='ipsPhotoPanel__text'>
|
||||
<strong class='ipsPhotoPanel__primary i-color_hard'><a href='{$data['member']->url()}'>{$data['member']->name}</a></strong>
|
||||
<span class='ipsPhotoPanel__secondary'>{lang="topicactivity_number_posts" pluralize="$data['count']"}</span>
|
||||
</div>
|
||||
</li>
|
||||
{{endforeach}}
|
||||
</ul>
|
||||
</div>
|
||||
{{endforeach}}
|
||||
</div>
|
||||
{{endif}}
|
||||
{{if $images}}
|
||||
<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'>{lang="topicactivity_images"}</h4>
|
||||
<div class="i-margin-top_2" data-controller='core.front.core.lightboxedImages'>
|
||||
<ul class='cTopicOverview__imageGrid ipsGrid i-basis_120 i-gap_1'>
|
||||
{{endif}}
|
||||
{{if $busy}}
|
||||
<div class='cTopicOverview__item cTopicOverview__item--popularDays'>
|
||||
<h4 class='cTopicOverview__title'>{lang="topicactivity_populardays"}</h4>
|
||||
<ul class='cTopicOverview__dataList'>
|
||||
{{foreach $busy as $row}}
|
||||
<li>
|
||||
<a href="{$topic->shareableUrl( $row['commentId'] )}" rel="nofollow" class='cTopicOverview__dataItem i-grid i-color_soft'>
|
||||
<span class='i-font-weight_bold i-color_hard'>{$row['date']->dayAndShortMonth()} {$row['date']->format('Y')}</span>
|
||||
<span>{lang="topicactivity_number_posts" pluralize="$row['count']"}</span>
|
||||
</a>
|
||||
</li>
|
||||
{{endforeach}}
|
||||
</ul>
|
||||
</div>
|
||||
{{endif}}
|
||||
{{if $reacted}}
|
||||
<div class='cTopicOverview__item cTopicOverview__item--popularPosts'>
|
||||
<h4 class='cTopicOverview__title'>{lang="topicactivity_popularposts"}</h4>
|
||||
<ul class='cTopicOverview__dataList'>
|
||||
{{foreach $reacted as $data}}
|
||||
<li>
|
||||
<div class='ipsPhotoPanel ipsPhotoPanel--tiny'>
|
||||
<span class='ipsUserPhoto'>
|
||||
<img src='{$data['comment']->author()->photo}' alt='{$data['comment']->author()->name}' loading='lazy'>
|
||||
</span>
|
||||
<div class="ipsPhotoPanel__text">
|
||||
<h5 class='ipsPhotoPanel__primary i-color_hard'>{$data['comment']->author()->name}</h5>
|
||||
<p class='ipsPhotoPanel__secondary'>
|
||||
<a href="{$data['comment']->url()}" rel="nofollow">{datetime="$data['comment']->mapped('date')"}</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<p class='i-margin-top_2 ipsRichText ipsTruncate_3'>
|
||||
{$data['comment']->truncated(true, 200)}
|
||||
</p>
|
||||
</li>
|
||||
{{endforeach}}
|
||||
</ul>
|
||||
</div>
|
||||
{{endif}}
|
||||
{{if $helpful}}
|
||||
<div class='cTopicOverview__item cTopicOverview__item--helpfulPosts'>
|
||||
<h4 class='cTopicOverview__title'>{lang="topicactivity_helpfulposts"}</h4>
|
||||
<ul class='cTopicOverview__dataList'>
|
||||
{{foreach $helpful as $data}}
|
||||
<li>
|
||||
<div class='ipsPhotoPanel ipsPhotoPanel--tiny'>
|
||||
<span class='ipsUserPhoto'>
|
||||
<img src='{$data['comment']->author()->photo}' alt='{$data['comment']->author()->name}' loading='lazy'>
|
||||
</span>
|
||||
<div class="ipsPhotoPanel__text">
|
||||
<h5 class="ipsPhotoPanel__primary i-color_hard">{$data['comment']->author()->name}</h5>
|
||||
<p class="ipsPhotoPanel__secondary">
|
||||
<a href="{$data['comment']->shareableUrl()}" rel="nofollow">{datetime="$data['comment']->mapped('date')"}</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<p class='i-margin-top_2 ipsRichText ipsTruncate_3'>
|
||||
{$data['comment']->truncated(true, 200)}
|
||||
</p>
|
||||
</li>
|
||||
{{endforeach}}
|
||||
</ul>
|
||||
</div>
|
||||
{{endif}}
|
||||
{{if $images}}
|
||||
<div class='cTopicOverview__item cTopicOverview__item--images'>
|
||||
<h4 class='cTopicOverview__title'>{lang="topicactivity_images"}</h4>
|
||||
<ul class='cTopicOverview__imageGrid' data-controller='core.front.core.lightboxedImages'>
|
||||
{{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'>
|
||||
@@ -2760,19 +2724,13 @@
|
||||
{{endforeach}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{{endif}}
|
||||
</div>
|
||||
{{if $hasAnyContent}}
|
||||
<button type="button" data-action='toggleOverview' class='cTopicOverview__toggle'><span class="ipsInvisible">{lang="topicactivity_expand"}</span><i class='fa-solid fa-chevron-down'></i></button>
|
||||
{{endif}}
|
||||
</div>
|
||||
{{if $location !== 'sidebar' and $hasAnyContent}}
|
||||
<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">{lang="topicactivity_expand"}</span><i class='fa-solid fa-chevron-down'></i></a>
|
||||
{{endif}}
|
||||
{{if $location == 'sidebar'}}
|
||||
</div>
|
||||
{{else}}
|
||||
</div>
|
||||
{{endif}}
|
||||
|
||||
]]></template>
|
||||
</div>]]></template>
|
||||
<template template_group="topics" template_name="expertBadge" template_data="$topic, $comment, $viewerIsFollowingTheseExperts" template_location="front" template_app="forums"><![CDATA[{{$isFollowing = ( is_array( $viewerIsFollowingTheseExperts ) and count( $viewerIsFollowingTheseExperts ) and in_array( $comment->author()->member_id, $viewerIsFollowingTheseExperts ) );}}
|
||||
<span class="ipsBadge ipsBadge--expert">
|
||||
<i class="fa-solid fa-graduation-cap"></i>
|
||||
@@ -2801,7 +2759,7 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
|
||||
>
|
||||
<div class='ipsEntry__post'>
|
||||
<div class='ipsEntry__meta'>
|
||||
<a href='{$comment->item()->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $comment->$idField ) )}' class='ipsEntry__date' rel="nofollow">{$comment->dateLine()|raw}</a>
|
||||
{{if ! \IPS\Output::i()->reduceLinks()}}<a href='{$comment->shareableUrl()}' class='ipsEntry__date' rel="nofollow">{{endif}}{$comment->dateLine()|raw}{{if ! \IPS\Output::i()->reduceLinks()}}</a>{{endif}}
|
||||
<!-- Traditional badges -->
|
||||
<ul data-ips-hook="postBadges" class='ipsBadges'>
|
||||
{{if ! $comment->isFirst() and $comment->author()->member_id AND $comment->author()->member_id == $item->author()->member_id}}
|
||||
@@ -2930,7 +2888,9 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
|
||||
{{endif}}
|
||||
</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='', $viewerIsFollowingTheseExperts=[]" template_location="front" template_app="forums"><![CDATA[{{$idField = $comment::$databaseColumnId;}}
|
||||
{{$itemClassSafe = str_replace( '\\', '_', mb_substr( $comment::$itemClass, 4 ) );}}
|
||||
@@ -2945,6 +2905,7 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
|
||||
</ul>
|
||||
</div>
|
||||
{{endif}}
|
||||
<a id='findComment-{$comment->$idField}'></a>
|
||||
<div id='comment-{$comment->$idField}'></div>
|
||||
<article
|
||||
data-ips-hook="postWrapper"
|
||||
@@ -3107,7 +3068,7 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
|
||||
{{endif}}
|
||||
</h3>
|
||||
<p class='ipsPhotoPanel__secondary'>
|
||||
<a href='{$comment->item()->url()->setQueryString( array( 'do' => 'findComment', 'comment' => $comment->$idField ) )}' rel="nofollow">{$comment->dateLine()|raw}</a>
|
||||
{{if ! \IPS\Output::i()->reduceLinks()}}<a href='{$comment->shareableUrl()}' rel="nofollow">{{endif}}{$comment->dateLine()|raw}{{if ! \IPS\Output::i()->reduceLinks()}}</a>{{endif}}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -3761,7 +3722,7 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
|
||||
<div class='ipsData__content'>
|
||||
<div class='ipsData__main'>
|
||||
{{if \IPS\Request::i()->controller != 'forums'}}
|
||||
<div class="ipsData__category" data-hide-on="minimal"><a href="{$topic->container()->url()}">{$topic->container()->_formattedTitle|raw}</a></div>
|
||||
<div class="ipsData__category"><a href="{$topic->container()->url()}">{$topic->container()->_formattedTitle|raw}</a></div>
|
||||
{{endif}}
|
||||
<div class='ipsData__title'>
|
||||
{{if $topic->prefix()}}
|
||||
@@ -3788,7 +3749,7 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
|
||||
<div class='ipsData__desc'>{$topic->truncated(TRUE)|raw}</div>
|
||||
{{endif}}
|
||||
</div>
|
||||
<div class="ipsData__extra" data-hide-on="minimal">
|
||||
<div class="ipsData__extra">
|
||||
<ul data-ips-hook="stats" class='ipsData__stats'>
|
||||
{{foreach $topic->stats(FALSE) as $k => $v}}
|
||||
<li {{if \in_array( $k, $topic->hotStats )}}class="ipsData__stats-hot" data-text='{lang="hot_item"}' data-ipsTooltip title='{lang="hot_item_desc"}'{{endif}} data-statType='{$k}' {{if $v === 0}}data-v="{$v}"{{endif}}>
|
||||
@@ -3797,6 +3758,19 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
|
||||
</li>
|
||||
{{endforeach}}
|
||||
</ul>
|
||||
<div class="ipsData__last ipsData__last--author" data-ips-hook="latestAuthorPhoto">
|
||||
{template="userPhoto" app="core" group="global" params="$topic->author(), 'fluid'"}
|
||||
<div class="ipsData__last-text">
|
||||
<div class="ipsData__last-primary">
|
||||
{$topic->author()->link( NULL, NULL, $topic->isAnonymous() )|raw}
|
||||
</div>
|
||||
<div class="ipsData__last-secondary">
|
||||
<a href='{$topic->url( 'getLastComment' )}' title='{lang="get_last_post"}'>
|
||||
{datetime="$topic->mapped('date')"}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ipsData__last" data-ips-hook="latestUserPhoto">
|
||||
{{if $topic->mapped('num_comments')}}
|
||||
{template="userPhoto" app="core" group="global" params="$topic->lastCommenter(), 'fluid'"}
|
||||
@@ -4077,36 +4051,88 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
|
||||
}
|
||||
|
||||
}]]></css>
|
||||
<css css_location="front" css_app="forums" css_attributes="" css_path="." css_name="topics.css">@media (max-width: 1150px){
|
||||
.cTopicOverview{
|
||||
flex-direction: column;
|
||||
<css css_location="front" css_app="forums" css_attributes="" css_path="." css_name="topics.css"><![CDATA[.cTopicOverviewContainer{
|
||||
container-type: inline-size;
|
||||
container-name: cTopicOverview;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.cTopicOverviewContainer.ipsBox{
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
/* Separate items by a border */
|
||||
.cTopicOverview,
|
||||
.cTopicOverview__content{
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 1px;
|
||||
flex: 9999 1 auto;
|
||||
}
|
||||
|
||||
.cTopicOverview > *,
|
||||
.cTopicOverview__item{
|
||||
outline: 1px solid var(--i-background_3);
|
||||
}
|
||||
.cTopicOverview__item{
|
||||
padding: 1.5em;
|
||||
flex: 1 1 max(300px, 40%);
|
||||
}
|
||||
|
||||
/* Inlined collapsed state */
|
||||
.cTopicOverview--main:not(.cTopicOverview--expanded) .cTopicOverview__content{
|
||||
flex-wrap: nowrap;
|
||||
}
|
||||
.cTopicOverview--main:not(.cTopicOverview--expanded) .cTopicOverview__item{
|
||||
flex: 1 0 auto;
|
||||
}
|
||||
|
||||
@container cTopicOverview (min-width: 500px){
|
||||
.cTopicOverview--main:not(.cTopicOverview--expanded) .cTopicOverview__content{
|
||||
flex-wrap: nowrap;
|
||||
overflow: hidden;
|
||||
mask-image: linear-gradient(to left, transparent, #000 300px);
|
||||
}
|
||||
}
|
||||
|
||||
.cTopicOverview--row{
|
||||
background-color: var(--i-box--ba-co);
|
||||
background-clip: padding-box;
|
||||
border-radius: var(--i-box--bo-ra);
|
||||
border: 1px solid color-mix(in srgb, var(--i-co) 10%, transparent);
|
||||
overflow: hidden;
|
||||
margin: .5em;
|
||||
}
|
||||
|
||||
.cTopicOverview__toggle {
|
||||
display: block;
|
||||
padding: .5em;
|
||||
transition: 0.1s all ease-in-out;
|
||||
}
|
||||
|
||||
.cTopicOverview__toggle i[class*=" fa-"] {
|
||||
/* Vertical UI when small */
|
||||
@container cTopicOverview (max-width: 750px){
|
||||
.cTopicOverview{
|
||||
display: grid;
|
||||
place-content: center;
|
||||
height: 100%;
|
||||
max-height: 80px;
|
||||
}
|
||||
}
|
||||
|
||||
/* Hide certain items when collapsed */
|
||||
.cTopicOverview--main:not(.cTopicOverview--expanded) :is(.cTopicOverview__item--popularPosts, .cTopicOverview__item--helpfulPosts, .cTopicOverview__item--images){
|
||||
display: none;
|
||||
}
|
||||
/* Hide all items except for stats on small screens */
|
||||
@container cTopicOverview (max-width: 499px){
|
||||
.cTopicOverview--main:not(.cTopicOverview--expanded) .cTopicOverview__item:not(.cTopicOverview__item--stats){
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* Titles */
|
||||
.cTopicOverview__title{
|
||||
font-weight: 600;
|
||||
margin-bottom: 1em;
|
||||
font-size: 1.2em;
|
||||
color: var(--i-color_hard);
|
||||
}
|
||||
|
||||
/* Toggle button */
|
||||
.cTopicOverview__toggle {
|
||||
flex: 1 0 auto;
|
||||
padding: .5em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.cTopicOverview__toggle i[class*=" fa-"] {
|
||||
transition: 0.2s all ease-in-out;
|
||||
}
|
||||
|
||||
.cTopicOverview--expanded .cTopicOverview__toggle i[class*=" fa-"] {
|
||||
.cTopicOverview--expanded .cTopicOverview__toggle i[class*=" fa-"] {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
|
||||
@@ -4114,56 +4140,62 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
|
||||
background: var(--i-background_2);
|
||||
}
|
||||
|
||||
.cTopicOverview__toggle--row {
|
||||
/* Hide toggle button in sidebar since it's always expanded */
|
||||
.ipsLayout__secondary-column .cTopicOverview__toggle{
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cTopicOverview__dataItemInner {
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
line-height: 1.2;
|
||||
/* Stats */
|
||||
.cTopicOverview__item--stats{
|
||||
display: flex;
|
||||
gap: 1em 2em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.cTopicOverview__preview {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
min-height: 90px;
|
||||
.cTopicOverview--expanded .cTopicOverview__item--stats{
|
||||
flex: 1 1 100%;
|
||||
}
|
||||
|
||||
.cTopicOverview__item--stats > li{
|
||||
flex: 1 0 auto;
|
||||
display: grid;
|
||||
place-content: center;
|
||||
}
|
||||
|
||||
/* Data lists */
|
||||
.cTopicOverview__dataList{
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 2em;
|
||||
}
|
||||
|
||||
.cTopicOverview__preview::after {
|
||||
content: '';
|
||||
pointer-events: none;
|
||||
display: block;
|
||||
position: absolute;
|
||||
inset-inline-end: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
background-image: linear-gradient(to right, color-mix(in srgb, var(--i-box--ba-co) 0%, transparent) 0%, var(--i-box--ba-co) 100%);
|
||||
width: 250px;
|
||||
}
|
||||
|
||||
.cTopicOverview__preview .ipsUserPhoto--tiny {
|
||||
max-width: 28px;
|
||||
.cTopicOverview__dataList > *{
|
||||
flex: 1 1 170px;
|
||||
}
|
||||
|
||||
.cTopicOverview__previewInner {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
/* 2 columns in sidebar */
|
||||
:is(.cTopicOverview__item--topPosters, .cTopicOverview__item--popularDays) .cTopicOverview__dataList > *{
|
||||
flex-basis: max(120px, 40%);
|
||||
}
|
||||
|
||||
/* Smaller gap on collapsed */
|
||||
.cTopicOverview--main:not(.cTopicOverview--expanded) .cTopicOverview__item--topPosters .cTopicOverview__dataList{
|
||||
gap: 1em;
|
||||
}
|
||||
|
||||
.cTopicOverview--main:not(.cTopicOverview--expanded) .cTopicOverview__dataList > *{
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
|
||||
/* Minimal photo panels in collapsed view */
|
||||
.cTopicOverview--main:not(.cTopicOverview--expanded) .ipsPhotoPanel__text{
|
||||
display: none;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 1150px) {
|
||||
.cTopicOverview {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.cTopicOverview__preview,
|
||||
.cTopicOverview__toggle--afterStats {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cTopicOverview__toggle--row {
|
||||
display: block;
|
||||
}
|
||||
.cTopicOverview__imageGrid{
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(80px, 1fr));
|
||||
gap: 15px;
|
||||
}
|
||||
|
||||
|
||||
@@ -4207,14 +4239,14 @@ data-first-page="{{if isset( request.page ) and request.page > 1}}false{{else}}t
|
||||
|
||||
|
||||
/* Hide certain elements depending on traditional, minimal and first page attributes */
|
||||
#ipsTopicView[data-ips-topic-ui="traditional"][data-ips-topic-first-page="true"] [data-ips-hide="traditional-first"],
|
||||
#ipsTopicView[data-ips-topic-ui="minimal"] [data-ips-hide="minimal"],
|
||||
#ipsTopicView[data-ips-topic-comments="helpful"] .ipsTopicMeta{
|
||||
#ipsTopicView[data-ips-topic-ui="traditional"][data-ips-topic-first-page="true"] [data-ips-hide="traditional-first"],
|
||||
#ipsTopicView[data-ips-topic-ui="minimal"] [data-ips-hide="minimal"],
|
||||
#ipsTopicView[data-ips-topic-comments="helpful"] .ipsTopicMeta{
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Improve alignment of assigned icon */
|
||||
.ipsMessage--assigned .ipsMessage__icon{
|
||||
top: calc(50% - .5em);
|
||||
}</css>
|
||||
}]]></css>
|
||||
</theme>
|
||||
@@ -277,5 +277,6 @@
|
||||
"5000026": "5.0.0 Beta 1",
|
||||
"5000027": "5.0.0 Beta 2",
|
||||
"5000028": "5.0.0 Beta 2",
|
||||
"5000029": "5.0.0 Beta 3"
|
||||
"5000029": "5.0.0 Beta 3",
|
||||
"5000030": "5.0.0 Beta 4"
|
||||
}
|
||||
Reference in new issue
Block a user