nodebb-theme-harmony 2.0.1 → 2.0.3
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 -3
- package/README.md +22 -22
- package/lib/controllers.js +29 -29
- package/library.js +183 -183
- package/package.json +48 -48
- package/plugin.json +24 -24
- package/public/.eslintrc +3 -3
- package/public/admin.js +15 -15
- package/public/harmony.js +287 -287
- package/public/settings.js +31 -31
- package/renovate.json +6 -6
- package/scss/account.scss +27 -27
- package/scss/category.scss +3 -3
- package/scss/chats.scss +11 -11
- package/scss/common.scss +122 -122
- package/scss/fonts.scss +19 -19
- package/scss/groups.scss +22 -22
- package/scss/harmony.scss +24 -24
- package/scss/header.scss +15 -15
- package/scss/mixins.scss +183 -183
- package/scss/modals.scss +6 -6
- package/scss/modules/breadcrumbs.scss +15 -15
- package/scss/modules/cover.scss +102 -102
- package/scss/modules/filters.scss +7 -7
- package/scss/modules/nprogress.scss +80 -80
- package/scss/modules/paginator.scss +23 -23
- package/scss/modules/tags.scss +5 -5
- package/scss/modules/topic-navigator.scss +52 -52
- package/scss/modules/topics-list.scss +40 -40
- package/scss/modules/user-menu.scss +10 -10
- package/scss/overrides.scss +65 -65
- package/scss/sidebar.scss +188 -188
- package/scss/skins.scss +58 -58
- package/scss/status.scss +24 -24
- package/scss/topic.scss +130 -130
- package/templates/account/blocks.tpl +51 -51
- package/templates/account/categories.tpl +63 -63
- package/templates/account/consent.tpl +73 -73
- package/templates/account/edit/password.tpl +34 -34
- package/templates/account/edit/username.tpl +29 -29
- package/templates/account/edit.tpl +137 -137
- package/templates/account/followers.tpl +14 -14
- package/templates/account/following.tpl +15 -15
- package/templates/account/groups.tpl +15 -15
- package/templates/account/info.tpl +270 -270
- package/templates/account/posts.tpl +35 -35
- package/templates/account/profile.tpl +92 -92
- package/templates/account/sessions.tpl +8 -8
- package/templates/account/settings.tpl +236 -236
- package/templates/account/shares.tpl +19 -19
- package/templates/account/tags.tpl +12 -12
- package/templates/account/theme.tpl +63 -63
- package/templates/account/topics.tpl +44 -44
- package/templates/account/uploads.tpl +37 -37
- package/templates/admin/plugins/harmony.tpl +57 -57
- package/templates/categories.tpl +29 -29
- package/templates/category.tpl +72 -72
- package/templates/footer.tpl +17 -17
- package/templates/groups/details.tpl +86 -86
- package/templates/groups/list.tpl +58 -58
- package/templates/groups/members.tpl +9 -9
- package/templates/header.tpl +45 -45
- package/templates/notifications.tpl +32 -32
- package/templates/partials/account/admin-menu.tpl +36 -36
- package/templates/partials/account/category-item.tpl +22 -22
- package/templates/partials/account/footer.tpl +2 -2
- package/templates/partials/account/header.tpl +98 -98
- package/templates/partials/account/session-list.tpl +18 -18
- package/templates/partials/account/sidebar-left.tpl +116 -116
- package/templates/partials/breadcrumbs-json-ld.tpl +15 -15
- package/templates/partials/breadcrumbs.tpl +12 -12
- package/templates/partials/buttons/newTopic.tpl +22 -22
- package/templates/partials/categories/item.tpl +56 -56
- package/templates/partials/categories/lastpost.tpl +24 -24
- package/templates/partials/categories/link.tpl +4 -4
- package/templates/partials/category/subcategory.tpl +18 -18
- package/templates/partials/category/tags.tpl +3 -3
- package/templates/partials/cookie-consent.tpl +6 -6
- package/templates/partials/groups/admin.tpl +95 -95
- package/templates/partials/groups/invited.tpl +32 -32
- package/templates/partials/groups/list.tpl +15 -15
- package/templates/partials/groups/memberlist.tpl +46 -46
- package/templates/partials/groups/pending.tpl +29 -29
- package/templates/partials/groups/sidebar-left.tpl +27 -27
- package/templates/partials/header/brand.tpl +27 -27
- package/templates/partials/mobile-footer.tpl +95 -95
- package/templates/partials/notifications_list.tpl +44 -44
- package/templates/partials/paginator.tpl +46 -46
- package/templates/partials/post_bar.tpl +27 -27
- package/templates/partials/posts_list.tpl +7 -7
- package/templates/partials/posts_list_item.tpl +19 -19
- package/templates/partials/quick-search-results.tpl +46 -46
- package/templates/partials/search-filters.tpl +183 -183
- package/templates/partials/search-results.tpl +54 -54
- package/templates/partials/sidebar/chats.tpl +45 -45
- package/templates/partials/sidebar/drafts.tpl +63 -63
- package/templates/partials/sidebar/logged-in-menu.tpl +22 -22
- package/templates/partials/sidebar/logged-out-menu.tpl +44 -44
- package/templates/partials/sidebar/notifications.tpl +49 -49
- package/templates/partials/sidebar/search-mobile.tpl +28 -28
- package/templates/partials/sidebar/search.tpl +30 -30
- package/templates/partials/sidebar/user-menu.tpl +103 -103
- package/templates/partials/sidebar-left.tpl +39 -39
- package/templates/partials/sidebar-right.tpl +16 -16
- package/templates/partials/skin-switcher.tpl +50 -50
- package/templates/partials/tags_list.tpl +7 -7
- package/templates/partials/toast.tpl +19 -19
- package/templates/partials/topic/event.tpl +12 -12
- package/templates/partials/topic/navigation-post.tpl +9 -9
- package/templates/partials/topic/navigator-mobile.tpl +61 -61
- package/templates/partials/topic/navigator.tpl +26 -26
- package/templates/partials/topic/necro-post.tpl +5 -5
- package/templates/partials/topic/post-menu-list.tpl +156 -156
- package/templates/partials/topic/post-menu.tpl +4 -4
- package/templates/partials/topic/post-placeholder.tpl +14 -14
- package/templates/partials/topic/post.tpl +146 -146
- package/templates/partials/topic/quickreply.tpl +28 -28
- package/templates/partials/topic/reply-button.tpl +26 -26
- package/templates/partials/topic/selection-tooltip.tpl +2 -2
- package/templates/partials/topic/sort.tpl +27 -27
- package/templates/partials/topic/stats.tpl +14 -14
- package/templates/partials/topic/thumbs.tpl +4 -4
- package/templates/partials/topic/tools.tpl +8 -8
- package/templates/partials/topic/topic-menu-list.tpl +73 -73
- package/templates/partials/topic/watch.tpl +59 -59
- package/templates/partials/topic-filters.tpl +15 -15
- package/templates/partials/topic-list-bar.tpl +54 -54
- package/templates/partials/topic-terms.tpl +15 -15
- package/templates/partials/topics_list.tpl +131 -131
- package/templates/partials/users/item.tpl +39 -39
- package/templates/partials/users_list.tpl +4 -4
- package/templates/partials/users_list_menu.tpl +14 -14
- package/templates/popular.tpl +34 -34
- package/templates/post-queue.tpl +211 -211
- package/templates/recent.tpl +42 -42
- package/templates/search.tpl +46 -46
- package/templates/tag.tpl +34 -34
- package/templates/tags.tpl +49 -49
- package/templates/top.tpl +34 -34
- package/templates/topic.tpl +123 -123
- package/templates/unread.tpl +31 -31
- package/templates/users.tpl +39 -39
- package/templates/world.tpl +66 -66
- package/theme.json +6 -6
|
@@ -1,98 +1,98 @@
|
|
|
1
|
-
<div class="account w-100 mx-auto">
|
|
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};">
|
|
3
|
-
<div class="container">
|
|
4
|
-
{{{ if allowCoverPicture }}}
|
|
5
|
-
{{{ if canEdit }}}
|
|
6
|
-
<div class="controls text-center">
|
|
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>
|
|
10
|
-
</div>
|
|
11
|
-
<a href="#" class="save text-bg-primary">[[groups:cover-save]] <i class="fa fa-fw fa-floppy-o"></i></a>
|
|
12
|
-
<div class="indicator text-bg-primary">[[groups:cover-saving]] <i class="fa fa-fw fa-refresh fa-spin"></i></div>
|
|
13
|
-
{{{ end }}}
|
|
14
|
-
{{{ end }}}
|
|
15
|
-
</div>
|
|
16
|
-
</div>
|
|
17
|
-
|
|
18
|
-
<div class="d-flex flex-column flex-md-row gap-2 w-100 pb-4 mb-4 mt-2 border-bottom">
|
|
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;">
|
|
20
|
-
{buildAvatar(@value, "142px", true)}
|
|
21
|
-
{{{ if (allowProfilePicture && isSelfOrAdminOrGlobalModerator)}}}
|
|
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">
|
|
23
|
-
<span class="upload"><i class="fa fa-fw fa-upload"></i></span>
|
|
24
|
-
</a>
|
|
25
|
-
{{{ end }}}
|
|
26
|
-
</div>
|
|
27
|
-
|
|
28
|
-
<div class="d-flex flex-column flex-md-row mt-1 justify-content-between w-100 gap-2">
|
|
29
|
-
<div class="d-flex flex-grow-1 flex-row gap-2">
|
|
30
|
-
<div class="d-flex flex-column gap-1">
|
|
31
|
-
<h2 class="fullname fw-semibold fs-2 tracking-tight mb-0">{{{ if fullname }}}{fullname}{{{ else }}}{username}{{{ end }}}</h2>
|
|
32
|
-
<div class="d-flex flex-wrap gap-1 text-sm align-items-center">
|
|
33
|
-
<span class="username fw-bold">{{{ if !banned }}}@{username}{{{ else }}}[[user:banned]]{{{ end }}}</span>
|
|
34
|
-
<div class="d-flex align-items-center gap-1 p-1 flex-wrap">
|
|
35
|
-
{{{ if selectedGroup.length }}}
|
|
36
|
-
{{{ each selectedGroup }}}
|
|
37
|
-
{{{ if ./slug }}}
|
|
38
|
-
<!-- IMPORT partials/groups/badge.tpl -->
|
|
39
|
-
{{{ end }}}
|
|
40
|
-
{{{ end }}}
|
|
41
|
-
{{{ end }}}
|
|
42
|
-
</div>
|
|
43
|
-
</div>
|
|
44
|
-
<div class="d-flex gap-2" component="user/badges"></div>
|
|
45
|
-
{{{ if isAdminOrGlobalModeratorOrModerator }}}
|
|
46
|
-
{{{ if banned }}}
|
|
47
|
-
<div class="text-xm text-muted">
|
|
48
|
-
{{{ if banned_until }}}
|
|
49
|
-
[[user:info.banned-until, {banned_until_readable}]]
|
|
50
|
-
{{{ else }}}
|
|
51
|
-
[[user:info.banned-permanently]]
|
|
52
|
-
{{{ end }}}
|
|
53
|
-
</div>
|
|
54
|
-
{{{ end }}}
|
|
55
|
-
{{{ end }}}
|
|
56
|
-
</div>
|
|
57
|
-
</div>
|
|
58
|
-
|
|
59
|
-
<div class="flex-shrink-0 d-flex gap-1 align-self-stretch align-self-md-start justify-content-end">
|
|
60
|
-
{{{ if loggedIn }}}
|
|
61
|
-
{{{ if !isSelf }}}
|
|
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>
|
|
64
|
-
{{{ end }}}
|
|
65
|
-
{{{ end }}}
|
|
66
|
-
|
|
67
|
-
{{{ if (canChat && !banned) }}}
|
|
68
|
-
<div class="btn-group flex-fill">
|
|
69
|
-
<a {{{ if hasPrivateChat }}}component="account/chat"{{{ else }}}component="account/new-chat"{{{ end }}} href="#" class="btn btn-light" role="button">[[user:chat]]</a>
|
|
70
|
-
{{{ if hasPrivateChat}}}
|
|
71
|
-
<button type="button" class="btn btn-light dropdown-toggle flex-0" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
72
|
-
<i class="fa fa-caret-down"></i>
|
|
73
|
-
</button>
|
|
74
|
-
<ul class="dropdown-menu dropdown-menu-end p-1 text-sm" role="menu">
|
|
75
|
-
<li><a class="dropdown-item rounded-1" href="#" component="account/new-chat" role="menuitem"s>[[user:new-chat-with, {username}]]</a></li>
|
|
76
|
-
</ul>
|
|
77
|
-
{{{ end }}}
|
|
78
|
-
</div>
|
|
79
|
-
{{{ end }}}
|
|
80
|
-
{{{ if !isSelf }}}
|
|
81
|
-
{{{ if (isAdmin || (canBan || canMute ))}}}
|
|
82
|
-
<!-- IMPORT partials/account/admin-menu.tpl -->
|
|
83
|
-
{{{ end }}}
|
|
84
|
-
{{{ end }}}
|
|
85
|
-
</div>
|
|
86
|
-
</div>
|
|
87
|
-
</div>
|
|
88
|
-
|
|
89
|
-
<div data-widget-area="header">
|
|
90
|
-
{{{each widgets.header}}}
|
|
91
|
-
{{widgets.header.html}}
|
|
92
|
-
{{{end}}}
|
|
93
|
-
</div>
|
|
94
|
-
|
|
95
|
-
<div class="d-flex flex-column flex-md-row">
|
|
96
|
-
<!-- IMPORT partials/account/sidebar-left.tpl -->
|
|
97
|
-
<div class="account-content flex-grow-1 ps-md-2 ps-lg-3 ps-xl-4" style="min-width: 0;">
|
|
98
|
-
|
|
1
|
+
<div class="account w-100 mx-auto">
|
|
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};">
|
|
3
|
+
<div class="container">
|
|
4
|
+
{{{ if allowCoverPicture }}}
|
|
5
|
+
{{{ if canEdit }}}
|
|
6
|
+
<div class="controls text-center">
|
|
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>
|
|
10
|
+
</div>
|
|
11
|
+
<a href="#" class="save text-bg-primary">[[groups:cover-save]] <i class="fa fa-fw fa-floppy-o"></i></a>
|
|
12
|
+
<div class="indicator text-bg-primary">[[groups:cover-saving]] <i class="fa fa-fw fa-refresh fa-spin"></i></div>
|
|
13
|
+
{{{ end }}}
|
|
14
|
+
{{{ end }}}
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<div class="d-flex flex-column flex-md-row gap-2 w-100 pb-4 mb-4 mt-2 border-bottom">
|
|
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;">
|
|
20
|
+
{buildAvatar(@value, "142px", true)}
|
|
21
|
+
{{{ if (allowProfilePicture && isSelfOrAdminOrGlobalModerator)}}}
|
|
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">
|
|
23
|
+
<span class="upload"><i class="fa fa-fw fa-upload"></i></span>
|
|
24
|
+
</a>
|
|
25
|
+
{{{ end }}}
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<div class="d-flex flex-column flex-md-row mt-1 justify-content-between w-100 gap-2">
|
|
29
|
+
<div class="d-flex flex-grow-1 flex-row gap-2">
|
|
30
|
+
<div class="d-flex flex-column gap-1">
|
|
31
|
+
<h2 class="fullname fw-semibold fs-2 tracking-tight mb-0">{{{ if fullname }}}{fullname}{{{ else }}}{username}{{{ end }}}</h2>
|
|
32
|
+
<div class="d-flex flex-wrap gap-1 text-sm align-items-center">
|
|
33
|
+
<span class="username fw-bold">{{{ if !banned }}}@{username}{{{ else }}}[[user:banned]]{{{ end }}}</span>
|
|
34
|
+
<div class="d-flex align-items-center gap-1 p-1 flex-wrap">
|
|
35
|
+
{{{ if selectedGroup.length }}}
|
|
36
|
+
{{{ each selectedGroup }}}
|
|
37
|
+
{{{ if ./slug }}}
|
|
38
|
+
<!-- IMPORT partials/groups/badge.tpl -->
|
|
39
|
+
{{{ end }}}
|
|
40
|
+
{{{ end }}}
|
|
41
|
+
{{{ end }}}
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="d-flex gap-2" component="user/badges"></div>
|
|
45
|
+
{{{ if isAdminOrGlobalModeratorOrModerator }}}
|
|
46
|
+
{{{ if banned }}}
|
|
47
|
+
<div class="text-xm text-muted">
|
|
48
|
+
{{{ if banned_until }}}
|
|
49
|
+
[[user:info.banned-until, {banned_until_readable}]]
|
|
50
|
+
{{{ else }}}
|
|
51
|
+
[[user:info.banned-permanently]]
|
|
52
|
+
{{{ end }}}
|
|
53
|
+
</div>
|
|
54
|
+
{{{ end }}}
|
|
55
|
+
{{{ end }}}
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
<div class="flex-shrink-0 d-flex gap-1 align-self-stretch align-self-md-start justify-content-end">
|
|
60
|
+
{{{ if loggedIn }}}
|
|
61
|
+
{{{ if !isSelf }}}
|
|
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>
|
|
64
|
+
{{{ end }}}
|
|
65
|
+
{{{ end }}}
|
|
66
|
+
|
|
67
|
+
{{{ if (canChat && !banned) }}}
|
|
68
|
+
<div class="btn-group flex-fill">
|
|
69
|
+
<a {{{ if hasPrivateChat }}}component="account/chat"{{{ else }}}component="account/new-chat"{{{ end }}} href="#" class="btn btn-light" role="button">[[user:chat]]</a>
|
|
70
|
+
{{{ if hasPrivateChat}}}
|
|
71
|
+
<button type="button" class="btn btn-light dropdown-toggle flex-0" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
72
|
+
<i class="fa fa-caret-down"></i>
|
|
73
|
+
</button>
|
|
74
|
+
<ul class="dropdown-menu dropdown-menu-end p-1 text-sm" role="menu">
|
|
75
|
+
<li><a class="dropdown-item rounded-1" href="#" component="account/new-chat" role="menuitem"s>[[user:new-chat-with, {username}]]</a></li>
|
|
76
|
+
</ul>
|
|
77
|
+
{{{ end }}}
|
|
78
|
+
</div>
|
|
79
|
+
{{{ end }}}
|
|
80
|
+
{{{ if !isSelf }}}
|
|
81
|
+
{{{ if (isAdmin || (canBan || canMute ))}}}
|
|
82
|
+
<!-- IMPORT partials/account/admin-menu.tpl -->
|
|
83
|
+
{{{ end }}}
|
|
84
|
+
{{{ end }}}
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
|
|
89
|
+
<div data-widget-area="header">
|
|
90
|
+
{{{each widgets.header}}}
|
|
91
|
+
{{widgets.header.html}}
|
|
92
|
+
{{{end}}}
|
|
93
|
+
</div>
|
|
94
|
+
|
|
95
|
+
<div class="d-flex flex-column flex-md-row">
|
|
96
|
+
<!-- IMPORT partials/account/sidebar-left.tpl -->
|
|
97
|
+
<div class="account-content flex-grow-1 ps-md-2 ps-lg-3 ps-xl-4" style="min-width: 0;">
|
|
98
|
+
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
{{{ each sessions }}}
|
|
2
|
-
<li class="list-group-item text-break" data-uuid="{./uuid}">
|
|
3
|
-
<div class="float-end">
|
|
4
|
-
{{{ if isSelfOrAdminOrGlobalModerator }}}
|
|
5
|
-
{{{ if !./current }}}
|
|
6
|
-
<button class="btn btn-sm btn-outline-secondary" type="button" data-action="revokeSession">[[user:revoke-session]]</button>
|
|
7
|
-
{{{ end }}}
|
|
8
|
-
{{{ end }}}
|
|
9
|
-
{function.userAgentIcons}
|
|
10
|
-
<i class="fa fa-circle text-{{{ if ./current }}}success{{{ else }}}muted{{{ end }}}"></i>
|
|
11
|
-
</div>
|
|
12
|
-
[[user:browser-version-on-platform, {./browser}, {./version}, {./platform}]]<br />
|
|
13
|
-
<small class="timeago text-muted" title="{../datetimeISO}"></small>
|
|
14
|
-
<ul>
|
|
15
|
-
<li><strong>[[global:ip-address]]</strong>: {../ip}</li>
|
|
16
|
-
</ul>
|
|
17
|
-
</li>
|
|
18
|
-
{{{ end }}}
|
|
1
|
+
{{{ each sessions }}}
|
|
2
|
+
<li class="list-group-item text-break" data-uuid="{./uuid}">
|
|
3
|
+
<div class="float-end">
|
|
4
|
+
{{{ if isSelfOrAdminOrGlobalModerator }}}
|
|
5
|
+
{{{ if !./current }}}
|
|
6
|
+
<button class="btn btn-sm btn-outline-secondary" type="button" data-action="revokeSession">[[user:revoke-session]]</button>
|
|
7
|
+
{{{ end }}}
|
|
8
|
+
{{{ end }}}
|
|
9
|
+
{function.userAgentIcons}
|
|
10
|
+
<i class="fa fa-circle text-{{{ if ./current }}}success{{{ else }}}muted{{{ end }}}"></i>
|
|
11
|
+
</div>
|
|
12
|
+
[[user:browser-version-on-platform, {./browser}, {./version}, {./platform}]]<br />
|
|
13
|
+
<small class="timeago text-muted" title="{../datetimeISO}"></small>
|
|
14
|
+
<ul>
|
|
15
|
+
<li><strong>[[global:ip-address]]</strong>: {../ip}</li>
|
|
16
|
+
</ul>
|
|
17
|
+
</li>
|
|
18
|
+
{{{ end }}}
|
|
@@ -1,116 +1,116 @@
|
|
|
1
|
-
<div class="flex-shrink-0 pe-2 border-end-md text-sm mb-3 flex-basis-md-200">
|
|
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 btn-ghost btn-sm text-start ff-secondary fw-semibold {{{ if template.account/profile }}}active{{{ end }}}">
|
|
4
|
-
<div class="flex-grow-1">[[global:about]]</div>
|
|
5
|
-
</a>
|
|
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
|
|
8
|
-
{{{ if template.account/posts }}}active{{{ end }}}
|
|
9
|
-
{{{ if template.account/best }}}active{{{ end }}}
|
|
10
|
-
{{{ if template.account/controversial }}}active{{{ end }}}
|
|
11
|
-
{{{ if template.account/upvoted }}}active{{{ end }}}
|
|
12
|
-
{{{ if template.account/downvoted }}}active{{{ end }}}
|
|
13
|
-
{{{ if template.account/bookmarks }}}active{{{ end }}}">
|
|
14
|
-
<div class="flex-grow-1">[[global:posts]]</div>
|
|
15
|
-
<span class="flex-shrink-0 text-xs" title="{counts.posts}">{humanReadableNumber(counts.posts)}</span>
|
|
16
|
-
</a>
|
|
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
|
|
19
|
-
{{{ if template.account/topics }}}active{{{ end }}}
|
|
20
|
-
{{{ if template.account/watched }}}active{{{ end }}}
|
|
21
|
-
{{{ if template.account/ignored }}}active{{{ end }}}">
|
|
22
|
-
<div class="flex-grow-1">[[global:topics]]</div>
|
|
23
|
-
<span class="flex-shrink-0 text-xs" title="{counts.topics}">{humanReadableNumber(counts.topics)}</span>
|
|
24
|
-
</a>
|
|
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
|
|
33
|
-
{{{ if template.account/groups }}}active{{{ end }}}">
|
|
34
|
-
<div class="flex-grow-1">[[global:header.groups]]</div>
|
|
35
|
-
<span class="flex-shrink-0 text-xs" title="{counts.groups}">{humanReadableNumber(counts.groups)}</span>
|
|
36
|
-
</a>
|
|
37
|
-
|
|
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
|
|
39
|
-
{{{ if template.account/followers }}}active{{{ end }}}">
|
|
40
|
-
<div class="flex-grow-1">[[user:followers]]</div>
|
|
41
|
-
<span class="flex-shrink-0 text-xs" title="{counts.followers}">{humanReadableNumber(counts.followers)}</span>
|
|
42
|
-
</a>
|
|
43
|
-
|
|
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
|
|
45
|
-
{{{ if template.account/following }}}active{{{ end }}}">
|
|
46
|
-
<div class="flex-grow-1">[[user:following]]</div>
|
|
47
|
-
<span class="flex-shrink-0 text-xs" title="{counts.following}">{humanReadableNumber(counts.following)}</span>
|
|
48
|
-
</a>
|
|
49
|
-
|
|
50
|
-
{{{ if canEdit }}}
|
|
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
|
|
52
|
-
{{{ if template.account/categories }}}active{{{ end }}}">
|
|
53
|
-
<div class="flex-grow-1">[[user:watched-categories]]</div>
|
|
54
|
-
<span class="flex-shrink-0 text-xs" title="{counts.categoriesWatched}">{counts.categoriesWatched}</span>
|
|
55
|
-
</a>
|
|
56
|
-
{{{ if isSelf }}}
|
|
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
|
|
58
|
-
{{{ if template.account/tags }}}active{{{ end }}}">
|
|
59
|
-
<div class="flex-grow-1">[[user:watched-tags]]</div>
|
|
60
|
-
<span class="flex-shrink-0 text-xs" title="{counts.tagsWatched}">{counts.tagsWatched}</span>
|
|
61
|
-
</a>
|
|
62
|
-
{{{ end }}}
|
|
63
|
-
|
|
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
|
|
65
|
-
{{{ if template.account/blocks }}}active{{{ end }}}">
|
|
66
|
-
<div class="flex-grow-1">[[user:blocked-users]]</div>
|
|
67
|
-
<span class="flex-shrink-0 text-xs" title="{counts.blocks}">{humanReadableNumber(counts.blocks)}</span>
|
|
68
|
-
</a>
|
|
69
|
-
|
|
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
|
|
71
|
-
{{{ if template.account/uploads }}}active{{{ end }}}">
|
|
72
|
-
<div class="flex-grow-1">[[global:uploads]]</div>
|
|
73
|
-
<span class="flex-shrink-0 text-xs" title="{counts.uploaded}">{humanReadableNumber(counts.uploaded)}</span>
|
|
74
|
-
</a>
|
|
75
|
-
{{{ end }}}
|
|
76
|
-
|
|
77
|
-
{{{ if (loggedIn && (!isSelf && !banned)) }}}
|
|
78
|
-
<hr class="w-100 my-2"/>
|
|
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}}}">
|
|
81
|
-
<i class="flex-shrink-0 fa-solid fa-flag text-danger"></i>
|
|
82
|
-
<div class="flex-grow-1 text-nowrap">[[user:flag-profile]]</div>
|
|
83
|
-
</a>
|
|
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 }}}">
|
|
89
|
-
<i class="flex-shrink-0 fa-solid fa-ban text-danger"></i>
|
|
90
|
-
<div class="flex-grow-1 text-nowrap">[[user:block-user]]</div>
|
|
91
|
-
</a>
|
|
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 }}}">
|
|
93
|
-
<i class="flex-shrink-0 fa-solid fa-ban text-danger"></i>
|
|
94
|
-
<div class="flex-grow-1 text-nowrap">[[user:unblock-user]]</div>
|
|
95
|
-
</a>
|
|
96
|
-
{{{ end }}}
|
|
97
|
-
|
|
98
|
-
{{{ if canEdit }}}
|
|
99
|
-
<hr class="w-100 my-2"/>
|
|
100
|
-
<a href="{config.relative_path}/user/{userslug}/edit" class="btn btn-ghost btn-sm ff-secondary text-xs text-start
|
|
101
|
-
{{{ if template.account/edit }}}active{{{ end }}}">
|
|
102
|
-
<div class="flex-grow-1">[[user:edit-profile]]</div>
|
|
103
|
-
</a>
|
|
104
|
-
<a href="{config.relative_path}/user/{userslug}/settings" class="btn btn-ghost btn-sm ff-secondary text-xs text-start
|
|
105
|
-
{{{ if template.account/settings }}}active{{{ end }}}">
|
|
106
|
-
<div class="flex-grow-1">[[user:settings]]</div>
|
|
107
|
-
</a>
|
|
108
|
-
{{{ end }}}
|
|
109
|
-
|
|
110
|
-
{{{ each profile_links }}}
|
|
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}">
|
|
112
|
-
<div class="flex-grow-1">{./name}</div>
|
|
113
|
-
</a>
|
|
114
|
-
{{{end}}}
|
|
115
|
-
</div>
|
|
116
|
-
</div>
|
|
1
|
+
<div class="flex-shrink-0 pe-2 border-end-md text-sm mb-3 flex-basis-md-200">
|
|
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 btn-ghost btn-sm text-start ff-secondary fw-semibold {{{ if template.account/profile }}}active{{{ end }}}">
|
|
4
|
+
<div class="flex-grow-1">[[global:about]]</div>
|
|
5
|
+
</a>
|
|
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
|
|
8
|
+
{{{ if template.account/posts }}}active{{{ end }}}
|
|
9
|
+
{{{ if template.account/best }}}active{{{ end }}}
|
|
10
|
+
{{{ if template.account/controversial }}}active{{{ end }}}
|
|
11
|
+
{{{ if template.account/upvoted }}}active{{{ end }}}
|
|
12
|
+
{{{ if template.account/downvoted }}}active{{{ end }}}
|
|
13
|
+
{{{ if template.account/bookmarks }}}active{{{ end }}}">
|
|
14
|
+
<div class="flex-grow-1">[[global:posts]]</div>
|
|
15
|
+
<span class="flex-shrink-0 text-xs" title="{counts.posts}">{humanReadableNumber(counts.posts)}</span>
|
|
16
|
+
</a>
|
|
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
|
|
19
|
+
{{{ if template.account/topics }}}active{{{ end }}}
|
|
20
|
+
{{{ if template.account/watched }}}active{{{ end }}}
|
|
21
|
+
{{{ if template.account/ignored }}}active{{{ end }}}">
|
|
22
|
+
<div class="flex-grow-1">[[global:topics]]</div>
|
|
23
|
+
<span class="flex-shrink-0 text-xs" title="{counts.topics}">{humanReadableNumber(counts.topics)}</span>
|
|
24
|
+
</a>
|
|
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
|
|
33
|
+
{{{ if template.account/groups }}}active{{{ end }}}">
|
|
34
|
+
<div class="flex-grow-1">[[global:header.groups]]</div>
|
|
35
|
+
<span class="flex-shrink-0 text-xs" title="{counts.groups}">{humanReadableNumber(counts.groups)}</span>
|
|
36
|
+
</a>
|
|
37
|
+
|
|
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
|
|
39
|
+
{{{ if template.account/followers }}}active{{{ end }}}">
|
|
40
|
+
<div class="flex-grow-1">[[user:followers]]</div>
|
|
41
|
+
<span class="flex-shrink-0 text-xs" title="{counts.followers}">{humanReadableNumber(counts.followers)}</span>
|
|
42
|
+
</a>
|
|
43
|
+
|
|
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
|
|
45
|
+
{{{ if template.account/following }}}active{{{ end }}}">
|
|
46
|
+
<div class="flex-grow-1">[[user:following]]</div>
|
|
47
|
+
<span class="flex-shrink-0 text-xs" title="{counts.following}">{humanReadableNumber(counts.following)}</span>
|
|
48
|
+
</a>
|
|
49
|
+
|
|
50
|
+
{{{ if canEdit }}}
|
|
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
|
|
52
|
+
{{{ if template.account/categories }}}active{{{ end }}}">
|
|
53
|
+
<div class="flex-grow-1">[[user:watched-categories]]</div>
|
|
54
|
+
<span class="flex-shrink-0 text-xs" title="{counts.categoriesWatched}">{counts.categoriesWatched}</span>
|
|
55
|
+
</a>
|
|
56
|
+
{{{ if isSelf }}}
|
|
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
|
|
58
|
+
{{{ if template.account/tags }}}active{{{ end }}}">
|
|
59
|
+
<div class="flex-grow-1">[[user:watched-tags]]</div>
|
|
60
|
+
<span class="flex-shrink-0 text-xs" title="{counts.tagsWatched}">{counts.tagsWatched}</span>
|
|
61
|
+
</a>
|
|
62
|
+
{{{ end }}}
|
|
63
|
+
|
|
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
|
|
65
|
+
{{{ if template.account/blocks }}}active{{{ end }}}">
|
|
66
|
+
<div class="flex-grow-1">[[user:blocked-users]]</div>
|
|
67
|
+
<span class="flex-shrink-0 text-xs" title="{counts.blocks}">{humanReadableNumber(counts.blocks)}</span>
|
|
68
|
+
</a>
|
|
69
|
+
|
|
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
|
|
71
|
+
{{{ if template.account/uploads }}}active{{{ end }}}">
|
|
72
|
+
<div class="flex-grow-1">[[global:uploads]]</div>
|
|
73
|
+
<span class="flex-shrink-0 text-xs" title="{counts.uploaded}">{humanReadableNumber(counts.uploaded)}</span>
|
|
74
|
+
</a>
|
|
75
|
+
{{{ end }}}
|
|
76
|
+
|
|
77
|
+
{{{ if (loggedIn && (!isSelf && !banned)) }}}
|
|
78
|
+
<hr class="w-100 my-2"/>
|
|
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}}}">
|
|
81
|
+
<i class="flex-shrink-0 fa-solid fa-flag text-danger"></i>
|
|
82
|
+
<div class="flex-grow-1 text-nowrap">[[user:flag-profile]]</div>
|
|
83
|
+
</a>
|
|
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 }}}">
|
|
89
|
+
<i class="flex-shrink-0 fa-solid fa-ban text-danger"></i>
|
|
90
|
+
<div class="flex-grow-1 text-nowrap">[[user:block-user]]</div>
|
|
91
|
+
</a>
|
|
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 }}}">
|
|
93
|
+
<i class="flex-shrink-0 fa-solid fa-ban text-danger"></i>
|
|
94
|
+
<div class="flex-grow-1 text-nowrap">[[user:unblock-user]]</div>
|
|
95
|
+
</a>
|
|
96
|
+
{{{ end }}}
|
|
97
|
+
|
|
98
|
+
{{{ if canEdit }}}
|
|
99
|
+
<hr class="w-100 my-2"/>
|
|
100
|
+
<a href="{config.relative_path}/user/{userslug}/edit" class="btn btn-ghost btn-sm ff-secondary text-xs text-start
|
|
101
|
+
{{{ if template.account/edit }}}active{{{ end }}}">
|
|
102
|
+
<div class="flex-grow-1">[[user:edit-profile]]</div>
|
|
103
|
+
</a>
|
|
104
|
+
<a href="{config.relative_path}/user/{userslug}/settings" class="btn btn-ghost btn-sm ff-secondary text-xs text-start
|
|
105
|
+
{{{ if template.account/settings }}}active{{{ end }}}">
|
|
106
|
+
<div class="flex-grow-1">[[user:settings]]</div>
|
|
107
|
+
</a>
|
|
108
|
+
{{{ end }}}
|
|
109
|
+
|
|
110
|
+
{{{ each profile_links }}}
|
|
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}">
|
|
112
|
+
<div class="flex-grow-1">{./name}</div>
|
|
113
|
+
</a>
|
|
114
|
+
{{{end}}}
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
@@ -1,16 +1,16 @@
|
|
|
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}"
|
|
9
|
-
}
|
|
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 }}}
|
|
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}"
|
|
9
|
+
}
|
|
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
16
|
]}</script>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
{{{ if breadcrumbs.length }}}
|
|
2
|
-
<ol class="breadcrumb mb-0 {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}" itemscope="itemscope" itemprop="breadcrumb" itemtype="http://schema.org/BreadcrumbList">
|
|
3
|
-
{{{ each breadcrumbs }}}
|
|
4
|
-
<li{{{ if @last }}} component="breadcrumb/current"{{{ end }}} itemscope="itemscope" itemprop="itemListElement" itemtype="http://schema.org/ListItem" class="breadcrumb-item {{{ if @last }}}active{{{ end }}}">
|
|
5
|
-
<meta itemprop="position" content="{increment(@index, "1")}" />
|
|
6
|
-
{{{ if ./url }}}<a href="{./url}" itemprop="item">{{{ end }}}
|
|
7
|
-
<span class="fw-semibold" itemprop="name">{./text}</span>
|
|
8
|
-
{{{ if ./url }}}</a>{{{ end }}}
|
|
9
|
-
</li>
|
|
10
|
-
{{{ end }}}
|
|
11
|
-
</ol>
|
|
12
|
-
{{{ end }}}
|
|
1
|
+
{{{ if breadcrumbs.length }}}
|
|
2
|
+
<ol class="breadcrumb mb-0 {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}" itemscope="itemscope" itemprop="breadcrumb" itemtype="http://schema.org/BreadcrumbList">
|
|
3
|
+
{{{ each breadcrumbs }}}
|
|
4
|
+
<li{{{ if @last }}} component="breadcrumb/current"{{{ end }}} itemscope="itemscope" itemprop="itemListElement" itemtype="http://schema.org/ListItem" class="breadcrumb-item {{{ if @last }}}active{{{ end }}}">
|
|
5
|
+
<meta itemprop="position" content="{increment(@index, "1")}" />
|
|
6
|
+
{{{ if ./url }}}<a href="{./url}" itemprop="item">{{{ end }}}
|
|
7
|
+
<span class="fw-semibold" itemprop="name">{./text}</span>
|
|
8
|
+
{{{ if ./url }}}</a>{{{ end }}}
|
|
9
|
+
</li>
|
|
10
|
+
{{{ end }}}
|
|
11
|
+
</ol>
|
|
12
|
+
{{{ end }}}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
<noscript><div class="dropdown" component="category-selector"></noscript>
|
|
2
|
-
<button component="category/post" for="category-dropdown-check" class="btn btn-primary btn-sm text-nowrap" id="new_topic" role="button">
|
|
3
|
-
[[category:new-topic-button]]
|
|
4
|
-
</button>
|
|
5
|
-
<noscript>
|
|
6
|
-
<input type="checkbox" class="hidden" id="category-dropdown-check" aria-hidden="true">
|
|
7
|
-
<ul component="category/list" class="dropdown-menu p-1 text-sm category-dropdown-menu ghost-scrollbar" role="menu">
|
|
8
|
-
{{{each categories}}}
|
|
9
|
-
<li role="presentation" class="category {{{if categories.disabledClass}}}disabled{{{end}}}">
|
|
10
|
-
<a role="menu-item" href="{config.relative_path}/compose?cid={categories.cid}">{categories.level}
|
|
11
|
-
<span component="category-markup">
|
|
12
|
-
<div class="category-item d-inline-block">
|
|
13
|
-
{buildCategoryIcon(@value, "24px", "rounded-circle")}
|
|
14
|
-
{categories.name}
|
|
15
|
-
</div>
|
|
16
|
-
</span>
|
|
17
|
-
</a>
|
|
18
|
-
</li>
|
|
19
|
-
{{{end}}}
|
|
20
|
-
</ul>
|
|
21
|
-
</div>
|
|
22
|
-
</noscript>
|
|
1
|
+
<noscript><div class="dropdown" component="category-selector"></noscript>
|
|
2
|
+
<button component="category/post" for="category-dropdown-check" class="btn btn-primary btn-sm text-nowrap" id="new_topic" role="button">
|
|
3
|
+
[[category:new-topic-button]]
|
|
4
|
+
</button>
|
|
5
|
+
<noscript>
|
|
6
|
+
<input type="checkbox" class="hidden" id="category-dropdown-check" aria-hidden="true">
|
|
7
|
+
<ul component="category/list" class="dropdown-menu p-1 text-sm category-dropdown-menu ghost-scrollbar" role="menu">
|
|
8
|
+
{{{each categories}}}
|
|
9
|
+
<li role="presentation" class="category {{{if categories.disabledClass}}}disabled{{{end}}}">
|
|
10
|
+
<a role="menu-item" href="{config.relative_path}/compose?cid={categories.cid}">{categories.level}
|
|
11
|
+
<span component="category-markup">
|
|
12
|
+
<div class="category-item d-inline-block">
|
|
13
|
+
{buildCategoryIcon(@value, "24px", "rounded-circle")}
|
|
14
|
+
{categories.name}
|
|
15
|
+
</div>
|
|
16
|
+
</span>
|
|
17
|
+
</a>
|
|
18
|
+
</li>
|
|
19
|
+
{{{end}}}
|
|
20
|
+
</ul>
|
|
21
|
+
</div>
|
|
22
|
+
</noscript>
|