nodebb-theme-harmony 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc +3 -0
- package/README.md +8 -0
- package/lib/controllers.js +7 -0
- package/library.js +51 -0
- package/package.json +45 -0
- package/plugin.json +11 -0
- package/public/.eslintrc +3 -0
- package/public/admin.js +15 -0
- package/renovate.json +6 -0
- package/scss/harmony.scss +3 -0
- package/scss/overrides.scss +1 -0
- package/templates/account/best.tpl +3 -0
- package/templates/account/blocks.tpl +35 -0
- package/templates/account/bookmarks.tpl +3 -0
- package/templates/account/categories.tpl +30 -0
- package/templates/account/consent.tpl +71 -0
- package/templates/account/controversial.tpl +3 -0
- package/templates/account/downvoted.tpl +3 -0
- package/templates/account/edit/password.tpl +32 -0
- package/templates/account/edit/username.tpl +28 -0
- package/templates/account/edit.tpl +137 -0
- package/templates/account/followers.tpl +19 -0
- package/templates/account/following.tpl +19 -0
- package/templates/account/groups.tpl +19 -0
- package/templates/account/ignored.tpl +3 -0
- package/templates/account/info.tpl +228 -0
- package/templates/account/posts.tpl +21 -0
- package/templates/account/profile.tpl +168 -0
- package/templates/account/sessions.tpl +34 -0
- package/templates/account/settings.tpl +231 -0
- package/templates/account/theme.tpl +29 -0
- package/templates/account/topics.tpl +32 -0
- package/templates/account/uploads.tpl +45 -0
- package/templates/account/upvoted.tpl +3 -0
- package/templates/account/watched.tpl +3 -0
- package/templates/admin/plugins/persona.tpl +29 -0
- package/templates/categories.tpl +33 -0
- package/templates/category.tpl +65 -0
- package/templates/chat.tpl +41 -0
- package/templates/chats.tpl +21 -0
- package/templates/flags/detail.tpl +211 -0
- package/templates/flags/list.tpl +73 -0
- package/templates/footer.tpl +16 -0
- package/templates/groups/details.tpl +79 -0
- package/templates/groups/list.tpl +50 -0
- package/templates/groups/members.tpl +8 -0
- package/templates/header.tpl +49 -0
- package/templates/login.tpl +98 -0
- package/templates/modules/taskbar.tpl +5 -0
- package/templates/modules/usercard.tpl +39 -0
- package/templates/notifications.tpl +68 -0
- package/templates/partials/acceptTos.tpl +11 -0
- package/templates/partials/account/category-item.tpl +25 -0
- package/templates/partials/account/header.tpl +48 -0
- package/templates/partials/account/menu.tpl +103 -0
- package/templates/partials/breadcrumbs.tpl +20 -0
- package/templates/partials/buttons/newTopic.tpl +24 -0
- package/templates/partials/categories/item.tpl +62 -0
- package/templates/partials/categories/lastpost.tpl +28 -0
- package/templates/partials/categories/link.tpl +13 -0
- package/templates/partials/category/sort.tpl +17 -0
- package/templates/partials/category/subcategory.tpl +20 -0
- package/templates/partials/category/tags.tpl +5 -0
- package/templates/partials/category/tools.tpl +83 -0
- package/templates/partials/category/watch.tpl +23 -0
- package/templates/partials/category-filter-content.tpl +31 -0
- package/templates/partials/category-filter-right.tpl +5 -0
- package/templates/partials/category-filter.tpl +5 -0
- package/templates/partials/category-selector-content.tpl +35 -0
- package/templates/partials/category-selector-right.tpl +5 -0
- package/templates/partials/category-selector.tpl +5 -0
- package/templates/partials/chats/dropdown.tpl +40 -0
- package/templates/partials/chats/message-window.tpl +36 -0
- package/templates/partials/chats/message.tpl +36 -0
- package/templates/partials/chats/messages.tpl +9 -0
- package/templates/partials/chats/options.tpl +26 -0
- package/templates/partials/chats/recent_room.tpl +33 -0
- package/templates/partials/chats/system-message.tpl +5 -0
- package/templates/partials/chats/user.tpl +3 -0
- package/templates/partials/chats-menu.tpl +43 -0
- package/templates/partials/cookie-consent.tpl +6 -0
- package/templates/partials/flags/filters.tpl +99 -0
- package/templates/partials/groups/admin.tpl +197 -0
- package/templates/partials/groups/badge.tpl +3 -0
- package/templates/partials/groups/list.tpl +23 -0
- package/templates/partials/groups/memberlist.tpl +43 -0
- package/templates/partials/header/user-menu.tpl +87 -0
- package/templates/partials/menu.tpl +188 -0
- package/templates/partials/notifications_list.tpl +32 -0
- package/templates/partials/paginator.tpl +47 -0
- package/templates/partials/post_bar.tpl +22 -0
- package/templates/partials/posts_list.tpl +10 -0
- package/templates/partials/posts_list_item.tpl +34 -0
- package/templates/partials/quick-search-results.tpl +36 -0
- package/templates/partials/search-results.tpl +57 -0
- package/templates/partials/slideout-menu.tpl +6 -0
- package/templates/partials/tags_list.tpl +7 -0
- package/templates/partials/thread_tools.tpl +10 -0
- package/templates/partials/toast.tpl +16 -0
- package/templates/partials/topic/browsing-users.tpl +3 -0
- package/templates/partials/topic/event.tpl +28 -0
- package/templates/partials/topic/navigation-post.tpl +14 -0
- package/templates/partials/topic/navigator.tpl +41 -0
- package/templates/partials/topic/necro-post.tpl +5 -0
- package/templates/partials/topic/post-editor.tpl +3 -0
- package/templates/partials/topic/post-menu-list.tpl +134 -0
- package/templates/partials/topic/post-menu.tpl +6 -0
- package/templates/partials/topic/post.tpl +116 -0
- package/templates/partials/topic/quickreply.tpl +30 -0
- package/templates/partials/topic/reactions.tpl +3 -0
- package/templates/partials/topic/reply-button.tpl +29 -0
- package/templates/partials/topic/selection-tooltip.tpl +5 -0
- package/templates/partials/topic/sort.tpl +11 -0
- package/templates/partials/topic/stats.tpl +14 -0
- package/templates/partials/topic/tag.tpl +3 -0
- package/templates/partials/topic/tags.tpl +5 -0
- package/templates/partials/topic/topic-menu-list.tpl +34 -0
- package/templates/partials/topic/watch.tpl +24 -0
- package/templates/partials/topic-filters.tpl +14 -0
- package/templates/partials/topic-terms.tpl +14 -0
- package/templates/partials/topics_list.tpl +118 -0
- package/templates/partials/users_list.tpl +60 -0
- package/templates/partials/users_list_menu.tpl +23 -0
- package/templates/popular.tpl +37 -0
- package/templates/recent.tpl +39 -0
- package/templates/register.tpl +89 -0
- package/templates/search.tpl +185 -0
- package/templates/tag.tpl +35 -0
- package/templates/tags.tpl +34 -0
- package/templates/top.tpl +37 -0
- package/templates/topic.tpl +108 -0
- package/templates/unread.tpl +39 -0
- package/templates/users.tpl +36 -0
- package/theme.json +7 -0
- package/theme.scss +1 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
+
|
|
3
|
+
<div class="clearfix">
|
|
4
|
+
<div class="icon float-start">
|
|
5
|
+
<a href="<!-- IF post.user.userslug -->{config.relative_path}/user/{post.user.userslug}<!-- ELSE -->#<!-- ENDIF post.user.userslug -->">
|
|
6
|
+
{buildAvatar(post.user, "24px", true, "", "user/picture")} {post.user.username}
|
|
7
|
+
</a>
|
|
8
|
+
</div>
|
|
9
|
+
<small class="float-end">
|
|
10
|
+
<span class="timeago" title="{post.timestampISO}"></span>
|
|
11
|
+
</small>
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
<div>{post.content}</div>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
+
|
|
3
|
+
<div class="pagination-block text-center">
|
|
4
|
+
<div class="progress-bar"></div>
|
|
5
|
+
<div class="wrapper dropup">
|
|
6
|
+
<i class="fa fa-2x fa-angle-double-up pointer fa-fw pagetop"></i>
|
|
7
|
+
|
|
8
|
+
<a href="#" class="dropdown-toggle d-inline-block" data-bs-toggle="dropdown" data-bs-reference="parent">
|
|
9
|
+
<span class="pagination-text"></span>
|
|
10
|
+
</a>
|
|
11
|
+
|
|
12
|
+
<i class="fa fa-2x fa-angle-double-down pointer fa-fw pagebottom"></i>
|
|
13
|
+
<ul class="dropdown-menu dropdown-menu-end" role="menu">
|
|
14
|
+
<li>
|
|
15
|
+
<div class="row">
|
|
16
|
+
<div class="col-8 post-content"></div>
|
|
17
|
+
<div class="col-4 text-end">
|
|
18
|
+
<div class="scroller-content">
|
|
19
|
+
<span class="pointer pagetop">[[topic:first-post]] <i class="fa fa-angle-double-up"></i></span>
|
|
20
|
+
<div class="scroller-container">
|
|
21
|
+
<div class="scroller-thumb">
|
|
22
|
+
<span class="thumb-text"></span>
|
|
23
|
+
<div class="scroller-thumb-icon"></div>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
<span class="pointer pagebottom">[[topic:last-post]] <i class="fa fa-angle-double-down"></i></span>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
<div class="row">
|
|
31
|
+
<div class="col-6">
|
|
32
|
+
<button id="myNextPostBtn" class="btn btn-outline-secondary form-control" disabled>[[topic:go-to-my-next-post]]</button>
|
|
33
|
+
</div>
|
|
34
|
+
<div class="col-6">
|
|
35
|
+
<input type="number" class="form-control" id="indexInput" placeholder="[[global:pagination.enter_index]]">
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
</li>
|
|
39
|
+
</ul>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
+
|
|
3
|
+
<!-- IF posts.display_moderator_tools -->
|
|
4
|
+
<li>
|
|
5
|
+
<a class="dropdown-item" component="post/edit" role="menuitem" tabindex="-1" href="#">
|
|
6
|
+
<span class="menu-icon"><i class="fa fa-fw fa-pencil"></i></span> [[topic:edit]]
|
|
7
|
+
</a>
|
|
8
|
+
</li>
|
|
9
|
+
<li <!-- IF posts.deleted -->hidden<!-- ENDIF posts.deleted -->>
|
|
10
|
+
<a class="dropdown-item" component="post/delete" role="menuitem" tabindex="-1" href="#" class="<!-- IF posts.deleted -->hidden<!-- ENDIF posts.deleted -->">
|
|
11
|
+
<span class="menu-icon"><i class="fa fa-fw fa-trash-o"></i><span> [[topic:delete]]
|
|
12
|
+
</a>
|
|
13
|
+
</li>
|
|
14
|
+
<li <!-- IF !posts.deleted -->hidden<!-- ENDIF !posts.deleted -->>
|
|
15
|
+
<a class="dropdown-item" component="post/restore" role="menuitem" tabindex="-1" href="#" class="<!-- IF !posts.deleted -->hidden<!-- ENDIF !posts.deleted -->">
|
|
16
|
+
<span class="menu-icon"><i class="fa fa-fw fa-history"></i><span> [[topic:restore]]
|
|
17
|
+
</a>
|
|
18
|
+
</li>
|
|
19
|
+
<!-- IF posts.display_purge_tools -->
|
|
20
|
+
<li <!-- IF !posts.deleted -->hidden<!-- ENDIF !posts.deleted -->>
|
|
21
|
+
<a class="dropdown-item" component="post/purge" role="menuitem" tabindex="-1" href="#" class="<!-- IF !posts.deleted -->hidden<!-- ENDIF !posts.deleted -->">
|
|
22
|
+
<span class="menu-icon"><i class="fa fa-fw fa-eraser"></i></span> [[topic:purge]]
|
|
23
|
+
</a>
|
|
24
|
+
</li>
|
|
25
|
+
<!-- END -->
|
|
26
|
+
|
|
27
|
+
<!-- IF posts.display_move_tools -->
|
|
28
|
+
<li>
|
|
29
|
+
<a class="dropdown-item" component="post/move" role="menuitem" tabindex="-1" href="#">
|
|
30
|
+
<span class="menu-icon"><i class="fa fa-fw fa-arrows"></i></span> [[topic:move]]
|
|
31
|
+
</a>
|
|
32
|
+
</li>
|
|
33
|
+
<!-- ENDIF posts.display_move_tools -->
|
|
34
|
+
|
|
35
|
+
<!-- IF posts.display_change_owner_tools -->
|
|
36
|
+
<li>
|
|
37
|
+
<a class="dropdown-item" component="post/change-owner" role="menuitem" tabindex="-1" href="#">
|
|
38
|
+
<span class="menu-icon"><i class="fa fa-fw fa-user"></i></span> [[topic:change-owner]]
|
|
39
|
+
</a>
|
|
40
|
+
</li>
|
|
41
|
+
<!-- ENDIF posts.display_change_owner_tools -->
|
|
42
|
+
|
|
43
|
+
<!-- IF posts.ip -->
|
|
44
|
+
<li>
|
|
45
|
+
<a class="dropdown-item" component="post/copy-ip" role="menuitem" tabindex="-1" href="#" data-clipboard-text="{posts.ip}">
|
|
46
|
+
<span class="menu-icon" ><i class="fa fa-fw fa-copy"></i></span> [[topic:copy-ip]] {posts.ip}
|
|
47
|
+
</a>
|
|
48
|
+
</li>
|
|
49
|
+
<!-- IF posts.display_ip_ban -->
|
|
50
|
+
<li>
|
|
51
|
+
<a class="dropdown-item" component="post/ban-ip" role="menuitem" tabindex="-1" href="#" data-ip="{posts.ip}">
|
|
52
|
+
<span class="menu-icon"><i class="fa fa-fw fa-ban"></i></span> [[topic:ban-ip]] {posts.ip}
|
|
53
|
+
</a>
|
|
54
|
+
</li>
|
|
55
|
+
<!-- ENDIF posts.display_ip_ban -->
|
|
56
|
+
<!-- ENDIF posts.ip -->
|
|
57
|
+
<!-- ENDIF posts.display_moderator_tools -->
|
|
58
|
+
|
|
59
|
+
{{{each posts.tools}}}
|
|
60
|
+
<li {{{ if ./disabled }}}class="disabled" {{{ end }}}>
|
|
61
|
+
<a class="dropdown-item" {{{ if ./action}}}component="{./action}"{{{ end }}} role="menuitem" tabindex="-1" href="{{{ if ./href }}}{./href}{{{ else }}}#{{{ end }}}">
|
|
62
|
+
<span class="menu-icon"><i class="fa fa-fw {posts.tools.icon}"></i></span> {{posts.tools.html}}
|
|
63
|
+
</a>
|
|
64
|
+
</li>
|
|
65
|
+
{{{end}}}
|
|
66
|
+
|
|
67
|
+
<!-- IF !posts.deleted -->
|
|
68
|
+
<!-- IF posts.display_history -->
|
|
69
|
+
<li>
|
|
70
|
+
<a class="dropdown-item" component="post/view-history" role="menuitem" tabindex="-1" href="#">
|
|
71
|
+
<span class="menu-icon"><i class="fa fa-fw fa-history"></i></span> [[topic:view-history]]
|
|
72
|
+
</a>
|
|
73
|
+
</li>
|
|
74
|
+
<!-- END -->
|
|
75
|
+
|
|
76
|
+
{{{ if config.loggedIn }}}
|
|
77
|
+
<li>
|
|
78
|
+
<a class="dropdown-item" component="post/bookmark" role="menuitem" tabindex="-1" href="#" data-bookmarked="{posts.bookmarked}">
|
|
79
|
+
<span class="menu-icon">
|
|
80
|
+
<i component="post/bookmark/on" class="fa fa-fw fa-heart <!-- IF !posts.bookmarked -->hidden<!-- ENDIF !posts.bookmarked -->"></i>
|
|
81
|
+
<i component="post/bookmark/off" class="fa fa-fw fa-heart-o <!-- IF posts.bookmarked -->hidden<!-- ENDIF posts.bookmarked -->"></i>
|
|
82
|
+
</span>
|
|
83
|
+
<span class="bookmark-text">[[topic:bookmark]]</span>
|
|
84
|
+
<span component="post/bookmark-count" class="bookmarkCount badge" data-bookmarks="{posts.bookmarks}">{posts.bookmarks}</span>
|
|
85
|
+
</a>
|
|
86
|
+
</li>
|
|
87
|
+
{{{ end }}}
|
|
88
|
+
|
|
89
|
+
<li>
|
|
90
|
+
<a class="dropdown-item" role="menuitem" tabindex="-1" href="#" data-clipboard-text="{posts.absolute_url}">
|
|
91
|
+
<i class="fa fa-fw fa-link"></i> [[topic:copy-permalink]]
|
|
92
|
+
</a>
|
|
93
|
+
</li>
|
|
94
|
+
|
|
95
|
+
<!-- IF postSharing.length -->
|
|
96
|
+
<!-- IF config.loggedIn --><li class="dropdown-divider"></li><!-- ENDIF config.loggedIn -->
|
|
97
|
+
<li class="dropdown-header">[[topic:share_this_post]]</li>
|
|
98
|
+
<!-- ENDIF postSharing.length -->
|
|
99
|
+
{{{each postSharing}}}
|
|
100
|
+
<li>
|
|
101
|
+
<a class="dropdown-item" role="menuitem" component="share/{postSharing.id}" tabindex="-1" href="#"><span class="menu-icon"><i class="fa fa-fw {postSharing.class}"></i></span> {postSharing.name}</a>
|
|
102
|
+
</li>
|
|
103
|
+
{{{end}}}
|
|
104
|
+
<!-- ENDIF !posts.deleted -->
|
|
105
|
+
|
|
106
|
+
{{{ if posts.display_flag_tools }}}
|
|
107
|
+
<li class="dropdown-divider"></li>
|
|
108
|
+
|
|
109
|
+
<li {{{ if posts.flags.flagged }}}hidden{{{ end }}}>
|
|
110
|
+
<a class="dropdown-item" component="post/flag" role="menuitem" tabindex="-1" href="#"><i class="fa fa-fw fa-flag"></i> [[topic:flag-post]]</a>
|
|
111
|
+
</li>
|
|
112
|
+
<li {{{ if !posts.flags.flagged }}}hidden{{{ end }}} class="disabled text-muted">
|
|
113
|
+
<a class="dropdown-item" component="post/already-flagged" role="menuitem" tabindex="-1" href="#"><i class="fa fa-fw fa-flag"></i> [[topic:already-flagged]]</a>
|
|
114
|
+
</li>
|
|
115
|
+
|
|
116
|
+
{{{ if (!posts.selfPost && posts.uid) }}}
|
|
117
|
+
<li>
|
|
118
|
+
<a class="dropdown-item" component="post/flagUser" role="menuitem" tabindex="-1" href="#"><i class="fa fa-fw fa-flag"></i> [[topic:flag-user]]</a>
|
|
119
|
+
</li>
|
|
120
|
+
{{{ end }}}
|
|
121
|
+
{{{ end }}}
|
|
122
|
+
|
|
123
|
+
<!-- IF posts.display_moderator_tools -->
|
|
124
|
+
{{{ if posts.flags.exists }}}
|
|
125
|
+
<li>
|
|
126
|
+
<a class="dropdown-item" role="menuitem" tabindex="-1" href="{config.relative_path}/flags/{posts.flags.flagId}"><i class="fa fa-fw fa-exclamation-circle"></i> [[topic:view-flag-report]]</a>
|
|
127
|
+
</li>
|
|
128
|
+
{{{ if (posts.flags.state == "open") }}}
|
|
129
|
+
<li>
|
|
130
|
+
<a class="dropdown-item" component="post/flagResolve" data-flagId="{posts.flags.flagId}" role="menuitem" tabindex="-1" href="#"><i class="fa fa-fw fa-check"></i> [[topic:resolve-flag]]</a>
|
|
131
|
+
</li>
|
|
132
|
+
{{{ end }}}
|
|
133
|
+
{{{ end }}}
|
|
134
|
+
<!-- ENDIF posts.display_moderator_tools -->
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
+
|
|
3
|
+
<span component="post/tools" class="dropdown moderator-tools bottom-sheet d-inline-block<!-- IF !posts.display_post_menu -->hidden<!-- ENDIF !posts.display_post_menu -->">
|
|
4
|
+
<a class="dropdown-toggle d-block" href="#" data-bs-toggle="dropdown"><i class="fa fa-fw fa-ellipsis-v"></i></a>
|
|
5
|
+
<ul class="dropdown-menu dropdown-menu-end" role="menu"></ul>
|
|
6
|
+
</span>
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
+
|
|
3
|
+
<div class="clearfix post-header">
|
|
4
|
+
<div class="icon float-start">
|
|
5
|
+
<a href="<!-- IF posts.user.userslug -->{config.relative_path}/user/{posts.user.userslug}<!-- ELSE -->#<!-- ENDIF posts.user.userslug -->">
|
|
6
|
+
{buildAvatar(posts.user, "48px", true, "", "user/picture")}
|
|
7
|
+
<i component="user/status" class="fa fa-circle status {posts.user.status}" title="[[global:{posts.user.status}]]"></i>
|
|
8
|
+
</a>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<small class="d-flex">
|
|
12
|
+
<div class="d-flex align-items-center gap-1 flex-wrap w-100">
|
|
13
|
+
<strong class="text-nowrap">
|
|
14
|
+
<a href="<!-- IF posts.user.userslug -->{config.relative_path}/user/{posts.user.userslug}<!-- ELSE -->#<!-- ENDIF posts.user.userslug -->" itemprop="author" data-username="{posts.user.username}" data-uid="{posts.user.uid}">{posts.user.displayname}</a>
|
|
15
|
+
</strong>
|
|
16
|
+
|
|
17
|
+
{{{ each posts.user.selectedGroups }}}
|
|
18
|
+
{{{ if posts.user.selectedGroups.slug }}}
|
|
19
|
+
<!-- IMPORT partials/groups/badge.tpl -->
|
|
20
|
+
{{{ end }}}
|
|
21
|
+
{{{ end }}}
|
|
22
|
+
|
|
23
|
+
<!-- IF posts.user.banned -->
|
|
24
|
+
<span class="badge bg-danger">[[user:banned]]</span>
|
|
25
|
+
<!-- ENDIF posts.user.banned -->
|
|
26
|
+
|
|
27
|
+
<span class="visible-xs-inline-block visible-sm-inline-block visible-md-inline-block visible-lg-inline-block">
|
|
28
|
+
<!-- IF posts.toPid -->
|
|
29
|
+
<a component="post/parent" class="btn btn-sm btn-outline-secondary hidden-xs" data-topid="{posts.toPid}" href="{config.relative_path}/post/{posts.toPid}"><i class="fa fa-reply"></i> @<!-- IF posts.parent.username -->{posts.parent.username}<!-- ELSE -->[[global:guest]]<!-- ENDIF posts.parent.username --></a>
|
|
30
|
+
<!-- ENDIF posts.toPid -->
|
|
31
|
+
|
|
32
|
+
<span>
|
|
33
|
+
<!-- IF posts.user.custom_profile_info.length -->
|
|
34
|
+
|
|
|
35
|
+
{{{each posts.user.custom_profile_info}}}
|
|
36
|
+
{posts.user.custom_profile_info.content}
|
|
37
|
+
{{{end}}}
|
|
38
|
+
<!-- ENDIF posts.user.custom_profile_info.length -->
|
|
39
|
+
</span>
|
|
40
|
+
</span>
|
|
41
|
+
<div class="d-flex align-items-center gap-1 flex-grow-1 justify-content-end">
|
|
42
|
+
<span>
|
|
43
|
+
<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>
|
|
44
|
+
|
|
45
|
+
<span data-editor="{posts.editor.userslug}" component="post/editor" class="hidden">[[global:last_edited_by, {posts.editor.username}]] <span class="timeago" title="{posts.editedISO}"></span></span>
|
|
46
|
+
|
|
47
|
+
<span class="visible-xs-inline-block visible-sm-inline-block visible-md-inline-block visible-lg-inline-block">
|
|
48
|
+
<a class="permalink text-muted" href="{config.relative_path}/post/{posts.pid}"><span class="timeago" title="{posts.timestampISO}"></span></a>
|
|
49
|
+
</span>
|
|
50
|
+
</span>
|
|
51
|
+
<span class="bookmarked"><i class="fa fa-bookmark-o"></i></span>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
</small>
|
|
55
|
+
</div>
|
|
56
|
+
|
|
57
|
+
<br />
|
|
58
|
+
|
|
59
|
+
<div class="content" component="post/content" itemprop="text">
|
|
60
|
+
{posts.content}
|
|
61
|
+
</div>
|
|
62
|
+
|
|
63
|
+
<div class="post-footer">
|
|
64
|
+
{{{ if posts.user.signature }}}
|
|
65
|
+
<div component="post/signature" data-uid="{posts.user.uid}" class="post-signature">{posts.user.signature}</div>
|
|
66
|
+
{{{ end }}}
|
|
67
|
+
|
|
68
|
+
<div class="clearfix">
|
|
69
|
+
{{{ if !hideReplies }}}
|
|
70
|
+
<a component="post/reply-count" data-target-component="post/replies/container" href="#" class="threaded-replies user-select-none float-start text-muted {{{ if !posts.replies.count }}}hidden{{{ end }}}">
|
|
71
|
+
<span component="post/reply-count/avatars" class="avatars d-inline-flex gap-1 align-items-top hidden-xs {{{ if posts.replies.hasMore }}}hasMore{{{ end }}}">
|
|
72
|
+
{{{each posts.replies.users}}}
|
|
73
|
+
<span>{buildAvatar(posts.replies.users, "16px", true, "")}</span>
|
|
74
|
+
{{{end}}}
|
|
75
|
+
{{{ if posts.replies.hasMore}}}
|
|
76
|
+
<span><i class="fa fa-ellipsis"></i></span>
|
|
77
|
+
{{{ end }}}
|
|
78
|
+
</span>
|
|
79
|
+
|
|
80
|
+
<span class="replies-count small" component="post/reply-count/text" data-replies="{posts.replies.count}">{posts.replies.text}</span>
|
|
81
|
+
<span class="replies-last hidden-xs small">[[topic:last_reply_time]] <span class="timeago" title="{posts.replies.timestampISO}"></span></span>
|
|
82
|
+
|
|
83
|
+
<i class="fa fa-fw fa-chevron-right" component="post/replies/open"></i>
|
|
84
|
+
<i class="fa fa-fw fa-chevron-down hidden" component="post/replies/close"></i>
|
|
85
|
+
<i class="fa fa-fw fa-spin fa-spinner hidden" component="post/replies/loading"></i>
|
|
86
|
+
</a>
|
|
87
|
+
{{{ end }}}
|
|
88
|
+
|
|
89
|
+
<small class="float-end">
|
|
90
|
+
<!-- IMPORT partials/topic/reactions.tpl -->
|
|
91
|
+
<span class="post-tools">
|
|
92
|
+
<a component="post/reply" href="#" class="user-select-none <!-- IF !privileges.topics:reply -->hidden<!-- ENDIF !privileges.topics:reply -->">[[topic:reply]]</a>
|
|
93
|
+
<a component="post/quote" href="#" class="user-select-none <!-- IF !privileges.topics:reply -->hidden<!-- ENDIF !privileges.topics:reply -->">[[topic:quote]]</a>
|
|
94
|
+
</span>
|
|
95
|
+
|
|
96
|
+
<!-- IF !reputation:disabled -->
|
|
97
|
+
<span class="votes">
|
|
98
|
+
<a component="post/upvote" href="#" class="<!-- IF posts.upvoted -->upvoted<!-- ENDIF posts.upvoted -->">
|
|
99
|
+
<i class="fa fa-chevron-up"></i>
|
|
100
|
+
</a>
|
|
101
|
+
|
|
102
|
+
<span component="post/vote-count" data-votes="{posts.votes}">{posts.votes}</span>
|
|
103
|
+
|
|
104
|
+
<!-- IF !downvote:disabled -->
|
|
105
|
+
<a component="post/downvote" href="#" class="<!-- IF posts.downvoted -->downvoted<!-- ENDIF posts.downvoted -->">
|
|
106
|
+
<i class="fa fa-chevron-down"></i>
|
|
107
|
+
</a>
|
|
108
|
+
<!-- ENDIF !downvote:disabled -->
|
|
109
|
+
</span>
|
|
110
|
+
<!-- ENDIF !reputation:disabled -->
|
|
111
|
+
|
|
112
|
+
<!-- IMPORT partials/topic/post-menu.tpl -->
|
|
113
|
+
</small>
|
|
114
|
+
</div>
|
|
115
|
+
<div component="post/replies/container"></div>
|
|
116
|
+
</div>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
+
|
|
3
|
+
<!-- IF privileges.topics:reply -->
|
|
4
|
+
<div component="topic/quickreply/container" class="clearfix quick-reply">
|
|
5
|
+
<div class="icon float-start hidden-xs">
|
|
6
|
+
<a data-uid="{loggedInUser.uid}" href="{{{ if loggedInUser.userslug }}}{config.relative_path}/user/{loggedInUser.userslug}{{{ else }}}#{{{ end }}}">
|
|
7
|
+
{buildAvatar(loggedInUser, "48px", true, "", "user/picture")}
|
|
8
|
+
{{{ if loggedInUser.status }}}
|
|
9
|
+
<i component="user/status" class="fa fa-circle status {loggedInUser.status}" title="[[global:{loggedInUser.status}]]"></i>
|
|
10
|
+
{{{ end }}}
|
|
11
|
+
</a>
|
|
12
|
+
</div>
|
|
13
|
+
<form method="post" action="{config.relative_path}/compose">
|
|
14
|
+
<input type="hidden" name="tid" value="{tid}" />
|
|
15
|
+
<input type="hidden" name="_csrf" value="{config.csrf_token}" />
|
|
16
|
+
<div class="quickreply-message">
|
|
17
|
+
<textarea name="content" component="topic/quickreply/text" class="form-control mousetrap" rows="5" placeholder="[[modules:composer.textarea.placeholder]]"></textarea>
|
|
18
|
+
<div class="imagedrop"><div>[[topic:composer.drag_and_drop_images]]</div></div>
|
|
19
|
+
</div>
|
|
20
|
+
<div class="btn-group float-end">
|
|
21
|
+
<button type="submit" component="topic/quickreply/button" class="btn btn-primary">[[topic:post-quick-reply]]</button>
|
|
22
|
+
<button type="submit" component="topic/quickreply/expand" class="btn btn-outline-primary" formmethod="get"><i class="fa fa-expand"></i></button>
|
|
23
|
+
</div>
|
|
24
|
+
</form>
|
|
25
|
+
<form component="topic/quickreply/upload" method="post" enctype="multipart/form-data">
|
|
26
|
+
<input type="file" name="files[]" multiple class="hidden"/>
|
|
27
|
+
</form>
|
|
28
|
+
|
|
29
|
+
</div>
|
|
30
|
+
<!-- ENDIF privileges.topics:reply -->
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
+
|
|
3
|
+
<div component="topic/reply/container" class="btn-group action-bar bottom-sheet <!-- IF !privileges.topics:reply -->hidden<!-- ENDIF !privileges.topics:reply -->">
|
|
4
|
+
<a href="{config.relative_path}/compose?tid={tid}&title={title}" class="btn btn-sm btn-primary" component="topic/reply" data-ajaxify="false" role="button"><i class="fa fa-reply visible-xs-inline"></i><span class="visible-sm-inline visible-md-inline visible-lg-inline"> [[topic:reply]]</span></a>
|
|
5
|
+
<button type="button" class="btn btn-sm btn-primary dropdown-toggle" data-bs-toggle="dropdown">
|
|
6
|
+
<span class="caret"></span>
|
|
7
|
+
</button>
|
|
8
|
+
<ul class="dropdown-menu dropdown-menu-end" role="menu">
|
|
9
|
+
<li><a class="dropdown-item" href="#" component="topic/reply-as-topic">[[topic:reply-as-topic]]</a></li>
|
|
10
|
+
</ul>
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
<!-- IF loggedIn -->
|
|
14
|
+
<!-- IF !privileges.topics:reply -->
|
|
15
|
+
<!-- IF locked -->
|
|
16
|
+
<a component="topic/reply/locked" class="btn btn-sm btn-primary" disabled><i class="fa fa-lock"></i> [[topic:locked]]</a>
|
|
17
|
+
<!-- ENDIF locked -->
|
|
18
|
+
<!-- ENDIF !privileges.topics:reply -->
|
|
19
|
+
|
|
20
|
+
<!-- IF !locked -->
|
|
21
|
+
<a component="topic/reply/locked" class="btn btn-sm btn-primary hidden" disabled><i class="fa fa-lock"></i> [[topic:locked]]</a>
|
|
22
|
+
<!-- ENDIF !locked -->
|
|
23
|
+
|
|
24
|
+
<!-- ELSE -->
|
|
25
|
+
|
|
26
|
+
<!-- IF !privileges.topics:reply -->
|
|
27
|
+
<a component="topic/reply/guest" href="{config.relative_path}/login" class="btn btn-sm btn-primary">[[topic:guest-login-reply]]</a>
|
|
28
|
+
<!-- ENDIF !privileges.topics:reply -->
|
|
29
|
+
<!-- ENDIF loggedIn -->
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
+
|
|
3
|
+
<div component="selection/tooltip" class="selection-tooltip-container position-absolute card card-body p-1 rounded-1 mt-2" style="z-index: 1;">
|
|
4
|
+
<button component="selection/tooltip/quote" class="btn btn-sm btn-primary quote-tooltip-btn">[[topic:quote]]</button>
|
|
5
|
+
</div>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
+
|
|
3
|
+
<div title="[[topic:sort_by]]" class="btn-group bottom-sheet hidden-xs" component="thread/sort">
|
|
4
|
+
<button class="btn btn-sm btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" type="button">
|
|
5
|
+
<span><i class="fa fa-fw fa-sort"></i></span></button>
|
|
6
|
+
<ul class="dropdown-menu dropdown-menu-end">
|
|
7
|
+
<li><a class="dropdown-item" href="#" class="oldest_to_newest" data-sort="oldest_to_newest"><i class="fa fa-fw"></i> [[topic:oldest_to_newest]]</a></li>
|
|
8
|
+
<li><a class="dropdown-item" href="#" class="newest_to_oldest" data-sort="newest_to_oldest"><i class="fa fa-fw"></i> [[topic:newest_to_oldest]]</a></li>
|
|
9
|
+
<li><a class="dropdown-item" href="#" class="most_votes" data-sort="most_votes"><i class="fa fa-fw"></i> [[topic:most_votes]]</a></li>
|
|
10
|
+
</ul>
|
|
11
|
+
</div>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
+
|
|
3
|
+
<div class="stats text-muted">
|
|
4
|
+
<i class="fa fa-fw fa-user" title="[[global:posters]]"></i>
|
|
5
|
+
<span title="{postercount}" class="human-readable-number">{postercount}</span>
|
|
6
|
+
</div>
|
|
7
|
+
<div class="stats text-muted">
|
|
8
|
+
<i class="fa fa-fw fa-pencil" title="[[global:posts]]"></i>
|
|
9
|
+
<span component="topic/post-count" title="{postcount}" class="human-readable-number">{postcount}</span>
|
|
10
|
+
</div>
|
|
11
|
+
<div class="stats text-muted">
|
|
12
|
+
<i class="fa fa-fw fa-eye" title="[[global:views]]"></i>
|
|
13
|
+
<span class="human-readable-number" title="{viewcount}">{viewcount}</span>
|
|
14
|
+
</div>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
+
|
|
3
|
+
{{{ if privileges.editable }}}
|
|
4
|
+
<li <!-- IF locked -->hidden<!-- ENDIF locked -->><a component="topic/lock" href="#" class="dropdown-item <!-- IF locked -->hidden<!-- ENDIF locked -->"><i class="fa fa-fw fa-lock"></i> [[topic:thread_tools.lock]]</a></li>
|
|
5
|
+
<li <!-- IF !locked -->hidden<!-- ENDIF !locked -->><a component="topic/unlock" href="#" class="dropdown-item <!-- IF !locked -->hidden<!-- ENDIF !locked -->"><i class="fa fa-fw fa-unlock"></i> [[topic:thread_tools.unlock]]</a></li>
|
|
6
|
+
<li <!-- IF pinned -->hidden<!-- ENDIF pinned -->><a component="topic/pin" href="#" class="dropdown-item <!-- IF pinned -->hidden<!-- ENDIF pinned -->"><i class="fa fa-fw fa-thumb-tack"></i> [[topic:thread_tools.pin]]</a></li>
|
|
7
|
+
<li <!-- IF !pinned -->hidden<!-- ENDIF !pinned -->><a component="topic/unpin" href="#" class="dropdown-item <!-- IF !pinned -->hidden<!-- ENDIF !pinned -->"><i class="fa fa-fw fa-thumb-tack fa-rotate-90"></i> [[topic:thread_tools.unpin]]</a></li>
|
|
8
|
+
|
|
9
|
+
<li><a component="topic/move" class="dropdown-item" href="#"><i class="fa fa-fw fa-arrows"></i> [[topic:thread_tools.move]]</a></li>
|
|
10
|
+
<li><a component="topic/merge" class="dropdown-item" href="#"><i class="fa fa-fw fa-code-fork"></i> [[topic:thread_tools.merge]]</a></li>
|
|
11
|
+
<li><a component="topic/fork" class="dropdown-item" href="#"><i class="fa fa-fw fa-code-fork"></i> [[topic:thread_tools.fork]]</a></li>
|
|
12
|
+
{{{ if !scheduled }}}
|
|
13
|
+
<li><a component="topic/move-posts" class="dropdown-item" href="#"><i class="fa fa-fw fa-arrows"></i> [[topic:thread_tools.move-posts]]</a></li>
|
|
14
|
+
{{{ end }}}
|
|
15
|
+
<li><a component="topic/mark-unread-for-all" class="dropdown-item" href="#"><i class="fa fa-fw fa-inbox"></i> [[topic:thread_tools.markAsUnreadForAll]]</a></li>
|
|
16
|
+
<li class="dropdown-divider"></li>
|
|
17
|
+
{{{ end }}}
|
|
18
|
+
|
|
19
|
+
<!-- IF privileges.deletable -->
|
|
20
|
+
<li <!-- IF deleted -->hidden<!-- ENDIF deleted -->><a component="topic/delete" href="#" class="dropdown-item <!-- IF deleted -->hidden<!-- ENDIF deleted -->"><i class="fa fa-fw fa-trash-o"></i> [[topic:thread_tools.delete]]</a></li>
|
|
21
|
+
{{{ if !scheduled }}}
|
|
22
|
+
<li <!-- IF !deleted -->hidden<!-- ENDIF !deleted -->><a component="topic/restore" href="#" class="dropdown-item <!-- IF !deleted -->hidden<!-- ENDIF !deleted -->"><i class="fa fa-fw fa-history"></i> [[topic:thread_tools.restore]]</a></li>
|
|
23
|
+
{{{ end }}}
|
|
24
|
+
<!-- IF privileges.purge -->
|
|
25
|
+
<li <!-- IF !deleted -->hidden<!-- ENDIF !deleted -->><a component="topic/purge" href="#" class="dropdown-item <!-- IF !deleted -->hidden<!-- ENDIF !deleted -->"><i class="fa fa-fw fa-eraser"></i> [[topic:thread_tools.purge]]</a></li>
|
|
26
|
+
<!-- END -->
|
|
27
|
+
<!-- IF privileges.isAdminOrMod -->
|
|
28
|
+
<li><a component="topic/delete/posts" class="dropdown-item" href="#"><i class="fa fa-fw fa-trash-o"></i> [[topic:thread_tools.delete-posts]]</a></li>
|
|
29
|
+
<!-- ENDIF privileges.isAdminOrMod -->
|
|
30
|
+
|
|
31
|
+
{{{each thread_tools}}}
|
|
32
|
+
<li><a href="#" class="dropdown-item {thread_tools.class}"><i class="fa fa-fw {thread_tools.icon}"></i> {thread_tools.title}</a></li>
|
|
33
|
+
{{{end}}}
|
|
34
|
+
<!-- ENDIF privileges.deletable -->
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
+
|
|
3
|
+
<!-- IF config.loggedIn -->
|
|
4
|
+
<div class="btn-group topic-watch-dropdown bottom-sheet" component="topic/watch"
|
|
5
|
+
data-bs-toggle="tooltip"
|
|
6
|
+
{{{if isFollowing}}}title="[[topic:watching]]"{{{end}}}
|
|
7
|
+
{{{if isNotFollowing}}}title="[[topic:not-watching]]"{{{end}}}
|
|
8
|
+
{{{if isIgnoring}}}title="[[topic:ignoring]]"{{{end}}}
|
|
9
|
+
>
|
|
10
|
+
<button class="btn btn-sm btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" type="button">
|
|
11
|
+
<span component="topic/following/menu" <!-- IF !isFollowing -->class="hidden"<!-- ENDIF !isFollowing -->><i class="fa fa-fw fa-bell-o"></i></span>
|
|
12
|
+
|
|
13
|
+
<span component="topic/not-following/menu" <!-- IF !isNotFollowing -->class="hidden"<!-- ENDIF !isNotFollowing -->><i class="fa fa-fw fa-bell-slash-o"></i></span>
|
|
14
|
+
|
|
15
|
+
<span component="topic/ignoring/menu" <!-- IF !isIgnoring -->class="hidden"<!-- ENDIF !isIgnoring -->><i class="fa fa-fw fa-eye-slash"></i></span>
|
|
16
|
+
|
|
17
|
+
</button>
|
|
18
|
+
<ul class="dropdown-menu dropdown-menu-end">
|
|
19
|
+
<li><a class="dropdown-item" href="#" component="topic/following"><i component="topic/following/check" class="fa fa-fw <!-- IF isFollowing -->fa-check<!-- ENDIF isFollowing -->"></i><i class="fa fa-fw fa-bell-o"></i> [[topic:watching]]<p class="help-text hidden-xs"><small>[[topic:watching.description]]</small></p></a></li>
|
|
20
|
+
<li><a class="dropdown-item" href="#" component="topic/not-following"><i component="topic/not-following/check" class="fa fa-fw <!-- IF isNotFollowing -->fa-check<!-- ENDIF isNotFollowing -->"></i><i class="fa fa-fw fa-bell-slash-o"></i> [[topic:not-watching]]<p class="help-text hidden-xs"><small>[[topic:not-watching.description]]</small></p></a></li>
|
|
21
|
+
<li><a class="dropdown-item" href="#" component="topic/ignoring"><i component="topic/ignoring/check" class="fa fa-fw <!-- IF isIgnoring -->fa-check<!-- ENDIF isIgnoring -->"></i><i class="fa fa-fw fa-eye-slash"></i> [[topic:ignoring]]<p class="help-text hidden-xs"><small>[[topic:ignoring.description]]</small></p></a></li>
|
|
22
|
+
</ul>
|
|
23
|
+
</div>
|
|
24
|
+
<!-- ENDIF config.loggedIn -->
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
+
|
|
3
|
+
<div class="btn-group bottom-sheet{{{ if !filters.length }}} hidden{{{ end }}}">
|
|
4
|
+
<button type="button" class="btn btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown">
|
|
5
|
+
<span class="visible-sm-inline visible-md-inline visible-lg-inline">{selectedFilter.name}</span><span class="visible-xs-inline"><i class="fa fa-fw {selectedFilter.icon}"></i></span> <span class="caret"></span>
|
|
6
|
+
</button>
|
|
7
|
+
<ul class="dropdown-menu dropdown-menu-end" role="menu">
|
|
8
|
+
{{{each filters}}}
|
|
9
|
+
<li role="presentation" class="category {{{if filters.selected}}}selected{{{end}}}">
|
|
10
|
+
<a class="dropdown-item" role="menu-item" href="{config.relative_path}/{filters.url}"><i class="fa fa-fw {{{ if filters.selected }}}fa-check{{{ end }}}"></i>{filters.name}</a>
|
|
11
|
+
</li>
|
|
12
|
+
{{{end}}}
|
|
13
|
+
</ul>
|
|
14
|
+
</div>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
+
|
|
3
|
+
<div class="btn-group bottom-sheet {{{ if !terms.length }}}hidden{{{ end }}}">
|
|
4
|
+
<button type="button" class="btn btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown">
|
|
5
|
+
{selectedTerm.name} <span class="caret"></span>
|
|
6
|
+
</button>
|
|
7
|
+
<ul class="dropdown-menu dropdown-menu-end" role="menu">
|
|
8
|
+
{{{each terms}}}
|
|
9
|
+
<li role="presentation" class="category">
|
|
10
|
+
<a class="dropdown-item" role="menu-item" href="{config.relative_path}/{terms.url}"><i class="fa fa-fw {{{ if terms.selected }}}fa-check{{{ end }}}"></i>{terms.name}</a>
|
|
11
|
+
</li>
|
|
12
|
+
{{{end}}}
|
|
13
|
+
</ul>
|
|
14
|
+
</div>
|