nodebb-theme-persona 13.3.32 → 13.3.33

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,129 +1,129 @@
1
- {{{ if (!./index && widgets.mainpost-header.length) }}}
2
- <div data-widget-area="mainpost-header">
3
- {{{ each widgets.mainpost-header }}}
4
- {widgets.mainpost-header.html}
5
- {{{ end }}}
6
- </div>
7
- {{{ end }}}
8
-
9
- <div class="clearfix post-header">
10
- <div class="icon float-start">
11
- <a href="<!-- IF posts.user.userslug -->{config.relative_path}/user/{posts.user.userslug}<!-- ELSE -->#<!-- ENDIF posts.user.userslug -->">
12
- {buildAvatar(posts.user, "48px", true, "", "user/picture")}
13
- <i component="user/status" class="fa fa-circle status {posts.user.status}" title="[[global:{posts.user.status}]]"></i>
14
- </a>
15
- </div>
16
-
17
- <small class="d-flex">
18
- <div class="d-flex align-items-center gap-1 flex-wrap w-100">
19
- <strong class="text-nowrap" itemprop="author" itemscope itemtype="https://schema.org/Person">
20
- <meta itemprop="name" content="{./user.username}">
21
- {{{ if ./user.userslug }}}<meta itemprop="url" content="{config.relative_path}/user/{./user.userslug}">{{{ end }}}
22
- <a href="<!-- IF posts.user.userslug -->{config.relative_path}/user/{posts.user.userslug}<!-- ELSE -->#<!-- ENDIF posts.user.userslug -->" data-username="{posts.user.username}" data-uid="{posts.user.uid}">{posts.user.displayname}</a>
23
- </strong>
24
-
25
- {{{ each posts.user.selectedGroups }}}
26
- {{{ if posts.user.selectedGroups.slug }}}
27
- <!-- IMPORT partials/groups/badge.tpl -->
28
- {{{ end }}}
29
- {{{ end }}}
30
-
31
- <!-- IF posts.user.banned -->
32
- <span class="badge bg-danger">[[user:banned]]</span>
33
- <!-- ENDIF posts.user.banned -->
34
-
35
- <span class="visible-xs-inline-block visible-sm-inline-block visible-md-inline-block visible-lg-inline-block">
36
- <!-- IF posts.toPid -->
37
- <a component="post/parent" class="btn btn-sm btn-outline-secondary hidden-xs" data-topid="{posts.toPid}" href="{config.relative_path}/post/{posts.toPid}"><i class="fa fa-reply"></i> @<!-- IF posts.parent.username -->{posts.parent.username}<!-- ELSE -->[[global:guest]]<!-- ENDIF posts.parent.username --></a>
38
- <!-- ENDIF posts.toPid -->
39
-
40
- <span>
41
- <!-- IF posts.user.custom_profile_info.length -->
42
- &#124;
43
- {{{each posts.user.custom_profile_info}}}
44
- {posts.user.custom_profile_info.content}
45
- {{{end}}}
46
- <!-- ENDIF posts.user.custom_profile_info.length -->
47
- </span>
48
- </span>
49
- <div class="d-flex align-items-center gap-1 flex-grow-1 justify-content-end">
50
- <span>
51
- <i component="post/edit-indicator" class="fa fa-pencil-square<!-- IF privileges.posts:history --> pointer<!-- END --> edit-icon <!-- IF !posts.editor.username -->hidden<!-- ENDIF !posts.editor.username -->"></i>
52
-
53
- <span data-editor="{posts.editor.userslug}" component="post/editor" class="hidden">[[global:last-edited-by, {posts.editor.username}]] <span class="timeago" title="{isoTimeToLocaleString(posts.editedISO, config.userLang)}"></span></span>
54
-
55
- <span class="visible-xs-inline-block visible-sm-inline-block visible-md-inline-block visible-lg-inline-block">
56
- <a class="permalink text-muted" href="{config.relative_path}/post/{posts.pid}"><span class="timeago" title="{posts.timestampISO}"></span></a>
57
- </span>
58
- </span>
59
- <span class="bookmarked"><i class="fa fa-bookmark-o"></i></span>
60
- </div>
61
- </div>
62
- </small>
63
- </div>
64
-
65
- <br />
66
-
67
- <div class="content" component="post/content" itemprop="text">
68
- {posts.content}
69
- </div>
70
-
71
- <div class="post-footer">
72
- {{{ if posts.user.signature }}}
73
- <div component="post/signature" data-uid="{posts.user.uid}" class="post-signature">{posts.user.signature}</div>
74
- {{{ end }}}
75
-
76
- <div class="clearfix">
77
- {{{ if !hideReplies }}}
78
- <a component="post/reply-count" data-target-component="post/replies/container" href="#" class="threaded-replies user-select-none float-start text-muted {{{ if (!./replies || shouldHideReplyContainer(@value)) }}}hidden{{{ end }}}">
79
- <span component="post/reply-count/avatars" class="avatars d-inline-flex gap-1 align-items-top hidden-xs {{{ if posts.replies.hasMore }}}hasMore{{{ end }}}">
80
- {{{each posts.replies.users}}}
81
- <span>{buildAvatar(posts.replies.users, "16px", true, "")}</span>
82
- {{{end}}}
83
- {{{ if posts.replies.hasMore}}}
84
- <span><i class="fa fa-ellipsis"></i></span>
85
- {{{ end }}}
86
- </span>
87
-
88
- <span class="replies-count small" component="post/reply-count/text" data-replies="{posts.replies.count}">{posts.replies.text}</span>
89
- <span class="replies-last hidden-xs small">[[topic:last-reply-time]] <span class="timeago" title="{posts.replies.timestampISO}"></span></span>
90
-
91
- <i class="fa fa-fw fa-chevron-down" component="post/replies/open"></i>
92
- </a>
93
- {{{ end }}}
94
-
95
- <small class="d-flex justify-content-end align-items-center gap-1" component="post/actions">
96
- <!-- IMPORT partials/topic/reactions.tpl -->
97
- <span class="post-tools">
98
- <a component="post/reply" href="#" class="user-select-none <!-- IF !privileges.topics:reply -->hidden<!-- ENDIF !privileges.topics:reply -->">[[topic:reply]]</a>
99
- <a component="post/quote" href="#" class="user-select-none <!-- IF !privileges.topics:reply -->hidden<!-- ENDIF !privileges.topics:reply -->">[[topic:quote]]</a>
100
- </span>
101
-
102
- <!-- IF !reputation:disabled -->
103
- <span class="votes">
104
- <a component="post/upvote" href="#" class="<!-- IF posts.upvoted -->upvoted<!-- ENDIF posts.upvoted -->">
105
- <i class="fa fa-chevron-up"></i>
106
- </a>
107
-
108
- <span component="post/vote-count" data-votes="{posts.votes}">{posts.votes}</span>
109
-
110
- <!-- IF !downvote:disabled -->
111
- <a component="post/downvote" href="#" class="<!-- IF posts.downvoted -->downvoted<!-- ENDIF posts.downvoted -->">
112
- <i class="fa fa-chevron-down"></i>
113
- </a>
114
- <!-- ENDIF !downvote:disabled -->
115
- </span>
116
- <!-- ENDIF !reputation:disabled -->
117
-
118
- <!-- IMPORT partials/topic/post-menu.tpl -->
119
- </small>
120
- </div>
121
- <div component="post/replies/container"></div>
122
- </div>
123
- {{{ if (!./index && widgets.mainpost-footer.length) }}}
124
- <div data-widget-area="mainpost-footer">
125
- {{{ each widgets.mainpost-footer }}}
126
- {widgets.mainpost-footer.html}
127
- {{{ end }}}
128
- </div>
1
+ {{{ if (!./index && widgets.mainpost-header.length) }}}
2
+ <div data-widget-area="mainpost-header">
3
+ {{{ each widgets.mainpost-header }}}
4
+ {widgets.mainpost-header.html}
5
+ {{{ end }}}
6
+ </div>
7
+ {{{ end }}}
8
+
9
+ <div class="clearfix post-header">
10
+ <div class="icon float-start">
11
+ <a href="<!-- IF posts.user.userslug -->{config.relative_path}/user/{posts.user.userslug}<!-- ELSE -->#<!-- ENDIF posts.user.userslug -->">
12
+ {buildAvatar(posts.user, "48px", true, "", "user/picture")}
13
+ <i component="user/status" class="fa fa-circle status {posts.user.status}" title="[[global:{posts.user.status}]]"></i>
14
+ </a>
15
+ </div>
16
+
17
+ <small class="d-flex">
18
+ <div class="d-flex align-items-center gap-1 flex-wrap w-100">
19
+ <strong class="text-nowrap" itemprop="author" itemscope itemtype="https://schema.org/Person">
20
+ <meta itemprop="name" content="{./user.username}">
21
+ {{{ if ./user.userslug }}}<meta itemprop="url" content="{config.relative_path}/user/{./user.userslug}">{{{ end }}}
22
+ <a href="<!-- IF posts.user.userslug -->{config.relative_path}/user/{posts.user.userslug}<!-- ELSE -->#<!-- ENDIF posts.user.userslug -->" data-username="{posts.user.username}" data-uid="{posts.user.uid}">{posts.user.displayname}</a>
23
+ </strong>
24
+
25
+ {{{ each posts.user.selectedGroups }}}
26
+ {{{ if posts.user.selectedGroups.slug }}}
27
+ <!-- IMPORT partials/groups/badge.tpl -->
28
+ {{{ end }}}
29
+ {{{ end }}}
30
+
31
+ <!-- IF posts.user.banned -->
32
+ <span class="badge bg-danger">[[user:banned]]</span>
33
+ <!-- ENDIF posts.user.banned -->
34
+
35
+ <span class="visible-xs-inline-block visible-sm-inline-block visible-md-inline-block visible-lg-inline-block">
36
+ <!-- IF posts.toPid -->
37
+ <a component="post/parent" class="btn btn-sm btn-outline-secondary hidden-xs" data-topid="{posts.toPid}" href="{config.relative_path}/post/{posts.toPid}"><i class="fa fa-reply"></i> @<!-- IF posts.parent.username -->{posts.parent.username}<!-- ELSE -->[[global:guest]]<!-- ENDIF posts.parent.username --></a>
38
+ <!-- ENDIF posts.toPid -->
39
+
40
+ <span>
41
+ <!-- IF posts.user.custom_profile_info.length -->
42
+ &#124;
43
+ {{{each posts.user.custom_profile_info}}}
44
+ {posts.user.custom_profile_info.content}
45
+ {{{end}}}
46
+ <!-- ENDIF posts.user.custom_profile_info.length -->
47
+ </span>
48
+ </span>
49
+ <div class="d-flex align-items-center gap-1 flex-grow-1 justify-content-end">
50
+ <span>
51
+ <i component="post/edit-indicator" class="fa fa-pencil-square<!-- IF privileges.posts:history --> pointer<!-- END --> edit-icon <!-- IF !posts.editor.username -->hidden<!-- ENDIF !posts.editor.username -->"></i>
52
+
53
+ <span data-editor="{posts.editor.userslug}" component="post/editor" class="hidden">[[global:last-edited-by, {posts.editor.username}]] <span class="timeago" title="{isoTimeToLocaleString(posts.editedISO, config.userLang)}"></span></span>
54
+
55
+ <span class="visible-xs-inline-block visible-sm-inline-block visible-md-inline-block visible-lg-inline-block">
56
+ <a class="permalink text-muted" href="{config.relative_path}/post/{posts.pid}"><span class="timeago" title="{posts.timestampISO}"></span></a>
57
+ </span>
58
+ </span>
59
+ <span class="bookmarked"><i class="fa fa-bookmark-o"></i></span>
60
+ </div>
61
+ </div>
62
+ </small>
63
+ </div>
64
+
65
+ <br />
66
+
67
+ <div class="content" component="post/content" itemprop="text">
68
+ {posts.content}
69
+ </div>
70
+
71
+ <div class="post-footer">
72
+ {{{ if posts.user.signature }}}
73
+ <div component="post/signature" data-uid="{posts.user.uid}" class="post-signature">{posts.user.signature}</div>
74
+ {{{ end }}}
75
+
76
+ <div class="clearfix">
77
+ {{{ if !hideReplies }}}
78
+ <a component="post/reply-count" data-target-component="post/replies/container" href="#" class="threaded-replies user-select-none float-start text-muted {{{ if (!./replies || shouldHideReplyContainer(@value)) }}}hidden{{{ end }}}">
79
+ <span component="post/reply-count/avatars" class="avatars d-inline-flex gap-1 align-items-top hidden-xs {{{ if posts.replies.hasMore }}}hasMore{{{ end }}}">
80
+ {{{each posts.replies.users}}}
81
+ <span>{buildAvatar(posts.replies.users, "16px", true, "")}</span>
82
+ {{{end}}}
83
+ {{{ if posts.replies.hasMore}}}
84
+ <span><i class="fa fa-ellipsis"></i></span>
85
+ {{{ end }}}
86
+ </span>
87
+
88
+ <span class="replies-count small" component="post/reply-count/text" data-replies="{posts.replies.count}">{posts.replies.text}</span>
89
+ <span class="replies-last hidden-xs small">[[topic:last-reply-time]] <span class="timeago" title="{posts.replies.timestampISO}"></span></span>
90
+
91
+ <i class="fa fa-fw fa-chevron-down" component="post/replies/open"></i>
92
+ </a>
93
+ {{{ end }}}
94
+
95
+ <small class="d-flex justify-content-end align-items-center gap-1" component="post/actions">
96
+ <!-- IMPORT partials/topic/reactions.tpl -->
97
+ <span class="post-tools">
98
+ <a component="post/reply" href="#" class="user-select-none <!-- IF !privileges.topics:reply -->hidden<!-- ENDIF !privileges.topics:reply -->">[[topic:reply]]</a>
99
+ <a component="post/quote" href="#" class="user-select-none <!-- IF !privileges.topics:reply -->hidden<!-- ENDIF !privileges.topics:reply -->">[[topic:quote]]</a>
100
+ </span>
101
+
102
+ <!-- IF !reputation:disabled -->
103
+ <span class="votes">
104
+ <a component="post/upvote" href="#" class="<!-- IF posts.upvoted -->upvoted<!-- ENDIF posts.upvoted -->">
105
+ <i class="fa fa-chevron-up"></i>
106
+ </a>
107
+
108
+ <span component="post/vote-count" data-votes="{posts.votes}">{posts.votes}</span>
109
+
110
+ <!-- IF !downvote:disabled -->
111
+ <a component="post/downvote" href="#" class="<!-- IF posts.downvoted -->downvoted<!-- ENDIF posts.downvoted -->">
112
+ <i class="fa fa-chevron-down"></i>
113
+ </a>
114
+ <!-- ENDIF !downvote:disabled -->
115
+ </span>
116
+ <!-- ENDIF !reputation:disabled -->
117
+
118
+ <!-- IMPORT partials/topic/post-menu.tpl -->
119
+ </small>
120
+ </div>
121
+ <div component="post/replies/container"></div>
122
+ </div>
123
+ {{{ if (!./index && widgets.mainpost-footer.length) }}}
124
+ <div data-widget-area="mainpost-footer">
125
+ {{{ each widgets.mainpost-footer }}}
126
+ {widgets.mainpost-footer.html}
127
+ {{{ end }}}
128
+ </div>
129
129
  {{{ end }}}
@@ -1,28 +1,28 @@
1
- <!-- IF privileges.topics:reply -->
2
- <div component="topic/quickreply/container" class="clearfix quick-reply">
3
- <div class="icon float-start hidden-xs">
4
- <a data-uid="{loggedInUser.uid}" href="{{{ if loggedInUser.userslug }}}{config.relative_path}/user/{loggedInUser.userslug}{{{ else }}}#{{{ end }}}">
5
- {buildAvatar(loggedInUser, "48px", true, "", "user/picture")}
6
- {{{ if loggedInUser.status }}}
7
- <i component="user/status" class="fa fa-circle status {loggedInUser.status}" title="[[global:{loggedInUser.status}]]"></i>
8
- {{{ end }}}
9
- </a>
10
- </div>
11
- <form method="post" action="{config.relative_path}/compose">
12
- <input type="hidden" name="tid" value="{tid}" />
13
- <input type="hidden" name="_csrf" value="{config.csrf_token}" />
14
- <div class="quickreply-message">
15
- <textarea name="content" component="topic/quickreply/text" class="form-control mousetrap" rows="5" placeholder="[[modules:composer.textarea.placeholder]]"></textarea>
16
- <div class="imagedrop"><div>[[topic:composer.drag-and-drop-images]]</div></div>
17
- </div>
18
- <div class="btn-group float-end">
19
- <button type="submit" component="topic/quickreply/button" class="btn btn-primary">[[topic:post-quick-reply]]</button>
20
- <button type="submit" component="topic/quickreply/expand" class="btn btn-outline-primary" formmethod="get"><i class="fa fa-expand"></i></button>
21
- </div>
22
- </form>
23
- <form component="topic/quickreply/upload" method="post" enctype="multipart/form-data">
24
- <input type="file" name="files[]" multiple class="hidden"/>
25
- </form>
26
-
27
- </div>
28
- <!-- ENDIF privileges.topics:reply -->
1
+ <!-- IF privileges.topics:reply -->
2
+ <div component="topic/quickreply/container" class="clearfix quick-reply">
3
+ <div class="icon float-start hidden-xs">
4
+ <a data-uid="{loggedInUser.uid}" href="{{{ if loggedInUser.userslug }}}{config.relative_path}/user/{loggedInUser.userslug}{{{ else }}}#{{{ end }}}">
5
+ {buildAvatar(loggedInUser, "48px", true, "", "user/picture")}
6
+ {{{ if loggedInUser.status }}}
7
+ <i component="user/status" class="fa fa-circle status {loggedInUser.status}" title="[[global:{loggedInUser.status}]]"></i>
8
+ {{{ end }}}
9
+ </a>
10
+ </div>
11
+ <form method="post" action="{config.relative_path}/compose">
12
+ <input type="hidden" name="tid" value="{tid}" />
13
+ <input type="hidden" name="_csrf" value="{config.csrf_token}" />
14
+ <div class="quickreply-message">
15
+ <textarea name="content" component="topic/quickreply/text" class="form-control mousetrap" rows="5" placeholder="[[modules:composer.textarea.placeholder]]"></textarea>
16
+ <div class="imagedrop"><div>[[topic:composer.drag-and-drop-images]]</div></div>
17
+ </div>
18
+ <div class="btn-group float-end">
19
+ <button type="submit" component="topic/quickreply/button" class="btn btn-primary">[[topic:post-quick-reply]]</button>
20
+ <button type="submit" component="topic/quickreply/expand" class="btn btn-outline-primary" formmethod="get"><i class="fa fa-expand"></i></button>
21
+ </div>
22
+ </form>
23
+ <form component="topic/quickreply/upload" method="post" enctype="multipart/form-data">
24
+ <input type="file" name="files[]" multiple class="hidden"/>
25
+ </form>
26
+
27
+ </div>
28
+ <!-- ENDIF privileges.topics:reply -->
@@ -1,27 +1,27 @@
1
- <div component="topic/reply/container" class="btn-group bottom-sheet <!-- IF !privileges.topics:reply -->hidden<!-- ENDIF !privileges.topics:reply -->">
2
- <a href="{config.relative_path}/compose?tid={tid}" class="btn btn-sm btn-primary" component="topic/reply" data-ajaxify="false" role="button"><i class="fa fa-reply visible-xs-inline"></i><span class="visible-sm-inline visible-md-inline visible-lg-inline"> [[topic:reply]]</span></a>
3
- <button type="button" class="btn btn-sm btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
4
- <span class="caret"></span>
5
- </button>
6
- <ul class="dropdown-menu dropdown-menu-end" role="menu">
7
- <li><a class="dropdown-item" href="#" component="topic/reply-as-topic" role="menuitem">[[topic:reply-as-topic]]</a></li>
8
- </ul>
9
- </div>
10
-
11
- <!-- IF loggedIn -->
12
- <!-- IF !privileges.topics:reply -->
13
- <!-- IF locked -->
14
- <a component="topic/reply/locked" class="btn btn-sm btn-primary" disabled><i class="fa fa-lock"></i> [[topic:locked]]</a>
15
- <!-- ENDIF locked -->
16
- <!-- ENDIF !privileges.topics:reply -->
17
-
18
- <!-- IF !locked -->
19
- <a component="topic/reply/locked" class="btn btn-sm btn-primary hidden" disabled><i class="fa fa-lock"></i> [[topic:locked]]</a>
20
- <!-- ENDIF !locked -->
21
-
22
- <!-- ELSE -->
23
-
24
- <!-- IF !privileges.topics:reply -->
25
- <a component="topic/reply/guest" href="{config.relative_path}/login" class="btn btn-sm btn-primary">[[topic:guest-login-reply]]</a>
26
- <!-- ENDIF !privileges.topics:reply -->
1
+ <div component="topic/reply/container" class="btn-group bottom-sheet <!-- IF !privileges.topics:reply -->hidden<!-- ENDIF !privileges.topics:reply -->">
2
+ <a href="{config.relative_path}/compose?tid={tid}" class="btn btn-sm btn-primary" component="topic/reply" data-ajaxify="false" role="button"><i class="fa fa-reply visible-xs-inline"></i><span class="visible-sm-inline visible-md-inline visible-lg-inline"> [[topic:reply]]</span></a>
3
+ <button type="button" class="btn btn-sm btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
4
+ <span class="caret"></span>
5
+ </button>
6
+ <ul class="dropdown-menu dropdown-menu-end" role="menu">
7
+ <li><a class="dropdown-item" href="#" component="topic/reply-as-topic" role="menuitem">[[topic:reply-as-topic]]</a></li>
8
+ </ul>
9
+ </div>
10
+
11
+ <!-- IF loggedIn -->
12
+ <!-- IF !privileges.topics:reply -->
13
+ <!-- IF locked -->
14
+ <a component="topic/reply/locked" class="btn btn-sm btn-primary" disabled><i class="fa fa-lock"></i> [[topic:locked]]</a>
15
+ <!-- ENDIF locked -->
16
+ <!-- ENDIF !privileges.topics:reply -->
17
+
18
+ <!-- IF !locked -->
19
+ <a component="topic/reply/locked" class="btn btn-sm btn-primary hidden" disabled><i class="fa fa-lock"></i> [[topic:locked]]</a>
20
+ <!-- ENDIF !locked -->
21
+
22
+ <!-- ELSE -->
23
+
24
+ <!-- IF !privileges.topics:reply -->
25
+ <a component="topic/reply/guest" href="{config.relative_path}/login" class="btn btn-sm btn-primary">[[topic:guest-login-reply]]</a>
26
+ <!-- ENDIF !privileges.topics:reply -->
27
27
  <!-- ENDIF loggedIn -->
@@ -1,3 +1,3 @@
1
- <div component="selection/tooltip" class="selection-tooltip-container position-absolute card card-body p-1 rounded-1 mt-2" style="z-index: 1;">
2
- <button component="selection/tooltip/quote" class="btn btn-sm btn-primary quote-tooltip-btn">[[topic:quote]]</button>
1
+ <div component="selection/tooltip" class="selection-tooltip-container position-absolute card card-body p-1 rounded-1 mt-2" style="z-index: 1;">
2
+ <button component="selection/tooltip/quote" class="btn btn-sm btn-primary quote-tooltip-btn">[[topic:quote]]</button>
3
3
  </div>
@@ -1,9 +1,9 @@
1
- <div title="[[topic:sort-by]]" class="btn-group bottom-sheet hidden-xs" component="thread/sort">
2
- <button class="btn btn-sm btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="[[aria:post-sort-option, {sortOptionLabel}]]">
3
- <i class="fa fa-fw fa-sort"></i></button>
4
- <ul class="dropdown-menu dropdown-menu-end" role="menu">
5
- <li><a class="dropdown-item" href="#" class="oldest_to_newest" data-sort="oldest_to_newest" role="menuitem"><i class="fa fa-fw"></i> [[topic:oldest-to-newest]]</a></li>
6
- <li><a class="dropdown-item" href="#" class="newest_to_oldest" data-sort="newest_to_oldest" role="menuitem"><i class="fa fa-fw"></i> [[topic:newest-to-oldest]]</a></li>
7
- <li><a class="dropdown-item" href="#" class="most_votes" data-sort="most_votes" role="menuitem"><i class="fa fa-fw"></i> [[topic:most-votes]]</a></li>
8
- </ul>
9
- </div>
1
+ <div title="[[topic:sort-by]]" class="btn-group bottom-sheet hidden-xs" component="thread/sort">
2
+ <button class="btn btn-sm btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="[[aria:post-sort-option, {sortOptionLabel}]]">
3
+ <i class="fa fa-fw fa-sort"></i></button>
4
+ <ul class="dropdown-menu dropdown-menu-end" role="menu">
5
+ <li><a class="dropdown-item" href="#" class="oldest_to_newest" data-sort="oldest_to_newest" role="menuitem"><i class="fa fa-fw"></i> [[topic:oldest-to-newest]]</a></li>
6
+ <li><a class="dropdown-item" href="#" class="newest_to_oldest" data-sort="newest_to_oldest" role="menuitem"><i class="fa fa-fw"></i> [[topic:newest-to-oldest]]</a></li>
7
+ <li><a class="dropdown-item" href="#" class="most_votes" data-sort="most_votes" role="menuitem"><i class="fa fa-fw"></i> [[topic:most-votes]]</a></li>
8
+ </ul>
9
+ </div>
@@ -1,12 +1,12 @@
1
- <div class="stats text-muted">
2
- <i class="fa fa-fw fa-user" title="[[global:posters]]"></i>
3
- <span title="{postercount}">{humanReadableNumber(postercount)}</span>
4
- </div>
5
- <div class="stats text-muted">
6
- <i class="fa fa-fw fa-pencil" title="[[global:posts]]"></i>
7
- <span component="topic/post-count" title="{postcount}">{humanReadableNumber(postcount)}</span>
8
- </div>
9
- <div class="stats text-muted">
10
- <i class="fa fa-fw fa-eye" title="[[global:views]]"></i>
11
- <span title="{viewcount}">{humanReadableNumber(viewcount)}</span>
1
+ <div class="stats text-muted">
2
+ <i class="fa fa-fw fa-user" title="[[global:posters]]"></i>
3
+ <span title="{postercount}">{humanReadableNumber(postercount)}</span>
4
+ </div>
5
+ <div class="stats text-muted">
6
+ <i class="fa fa-fw fa-pencil" title="[[global:posts]]"></i>
7
+ <span component="topic/post-count" title="{postcount}">{humanReadableNumber(postcount)}</span>
8
+ </div>
9
+ <div class="stats text-muted">
10
+ <i class="fa fa-fw fa-eye" title="[[global:views]]"></i>
11
+ <span title="{viewcount}">{humanReadableNumber(viewcount)}</span>
12
12
  </div>
@@ -1,3 +1,3 @@
1
- {{{ each tags }}}
2
- <!-- IMPORT partials/topic/tag.tpl -->
1
+ {{{ each tags }}}
2
+ <!-- IMPORT partials/topic/tag.tpl -->
3
3
  {{{ end }}}
@@ -1,8 +1,8 @@
1
- {{{ if privileges.view_thread_tools }}}
2
- <div title="[[topic:thread-tools.title]]" class="btn-group thread-tools bottom-sheet">
3
- <button class="btn btn-sm btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" type="button" aria-haspopup="true" aria-expanded="false">
4
- <i class="fa fa-fw fa-gear"></i>
5
- </button>
6
- <ul class="dropdown-menu dropdown-menu-end" role="menu"></ul>
7
- </div>
1
+ {{{ if privileges.view_thread_tools }}}
2
+ <div title="[[topic:thread-tools.title]]" class="btn-group thread-tools bottom-sheet">
3
+ <button class="btn btn-sm btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" type="button" aria-haspopup="true" aria-expanded="false">
4
+ <i class="fa fa-fw fa-gear"></i>
5
+ </button>
6
+ <ul class="dropdown-menu dropdown-menu-end" role="menu"></ul>
7
+ </div>
8
8
  {{{ end }}}
@@ -1,75 +1,75 @@
1
- {{{ if privileges.editable }}}
2
- <li <!-- IF locked -->hidden<!-- ENDIF locked -->>
3
- <a component="topic/lock" href="#" class="dropdown-item <!-- IF locked -->hidden<!-- ENDIF locked -->" role="menuitem"><i class="fa fa-fw fa-lock"></i> [[topic:thread-tools.lock]]</a>
4
- </li>
5
-
6
- <li <!-- IF !locked -->hidden<!-- ENDIF !locked -->>
7
- <a component="topic/unlock" href="#" class="dropdown-item <!-- IF !locked -->hidden<!-- ENDIF !locked -->" role="menuitem"><i class="fa fa-fw fa-unlock"></i> [[topic:thread-tools.unlock]]</a>
8
- </li>
9
-
10
- <li <!-- IF pinned -->hidden<!-- ENDIF pinned -->>
11
- <a component="topic/pin" href="#" class="dropdown-item <!-- IF pinned -->hidden<!-- ENDIF pinned -->" role="menuitem"><i class="fa fa-fw fa-thumb-tack"></i> [[topic:thread-tools.pin]]</a>
12
- </li>
13
-
14
- <li <!-- IF !pinned -->hidden<!-- ENDIF !pinned -->>
15
- <a component="topic/unpin" href="#" class="dropdown-item <!-- IF !pinned -->hidden<!-- ENDIF !pinned -->" role="menuitem"><i class="fa fa-fw fa-thumb-tack fa-rotate-90"></i> [[topic:thread-tools.unpin]]</a>
16
- </li>
17
-
18
- <li>
19
- <a component="topic/move" class="dropdown-item" href="#" role="menuitem"><i class="fa fa-fw fa-arrows"></i> [[topic:thread-tools.move]]</a>
20
- </li>
21
-
22
- <li>
23
- <a component="topic/merge" class="dropdown-item" href="#" role="menuitem"><i class="fa fa-fw fa-code-fork"></i> [[topic:thread-tools.merge]]</a>
24
- </li>
25
-
26
- <li>
27
- <a component="topic/fork" class="dropdown-item" href="#" role="menuitem"><i class="fa fa-fw fa-code-fork"></i> [[topic:thread-tools.fork]]</a>
28
- </li>
29
-
30
- <li>
31
- <a component="topic/tag" class="dropdown-item" href="#" role="menuitem"><i class="fa fa-fw fa-tag"></i> [[topic:thread-tools.tag]]</a>
32
- </li>
33
-
34
- {{{ if !scheduled }}}
35
- <li>
36
- <a component="topic/move-posts" class="dropdown-item" href="#" role="menuitem"><i class="fa fa-fw fa-arrows"></i> [[topic:thread-tools.move-posts]]</a>
37
- </li>
38
- {{{ end }}}
39
-
40
- <li>
41
- <a component="topic/mark-unread-for-all" class="dropdown-item" href="#" role="menuitem"><i class="fa fa-fw fa-inbox"></i> [[topic:thread-tools.markAsUnreadForAll]]</a>
42
- </li>
43
-
44
- <li class="dropdown-divider"></li>
45
- {{{ end }}}
46
-
47
- <!-- IF privileges.deletable -->
48
- <li <!-- IF deleted -->hidden<!-- ENDIF deleted -->>
49
- <a component="topic/delete" href="#" class="dropdown-item <!-- IF deleted -->hidden<!-- ENDIF deleted -->" role="menuitem"><i class="fa fa-fw fa-trash-o"></i> [[topic:thread-tools.delete]]</a>
50
- </li>
51
-
52
- {{{ if !scheduled }}}
53
- <li <!-- IF !deleted -->hidden<!-- ENDIF !deleted -->>
54
- <a component="topic/restore" href="#" class="dropdown-item <!-- IF !deleted -->hidden<!-- ENDIF !deleted -->" role="menuitem"><i class="fa fa-fw fa-history"></i> [[topic:thread-tools.restore]]</a>
55
- </li>
56
- {{{ end }}}
57
-
58
- <!-- IF privileges.purge -->
59
- <li <!-- IF !deleted -->hidden<!-- ENDIF !deleted -->>
60
- <a component="topic/purge" href="#" class="dropdown-item <!-- IF !deleted -->hidden<!-- ENDIF !deleted -->" role="menuitem"><i class="fa fa-fw fa-eraser"></i> [[topic:thread-tools.purge]]</a>
61
- </li>
62
- <!-- END -->
63
-
64
- <!-- IF privileges.isAdminOrMod -->
65
- <li>
66
- <a component="topic/delete/posts" class="dropdown-item" href="#" role="menuitem"><i class="fa fa-fw fa-trash-o"></i> [[topic:thread-tools.delete-posts]]</a>
67
- </li>
68
- <!-- ENDIF privileges.isAdminOrMod -->
69
-
70
- {{{each thread_tools}}}
71
- <li>
72
- <a href="#" class="dropdown-item {thread_tools.class}" role="menuitem"><i class="fa fa-fw {thread_tools.icon}"></i> {thread_tools.title}</a>
73
- </li>
74
- {{{end}}}
1
+ {{{ if privileges.editable }}}
2
+ <li <!-- IF locked -->hidden<!-- ENDIF locked -->>
3
+ <a component="topic/lock" href="#" class="dropdown-item <!-- IF locked -->hidden<!-- ENDIF locked -->" role="menuitem"><i class="fa fa-fw fa-lock"></i> [[topic:thread-tools.lock]]</a>
4
+ </li>
5
+
6
+ <li <!-- IF !locked -->hidden<!-- ENDIF !locked -->>
7
+ <a component="topic/unlock" href="#" class="dropdown-item <!-- IF !locked -->hidden<!-- ENDIF !locked -->" role="menuitem"><i class="fa fa-fw fa-unlock"></i> [[topic:thread-tools.unlock]]</a>
8
+ </li>
9
+
10
+ <li <!-- IF pinned -->hidden<!-- ENDIF pinned -->>
11
+ <a component="topic/pin" href="#" class="dropdown-item <!-- IF pinned -->hidden<!-- ENDIF pinned -->" role="menuitem"><i class="fa fa-fw fa-thumb-tack"></i> [[topic:thread-tools.pin]]</a>
12
+ </li>
13
+
14
+ <li <!-- IF !pinned -->hidden<!-- ENDIF !pinned -->>
15
+ <a component="topic/unpin" href="#" class="dropdown-item <!-- IF !pinned -->hidden<!-- ENDIF !pinned -->" role="menuitem"><i class="fa fa-fw fa-thumb-tack fa-rotate-90"></i> [[topic:thread-tools.unpin]]</a>
16
+ </li>
17
+
18
+ <li>
19
+ <a component="topic/move" class="dropdown-item" href="#" role="menuitem"><i class="fa fa-fw fa-arrows"></i> [[topic:thread-tools.move]]</a>
20
+ </li>
21
+
22
+ <li>
23
+ <a component="topic/merge" class="dropdown-item" href="#" role="menuitem"><i class="fa fa-fw fa-code-fork"></i> [[topic:thread-tools.merge]]</a>
24
+ </li>
25
+
26
+ <li>
27
+ <a component="topic/fork" class="dropdown-item" href="#" role="menuitem"><i class="fa fa-fw fa-code-fork"></i> [[topic:thread-tools.fork]]</a>
28
+ </li>
29
+
30
+ <li>
31
+ <a component="topic/tag" class="dropdown-item" href="#" role="menuitem"><i class="fa fa-fw fa-tag"></i> [[topic:thread-tools.tag]]</a>
32
+ </li>
33
+
34
+ {{{ if !scheduled }}}
35
+ <li>
36
+ <a component="topic/move-posts" class="dropdown-item" href="#" role="menuitem"><i class="fa fa-fw fa-arrows"></i> [[topic:thread-tools.move-posts]]</a>
37
+ </li>
38
+ {{{ end }}}
39
+
40
+ <li>
41
+ <a component="topic/mark-unread-for-all" class="dropdown-item" href="#" role="menuitem"><i class="fa fa-fw fa-inbox"></i> [[topic:thread-tools.markAsUnreadForAll]]</a>
42
+ </li>
43
+
44
+ <li class="dropdown-divider"></li>
45
+ {{{ end }}}
46
+
47
+ <!-- IF privileges.deletable -->
48
+ <li <!-- IF deleted -->hidden<!-- ENDIF deleted -->>
49
+ <a component="topic/delete" href="#" class="dropdown-item <!-- IF deleted -->hidden<!-- ENDIF deleted -->" role="menuitem"><i class="fa fa-fw fa-trash-o"></i> [[topic:thread-tools.delete]]</a>
50
+ </li>
51
+
52
+ {{{ if !scheduled }}}
53
+ <li <!-- IF !deleted -->hidden<!-- ENDIF !deleted -->>
54
+ <a component="topic/restore" href="#" class="dropdown-item <!-- IF !deleted -->hidden<!-- ENDIF !deleted -->" role="menuitem"><i class="fa fa-fw fa-history"></i> [[topic:thread-tools.restore]]</a>
55
+ </li>
56
+ {{{ end }}}
57
+
58
+ <!-- IF privileges.purge -->
59
+ <li <!-- IF !deleted -->hidden<!-- ENDIF !deleted -->>
60
+ <a component="topic/purge" href="#" class="dropdown-item <!-- IF !deleted -->hidden<!-- ENDIF !deleted -->" role="menuitem"><i class="fa fa-fw fa-eraser"></i> [[topic:thread-tools.purge]]</a>
61
+ </li>
62
+ <!-- END -->
63
+
64
+ <!-- IF privileges.isAdminOrMod -->
65
+ <li>
66
+ <a component="topic/delete/posts" class="dropdown-item" href="#" role="menuitem"><i class="fa fa-fw fa-trash-o"></i> [[topic:thread-tools.delete-posts]]</a>
67
+ </li>
68
+ <!-- ENDIF privileges.isAdminOrMod -->
69
+
70
+ {{{each thread_tools}}}
71
+ <li>
72
+ <a href="#" class="dropdown-item {thread_tools.class}" role="menuitem"><i class="fa fa-fw {thread_tools.icon}"></i> {thread_tools.title}</a>
73
+ </li>
74
+ {{{end}}}
75
75
  <!-- ENDIF privileges.deletable -->