nodebb-theme-harmony 1.0.0-beta.6 → 1.0.0-beta.61
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/languages/en-GB/harmony.json +5 -1
- package/library.js +21 -7
- package/package.json +1 -1
- package/public/harmony.js +148 -9
- package/public/settings.js +1 -0
- package/scss/chats.scss +44 -25
- package/scss/common.scss +54 -7
- package/scss/harmony.scss +2 -0
- package/scss/mixins.scss +7 -3
- package/scss/modals.scss +6 -1
- package/scss/modules/bottom-sheet.scss +1 -1
- package/scss/modules/composer.scss +0 -4
- package/scss/modules/cover.scss +1 -11
- package/scss/modules/paginator.scss +24 -0
- package/scss/modules/topics-list.scss +6 -0
- package/scss/overrides.scss +3 -1
- package/scss/search.scss +8 -0
- package/scss/sidebar.scss +16 -7
- package/scss/topic.scss +24 -12
- package/templates/account/blocks.tpl +35 -41
- package/templates/account/categories.tpl +23 -30
- package/templates/account/consent.tpl +66 -10
- package/templates/account/edit/password.tpl +25 -30
- package/templates/account/edit/username.tpl +21 -26
- package/templates/account/edit.tpl +105 -116
- package/templates/account/followers.tpl +12 -19
- package/templates/account/following.tpl +12 -18
- package/templates/account/groups.tpl +12 -17
- package/templates/account/info.tpl +178 -206
- package/templates/account/posts.tpl +31 -36
- package/templates/account/profile.tpl +66 -73
- package/templates/account/sessions.tpl +8 -30
- package/templates/account/settings.tpl +193 -198
- package/templates/account/theme.tpl +34 -25
- package/templates/account/topics.tpl +33 -38
- package/templates/account/uploads.tpl +33 -40
- package/templates/admin/plugins/harmony.tpl +17 -3
- package/templates/categories.tpl +1 -1
- package/templates/category.tpl +12 -13
- package/templates/chats.tpl +5 -6
- package/templates/flags/detail.tpl +24 -25
- package/templates/flags/list.tpl +11 -11
- package/templates/footer.tpl +2 -2
- package/templates/groups/details.tpl +20 -17
- package/templates/groups/members.tpl +0 -2
- package/templates/header.tpl +1 -1
- package/templates/login.tpl +2 -2
- package/templates/partials/account/footer.tpl +3 -0
- package/templates/partials/account/header.tpl +78 -81
- package/templates/partials/account/session-list.tpl +18 -0
- package/templates/partials/breadcrumbs.tpl +6 -6
- package/templates/partials/categories/item.tpl +20 -19
- package/templates/partials/categories/lastpost.tpl +2 -2
- package/templates/partials/{category-filter-content.tpl → category/filter-dropdown-content.tpl} +8 -6
- package/templates/partials/{category-selector-content.tpl → category/selector-dropdown-content.tpl} +3 -3
- package/templates/partials/category/subcategory.tpl +1 -1
- package/templates/partials/category/tags.tpl +0 -2
- package/templates/partials/category/watch.tpl +28 -4
- package/templates/partials/chats/message-window.tpl +10 -7
- package/templates/partials/chats/message.tpl +4 -6
- package/templates/partials/cookie-consent.tpl +5 -5
- package/templates/partials/flags/filters.tpl +1 -1
- package/templates/partials/groups/admin.tpl +4 -4
- package/templates/partials/groups/badge.tpl +1 -1
- package/templates/partials/groups/memberlist.tpl +1 -1
- package/templates/partials/groups/sidebar-left.tpl +1 -1
- package/templates/partials/header/brand.tpl +1 -1
- package/templates/partials/mobile-footer.tpl +69 -64
- package/templates/partials/paginator.tpl +11 -9
- package/templates/partials/post_bar.tpl +6 -5
- package/templates/partials/posts_list_item.tpl +5 -5
- package/templates/partials/quick-search-results.tpl +2 -2
- package/templates/partials/search-filters.tpl +184 -0
- package/templates/partials/search-results.tpl +28 -32
- package/templates/partials/sidebar/chats.tpl +5 -25
- package/templates/partials/sidebar/drafts.tpl +42 -34
- package/templates/partials/sidebar/logged-in-menu.tpl +5 -5
- package/templates/partials/sidebar/logged-out-menu.tpl +1 -1
- package/templates/partials/sidebar/notifications.tpl +28 -7
- package/templates/partials/sidebar/search.tpl +1 -1
- package/templates/partials/sidebar/user-menu.tpl +1 -1
- package/templates/partials/sidebar-left.tpl +13 -10
- package/templates/partials/sidebar-right.tpl +1 -1
- package/templates/partials/skin-switcher.tpl +2 -2
- package/templates/partials/tags_list.tpl +6 -4
- package/templates/partials/topic/browsing-users.tpl +0 -2
- package/templates/partials/topic/event.tpl +1 -1
- package/templates/partials/topic/navigation-post.tpl +5 -9
- package/templates/partials/topic/navigator-mobile.tpl +62 -0
- package/templates/partials/topic/post-editor.tpl +0 -2
- package/templates/partials/topic/post-menu-list.tpl +35 -37
- package/templates/partials/topic/post-menu.tpl +10 -10
- package/templates/partials/topic/post.tpl +27 -10
- package/templates/partials/topic/quickreply.tpl +6 -6
- package/templates/partials/topic/reply-button.tpl +1 -1
- package/templates/partials/topic/topic-menu-list.tpl +16 -18
- package/templates/partials/topic/watch.tpl +28 -4
- package/templates/partials/topic-list-bar.tpl +8 -8
- package/templates/partials/topics_list.tpl +40 -38
- package/templates/partials/users/filter-dropdown-content.tpl +20 -0
- package/templates/popular.tpl +1 -1
- package/templates/post-queue.tpl +120 -0
- package/templates/recent.tpl +1 -1
- package/templates/register.tpl +2 -2
- package/templates/search.tpl +39 -177
- package/templates/tags.tpl +1 -1
- package/templates/top.tpl +1 -1
- package/templates/topic.tpl +7 -7
- package/templates/unread.tpl +1 -1
- package/templates/users.tpl +1 -1
- package/templates/modules/usercard.tpl +0 -39
- package/templates/partials/acceptTos.tpl +0 -11
- package/templates/partials/category-filter-right.tpl +0 -5
- package/templates/partials/category-filter.tpl +0 -3
- package/templates/partials/category-selector-right.tpl +0 -5
- package/templates/partials/category-selector.tpl +0 -3
- package/templates/partials/slideout-menu.tpl +0 -6
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
{{{ if (!./index && widgets.mainpost-header.length) }}}
|
|
2
|
+
<div data-widget-area="mainpost-header">
|
|
3
|
+
{{{ each widgets.mainpost-header }}}
|
|
4
|
+
{widgets.mainpost-header.html}
|
|
5
|
+
{{{ end }}}
|
|
6
|
+
</div>
|
|
7
|
+
{{{ end }}}
|
|
8
|
+
|
|
1
9
|
<div class="d-flex align-items-start gap-3">
|
|
2
10
|
<div class="icon py-1 bg-body d-none d-sm-block">
|
|
3
11
|
<a class="d-inline-block position-relative text-decoration-none" href="{{{ if ./user.userslug }}}{config.relative_path}/user/{./user.userslug}{{{ else }}}#{{{ end }}}">
|
|
@@ -25,14 +33,14 @@
|
|
|
25
33
|
{{{ end }}}
|
|
26
34
|
{{{ end }}}
|
|
27
35
|
|
|
28
|
-
|
|
36
|
+
{{{ if posts.user.banned }}}
|
|
29
37
|
<span class="badge bg-danger rounded-1">[[user:banned]]</span>
|
|
30
|
-
|
|
38
|
+
{{{ end }}}
|
|
31
39
|
|
|
32
40
|
<div class="d-flex gap-1 hidden-xs align-items-center">
|
|
33
41
|
{{{ if posts.toPid }}}
|
|
34
42
|
<span class="text-muted">replied to</span><!-- FIX THIS, DOES NOT l10n PROPERLY -->
|
|
35
|
-
<a component="post/parent" data-topid="{posts.toPid}" href="{config.relative_path}/post/{posts.toPid}"
|
|
43
|
+
<a component="post/parent" data-topid="{posts.toPid}" href="{config.relative_path}/post/{posts.toPid}">{{{ if posts.parent.username }}}{posts.parent.username}{{{ else }}}[[global:guest]]{{{ end }}}</a>
|
|
36
44
|
{{{ else }}}
|
|
37
45
|
<span class="text-muted">wrote</span><!-- FIX THIS, DOES NOT l10n PROPERLY -->
|
|
38
46
|
{{{ end }}}
|
|
@@ -45,16 +53,17 @@
|
|
|
45
53
|
|
|
46
54
|
<div>
|
|
47
55
|
<span>
|
|
48
|
-
|
|
56
|
+
{{{ if posts.user.custom_profile_info.length }}}
|
|
49
57
|
|
|
|
50
|
-
{{{each posts.user.custom_profile_info}}}
|
|
58
|
+
{{{ each posts.user.custom_profile_info }}}
|
|
51
59
|
{posts.user.custom_profile_info.content}
|
|
52
|
-
{{{end}}}
|
|
53
|
-
|
|
60
|
+
{{{ end }}}
|
|
61
|
+
{{{ end }}}
|
|
54
62
|
</span>
|
|
55
63
|
</div>
|
|
56
64
|
<div class="d-flex align-items-center gap-1 flex-grow-1 justify-content-end">
|
|
57
65
|
<span class="bookmarked opacity-0 text-primary"><i class="fa fa-bookmark-o"></i></span>
|
|
66
|
+
<a href="{config.relative_path}/post/{./pid}" class="post-index text-muted d-none d-md-inline">#{increment(./index, "1")}</a>
|
|
58
67
|
</div>
|
|
59
68
|
</div>
|
|
60
69
|
|
|
@@ -74,7 +83,7 @@
|
|
|
74
83
|
<a component="post/reply-count" data-target-component="post/replies/container" href="#" class="d-flex gap-2 align-items-center mt-2 btn-outline border rounded-1 p-1 threaded-replies user-select-none float-start text-muted text-decoration-none {{{ if !posts.replies.count }}}hidden{{{ end }}}">
|
|
75
84
|
<span component="post/reply-count/avatars" class="avatars d-inline-flex gap-1 align-items-top {{{ if posts.replies.hasMore }}}hasMore{{{ end }}}">
|
|
76
85
|
{{{each posts.replies.users}}}
|
|
77
|
-
<span>{buildAvatar(posts.replies.users, "20px", true, "")}</span>
|
|
86
|
+
<span>{buildAvatar(posts.replies.users, "20px", true, "avatar-tooltip")}</span>
|
|
78
87
|
{{{end}}}
|
|
79
88
|
{{{ if posts.replies.hasMore}}}
|
|
80
89
|
<span><i class="fa fa-ellipsis"></i></span>
|
|
@@ -104,7 +113,7 @@
|
|
|
104
113
|
<i class="fa fa-chevron-up text-primary"></i>
|
|
105
114
|
</a>
|
|
106
115
|
|
|
107
|
-
<div class="d-inline-block px-
|
|
116
|
+
<div class="d-inline-block px-2 mx-1 btn-ghost-sm" component="post/vote-count" data-votes="{posts.votes}">{posts.votes}</div>
|
|
108
117
|
|
|
109
118
|
{{{ if !downvote:disabled }}}
|
|
110
119
|
<a component="post/downvote" href="#" class="btn-ghost-sm {{{ if posts.downvoted }}}downvoted{{{ end }}}">
|
|
@@ -116,4 +125,12 @@
|
|
|
116
125
|
|
|
117
126
|
<!-- IMPORT partials/topic/post-menu.tpl -->
|
|
118
127
|
</div>
|
|
119
|
-
</div>
|
|
128
|
+
</div>
|
|
129
|
+
|
|
130
|
+
{{{ if (!./index && widgets.mainpost-footer.length) }}}
|
|
131
|
+
<div data-widget-area="mainpost-footer">
|
|
132
|
+
{{{ each widgets.mainpost-footer }}}
|
|
133
|
+
{widgets.mainpost-footer.html}
|
|
134
|
+
{{{ end }}}
|
|
135
|
+
</div>
|
|
136
|
+
{{{ end }}}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
<div component="topic/quickreply/container" class="quick-reply d-flex gap-3">
|
|
1
|
+
{{{ if privileges.topics:reply }}}
|
|
2
|
+
<div component="topic/quickreply/container" class="quick-reply d-flex gap-3 mb-4">
|
|
3
3
|
<div class="icon hidden-xs">
|
|
4
|
-
<a class="d-inline-block position-relative" href="
|
|
4
|
+
<a class="d-inline-block position-relative" href="{{{ if loggedInUser.userslug }}}{config.relative_path}/user/{loggedInUser.userslug}{{{ else }}}#{{{ end }}}">
|
|
5
5
|
{buildAvatar(loggedInUser, "48px", true, "", "user/picture")}
|
|
6
6
|
{{{ if loggedInUser.status }}}<span component="user/status" class="position-absolute translate-middle-y badge border border-white border-2 rounded-circle status {loggedInUser.status}"><span class="visually-hidden">[[global:{loggedInUser.status}]]</span></span>{{{ end }}}
|
|
7
7
|
</a>
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
<div class="imagedrop"><div>[[topic:composer.drag_and_drop_images]]</div></div>
|
|
15
15
|
</div>
|
|
16
16
|
<div>
|
|
17
|
-
<div class="
|
|
17
|
+
<div class="d-flex justify-content-end gap-2">
|
|
18
|
+
<button type="submit" component="topic/quickreply/expand" class="btn btn-sm btn-outline" formmethod="get"><i class="fa fa-expand"></i></button>
|
|
18
19
|
<button type="submit" component="topic/quickreply/button" class="btn btn-sm btn-primary">[[topic:post-quick-reply]]</button>
|
|
19
|
-
<button type="submit" component="topic/quickreply/expand" class="btn btn-sm btn-primary" formmethod="get"><i class="fa fa-expand"></i></button>
|
|
20
20
|
</div>
|
|
21
21
|
</div>
|
|
22
22
|
</form>
|
|
@@ -25,4 +25,4 @@
|
|
|
25
25
|
</form>
|
|
26
26
|
|
|
27
27
|
</div>
|
|
28
|
-
|
|
28
|
+
{{{ end }}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<div component="topic/reply/container" class="btn-group action-bar
|
|
1
|
+
<div component="topic/reply/container" class="btn-group action-bar {{{ if !privileges.topics:reply }}}hidden{{{ end }}}">
|
|
2
2
|
<a href="{config.relative_path}/compose?tid={tid}&title={title}" class="d-flex align-items-center btn btn-sm btn-primary px-3 fw-semibold " component="topic/reply" data-ajaxify="false" role="button"><i class="fa fa-reply d-sm-block d-md-none"></i><span class="d-none d-md-block"> [[topic:reply]]</span></a>
|
|
3
3
|
<button type="button" class="btn btn-sm btn-primary dropdown-toggle" data-bs-toggle="dropdown">
|
|
4
4
|
<span class="caret"></span>
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
-
|
|
3
1
|
{{{ if privileges.editable }}}
|
|
4
|
-
<li
|
|
5
|
-
<li
|
|
6
|
-
<li
|
|
7
|
-
<li
|
|
2
|
+
<li {{{ if locked }}}hidden{{{ end }}}><a component="topic/lock" href="#" class="dropdown-item {{{ if locked }}}hidden{{{ end }}}"><i class="fa fa-fw fa-lock"></i> [[topic:thread_tools.lock]]</a></li>
|
|
3
|
+
<li {{{ if !locked }}}hidden{{{ end }}}><a component="topic/unlock" href="#" class="dropdown-item {{{ if !locked }}}hidden{{{ end }}}"><i class="fa fa-fw fa-unlock"></i> [[topic:thread_tools.unlock]]</a></li>
|
|
4
|
+
<li {{{ if pinned }}}hidden{{{ end }}}><a component="topic/pin" href="#" class="dropdown-item {{{ if pinned }}}hidden{{{ end }}}"><i class="fa fa-fw fa-thumb-tack"></i> [[topic:thread_tools.pin]]</a></li>
|
|
5
|
+
<li {{{ if !pinned }}}hidden{{{ end }}}><a component="topic/unpin" href="#" class="dropdown-item {{{ if !pinned }}}hidden{{{ end }}}"><i class="fa fa-fw fa-thumb-tack fa-rotate-90"></i> [[topic:thread_tools.unpin]]</a></li>
|
|
8
6
|
|
|
9
7
|
<li><a component="topic/move" class="dropdown-item" href="#"><i class="fa fa-fw fa-arrows"></i> [[topic:thread_tools.move]]</a></li>
|
|
10
8
|
<li><a component="topic/merge" class="dropdown-item" href="#"><i class="fa fa-fw fa-code-fork"></i> [[topic:thread_tools.merge]]</a></li>
|
|
@@ -16,19 +14,19 @@
|
|
|
16
14
|
<li class="dropdown-divider"></li>
|
|
17
15
|
{{{ end }}}
|
|
18
16
|
|
|
19
|
-
|
|
20
|
-
<li
|
|
17
|
+
{{{ if privileges.deletable }}}
|
|
18
|
+
<li {{{ if deleted }}}hidden{{{ end }}}><a component="topic/delete" href="#" class="dropdown-item {{{ if deleted }}}hidden{{{ end }}}"><i class="fa fa-fw fa-trash-o"></i> [[topic:thread_tools.delete]]</a></li>
|
|
21
19
|
{{{ if !scheduled }}}
|
|
22
|
-
<li
|
|
20
|
+
<li {{{ if !deleted }}}hidden{{{ end }}}><a component="topic/restore" href="#" class="dropdown-item {{{ if !deleted }}}hidden{{{ end }}}"><i class="fa fa-fw fa-history"></i> [[topic:thread_tools.restore]]</a></li>
|
|
21
|
+
{{{ end }}}
|
|
22
|
+
{{{ if privileges.purge }}}
|
|
23
|
+
<li {{{ if !deleted }}}hidden{{{ end }}}><a component="topic/purge" href="#" class="dropdown-item {{{ if !deleted }}}hidden{{{ end }}}"><i class="fa fa-fw fa-eraser"></i> [[topic:thread_tools.purge]]</a></li>
|
|
23
24
|
{{{ end }}}
|
|
24
|
-
|
|
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 -->
|
|
25
|
+
{{{ if privileges.isAdminOrMod }}}
|
|
28
26
|
<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
|
-
|
|
27
|
+
{{{ end }}}
|
|
30
28
|
|
|
31
|
-
{{{each thread_tools}}}
|
|
32
|
-
<li><a href="#" class="dropdown-item {
|
|
33
|
-
{{{end}}}
|
|
34
|
-
|
|
29
|
+
{{{ each thread_tools }}}
|
|
30
|
+
<li><a href="#" class="dropdown-item {./class}"><i class="fa fa-fw {./icon}"></i> {./title}</a></li>
|
|
31
|
+
{{{ end }}}
|
|
32
|
+
{{{ end }}}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{{{ if config.loggedIn }}}
|
|
2
|
-
<div class="btn-group
|
|
2
|
+
<div class="btn-group bottom-sheet" component="topic/watch">
|
|
3
3
|
<button class="btn-ghost-sm d-flex gap-2 align-items-baseline dropdown-toggle" data-bs-toggle="dropdown" type="button">
|
|
4
4
|
<span component="topic/following/menu" class="d-flex gap-2 align-items-center{{{ if !isFollowing }}} hidden{{{ end }}}">
|
|
5
5
|
<i class="fa fa-fw fa-bell-o link-primary"></i>
|
|
@@ -17,11 +17,35 @@
|
|
|
17
17
|
</span>
|
|
18
18
|
</button>
|
|
19
19
|
<ul class="dropdown-menu">
|
|
20
|
-
<li
|
|
20
|
+
<li>
|
|
21
|
+
<a class="dropdown-item d-flex" href="#" component="topic/following">
|
|
22
|
+
<span><i component="topic/following/check" class="fa fa-fw {{{ if isFollowing }}}fa-check{{{ end }}}"></i></span>
|
|
23
|
+
<div class="d-flex flex-column">
|
|
24
|
+
<span><i class="fa fa-fw fa-bell-o"></i> [[topic:watching]]</span>
|
|
25
|
+
<p class="help-text text-muted"><small>[[topic:watching.description]]</small></p>
|
|
26
|
+
</div>
|
|
27
|
+
</a>
|
|
28
|
+
</li>
|
|
21
29
|
|
|
22
|
-
<li
|
|
30
|
+
<li>
|
|
31
|
+
<a class="dropdown-item d-flex" href="#" component="topic/not-following">
|
|
32
|
+
<span><i component="topic/not-following/check" class="fa fa-fw {{{ if isNotFollowing }}}fa-check{{{ end }}}"></i></span>
|
|
33
|
+
<div class="d-flex flex-column">
|
|
34
|
+
<span><i class="fa fa-fw fa-bell-slash-o"></i> [[topic:not-watching]]</span>
|
|
35
|
+
<p class="help-text text-muted"><small>[[topic:not-watching.description]]</small></p>
|
|
36
|
+
</div>
|
|
37
|
+
</a>
|
|
38
|
+
</li>
|
|
23
39
|
|
|
24
|
-
<li
|
|
40
|
+
<li>
|
|
41
|
+
<a class="dropdown-item d-flex" href="#" component="topic/ignoring">
|
|
42
|
+
<span><i component="topic/ignoring/check" class="fa fa-fw {{{ if isIgnoring }}}fa-check{{{ end }}}"></i></span>
|
|
43
|
+
<div class="d-flex flex-column">
|
|
44
|
+
<span><i class="fa fa-fw fa-eye-slash"></i> [[topic:ignoring]]</span>
|
|
45
|
+
<p class="help-text text-muted"><small>[[topic:ignoring.description]]</small></p>
|
|
46
|
+
</div>
|
|
47
|
+
</a>
|
|
48
|
+
</li>
|
|
25
49
|
</ul>
|
|
26
50
|
</div>
|
|
27
51
|
{{{ end }}}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
<nav class="topic-list-header {{{ if config.stickyToolbar }}} sticky-tools{{{ end }}} navbar navbar-expand p-0 border-0 rounded">
|
|
2
|
-
<div class="card card-header flex-row p-2 border rounded ff-secondary w-100">
|
|
3
|
-
<ul class="navbar-nav me-auto gap-2 align-items-center">
|
|
1
|
+
<nav class="topic-list-header {{{ if config.theme.stickyToolbar }}} sticky-tools{{{ end }}} navbar navbar-expand p-0 border-0 rounded mb-3">
|
|
2
|
+
<div class="card card-header flex-row p-2 gap-1 border rounded ff-secondary w-100">
|
|
3
|
+
<ul component="category/controls" class="navbar-nav me-auto gap-2 align-items-center">
|
|
4
4
|
{{{ if template.category }}}
|
|
5
5
|
<!-- IMPORT partials/category/watch.tpl -->
|
|
6
6
|
<!-- IMPORT partials/category/sort.tpl -->
|
|
@@ -10,15 +10,15 @@
|
|
|
10
10
|
{{{ end }}}
|
|
11
11
|
{{{ if (template.unread || (template.recent || (template.popular || template.top))) }}}
|
|
12
12
|
<!-- IMPORT partials/topic-filters.tpl -->
|
|
13
|
-
<!-- IMPORT partials/category-
|
|
13
|
+
<!-- IMPORT partials/category/filter-dropdown-left.tpl -->
|
|
14
14
|
{{{ end }}}
|
|
15
15
|
{{{ if template.unread }}}
|
|
16
16
|
<div class="markread btn-group {{{ if !topics.length }}}hidden{{{ end }}}">
|
|
17
|
-
<!-- IMPORT partials/category-
|
|
17
|
+
<!-- IMPORT partials/category/selector-dropdown-left.tpl -->
|
|
18
18
|
</div>
|
|
19
19
|
{{{ end }}}
|
|
20
20
|
{{{ if template.tag }}}
|
|
21
|
-
<!-- IMPORT partials/category-
|
|
21
|
+
<!-- IMPORT partials/category/filter-dropdown-left.tpl -->
|
|
22
22
|
{{{ end }}}
|
|
23
23
|
<!-- IMPORT partials/category/tools.tpl -->
|
|
24
24
|
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
{{{ end }}}
|
|
28
28
|
|
|
29
29
|
<a href="{config.relative_path}{{{ if template.category }}}{url}{{{ else }}}/{selectedFilter.url}{querystring}{{{ end }}}" class="d-inline-block text-decoration-none">
|
|
30
|
-
<div class="alert alert-warning h-100 m-0 px-2 py-1
|
|
30
|
+
<div class="d-md-block alert alert-warning h-100 m-0 px-2 py-1 line-clamp-2 text-sm text-break hide" id="new-topics-alert">There is a new post. Click here to reload.</div>
|
|
31
31
|
</a>
|
|
32
32
|
</ul>
|
|
33
33
|
|
|
34
|
-
<div class="d-flex gap-1 align-items-
|
|
34
|
+
<div class="d-flex gap-1 align-items-center">
|
|
35
35
|
{{{ if template.category }}}
|
|
36
36
|
{{{ if privileges.topics:create }}}
|
|
37
37
|
<a href="{config.relative_path}/compose?cid={cid}" component="category/post" id="new_topic" class="btn btn-primary btn-sm text-nowrap" data-ajaxify="false" role="button">[[category:new_topic_button]]</a>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<ul component="category" class="list-unstyled topic-list
|
|
1
|
+
<ul component="category" class="list-unstyled topic-list overflow-auto position-relative" itemscope itemtype="http://www.schema.org/ItemList" data-nextstart="{nextStart}" data-set="{set}">
|
|
2
2
|
|
|
3
3
|
{{{ each topics }}}
|
|
4
4
|
<li component="category/topic" class="category-item position-relative {function.generateTopicClass}" <!-- IMPORT partials/data/category.tpl -->>
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
{{{ if ./thumbs.length }}}
|
|
17
17
|
<img class="topic-thumb rounded-1" width="80" height="auto" src="{./thumbs.0.url}" class="not-responsive" />
|
|
18
18
|
{{{ else }}}
|
|
19
|
-
{buildAvatar(./user, "40px", true, "not-responsive")}
|
|
19
|
+
{buildAvatar(./user, "40px", true, "avatar-tooltip not-responsive")}
|
|
20
20
|
{{{ end }}}
|
|
21
21
|
</a>
|
|
22
22
|
</div>
|
|
@@ -70,48 +70,50 @@
|
|
|
70
70
|
</div>
|
|
71
71
|
</div>
|
|
72
72
|
|
|
73
|
-
<div class="col-md-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
<div class="
|
|
77
|
-
<
|
|
78
|
-
|
|
73
|
+
<div class="meta row col-md-5 col-sm-3 d-none d-md-flex align-self-stretch align-self-lg-start">
|
|
74
|
+
<div class="col-md-5 d-none d-lg-flex stats text-muted gap-2 px-0">
|
|
75
|
+
{{{ if !reputation:disabled }}}
|
|
76
|
+
<div class="stats-votes flex-1">
|
|
77
|
+
<div class="align-items-center card card-header px-0 py-2 border-0 rounded-1">
|
|
78
|
+
<span class="human-readable-number fs-5 fw-semibold ff-secondary lh-1" title="{./votes}" data-toFixed="0">{./votes}</span>
|
|
79
|
+
<span class="text-lowercase text-xs">[[global:votes]]</span>
|
|
80
|
+
</div>
|
|
79
81
|
</div>
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
{{{ end }}}
|
|
83
|
+
<div class="stats-postcount flex-1">
|
|
84
|
+
<div class="align-items-center card card-header px-0 py-2 border-0 rounded-1">
|
|
85
|
+
<span class="human-readable-number fs-5 fw-semibold ff-secondary lh-1" title="{./postcount}" data-toFixed="0">{./postcount}</span>
|
|
86
|
+
<span class="text-lowercase text-xs">[[global:posts]]</span>
|
|
87
|
+
</div>
|
|
86
88
|
</div>
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
<div class="stats-viewcount flex-1">
|
|
90
|
+
<div class="align-items-center card card-header px-0 py-2 border-0 rounded-1">
|
|
91
|
+
<span class="human-readable-number fs-5 fw-semibold ff-secondary lh-1" title="{./viewcount}" data-toFixed="0">{./viewcount}</span>
|
|
92
|
+
<span class="text-lowercase text-xs">[[global:views]]</span>
|
|
93
|
+
</div>
|
|
92
94
|
</div>
|
|
93
95
|
</div>
|
|
94
|
-
</div>
|
|
95
96
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
97
|
+
<div class="col-md-7 col-sm-3 teaser d-none d-md-block overflow-hidden" component="topic/teaser">
|
|
98
|
+
<div class="lastpost background-link-container border-start border-2 h-100" style="border-color: {./category.bgColor}!important;">
|
|
99
|
+
<a class="background-link" href="{config.relative_path}/topic/{./slug}/{./teaser.index}"></a>
|
|
100
|
+
{{{ if ./unreplied }}}
|
|
101
|
+
<p class="ps-3 text-xs lh-1">
|
|
102
|
+
[[category:no_replies]]
|
|
103
|
+
</p>
|
|
104
|
+
{{{ else }}}
|
|
105
|
+
{{{ if ./teaser.pid }}}
|
|
106
|
+
<p class="ps-3 mb-0 lh-1">
|
|
107
|
+
<a href="{config.relative_path}/user/{./teaser.user.userslug}" class="text-decoration-none">{buildAvatar(./teaser.user, "18px", true, "avatar-tooltip not-responsive")}</a>
|
|
108
|
+
<a class="permalink text-muted timeago text-xs" href="{config.relative_path}/topic/{./slug}/{./teaser.index}" title="{./teaser.timestampISO}">
|
|
109
|
+
</a>
|
|
110
|
+
</p>
|
|
111
|
+
<div class="post-content overflow-hidden text-xs line-clamp-2 ps-3">
|
|
112
|
+
{./teaser.content}
|
|
113
|
+
</div>
|
|
114
|
+
{{{ end }}}
|
|
115
|
+
{{{ end }}}
|
|
112
116
|
</div>
|
|
113
|
-
{{{ end }}}
|
|
114
|
-
{{{ end }}}
|
|
115
117
|
</div>
|
|
116
118
|
</div>
|
|
117
119
|
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<button type="button" class="btn-ghost-sm dropdown-toggle" data-bs-toggle="dropdown">
|
|
2
|
+
{{{ if selectedUser }}}
|
|
3
|
+
<span class="fw-semibold">{buildAvatar(selectedUser, "20px", true, "not-responsive")} {selectedUser.username}</span>
|
|
4
|
+
{{{ else }}}
|
|
5
|
+
<span class="fw-semibold">[[users:all-users]]</span>
|
|
6
|
+
{{{ end }}} <span class="caret"></span>
|
|
7
|
+
</button>
|
|
8
|
+
<ul class="dropdown-menu" role="menu">
|
|
9
|
+
<li role="presentation" class="user {{{ if !selectedUser}}}selected{{{end}}}">
|
|
10
|
+
<a class="dropdown-item" role="menu-item" href="{config.relative_path}/{allUsersUrl}"><i class="fa fa-fw {{{ if !selectedUser }}}fa-check{{{ end }}}"></i>[[users:all-users]]</a>
|
|
11
|
+
</li>
|
|
12
|
+
{{{ each users }}}
|
|
13
|
+
<li role="presentation" class="user {{{ if ./selected}}}selected{{{end}}}">
|
|
14
|
+
<a class="dropdown-item" role="menu-item" href="{config.relative_path}/{./url}">
|
|
15
|
+
<i class="fa fa-fw {{{ if ./selected }}}fa-check{{{ end }}}"></i>
|
|
16
|
+
<div class="d-inline-flex gap-1 align-items-center">{buildAvatar(@value, "24px", true, "not-responsive")} {./username}</div>
|
|
17
|
+
</a>
|
|
18
|
+
</li>
|
|
19
|
+
{{{end}}}
|
|
20
|
+
</ul>
|
package/templates/popular.tpl
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<!-- IMPORT partials/topic-list-bar.tpl -->
|
|
8
8
|
<div class="category">
|
|
9
9
|
{{{ if !topics.length }}}
|
|
10
|
-
<div class="alert alert-
|
|
10
|
+
<div class="alert alert-info mt-3" id="category-no-topics">[[recent:no_popular_topics]]</div>
|
|
11
11
|
{{{ end }}}
|
|
12
12
|
|
|
13
13
|
<!-- IMPORT partials/topics_list.tpl -->
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
<!-- IMPORT partials/breadcrumbs.tpl -->
|
|
2
|
+
|
|
3
|
+
{{{ if (!singlePost && posts.length) }}}
|
|
4
|
+
<div class="btn-toolbar justify-content-end">
|
|
5
|
+
<div class="me-2">
|
|
6
|
+
<!-- IMPORT partials/category/filter-dropdown-right.tpl -->
|
|
7
|
+
</div>
|
|
8
|
+
<div class="btn-group bottom-sheet" component="post-queue/bulk-actions">
|
|
9
|
+
<button type="button" class="btn-ghost-sm dropdown-toggle" data-bs-toggle="dropdown" autocomplete="off" aria-haspopup="true" aria-expanded="false">
|
|
10
|
+
<i class="fa fa-clone"></i><span class="fw-semibold"> [[post-queue:bulk-actions]]</span>
|
|
11
|
+
</button>
|
|
12
|
+
<ul class="dropdown-menu dropdown-menu-end">
|
|
13
|
+
{{{ if canAccept }}}
|
|
14
|
+
<li><a class="dropdown-item" href="#" data-action="accept-all">[[post-queue:accept-all]]</a></li>
|
|
15
|
+
<li><a class="dropdown-item" href="#" data-action="accept-selected">[[post-queue:accept-selected]]</a></li>
|
|
16
|
+
<li class="dropdown-divider"></li>
|
|
17
|
+
<li><a class="dropdown-item" href="#" data-action="reject-all">[[post-queue:reject-all]]</a></li>
|
|
18
|
+
<li><a class="dropdown-item" href="#" data-action="reject-selected">[[post-queue:reject-selected]]</a></li>
|
|
19
|
+
{{{ else }}}
|
|
20
|
+
<li><a class="dropdown-item" href="#" data-action="reject-all">[[post-queue:remove-all]]</a></li>
|
|
21
|
+
<li><a class="dropdown-item" href="#" data-action="reject-selected">[[post-queue:remove-selected]]</a></li>
|
|
22
|
+
{{{ end }}}
|
|
23
|
+
</ul>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
<hr/>
|
|
28
|
+
{{{ end }}}
|
|
29
|
+
|
|
30
|
+
<div class="row">
|
|
31
|
+
<div class="col-12">
|
|
32
|
+
<div class="post-queue preventSlideout posts-list">
|
|
33
|
+
{{{ if (!posts.length && isAdmin) }}}
|
|
34
|
+
{{{ if !singlePost }}}
|
|
35
|
+
<div class="alert alert-info">
|
|
36
|
+
<p>[[post-queue:no-queued-posts]]</p>
|
|
37
|
+
{{{ if !enabled }}}<p>[[post-queue:enabling-help, {config.relative_path}/admin/settings/post#post-queue]]</p>{{{ end }}}
|
|
38
|
+
</div>
|
|
39
|
+
{{{ else }}}
|
|
40
|
+
<div class="alert alert-info d-flex align-items-center">
|
|
41
|
+
<p class="mb-0 me-auto">[[post-queue:no-single-post]]</p>
|
|
42
|
+
<a class="btn btn-sm btn-primary" href=".">[[post-queue:back-to-list]]</a>
|
|
43
|
+
</div>
|
|
44
|
+
{{{ end }}}
|
|
45
|
+
{{{ end }}}
|
|
46
|
+
|
|
47
|
+
{{{ each posts }}}
|
|
48
|
+
<div class="card mb-3" data-id="{posts.id}">
|
|
49
|
+
<div class="card-header">
|
|
50
|
+
{{{ if !singlePost }}}
|
|
51
|
+
<input type="checkbox" class="form-check-input" autocomplete="off" />
|
|
52
|
+
{{{ end }}}
|
|
53
|
+
<strong>{{{ if posts.data.tid }}}[[post-queue:reply]]{{{ else }}}[[post-queue:topic]]{{{ end }}}</strong>
|
|
54
|
+
<span class="timeago float-end" title={posts.data.timestampISO}></span>
|
|
55
|
+
</div>
|
|
56
|
+
<div class="card-body">
|
|
57
|
+
<div class="row">
|
|
58
|
+
<div class="col-lg-2 col-12">
|
|
59
|
+
<strong>[[post-queue:user]]</strong>
|
|
60
|
+
<div>
|
|
61
|
+
{{{ if posts.user.userslug}}}
|
|
62
|
+
<a href="{config.relative_path}/uid/{posts.user.uid}">{buildAvatar(posts.user, "24px", true, "not-responsive")} {posts.user.username}</a>
|
|
63
|
+
{{{ else }}}
|
|
64
|
+
{posts.user.username}
|
|
65
|
+
{{{ end }}}
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
<div class="col-lg-3 col-12">
|
|
69
|
+
<strong>[[post-queue:category]]{{{ if posts.data.cid}}} <i class="fa fa-fw fa-edit" data-bs-toggle="tooltip" title="[[post-queue:category-editable]]"></i>{{{ end }}}</strong>
|
|
70
|
+
<div class="topic-category" {{{if posts.data.cid}}}data-editable="editable"{{{end}}}">
|
|
71
|
+
<a href="{config.relative_path}/category/{posts.category.slug}">
|
|
72
|
+
<div class="category-item d-inline-block">
|
|
73
|
+
{buildCategoryIcon(./category, "24px", "rounded-circle")}
|
|
74
|
+
{posts.category.name}
|
|
75
|
+
</div>
|
|
76
|
+
</a>
|
|
77
|
+
</div>
|
|
78
|
+
</div>
|
|
79
|
+
<div class="col-lg-7 col-12">
|
|
80
|
+
<strong>{{{ if posts.data.tid }}}[[post-queue:topic]]{{{ else }}}[[post-queue:title]] <i class="fa fa-fw fa-edit" data-bs-toggle="tooltip" title="[[post-queue:title-editable]]"></i>{{{ end }}}</strong>
|
|
81
|
+
<div class="topic-title text-break">
|
|
82
|
+
{{{ if posts.data.tid }}}
|
|
83
|
+
<a href="{config.relative_path}/topic/{posts.data.tid}">{posts.topic.title}</a>
|
|
84
|
+
{{{ end }}}
|
|
85
|
+
<span class="title-text">{posts.data.title}</span>
|
|
86
|
+
</div>
|
|
87
|
+
{{{if !posts.data.tid}}}
|
|
88
|
+
<div class="topic-title-editable hidden">
|
|
89
|
+
<input class="form-control" type="text" value="{posts.data.title}"/>
|
|
90
|
+
</div>
|
|
91
|
+
{{{end}}}
|
|
92
|
+
</div>
|
|
93
|
+
</div>
|
|
94
|
+
<hr/>
|
|
95
|
+
<div>
|
|
96
|
+
<strong>[[post-queue:content]] <i class="fa fa-fw fa-edit" data-bs-toggle="tooltip" title="[[post-queue:content-editable]]"></i></strong>
|
|
97
|
+
<div class="post-content text-break">{posts.data.content}</div>
|
|
98
|
+
<div class="post-content-editable hidden">
|
|
99
|
+
<textarea class="form-control w-100" style="height:300px;">{posts.data.rawContent}</textarea>
|
|
100
|
+
</div>
|
|
101
|
+
</div>
|
|
102
|
+
</div>
|
|
103
|
+
<div class="card-footer text-end">
|
|
104
|
+
<div>
|
|
105
|
+
{{{ if canAccept }}}
|
|
106
|
+
<button class="btn btn-danger btn-sm" data-action="reject"><i class="fa fa-fw fa-times"></i> [[post-queue:reject]]</button>
|
|
107
|
+
<button class="btn btn-info btn-sm" data-action="notify"><i class="fa fa-fw fa-bell-o"></i> [[post-queue:notify]]</button>
|
|
108
|
+
<button class="btn btn-success btn-sm" data-action="accept"><i class="fa fa-fw fa-check"></i> [[post-queue:accept]] </button>
|
|
109
|
+
{{{ else }}}
|
|
110
|
+
<button class="btn btn-danger btn-sm" data-action="reject"><i class="fa fa-fw fa-times"></i> [[post-queue:remove]]</button>
|
|
111
|
+
{{{ end }}}
|
|
112
|
+
</div>
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
{{{ end }}}
|
|
116
|
+
</div>
|
|
117
|
+
|
|
118
|
+
<!-- IMPORT partials/paginator.tpl -->
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
package/templates/recent.tpl
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
<div class="category">
|
|
11
11
|
{{{ if !topics.length }}}
|
|
12
|
-
<div class="alert alert-
|
|
12
|
+
<div class="alert alert-info mt-3" id="category-no-topics">[[recent:no_recent_topics]]</div>
|
|
13
13
|
{{{ end }}}
|
|
14
14
|
|
|
15
15
|
<!-- IMPORT partials/topics_list.tpl -->
|
package/templates/register.tpl
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<h2 class="tracking-tight fw-semibold text-center">[[global:register]]</h2>
|
|
9
9
|
<div class="row justify-content-center gap-5">
|
|
10
10
|
|
|
11
|
-
<div class="col-12 col-md-3 px-md-0">
|
|
11
|
+
<div class="col-12 col-md-5 col-lg-3 px-md-0">
|
|
12
12
|
<div class="register-block">
|
|
13
13
|
<div class="alert alert-danger{{{ if !error }}} hidden{{{ end }}}" id="register-error-notify" >
|
|
14
14
|
<strong>[[error:registration-error]]</strong>
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
</div>
|
|
67
67
|
|
|
68
68
|
{{{ if alternate_logins }}}
|
|
69
|
-
<div class="col-12 col-md-3 px-md-0">
|
|
69
|
+
<div class="col-12 col-md-5 col-lg-3 px-md-0">
|
|
70
70
|
<div class="alt-register-block d-flex flex-column gap-2">
|
|
71
71
|
<label>[[register:alternative_registration]]</label>
|
|
72
72
|
<ul class="alt-logins list-unstyled">
|