nodebb-theme-persona 12.1.6 → 12.1.8

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 (247) hide show
  1. package/README.md +16 -14
  2. package/{scss/account.scss → less/account.less} +97 -13
  3. package/less/bootstrap/.csscomb.json +297 -0
  4. package/less/bootstrap/.csslintrc +19 -0
  5. package/less/bootstrap/alerts.less +73 -0
  6. package/less/bootstrap/badges.less +66 -0
  7. package/less/bootstrap/bootstrap.less +50 -0
  8. package/less/bootstrap/breadcrumbs.less +26 -0
  9. package/less/bootstrap/button-groups.less +243 -0
  10. package/less/bootstrap/buttons.less +160 -0
  11. package/less/bootstrap/carousel.less +269 -0
  12. package/less/bootstrap/close.less +34 -0
  13. package/less/bootstrap/code.less +69 -0
  14. package/less/bootstrap/component-animations.less +33 -0
  15. package/less/bootstrap/dropdowns.less +214 -0
  16. package/less/bootstrap/forms.less +574 -0
  17. package/less/bootstrap/glyphicons.less +305 -0
  18. package/less/bootstrap/grid.less +84 -0
  19. package/less/bootstrap/input-groups.less +166 -0
  20. package/less/bootstrap/jumbotron.less +50 -0
  21. package/less/bootstrap/labels.less +64 -0
  22. package/less/bootstrap/list-group.less +124 -0
  23. package/less/bootstrap/media.less +61 -0
  24. package/less/bootstrap/mixins/alerts.less +14 -0
  25. package/less/bootstrap/mixins/background-variant.less +8 -0
  26. package/less/bootstrap/mixins/border-radius.less +18 -0
  27. package/less/bootstrap/mixins/buttons.less +52 -0
  28. package/less/bootstrap/mixins/center-block.less +7 -0
  29. package/less/bootstrap/mixins/clearfix.less +22 -0
  30. package/less/bootstrap/mixins/forms.less +85 -0
  31. package/less/bootstrap/mixins/gradients.less +59 -0
  32. package/less/bootstrap/mixins/grid-framework.less +91 -0
  33. package/less/bootstrap/mixins/grid.less +122 -0
  34. package/less/bootstrap/mixins/hide-text.less +21 -0
  35. package/less/bootstrap/mixins/image.less +33 -0
  36. package/less/bootstrap/mixins/labels.less +12 -0
  37. package/less/bootstrap/mixins/list-group.less +29 -0
  38. package/less/bootstrap/mixins/nav-divider.less +10 -0
  39. package/less/bootstrap/mixins/nav-vertical-align.less +9 -0
  40. package/less/bootstrap/mixins/opacity.less +8 -0
  41. package/less/bootstrap/mixins/pagination.less +23 -0
  42. package/less/bootstrap/mixins/panels.less +24 -0
  43. package/less/bootstrap/mixins/progress-bar.less +10 -0
  44. package/less/bootstrap/mixins/reset-filter.less +8 -0
  45. package/less/bootstrap/mixins/resize.less +6 -0
  46. package/less/bootstrap/mixins/responsive-visibility.less +15 -0
  47. package/less/bootstrap/mixins/size.less +10 -0
  48. package/less/bootstrap/mixins/tab-focus.less +9 -0
  49. package/less/bootstrap/mixins/table-row.less +28 -0
  50. package/less/bootstrap/mixins/text-emphasis.less +8 -0
  51. package/less/bootstrap/mixins/text-overflow.less +8 -0
  52. package/less/bootstrap/mixins/vendor-prefixes.less +227 -0
  53. package/less/bootstrap/mixins.less +39 -0
  54. package/less/bootstrap/modals.less +150 -0
  55. package/less/bootstrap/navbar.less +660 -0
  56. package/less/bootstrap/navs.less +242 -0
  57. package/less/bootstrap/normalize.less +427 -0
  58. package/less/bootstrap/pager.less +54 -0
  59. package/less/bootstrap/pagination.less +88 -0
  60. package/less/bootstrap/panels.less +265 -0
  61. package/less/bootstrap/popovers.less +135 -0
  62. package/less/bootstrap/print.less +107 -0
  63. package/less/bootstrap/progress-bars.less +87 -0
  64. package/less/bootstrap/responsive-embed.less +35 -0
  65. package/less/bootstrap/responsive-utilities.less +194 -0
  66. package/less/bootstrap/scaffolding.less +162 -0
  67. package/less/bootstrap/tables.less +234 -0
  68. package/less/bootstrap/theme.less +273 -0
  69. package/less/bootstrap/thumbnails.less +36 -0
  70. package/less/bootstrap/tooltip.less +102 -0
  71. package/less/bootstrap/type.less +302 -0
  72. package/less/bootstrap/utilities.less +55 -0
  73. package/less/bootstrap/variables.less +861 -0
  74. package/less/bootstrap/wells.less +29 -0
  75. package/less/bootstrap-flipped.css +1550 -0
  76. package/{scss/categories.scss → less/categories.less} +40 -10
  77. package/{scss/category.scss → less/category.less} +75 -26
  78. package/{scss/chats.scss → less/chats.less} +88 -35
  79. package/{scss/flags.scss → less/flags.less} +3 -3
  80. package/{scss/footer.scss → less/footer.less} +1 -0
  81. package/{scss/groups.scss → less/groups.less} +38 -14
  82. package/{scss/header.scss → less/header.less} +139 -63
  83. package/{scss/helpers.scss → less/helpers.less} +0 -0
  84. package/less/ip-blacklist.less +7 -0
  85. package/{scss/keyframes.scss → less/keyframes.less} +0 -0
  86. package/{scss/mixins.scss → less/mixins.less} +59 -17
  87. package/{scss/mobile.scss → less/mobile.less} +18 -13
  88. package/{scss/modules/alerts.scss → less/modules/alerts.less} +21 -21
  89. package/less/modules/bottom-sheet.less +60 -0
  90. package/{scss/modules/composer-default.scss → less/modules/composer-default.less} +2 -2
  91. package/{scss/modules/cookie-consent.scss → less/modules/cookie-consent.less} +1 -1
  92. package/{scss/modules/fab.scss → less/modules/fab.less} +2 -2
  93. package/{scss/modules/morph.scss → less/modules/morph.less} +1 -1
  94. package/{scss/modules/necro-post.scss → less/modules/necro-post.less} +0 -0
  95. package/less/modules/nprogress.less +80 -0
  96. package/{scss/modules/taskbar.scss → less/modules/taskbar.less} +10 -11
  97. package/{scss/modules/usercard.scss → less/modules/usercard.less} +0 -0
  98. package/{scss/noscript.scss → less/noscript.less} +7 -5
  99. package/less/notifications.less +38 -0
  100. package/{scss/outgoing.scss → less/outgoing.less} +0 -0
  101. package/{scss/persona.scss → less/persona.less} +13 -1
  102. package/less/post-queue.less +19 -0
  103. package/{scss/posts_list.scss → less/posts_list.less} +14 -11
  104. package/{scss/register.scss → less/register.less} +7 -2
  105. package/less/rtl.less +132 -0
  106. package/less/search.less +96 -0
  107. package/{scss/style.scss → less/style.less} +47 -23
  108. package/less/tags.less +37 -0
  109. package/{scss/topic.scss → less/topic.less} +94 -57
  110. package/less/topics_list.less +16 -0
  111. package/less/users.less +73 -0
  112. package/{scss/variables.scss → less/variables.less} +3 -3
  113. package/package.json +2 -2
  114. package/public/persona.js +22 -11
  115. package/templates/account/blocks.tpl +26 -24
  116. package/templates/account/categories.tpl +6 -6
  117. package/templates/account/consent.tpl +10 -10
  118. package/templates/account/edit/password.tpl +10 -8
  119. package/templates/account/edit/username.tpl +10 -6
  120. package/templates/account/edit.tpl +23 -23
  121. package/templates/account/followers.tpl +3 -3
  122. package/templates/account/following.tpl +3 -3
  123. package/templates/account/groups.tpl +2 -2
  124. package/templates/account/info.tpl +72 -67
  125. package/templates/account/posts.tpl +1 -1
  126. package/templates/account/profile.tpl +18 -20
  127. package/templates/account/sessions.tpl +3 -3
  128. package/templates/account/settings.tpl +81 -93
  129. package/templates/account/topics.tpl +5 -5
  130. package/templates/account/uploads.tpl +2 -2
  131. package/templates/admin/plugins/persona.tpl +3 -3
  132. package/templates/alert.tpl +15 -0
  133. package/templates/category.tpl +14 -15
  134. package/templates/chat.tpl +9 -16
  135. package/templates/chats.tpl +3 -5
  136. package/templates/flags/detail.tpl +80 -86
  137. package/templates/flags/list.tpl +4 -4
  138. package/templates/footer.tpl +1 -1
  139. package/templates/groups/details.tpl +218 -23
  140. package/templates/groups/list.tpl +9 -11
  141. package/templates/groups/members.tpl +4 -1
  142. package/templates/header.tpl +4 -10
  143. package/templates/ip-blacklist.tpl +20 -22
  144. package/templates/login.tpl +14 -17
  145. package/templates/modules/taskbar.tpl +1 -1
  146. package/templates/modules/usercard.tpl +2 -2
  147. package/templates/notifications.tpl +38 -40
  148. package/templates/partials/acceptTos.tpl +8 -8
  149. package/templates/partials/account/category-item.tpl +5 -6
  150. package/templates/partials/account/header.tpl +2 -2
  151. package/templates/partials/account/menu.tpl +37 -37
  152. package/templates/partials/breadcrumbs.tpl +1 -1
  153. package/templates/partials/buttons/newTopic.tpl +3 -10
  154. package/templates/partials/categories/item.tpl +10 -24
  155. package/templates/partials/categories/lastpost.tpl +3 -3
  156. package/templates/partials/categories/link.tpl +10 -10
  157. package/templates/partials/category/sort.tpl +7 -7
  158. package/templates/partials/category/subcategory.tpl +3 -3
  159. package/templates/partials/category/tags.tpl +5 -3
  160. package/templates/partials/category/tools.tpl +16 -16
  161. package/templates/partials/category/watch.tpl +10 -8
  162. package/templates/partials/category-filter-content.tpl +5 -17
  163. package/templates/partials/category-filter-right.tpl +1 -1
  164. package/templates/partials/category-selector-content.tpl +4 -17
  165. package/templates/partials/category-selector-right.tpl +1 -1
  166. package/templates/partials/change_owner_modal.tpl +22 -0
  167. package/templates/partials/chats/message-window.tpl +8 -10
  168. package/templates/partials/chats/message.tpl +11 -11
  169. package/templates/partials/chats/options.tpl +8 -8
  170. package/templates/partials/chats/recent_room.tpl +1 -1
  171. package/templates/partials/chats/system-message.tpl +1 -1
  172. package/templates/partials/chats/user.tpl +1 -1
  173. package/templates/partials/chats-menu.tpl +11 -11
  174. package/templates/partials/cookie-consent.tpl +1 -1
  175. package/templates/partials/delete_posts_modal.tpl +19 -0
  176. package/templates/partials/flags/filters.tpl +32 -34
  177. package/templates/partials/fork_thread_modal.tpl +22 -0
  178. package/templates/partials/groups/list.tpl +6 -6
  179. package/templates/partials/groups/memberlist.tpl +10 -11
  180. package/templates/partials/menu.tpl +156 -149
  181. package/templates/partials/merge_topics_modal.tpl +58 -0
  182. package/templates/partials/modals/change_picture_modal.tpl +73 -0
  183. package/templates/partials/modals/flag_modal.tpl +45 -0
  184. package/templates/partials/modals/manage_room.tpl +11 -0
  185. package/templates/partials/modals/manage_room_users.tpl +7 -0
  186. package/templates/partials/modals/post_history.tpl +36 -0
  187. package/templates/partials/modals/rename_room.tpl +4 -0
  188. package/templates/partials/modals/upload_file_modal.tpl +44 -0
  189. package/templates/partials/modals/upload_picture_from_url_modal.tpl +17 -0
  190. package/templates/partials/modals/votes_modal.tpl +10 -0
  191. package/templates/partials/move_thread_modal.tpl +17 -0
  192. package/templates/partials/notifications_list.tpl +2 -2
  193. package/templates/partials/paginator.tpl +21 -21
  194. package/templates/partials/post_bar.tpl +4 -4
  195. package/templates/partials/posts_list.tpl +1 -1
  196. package/templates/partials/posts_list_item.tpl +2 -2
  197. package/templates/partials/quick-search-results.tpl +11 -14
  198. package/templates/partials/slideout-menu.tpl +1 -1
  199. package/templates/partials/tags_list.tpl +3 -3
  200. package/templates/partials/thread_tools.tpl +4 -4
  201. package/templates/partials/topic/badge.tpl +5 -0
  202. package/templates/partials/topic/deleted-message.tpl +2 -2
  203. package/templates/partials/topic/event.tpl +2 -2
  204. package/templates/partials/topic/navigation-post.tpl +3 -3
  205. package/templates/partials/topic/navigator.tpl +7 -7
  206. package/templates/partials/topic/necro-post.tpl +1 -1
  207. package/templates/partials/topic/post-menu-list.tpl +23 -26
  208. package/templates/partials/topic/post-menu.tpl +3 -3
  209. package/templates/partials/topic/post.tpl +44 -49
  210. package/templates/partials/topic/quickreply.tpl +3 -3
  211. package/templates/partials/topic/reply-button.tpl +3 -3
  212. package/templates/partials/topic/sort.tpl +5 -5
  213. package/templates/partials/topic/tags.tpl +5 -3
  214. package/templates/partials/topic/topic-menu-list.tpl +16 -18
  215. package/templates/partials/topic/watch.tpl +10 -11
  216. package/templates/partials/topics_list.tpl +25 -27
  217. package/templates/partials/users_list.tpl +10 -22
  218. package/templates/partials/users_list_menu.tpl +9 -19
  219. package/templates/popular.tpl +35 -9
  220. package/templates/post-queue.tpl +35 -42
  221. package/templates/recent.tpl +24 -10
  222. package/templates/register.tpl +17 -17
  223. package/templates/registerComplete.tpl +10 -14
  224. package/templates/reset.tpl +5 -7
  225. package/templates/reset_code.tpl +9 -9
  226. package/templates/search.tpl +87 -100
  227. package/templates/tag.tpl +10 -8
  228. package/templates/tags.tpl +3 -5
  229. package/templates/top.tpl +35 -9
  230. package/templates/topic.tpl +10 -8
  231. package/templates/tos.tpl +4 -4
  232. package/templates/unread.tpl +22 -10
  233. package/templates/users.tpl +20 -7
  234. package/theme.json +6 -6
  235. package/theme.less +2 -0
  236. package/scss/modules/nprogress.scss +0 -80
  237. package/scss/overrides.scss +0 -44
  238. package/scss/search.scss +0 -39
  239. package/scss/tags.scss +0 -11
  240. package/scss/topics_list.scss +0 -17
  241. package/templates/partials/groups/admin.tpl +0 -195
  242. package/templates/partials/groups/badge.tpl +0 -1
  243. package/templates/partials/toast.tpl +0 -14
  244. package/templates/partials/topic/tag.tpl +0 -1
  245. package/templates/partials/topic-filters.tpl +0 -12
  246. package/templates/partials/topic-terms.tpl +0 -12
  247. package/theme.scss +0 -1
@@ -1,20 +1,20 @@
1
1
  <!-- IMPORT partials/breadcrumbs.tpl -->
2
2
 
3
3
  <div class="row">
4
- <div class="col-12">
4
+ <div class="col-sm-12">
5
5
  <h2 class="h4">
6
6
  {target_readable}
7
- <small><span class="text-muted timeago" title="{datetimeISO}"></span></small>
7
+ <small><span class="timeago" title="{datetimeISO}"></span></small>
8
8
  </h2>
9
9
 
10
10
  <hr />
11
11
 
12
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>
13
+ <div class="media">
14
+ <div class="media-left">
15
+ <a href="{config.relative_path}/user/{target.user.userslug}">{buildAvatar(target.user, "lg", false, "media-object")}</a>
16
16
  </div>
17
- <div class="flex-grow-1 ms-3">
17
+ <div class="media-body">
18
18
  <h4 class="media-heading"><a href="{config.relative_path}/user/{target.user.userslug}">{target.user.username}</a></h4>
19
19
  {target.content}
20
20
  </div>
@@ -22,11 +22,11 @@
22
22
  <!-- ENDIF type_bool.post -->
23
23
 
24
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>
25
+ <div class="media">
26
+ <div class="media-left">
27
+ <a href="{config.relative_path}/user/{target.userslug}">{buildAvatar(target, "lg", false, "media-object")}</a>
28
28
  </div>
29
- <div class="flex-grow-1 ms-3">
29
+ <div class="media-body">
30
30
  <h4 class="media-heading"><a href="{config.relative_path}/user/{target.userslug}">{target.username}</a></h4>
31
31
  <p class="lead">
32
32
  <a href="{config.relative_path}/uid/{target.uid}">[[flags:user-view]]</a> |
@@ -37,7 +37,7 @@
37
37
  <!-- ENDIF type_bool.user -->
38
38
 
39
39
  <!-- IF type_bool.empty -->
40
- <div class="alert alert-warning" role="alert">[[flags:target-purged]]</div>
40
+ <div class="alert alert-warning">[[flags:target-purged]]</div>
41
41
  <!-- ENDIF type_bool.empty -->
42
42
 
43
43
  <hr />
@@ -45,28 +45,28 @@
45
45
  <div class="row">
46
46
  <div class="col-sm-6">
47
47
  <form role="form" id="attributes">
48
- <div class="mb-3">
48
+ <div class="form-group">
49
49
  <h2 class="h4">[[flags:reports]]</h2>
50
50
  <ul class="list-group" component="flag/reports">
51
51
  {{{ each reports }}}
52
52
  <li class="list-group-item">
53
- <a href="{config.relative_path}/user/{./reporter.userslug}">{buildAvatar(./reporter, "24px", true)}</a>
53
+ <a href="{config.relative_path}/user/{./reporter.userslug}">{buildAvatar(./reporter, "sm", false)}</a>
54
54
  &ndash; <span class="timeago" title="{./timestampISO}"></span>
55
55
  <blockquote><em>{./value}</em></blockquote>
56
56
  </li>
57
57
  {{{ end }}}
58
58
  </ul>
59
59
  </div>
60
- <div class="mb-3">
60
+ <div class="form-group">
61
61
  <h2 class="h4" for="state">[[flags:state]]</h2>
62
- <select class="form-select" id="state" name="state" disabled>
62
+ <select class="form-control" id="state" name="state" disabled>
63
63
  <option value="open">[[flags:state-open]]</option>
64
64
  <option value="wip">[[flags:state-wip]]</option>
65
65
  <option value="resolved">[[flags:state-resolved]]</option>
66
66
  <option value="rejected">[[flags:state-rejected]]</option>
67
67
  </select>
68
68
  </div>
69
- <div class="mb-3">
69
+ <div class="form-group">
70
70
  <h2 class="h4" for="assignee">[[flags:assignee]]</h2>
71
71
  <select class="form-control" id="assignee" name="assignee" disabled>
72
72
  <option value="">[[flags:no-assignee]]</option>
@@ -75,20 +75,16 @@
75
75
  {{{end}}}
76
76
  </select>
77
77
  </div>
78
- <div class="d-grid">
79
- <button type="button" class="btn btn-primary" data-action="update">[[flags:update]]</button>
80
- </div>
78
+ <button type="button" class="btn btn-block btn-primary" data-action="update">[[flags:update]]</button>
81
79
  </form>
82
80
 
83
81
  <hr />
84
82
 
85
83
  <form role="form">
86
- <div class="mb-3">
84
+ <div class="form-group">
87
85
  <h2 class="h4" for="note">[[flags:notes]]</h2>
88
86
  <textarea id="note" class="form-control"></textarea>
89
- <div class="d-grid">
90
- <button type="button" class="btn btn-block btn-primary" data-action="appendNote">[[flags:add-note]]</button>
91
- </div>
87
+ <button type="button" class="btn btn-block btn-primary" data-action="appendNote">[[flags:add-note]]</button>
92
88
  </div>
93
89
  </form>
94
90
 
@@ -97,20 +93,20 @@
97
93
  <div class="alert alert-success text-center">[[flags:no-notes]]</div>
98
94
  <!-- ENDIF !notes.length -->
99
95
  {{{each notes}}}
100
- <div class="d-flex mb-3">
101
- <div class="flex-shrink-0">
102
- <a href="{config.relative_path}/user/{../user.userslug}">{buildAvatar(notes.user, "32px", true, "media-object")}</a>
96
+ <div class="media" data-datetime="{../datetime}" data-index="{@index}">
97
+ <div class="media-left">
98
+ <a href="{config.relative_path}/user/{../user.userslug}">{buildAvatar(notes.user, "md", false, "media-object")}</a>
103
99
  </div>
104
- <div class="flex-grow-1 mx-3">
105
- <h2 class="h5">
100
+ <div class="media-body">
101
+ <h4 class="media-heading">
106
102
  <a href="{config.relative_path}/user/{../user.userslug}">{../user.username}</a>
107
103
  <small><span class="timeago" title="{../datetimeISO}"></span></small>
108
104
  </h4>
109
105
  {../content}
110
106
  </div>
111
- <div class="flex-shrink-0">
112
- <a href="#" class="btn btn-sm btn-link" data-action="prepare-edit"><i class="fa fa-pencil"></i></a>
113
- <a href="#" class="btn btn-sm btn-link" data-action="delete-note"><i class="fa fa-trash text-danger"></i></a>
107
+ <div class="media-right">
108
+ <a href="#" data-action="prepare-edit"><i class="fa fa-pencil"></i></a>
109
+ <a href="#" data-action="delete-note"><i class="fa fa-trash text-danger"></i></a>
114
110
  </div>
115
111
  </div>
116
112
  {{{end}}}
@@ -119,56 +115,54 @@
119
115
  <div class="col-sm-6">
120
116
  <h2 class="h4">[[flags:quick-actions]]</h2>
121
117
 
122
- <div class="d-grid gap-1">
123
- <a class="btn btn-light" href="{config.relative_path}/{type_path}/{targetId}">
124
- <i class="fa fa-external-link"></i>
125
- [[flags:go-to-target]]
126
- </a>
127
-
128
- <a class="btn btn-light" href="#" data-action="assign">
129
- <i class="fa fa-id-card-o"></i>
130
- [[flags:assign-to-me]]
131
- </a>
132
-
133
- {{{ if type_bool.post }}}
134
- {{{ if !target.deleted}}}
135
- <a class="btn btn-outline-danger" href="#" data-action="delete-post"><i class="fa fa-trash"></i> [[flags:delete-post]]</a>
136
- {{{ else }}}
137
- <a class="btn btn-danger" href="#" data-action="purge-post"><i class="fa fa-trash"></i> [[flags:purge-post]]</a>
138
- <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>
139
- {{{ end }}}
140
- {{{ end }}}
141
-
142
- {{{ if target.uid }}}
143
- <div class="btn-group" data-uid="{target.uid}">
144
- <button type="button" class="btn btn-light dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
145
- <i class="fa fa-street-view"></i>
146
- [[flags:flagged-user]]
147
- <span class="caret"></span>
148
- </button>
149
- <ul class="dropdown-menu">
150
- <li class="dropdown-item"><a href="{config.relative_path}/uid/{target.uid}">[[flags:view-profile]]</a></li>
151
- {{{ if !config.disableChat }}}
152
- <li class="dropdown-item"><a href="#" data-action="chat">[[flags:start-new-chat]]</a></li>
153
- {{{ end }}}
154
- <li><hr class="dropdown-divider"></li>
155
- {{{ if privileges.ban }}}
156
- <li class="dropdown-item" class="{{{ if target.user.banned }}}hidden{{{ end }}}"><a href="#" data-action="ban">[[user:ban_account]]</a></li>
157
- <li class="dropdown-item" class="{{{ if !target.user.banned }}}hidden{{{ end }}}"><a href="#" data-action="unban">[[user:unban_account]]</a></li>
158
- {{{ end }}}
159
- {{{ if privileges.mute}}}
160
- <li class="dropdown-item" class="{{{ if target.user.muted }}}hidden{{{ end }}}"><a href="#" data-action="mute">[[user:mute_account]]</a></li>
161
- <li class="dropdown-item" class="{{{ if !target.user.muted }}}hidden{{{ end }}}"><a href="#" data-action="unmute">[[user:unmute_account]]</a></li>
162
- {{{ end }}}
163
- {{{ if privileges.admin:users }}}
164
- <li class="dropdown-item"><a href="#" data-action="delete-account">[[user:delete_account_as_admin]]</a></li>
165
- <li class="dropdown-item"><a href="#" data-action="delete-content">[[user:delete_content]]</a></li>
166
- <li class="dropdown-item"><a href="#" data-action="delete-all">[[user:delete_all]]</a></li>
167
- {{{ end }}}
168
- </ul>
169
- </div>
170
- {{{ end }}}
118
+ <a class="btn btn-default btn-block" href="{config.relative_path}/{type_path}/{targetId}">
119
+ <i class="fa fa-external-link"></i>
120
+ [[flags:go-to-target]]
121
+ </a>
122
+
123
+ <a class="btn btn-default btn-block" href="#" data-action="assign">
124
+ <i class="fa fa-id-card-o"></i>
125
+ [[flags:assign-to-me]]
126
+ </a>
127
+
128
+ {{{ if type_bool.post }}}
129
+ {{{ if !target.deleted}}}
130
+ <a class="btn btn-danger btn-block" href="#" data-action="delete-post"><i class="fa fa-trash"></i> [[flags:delete-post]]</a>
131
+ {{{ else }}}
132
+ <a class="btn btn-danger btn-block" href="#" data-action="purge-post"><i class="fa fa-trash"></i> [[flags:purge-post]]</a>
133
+ <a class="btn btn-success btn-block" href="#" data-action="restore-post"><i class="fa fa-reply"></i><i class="fa fa-trash"></i> [[flags:restore-post]]</a>
134
+ {{{ end }}}
135
+ {{{ end }}}
136
+
137
+ {{{ if target.uid }}}
138
+ <div class="btn-group btn-block" data-uid="{target.uid}">
139
+ <button type="button" class="btn btn-default btn-block dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
140
+ <i class="fa fa-street-view"></i>
141
+ [[flags:flagged-user]]
142
+ <span class="caret"></span>
143
+ </button>
144
+ <ul class="dropdown-menu">
145
+ <li><a href="{config.relative_path}/uid/{target.uid}">[[flags:view-profile]]</a></li>
146
+ {{{ if !config.disableChat }}}
147
+ <li><a href="#" data-action="chat">[[flags:start-new-chat]]</a></li>
148
+ {{{ end }}}
149
+ <li role="separator" class="divider"></li>
150
+ {{{ if privileges.ban }}}
151
+ <li class="{{{ if target.user.banned }}}hidden{{{ end }}}"><a href="#" data-action="ban">[[user:ban_account]]</a></li>
152
+ <li class="{{{ if !target.user.banned }}}hidden{{{ end }}}"><a href="#" data-action="unban">[[user:unban_account]]</a></li>
153
+ {{{ end }}}
154
+ {{{ if privileges.mute}}}
155
+ <li class="{{{ if target.user.muted }}}hidden{{{ end }}}"><a href="#" data-action="mute">[[user:mute_account]]</a></li>
156
+ <li class="{{{ if !target.user.muted }}}hidden{{{ end }}}"><a href="#" data-action="unmute">[[user:unmute_account]]</a></li>
157
+ {{{ end }}}
158
+ {{{ if privileges.admin:users }}}
159
+ <li><a href="#" data-action="delete-account">[[user:delete_account_as_admin]]</a></li>
160
+ <li><a href="#" data-action="delete-content">[[user:delete_content]]</a></li>
161
+ <li><a href="#" data-action="delete-all">[[user:delete_all]]</a></li>
162
+ {{{ end }}}
163
+ </ul>
171
164
  </div>
165
+ {{{ end }}}
172
166
 
173
167
  <hr />
174
168
 
@@ -178,11 +172,11 @@
178
172
  <div class="alert alert-success text-center">[[flags:no-history]]</div>
179
173
  <!-- ENDIF !history.length -->
180
174
  {{{each history}}}
181
- <div class="d-flex">
182
- <div class="flex-shrink-0">
183
- <a href="{config.relative_path}/user/{../user.userslug}">{buildAvatar(history.user, "32px", true, "media-object")}</a>
175
+ <div class="media">
176
+ <div class="media-left">
177
+ <a href="{config.relative_path}/user/{../user.userslug}">{buildAvatar(history.user, "md", false, "media-object")}</a>
184
178
  </div>
185
- <div class="flex-grow-1 ms-3">
179
+ <div class="media-body">
186
180
  <h4 class="media-heading">
187
181
  <a href="{config.relative_path}/user/{../user.userslug}">{../user.username}</a>
188
182
  <small><span class="timeago" title="{../datetimeISO}"></span></small>
@@ -190,12 +184,12 @@
190
184
  <ul>
191
185
  {{{each ./fields}}}
192
186
  <li>
193
- <span class="badge bg-primary">[[flags:{@key}]]</span><!-- IF @value --> &rarr; <span class="badge bg-light text-dark">{@value}</span><!-- ENDIF @value -->
187
+ <span class="label label-primary">[[flags:{@key}]]</span><!-- IF @value --> &rarr; <span class="label label-default">{@value}</span><!-- ENDIF @value -->
194
188
  </li>
195
189
  {{{end}}}
196
190
  {{{ each ./meta }}}
197
191
  <li>
198
- <span class="badge bg-{{./labelClass}}">{{./key}}</span>{{{ if ./value }}} &rarr; <span class="badge bg-light text-dark">{{ ./value }}</span>{{{ end }}}
192
+ <span class="label label-{{./labelClass}}">{{./key}}</span>{{{ if ./value }}} &rarr; <span class="label label-default">{{ ./value }}</span>{{{ end }}}
199
193
  </li>
200
194
  {{{ end }}}
201
195
  </ul>
@@ -7,15 +7,15 @@
7
7
  <div class="col-sm-8 col-md-9">
8
8
  <!-- IF hasFilter -->
9
9
  <div class="alert alert-warning">
10
- <p class="float-end">
10
+ <p class="pull-right">
11
11
  <a href="{config.relative_path}/flags">[[flags:filter-reset]]</a>
12
12
  </p>
13
13
  [[flags:filter-active]]
14
14
  </div>
15
15
  <!-- ENDIF hasFilter -->
16
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">
17
+ <div class="btn-group pull-right" component="flags/bulk-actions">
18
+ <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" autocomplete="off" aria-haspopup="true" aria-expanded="false" disabled="disabled">
19
19
  <i class="fa fa-clone"></i> [[flags:bulk-actions]] <span class="caret"></span>
20
20
  </button>
21
21
  <ul class="dropdown-menu">
@@ -60,7 +60,7 @@
60
60
  {./heat}
61
61
  </td>
62
62
  <td><span class="timeago" title="{../datetimeISO}"></span></td>
63
- <td><span class="badge bg-{../labelClass}">[[flags:state-{../state}]]</span></td>
63
+ <td><span class="label label-{../labelClass}">[[flags:state-{../state}]]</span></td>
64
64
  </tr>
65
65
  {{{end}}}
66
66
  </tbody>
@@ -3,7 +3,7 @@
3
3
  <!-- IF !isSpider -->
4
4
  <div component="toaster/tray" class="alert-window">
5
5
  <div id="reconnect-alert" class="alert alert-dismissable alert-warning clearfix hide" component="toaster/toast">
6
- <button type="button" class="btn-close float-end" data-bs-dismiss="alert" aria-hidden="true"></button>
6
+ <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
7
7
  <p>[[global:reconnecting-message, {config.siteTitle}]]</p>
8
8
  </div>
9
9
  </div>
@@ -11,57 +11,252 @@
11
11
  <!-- ENDIF group.isOwner -->
12
12
  </div>
13
13
 
14
- <div class="col-12">
14
+ <div class="col-xs-12">
15
15
  <!-- IMPORT partials/breadcrumbs.tpl -->
16
16
  </div>
17
17
 
18
- <div class="col-lg-4 col-12">
19
- <div class="card mb-3">
20
- <div class="card-header">
21
- <span class="fs-5">
18
+ <div class="col-lg-4 col-xs-12">
19
+ <div class="panel panel-default">
20
+ <div class="panel-heading">
21
+ <h3 class="panel-title">
22
22
  <i class="fa fa-list-ul"></i> [[groups:details.title]]
23
- <!-- IF group.private --><span class="badge bg-info text-dark">[[groups:details.private]]</span><!-- ENDIF group.private -->
24
- <!-- IF group.hidden --><span class="badge bg-info text-dark">[[groups:details.hidden]]</span>&nbsp;<!-- ENDIF group.hidden -->
25
- </span>
23
+ <!-- IF group.private --><span class="label label-info">[[groups:details.private]]</span><!-- ENDIF group.private -->
24
+ <!-- IF group.hidden --><span class="label label-info">[[groups:details.hidden]]</span>&nbsp;<!-- ENDIF group.hidden -->
25
+ </h3>
26
26
  </div>
27
- <div class="card-body">
28
- <h2>{group.displayName}</h2>
27
+ <div class="panel-body">
28
+ <h1>{group.displayName}</h1>
29
29
  <p>{group.descriptionParsed}</p>
30
30
  <!-- IF isAdmin -->
31
- <div class="float-end">
31
+ <div class="pull-right">
32
32
  <a href="{config.relative_path}/admin/manage/groups/{group.nameEncoded}" target="_blank" class="btn btn-info"><i class="fa fa-gear"></i> [[user:edit]]</a>
33
33
  </div>
34
34
  <!-- ENDIF isAdmin -->
35
35
  <!-- IF loggedIn -->
36
- <div class="float-end">
36
+ <div class="pull-right">
37
37
  {function.membershipBtn, group}&nbsp;
38
38
  </div>
39
39
  <!-- ENDIF loggedIn -->
40
40
  </div>
41
41
  </div>
42
-
43
- <div class="card mb-3">
44
- <div class="card-header">
45
- <span class="fs-5">
46
- <i class="fa fa-users"></i> [[groups:details.members]]
47
- </span>
42
+ <div class="panel panel-default">
43
+ <div class="panel-heading">
44
+ <h3 class="panel-title"><i class="fa fa-users"></i> [[groups:details.members]]</h3>
48
45
  </div>
49
- <div class="card-body">
46
+ <div class="panel-body">
50
47
  <!-- IMPORT partials/groups/memberlist.tpl -->
51
48
  </div>
52
49
  </div>
53
-
54
50
  <!-- IF group.isOwner -->
55
- <!-- IMPORT partials/groups/admin.tpl -->
56
- <!-- ENDIF group.isOwner -->
51
+ <div class="panel panel-default">
52
+ <div class="panel-heading">
53
+ <h3 class="panel-title clearfix">
54
+ <i class="fa fa-clock-o"></i> [[groups:details.pending]]
55
+ <!-- IF group.pending.length -->
56
+ <div class="btn-group pull-right">
57
+ <button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
58
+ [[global:more]] <span class="caret"></span>
59
+ </button>
60
+ <ul class="dropdown-menu" role="menu">
61
+ <li><a href="#" data-ajaxify="false" data-action="acceptAll">[[groups:pending.accept_all]]</a></li>
62
+ <li><a href="#" data-ajaxify="false" data-action="rejectAll">[[groups:pending.reject_all]]</a></li>
63
+ </ul>
64
+ </div>
65
+ <!-- ENDIF group.pending.length -->
66
+ </h3>
67
+ </div>
68
+ <div class="panel-body">
69
+ <table component="groups/pending" class="table table-striped table-hover">
70
+ <!-- IF !group.pending.length -->
71
+ <div class="alert alert-info">[[groups:pending.none]]</div>
72
+ <!-- ENDIF !group.pending.length -->
73
+ {{{each group.pending}}}
74
+ <tr data-uid="{group.pending.uid}">
75
+ <td>
76
+ <a href="{config.relative_path}/user/{group.pending.userslug}">{buildAvatar(group.pending, "sm", true)}</a>
77
+ </td>
78
+ <td class="member-name">
79
+ <a href="{config.relative_path}/user/{group.pending.userslug}">{group.pending.username}</a>
80
+ </td>
81
+ <td>
82
+ <div class="btn-group pull-right">
83
+ <button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
84
+ [[global:more]] <span class="caret"></span>
85
+ </button>
86
+ <ul class="dropdown-menu" role="menu">
87
+ <li><a href="#" data-ajaxify="false" data-action="accept">[[groups:pending.accept]]</a></li>
88
+ <li><a href="#" data-ajaxify="false" data-action="reject">[[groups:pending.reject]]</a></li>
89
+ </ul>
90
+ </div>
91
+ </td>
92
+ </tr>
93
+ {{{end}}}
94
+ </table>
95
+ </div>
96
+ </div>
97
+ <div class="panel panel-default">
98
+ <div class="panel-heading">
99
+ <h3 class="panel-title clearfix">
100
+ <i class="fa fa-gift"></i> [[groups:details.invited]]
101
+ </h3>
102
+ </div>
103
+ <div class="panel-body">
104
+ <div class="input-group">
105
+ <input class="form-control" type="text" component="groups/members/invite" placeholder="[[groups:invited.search]]"/>
106
+ <span class="input-group-addon search-button"><i class="fa fa-search"></i></span>
107
+ </div>
108
+
109
+ <div class="form-group">
110
+ <textarea class="form-control" component="groups/members/bulk-invite" placeholder="[[groups:bulk-invite-instructions]]"></textarea>
111
+ </div>
57
112
 
113
+ <div class="form-group clearfix">
114
+ <button class="btn btn-default btn-sm pull-right" component="groups/members/bulk-invite-button">[[groups:bulk-invite]]</button>
115
+ </div>
116
+
117
+ <table component="groups/invited" class="table table-striped table-hover">
118
+ <!-- IF !group.invited.length -->
119
+ <div class="alert alert-info">[[groups:invited.none]]</div>
120
+ <!-- ENDIF !group.invited.length -->
121
+ {{{each group.invited}}}
122
+ <tr data-uid="{group.invited.uid}">
123
+ <td>
124
+ <a href="{config.relative_path}/user/{group.invited.userslug}">{buildAvatar(group.invited, "sm", true)}</a>
125
+ </td>
126
+ <td class="member-name">
127
+ <a href="{config.relative_path}/user/{group.invited.userslug}">{group.invited.username}</a>
128
+ </td>
129
+ <td>
130
+ <div class="btn-group pull-right">
131
+ <button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
132
+ [[global:more]] <span class="caret"></span>
133
+ </button>
134
+ <ul class="dropdown-menu" role="menu">
135
+ <li><a href="#" data-ajaxify="false" data-action="rescindInvite">[[groups:invited.uninvite]]</a></li>
136
+ </ul>
137
+ </div>
138
+ </td>
139
+ </tr>
140
+ {{{end}}}
141
+ </table>
142
+ </div>
143
+ </div>
144
+
145
+ <div class="panel panel-default">
146
+ <div class="panel-heading pointer" data-toggle="collapse" data-target=".options">
147
+ <h3 class="panel-title">
148
+ <i class="fa fa-caret-down pull-right"></i>
149
+ <i class="fa fa-cogs"></i> [[groups:details.owner_options]]
150
+ </h3>
151
+ </div>
152
+
153
+ <div class="panel-body options collapse">
154
+ <form component="groups/settings" role="form">
155
+ <div class="form-group">
156
+ <label for="name">[[groups:details.group_name]]</label>
157
+ <input <!-- IF group.system -->readonly<!-- ENDIF group.system --> class="form-control" name="name" id="name" type="text" value="{group.displayName}" />
158
+ </div>
159
+ <div class="form-group">
160
+ <label for="name">[[groups:details.description]]</label>
161
+ <textarea class="form-control" name="description" id="description" type="text" maxlength="255">{group.description}</textarea>
162
+ </div>
163
+
164
+ <hr />
165
+ <div class="form-group">
166
+ <label for="memberPostCids">[[groups:details.member-post-cids]]</label>
167
+ <div class="row">
168
+ <div class="col-md-6">
169
+ <input id="memberPostCids" type="text" class="form-control" value="{group.memberPostCids}">
170
+ </div>
171
+ <div class="col-md-6 member-post-cids-selector">
172
+ <!-- IMPORT partials/category-selector.tpl -->
173
+ </div>
174
+ </div>
175
+ </div>
176
+
177
+ <hr />
178
+
179
+ <div class="form-group user-title-option">
180
+ <label for="userTitle">[[groups:details.badge_text]]</label>
181
+ <input component="groups/userTitleOption" class="form-control" name="userTitle" id="userTitle" type="text" maxlength="40" value="{group.userTitleEscaped}"<!-- IF !group.userTitleEnabled --> disabled<!-- ENDIF !group.userTitleEnabled --> />
182
+ </div>
183
+
184
+ <div class="form-group user-title-option">
185
+ <label>[[groups:details.badge_preview]]</label><br />
186
+ <span class="label<!-- IF !group.userTitleEnabled --> hide<!-- ENDIF !group.userTitleEnabled -->" style="color: {group.textColor}; background-color: {group.labelColor}"><i class="fa<!-- IF group.icon --> {group.icon}<!-- ENDIF group.icon -->"></i> <span class="label-text"><!-- IF group.userTitle -->{group.userTitle}<!-- ELSE -->{group.displayName}<!-- ENDIF group.userTitle --></span></span>
187
+
188
+ <hr/>
189
+ <button component="groups/userTitleOption" type="button" class="btn btn-default btn-sm" data-action="icon-select"<!-- IF !group.userTitleEnabled --> disabled<!-- ENDIF !group.userTitleEnabled -->>[[groups:details.change_icon]]</button>
190
+ <div>
191
+ <label for="labelColor" class="badge-color-label">[[groups:details.change_label_colour]]</label>
192
+ <input component="groups/userTitleOption" type="color" name="labelColor" value="<!-- IF group.labelColor -->{group.labelColor}<!-- ENDIF group.labelColor -->" />
193
+ </div>
194
+ <div>
195
+ <label for="color" class="badge-color-label">[[groups:details.change_text_colour]]</label>
196
+ <input component="groups/userTitleOption" type="color" name="textColor" value="<!-- IF group.textColor -->{group.textColor}<!-- ENDIF group.textColor -->" />
197
+ </div>
198
+ <input type="hidden" name="icon" value="<!-- IF group.icon -->{group.icon}<!-- ENDIF group.icon -->" />
199
+
200
+ <div id="icons" class="hidden">
201
+ <div class="icon-container">
202
+ <div class="row fa-icons">
203
+ <i class="fa fa-doesnt-exist"></i>
204
+ <!-- IMPORT partials/fontawesome.tpl -->
205
+ </div>
206
+ </div>
207
+ </div>
208
+ </div>
209
+ <hr />
210
+ <div class="checkbox">
211
+ <label>
212
+ <input name="userTitleEnabled" type="checkbox"<!-- IF group.userTitleEnabled --> checked<!-- ENDIF group.userTitleEnabled -->> <strong>[[groups:details.userTitleEnabled]]</strong>
213
+ </label>
214
+ </div>
215
+ <div class="checkbox">
216
+ <label>
217
+ <input name="private" type="checkbox"<!-- IF group.private --> checked<!-- ENDIF group.private -->> <strong>[[groups:details.private]]</strong>
218
+ <!-- IF !allowPrivateGroups -->
219
+ <p class="help-block">
220
+ [[groups:details.private_system_help]]
221
+ </p>
222
+ <!-- ENDIF !allowPrivateGroups -->
223
+ <p class="help-block">
224
+ [[groups:details.private_help]]
225
+ </p>
226
+ </label>
227
+ </div>
228
+ <div class="checkbox">
229
+ <label>
230
+ <input name="disableJoinRequests" type="checkbox"<!-- IF group.disableJoinRequests --> checked<!-- ENDIF group.disableJoinRequests -->> <strong>[[groups:details.disableJoinRequests]]</strong>
231
+ </label>
232
+ </div>
233
+ <div class="checkbox">
234
+ <label>
235
+ <input name="disableLeave" type="checkbox"{{{if group.disableLeave}}} checked{{{end}}}> <strong>[[groups:details.disableLeave]]</strong>
236
+ </label>
237
+ </div>
238
+ <div class="checkbox">
239
+ <label>
240
+ <input name="hidden" type="checkbox"<!-- IF group.hidden --> checked<!-- ENDIF group.hidden -->> <strong>[[groups:details.hidden]]</strong>
241
+ <p class="help-block">
242
+ [[groups:details.hidden_help]]
243
+ </p>
244
+ </label>
245
+ </div>
246
+
247
+ <button class="btn btn-link btn-xs pull-right" type="button" data-action="delete">[[groups:details.delete_group]]</button>
248
+ <button class="btn btn-primary" type="button" data-action="update">[[global:save_changes]]</button>
249
+ </form>
250
+ </div>
251
+ </div>
252
+ <!-- ENDIF group.isOwner -->
58
253
  <div data-widget-area="left">
59
254
  {{{each widgets.left}}}
60
255
  {{widgets.left.html}}
61
256
  {{{end}}}
62
257
  </div>
63
258
  </div>
64
- <div class="col-lg-8 col-12">
259
+ <div class="col-lg-8 col-xs-12">
65
260
  <div class="col-lg-11">
66
261
  <!-- IF !posts.length -->
67
262
  <div class="alert alert-info">[[groups:details.has_no_posts]]</div>
@@ -5,27 +5,25 @@
5
5
  {{{end}}}
6
6
  </div>
7
7
  <div class="groups list">
8
- <div class="row justify-content-between">
9
- <div class="col-lg-6">
8
+ <div class="row">
9
+ <div class="col-lg-4">
10
10
  <!-- IF allowGroupCreation -->
11
11
  <button class="btn btn-primary" data-action="new"><i class="fa fa-plus"></i> [[groups:new_group]]</button>
12
12
  <!-- ENDIF allowGroupCreation -->
13
13
  </div>
14
- <div class="col-lg-6">
15
- <div class="row justify-content-end">
16
- <div class="col-5 col-md-6">
17
- <select class="form-select" id="search-sort">
14
+ <div class="col-lg-8">
15
+ <div class="row">
16
+ <div class="col-xs-5 col-md-3 text-left pull-right">
17
+ <select class="form-control" id="search-sort">
18
18
  <option value="alpha">[[groups:details.group_name]]</option>
19
19
  <option value="count">[[groups:details.member_count]]</option>
20
20
  <option value="date">[[groups:details.creation_date]]</option>
21
21
  </select>
22
22
  </div>
23
- <div class="col-7 col-md-6">
23
+ <div class="col-xs-7 col-md-5 text-left pull-right">
24
24
  <div class="input-group">
25
25
  <input type="text" class="form-control" placeholder="[[global:search]]" name="query" value="" id="search-text">
26
- <button id="search-button" class="btn btn-primary">
27
- <i class="fa fa-search"></i>
28
- </button>
26
+ <span id="search-button" class="input-group-addon search-button"><i class="fa fa-search"></i></span>
29
27
  </div>
30
28
  </div>
31
29
  </div>
@@ -38,7 +36,7 @@
38
36
  <!-- IF groups.length -->
39
37
  <!-- IMPORT partials/groups/list.tpl -->
40
38
  <!-- ELSE -->
41
- <div class="col-12">
39
+ <div class="col-xs-12">
42
40
  <div class="alert alert-warning">
43
41
  [[groups:no_groups_found]]
44
42
  </div>