140 lines
6.5 KiB
Smarty
140 lines
6.5 KiB
Smarty
{{{ if (!./index && widgets.mainpost-header.length) }}}
|
|
<div data-widget-area="mainpost-header">
|
|
{{{ each widgets.mainpost-header }}}
|
|
{widgets.mainpost-header.html}
|
|
{{{ end }}}
|
|
</div>
|
|
{{{ end }}}
|
|
|
|
<div class="clearfix post-header">
|
|
<div class="icon float-start">
|
|
<a href="<!-- IF posts.user.remoteId -->{config.relative_path}/user/{posts.user.remoteId}<!-- ELSE -->#<!-- ENDIF posts.user.remoteId -->">
|
|
{buildAvatar(posts.user, "48px", true, "", "user/picture")}
|
|
{{{ if ./user.isLocal }}}
|
|
<span component="user/status" class="position-absolute top-100 start-100 border border-white border-2 rounded-circle status {posts.user.status}"><span class="visually-hidden">[[global:{posts.user.status}]]</span></span>
|
|
{{{ else }}}
|
|
<span component="user/locality" class="position-absolute top-100 start-100 lh-1 border border-white border-2 rounded-circle small" title="[[global:remote-user]]">
|
|
<span class="visually-hidden">[[global:remote-user]]</span>
|
|
<i class="fa fa-globe"></i>
|
|
</span>
|
|
{{{ end }}}
|
|
</a>
|
|
</div>
|
|
|
|
<small class="d-flex">
|
|
<div class="d-flex align-items-center gap-1 flex-wrap w-100">
|
|
<strong class="text-nowrap" itemprop="author" itemscope itemtype="https://schema.org/Person">
|
|
<meta itemprop="name" content="{./user.username}">
|
|
{{{ if ./user.remoteId }}}<meta itemprop="url" content="{config.relative_path}/user/{./user.remoteId}">{{{ end }}}
|
|
<a href="<!-- IF posts.user.remoteId -->{config.relative_path}/user/{posts.user.remoteId}<!-- ELSE -->#<!-- ENDIF posts.user.remoteId -->" data-username="{posts.user.username}" data-uid="{posts.user.uid}">{posts.user.displayname}</a>
|
|
</strong>
|
|
|
|
{{{ each posts.user.selectedGroups }}}
|
|
{{{ if posts.user.selectedGroups.slug }}}
|
|
<!-- IMPORT partials/groups/badge.tpl -->
|
|
{{{ end }}}
|
|
{{{ end }}}
|
|
|
|
<!-- IF posts.user.banned -->
|
|
<span class="badge bg-danger">[[user:banned]]</span>
|
|
<!-- ENDIF posts.user.banned -->
|
|
|
|
<span class="visible-xs-inline-block visible-sm-inline-block visible-md-inline-block visible-lg-inline-block">
|
|
{{{ if posts.toPid }}}
|
|
<a component="post/parent" class="btn btn-sm btn-ghost py-0 px-1 text-xs hidden-xs" data-topid="{posts.toPid}" href="{config.relative_path}/post/{posts.toPid}"><i class="fa fa-reply"></i> @{{{ if posts.parent.user.remoteId }}}{posts.parent.user.username}{{{ else }}}[[global:guest]]{{{ end }}}</a>
|
|
{{{ end }}}
|
|
|
|
<span>
|
|
<!-- IF posts.user.custom_profile_info.length -->
|
|
|
|
|
{{{each posts.user.custom_profile_info}}}
|
|
{posts.user.custom_profile_info.content}
|
|
{{{end}}}
|
|
<!-- ENDIF posts.user.custom_profile_info.length -->
|
|
</span>
|
|
</span>
|
|
<div class="d-flex align-items-center gap-1 flex-grow-1 justify-content-end">
|
|
<span>
|
|
<i component="post/edit-indicator" class="fa fa-pencil-square<!-- IF privileges.posts:history --> pointer<!-- END --> edit-icon <!-- IF !posts.editor.username -->hidden<!-- ENDIF !posts.editor.username -->"></i>
|
|
|
|
<span data-editor="{posts.editor.remoteId}" component="post/editor" class="hidden">[[global:last-edited-by, {posts.editor.username}]] <span class="timeago" title="{isoTimeToLocaleString(posts.editedISO, config.userLang)}"></span></span>
|
|
|
|
<span class="visible-xs-inline-block visible-sm-inline-block visible-md-inline-block visible-lg-inline-block">
|
|
<a class="permalink text-muted" href="{config.relative_path}/post/{posts.pid}"><span class="timeago" title="{posts.timestampISO}"></span></a>
|
|
</span>
|
|
</span>
|
|
<span class="bookmarked"><i class="fa fa-bookmark-o"></i></span>
|
|
</div>
|
|
</div>
|
|
</small>
|
|
</div>
|
|
|
|
<br />
|
|
|
|
<div class="content" component="post/content" itemprop="text">
|
|
{posts.content}
|
|
</div>
|
|
|
|
<div class="post-footer">
|
|
{{{ if posts.user.signature }}}
|
|
<div component="post/signature" data-uid="{posts.user.uid}" class="post-signature">{posts.user.signature}</div>
|
|
{{{ end }}}
|
|
|
|
<div class="clearfix">
|
|
{{{ if !hideReplies }}}
|
|
<a component="post/reply-count" data-target-component="post/replies/container" href="#" class="threaded-replies user-select-none float-start text-muted {{{ if (!./replies || shouldHideReplyContainer(@value)) }}}hidden{{{ end }}}">
|
|
<span component="post/reply-count/avatars" class="avatars d-inline-flex gap-1 align-items-top hidden-xs {{{ if posts.replies.hasMore }}}hasMore{{{ end }}}">
|
|
{{{each posts.replies.users}}}
|
|
<span>{buildAvatar(posts.replies.users, "16px", true, "")}</span>
|
|
{{{end}}}
|
|
{{{ if posts.replies.hasMore}}}
|
|
<span><i class="fa fa-ellipsis"></i></span>
|
|
{{{ end }}}
|
|
</span>
|
|
|
|
<span class="replies-count small" component="post/reply-count/text" data-replies="{posts.replies.count}">{posts.replies.text}</span>
|
|
<span class="replies-last hidden-xs small">[[topic:last-reply-time]] <span class="timeago" title="{posts.replies.timestampISO}"></span></span>
|
|
|
|
<i class="fa fa-fw fa-chevron-down" component="post/replies/open"></i>
|
|
</a>
|
|
{{{ end }}}
|
|
|
|
<small class="d-flex justify-content-end align-items-center gap-1" component="post/actions">
|
|
<!-- IMPORT partials/topic/reactions.tpl -->
|
|
<span class="post-tools">
|
|
<a component="post/reply" href="#" class="btn btn-sm btn-link user-select-none <!-- IF !privileges.topics:reply -->hidden<!-- ENDIF !privileges.topics:reply -->">[[topic:reply]]</a>
|
|
<a component="post/quote" href="#" class="btn btn-sm btn-link user-select-none <!-- IF !privileges.topics:reply -->hidden<!-- ENDIF !privileges.topics:reply -->">[[topic:quote]]</a>
|
|
</span>
|
|
|
|
{{{ if ./announces }}}
|
|
<a component="post/announce-count" href="#" class="btn-ghost-sm" title="[[topic:announcers]]"><i class="fa fa-share-alt text-primary"></i> {./announces}</a>
|
|
{{{ end }}}
|
|
|
|
<!-- IF !reputation:disabled -->
|
|
<span class="votes">
|
|
<a component="post/upvote" href="#" class="btn btn-sm btn-link <!-- IF posts.upvoted -->upvoted<!-- ENDIF posts.upvoted -->">
|
|
<i class="fa fa-chevron-up"></i>
|
|
</a>
|
|
|
|
<span class="btn btn-sm btn-link" component="post/vote-count" data-votes="{posts.votes}">{posts.votes}</span>
|
|
|
|
<!-- IF !downvote:disabled -->
|
|
<a component="post/downvote" href="#" class="btn btn-sm btn-link <!-- IF posts.downvoted -->downvoted<!-- ENDIF posts.downvoted -->">
|
|
<i class="fa fa-chevron-down"></i>
|
|
</a>
|
|
<!-- ENDIF !downvote:disabled -->
|
|
</span>
|
|
<!-- ENDIF !reputation:disabled -->
|
|
|
|
<!-- IMPORT partials/topic/post-menu.tpl -->
|
|
</small>
|
|
</div>
|
|
<div component="post/replies/container"></div>
|
|
</div>
|
|
{{{ if (!./index && widgets.mainpost-footer.length) }}}
|
|
<div data-widget-area="mainpost-footer">
|
|
{{{ each widgets.mainpost-footer }}}
|
|
{widgets.mainpost-footer.html}
|
|
{{{ end }}}
|
|
</div>
|
|
{{{ end }}} |