nodebb-theme-persona 13.3.32 → 13.3.34

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.
Files changed (145) hide show
  1. package/.eslintrc +2 -2
  2. package/README.md +20 -20
  3. package/lib/controllers.js +24 -24
  4. package/library.js +97 -97
  5. package/package.json +52 -52
  6. package/plugin.json +20 -20
  7. package/public/.eslintrc +2 -2
  8. package/public/admin.js +15 -15
  9. package/public/modules/autohidingnavbar.js +220 -220
  10. package/public/modules/mobile-menu.js +190 -190
  11. package/public/modules/taskbar.js +65 -65
  12. package/public/persona.js +257 -257
  13. package/public/settings.js +53 -53
  14. package/scss/account.scss +336 -336
  15. package/scss/categories.scss +205 -205
  16. package/scss/category.scss +161 -161
  17. package/scss/chats.scss +14 -14
  18. package/scss/flags.scss +42 -42
  19. package/scss/footer.scss +16 -16
  20. package/scss/groups.scss +166 -166
  21. package/scss/header.scss +229 -361
  22. package/scss/keyframes.scss +152 -152
  23. package/scss/mixins.scss +129 -129
  24. package/scss/mobile.scss +222 -331
  25. package/scss/modules/composer.scss +20 -20
  26. package/scss/modules/cookie-consent.scss +12 -12
  27. package/scss/modules/fab.scss +32 -32
  28. package/scss/modules/morph.scss +268 -268
  29. package/scss/modules/necro-post.scss +8 -8
  30. package/scss/modules/nprogress.scss +80 -80
  31. package/scss/modules/taskbar.scss +160 -160
  32. package/scss/modules/user-menu.scss +7 -7
  33. package/scss/modules/usercard.scss +64 -64
  34. package/scss/noscript.scss +80 -80
  35. package/scss/overrides.scss +39 -39
  36. package/scss/persona.scss +34 -34
  37. package/scss/posts_list.scss +127 -127
  38. package/scss/search.scss +48 -48
  39. package/scss/style.scss +256 -256
  40. package/scss/tags.scss +10 -10
  41. package/scss/topic.scss +571 -571
  42. package/scss/topics_list.scss +16 -16
  43. package/scss/variables.scss +6 -6
  44. package/templates/account/blocks.tpl +46 -46
  45. package/templates/account/categories.tpl +28 -28
  46. package/templates/account/consent.tpl +68 -68
  47. package/templates/account/edit/password.tpl +29 -29
  48. package/templates/account/edit/username.tpl +25 -25
  49. package/templates/account/edit.tpl +136 -136
  50. package/templates/account/followers.tpl +17 -17
  51. package/templates/account/following.tpl +17 -17
  52. package/templates/account/groups.tpl +16 -16
  53. package/templates/account/info.tpl +291 -291
  54. package/templates/account/posts.tpl +18 -18
  55. package/templates/account/profile.tpl +166 -166
  56. package/templates/account/sessions.tpl +31 -31
  57. package/templates/account/settings.tpl +251 -251
  58. package/templates/account/tags.tpl +9 -9
  59. package/templates/account/theme.tpl +25 -25
  60. package/templates/account/topics.tpl +29 -29
  61. package/templates/account/uploads.tpl +42 -42
  62. package/templates/admin/plugins/persona.tpl +24 -24
  63. package/templates/categories.tpl +31 -31
  64. package/templates/category.tpl +63 -63
  65. package/templates/flags/detail.tpl +208 -208
  66. package/templates/flags/list.tpl +71 -71
  67. package/templates/footer.tpl +11 -11
  68. package/templates/groups/details.tpl +77 -77
  69. package/templates/groups/list.tpl +48 -48
  70. package/templates/groups/members.tpl +5 -5
  71. package/templates/header.tpl +47 -47
  72. package/templates/modules/taskbar.tpl +2 -2
  73. package/templates/modules/usercard.tpl +36 -36
  74. package/templates/notifications.tpl +66 -66
  75. package/templates/partials/account/category-item.tpl +23 -23
  76. package/templates/partials/account/header.tpl +47 -47
  77. package/templates/partials/account/menu.tpl +108 -108
  78. package/templates/partials/breadcrumbs.tpl +18 -18
  79. package/templates/partials/buttons/newTopic.tpl +22 -22
  80. package/templates/partials/categories/item.tpl +60 -60
  81. package/templates/partials/categories/lastpost.tpl +26 -26
  82. package/templates/partials/category/filter-dropdown-content.tpl +31 -31
  83. package/templates/partials/category/selector-dropdown-content.tpl +32 -32
  84. package/templates/partials/category/sort.tpl +14 -14
  85. package/templates/partials/category/subcategory.tpl +17 -17
  86. package/templates/partials/category/tags.tpl +3 -3
  87. package/templates/partials/category/tools.tpl +86 -86
  88. package/templates/partials/category/watch.tpl +55 -55
  89. package/templates/partials/chats-menu.tpl +41 -40
  90. package/templates/partials/cookie-consent.tpl +4 -4
  91. package/templates/partials/flags/filters.tpl +173 -173
  92. package/templates/partials/groups/admin.tpl +200 -200
  93. package/templates/partials/groups/filter-dropdown-content.tpl +24 -24
  94. package/templates/partials/groups/list.tpl +20 -20
  95. package/templates/partials/groups/memberlist.tpl +42 -42
  96. package/templates/partials/header/chats.tpl +18 -18
  97. package/templates/partials/header/notifications.tpl +49 -19
  98. package/templates/partials/header/search.tpl +24 -24
  99. package/templates/partials/header/user-menu.tpl +96 -96
  100. package/templates/partials/menu.tpl +128 -128
  101. package/templates/partials/notifications_list.tpl +44 -30
  102. package/templates/partials/paginator.tpl +44 -44
  103. package/templates/partials/post_bar.tpl +20 -20
  104. package/templates/partials/posts_list.tpl +7 -7
  105. package/templates/partials/posts_list_item.tpl +31 -31
  106. package/templates/partials/quick-search-results.tpl +33 -33
  107. package/templates/partials/search-filters.tpl +183 -183
  108. package/templates/partials/search-results.tpl +54 -54
  109. package/templates/partials/slideout-menu.tpl +4 -4
  110. package/templates/partials/tags/filter-dropdown-content.tpl +33 -33
  111. package/templates/partials/tags/watch.tpl +35 -35
  112. package/templates/partials/tags_list.tpl +4 -4
  113. package/templates/partials/toast.tpl +19 -19
  114. package/templates/partials/topic/event.tpl +12 -12
  115. package/templates/partials/topic/navigation-post.tpl +11 -11
  116. package/templates/partials/topic/navigator.tpl +39 -39
  117. package/templates/partials/topic/necro-post.tpl +2 -2
  118. package/templates/partials/topic/post-menu-list.tpl +132 -132
  119. package/templates/partials/topic/post-menu.tpl +4 -4
  120. package/templates/partials/topic/post.tpl +128 -128
  121. package/templates/partials/topic/quickreply.tpl +28 -28
  122. package/templates/partials/topic/reply-button.tpl +26 -26
  123. package/templates/partials/topic/selection-tooltip.tpl +2 -2
  124. package/templates/partials/topic/sort.tpl +9 -9
  125. package/templates/partials/topic/stats.tpl +11 -11
  126. package/templates/partials/topic/tags.tpl +2 -2
  127. package/templates/partials/topic/tools.tpl +7 -7
  128. package/templates/partials/topic/topic-menu-list.tpl +74 -74
  129. package/templates/partials/topic/watch.tpl +47 -47
  130. package/templates/partials/topic-filters.tpl +11 -11
  131. package/templates/partials/topic-terms.tpl +11 -11
  132. package/templates/partials/topics_list.tpl +117 -117
  133. package/templates/partials/users/filter-dropdown-content.tpl +20 -20
  134. package/templates/partials/users/item.tpl +43 -43
  135. package/templates/partials/users_list.tpl +14 -14
  136. package/templates/partials/users_list_menu.tpl +20 -20
  137. package/templates/popular.tpl +35 -35
  138. package/templates/recent.tpl +37 -37
  139. package/templates/search.tpl +47 -47
  140. package/templates/tag.tpl +34 -34
  141. package/templates/tags.tpl +32 -32
  142. package/templates/top.tpl +35 -35
  143. package/templates/topic.tpl +129 -129
  144. package/templates/unread.tpl +37 -37
  145. package/templates/users.tpl +34 -34
@@ -1,208 +1,208 @@
1
- <!-- IMPORT partials/breadcrumbs.tpl -->
2
-
3
- <div class="row">
4
- <div class="col-12">
5
- <h2 class="h4">
6
- {target_readable}
7
- <small><span class="text-muted timeago" title="{datetimeISO}"></span></small>
8
- </h2>
9
-
10
- <hr />
11
-
12
- <!-- IF type_bool.post -->
13
- <div class="d-flex">
14
- <div class="flex-shrink-0">
15
- <a href="{config.relative_path}/user/{target.user.userslug}">{buildAvatar(target.user, "64px", true, "media-object")}</a>
16
- </div>
17
- <div class="flex-grow-1 ms-3">
18
- <h4 class="media-heading"><a href="{config.relative_path}/user/{target.user.userslug}">{target.user.username}</a></h4>
19
- {target.content}
20
- </div>
21
- </div>
22
- <!-- ENDIF type_bool.post -->
23
-
24
- <!-- IF type_bool.user -->
25
- <div class="d-flex">
26
- <div class="flex-shrink-0">
27
- <a href="{config.relative_path}/user/{target.userslug}">{buildAvatar(target, "64px", true, "media-object")}</a>
28
- </div>
29
- <div class="flex-grow-1 ms-3">
30
- <h4 class="media-heading"><a href="{config.relative_path}/user/{target.userslug}">{target.username}</a></h4>
31
- <p class="lead">
32
- <a href="{config.relative_path}/uid/{target.uid}">[[flags:user-view]]</a> |
33
- <a href="{config.relative_path}/uid/{target.uid}/edit">[[flags:user-edit]]</a>
34
- </p>
35
- </div>
36
- </div>
37
- <!-- ENDIF type_bool.user -->
38
-
39
- <!-- IF type_bool.empty -->
40
- <div class="alert alert-warning" role="alert">[[flags:target-purged]]</div>
41
- <!-- ENDIF type_bool.empty -->
42
-
43
- <hr />
44
-
45
- <div class="row">
46
- <div class="col-sm-6">
47
- <form role="form" id="attributes">
48
- <div class="mb-3">
49
- <h2 class="h4">[[flags:reports]]</h2>
50
- <ul class="list-group" component="flag/reports">
51
- {{{ each reports }}}
52
- <li class="list-group-item">
53
- <a href="{config.relative_path}/user/{./reporter.userslug}">{buildAvatar(./reporter, "24px", true)}</a>
54
- &ndash; <span class="timeago" title="{./timestampISO}"></span>
55
- <blockquote><em>{./value}</em></blockquote>
56
- </li>
57
- {{{ end }}}
58
- </ul>
59
- </div>
60
- <div class="mb-3">
61
- <h2 class="h4" for="state">[[flags:state]]</h2>
62
- <select class="form-select" id="state" name="state" disabled>
63
- <option value="open">[[flags:state-open]]</option>
64
- <option value="wip">[[flags:state-wip]]</option>
65
- <option value="resolved">[[flags:state-resolved]]</option>
66
- <option value="rejected">[[flags:state-rejected]]</option>
67
- </select>
68
- </div>
69
- <div class="mb-3">
70
- <h2 class="h4" for="assignee">[[flags:assignee]]</h2>
71
- <select class="form-control" id="assignee" name="assignee" disabled>
72
- <option value="">[[flags:no-assignee]]</option>
73
- {{{each assignees}}}
74
- <option value="{../uid}">{../username}</option>
75
- {{{end}}}
76
- </select>
77
- </div>
78
- <div class="d-grid">
79
- <button type="button" class="btn btn-primary" data-action="update">[[flags:update]]</button>
80
- </div>
81
- </form>
82
-
83
- <hr />
84
-
85
- <form role="form">
86
- <div class="mb-3">
87
- <div class="d-flex align-items-center">
88
- <h2 class="h4 me-auto mb-0" for="note">[[flags:notes]]</h2>
89
- <button type="button" class="btn btn-primary" data-action="addEditNote">[[flags:add-note]]</button>
90
- </div>
91
- </div>
92
- </form>
93
-
94
- <div component="flag/notes">
95
- <!-- IF !notes.length -->
96
- <div class="alert alert-success text-center">[[flags:no-notes]]</div>
97
- <!-- ENDIF !notes.length -->
98
- {{{each notes}}}
99
- <div class="d-flex mb-3" component="flag/note" data-datetime="{./datetime}" data-index="{@index}">
100
- <div class="flex-shrink-0">
101
- <a href="{config.relative_path}/user/{../user.userslug}">{buildAvatar(notes.user, "32px", true, "media-object")}</a>
102
- </div>
103
- <div class="flex-grow-1 mx-3">
104
- <h2 class="h5">
105
- <a href="{config.relative_path}/user/{../user.userslug}">{../user.username}</a>
106
- <small><span class="timeago" title="{../datetimeISO}"></span></small>
107
- </h4>
108
- {../content}
109
- </div>
110
- <div class="flex-shrink-0">
111
- <a href="#" class="btn btn-sm btn-link" data-action="addEditNote"><i class="fa fa-pencil"></i></a>
112
- <a href="#" class="btn btn-sm btn-link" data-action="delete-note"><i class="fa fa-trash text-danger"></i></a>
113
- </div>
114
- </div>
115
- {{{end}}}
116
- </div>
117
- </div>
118
- <div class="col-sm-6">
119
- <h2 class="h4">[[flags:quick-actions]]</h2>
120
-
121
- <div class="d-grid gap-1">
122
- <a class="btn btn-light" href="{config.relative_path}/{type_path}/{targetId}">
123
- <i class="fa fa-external-link"></i>
124
- [[flags:go-to-target]]
125
- </a>
126
-
127
- <a class="btn btn-light" href="#" data-action="assign">
128
- <i class="fa fa-id-card-o"></i>
129
- [[flags:assign-to-me]]
130
- </a>
131
-
132
- {{{ if type_bool.post }}}
133
- {{{ if !target.deleted}}}
134
- <a class="btn btn-outline-danger" href="#" data-action="delete-post"><i class="fa fa-trash"></i> [[flags:delete-post]]</a>
135
- {{{ else }}}
136
- <a class="btn btn-danger" href="#" data-action="purge-post"><i class="fa fa-trash"></i> [[flags:purge-post]]</a>
137
- <a class="btn btn-outline-success" href="#" data-action="restore-post"><i class="fa fa-reply"></i><i class="fa fa-trash"></i> [[flags:restore-post]]</a>
138
- {{{ end }}}
139
- {{{ end }}}
140
-
141
- {{{ if target.uid }}}
142
- <div class="btn-group" data-uid="{target.uid}">
143
- <button type="button" class="btn btn-light dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
144
- <i class="fa fa-street-view"></i>
145
- [[flags:flagged-user]]
146
- <span class="caret"></span>
147
- </button>
148
- <ul class="dropdown-menu" role="menu">
149
- <li><a class="dropdown-item" href="{config.relative_path}/uid/{target.uid}" role="menuitem">[[flags:view-profile]]</a></li>
150
- {{{ if !config.disableChat }}}
151
- <li><a class="dropdown-item" href="#" data-action="chat" role="menuitem">[[flags:start-new-chat]]</a></li>
152
- {{{ end }}}
153
- <li class="dropdown-divider"></li>
154
- {{{ if privileges.ban }}}
155
- <li class="{{{ if target.user.banned }}}hidden{{{ end }}}"><a class="dropdown-item" href="#" data-action="ban" role="menuitem">[[user:ban-account]]</a></li>
156
- <li class="{{{ if !target.user.banned }}}hidden{{{ end }}}"><a class="dropdown-item" href="#" data-action="unban" role="menuitem">[[user:unban-account]]</a></li>
157
- {{{ end }}}
158
- {{{ if privileges.mute}}}
159
- <li class="{{{ if target.user.muted }}}hidden{{{ end }}}"><a class="dropdown-item" href="#" data-action="mute" role="menuitem">[[user:mute-account]]</a></li>
160
- <li class="{{{ if !target.user.muted }}}hidden{{{ end }}}"><a class="dropdown-item" href="#" data-action="unmute" role="menuitem">[[user:unmute-account]]</a></li>
161
- {{{ end }}}
162
- {{{ if privileges.admin:users }}}
163
- <li><a class="dropdown-item" href="#" data-action="delete-account" role="menuitem">[[user:delete-account-as-admin]]</a></li>
164
- <li><a class="dropdown-item" href="#" data-action="delete-content" role="menuitem">[[user:delete-content]]</a></li>
165
- <li><a class="dropdown-item" href="#" data-action="delete-all" role="menuitem">[[user:delete-all]]</a></li>
166
- {{{ end }}}
167
- </ul>
168
- </div>
169
- {{{ end }}}
170
- </div>
171
-
172
- <hr />
173
-
174
- <h2 class="h4">[[flags:history]]</h2>
175
- <div component="flag/history">
176
- <!-- IF !history.length -->
177
- <div class="alert alert-success text-center">[[flags:no-history]]</div>
178
- <!-- ENDIF !history.length -->
179
- {{{each history}}}
180
- <div class="d-flex">
181
- <div class="flex-shrink-0">
182
- <a href="{config.relative_path}/user/{../user.userslug}">{buildAvatar(history.user, "32px", true, "media-object")}</a>
183
- </div>
184
- <div class="flex-grow-1 ms-3">
185
- <h4 class="media-heading">
186
- <a href="{config.relative_path}/user/{../user.userslug}">{../user.username}</a>
187
- <small><span class="timeago" title="{../datetimeISO}"></span></small>
188
- </h4>
189
- <ul>
190
- {{{each ./fields}}}
191
- <li>
192
- <span class="badge bg-primary">[[flags:{@key}]]</span><!-- IF @value --> &rarr; <span class="badge bg-light text-dark">{@value}</span><!-- ENDIF @value -->
193
- </li>
194
- {{{end}}}
195
- {{{ each ./meta }}}
196
- <li>
197
- <span class="badge bg-{{./labelClass}}">{{./key}}</span>{{{ if ./value }}} &rarr; <span class="badge bg-light text-dark">{{ ./value }}</span>{{{ end }}}
198
- </li>
199
- {{{ end }}}
200
- </ul>
201
- </div>
202
- </div>
203
- {{{end}}}
204
- </div>
205
- </div>
206
- </div>
207
- </div>
208
- </div>
1
+ <!-- IMPORT partials/breadcrumbs.tpl -->
2
+
3
+ <div class="row">
4
+ <div class="col-12">
5
+ <h2 class="h4">
6
+ {target_readable}
7
+ <small><span class="text-muted timeago" title="{datetimeISO}"></span></small>
8
+ </h2>
9
+
10
+ <hr />
11
+
12
+ <!-- IF type_bool.post -->
13
+ <div class="d-flex">
14
+ <div class="flex-shrink-0">
15
+ <a href="{config.relative_path}/user/{target.user.userslug}">{buildAvatar(target.user, "64px", true, "media-object")}</a>
16
+ </div>
17
+ <div class="flex-grow-1 ms-3">
18
+ <h4 class="media-heading"><a href="{config.relative_path}/user/{target.user.userslug}">{target.user.username}</a></h4>
19
+ {target.content}
20
+ </div>
21
+ </div>
22
+ <!-- ENDIF type_bool.post -->
23
+
24
+ <!-- IF type_bool.user -->
25
+ <div class="d-flex">
26
+ <div class="flex-shrink-0">
27
+ <a href="{config.relative_path}/user/{target.userslug}">{buildAvatar(target, "64px", true, "media-object")}</a>
28
+ </div>
29
+ <div class="flex-grow-1 ms-3">
30
+ <h4 class="media-heading"><a href="{config.relative_path}/user/{target.userslug}">{target.username}</a></h4>
31
+ <p class="lead">
32
+ <a href="{config.relative_path}/uid/{target.uid}">[[flags:user-view]]</a> |
33
+ <a href="{config.relative_path}/uid/{target.uid}/edit">[[flags:user-edit]]</a>
34
+ </p>
35
+ </div>
36
+ </div>
37
+ <!-- ENDIF type_bool.user -->
38
+
39
+ <!-- IF type_bool.empty -->
40
+ <div class="alert alert-warning" role="alert">[[flags:target-purged]]</div>
41
+ <!-- ENDIF type_bool.empty -->
42
+
43
+ <hr />
44
+
45
+ <div class="row">
46
+ <div class="col-sm-6">
47
+ <form role="form" id="attributes">
48
+ <div class="mb-3">
49
+ <h2 class="h4">[[flags:reports]]</h2>
50
+ <ul class="list-group" component="flag/reports">
51
+ {{{ each reports }}}
52
+ <li class="list-group-item">
53
+ <a href="{config.relative_path}/user/{./reporter.userslug}">{buildAvatar(./reporter, "24px", true)}</a>
54
+ &ndash; <span class="timeago" title="{./timestampISO}"></span>
55
+ <blockquote><em>{./value}</em></blockquote>
56
+ </li>
57
+ {{{ end }}}
58
+ </ul>
59
+ </div>
60
+ <div class="mb-3">
61
+ <h2 class="h4" for="state">[[flags:state]]</h2>
62
+ <select class="form-select" id="state" name="state" disabled>
63
+ <option value="open">[[flags:state-open]]</option>
64
+ <option value="wip">[[flags:state-wip]]</option>
65
+ <option value="resolved">[[flags:state-resolved]]</option>
66
+ <option value="rejected">[[flags:state-rejected]]</option>
67
+ </select>
68
+ </div>
69
+ <div class="mb-3">
70
+ <h2 class="h4" for="assignee">[[flags:assignee]]</h2>
71
+ <select class="form-control" id="assignee" name="assignee" disabled>
72
+ <option value="">[[flags:no-assignee]]</option>
73
+ {{{each assignees}}}
74
+ <option value="{../uid}">{../username}</option>
75
+ {{{end}}}
76
+ </select>
77
+ </div>
78
+ <div class="d-grid">
79
+ <button type="button" class="btn btn-primary" data-action="update">[[flags:update]]</button>
80
+ </div>
81
+ </form>
82
+
83
+ <hr />
84
+
85
+ <form role="form">
86
+ <div class="mb-3">
87
+ <div class="d-flex align-items-center">
88
+ <h2 class="h4 me-auto mb-0" for="note">[[flags:notes]]</h2>
89
+ <button type="button" class="btn btn-primary" data-action="addEditNote">[[flags:add-note]]</button>
90
+ </div>
91
+ </div>
92
+ </form>
93
+
94
+ <div component="flag/notes">
95
+ <!-- IF !notes.length -->
96
+ <div class="alert alert-success text-center">[[flags:no-notes]]</div>
97
+ <!-- ENDIF !notes.length -->
98
+ {{{each notes}}}
99
+ <div class="d-flex mb-3" component="flag/note" data-datetime="{./datetime}" data-index="{@index}">
100
+ <div class="flex-shrink-0">
101
+ <a href="{config.relative_path}/user/{../user.userslug}">{buildAvatar(notes.user, "32px", true, "media-object")}</a>
102
+ </div>
103
+ <div class="flex-grow-1 mx-3">
104
+ <h2 class="h5">
105
+ <a href="{config.relative_path}/user/{../user.userslug}">{../user.username}</a>
106
+ <small><span class="timeago" title="{../datetimeISO}"></span></small>
107
+ </h4>
108
+ {../content}
109
+ </div>
110
+ <div class="flex-shrink-0">
111
+ <a href="#" class="btn btn-sm btn-link" data-action="addEditNote"><i class="fa fa-pencil"></i></a>
112
+ <a href="#" class="btn btn-sm btn-link" data-action="delete-note"><i class="fa fa-trash text-danger"></i></a>
113
+ </div>
114
+ </div>
115
+ {{{end}}}
116
+ </div>
117
+ </div>
118
+ <div class="col-sm-6">
119
+ <h2 class="h4">[[flags:quick-actions]]</h2>
120
+
121
+ <div class="d-grid gap-1">
122
+ <a class="btn btn-light" href="{config.relative_path}/{type_path}/{targetId}">
123
+ <i class="fa fa-external-link"></i>
124
+ [[flags:go-to-target]]
125
+ </a>
126
+
127
+ <a class="btn btn-light" href="#" data-action="assign">
128
+ <i class="fa fa-id-card-o"></i>
129
+ [[flags:assign-to-me]]
130
+ </a>
131
+
132
+ {{{ if type_bool.post }}}
133
+ {{{ if !target.deleted}}}
134
+ <a class="btn btn-outline-danger" href="#" data-action="delete-post"><i class="fa fa-trash"></i> [[flags:delete-post]]</a>
135
+ {{{ else }}}
136
+ <a class="btn btn-danger" href="#" data-action="purge-post"><i class="fa fa-trash"></i> [[flags:purge-post]]</a>
137
+ <a class="btn btn-outline-success" href="#" data-action="restore-post"><i class="fa fa-reply"></i><i class="fa fa-trash"></i> [[flags:restore-post]]</a>
138
+ {{{ end }}}
139
+ {{{ end }}}
140
+
141
+ {{{ if target.uid }}}
142
+ <div class="btn-group" data-uid="{target.uid}">
143
+ <button type="button" class="btn btn-light dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
144
+ <i class="fa fa-street-view"></i>
145
+ [[flags:flagged-user]]
146
+ <span class="caret"></span>
147
+ </button>
148
+ <ul class="dropdown-menu" role="menu">
149
+ <li><a class="dropdown-item" href="{config.relative_path}/uid/{target.uid}" role="menuitem">[[flags:view-profile]]</a></li>
150
+ {{{ if !config.disableChat }}}
151
+ <li><a class="dropdown-item" href="#" data-action="chat" role="menuitem">[[flags:start-new-chat]]</a></li>
152
+ {{{ end }}}
153
+ <li class="dropdown-divider"></li>
154
+ {{{ if privileges.ban }}}
155
+ <li class="{{{ if target.user.banned }}}hidden{{{ end }}}"><a class="dropdown-item" href="#" data-action="ban" role="menuitem">[[user:ban-account]]</a></li>
156
+ <li class="{{{ if !target.user.banned }}}hidden{{{ end }}}"><a class="dropdown-item" href="#" data-action="unban" role="menuitem">[[user:unban-account]]</a></li>
157
+ {{{ end }}}
158
+ {{{ if privileges.mute}}}
159
+ <li class="{{{ if target.user.muted }}}hidden{{{ end }}}"><a class="dropdown-item" href="#" data-action="mute" role="menuitem">[[user:mute-account]]</a></li>
160
+ <li class="{{{ if !target.user.muted }}}hidden{{{ end }}}"><a class="dropdown-item" href="#" data-action="unmute" role="menuitem">[[user:unmute-account]]</a></li>
161
+ {{{ end }}}
162
+ {{{ if privileges.admin:users }}}
163
+ <li><a class="dropdown-item" href="#" data-action="delete-account" role="menuitem">[[user:delete-account-as-admin]]</a></li>
164
+ <li><a class="dropdown-item" href="#" data-action="delete-content" role="menuitem">[[user:delete-content]]</a></li>
165
+ <li><a class="dropdown-item" href="#" data-action="delete-all" role="menuitem">[[user:delete-all]]</a></li>
166
+ {{{ end }}}
167
+ </ul>
168
+ </div>
169
+ {{{ end }}}
170
+ </div>
171
+
172
+ <hr />
173
+
174
+ <h2 class="h4">[[flags:history]]</h2>
175
+ <div component="flag/history">
176
+ <!-- IF !history.length -->
177
+ <div class="alert alert-success text-center">[[flags:no-history]]</div>
178
+ <!-- ENDIF !history.length -->
179
+ {{{each history}}}
180
+ <div class="d-flex">
181
+ <div class="flex-shrink-0">
182
+ <a href="{config.relative_path}/user/{../user.userslug}">{buildAvatar(history.user, "32px", true, "media-object")}</a>
183
+ </div>
184
+ <div class="flex-grow-1 ms-3">
185
+ <h4 class="media-heading">
186
+ <a href="{config.relative_path}/user/{../user.userslug}">{../user.username}</a>
187
+ <small><span class="timeago" title="{../datetimeISO}"></span></small>
188
+ </h4>
189
+ <ul>
190
+ {{{each ./fields}}}
191
+ <li>
192
+ <span class="badge bg-primary">[[flags:{@key}]]</span><!-- IF @value --> &rarr; <span class="badge bg-light text-dark">{@value}</span><!-- ENDIF @value -->
193
+ </li>
194
+ {{{end}}}
195
+ {{{ each ./meta }}}
196
+ <li>
197
+ <span class="badge bg-{{./labelClass}}">{{./key}}</span>{{{ if ./value }}} &rarr; <span class="badge bg-light text-dark">{{ ./value }}</span>{{{ end }}}
198
+ </li>
199
+ {{{ end }}}
200
+ </ul>
201
+ </div>
202
+ </div>
203
+ {{{end}}}
204
+ </div>
205
+ </div>
206
+ </div>
207
+ </div>
208
+ </div>
@@ -1,71 +1,71 @@
1
- <!-- IMPORT partials/breadcrumbs.tpl -->
2
-
3
- <div class="row">
4
- <div class="col-sm-4 col-md-3">
5
- <!-- IMPORT partials/flags/filters.tpl -->
6
- </div>
7
- <div class="col-sm-8 col-md-9">
8
- <!-- IF hasFilter -->
9
- <div class="alert alert-warning">
10
- <p class="float-end">
11
- <a href="{config.relative_path}/flags">[[flags:filter-reset]]</a>
12
- </p>
13
- [[flags:filter-active]]
14
- </div>
15
- <!-- ENDIF hasFilter -->
16
-
17
- <div class="btn-group float-end" component="flags/bulk-actions">
18
- <button type="button" class="btn btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" autocomplete="off" aria-haspopup="true" aria-expanded="false" disabled="disabled">
19
- <i class="fa fa-clone"></i> [[flags:bulk-actions]] <span class="caret"></span>
20
- </button>
21
- <ul class="dropdown-menu" role="menu">
22
- <li><a href="#" class="dropdown-item" data-action="bulk-assign" role="menuitem">[[flags:assign-to-me]]</a></li>
23
- <li><a href="#" class="dropdown-item" data-action="bulk-mark-resolved" role="menuitem">[[flags:bulk-resolve]]</a></li>
24
- </ul>
25
- </div>
26
-
27
- <table class="table table-striped table-hover" component="flags/list">
28
- <thead>
29
- <tr>
30
- <th>
31
- <input type="checkbox" data-action="toggle-all" autocomplete="off" />
32
- </th>
33
- <th></th>
34
- <th><span class="hidden-xs">[[flags:reports]] </span><i class="fa fa-user-plus"></i></th>
35
- <th><span class="hidden-xs">[[flags:first-reported]] </span><i class="fa fa-clock-o"></i></th>
36
- <th>[[flags:state]]</th>
37
- </tr>
38
- </thead>
39
- <tbody>
40
- <!-- IF !flags.length -->
41
- <tr>
42
- <td colspan="5">
43
- <div class="alert alert-success text-center">
44
- [[flags:no-flags]]
45
- </div>
46
- </td>
47
- </tr>
48
- <!-- ENDIF !flags.length -->
49
- {{{each flags}}}
50
- <tr data-flag-id="{../flagId}">
51
- <td>
52
- <input type="checkbox" autocomplete="off" />
53
- </td>
54
- <td>
55
- <a href="{config.relative_path}/flags/{../flagId}">
56
- <strong>{../target_readable}</strong>
57
- </a>
58
- </td>
59
- <td>
60
- {./heat}
61
- </td>
62
- <td><span class="timeago" title="{../datetimeISO}"></span></td>
63
- <td><span class="badge bg-{../labelClass}">[[flags:state-{../state}]]</span></td>
64
- </tr>
65
- {{{end}}}
66
- </tbody>
67
- </table>
68
-
69
- <!-- IMPORT partials/paginator.tpl -->
70
- </div>
71
- </div>
1
+ <!-- IMPORT partials/breadcrumbs.tpl -->
2
+
3
+ <div class="row">
4
+ <div class="col-sm-4 col-md-3">
5
+ <!-- IMPORT partials/flags/filters.tpl -->
6
+ </div>
7
+ <div class="col-sm-8 col-md-9">
8
+ <!-- IF hasFilter -->
9
+ <div class="alert alert-warning">
10
+ <p class="float-end">
11
+ <a href="{config.relative_path}/flags">[[flags:filter-reset]]</a>
12
+ </p>
13
+ [[flags:filter-active]]
14
+ </div>
15
+ <!-- ENDIF hasFilter -->
16
+
17
+ <div class="btn-group float-end" component="flags/bulk-actions">
18
+ <button type="button" class="btn btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" autocomplete="off" aria-haspopup="true" aria-expanded="false" disabled="disabled">
19
+ <i class="fa fa-clone"></i> [[flags:bulk-actions]] <span class="caret"></span>
20
+ </button>
21
+ <ul class="dropdown-menu" role="menu">
22
+ <li><a href="#" class="dropdown-item" data-action="bulk-assign" role="menuitem">[[flags:assign-to-me]]</a></li>
23
+ <li><a href="#" class="dropdown-item" data-action="bulk-mark-resolved" role="menuitem">[[flags:bulk-resolve]]</a></li>
24
+ </ul>
25
+ </div>
26
+
27
+ <table class="table table-striped table-hover" component="flags/list">
28
+ <thead>
29
+ <tr>
30
+ <th>
31
+ <input type="checkbox" data-action="toggle-all" autocomplete="off" />
32
+ </th>
33
+ <th></th>
34
+ <th><span class="hidden-xs">[[flags:reports]] </span><i class="fa fa-user-plus"></i></th>
35
+ <th><span class="hidden-xs">[[flags:first-reported]] </span><i class="fa fa-clock-o"></i></th>
36
+ <th>[[flags:state]]</th>
37
+ </tr>
38
+ </thead>
39
+ <tbody>
40
+ <!-- IF !flags.length -->
41
+ <tr>
42
+ <td colspan="5">
43
+ <div class="alert alert-success text-center">
44
+ [[flags:no-flags]]
45
+ </div>
46
+ </td>
47
+ </tr>
48
+ <!-- ENDIF !flags.length -->
49
+ {{{each flags}}}
50
+ <tr data-flag-id="{../flagId}">
51
+ <td>
52
+ <input type="checkbox" autocomplete="off" />
53
+ </td>
54
+ <td>
55
+ <a href="{config.relative_path}/flags/{../flagId}">
56
+ <strong>{../target_readable}</strong>
57
+ </a>
58
+ </td>
59
+ <td>
60
+ {./heat}
61
+ </td>
62
+ <td><span class="timeago" title="{../datetimeISO}"></span></td>
63
+ <td><span class="badge bg-{../labelClass}">[[flags:state-{../state}]]</span></td>
64
+ </tr>
65
+ {{{end}}}
66
+ </tbody>
67
+ </table>
68
+
69
+ <!-- IMPORT partials/paginator.tpl -->
70
+ </div>
71
+ </div>
@@ -1,11 +1,11 @@
1
- </div><!-- /.container#content -->
2
- </main>
3
- {{{ if !isSpider }}}
4
- <div component="toaster/tray" class="alert-window">
5
- <!-- IMPORT partials/reconnect-alert.tpl -->
6
- </div>
7
- {{{ end }}}
8
- <!-- IMPORT modules/taskbar.tpl -->
9
- <!-- IMPORT partials/footer/js.tpl -->
10
- </body>
11
- </html>
1
+ </div><!-- /.container#content -->
2
+ </main>
3
+ {{{ if !isSpider }}}
4
+ <div component="toaster/tray" class="alert-window">
5
+ <!-- IMPORT partials/reconnect-alert.tpl -->
6
+ </div>
7
+ {{{ end }}}
8
+ <!-- IMPORT modules/taskbar.tpl -->
9
+ <!-- IMPORT partials/footer/js.tpl -->
10
+ </body>
11
+ </html>