nodebb-theme-harmony 2.0.0-pre.9 → 2.0.0
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/README.md +3 -0
- package/library.js +1 -7
- package/package-lock.json +372 -402
- package/package.json +2 -2
- package/plugin.json +1 -2
- package/public/harmony.js +15 -15
- package/scss/common.scss +2 -8
- package/scss/harmony.scss +0 -1
- package/scss/header.scss +1 -1
- package/scss/mixins.scss +12 -5
- package/scss/modules/cover.scss +2 -4
- package/scss/modules/topics-list.scss +1 -1
- package/scss/overrides.scss +4 -0
- package/scss/sidebar.scss +18 -19
- package/scss/skins.scss +9 -0
- package/scss/topic.scss +4 -12
- package/templates/account/blocks.tpl +18 -7
- package/templates/account/categories.tpl +1 -1
- package/templates/account/consent.tpl +2 -2
- package/templates/account/edit/password.tpl +8 -8
- package/templates/account/edit/username.tpl +2 -3
- package/templates/account/edit.tpl +30 -15
- package/templates/account/info.tpl +142 -73
- package/templates/account/posts.tpl +7 -7
- package/templates/account/profile.tpl +19 -22
- package/templates/account/read.tpl +1 -0
- package/templates/account/settings.tpl +5 -5
- package/templates/account/shares.tpl +20 -0
- package/templates/account/topics.tpl +6 -5
- package/templates/admin/plugins/harmony.tpl +1 -0
- package/templates/footer.tpl +1 -1
- package/templates/groups/list.tpl +9 -7
- package/templates/notifications.tpl +1 -1
- package/templates/partials/account/header.tpl +15 -15
- package/templates/partials/account/sidebar-left.tpl +30 -16
- package/templates/partials/breadcrumbs-json-ld.tpl +15 -25
- package/templates/partials/categories/item.tpl +8 -8
- package/templates/partials/categories/lastpost.tpl +1 -1
- package/templates/partials/category/subcategory.tpl +1 -1
- package/templates/partials/groups/list.tpl +1 -1
- package/templates/partials/groups/memberlist.tpl +1 -1
- package/templates/partials/groups/sidebar-left.tpl +8 -8
- package/templates/partials/header/brand.tpl +3 -1
- package/templates/partials/mobile-footer.tpl +3 -6
- package/templates/partials/notifications_list.tpl +2 -2
- package/templates/partials/post_bar.tpl +3 -5
- package/templates/partials/posts_list_item.tpl +1 -1
- package/templates/partials/quick-search-results.tpl +5 -5
- package/templates/partials/search-filters.tpl +1 -1
- package/templates/partials/search-results.tpl +1 -1
- package/templates/partials/sidebar/chats.tpl +1 -1
- package/templates/partials/sidebar/notifications.tpl +1 -1
- package/templates/partials/sidebar/search.tpl +2 -2
- package/templates/partials/sidebar-left.tpl +2 -5
- package/templates/partials/tags_list.tpl +6 -4
- package/templates/partials/topic/event.tpl +1 -1
- package/templates/partials/topic/navigator.tpl +2 -2
- package/templates/partials/topic/post-menu-list.tpl +20 -4
- package/templates/partials/topic/post-menu.tpl +3 -29
- package/templates/partials/topic/post.tpl +108 -101
- package/templates/partials/topic/quickreply.tpl +2 -2
- package/templates/partials/topic/reply-button.tpl +4 -2
- package/templates/partials/topic/sort.tpl +1 -1
- package/templates/partials/topic/thumbs.tpl +1 -1
- package/templates/partials/topic/tools.tpl +2 -6
- package/templates/partials/topic/watch.tpl +1 -1
- package/templates/partials/topic-filters.tpl +1 -1
- package/templates/partials/topic-list-bar.tpl +6 -6
- package/templates/partials/topic-terms.tpl +1 -1
- package/templates/partials/topics_list.tpl +12 -4
- package/templates/partials/users/item.tpl +33 -31
- package/templates/partials/users_list_menu.tpl +5 -5
- package/templates/post-queue.tpl +6 -2
- package/templates/recent.tpl +7 -0
- package/templates/topic.tpl +81 -88
- package/templates/users.tpl +2 -2
- package/templates/world.tpl +32 -1
- package/scss/modules/bottom-sheet.scss +0 -52
- package/templates/flags/detail.tpl +0 -179
- package/templates/flags/list.tpl +0 -6
- package/templates/login.tpl +0 -102
- package/templates/partials/category/filter-dropdown-content.tpl +0 -41
- package/templates/partials/category/selector-dropdown-content.tpl +0 -39
- package/templates/partials/category/sort.tpl +0 -39
- package/templates/partials/category/tools.tpl +0 -89
- package/templates/partials/category/watch.tpl +0 -67
- package/templates/partials/flags/bulk-actions.tpl +0 -9
- package/templates/partials/flags/filters.tpl +0 -189
- package/templates/partials/flags/results.tpl +0 -38
- package/templates/partials/groups/filter-dropdown-content.tpl +0 -25
- package/templates/partials/tags/filter-dropdown-content.tpl +0 -38
- package/templates/partials/tags/watch.tpl +0 -42
- package/templates/partials/users/filter-dropdown-content.tpl +0 -23
- package/templates/register.tpl +0 -104
|
@@ -1,20 +1,14 @@
|
|
|
1
1
|
<div class="account w-100 mx-auto">
|
|
2
|
-
<div data-widget-area="header">
|
|
3
|
-
{{{each widgets.header}}}
|
|
4
|
-
{{widgets.header.html}}
|
|
5
|
-
{{{end}}}
|
|
6
|
-
</div>
|
|
7
|
-
|
|
8
2
|
<div class="cover position-absolute start-0 top-0 w-100" component="account/cover" style="background-image: url({cover:url}); background-position: {cover:position};">
|
|
9
3
|
<div class="container">
|
|
10
4
|
{{{ if allowCoverPicture }}}
|
|
11
5
|
{{{ if canEdit }}}
|
|
12
6
|
<div class="controls text-center">
|
|
13
|
-
<
|
|
14
|
-
<
|
|
15
|
-
<
|
|
7
|
+
<a href="#" class="upload p-2 m-2 rounded-1 text-bg-light opacity-75"><i class="fa fa-fw fa-upload"></i></a>
|
|
8
|
+
<a href="#" class="resize p-2 m-2 rounded-1 text-bg-light opacity-75"><i class="fa fa-fw fa-arrows"></i></a>
|
|
9
|
+
<a href="#" class="remove p-2 m-2 rounded-1 text-bg-light opacity-75"><i class="fa fa-fw fa-times"></i></a>
|
|
16
10
|
</div>
|
|
17
|
-
<
|
|
11
|
+
<a href="#" class="save text-bg-primary">[[groups:cover-save]] <i class="fa fa-fw fa-floppy-o"></i></a>
|
|
18
12
|
<div class="indicator text-bg-primary">[[groups:cover-saving]] <i class="fa fa-fw fa-refresh fa-spin"></i></div>
|
|
19
13
|
{{{ end }}}
|
|
20
14
|
{{{ end }}}
|
|
@@ -25,9 +19,9 @@
|
|
|
25
19
|
<div {{{ if (allowProfilePicture && isSelfOrAdminOrGlobalModerator)}}}component="profile/change/picture"{{{ end }}} class="avatar-wrapper border border-white border-4 rounded-circle position-relative align-self-center align-self-md-start hover-parent" style="margin-top: -75px;">
|
|
26
20
|
{buildAvatar(@value, "142px", true)}
|
|
27
21
|
{{{ if (allowProfilePicture && isSelfOrAdminOrGlobalModerator)}}}
|
|
28
|
-
<
|
|
22
|
+
<a href="#" component="profile/change/picture" class="d-none d-md-block pointer p-2 rounded-1 text-bg-light position-absolute top-50 start-50 translate-middle hover-opacity-75">
|
|
29
23
|
<span class="upload"><i class="fa fa-fw fa-upload"></i></span>
|
|
30
|
-
</
|
|
24
|
+
</a>
|
|
31
25
|
{{{ end }}}
|
|
32
26
|
</div>
|
|
33
27
|
|
|
@@ -37,7 +31,7 @@
|
|
|
37
31
|
<h2 class="fullname fw-semibold fs-2 tracking-tight mb-0">{{{ if fullname }}}{fullname}{{{ else }}}{username}{{{ end }}}</h2>
|
|
38
32
|
<div class="d-flex flex-wrap gap-1 text-sm align-items-center">
|
|
39
33
|
<span class="username fw-bold">{{{ if !banned }}}@{username}{{{ else }}}[[user:banned]]{{{ end }}}</span>
|
|
40
|
-
<div class="d-flex align-items-center gap-1 p-1">
|
|
34
|
+
<div class="d-flex align-items-center gap-1 p-1 flex-wrap">
|
|
41
35
|
{{{ if selectedGroup.length }}}
|
|
42
36
|
{{{ each selectedGroup }}}
|
|
43
37
|
{{{ if ./slug }}}
|
|
@@ -65,8 +59,8 @@
|
|
|
65
59
|
<div class="flex-shrink-0 d-flex gap-1 align-self-stretch align-self-md-start justify-content-end">
|
|
66
60
|
{{{ if loggedIn }}}
|
|
67
61
|
{{{ if !isSelf }}}
|
|
68
|
-
<a component="account/unfollow" href="#" class="btn btn-
|
|
69
|
-
<a component="account/follow" href="#" class="btn btn-primary flex-fill{{{ if isFollowing }}} hide{{{ end }}}">[[user:follow]]</a>
|
|
62
|
+
<a component="account/unfollow" href="#" class="btn btn-outline-warning flex-fill{{{ if (!isFollowing && !isFollowPending) }}} hide{{{ end }}}">[[user:{{{ if isFollowPending }}}cancel-follow{{{ else }}}unfollow{{{ end }}}]]</a>
|
|
63
|
+
<a component="account/follow" href="#" class="btn btn-primary flex-fill{{{ if (isFollowing || isFollowPending) }}} hide{{{ end }}}">[[user:follow]]</a>
|
|
70
64
|
{{{ end }}}
|
|
71
65
|
{{{ end }}}
|
|
72
66
|
|
|
@@ -92,6 +86,12 @@
|
|
|
92
86
|
</div>
|
|
93
87
|
</div>
|
|
94
88
|
|
|
89
|
+
<div data-widget-area="header">
|
|
90
|
+
{{{each widgets.header}}}
|
|
91
|
+
{{widgets.header.html}}
|
|
92
|
+
{{{end}}}
|
|
93
|
+
</div>
|
|
94
|
+
|
|
95
95
|
<div class="d-flex flex-column flex-md-row">
|
|
96
96
|
<!-- IMPORT partials/account/sidebar-left.tpl -->
|
|
97
97
|
<div class="account-content flex-grow-1 ps-md-2 ps-lg-3 ps-xl-4" style="min-width: 0;">
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
<div class="flex-shrink-0 pe-2 border-end-md text-sm mb-3 flex-basis-md-200">
|
|
2
2
|
<div class="sticky-md-top d-flex flex-row flex-md-column flex-wrap gap-1" style="top: 1rem;z-index: 1;">
|
|
3
|
-
<a href="{config.relative_path}/user/{userslug}" class="btn-ghost ff-secondary fw-semibold {{{ if template.account/profile }}}active{{{ end }}}">
|
|
3
|
+
<a href="{config.relative_path}/user/{userslug}" class="btn btn-ghost btn-sm text-start ff-secondary fw-semibold {{{ if template.account/profile }}}active{{{ end }}}">
|
|
4
4
|
<div class="flex-grow-1">[[global:about]]</div>
|
|
5
5
|
</a>
|
|
6
|
-
|
|
6
|
+
|
|
7
|
+
<a href="{config.relative_path}/user/{userslug}/posts"class="btn btn-ghost btn-sm text-start ff-secondary fw-semibold d-flex gap-2 align-items-center
|
|
7
8
|
{{{ if template.account/posts }}}active{{{ end }}}
|
|
8
9
|
{{{ if template.account/best }}}active{{{ end }}}
|
|
9
10
|
{{{ if template.account/controversial }}}active{{{ end }}}
|
|
@@ -13,52 +14,60 @@
|
|
|
13
14
|
<div class="flex-grow-1">[[global:posts]]</div>
|
|
14
15
|
<span class="flex-shrink-0 text-xs" title="{counts.posts}">{humanReadableNumber(counts.posts)}</span>
|
|
15
16
|
</a>
|
|
16
|
-
|
|
17
|
+
|
|
18
|
+
<a href="{config.relative_path}/user/{userslug}/topics" class="btn btn-ghost btn-sm text-start ff-secondary fw-semibold d-flex gap-2 align-items-center
|
|
17
19
|
{{{ if template.account/topics }}}active{{{ end }}}
|
|
18
20
|
{{{ if template.account/watched }}}active{{{ end }}}
|
|
19
21
|
{{{ if template.account/ignored }}}active{{{ end }}}">
|
|
20
22
|
<div class="flex-grow-1">[[global:topics]]</div>
|
|
21
23
|
<span class="flex-shrink-0 text-xs" title="{counts.topics}">{humanReadableNumber(counts.topics)}</span>
|
|
22
24
|
</a>
|
|
23
|
-
|
|
25
|
+
|
|
26
|
+
<a href="{config.relative_path}/user/{userslug}/shares" class="btn btn-ghost btn-sm text-start ff-secondary fw-semibold d-flex gap-2 align-items-center
|
|
27
|
+
{{{ if template.account/shares }}}active{{{ end }}}">
|
|
28
|
+
<div class="flex-grow-1">[[user:shares]]</div>
|
|
29
|
+
<span class="flex-shrink-0 text-xs" title="{counts.shares}">{humanReadableNumber(counts.shares)}</span>
|
|
30
|
+
</a>
|
|
31
|
+
|
|
32
|
+
<a href="{config.relative_path}/user/{userslug}/groups" class="btn btn-ghost btn-sm text-start ff-secondary fw-semibold d-flex gap-2 align-items-center
|
|
24
33
|
{{{ if template.account/groups }}}active{{{ end }}}">
|
|
25
34
|
<div class="flex-grow-1">[[global:header.groups]]</div>
|
|
26
35
|
<span class="flex-shrink-0 text-xs" title="{counts.groups}">{humanReadableNumber(counts.groups)}</span>
|
|
27
36
|
</a>
|
|
28
37
|
|
|
29
|
-
<a href="{config.relative_path}/user/{userslug}/followers" class="btn-ghost ff-secondary fw-semibold
|
|
38
|
+
<a href="{config.relative_path}/user/{userslug}/followers" class="btn btn-ghost btn-sm text-start ff-secondary fw-semibold d-flex gap-2 align-items-center
|
|
30
39
|
{{{ if template.account/followers }}}active{{{ end }}}">
|
|
31
40
|
<div class="flex-grow-1">[[user:followers]]</div>
|
|
32
41
|
<span class="flex-shrink-0 text-xs" title="{counts.followers}">{humanReadableNumber(counts.followers)}</span>
|
|
33
42
|
</a>
|
|
34
43
|
|
|
35
|
-
<a href="{config.relative_path}/user/{userslug}/following" class="btn-ghost ff-secondary fw-semibold
|
|
44
|
+
<a href="{config.relative_path}/user/{userslug}/following" class="btn btn-ghost btn-sm text-start ff-secondary fw-semibold d-flex gap-2 align-items-center
|
|
36
45
|
{{{ if template.account/following }}}active{{{ end }}}">
|
|
37
46
|
<div class="flex-grow-1">[[user:following]]</div>
|
|
38
47
|
<span class="flex-shrink-0 text-xs" title="{counts.following}">{humanReadableNumber(counts.following)}</span>
|
|
39
48
|
</a>
|
|
40
49
|
|
|
41
50
|
{{{ if canEdit }}}
|
|
42
|
-
<a href="{config.relative_path}/user/{userslug}/categories" class="btn-ghost ff-secondary fw-semibold
|
|
51
|
+
<a href="{config.relative_path}/user/{userslug}/categories" class="btn btn-ghost btn-sm text-start ff-secondary fw-semibold d-flex gap-2 align-items-center
|
|
43
52
|
{{{ if template.account/categories }}}active{{{ end }}}">
|
|
44
53
|
<div class="flex-grow-1">[[user:watched-categories]]</div>
|
|
45
54
|
<span class="flex-shrink-0 text-xs" title="{counts.categoriesWatched}">{counts.categoriesWatched}</span>
|
|
46
55
|
</a>
|
|
47
56
|
{{{ if isSelf }}}
|
|
48
|
-
<a href="{config.relative_path}/user/{userslug}/tags" class="btn-ghost ff-secondary fw-semibold
|
|
57
|
+
<a href="{config.relative_path}/user/{userslug}/tags" class="btn btn-ghost btn-sm text-start ff-secondary fw-semibold d-flex gap-2 align-items-center
|
|
49
58
|
{{{ if template.account/tags }}}active{{{ end }}}">
|
|
50
59
|
<div class="flex-grow-1">[[user:watched-tags]]</div>
|
|
51
60
|
<span class="flex-shrink-0 text-xs" title="{counts.tagsWatched}">{counts.tagsWatched}</span>
|
|
52
61
|
</a>
|
|
53
62
|
{{{ end }}}
|
|
54
63
|
|
|
55
|
-
<a href="{config.relative_path}/user/{userslug}/blocks" class="btn-ghost ff-secondary fw-semibold
|
|
64
|
+
<a href="{config.relative_path}/user/{userslug}/blocks" class="btn btn-ghost btn-sm text-start ff-secondary fw-semibold d-flex gap-2 align-items-center
|
|
56
65
|
{{{ if template.account/blocks }}}active{{{ end }}}">
|
|
57
66
|
<div class="flex-grow-1">[[user:blocked-users]]</div>
|
|
58
67
|
<span class="flex-shrink-0 text-xs" title="{counts.blocks}">{humanReadableNumber(counts.blocks)}</span>
|
|
59
68
|
</a>
|
|
60
69
|
|
|
61
|
-
<a href="{config.relative_path}/user/{userslug}/uploads" class="btn-ghost ff-secondary fw-semibold
|
|
70
|
+
<a href="{config.relative_path}/user/{userslug}/uploads" class="btn btn-ghost btn-sm text-start ff-secondary fw-semibold d-flex gap-2 align-items-center
|
|
62
71
|
{{{ if template.account/uploads }}}active{{{ end }}}">
|
|
63
72
|
<div class="flex-grow-1">[[global:uploads]]</div>
|
|
64
73
|
<span class="flex-shrink-0 text-xs" title="{counts.uploaded}">{humanReadableNumber(counts.uploaded)}</span>
|
|
@@ -67,15 +76,20 @@
|
|
|
67
76
|
|
|
68
77
|
{{{ if (loggedIn && (!isSelf && !banned)) }}}
|
|
69
78
|
<hr class="w-100 my-2"/>
|
|
70
|
-
|
|
79
|
+
|
|
80
|
+
<a href="#" component="account/flag" class="btn btn-ghost btn-sm ff-secondary d-flex align-items-center gap-2 text-start {{{if flagId }}}hidden{{{end}}}">
|
|
71
81
|
<i class="flex-shrink-0 fa-solid fa-flag text-danger"></i>
|
|
72
82
|
<div class="flex-grow-1 text-nowrap">[[user:flag-profile]]</div>
|
|
73
83
|
</a>
|
|
74
|
-
<a href="#" component="account/
|
|
84
|
+
<a href="#" component="account/already-flagged" class="btn btn-ghost btn-sm ff-secondary d-flex align-items-center gap-2 text-start {{{if !flagId }}}hidden{{{end}}}" data-flag-id="{flagId}">
|
|
85
|
+
<i class="flex-shrink-0 fa-solid fa-flag text-danger"></i>
|
|
86
|
+
<div class="flex-grow-1 text-nowrap">[[user:profile-flagged]]</div>
|
|
87
|
+
</a>
|
|
88
|
+
<a href="#" component="account/block" class="btn btn-ghost btn-sm ff-secondary d-flex align-items-center gap-2 text-start {{{ if isBlocked }}}hidden{{{ end }}}">
|
|
75
89
|
<i class="flex-shrink-0 fa-solid fa-ban text-danger"></i>
|
|
76
90
|
<div class="flex-grow-1 text-nowrap">[[user:block-user]]</div>
|
|
77
91
|
</a>
|
|
78
|
-
<a href="#" component="account/unblock" class="btn-ghost-sm ff-secondary {{{ if !isBlocked }}}hidden{{{ end }}}">
|
|
92
|
+
<a href="#" component="account/unblock" class="btn btn-ghost btn-sm ff-secondary d-flex align-items-center gap-2 text-start {{{ if !isBlocked }}}hidden{{{ end }}}">
|
|
79
93
|
<i class="flex-shrink-0 fa-solid fa-ban text-danger"></i>
|
|
80
94
|
<div class="flex-grow-1 text-nowrap">[[user:unblock-user]]</div>
|
|
81
95
|
</a>
|
|
@@ -83,18 +97,18 @@
|
|
|
83
97
|
|
|
84
98
|
{{{ if canEdit }}}
|
|
85
99
|
<hr class="w-100 my-2"/>
|
|
86
|
-
<a href="{config.relative_path}/user/{userslug}/edit" class="btn-ghost-sm ff-secondary text-xs
|
|
100
|
+
<a href="{config.relative_path}/user/{userslug}/edit" class="btn btn-ghost btn-sm ff-secondary text-xs text-start
|
|
87
101
|
{{{ if template.account/edit }}}active{{{ end }}}">
|
|
88
102
|
<div class="flex-grow-1">[[user:edit-profile]]</div>
|
|
89
103
|
</a>
|
|
90
|
-
<a href="{config.relative_path}/user/{userslug}/settings" class="btn-ghost-sm ff-secondary text-xs
|
|
104
|
+
<a href="{config.relative_path}/user/{userslug}/settings" class="btn btn-ghost btn-sm ff-secondary text-xs text-start
|
|
91
105
|
{{{ if template.account/settings }}}active{{{ end }}}">
|
|
92
106
|
<div class="flex-grow-1">[[user:settings]]</div>
|
|
93
107
|
</a>
|
|
94
108
|
{{{ end }}}
|
|
95
109
|
|
|
96
110
|
{{{ each profile_links }}}
|
|
97
|
-
<a href="{config.relative_path}/user/{userslug}/{./route}" class="btn-ghost-sm ff-secondary text-xs plugin-link {{{ if ./public }}}public{{{ else }}}private{{{ end }}} {{{ if (url == ./url) }}}active{{{ end }}}" id="{./id}">
|
|
111
|
+
<a href="{config.relative_path}/user/{userslug}/{./route}" class="btn btn-ghost btn-sm ff-secondary text-xs text-start plugin-link {{{ if ./public }}}public{{{ else }}}private{{{ end }}} {{{ if (url == ./url) }}}active{{{ end }}}" id="{./id}">
|
|
98
112
|
<div class="flex-grow-1">{./name}</div>
|
|
99
113
|
</a>
|
|
100
114
|
{{{end}}}
|
|
@@ -1,26 +1,16 @@
|
|
|
1
|
-
<script type="application/ld+json">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
"name": "{config.siteTitle}",
|
|
10
|
-
"item": "{breadcrumbs.0.url}"
|
|
11
|
-
}
|
|
12
|
-
{{{ each breadcrumbs }}}
|
|
13
|
-
{{{ if !@first}}}
|
|
14
|
-
,{
|
|
15
|
-
"@type": "ListItem",
|
|
16
|
-
"position": {increment(@index, "1")},
|
|
17
|
-
"name": "{stripTags(./text)}"
|
|
18
|
-
{{{ if !@last }}}
|
|
19
|
-
,"item": "{./url}"
|
|
20
|
-
{{{ end }}}
|
|
21
|
-
}
|
|
22
|
-
{{{ end }}}
|
|
23
|
-
{{{ end }}}
|
|
24
|
-
]
|
|
1
|
+
<script type="application/ld+json">{
|
|
2
|
+
"@context": "https://schema.org",
|
|
3
|
+
"@type": "BreadcrumbList",
|
|
4
|
+
"itemListElement": [{
|
|
5
|
+
"@type": "ListItem",
|
|
6
|
+
"position": 1,
|
|
7
|
+
"name": "{config.siteTitle}",
|
|
8
|
+
"item": "{breadcrumbs.0.url}"
|
|
25
9
|
}
|
|
26
|
-
|
|
10
|
+
{{{ each breadcrumbs }}}{{{ if !@first}}},{
|
|
11
|
+
"@type": "ListItem",
|
|
12
|
+
"position": {increment(@index, "1")},
|
|
13
|
+
"name": "{stripTags(./text)}"
|
|
14
|
+
{{{ if !@last }}},"item": "{./url}"{{{ end }}}
|
|
15
|
+
}{{{ end }}}{{{ end }}}
|
|
16
|
+
]}</script>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<div class="flex-shrink-0">
|
|
6
6
|
{buildCategoryIcon(@value, "40px", "rounded-1")}
|
|
7
7
|
</div>
|
|
8
|
-
<div class="flex-grow-1 d-flex flex-wrap gap-1">
|
|
8
|
+
<div class="flex-grow-1 d-flex flex-wrap gap-1 me-0 me-lg-2">
|
|
9
9
|
<h2 class="title text-break fs-4 fw-semibold m-0 tracking-tight w-100">
|
|
10
10
|
<!-- IMPORT partials/categories/link.tpl -->
|
|
11
11
|
</h2>
|
|
@@ -16,23 +16,23 @@
|
|
|
16
16
|
{{{ end }}}
|
|
17
17
|
{{{ if !config.hideSubCategories }}}
|
|
18
18
|
{{{ if ./children.length }}}
|
|
19
|
-
<
|
|
19
|
+
<ul class="list-unstyled category-children row row-cols-1 row-cols-md-2 g-2 my-1 w-100">
|
|
20
20
|
{{{ each ./children }}}
|
|
21
21
|
{{{ if !./isSection }}}
|
|
22
|
-
<
|
|
23
|
-
<div class="d-flex
|
|
24
|
-
<i class="fa fa-fw fa-caret-right text-primary"></i>
|
|
22
|
+
<li class="category-children-item small">
|
|
23
|
+
<div class="d-flex gap-1">
|
|
24
|
+
<i class="fa fa-fw fa-caret-right text-primary" style="line-height: var(--bs-body-line-height);"></i>
|
|
25
25
|
<a href="{{{ if ./link }}}{./link}{{{ else }}}{config.relative_path}/category/{./slug}{{{ end }}}" class="text-reset fw-semibold">{./name}</a>
|
|
26
26
|
</div>
|
|
27
|
-
</
|
|
27
|
+
</li>
|
|
28
28
|
{{{ end }}}
|
|
29
29
|
{{{ end }}}
|
|
30
|
-
</
|
|
30
|
+
</ul>
|
|
31
31
|
{{{ end }}}
|
|
32
32
|
{{{ end }}}
|
|
33
33
|
</div>
|
|
34
34
|
</div>
|
|
35
|
-
{{{ if
|
|
35
|
+
{{{ if !./link }}}
|
|
36
36
|
<div class="d-flex col-lg-5 col-12 align-content-stretch">
|
|
37
37
|
<div class="meta stats d-none d-lg-grid col-6 gap-1 pe-2 text-muted" style="grid-template-columns: 1fr 1fr;">
|
|
38
38
|
<div class="card card-header border-0 p-2 overflow-hidden rounded-1 d-flex flex-column align-items-center">
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
{{{ if @first }}}
|
|
4
4
|
<div component="category/posts" class="ps-2 text-xs d-flex flex-column h-100 gap-1">
|
|
5
5
|
<div class="text-nowrap text-truncate">
|
|
6
|
-
<a class="text-decoration-none" href="{config.relative_path}/user/{./user.userslug}">{buildAvatar(posts.user, "18px", true
|
|
6
|
+
<a class="text-decoration-none avatar-tooltip" title="{./user.displayname}" href="{config.relative_path}/user/{./user.userslug}">{buildAvatar(posts.user, "18px", true)}</a>
|
|
7
7
|
<a class="permalink text-muted timeago text-xs" href="{config.relative_path}/topic/{./topic.slug}{{{ if ./index }}}/{./index}{{{ end }}}" title="{./timestampISO}" aria-label="[[global:lastpost]]"></a>
|
|
8
8
|
</div>
|
|
9
9
|
<div class="post-content text-xs text-break line-clamp-sm-2 lh-sm position-relative flex-fill">
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
{{{end}}}
|
|
14
14
|
</ul>
|
|
15
15
|
{{{ if hasMoreSubCategories}}}
|
|
16
|
-
<button class="btn-ghost-sm ff-secondary mb-2" component="category/load-more-subcategories">[[category:x-more-categories, {subCategoriesLeft}]]</button>
|
|
16
|
+
<button class="btn btn-ghost btn-sm ff-secondary mb-2" component="category/load-more-subcategories">[[category:x-more-categories, {subCategoriesLeft}]]</button>
|
|
17
17
|
{{{ end }}}
|
|
18
18
|
</div>
|
|
19
19
|
{{{ end }}}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<div class="card-body d-flex flex-column gap-1 border border-top-0 rounded-bottom h-100">
|
|
7
7
|
<div class="d-flex">
|
|
8
8
|
<div class="flex-grow-1 fs-6 fw-semibold">{./displayName}</div>
|
|
9
|
-
<div class="flex-shrink-0 text-sm"><i class="text-muted fa-solid fa-user"></i> {./memberCount}</div>
|
|
9
|
+
<div class="flex-shrink-0 text-sm"><i class="text-muted fa-solid fa-user"></i> {formattedNumber(./memberCount)}</div>
|
|
10
10
|
</div>
|
|
11
11
|
<div class="text-sm">{./description}</div>
|
|
12
12
|
</div>
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<button component="groups/members/add" type="button" class="btn btn-primary btn-sm me-3" title="[[groups:details.add-member]]"><i class="fa fa-user-plus"></i> [[groups:details.add-member]]</button>
|
|
5
5
|
</div>
|
|
6
6
|
{{{ end }}}
|
|
7
|
-
<div
|
|
7
|
+
<div>
|
|
8
8
|
<div class="input-group">
|
|
9
9
|
<input class="form-control form-control-sm" type="text" component="groups/members/search" placeholder="[[global:search]]"/>
|
|
10
10
|
<button class="btn btn-primary btn-sm search-button" type="button">
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
<div class="flex-shrink-0 pe-2 border-end-md text-sm mb-3 flex-basis-md-200">
|
|
2
2
|
<div class="nav sticky-md-top d-flex flex-row flex-md-column flex-wrap gap-1" style="top: 1rem; z-index: 1;">
|
|
3
|
-
<button data-bs-toggle="tab" data-bs-target="#groups-posts" class="btn-ghost ff-secondary fw-semibold {{{ if template.groups/details }}}active{{{ end }}}">
|
|
3
|
+
<button data-bs-toggle="tab" data-bs-target="#groups-posts" class="btn btn-ghost btn-sm text-start d-flex align-items-center ff-secondary fw-semibold {{{ if template.groups/details }}}active{{{ end }}}">
|
|
4
4
|
<div class="flex-grow-1">[[global:posts]]</div>
|
|
5
5
|
</button>
|
|
6
|
-
<button data-bs-toggle="tab" data-bs-target="#groups-members" class="btn-ghost ff-secondary fw-semibold">
|
|
6
|
+
<button data-bs-toggle="tab" data-bs-target="#groups-members" class="btn btn-ghost btn-sm text-start d-flex align-items-center ff-secondary fw-semibold gap-2">
|
|
7
7
|
<div class="flex-grow-1">[[groups:members]]</div>
|
|
8
|
-
<span component="group/member/count" class="flex-shrink-0 text-xs" title="{group.memberCount}">{humanReadableNumber(group.memberCount)}</span>
|
|
8
|
+
<span component="group/member/count" class="flex-shrink-0 text-xs lh-1" title="{group.memberCount}">{humanReadableNumber(group.memberCount)}</span>
|
|
9
9
|
</button>
|
|
10
10
|
|
|
11
11
|
{{{ if group.isOwner }}}
|
|
12
|
-
<button data-bs-toggle="tab" data-bs-target="#groups-pending" class="btn-ghost ff-secondary fw-semibold">
|
|
12
|
+
<button data-bs-toggle="tab" data-bs-target="#groups-pending" class="btn btn-ghost btn-sm text-start d-flex align-items-center ff-secondary fw-semibold gap-2">
|
|
13
13
|
<div class="flex-grow-1">[[groups:details.pending]]</div>
|
|
14
|
-
<span component="group/pending/count" class="flex-shrink-0 text-xs" title="{group.pending.length}">{humanReadableNumber(group.pending.length)}</span>
|
|
14
|
+
<span component="group/pending/count" class="flex-shrink-0 text-xs lh-1" title="{group.pending.length}">{humanReadableNumber(group.pending.length)}</span>
|
|
15
15
|
</button>
|
|
16
16
|
|
|
17
|
-
<button data-bs-toggle="tab" data-bs-target="#groups-invited" class="btn-ghost ff-secondary fw-semibold">
|
|
17
|
+
<button data-bs-toggle="tab" data-bs-target="#groups-invited" class="btn btn-ghost btn-sm text-start d-flex align-items-center ff-secondary fw-semibold gap-2">
|
|
18
18
|
<div class="flex-grow-1">[[groups:details.invited]]</div>
|
|
19
|
-
<span component="group/invited/count" class="flex-shrink-0 text-xs" title="{group.invited.length}">{humanReadableNumber(group.invited.length)}</span>
|
|
19
|
+
<span component="group/invited/count" class="flex-shrink-0 text-xs lh-1" title="{group.invited.length}">{humanReadableNumber(group.invited.length)}</span>
|
|
20
20
|
</button>
|
|
21
21
|
|
|
22
|
-
<button data-bs-toggle="tab" data-bs-target="#groups-admin" class="btn-ghost ff-secondary fw-semibold">
|
|
22
|
+
<button data-bs-toggle="tab" data-bs-target="#groups-admin" class="btn btn-ghost btn-sm text-start d-flex align-items-center ff-secondary fw-semibold">
|
|
23
23
|
<div class="flex-grow-1">[[global:header.admin]]</div>
|
|
24
24
|
</button>
|
|
25
25
|
{{{ end }}}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
{{{ if (brand:logo || config.showSiteTitle)}}}
|
|
1
|
+
{{{ if (brand:logo || (config.showSiteTitle || widgets.brand-header.length)) }}}
|
|
2
2
|
<div class="container-lg px-md-4 brand-container">
|
|
3
3
|
<div class="col-12 d-flex border-bottom pb-3 {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}">
|
|
4
|
+
{{{ if (brand:logo || config.showSiteTitle) }}}
|
|
4
5
|
<div component="brand/wrapper" class="d-flex align-items-center gap-3 p-2 rounded-1 align-content-stretch ">
|
|
5
6
|
{{{ if brand:logo }}}
|
|
6
7
|
<a component="brand/anchor" href="{{{ if brand:logo:url }}}{brand:logo:url}{{{ else }}}{relative_path}/{{{ end }}}" title="[[global:header.brand-logo]]">
|
|
@@ -14,6 +15,7 @@
|
|
|
14
15
|
</a>
|
|
15
16
|
{{{ end }}}
|
|
16
17
|
</div>
|
|
18
|
+
{{{ end }}}
|
|
17
19
|
{{{ if widgets.brand-header.length }}}
|
|
18
20
|
<div data-widget-area="brand-header" class="flex-fill gap-3 p-2 align-self-center">
|
|
19
21
|
{{{each widgets.brand-header}}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<div component="bottombar" class="bottombar d-flex flex-column d-lg-none fixed-bottom ff-secondary gap-1 align-items-center">
|
|
1
|
+
<div component="bottombar" class="bottombar d-flex flex-column d-lg-none fixed-bottom ff-secondary gap-1 align-items-center" style="bottom: 0px;">
|
|
2
2
|
|
|
3
3
|
<!-- IMPORT partials/topic/navigator-mobile.tpl -->
|
|
4
4
|
|
|
@@ -15,16 +15,13 @@
|
|
|
15
15
|
{{{ each navigation }}}
|
|
16
16
|
{{{ if displayMenuItem(@root, @index) }}}
|
|
17
17
|
<li class="nav-item {./class}{{{ if ./dropdown }}} dropend{{{ end }}}" title="{./title}">
|
|
18
|
-
<a class="nav-link navigation-link px-3 py-2 {{{ if ./dropdown }}}dropdown-toggle{{{ end }}}"
|
|
19
|
-
{{{ if ./dropdown }}} href="#" role="button" data-bs-toggle="collapse" data-bs-target="#collapse-target-{@index}" onclick="event.stopPropagation();" {{{ else }}} href="{./route}"{{{ end }}} {{{ if ./id }}}id="{./id}"{{{ end }}}{{{ if ./targetBlank }}} target="_blank"{{{ end }}}>
|
|
18
|
+
<a class="nav-link navigation-link px-3 py-2 {{{ if ./dropdown }}}dropdown-toggle{{{ end }}}" {{{ if ./dropdown }}} href="#" role="button" data-bs-toggle="collapse" data-bs-target="#collapse-target-{@index}" onclick="event.stopPropagation();" {{{ else }}} href="{./route}"{{{ end }}} {{{ if ./id }}}id="{./id}"{{{ end }}}{{{ if ./targetBlank }}} target="_blank"{{{ end }}}>
|
|
20
19
|
<span class="d-inline-flex justify-content-between align-items-center w-100">
|
|
21
20
|
<span class="text-nowrap">
|
|
22
21
|
{{{ if ./iconClass }}}
|
|
23
22
|
<i class="fa fa-fw {./iconClass}" data-content="{./content}"></i>
|
|
24
23
|
{{{ end }}}
|
|
25
|
-
{{{ if ./text }}}
|
|
26
|
-
<span class="nav-text px-2 fw-semibold">{./text}</span>
|
|
27
|
-
{{{ end }}}
|
|
24
|
+
{{{ if ./text }}}<span class="nav-text px-2 fw-semibold">{./text}</span>{{{ end }}}
|
|
28
25
|
</span>
|
|
29
26
|
<span component="navigation/count" class="badge rounded-1 bg-primary {{{ if !./content }}}hidden{{{ end }}}">{./content}</span>
|
|
30
27
|
</span>
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
{{{ each notifications }}}
|
|
9
9
|
<div class="{./readClass}" data-nid="{./nid}" data-path="{./path}" {{{ if ./pid }}}data-pid="{./pid}"{{{ end }}}{{{ if ./tid }}}data-tid="{./tid}"{{{ end }}}>
|
|
10
10
|
<div class="d-flex gap-1 justify-content-between">
|
|
11
|
-
<div class="btn-ghost-sm d-flex gap-2 flex-grow-1 align-items-start">
|
|
11
|
+
<div class="btn btn-ghost btn-sm d-flex gap-2 flex-grow-1 text-start align-items-start">
|
|
12
12
|
<a class="flex-grow-0 flex-shrink-0" href="{{{ if ./user.userslug}}}{config.relative_path}/user/{./user.userslug}{{{ else }}}#{{{ end }}}">
|
|
13
13
|
{{{ if (./image && ./from) }}}
|
|
14
14
|
<img class="avatar avatar-rounded" style="--avatar-size: 32px;" src="{./image}" />
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
</div>
|
|
31
31
|
<div>
|
|
32
32
|
{{{ if ./nid }}}
|
|
33
|
-
<button class="mark-read btn-ghost-sm flex-grow-0 flex-shrink-0 p-1" style="width: 1.5rem; height: 1.5rem;">
|
|
33
|
+
<button class="mark-read btn btn-ghost btn-sm d-flex align-items-center justify-content-center flex-grow-0 flex-shrink-0 p-1" style="width: 1.5rem; height: 1.5rem;">
|
|
34
34
|
<i class="unread fa fa-2xs fa-circle text-primary {{{ if ./read }}}hidden{{{ end }}}" aria-label="[[unread:mark-as-read]]"></i>
|
|
35
35
|
<i class="read fa fa-2xs fa-circle-o text-secondary {{{ if !./read }}}hidden{{{ end }}}" aria-label="[[unread:mark-as-unread]]"></i>
|
|
36
36
|
</button>
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<div class="d-flex flex-row p-2 text-bg-light border rounded w-100 align-items-center">
|
|
4
4
|
<div class="d-flex me-auto mb-0 gap-2 align-items-center flex-wrap">
|
|
5
5
|
{{{ if loggedIn }}}
|
|
6
|
-
<button component="topic/mark-unread" class="btn-ghost-sm ff-secondary d-flex gap-2 align-items-center">
|
|
6
|
+
<button component="topic/mark-unread" class="btn btn-ghost btn-sm ff-secondary d-flex gap-2 align-items-center">
|
|
7
7
|
<i class="fa fa-fw fa-inbox text-primary"></i>
|
|
8
8
|
<span class="d-none d-md-inline fw-semibold">[[topic:mark-unread]]</span>
|
|
9
9
|
</button>
|
|
@@ -14,13 +14,11 @@
|
|
|
14
14
|
<!-- IMPORT partials/topic/tools.tpl -->
|
|
15
15
|
|
|
16
16
|
{{{ if (!feeds:disableRSS && rssFeedUrl) }}}
|
|
17
|
-
<a class="btn-ghost-sm d-none d-lg-flex align-self-stretch" target="_blank" href="{rssFeedUrl}" title="[[global:rss-feed]]"><i class="fa fa-rss text-primary"></i></a>
|
|
17
|
+
<a class="btn btn-ghost btn-sm d-none d-lg-flex align-items-center align-self-stretch" target="_blank" href="{rssFeedUrl}" title="[[global:rss-feed]]"><i class="fa fa-rss text-primary"></i></a>
|
|
18
18
|
{{{ end }}}
|
|
19
19
|
|
|
20
20
|
{{{ if browsingUsers }}}
|
|
21
|
-
<div class="hidden-xs">
|
|
22
|
-
<!-- IMPORT partials/topic/browsing-users.tpl -->
|
|
23
|
-
</div>
|
|
21
|
+
<div class="hidden-xs"><!-- IMPORT partials/topic/browsing-users.tpl --></div>
|
|
24
22
|
{{{ end }}}
|
|
25
23
|
</div>
|
|
26
24
|
<!-- IMPORT partials/topic/reply-button.tpl -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<li component="post" class="posts-list-item {{{ if ./deleted }}} deleted{{{ else }}}{{{ if ./topic.deleted }}} deleted{{{ end }}}{{{ end }}}{{{ if ./topic.scheduled }}} scheduled{{{ end }}}" data-pid="{./pid}" data-uid="{./uid}">
|
|
2
2
|
<hr/>
|
|
3
|
-
<a class="topic-title fw-semibold fs-5 mb-2 text-reset text-break d-block" href="{config.relative_path}/post/{./pid}">
|
|
3
|
+
<a class="topic-title fw-semibold fs-5 mb-2 text-reset text-break d-block" href="{config.relative_path}/post/{encodeURIComponent(./pid)}">
|
|
4
4
|
{{{ if ./isMainPost }}}<i class="fa fa-book text-muted" title="[[topic:topic]]"></i> {{{ end }}}{./topic.title}
|
|
5
5
|
</a>
|
|
6
6
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{{{ if multiplePages }}}
|
|
2
2
|
<div class="show-more-container">
|
|
3
3
|
<div class="text-center d-block d-md-none">
|
|
4
|
-
<a href="{url}" class="btn btn-primary">
|
|
4
|
+
<a href="{url}" class="btn btn-sm btn-primary">
|
|
5
5
|
[[search:see-more-results, {matchCount}]]
|
|
6
6
|
</a>
|
|
7
7
|
</div>
|
|
@@ -9,19 +9,19 @@
|
|
|
9
9
|
</div>
|
|
10
10
|
{{{ end }}}
|
|
11
11
|
|
|
12
|
-
<ul id="quick-search-results" class="quick-search-results list-unstyled mb-0 p-0 pe-1 overflow-auto overscroll-behavior-contain ff-base ghost-scrollbar" style="max-width:
|
|
12
|
+
<ul id="quick-search-results" class="quick-search-results list-unstyled mb-0 p-0 pe-1 overflow-auto overscroll-behavior-contain ff-base ghost-scrollbar" style="max-width: {dropdown.maxWidth}; max-height: {dropdown.maxHeight};">
|
|
13
13
|
<li role="separator" class="dropdown-divider d-none d-md-block"></li>
|
|
14
14
|
{{{ each posts }}}
|
|
15
15
|
<li data-tid="{posts.topic.tid}" data-pid="{posts.pid}" class="d-flex flex-column gap-1">
|
|
16
|
-
<a href="{config.relative_path}/post/{posts.pid}"
|
|
17
|
-
class="btn-ghost-sm ff-secondary rounded-1 text-reset d-block text-truncate px-2 py-1">
|
|
16
|
+
<a href="{config.relative_path}/post/{encodeURIComponent(posts.pid)}"
|
|
17
|
+
class="btn btn-ghost btn-sm ff-secondary rounded-1 text-start text-reset d-block text-truncate px-2 py-1">
|
|
18
18
|
<span class="quick-search-title fw-semibold text-sm">{posts.topic.title}</span>
|
|
19
19
|
<br/>
|
|
20
20
|
<p class="snippet text-xs text-break text-wrap mb-0">
|
|
21
21
|
{posts.snippet}
|
|
22
22
|
</p>
|
|
23
23
|
</a>
|
|
24
|
-
<div class="d-flex gap-
|
|
24
|
+
<div class="d-flex gap-2 post-info px-2 text-xs">
|
|
25
25
|
<div class="category-item d-inline-block ff-secondary">
|
|
26
26
|
{function.buildCategoryLabel, posts.category, "span"}
|
|
27
27
|
</div>
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
<ul class="dropdown-menu p-1 text-sm" style="width: 300px;" role="menu">
|
|
177
177
|
<li class="px-3 py-1 d-flex flex-column gap-2">
|
|
178
178
|
<button id="save-preferences" class="btn btn-primary">[[search:save-preferences]]</button>
|
|
179
|
-
<button id="clear-preferences" class="btn-ghost border">[[search:clear-preferences]]</button>
|
|
179
|
+
<button id="clear-preferences" class="btn btn-ghost border">[[search:clear-preferences]]</button>
|
|
180
180
|
</li>
|
|
181
181
|
</ul>
|
|
182
182
|
</div>
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
{{{ each posts }}}
|
|
18
18
|
<hr/>
|
|
19
19
|
<div class="topic-row mb-3">
|
|
20
|
-
<a class="topic-title fw-semibold fs-5 text-reset text-break" href="{config.relative_path}/post/{./pid}">
|
|
20
|
+
<a class="topic-title fw-semibold fs-5 text-reset text-break" href="{config.relative_path}/post/{encodeURIComponent(./pid)}">
|
|
21
21
|
{{{ if !./isMainPost }}}RE: {{{ end }}}{./topic.title}
|
|
22
22
|
</a>
|
|
23
23
|
<div class="post-body d-flex flex-column gap-1">
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
</div>
|
|
25
25
|
</div>
|
|
26
26
|
<div>
|
|
27
|
-
<button class="mark-read btn-ghost-sm" style="width: 1.5rem; height: 1.5rem;">
|
|
27
|
+
<button class="mark-read btn btn-ghost btn-sm d-flex align-items-center justify-content-center flex-grow-0 flex-shrink-0 p-1" style="width: 1.5rem; height: 1.5rem;">
|
|
28
28
|
<i class="unread fa fa-2xs fa-circle text-primary"></i>
|
|
29
29
|
</button>
|
|
30
30
|
</div>
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
</div>
|
|
32
32
|
</div>
|
|
33
33
|
<div>
|
|
34
|
-
<button class="mark-read btn-ghost-sm" style="width: 1.5rem; height: 1.5rem;">
|
|
34
|
+
<button class="mark-read btn btn-ghost btn-sm d-flex align-items-center justify-content-center flex-grow-0 flex-shrink-0 p-1" style="width: 1.5rem; height: 1.5rem;">
|
|
35
35
|
<i class="unread fa fa-2xs fa-circle text-primary"></i>
|
|
36
36
|
</button>
|
|
37
37
|
</div>
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
<div class="d-flex gap-1">
|
|
11
11
|
<input autocomplete="off" type="text" class="form-control" placeholder="[[global:search]]" name="query" value="" aria-label="[[search:type-to-search]]">
|
|
12
12
|
|
|
13
|
-
<a class="btn-ghost advanced-search-link" href="{config.relative_path}/search" title="[[search:advanced-search]]">
|
|
14
|
-
<i class="fa fa-gears
|
|
13
|
+
<a class="btn btn-ghost advanced-search-link p-2" href="{config.relative_path}/search" title="[[search:advanced-search]]">
|
|
14
|
+
<i class="fa fa-gears text-muted"></i>
|
|
15
15
|
</a>
|
|
16
16
|
</div>
|
|
17
17
|
|
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
{{{ each navigation }}}
|
|
4
4
|
{{{ if displayMenuItem(@root, @index) }}}
|
|
5
5
|
<li class="nav-item mx-2 {./class}{{{ if ./dropdown }}} dropend{{{ end }}}" title="{./title}">
|
|
6
|
-
<a class="nav-link navigation-link d-flex gap-2 justify-content-between align-items-center {{{ if ./dropdown }}}dropdown-toggle{{{ end }}}"
|
|
7
|
-
{{{ if ./dropdown }}} href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" {{{ else }}} href="{./route}"{{{ end }}} {{{ if ./id }}}id="{./id}"{{{ end }}}{{{ if ./targetBlank }}} target="_blank"{{{ end }}} {{{ if ./text }}}aria-label="{./text}"{{{ end }}}>
|
|
6
|
+
<a class="nav-link navigation-link d-flex gap-2 justify-content-between align-items-center {{{ if ./dropdown }}}dropdown-toggle{{{ end }}}" {{{ if ./dropdown }}} href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" {{{ else }}} href="{./route}"{{{ end }}} {{{ if ./id }}}id="{./id}"{{{ end }}}{{{ if ./targetBlank }}} target="_blank"{{{ end }}} {{{ if ./text }}}aria-label="{./text}"{{{ end }}}>
|
|
8
7
|
<span class="d-flex gap-2 align-items-center text-nowrap truncate-open">
|
|
9
8
|
<span class="position-relative">
|
|
10
9
|
{{{ if ./iconClass }}}
|
|
@@ -12,9 +11,7 @@
|
|
|
12
11
|
<span component="navigation/count" class="visible-closed position-absolute top-0 start-100 translate-middle badge rounded-1 bg-primary {{{ if !./content }}}hidden{{{ end }}}">{./content}</span>
|
|
13
12
|
{{{ end }}}
|
|
14
13
|
</span>
|
|
15
|
-
{{{ if ./text }}}
|
|
16
|
-
<span class="nav-text small visible-open fw-semibold text-truncate">{./text}</span>
|
|
17
|
-
{{{ end }}}
|
|
14
|
+
{{{ if ./text }}}<span class="nav-text small visible-open fw-semibold text-truncate">{./text}</span>{{{ end }}}
|
|
18
15
|
</span>
|
|
19
16
|
<span component="navigation/count" class="visible-open badge rounded-1 bg-primary {{{ if !./content }}}hidden{{{ end }}}">{./content}</span>
|
|
20
17
|
</a>
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{{{each tags}}}
|
|
2
|
-
<
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
</
|
|
2
|
+
<div>
|
|
3
|
+
<a href="{config.relative_path}/tags/{./valueEncoded}" data-tag="{./valueEscaped}" class="btn btn-ghost ff-base d-flex flex-column gap-1 align-items-start justify-content-start text-truncate p-2">
|
|
4
|
+
<div class="fw-semibold text-nowrap tag-item w-100 text-start text-truncate">{./valueEscaped}</div>
|
|
5
|
+
<div class="text-xs text-muted text-nowrap tag-topic-count">[[global:x-topics, {txEscape(formattedNumber(./score))}]]</div>
|
|
6
|
+
</a>
|
|
7
|
+
</div>
|
|
6
8
|
{{{end}}}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<span class="timeline-text small d-flex align-items-center gap-1 flex-wrap">
|
|
6
6
|
{./text}
|
|
7
7
|
</span>
|
|
8
|
-
{{{ if privileges.isAdminOrMod }}}
|
|
8
|
+
{{{ if (privileges.isAdminOrMod && ./id) }}}
|
|
9
9
|
<span component="topic/event/delete" data-topic-event-id="{./id}" data-topic-event-type="{./type}" class="timeline-text pointer" title="[[topic:delete-event]]"><i class="fa fa-trash"></i></span>
|
|
10
10
|
{{{ end }}}
|
|
11
11
|
</li>
|