nodebb-theme-persona 11.4.3 → 12.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/less/account.less CHANGED
@@ -166,12 +166,6 @@
166
166
  }
167
167
  }
168
168
 
169
- @media (min-width: @screen-lg-min) {
170
- .cover {
171
- top: calc(var(--panel-offset) + @navbar-height);
172
- }
173
- }
174
-
175
169
  @media (min-width: @screen-md-min) {
176
170
  margin-top: 300px;
177
171
 
package/less/chats.less CHANGED
@@ -22,7 +22,7 @@
22
22
  .chats-full, .chat-modal {
23
23
  display: flex;
24
24
  flex-wrap: nowrap;
25
- height: calc(100vh - var(--panel-offset) - 70px);
25
+ height: calc(100vh - var(--panel-offset));
26
26
 
27
27
  [component="chat/nav-wrapper"] {
28
28
  flex: 1;
@@ -157,8 +157,7 @@
157
157
  }
158
158
 
159
159
  .chat-list {
160
- margin-top: -6px;
161
- margin-left: -1px;
160
+ margin-top: -5px;
162
161
  }
163
162
 
164
163
  .chats-list {
@@ -174,10 +173,10 @@
174
173
  }
175
174
 
176
175
  > li {
176
+ display: flex;
177
177
  position: relative;
178
178
  clear: both;
179
179
  list-style-type: none;
180
- padding: 0.5em;
181
180
  height: 80px;
182
181
  .pointer;
183
182
 
@@ -195,36 +194,29 @@
195
194
  &.unread {
196
195
  background: lighten(@brand-primary, 35%);
197
196
  border-bottom: 0;
198
-
199
197
  }
200
198
 
201
199
  .teaser-content {
202
- display: block;
203
- white-space: nowrap;
204
- overflow: hidden;
205
- text-overflow: ellipsis;
206
200
  font-size: 13px;
207
201
  opacity: 0.8;
208
202
  }
209
203
 
210
- .room-name {
211
- white-space: nowrap;
212
- overflow: hidden;
213
- text-overflow: ellipsis;
214
- display: block;
215
- [component="chat/title"] {
204
+ .notification-chat-content {
205
+ .room-name {
206
+ white-space: nowrap;
216
207
  overflow: hidden;
217
- white-space: nowrap;
218
- text-overflow: ellipsis;
219
- max-width: 350px;
220
- display: inline-block;
208
+ text-overflow: ellipsis;
209
+ display: block;
210
+ [component="chat/title"] {
211
+ overflow: hidden;
212
+ white-space: nowrap;
213
+ text-overflow: ellipsis;
214
+ max-width: 350px;
215
+ display: inline-block;
216
+ }
221
217
  }
222
218
  }
223
219
 
224
- .teaser-content, .room-name {
225
- padding-left: 80px;
226
- }
227
-
228
220
  &.bg-primary {
229
221
  background: @brand-primary;
230
222
  border-bottom: 0;
@@ -244,8 +236,8 @@
244
236
 
245
237
  .teaser-timestamp {
246
238
  font-size: 10px;
247
- margin-top: 10px;
248
- margin-right: 10px;
239
+ margin-top: .5rem;
240
+ margin-right: .5rem;
249
241
  }
250
242
 
251
243
  a {
@@ -307,26 +299,14 @@
307
299
  }
308
300
 
309
301
  .main-avatar {
310
- position: absolute;
311
- top: 0px;
312
- left: 0px;
313
-
314
302
  .avatar {
315
303
  height: 80px;
316
304
  width: 80px;
317
305
  font-size: 40px;
318
306
  border-radius: 0;
307
+ background: @gray-lighter;
319
308
  }
320
309
  }
321
-
322
- .avatar-placeholder {
323
- height: 80px;
324
- width: 80px;
325
- background: @gray-lighter;
326
- position: absolute;
327
- top: 0px;
328
- left: 0px;
329
- }
330
310
  }
331
311
  }
332
312
 
package/less/groups.less CHANGED
@@ -22,7 +22,7 @@
22
22
  margin-bottom: 1em;
23
23
  background-origin: content-box;
24
24
  width: 100%;
25
- top: calc(var(--panel-offset) + @navbar-height);
25
+ top: calc(var(--panel-offset) - 20px);
26
26
  position: absolute;
27
27
  left: auto;
28
28
  right: 0px;
package/less/header.less CHANGED
@@ -9,36 +9,51 @@
9
9
  max-height: 250px;
10
10
  padding: 0;
11
11
 
12
- li.no-notifs {
13
- text-align: center;
14
- }
15
-
16
12
  li {
13
+ display: flex;
14
+ gap: 1rem;
17
15
  width: 400px;
18
16
  text-align: left;
19
17
  list-style-type: none;
20
- padding: 0.5em;
21
- clear: both;
18
+ padding: .75em 0.5em;
22
19
 
23
- &.loading-text {
24
- text-align: center;
20
+ &:hover {
21
+ background-color: @dropdown-link-hover-bg;
25
22
  }
26
23
 
27
- a {
28
- white-space: normal;
29
- margin: 0;
30
- text-overflow: ellipsis;
24
+ &.loading-text, &.no-notifs {
25
+ justify-content: center;
31
26
 
32
- .text {
33
- margin-left: 40px;
34
- margin-right: 60px;
35
- display: block;
36
- min-height: 32px;
27
+ a {
28
+ color: inherit;
37
29
  }
30
+ }
31
+
32
+ .notification-chat-content {
33
+ flex: 1;
34
+
35
+ a {
36
+ white-space: normal;
37
+ margin: 0;
38
+ text-overflow: ellipsis;
39
+
40
+ .text {
41
+ margin-left: 40px;
42
+ margin-right: 60px;
43
+ display: block;
44
+ min-height: 32px;
45
+ }
46
+ }
47
+ }
48
+
49
+ .notification-chat-controls {
50
+ display: flex;
51
+ flex-direction: column;
52
+ align-items: center;
53
+ gap: .5rem;
54
+
38
55
  .relTime {
39
56
  font-size: 10px;
40
- margin-top: 10px;
41
- margin-right: 10px;
42
57
  }
43
58
  }
44
59
 
@@ -61,7 +76,11 @@
61
76
  }
62
77
 
63
78
  &.unread {
64
- .bg-variant(@state-warning-bg);
79
+ background-color: @state-warning-bg;
80
+
81
+ &:hover {
82
+ background-color: darken(@state-warning-bg, 5%);
83
+ }
65
84
 
66
85
  .mark-read:after {
67
86
  font-weight: 900;
@@ -76,14 +95,20 @@
76
95
  > li {
77
96
  .pointer;
78
97
  width: 500px;
79
- padding-bottom: 1rem;
98
+ padding: 0;
80
99
  margin: 0;
100
+ gap: 0;
101
+ overflow-y: hidden;
102
+
103
+ .notification-chat-content {
104
+ padding: 0.5rem;
105
+ overflow: hidden;
106
+ text-overflow: ellipsis;
107
+ }
81
108
 
82
109
  .teaser-content {
83
110
  white-space: nowrap;
84
111
  max-height: 19px;
85
- padding-left: 90px;
86
- padding-right: 10px;
87
112
  }
88
113
 
89
114
  &:not(:last-child) {
package/less/mobile.less CHANGED
@@ -34,11 +34,6 @@
34
34
  }
35
35
 
36
36
  @media (max-width: @screen-md-max) {
37
- body {
38
- padding-top: 0;
39
- padding-bottom: 0;
40
- }
41
-
42
37
  #panel {
43
38
  background-color: inherit;
44
39
  min-height: 100%;
@@ -180,7 +175,9 @@
180
175
  text-overflow: ellipsis;
181
176
  }
182
177
  .teaser-timestamp {
183
- margin-right: 10px;
178
+ font-size: 10px;
179
+ margin-right: 0.5rem;
180
+ margin-top: 0.5rem;
184
181
  }
185
182
  }
186
183
  }
@@ -196,6 +193,15 @@
196
193
  .unread {
197
194
  background-color: inherit;
198
195
  }
196
+
197
+ .notification-chat-content {
198
+ padding-top: 10px;
199
+ padding-right: 20px;
200
+ }
201
+
202
+ .notification-chat-controls {
203
+ display: none;
204
+ }
199
205
  }
200
206
  .chat-list .unread .room-name::after,
201
207
  .notification-list-mobile .unread a::after {
@@ -6,12 +6,8 @@
6
6
 
7
7
  .taskbar {
8
8
  display: none;
9
- left: auto;
10
-
11
- // Bootswatch fix
12
- &.navbar-fixed-bottom {
13
- left: auto;
14
- }
9
+ left: 15px;
10
+ right: auto;
15
11
 
16
12
  margin-top: 0;
17
13
  .transition(.15s ease-in opacity);
package/less/style.less CHANGED
@@ -4,17 +4,6 @@ html {
4
4
  }
5
5
 
6
6
  body {
7
- @media (min-width: 979px)
8
- {
9
- padding-top: 70px;
10
- }
11
-
12
- @media (max-width: 979px)
13
- {
14
- padding-top: 70px;
15
- padding-bottom: 50px;
16
- }
17
-
18
7
  min-height: 100%;
19
8
  }
20
9
 
package/less/topic.less CHANGED
@@ -41,7 +41,7 @@
41
41
  }
42
42
  .topic-header {
43
43
  position: sticky;
44
- top: calc(var(--panel-offset) + @navbar-height);
44
+ top: calc(var(--panel-offset) - 20px);
45
45
  background-color: @body-bg;
46
46
  z-index: @zindex-navbar;
47
47
  margin-left: -15px;
@@ -50,12 +50,6 @@
50
50
  padding-right: 15px;
51
51
  }
52
52
 
53
- @media (max-width: @screen-md-max) {
54
- .topic-header {
55
- top: calc(var(--panel-offset) + @navbar-height - 70px);
56
- }
57
- }
58
-
59
53
  .topic-info {
60
54
  border-bottom: 1px solid @post-border-color;
61
55
  margin-bottom: 10px;
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "nodebb-theme-persona",
3
- "version": "11.4.3",
3
+ "version": "12.0.1",
4
4
  "nbbpm": {
5
- "compatibility": "^1.18.0"
5
+ "compatibility": "^2.0.0"
6
6
  },
7
7
  "description": "Persona theme for NodeBB",
8
8
  "main": "library.js",
package/plugin.json CHANGED
@@ -9,16 +9,13 @@
9
9
  { "hook": "filter:topic.build", "method": "addUserToTopic" }
10
10
  ],
11
11
  "scripts": [
12
- "public/persona.js",
13
- "public/settings.js",
14
12
  "public/modules/autohidingnavbar.js",
15
- "public/modules/quickreply.js"
13
+ "public/persona.js"
16
14
  ],
17
15
  "modules": {
18
- "pulling.js": "node_modules/pulling/build/pulling-drawer.js"
16
+ "../admin/plugins/persona.js": "public/admin.js",
17
+ "persona/quickreply.js": "public/modules/quickreply.js",
18
+ "../client/account/theme.js": "public/settings.js"
19
19
  },
20
- "acpScripts": [
21
- "public/admin.js"
22
- ],
23
20
  "languages": "languages"
24
21
  }
package/public/persona.js CHANGED
@@ -31,13 +31,9 @@ $(document).ready(function () {
31
31
  (parseInt(headerStyle.marginTop, 10) || 0) +
32
32
  (parseInt(headerStyle.marginBottom, 10) || 0);
33
33
 
34
- // body element itself introduces a hardcoded 70px padding on desktop resolution
35
- if (env === 'lg') {
36
- offset -= 70;
37
- }
38
-
39
34
  offset = Math.max(0, offset);
40
35
  document.documentElement.style.setProperty('--panel-offset', `${offset}px`);
36
+ localStorage.setItem('panelOffset', offset);
41
37
  }
42
38
 
43
39
  var lastBSEnv = '';
@@ -207,7 +203,7 @@ $(document).ready(function () {
207
203
  return;
208
204
  }
209
205
 
210
- require(['pulling', 'storage', 'alerts', 'search'], function (Pulling, Storage, alerts, search) {
206
+ require(['pulling/build/pulling-drawer', 'storage', 'alerts', 'search'], function (Pulling, Storage, alerts, search) {
211
207
  if (!Pulling) {
212
208
  return;
213
209
  }
@@ -9,10 +9,6 @@
9
9
  </div>
10
10
  <!-- ENDIF !isSpider -->
11
11
 
12
- <div class="hide">
13
- <!-- IMPORT 500-embed.tpl -->
14
- </div>
15
-
16
12
  <!-- IMPORT partials/footer/js.tpl -->
17
13
  </body>
18
14
  </html>
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <html lang="{function.localeToHTML, userLang, defaultLang}" {{{if languageDirection}}}data-dir="{languageDirection}" style="direction: {languageDirection}; --panel-offset: 50px;" {{{end}}} >
2
+ <html lang="{function.localeToHTML, userLang, defaultLang}" {{{if languageDirection}}}data-dir="{languageDirection}" style="direction: {languageDirection};"{{{end}}}>
3
3
  <head>
4
4
  <title>{browserTitle}</title>
5
5
  {{{each metaTags}}}{function.buildMetaTag}{{{end}}}
@@ -1,3 +1,3 @@
1
- <div id="taskbar" class="taskbar navbar-fixed-bottom">
2
- <div class="navbar-inner"><ul class="nav navbar-nav pull-right"></ul></div>
1
+ <div id="taskbar" class="taskbar navbar-fixed-bottom">
2
+ <div class="navbar-inner"><ul class="nav navbar-nav"></ul></div>
3
3
  </div>
@@ -1,14 +1,6 @@
1
1
  <!-- IF rooms.length -->
2
2
  {{{each rooms}}}
3
3
  <li class="<!-- IF ../unread -->unread<!-- ENDIF ../unread -->" data-roomid="{rooms.roomId}">
4
- <strong class="room-name">
5
- <!-- IF !rooms.lastUser.uid -->
6
- <span>[[modules:chat.no-users-in-room]]</span>
7
- <!-- ELSE -->
8
- <!-- IF rooms.roomName -->{rooms.roomName}<!-- ELSE -->{rooms.usernames}<!-- ENDIF rooms.roomName -->
9
- <!-- ENDIF !rooms.lastUser.uid -->
10
- </strong>
11
- <div class="avatar-placeholder"></div>
12
4
  {{{each rooms.users}}}
13
5
  <!-- IF @first -->
14
6
  <div class="main-avatar">
@@ -25,8 +17,20 @@
25
17
  {{{end}}}
26
18
  </ul>
27
19
 
28
- <span class="teaser-content"><strong class="teaser-username">{rooms.teaser.user.username}:</strong> {rooms.teaser.content}</span>
29
- <span class="teaser-timestamp pull-right">{rooms.teaser.timeago}</span>
20
+ <div class="notification-chat-content">
21
+ <strong class="room-name">
22
+ <!-- IF !rooms.lastUser.uid -->
23
+ <span>[[modules:chat.no-users-in-room]]</span>
24
+ <!-- ELSE -->
25
+ <!-- IF rooms.roomName -->{rooms.roomName}<!-- ELSE -->{rooms.usernames}<!-- ENDIF rooms.roomName -->
26
+ <!-- ENDIF !rooms.lastUser.uid -->
27
+ </strong>
28
+ <span class="teaser-content">
29
+ <strong class="teaser-username">{rooms.teaser.user.username}:</strong>
30
+ {rooms.teaser.content}
31
+ </span>
32
+ </div>
33
+ <div class="teaser-timestamp notification-chat-controls">{rooms.teaser.timeago}</div>
30
34
  </li>
31
35
  {{{end}}}
32
36
  <!-- ELSE -->
@@ -1,12 +1,4 @@
1
1
  <li component="chat/recent/room" data-roomid="{rooms.roomId}" class="<!-- IF rooms.unread -->unread<!-- ENDIF rooms.unread -->">
2
- <strong class="room-name">
3
- <!-- IF !rooms.lastUser.uid -->
4
- <span>[[modules:chat.no-users-in-room]]</span>
5
- <!-- ELSE -->
6
- <span component="chat/title"><!-- IF rooms.roomName -->{rooms.roomName}<!-- ELSE -->{rooms.usernames}<!-- ENDIF rooms.roomName --></span>
7
- <!-- ENDIF !rooms.lastUser.uid -->
8
- </strong>
9
- <div class="avatar-placeholder"></div>
10
2
  {{{each rooms.users}}}
11
3
  <!-- IF @first -->
12
4
  <div class="main-avatar">
@@ -22,4 +14,14 @@
22
14
  </li>
23
15
  {{{end}}}
24
16
  </ul>
17
+
18
+ <div class="notification-chat-content">
19
+ <strong class="room-name">
20
+ <!-- IF !rooms.lastUser.uid -->
21
+ <span>[[modules:chat.no-users-in-room]]</span>
22
+ <!-- ELSE -->
23
+ <span component="chat/title"><!-- IF rooms.roomName -->{rooms.roomName}<!-- ELSE -->{rooms.usernames}<!-- ENDIF rooms.roomName --></span>
24
+ <!-- ENDIF !rooms.lastUser.uid -->
25
+ </strong>
26
+ </div>
25
27
  </li>
@@ -13,11 +13,13 @@
13
13
  <a href="{config.relative_path}/user/{notifications.user.userslug}"><div class="pull-left avatar avatar-md avatar-rounded" style="background-color: {notifications.user.icon:bgColor};">{notifications.user.icon:text}</div></a>
14
14
  <!-- ENDIF notifications.image -->
15
15
 
16
- {{{ if ./nid }}}<div class="pull-right mark-read" aria-label="Mark Read"></div>{{{ end }}}
17
- <a href="{notifications.path}" class="deco-none">
16
+ <a href="{notifications.path}" class="notification-chat-content deco-none">
18
17
  <span class="text">{notifications.bodyShort}</span>
19
- <span class="pull-right relTime">{notifications.timeago}</span>
20
18
  </a>
21
- <div class="clear"></div>
19
+
20
+ <div class="notification-chat-controls">
21
+ {{{ if ./nid }}}<div class="mark-read" aria-label="Mark Read"></div>{{{ end }}}
22
+ <span class="relTime">{notifications.timeago}</span>
23
+ </div>
22
24
  </li>
23
25
  {{{end}}}
@@ -1,4 +1,4 @@
1
- <span component="post/tools" class="dropdown moderator-tools bottom-sheet <!-- IF !posts.display_post_menu -->hidden<!-- ENDIF !posts.display_post_menu -->">
2
- <a href="#" data-toggle="dropdown" data-ajaxify="false"><i class="fa fa-fw fa-ellipsis-v"></i></a>
3
- <ul class="dropdown-menu dropdown-menu-right" role="menu"></ul>
4
- </span>
1
+ <span component="post/tools" class="dropdown moderator-tools bottom-sheet <!-- IF !posts.display_post_menu -->hidden<!-- ENDIF !posts.display_post_menu -->">
2
+ <a href="#" data-toggle="dropdown" data-ajaxify="false"><i class="fa fa-fw fa-ellipsis-v"></i></a>
3
+ <ul class="dropdown-menu dropdown-menu-right hidden" role="menu"></ul>
4
+ </span>
@@ -1,83 +1,101 @@
1
- <!-- IMPORT partials/breadcrumbs.tpl -->
2
- <div class="btn-toolbar">
3
- <!-- IMPORT partials/category-filter-right.tpl -->
4
- </div>
5
- <hr/>
6
- <div class="row">
7
- <div class="col-xs-12">
8
- <div class="post-queue preventSlideout posts-list">
9
- {{{ if !posts.length }}}
10
- {{{ if isAdmin }}}
11
- <p class="panel-body">
12
- [[post-queue:description, {config.relative_path}/admin/settings/post#post-queue]]
13
- </p>
14
- {{{ end }}}
15
- {{{ end }}}
16
-
17
- {{{ each posts }}}
18
- <div class="panel panel-default" data-id="{posts.id}">
19
- <div class="panel-heading">
20
- <strong>{{{ if posts.data.tid }}}[[post-queue:reply]]{{{ else }}}[[post-queue:topic]]{{{ end }}}</strong>
21
- <span class="timeago pull-right" title={posts.data.timestampISO}></span>
22
- </div>
23
- <div class="panel-body">
24
-
25
- <div class="row">
26
- <div class="col-lg-2 col-xs-12">
27
- <strong>[[post-queue:user]]</strong>
28
- <div>
29
- {{{ if posts.user.userslug}}}
30
- <a href="{config.relative_path}/uid/{posts.user.uid}">{buildAvatar(posts.user, "24", true, "not-responsive")} {posts.user.username}</a>
31
- {{{ else }}}
32
- {posts.user.username}
33
- {{{ end }}}
34
- </div>
35
- </div>
36
- <div class="col-lg-3 col-xs-12">
37
- <strong>[[post-queue:category]]{{{ if posts.data.cid}}} <i class="fa fa-fw fa-edit" data-toggle="tooltip" title="[[post-queue:category-editable]]"></i>{{{ end }}}</strong>
38
- <div class="topic-category" {{{if posts.data.cid}}}data-editable="editable"{{{end}}}">
39
- <a href="{config.relative_path}/category/{posts.category.slug}"><!-- IF posts.category.icon --><span class="fa-stack"><i style="color: {posts.category.bgColor};" class="fa fa-circle fa-stack-2x"></i><i style="color: {posts.category.color};" class="fa fa-stack-1x fa-fw {posts.category.icon}"></i></span><!-- ENDIF posts.category.icon --> {posts.category.name}</a>
40
- </div>
41
- </div>
42
- <div class="col-lg-7 col-xs-12">
43
- <strong>{{{ if posts.data.tid }}}[[post-queue:topic]]{{{ else }}}[[post-queue:title]] <i class="fa fa-fw fa-edit" data-toggle="tooltip" title="[[post-queue:title-editable]]"></i>{{{ end }}}</strong>
44
- <div class="topic-title">
45
- {{{ if posts.data.tid }}}
46
- <a href="{config.relative_path}/topic/{posts.data.tid}">{posts.topic.title}</a>
47
- {{{ end }}}
48
- <span class="title-text">{posts.data.title}</span>
49
- </div>
50
- {{{if !posts.data.tid}}}
51
- <div class="topic-title-editable hidden">
52
- <input class="form-control" type="text" value="{posts.data.title}"/>
53
- </div>
54
- {{{end}}}
55
- </div>
56
- </div>
57
- <hr/>
58
- <div>
59
- <strong>[[post-queue:content]] <i class="fa fa-fw fa-edit" data-toggle="tooltip" title="[[post-queue:content-editable]]"></i></strong>
60
- <div class="post-content">{posts.data.content}</div>
61
- <div class="post-content-editable hidden">
62
- <textarea class="form-control">{posts.data.rawContent}</textarea>
63
- </div>
64
- </div>
65
- </div>
66
- <div class="panel-footer text-right">
67
- <div>
68
- {{{ if canAccept }}}
69
- <button class="btn btn-danger btn-xs" data-action="reject"><i class="fa fa-fw fa-times"></i> [[post-queue:reject]]</button>
70
- <button class="btn btn-info btn-xs" data-action="notify"><i class="fa fa-fw fa-bell-o"></i> [[post-queue:notify]]</button>
71
- <button class="btn btn-success btn-xs" data-action="accept"><i class="fa fa-fw fa-check"></i> [[post-queue:accept]] </button>
72
- {{{ else }}}
73
- <button class="btn btn-danger btn-xs" data-action="reject"><i class="fa fa-fw fa-times"></i> [[post-queue:remove]]</button>
74
- {{{ end }}}
75
- </div>
76
- </div>
77
- </div>
78
- {{{ end }}}
79
- </div>
80
-
81
- <!-- IMPORT partials/paginator.tpl -->
82
- </div>
1
+ <!-- IMPORT partials/breadcrumbs.tpl -->
2
+ <div class="btn-toolbar">
3
+ <!-- IMPORT partials/category-filter-right.tpl -->
4
+
5
+ {{{ if !singlePost }}}
6
+ <div class="btn-group pull-right bottom-sheet" component="post-queue/bulk-actions">
7
+ <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" autocomplete="off" aria-haspopup="true" aria-expanded="false">
8
+ <i class="fa fa-clone"></i> [[post-queue:bulk-actions]] <span class="caret"></span>
9
+ </button>
10
+ <ul class="dropdown-menu dropdown-menu-right">
11
+ <li><a href="#" data-action="accept-all">[[post-queue:accept-all]]</a></li>
12
+ <li><a href="#" data-action="accept-selected">[[post-queue:accept-selected]]</a></li>
13
+ <li class="divider"></li>
14
+ <li><a href="#" data-action="reject-all">[[post-queue:reject-all]]</a></li>
15
+ <li><a href="#" data-action="reject-selected">[[post-queue:reject-selected]]</a></li>
16
+ </ul>
17
+ </div>
18
+ {{{ end }}}
19
+ </div>
20
+ <hr/>
21
+ <div class="row">
22
+ <div class="col-xs-12">
23
+ <div class="post-queue preventSlideout posts-list">
24
+ {{{ if !posts.length }}}
25
+ {{{ if isAdmin }}}
26
+ <p class="panel-body">
27
+ [[post-queue:description, {config.relative_path}/admin/settings/post#post-queue]]
28
+ </p>
29
+ {{{ end }}}
30
+ {{{ end }}}
31
+
32
+ {{{ each posts }}}
33
+ <div class="panel panel-default" data-id="{posts.id}">
34
+ <div class="panel-heading">
35
+ {{{ if !singlePost }}}
36
+ <input type="checkbox" autocomplete="off" />
37
+ {{{ end }}}
38
+ <strong>{{{ if posts.data.tid }}}[[post-queue:reply]]{{{ else }}}[[post-queue:topic]]{{{ end }}}</strong>
39
+ <span class="timeago pull-right" title={posts.data.timestampISO}></span>
40
+ </div>
41
+ <div class="panel-body">
42
+
43
+ <div class="row">
44
+ <div class="col-lg-2 col-xs-12">
45
+ <strong>[[post-queue:user]]</strong>
46
+ <div>
47
+ {{{ if posts.user.userslug}}}
48
+ <a href="{config.relative_path}/uid/{posts.user.uid}">{buildAvatar(posts.user, "24", true, "not-responsive")} {posts.user.username}</a>
49
+ {{{ else }}}
50
+ {posts.user.username}
51
+ {{{ end }}}
52
+ </div>
53
+ </div>
54
+ <div class="col-lg-3 col-xs-12">
55
+ <strong>[[post-queue:category]]{{{ if posts.data.cid}}} <i class="fa fa-fw fa-edit" data-toggle="tooltip" title="[[post-queue:category-editable]]"></i>{{{ end }}}</strong>
56
+ <div class="topic-category" {{{if posts.data.cid}}}data-editable="editable"{{{end}}}">
57
+ <a href="{config.relative_path}/category/{posts.category.slug}"><!-- IF posts.category.icon --><span class="fa-stack"><i style="color: {posts.category.bgColor};" class="fa fa-circle fa-stack-2x"></i><i style="color: {posts.category.color};" class="fa fa-stack-1x fa-fw {posts.category.icon}"></i></span><!-- ENDIF posts.category.icon --> {posts.category.name}</a>
58
+ </div>
59
+ </div>
60
+ <div class="col-lg-7 col-xs-12">
61
+ <strong>{{{ if posts.data.tid }}}[[post-queue:topic]]{{{ else }}}[[post-queue:title]] <i class="fa fa-fw fa-edit" data-toggle="tooltip" title="[[post-queue:title-editable]]"></i>{{{ end }}}</strong>
62
+ <div class="topic-title">
63
+ {{{ if posts.data.tid }}}
64
+ <a href="{config.relative_path}/topic/{posts.data.tid}">{posts.topic.title}</a>
65
+ {{{ end }}}
66
+ <span class="title-text">{posts.data.title}</span>
67
+ </div>
68
+ {{{if !posts.data.tid}}}
69
+ <div class="topic-title-editable hidden">
70
+ <input class="form-control" type="text" value="{posts.data.title}"/>
71
+ </div>
72
+ {{{end}}}
73
+ </div>
74
+ </div>
75
+ <hr/>
76
+ <div>
77
+ <strong>[[post-queue:content]] <i class="fa fa-fw fa-edit" data-toggle="tooltip" title="[[post-queue:content-editable]]"></i></strong>
78
+ <div class="post-content">{posts.data.content}</div>
79
+ <div class="post-content-editable hidden">
80
+ <textarea class="form-control">{posts.data.rawContent}</textarea>
81
+ </div>
82
+ </div>
83
+ </div>
84
+ <div class="panel-footer text-right">
85
+ <div>
86
+ {{{ if canAccept }}}
87
+ <button class="btn btn-danger btn-xs" data-action="reject"><i class="fa fa-fw fa-times"></i> [[post-queue:reject]]</button>
88
+ <button class="btn btn-info btn-xs" data-action="notify"><i class="fa fa-fw fa-bell-o"></i> [[post-queue:notify]]</button>
89
+ <button class="btn btn-success btn-xs" data-action="accept"><i class="fa fa-fw fa-check"></i> [[post-queue:accept]] </button>
90
+ {{{ else }}}
91
+ <button class="btn btn-danger btn-xs" data-action="reject"><i class="fa fa-fw fa-times"></i> [[post-queue:remove]]</button>
92
+ {{{ end }}}
93
+ </div>
94
+ </div>
95
+ </div>
96
+ {{{ end }}}
97
+ </div>
98
+
99
+ <!-- IMPORT partials/paginator.tpl -->
100
+ </div>
83
101
  </div>