nodebb-theme-harmony 1.1.106 → 1.1.108
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/package.json +1 -1
- package/scss/fonts.scss +3 -2
- package/templates/post-queue.tpl +184 -182
package/package.json
CHANGED
package/scss/fonts.scss
CHANGED
|
@@ -3,16 +3,17 @@
|
|
|
3
3
|
|
|
4
4
|
$weights: $font-weight-light, $font-weight-normal, $font-weight-semibold, $font-weight-bold;
|
|
5
5
|
$subsets: (latin, latin-ext);
|
|
6
|
+
$font-path: "./plugins/nodebb-theme-harmony" !default;
|
|
6
7
|
|
|
7
8
|
@include Inter.faces(
|
|
8
9
|
$weights: $weights,
|
|
9
10
|
$subsets: $subsets,
|
|
10
11
|
$display: fallback,
|
|
11
|
-
$directory: "
|
|
12
|
+
$directory: "#{$font-path}/inter"
|
|
12
13
|
);
|
|
13
14
|
@include Poppins.faces(
|
|
14
15
|
$weights: $weights,
|
|
15
16
|
$subsets: $subsets,
|
|
16
17
|
$display: fallback,
|
|
17
|
-
$directory: "
|
|
18
|
+
$directory: "#{$font-path}/poppins"
|
|
18
19
|
);
|
package/templates/post-queue.tpl
CHANGED
|
@@ -1,206 +1,208 @@
|
|
|
1
|
-
|
|
2
|
-
{{{ if
|
|
3
|
-
|
|
4
|
-
<
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
{{{
|
|
8
|
-
|
|
9
|
-
<
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
{{{ end }}}
|
|
14
|
-
|
|
15
|
-
{{{ if (!singlePost && posts.length) }}}
|
|
16
|
-
<div class="btn-toolbar justify-content-end">
|
|
17
|
-
<div class="me-2">
|
|
18
|
-
<!-- IMPORT partials/category/filter-dropdown-right.tpl -->
|
|
1
|
+
<div class="flex-fill">
|
|
2
|
+
{{{ if isAdmin }}}
|
|
3
|
+
{{{ if !enabled }}}
|
|
4
|
+
<div class="alert alert-info">
|
|
5
|
+
[[post-queue:enabling-help, {config.relative_path}/admin/settings/post#post-queue]]
|
|
6
|
+
</div>
|
|
7
|
+
{{{ end }}}
|
|
8
|
+
{{{ else }}}
|
|
9
|
+
<div>
|
|
10
|
+
<p class="lead">[[post-queue:public-intro]]</p>
|
|
11
|
+
<p>[[post-queue:public-description]]</p>
|
|
12
|
+
<hr />
|
|
19
13
|
</div>
|
|
14
|
+
{{{ end }}}
|
|
20
15
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
<
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
<
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
16
|
+
{{{ if (!singlePost && posts.length) }}}
|
|
17
|
+
<div class="btn-toolbar justify-content-end">
|
|
18
|
+
<div class="me-2">
|
|
19
|
+
<!-- IMPORT partials/category/filter-dropdown-right.tpl -->
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
<div class="btn-group bottom-sheet" component="post-queue/bulk-actions">
|
|
23
|
+
<button type="button" class="btn-ghost-sm dropdown-toggle" data-bs-toggle="dropdown" autocomplete="off" aria-haspopup="true" aria-expanded="false">
|
|
24
|
+
<i class="fa fa-clone"></i><span class="fw-semibold"> [[post-queue:bulk-actions]]</span>
|
|
25
|
+
</button>
|
|
26
|
+
<ul class="dropdown-menu p-1 text-sm dropdown-menu-end">
|
|
27
|
+
{{{ if canAccept }}}
|
|
28
|
+
<li><a class="dropdown-item rounded-1" href="#" data-action="accept-all">[[post-queue:accept-all]]</a></li>
|
|
29
|
+
<li><a class="dropdown-item rounded-1" href="#" data-action="accept-selected">[[post-queue:accept-selected]]</a></li>
|
|
30
|
+
<li class="dropdown-divider"></li>
|
|
31
|
+
<li><a class="dropdown-item rounded-1" href="#" data-action="reject-all">[[post-queue:reject-all]]</a></li>
|
|
32
|
+
<li><a class="dropdown-item rounded-1" href="#" data-action="reject-selected">[[post-queue:reject-selected]]</a></li>
|
|
33
|
+
{{{ else }}}
|
|
34
|
+
<li><a class="dropdown-item rounded-1" href="#" data-action="reject-all">[[post-queue:remove-all]]</a></li>
|
|
35
|
+
<li><a class="dropdown-item rounded-1" href="#" data-action="reject-selected">[[post-queue:remove-selected]]</a></li>
|
|
36
|
+
{{{ end }}}
|
|
37
|
+
</ul>
|
|
38
|
+
</div>
|
|
37
39
|
</div>
|
|
38
|
-
|
|
39
|
-
{{{ end }}}
|
|
40
|
+
{{{ end }}}
|
|
40
41
|
|
|
41
|
-
<div class="post-queue posts-list">
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
42
|
+
<div class="post-queue posts-list">
|
|
43
|
+
{{{ if !posts.length }}}
|
|
44
|
+
{{{ if !singlePost }}}
|
|
45
|
+
<div class="mx-auto">
|
|
46
|
+
<div class="d-flex flex-column gap-3 justify-content-center text-center">
|
|
47
|
+
<div class="mx-auto p-4 bg-light border rounded">
|
|
48
|
+
<i class="text-secondary fa fa-fw fa-4x fa-seedling"></i>
|
|
49
|
+
</div>
|
|
50
|
+
[[post-queue:no-queued-posts]]
|
|
48
51
|
</div>
|
|
49
|
-
[[post-queue:no-queued-posts]]
|
|
50
52
|
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
{{{ else }}}
|
|
54
|
+
<div class="alert alert-info d-flex align-items-md-center d-flex flex-column flex-md-row">
|
|
55
|
+
<p class="mb-md-0">[[post-queue:no-single-post]]</p>
|
|
56
|
+
<div class="d-grid ms-md-auto">
|
|
57
|
+
<a class="btn btn-sm btn-primary flex-shrink text-nowrap" href=".">[[post-queue:back-to-list]]</a>
|
|
58
|
+
</div>
|
|
57
59
|
</div>
|
|
58
|
-
|
|
60
|
+
{{{ end }}}
|
|
59
61
|
{{{ end }}}
|
|
60
|
-
{{{ end }}}
|
|
61
62
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
{{{ end }}}
|
|
71
|
-
<label for="{./id}" class="small stretched-link">
|
|
72
|
-
{{{ if posts.data.tid }}}[[post-queue:reply]]{{{ else }}}[[post-queue:topic]]{{{ end }}}
|
|
73
|
-
</label>
|
|
74
|
-
</li>
|
|
75
|
-
<li class="card-body d-flex flex-column gap-1 border-bottom">
|
|
76
|
-
<div class="d-flex text-xs fw-semibold align-items-center">
|
|
77
|
-
[[post-queue:user]]
|
|
78
|
-
{{{ if ((privileges.ban || privileges.mute) || privileges.admin:users) }}}
|
|
79
|
-
<div class="ms-auto btn-group bottom-sheet">
|
|
80
|
-
<button href="#" class="btn btn-outline-sm text-xs dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">[[global:actions]]</button>
|
|
81
|
-
<ul class="dropdown-menu p-1 text-sm">
|
|
82
|
-
{{{ if privileges.view:users:info }}}
|
|
83
|
-
<li><a class="dropdown-item rounded-1" href="{config.relative_path}/user/{./user.userslug}/info">[[user:account-info]]</a></li>
|
|
84
|
-
{{{ end }}}
|
|
85
|
-
{{{ if privileges.ban }}}
|
|
86
|
-
<li class="{{{ if target.user.banned }}}hidden{{{ end }}}"><a class="dropdown-item rounded-1" href="#" data-action="ban">[[user:ban-account]]</a></li>
|
|
87
|
-
<li class="{{{ if !target.user.banned }}}hidden{{{ end }}}"><a class="dropdown-item rounded-1" href="#" data-action="unban">[[user:unban-account]]</a></li>
|
|
88
|
-
{{{ end }}}
|
|
89
|
-
{{{ if privileges.mute}}}
|
|
90
|
-
<li class="{{{ if target.user.muted }}}hidden{{{ end }}}"><a class="dropdown-item rounded-1" href="#" data-action="mute">[[user:mute-account]]</a></li>
|
|
91
|
-
<li class="{{{ if !target.user.muted }}}hidden{{{ end }}}"><a class="dropdown-item rounded-1" href="#" data-action="unmute">[[user:unmute-account]]</a></li>
|
|
92
|
-
{{{ end }}}
|
|
93
|
-
{{{ if privileges.admin:users }}}
|
|
94
|
-
<li><a class="dropdown-item rounded-1" href="#" data-action="delete-account">[[user:delete-account-as-admin]]</a></li>
|
|
95
|
-
<li><a class="dropdown-item rounded-1" href="#" data-action="delete-content">[[user:delete-content]]</a></li>
|
|
96
|
-
<li><a class="dropdown-item rounded-1" href="#" data-action="delete-all">[[user:delete-all]]</a></li>
|
|
97
|
-
{{{ end }}}
|
|
98
|
-
</ul>
|
|
99
|
-
</div>
|
|
63
|
+
{{{ each posts }}}
|
|
64
|
+
<div class="card mb-4" data-id="{./id}" data-uid="{./user.uid}">
|
|
65
|
+
<div class="row g-0">
|
|
66
|
+
<div class="col-lg-3 bg-card-cap rounded-start">
|
|
67
|
+
<ul class="list-unstyled ps-0 mb-0 border-end h-100">
|
|
68
|
+
<li class="card-body border-bottom position-relative">
|
|
69
|
+
{{{ if !singlePost }}}
|
|
70
|
+
<input id="{./id}" type="checkbox" class="form-check-input" autocomplete="off" />
|
|
100
71
|
{{{ end }}}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
72
|
+
<label for="{./id}" class="small stretched-link">
|
|
73
|
+
{{{ if posts.data.tid }}}[[post-queue:reply]]{{{ else }}}[[post-queue:topic]]{{{ end }}}
|
|
74
|
+
</label>
|
|
75
|
+
</li>
|
|
76
|
+
<li class="card-body d-flex flex-column gap-1 border-bottom">
|
|
77
|
+
<div class="d-flex text-xs fw-semibold align-items-center">
|
|
78
|
+
[[post-queue:user]]
|
|
79
|
+
{{{ if ((privileges.ban || privileges.mute) || privileges.admin:users) }}}
|
|
80
|
+
<div class="ms-auto btn-group bottom-sheet">
|
|
81
|
+
<button href="#" class="btn btn-outline-sm text-xs dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">[[global:actions]]</button>
|
|
82
|
+
<ul class="dropdown-menu p-1 text-sm">
|
|
83
|
+
{{{ if privileges.view:users:info }}}
|
|
84
|
+
<li><a class="dropdown-item rounded-1" href="{config.relative_path}/user/{./user.userslug}/info">[[user:account-info]]</a></li>
|
|
85
|
+
{{{ end }}}
|
|
86
|
+
{{{ if privileges.ban }}}
|
|
87
|
+
<li class="{{{ if target.user.banned }}}hidden{{{ end }}}"><a class="dropdown-item rounded-1" href="#" data-action="ban">[[user:ban-account]]</a></li>
|
|
88
|
+
<li class="{{{ if !target.user.banned }}}hidden{{{ end }}}"><a class="dropdown-item rounded-1" href="#" data-action="unban">[[user:unban-account]]</a></li>
|
|
89
|
+
{{{ end }}}
|
|
90
|
+
{{{ if privileges.mute}}}
|
|
91
|
+
<li class="{{{ if target.user.muted }}}hidden{{{ end }}}"><a class="dropdown-item rounded-1" href="#" data-action="mute">[[user:mute-account]]</a></li>
|
|
92
|
+
<li class="{{{ if !target.user.muted }}}hidden{{{ end }}}"><a class="dropdown-item rounded-1" href="#" data-action="unmute">[[user:unmute-account]]</a></li>
|
|
93
|
+
{{{ end }}}
|
|
94
|
+
{{{ if privileges.admin:users }}}
|
|
95
|
+
<li><a class="dropdown-item rounded-1" href="#" data-action="delete-account">[[user:delete-account-as-admin]]</a></li>
|
|
96
|
+
<li><a class="dropdown-item rounded-1" href="#" data-action="delete-content">[[user:delete-content]]</a></li>
|
|
97
|
+
<li><a class="dropdown-item rounded-1" href="#" data-action="delete-all">[[user:delete-all]]</a></li>
|
|
98
|
+
{{{ end }}}
|
|
99
|
+
</ul>
|
|
100
|
+
</div>
|
|
101
|
+
{{{ end }}}
|
|
102
|
+
</div>
|
|
103
|
+
<div class="small">
|
|
104
|
+
{{{ if posts.user.userslug}}}
|
|
105
|
+
<a class="text-decoration-none" href="{config.relative_path}/uid/{posts.user.uid}">{buildAvatar(posts.user, "24px", true, "not-responsive")} {posts.user.username}</a>
|
|
106
|
+
{{{ else }}}
|
|
107
|
+
{posts.user.username}
|
|
108
|
+
{{{ end }}}
|
|
109
|
+
</div>
|
|
110
|
+
<div>
|
|
111
|
+
<span class="badge text-body border border-gray-300 stats text-xs">
|
|
112
|
+
<span title="{posts.user.postcount}" class="fw-bold">{humanReadableNumber(posts.user.postcount)}</span>
|
|
113
|
+
<span class="text-lowercase fw-normal">[[global:posts]]</span>
|
|
114
|
+
</span>
|
|
115
|
+
<span class="badge text-body border border-gray-300 stats text-xs">
|
|
116
|
+
<span title="{posts.user.reputation}" class="fw-bold">{humanReadableNumber(posts.user.reputation)}</span>
|
|
117
|
+
<span class="text-lowercase fw-normal">[[global:reputation]]</span>
|
|
118
|
+
</span>
|
|
136
119
|
<span class="badge text-body border border-gray-300 stats text-xs">
|
|
137
|
-
<span class="text-lowercase fw-normal">[[
|
|
138
|
-
<span title="{posts.
|
|
120
|
+
<span class="text-lowercase fw-normal">[[user:joined]]</span>
|
|
121
|
+
<span title="{posts.user.joindateISO}" class="timeago fw-bold"></span>
|
|
139
122
|
</span>
|
|
140
123
|
</div>
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
</li>
|
|
150
|
-
<li class="card-body border-bottom">
|
|
151
|
-
<div class="text-xs fw-semibold mb-1">
|
|
152
|
-
[[post-queue:category]]
|
|
153
|
-
</div>
|
|
154
|
-
<div class="topic-category small">
|
|
155
|
-
<a href="{config.relative_path}/category/{posts.category.slug}">
|
|
156
|
-
<div class="category-item d-inline-block">
|
|
157
|
-
{buildCategoryIcon(./category, "24px", "rounded-circle")}
|
|
158
|
-
{posts.category.name}
|
|
159
|
-
</div>
|
|
160
|
-
</a>
|
|
161
|
-
</div>
|
|
162
|
-
</li>
|
|
163
|
-
<li class="card-body">
|
|
164
|
-
{{{ if canAccept }}}
|
|
165
|
-
<div class="row row-cols-2 g-1">
|
|
166
|
-
<div class="col d-grid">
|
|
167
|
-
<button class="btn btn-success btn-sm" data-action="accept"><i class="fa fa-fw fa-check"></i> [[post-queue:accept]] </button>
|
|
124
|
+
</li>
|
|
125
|
+
<li class="card-body border-bottom">
|
|
126
|
+
<div class="text-xs fw-semibold mb-1">[[post-queue:when]]</div>
|
|
127
|
+
<span class="small timeago" title={posts.data.timestampISO}></span>
|
|
128
|
+
</li>
|
|
129
|
+
<li class="card-body border-bottom">
|
|
130
|
+
<div class="text-xs fw-semibold mb-1">
|
|
131
|
+
{{{ if posts.data.tid }}}[[post-queue:topic]]{{{ else }}}[[post-queue:title]]{{{ end }}}
|
|
168
132
|
</div>
|
|
169
|
-
<
|
|
170
|
-
|
|
133
|
+
<span class="small topic-title text-break">
|
|
134
|
+
{{{ if posts.data.tid }}}
|
|
135
|
+
<div class="d-flex flex-column align-items-start gap-1">
|
|
136
|
+
<a href="{config.relative_path}/topic/{posts.data.tid}">{posts.topic.title}</a>
|
|
137
|
+
<span class="badge text-body border border-gray-300 stats text-xs">
|
|
138
|
+
<span class="text-lowercase fw-normal">[[global:lastpost]]</span>
|
|
139
|
+
<span title="{posts.topic.lastposttimeISO}" class="timeago fw-bold"></span>
|
|
140
|
+
</span>
|
|
141
|
+
</div>
|
|
142
|
+
{{{ end }}}
|
|
143
|
+
<span class="title-text">{posts.data.title}</span>
|
|
144
|
+
</span>
|
|
145
|
+
{{{if !posts.data.tid}}}
|
|
146
|
+
<div class="topic-title-editable hidden">
|
|
147
|
+
<input class="form-control" type="text" value="{posts.data.title}"/>
|
|
171
148
|
</div>
|
|
172
|
-
{{{
|
|
173
|
-
|
|
174
|
-
|
|
149
|
+
{{{end}}}
|
|
150
|
+
</li>
|
|
151
|
+
<li class="card-body border-bottom">
|
|
152
|
+
<div class="text-xs fw-semibold mb-1">
|
|
153
|
+
[[post-queue:category]]
|
|
175
154
|
</div>
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
155
|
+
<div class="topic-category small">
|
|
156
|
+
<a href="{config.relative_path}/category/{posts.category.slug}">
|
|
157
|
+
<div class="category-item d-inline-block">
|
|
158
|
+
{buildCategoryIcon(./category, "24px", "rounded-circle")}
|
|
159
|
+
{posts.category.name}
|
|
160
|
+
</div>
|
|
161
|
+
</a>
|
|
179
162
|
</div>
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
163
|
+
</li>
|
|
164
|
+
<li class="card-body">
|
|
165
|
+
{{{ if canAccept }}}
|
|
166
|
+
<div class="row row-cols-2 g-1">
|
|
167
|
+
<div class="col d-grid">
|
|
168
|
+
<button class="btn btn-success btn-sm" data-action="accept"><i class="fa fa-fw fa-check"></i> [[post-queue:accept]] </button>
|
|
169
|
+
</div>
|
|
170
|
+
<div class="col d-grid">
|
|
171
|
+
<button class="btn btn-danger btn-sm" data-action="reject"><i class="fa fa-fw fa-times"></i> [[post-queue:reject]]</button>
|
|
172
|
+
</div>
|
|
173
|
+
{{{ if !posts.data.tid }}}
|
|
174
|
+
<div class="col d-grid">
|
|
175
|
+
<button class="btn btn-light btn-sm" data-action="editTitle"><i class="fa fa-fw fa-edit"></i> [[post-queue:title]]</button>
|
|
176
|
+
</div>
|
|
177
|
+
{{{ end }}}
|
|
178
|
+
<div class="col d-grid">
|
|
179
|
+
<button class="btn btn-light btn-sm" data-action="editContent"><i class="fa fa-fw fa-edit"></i> [[post-queue:content]]</button>
|
|
180
|
+
</div>
|
|
181
|
+
{{{if posts.data.cid}}}
|
|
182
|
+
<div class="col d-grid">
|
|
183
|
+
<button class="btn btn-light btn-sm" data-action="editCategory"><i class="fa fa-fw fa-edit"></i> [[post-queue:category]]</button>
|
|
184
|
+
</div>
|
|
185
|
+
{{{ end }}}
|
|
186
|
+
<div class="col d-grid">
|
|
187
|
+
<button class="btn btn-light btn-sm" data-action="notify"><i class="fa fa-fw fa-bell-o"></i> [[post-queue:notify]]</button>
|
|
188
|
+
</div>
|
|
183
189
|
</div>
|
|
190
|
+
{{{ else }}}
|
|
191
|
+
<button class="btn btn-danger btn-sm" data-action="reject"><i class="fa fa-fw fa-times"></i> [[post-queue:remove]]</button>
|
|
184
192
|
{{{ end }}}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
</
|
|
193
|
-
</ul>
|
|
194
|
-
</div>
|
|
195
|
-
<div class="col-lg-9 d-flex flex-column">
|
|
196
|
-
<div class="post-content mb-auto text-break p-3 pb-0 h-100">{posts.data.content}</div>
|
|
197
|
-
<div class="post-content-editable flex-grow-1 hidden">
|
|
198
|
-
<textarea class="form-control w-100 h-100 p-3">{posts.data.rawContent}</textarea>
|
|
193
|
+
</li>
|
|
194
|
+
</ul>
|
|
195
|
+
</div>
|
|
196
|
+
<div class="col-lg-9 d-flex flex-column">
|
|
197
|
+
<div class="post-content mb-auto text-break p-3 pb-0 h-100">{posts.data.content}</div>
|
|
198
|
+
<div class="post-content-editable flex-grow-1 hidden">
|
|
199
|
+
<textarea class="form-control w-100 h-100 p-3">{posts.data.rawContent}</textarea>
|
|
200
|
+
</div>
|
|
199
201
|
</div>
|
|
200
202
|
</div>
|
|
201
203
|
</div>
|
|
204
|
+
{{{ end }}}
|
|
202
205
|
</div>
|
|
203
|
-
{{{ end }}}
|
|
204
|
-
</div>
|
|
205
206
|
|
|
206
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
207
|
+
<!-- IMPORT partials/paginator.tpl -->
|
|
208
|
+
</div>
|