nodebb-theme-harmony 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc +3 -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
- package/package-lock.json +0 -2338
package/scss/topic.scss
CHANGED
|
@@ -1,131 +1,131 @@
|
|
|
1
|
-
body.template-topic {
|
|
2
|
-
.breadcrumb .breadcrumb-item:last-child {
|
|
3
|
-
display: none;
|
|
4
|
-
}
|
|
5
|
-
.topic {
|
|
6
|
-
.posts-container {
|
|
7
|
-
max-width: 960px;
|
|
8
|
-
width: 960px;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
.posts {
|
|
12
|
-
&.timeline {
|
|
13
|
-
@include timeline-style;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
.post-header {
|
|
17
|
-
font-size: 0.8125rem;
|
|
18
|
-
line-height: 1.25rem;
|
|
19
|
-
|
|
20
|
-
.bookmarked {
|
|
21
|
-
transition: $transition-fade;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
[component="post"] {
|
|
26
|
-
&.selected .post-container {
|
|
27
|
-
background-color: mix($body-bg, $body-color, 90%);
|
|
28
|
-
}
|
|
29
|
-
&.deleted .post-container .content { opacity: .65; }
|
|
30
|
-
|
|
31
|
-
[component="post/content"] {
|
|
32
|
-
@include fix-lists();
|
|
33
|
-
|
|
34
|
-
> blockquote {
|
|
35
|
-
> blockquote {
|
|
36
|
-
> *:not(.blockquote) {
|
|
37
|
-
display: none;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
> blockquote.uncollapsed {
|
|
42
|
-
> *:not(.blockquote) {
|
|
43
|
-
display: block;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
@include media-breakpoint-up(lg) {
|
|
49
|
-
table { // text-break breaks table formatting
|
|
50
|
-
word-break:initial!important;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
[component="post/upvote"], [component="post/downvote"] {
|
|
57
|
-
&.upvoted, &.downvoted {
|
|
58
|
-
background-color: var(--btn-ghost-active-color);
|
|
59
|
-
|
|
60
|
-
&:hover {
|
|
61
|
-
background-color: var(--btn-ghost-hover-color);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
.quick-reply {
|
|
69
|
-
@include topic-avatars();
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
[component="post/replies/container"] {
|
|
73
|
-
.icon {
|
|
74
|
-
display: none !important;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
.post-header .icon {
|
|
78
|
-
display: initial !important;
|
|
79
|
-
|
|
80
|
-
.status {
|
|
81
|
-
display: none;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
.timeline-event {
|
|
86
|
-
display: none !important;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
[component="post"] {
|
|
90
|
-
padding-top: 0 !important;
|
|
91
|
-
padding-bottom: $spacer;
|
|
92
|
-
&:last-of-type {
|
|
93
|
-
padding-bottom: 0;
|
|
94
|
-
.post-footer {
|
|
95
|
-
padding-bottom: 0!important;
|
|
96
|
-
border-bottom: none !important;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
[component="topic/thumb/list"] > a{
|
|
104
|
-
height: calc($font-size-base * 4);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
@include media-breakpoint-up(lg) {
|
|
109
|
-
body.template-topic {
|
|
110
|
-
.topic .posts {
|
|
111
|
-
[component="post"] {
|
|
112
|
-
[component="post/actions"] {
|
|
113
|
-
opacity: 0;
|
|
114
|
-
transition: $transition-fade;
|
|
115
|
-
|
|
116
|
-
&:has([aria-expanded="true"]) {
|
|
117
|
-
opacity: 1;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
[component="post/actions"]:focus-within {
|
|
121
|
-
opacity: 1;
|
|
122
|
-
}
|
|
123
|
-
&:hover {
|
|
124
|
-
> div > .post-container > [component="post/footer"] > div > [component="post/actions"] {
|
|
125
|
-
opacity: 1;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
1
|
+
body.template-topic {
|
|
2
|
+
.breadcrumb .breadcrumb-item:last-child {
|
|
3
|
+
display: none;
|
|
4
|
+
}
|
|
5
|
+
.topic {
|
|
6
|
+
.posts-container {
|
|
7
|
+
max-width: 960px;
|
|
8
|
+
width: 960px;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.posts {
|
|
12
|
+
&.timeline {
|
|
13
|
+
@include timeline-style;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.post-header {
|
|
17
|
+
font-size: 0.8125rem;
|
|
18
|
+
line-height: 1.25rem;
|
|
19
|
+
|
|
20
|
+
.bookmarked {
|
|
21
|
+
transition: $transition-fade;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
[component="post"] {
|
|
26
|
+
&.selected .post-container {
|
|
27
|
+
background-color: mix($body-bg, $body-color, 90%);
|
|
28
|
+
}
|
|
29
|
+
&.deleted .post-container .content { opacity: .65; }
|
|
30
|
+
|
|
31
|
+
[component="post/content"] {
|
|
32
|
+
@include fix-lists();
|
|
33
|
+
|
|
34
|
+
> blockquote {
|
|
35
|
+
> blockquote {
|
|
36
|
+
> *:not(.blockquote) {
|
|
37
|
+
display: none;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
> blockquote.uncollapsed {
|
|
42
|
+
> *:not(.blockquote) {
|
|
43
|
+
display: block;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@include media-breakpoint-up(lg) {
|
|
49
|
+
table { // text-break breaks table formatting
|
|
50
|
+
word-break:initial!important;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
[component="post/upvote"], [component="post/downvote"] {
|
|
57
|
+
&.upvoted, &.downvoted {
|
|
58
|
+
background-color: var(--btn-ghost-active-color);
|
|
59
|
+
|
|
60
|
+
&:hover {
|
|
61
|
+
background-color: var(--btn-ghost-hover-color);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.quick-reply {
|
|
69
|
+
@include topic-avatars();
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
[component="post/replies/container"] {
|
|
73
|
+
.icon {
|
|
74
|
+
display: none !important;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.post-header .icon {
|
|
78
|
+
display: initial !important;
|
|
79
|
+
|
|
80
|
+
.status {
|
|
81
|
+
display: none;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.timeline-event {
|
|
86
|
+
display: none !important;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
[component="post"] {
|
|
90
|
+
padding-top: 0 !important;
|
|
91
|
+
padding-bottom: $spacer;
|
|
92
|
+
&:last-of-type {
|
|
93
|
+
padding-bottom: 0;
|
|
94
|
+
.post-footer {
|
|
95
|
+
padding-bottom: 0!important;
|
|
96
|
+
border-bottom: none !important;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
[component="topic/thumb/list"] > a{
|
|
104
|
+
height: calc($font-size-base * 4);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
@include media-breakpoint-up(lg) {
|
|
109
|
+
body.template-topic {
|
|
110
|
+
.topic .posts {
|
|
111
|
+
[component="post"] {
|
|
112
|
+
[component="post/actions"] {
|
|
113
|
+
opacity: 0;
|
|
114
|
+
transition: $transition-fade;
|
|
115
|
+
|
|
116
|
+
&:has([aria-expanded="true"]) {
|
|
117
|
+
opacity: 1;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
[component="post/actions"]:focus-within {
|
|
121
|
+
opacity: 1;
|
|
122
|
+
}
|
|
123
|
+
&:hover {
|
|
124
|
+
> div > .post-container > [component="post/footer"] > div > [component="post/actions"] {
|
|
125
|
+
opacity: 1;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
131
|
}
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
-
<div class="d-flex justify-content-between mb-3">
|
|
3
|
-
<h3 class="fw-semibold fs-5">[[pages:account/blocks, {username}]]</h3>
|
|
4
|
-
<div class="justify-content-end">
|
|
5
|
-
<div class="dropdown">
|
|
6
|
-
<div class="input-group">
|
|
7
|
-
<input class="form-control form-control-sm" type="text" id="user-search" placeholder="[[users:enter-username]]" data-bs-toggle="dropdown" autocomplete="off" aria-haspopup="true" aria-expanded="false"/>
|
|
8
|
-
|
|
9
|
-
<ul component="blocks/search/list" class="dropdown-menu dropdown-menu-end p-1 text-sm block-edit overflow-auto" style="max-height:300px;" role="menu">
|
|
10
|
-
<li component="blocks/start-typing">
|
|
11
|
-
<a href="#" class="dropdown-item rounded-1" role="menuitem">[[admin/menu:search.start-typing]]</a>
|
|
12
|
-
</li>
|
|
13
|
-
<li component="blocks/no-users" class="hidden">
|
|
14
|
-
<a href="#" class="dropdown-item rounded-1" role="menuitem">[[users:no-users-found]]</a>
|
|
15
|
-
</li>
|
|
16
|
-
{{{ each edit }}}
|
|
17
|
-
<li component="blocks/search/match">
|
|
18
|
-
<div class="dropdown-item rounded-1 d-flex flex-nowrap gap-4 justify-content-between align-items-center" role="menuitem">
|
|
19
|
-
<div class="text-truncate">
|
|
20
|
-
<a href="{config.relative_path}/uid/{./uid}" class="text-decoration-none">{buildAvatar(edit, "24px", true)} {./username}</a>
|
|
21
|
-
</div>
|
|
22
|
-
|
|
23
|
-
<button class="btn btn-sm btn-outline-danger text-nowrap {{{ if ./isBlocked }}}hidden{{{ end }}}" data-uid="{./uid}" data-action="block">[[user:block-user]]</button>
|
|
24
|
-
<button class="btn btn-sm btn-outline-primary text-nowrap {{{ if !./isBlocked }}}hidden{{{ end }}}" data-uid="{./uid}" data-action="unblock">[[user:unblock-user]]</button>
|
|
25
|
-
</div>
|
|
26
|
-
</li>
|
|
27
|
-
{{{ end }}}
|
|
28
|
-
</ul>
|
|
29
|
-
|
|
30
|
-
<button class="btn btn-primary btn-sm" type="button">
|
|
31
|
-
<i class="fa fa-search"></i>
|
|
32
|
-
</button>
|
|
33
|
-
</div>
|
|
34
|
-
</div>
|
|
35
|
-
</div>
|
|
36
|
-
</div>
|
|
37
|
-
<div class="users">
|
|
38
|
-
<div class="alert alert-warning text-center m-0"{{{ if users.length }}} style="display: none;"{{{ end }}}>[[user:has-no-blocks]]</div>
|
|
39
|
-
|
|
40
|
-
<div id="users-container" class="row row-cols-2 row-cols-lg-3 row-cols-xl-4 g-3">
|
|
41
|
-
{{{ each users }}}
|
|
42
|
-
<div class="d-flex flex-column gap-1">
|
|
43
|
-
<!-- IMPORT partials/users/item.tpl -->
|
|
44
|
-
<button class="btn btn-sm btn-outline-primary text-nowrap mx-auto" data-uid="{./uid}" data-action="unblock">[[user:unblock-user]]</button>
|
|
45
|
-
</div>
|
|
46
|
-
{{{ end }}}
|
|
47
|
-
</div>
|
|
48
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
49
|
-
</div>
|
|
50
|
-
|
|
51
|
-
<!-- IMPORT partials/account/footer.tpl -->
|
|
1
|
+
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
+
<div class="d-flex justify-content-between mb-3">
|
|
3
|
+
<h3 class="fw-semibold fs-5">[[pages:account/blocks, {username}]]</h3>
|
|
4
|
+
<div class="justify-content-end">
|
|
5
|
+
<div class="dropdown">
|
|
6
|
+
<div class="input-group">
|
|
7
|
+
<input class="form-control form-control-sm" type="text" id="user-search" placeholder="[[users:enter-username]]" data-bs-toggle="dropdown" autocomplete="off" aria-haspopup="true" aria-expanded="false"/>
|
|
8
|
+
|
|
9
|
+
<ul component="blocks/search/list" class="dropdown-menu dropdown-menu-end p-1 text-sm block-edit overflow-auto" style="max-height:300px;" role="menu">
|
|
10
|
+
<li component="blocks/start-typing">
|
|
11
|
+
<a href="#" class="dropdown-item rounded-1" role="menuitem">[[admin/menu:search.start-typing]]</a>
|
|
12
|
+
</li>
|
|
13
|
+
<li component="blocks/no-users" class="hidden">
|
|
14
|
+
<a href="#" class="dropdown-item rounded-1" role="menuitem">[[users:no-users-found]]</a>
|
|
15
|
+
</li>
|
|
16
|
+
{{{ each edit }}}
|
|
17
|
+
<li component="blocks/search/match">
|
|
18
|
+
<div class="dropdown-item rounded-1 d-flex flex-nowrap gap-4 justify-content-between align-items-center" role="menuitem">
|
|
19
|
+
<div class="text-truncate">
|
|
20
|
+
<a href="{config.relative_path}/uid/{./uid}" class="text-decoration-none">{buildAvatar(edit, "24px", true)} {./username}</a>
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<button class="btn btn-sm btn-outline-danger text-nowrap {{{ if ./isBlocked }}}hidden{{{ end }}}" data-uid="{./uid}" data-action="block">[[user:block-user]]</button>
|
|
24
|
+
<button class="btn btn-sm btn-outline-primary text-nowrap {{{ if !./isBlocked }}}hidden{{{ end }}}" data-uid="{./uid}" data-action="unblock">[[user:unblock-user]]</button>
|
|
25
|
+
</div>
|
|
26
|
+
</li>
|
|
27
|
+
{{{ end }}}
|
|
28
|
+
</ul>
|
|
29
|
+
|
|
30
|
+
<button class="btn btn-primary btn-sm" type="button">
|
|
31
|
+
<i class="fa fa-search"></i>
|
|
32
|
+
</button>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
<div class="users">
|
|
38
|
+
<div class="alert alert-warning text-center m-0"{{{ if users.length }}} style="display: none;"{{{ end }}}>[[user:has-no-blocks]]</div>
|
|
39
|
+
|
|
40
|
+
<div id="users-container" class="row row-cols-2 row-cols-lg-3 row-cols-xl-4 g-3">
|
|
41
|
+
{{{ each users }}}
|
|
42
|
+
<div class="d-flex flex-column gap-1">
|
|
43
|
+
<!-- IMPORT partials/users/item.tpl -->
|
|
44
|
+
<button class="btn btn-sm btn-outline-primary text-nowrap mx-auto" data-uid="{./uid}" data-action="unblock">[[user:unblock-user]]</button>
|
|
45
|
+
</div>
|
|
46
|
+
{{{ end }}}
|
|
47
|
+
</div>
|
|
48
|
+
<!-- IMPORT partials/paginator.tpl -->
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
<!-- IMPORT partials/account/footer.tpl -->
|
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
-
|
|
3
|
-
<div class="d-flex justify-content-between align-items-center mb-3">
|
|
4
|
-
<div class="d-flex gap-1">
|
|
5
|
-
<h3 class="fw-semibold fs-5 mb-0">{title}</h3>
|
|
6
|
-
</div>
|
|
7
|
-
|
|
8
|
-
<div class="d-flex gap-1">
|
|
9
|
-
<div class="btn-group bottom-sheet" component="category/watch/all">
|
|
10
|
-
<button class="btn btn-ghost btn-sm ff-secondary fw-semibold dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" type="button">
|
|
11
|
-
<span>[[user:change-all]]</span>
|
|
12
|
-
</button>
|
|
13
|
-
<ul class="dropdown-menu p-1 text-sm dropdown-menu-end" role="menu">
|
|
14
|
-
<li>
|
|
15
|
-
<a class="dropdown-item rounded-1 d-flex flex-column p-2" href="#" component="category/watching" data-state="watching" role="menuitem">
|
|
16
|
-
<div class="d-flex align-items-center gap-2">
|
|
17
|
-
<i class="flex-shrink-0 fa fa-fw fa-bell-o"></i>
|
|
18
|
-
<span class="flex-grow-1 fw-semibold">[[category:watching]]</span>
|
|
19
|
-
</div>
|
|
20
|
-
<div class="help-text text-muted text-xs">[[category:watching.description]]</div>
|
|
21
|
-
</a>
|
|
22
|
-
</li>
|
|
23
|
-
<li>
|
|
24
|
-
<a class="dropdown-item rounded-1 d-flex flex-column p-2" href="#" component="category/tracking" data-state="tracking" role="menuitem">
|
|
25
|
-
<div class="d-flex align-items-center gap-2">
|
|
26
|
-
<i class="flex-shrink-0 fa fa-fw fa-inbox"></i>
|
|
27
|
-
<span class="flex-grow-1 fw-semibold">[[category:tracking]]</span>
|
|
28
|
-
</div>
|
|
29
|
-
<div class="help-text text-muted text-xs">[[category:tracking.description]]</div>
|
|
30
|
-
</a>
|
|
31
|
-
</li>
|
|
32
|
-
<li>
|
|
33
|
-
<a class="dropdown-item rounded-1 d-flex flex-column p-2" href="#" component="category/notwatching" data-state="notwatching" role="menuitem">
|
|
34
|
-
<div class="d-flex align-items-center gap-2">
|
|
35
|
-
<i class="flex-shrink-0 fa fa-fw fa-clock-o"></i>
|
|
36
|
-
<span class="flex-grow-1 fw-semibold">[[category:not-watching]]</span>
|
|
37
|
-
</div>
|
|
38
|
-
<div class="help-text text-muted text-xs">[[category:not-watching.description]]</div>
|
|
39
|
-
</a>
|
|
40
|
-
</li>
|
|
41
|
-
<li>
|
|
42
|
-
<a class="dropdown-item rounded-1 d-flex flex-column p-2" href="#" component="category/ignoring" data-state="ignoring" role="menuitem">
|
|
43
|
-
<div class="d-flex align-items-center gap-2">
|
|
44
|
-
<i class="flex-shrink-0 fa fa-fw fa-eye-slash"></i>
|
|
45
|
-
<span class="flex-grow-1 fw-semibold">[[category:ignoring]]</span>
|
|
46
|
-
</div>
|
|
47
|
-
<div class="help-text text-muted text-xs">[[category:ignoring.description]]</div>
|
|
48
|
-
</a>
|
|
49
|
-
</li>
|
|
50
|
-
</ul>
|
|
51
|
-
</div>
|
|
52
|
-
</div>
|
|
53
|
-
</div>
|
|
54
|
-
|
|
55
|
-
<div>
|
|
56
|
-
<ul class="categories list-unstyled" itemscope itemtype="http://www.schema.org/ItemList">
|
|
57
|
-
{{{each categories}}}
|
|
58
|
-
<!-- IMPORT partials/account/category-item.tpl -->
|
|
59
|
-
{{{end}}}
|
|
60
|
-
</ul>
|
|
61
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
62
|
-
</div>
|
|
63
|
-
|
|
1
|
+
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
+
|
|
3
|
+
<div class="d-flex justify-content-between align-items-center mb-3">
|
|
4
|
+
<div class="d-flex gap-1">
|
|
5
|
+
<h3 class="fw-semibold fs-5 mb-0">{title}</h3>
|
|
6
|
+
</div>
|
|
7
|
+
|
|
8
|
+
<div class="d-flex gap-1">
|
|
9
|
+
<div class="btn-group bottom-sheet" component="category/watch/all">
|
|
10
|
+
<button class="btn btn-ghost btn-sm ff-secondary fw-semibold dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" type="button">
|
|
11
|
+
<span>[[user:change-all]]</span>
|
|
12
|
+
</button>
|
|
13
|
+
<ul class="dropdown-menu p-1 text-sm dropdown-menu-end" role="menu">
|
|
14
|
+
<li>
|
|
15
|
+
<a class="dropdown-item rounded-1 d-flex flex-column p-2" href="#" component="category/watching" data-state="watching" role="menuitem">
|
|
16
|
+
<div class="d-flex align-items-center gap-2">
|
|
17
|
+
<i class="flex-shrink-0 fa fa-fw fa-bell-o"></i>
|
|
18
|
+
<span class="flex-grow-1 fw-semibold">[[category:watching]]</span>
|
|
19
|
+
</div>
|
|
20
|
+
<div class="help-text text-muted text-xs">[[category:watching.description]]</div>
|
|
21
|
+
</a>
|
|
22
|
+
</li>
|
|
23
|
+
<li>
|
|
24
|
+
<a class="dropdown-item rounded-1 d-flex flex-column p-2" href="#" component="category/tracking" data-state="tracking" role="menuitem">
|
|
25
|
+
<div class="d-flex align-items-center gap-2">
|
|
26
|
+
<i class="flex-shrink-0 fa fa-fw fa-inbox"></i>
|
|
27
|
+
<span class="flex-grow-1 fw-semibold">[[category:tracking]]</span>
|
|
28
|
+
</div>
|
|
29
|
+
<div class="help-text text-muted text-xs">[[category:tracking.description]]</div>
|
|
30
|
+
</a>
|
|
31
|
+
</li>
|
|
32
|
+
<li>
|
|
33
|
+
<a class="dropdown-item rounded-1 d-flex flex-column p-2" href="#" component="category/notwatching" data-state="notwatching" role="menuitem">
|
|
34
|
+
<div class="d-flex align-items-center gap-2">
|
|
35
|
+
<i class="flex-shrink-0 fa fa-fw fa-clock-o"></i>
|
|
36
|
+
<span class="flex-grow-1 fw-semibold">[[category:not-watching]]</span>
|
|
37
|
+
</div>
|
|
38
|
+
<div class="help-text text-muted text-xs">[[category:not-watching.description]]</div>
|
|
39
|
+
</a>
|
|
40
|
+
</li>
|
|
41
|
+
<li>
|
|
42
|
+
<a class="dropdown-item rounded-1 d-flex flex-column p-2" href="#" component="category/ignoring" data-state="ignoring" role="menuitem">
|
|
43
|
+
<div class="d-flex align-items-center gap-2">
|
|
44
|
+
<i class="flex-shrink-0 fa fa-fw fa-eye-slash"></i>
|
|
45
|
+
<span class="flex-grow-1 fw-semibold">[[category:ignoring]]</span>
|
|
46
|
+
</div>
|
|
47
|
+
<div class="help-text text-muted text-xs">[[category:ignoring.description]]</div>
|
|
48
|
+
</a>
|
|
49
|
+
</li>
|
|
50
|
+
</ul>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
|
|
55
|
+
<div>
|
|
56
|
+
<ul class="categories list-unstyled" itemscope itemtype="http://www.schema.org/ItemList">
|
|
57
|
+
{{{each categories}}}
|
|
58
|
+
<!-- IMPORT partials/account/category-item.tpl -->
|
|
59
|
+
{{{end}}}
|
|
60
|
+
</ul>
|
|
61
|
+
<!-- IMPORT partials/paginator.tpl -->
|
|
62
|
+
</div>
|
|
63
|
+
|
|
64
64
|
<!-- IMPORT partials/account/footer.tpl -->
|
|
@@ -1,73 +1,73 @@
|
|
|
1
|
-
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
-
<h3 class="fw-semibold fs-5">[[user:consent.title]]</h3>
|
|
3
|
-
|
|
4
|
-
<p class="lead">[[user:consent.lead]]</p>
|
|
5
|
-
<p>[[user:consent.intro]]</p>
|
|
6
|
-
|
|
7
|
-
<hr />
|
|
8
|
-
|
|
9
|
-
<div class="row">
|
|
10
|
-
<div class="col-sm-6">
|
|
11
|
-
{{{ if gdpr_consent }}}
|
|
12
|
-
<div class="alert alert-success d-flex gap-3">
|
|
13
|
-
[[user:consent.received]]
|
|
14
|
-
<i class="fa fa-check fa-3x"></i>
|
|
15
|
-
</div>
|
|
16
|
-
{{{ else }}}
|
|
17
|
-
<div class="alert alert-warning">
|
|
18
|
-
[[user:consent.not-received]]
|
|
19
|
-
<br /><br />
|
|
20
|
-
<div class="text-center">
|
|
21
|
-
<button class="btn btn-warning" data-action="consent">[[user:consent.give]]</button>
|
|
22
|
-
</div>
|
|
23
|
-
</div>
|
|
24
|
-
{{{ end }}}
|
|
25
|
-
<div class="card">
|
|
26
|
-
<div class="card-body">
|
|
27
|
-
<p>[[user:consent.email-intro]]</p>
|
|
28
|
-
{{{ if digest.enabled }}}
|
|
29
|
-
<p>[[user:consent.digest-frequency, {digest.frequency}]]</p>
|
|
30
|
-
{{{ else }}}
|
|
31
|
-
<p>[[user:consent.digest-off]]</p>
|
|
32
|
-
{{{ end }}}
|
|
33
|
-
|
|
34
|
-
<div class="d-grid">
|
|
35
|
-
<a class="btn btn-outline-secondary" href="./settings">
|
|
36
|
-
<i class="fa fa-cog"></i>
|
|
37
|
-
[[pages:account/settings]]
|
|
38
|
-
</a>
|
|
39
|
-
</div>
|
|
40
|
-
</div>
|
|
41
|
-
</div>
|
|
42
|
-
</div>
|
|
43
|
-
<div class="col-sm-6">
|
|
44
|
-
<div class="card">
|
|
45
|
-
<div class="card-body">
|
|
46
|
-
<p><strong>[[user:consent.right-of-access]]</strong></p>
|
|
47
|
-
<p>[[user:consent.right-of-access-description]]</p>
|
|
48
|
-
<p><strong>[[user:consent.right-to-rectification]]</strong></p>
|
|
49
|
-
<p>[[user:consent.right-to-rectification-description]]</p>
|
|
50
|
-
<p><strong>[[user:consent.right-to-erasure]]</strong></p>
|
|
51
|
-
<p>[[user:consent.right-to-erasure-description]]</p>
|
|
52
|
-
<p><strong>[[user:consent.right-to-data-portability]]</strong></p>
|
|
53
|
-
<p>[[user:consent.right-to-data-portability-description]]</p>
|
|
54
|
-
|
|
55
|
-
<hr />
|
|
56
|
-
|
|
57
|
-
<div class="btn-group-vertical d-grid">
|
|
58
|
-
<a data-action="export-profile" class="btn btn-outline-secondary">
|
|
59
|
-
<i class="fa fa-download"></i> [[user:consent.export-profile]]
|
|
60
|
-
</a>
|
|
61
|
-
<a data-action="export-posts" class="btn btn-outline-secondary">
|
|
62
|
-
<i class="fa fa-download"></i> [[user:consent.export-posts]]
|
|
63
|
-
</a>
|
|
64
|
-
<a data-action="export-uploads" class="btn btn-outline-secondary">
|
|
65
|
-
<i class="fa fa-download"></i> [[user:consent.export-uploads]]
|
|
66
|
-
</a>
|
|
67
|
-
</div>
|
|
68
|
-
</div>
|
|
69
|
-
</div>
|
|
70
|
-
</div>
|
|
71
|
-
</div>
|
|
72
|
-
|
|
73
|
-
<!-- IMPORT partials/account/footer.tpl -->
|
|
1
|
+
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
+
<h3 class="fw-semibold fs-5">[[user:consent.title]]</h3>
|
|
3
|
+
|
|
4
|
+
<p class="lead">[[user:consent.lead]]</p>
|
|
5
|
+
<p>[[user:consent.intro]]</p>
|
|
6
|
+
|
|
7
|
+
<hr />
|
|
8
|
+
|
|
9
|
+
<div class="row">
|
|
10
|
+
<div class="col-sm-6">
|
|
11
|
+
{{{ if gdpr_consent }}}
|
|
12
|
+
<div class="alert alert-success d-flex gap-3">
|
|
13
|
+
[[user:consent.received]]
|
|
14
|
+
<i class="fa fa-check fa-3x"></i>
|
|
15
|
+
</div>
|
|
16
|
+
{{{ else }}}
|
|
17
|
+
<div class="alert alert-warning">
|
|
18
|
+
[[user:consent.not-received]]
|
|
19
|
+
<br /><br />
|
|
20
|
+
<div class="text-center">
|
|
21
|
+
<button class="btn btn-warning" data-action="consent">[[user:consent.give]]</button>
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
{{{ end }}}
|
|
25
|
+
<div class="card">
|
|
26
|
+
<div class="card-body">
|
|
27
|
+
<p>[[user:consent.email-intro]]</p>
|
|
28
|
+
{{{ if digest.enabled }}}
|
|
29
|
+
<p>[[user:consent.digest-frequency, {digest.frequency}]]</p>
|
|
30
|
+
{{{ else }}}
|
|
31
|
+
<p>[[user:consent.digest-off]]</p>
|
|
32
|
+
{{{ end }}}
|
|
33
|
+
|
|
34
|
+
<div class="d-grid">
|
|
35
|
+
<a class="btn btn-outline-secondary" href="./settings">
|
|
36
|
+
<i class="fa fa-cog"></i>
|
|
37
|
+
[[pages:account/settings]]
|
|
38
|
+
</a>
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
<div class="col-sm-6">
|
|
44
|
+
<div class="card">
|
|
45
|
+
<div class="card-body">
|
|
46
|
+
<p><strong>[[user:consent.right-of-access]]</strong></p>
|
|
47
|
+
<p>[[user:consent.right-of-access-description]]</p>
|
|
48
|
+
<p><strong>[[user:consent.right-to-rectification]]</strong></p>
|
|
49
|
+
<p>[[user:consent.right-to-rectification-description]]</p>
|
|
50
|
+
<p><strong>[[user:consent.right-to-erasure]]</strong></p>
|
|
51
|
+
<p>[[user:consent.right-to-erasure-description]]</p>
|
|
52
|
+
<p><strong>[[user:consent.right-to-data-portability]]</strong></p>
|
|
53
|
+
<p>[[user:consent.right-to-data-portability-description]]</p>
|
|
54
|
+
|
|
55
|
+
<hr />
|
|
56
|
+
|
|
57
|
+
<div class="btn-group-vertical d-grid">
|
|
58
|
+
<a data-action="export-profile" class="btn btn-outline-secondary">
|
|
59
|
+
<i class="fa fa-download"></i> [[user:consent.export-profile]]
|
|
60
|
+
</a>
|
|
61
|
+
<a data-action="export-posts" class="btn btn-outline-secondary">
|
|
62
|
+
<i class="fa fa-download"></i> [[user:consent.export-posts]]
|
|
63
|
+
</a>
|
|
64
|
+
<a data-action="export-uploads" class="btn btn-outline-secondary">
|
|
65
|
+
<i class="fa fa-download"></i> [[user:consent.export-uploads]]
|
|
66
|
+
</a>
|
|
67
|
+
</div>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
|
|
73
|
+
<!-- IMPORT partials/account/footer.tpl -->
|