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.
- package/.eslintrc +2 -2
- package/README.md +20 -20
- package/lib/controllers.js +24 -24
- package/library.js +97 -97
- package/package.json +52 -52
- package/plugin.json +20 -20
- package/public/.eslintrc +2 -2
- package/public/admin.js +15 -15
- package/public/modules/autohidingnavbar.js +220 -220
- package/public/modules/mobile-menu.js +190 -190
- package/public/modules/taskbar.js +65 -65
- package/public/persona.js +257 -257
- package/public/settings.js +53 -53
- package/scss/account.scss +336 -336
- package/scss/categories.scss +205 -205
- package/scss/category.scss +161 -161
- package/scss/chats.scss +14 -14
- package/scss/flags.scss +42 -42
- package/scss/footer.scss +16 -16
- package/scss/groups.scss +166 -166
- package/scss/header.scss +229 -361
- package/scss/keyframes.scss +152 -152
- package/scss/mixins.scss +129 -129
- package/scss/mobile.scss +222 -331
- package/scss/modules/composer.scss +20 -20
- package/scss/modules/cookie-consent.scss +12 -12
- package/scss/modules/fab.scss +32 -32
- package/scss/modules/morph.scss +268 -268
- package/scss/modules/necro-post.scss +8 -8
- package/scss/modules/nprogress.scss +80 -80
- package/scss/modules/taskbar.scss +160 -160
- package/scss/modules/user-menu.scss +7 -7
- package/scss/modules/usercard.scss +64 -64
- package/scss/noscript.scss +80 -80
- package/scss/overrides.scss +39 -39
- package/scss/persona.scss +34 -34
- package/scss/posts_list.scss +127 -127
- package/scss/search.scss +48 -48
- package/scss/style.scss +256 -256
- package/scss/tags.scss +10 -10
- package/scss/topic.scss +571 -571
- package/scss/topics_list.scss +16 -16
- package/scss/variables.scss +6 -6
- package/templates/account/blocks.tpl +46 -46
- package/templates/account/categories.tpl +28 -28
- package/templates/account/consent.tpl +68 -68
- package/templates/account/edit/password.tpl +29 -29
- package/templates/account/edit/username.tpl +25 -25
- package/templates/account/edit.tpl +136 -136
- package/templates/account/followers.tpl +17 -17
- package/templates/account/following.tpl +17 -17
- package/templates/account/groups.tpl +16 -16
- package/templates/account/info.tpl +291 -291
- package/templates/account/posts.tpl +18 -18
- package/templates/account/profile.tpl +166 -166
- package/templates/account/sessions.tpl +31 -31
- package/templates/account/settings.tpl +251 -251
- package/templates/account/tags.tpl +9 -9
- package/templates/account/theme.tpl +25 -25
- package/templates/account/topics.tpl +29 -29
- package/templates/account/uploads.tpl +42 -42
- package/templates/admin/plugins/persona.tpl +24 -24
- package/templates/categories.tpl +31 -31
- package/templates/category.tpl +63 -63
- package/templates/flags/detail.tpl +208 -208
- package/templates/flags/list.tpl +71 -71
- package/templates/footer.tpl +11 -11
- package/templates/groups/details.tpl +77 -77
- package/templates/groups/list.tpl +48 -48
- package/templates/groups/members.tpl +5 -5
- package/templates/header.tpl +47 -47
- package/templates/modules/taskbar.tpl +2 -2
- package/templates/modules/usercard.tpl +36 -36
- package/templates/notifications.tpl +66 -66
- package/templates/partials/account/category-item.tpl +23 -23
- package/templates/partials/account/header.tpl +47 -47
- package/templates/partials/account/menu.tpl +108 -108
- package/templates/partials/breadcrumbs.tpl +18 -18
- package/templates/partials/buttons/newTopic.tpl +22 -22
- package/templates/partials/categories/item.tpl +60 -60
- package/templates/partials/categories/lastpost.tpl +26 -26
- package/templates/partials/category/filter-dropdown-content.tpl +31 -31
- package/templates/partials/category/selector-dropdown-content.tpl +32 -32
- package/templates/partials/category/sort.tpl +14 -14
- package/templates/partials/category/subcategory.tpl +17 -17
- package/templates/partials/category/tags.tpl +3 -3
- package/templates/partials/category/tools.tpl +86 -86
- package/templates/partials/category/watch.tpl +55 -55
- package/templates/partials/chats-menu.tpl +41 -40
- package/templates/partials/cookie-consent.tpl +4 -4
- package/templates/partials/flags/filters.tpl +173 -173
- package/templates/partials/groups/admin.tpl +200 -200
- package/templates/partials/groups/filter-dropdown-content.tpl +24 -24
- package/templates/partials/groups/list.tpl +20 -20
- package/templates/partials/groups/memberlist.tpl +42 -42
- package/templates/partials/header/chats.tpl +18 -18
- package/templates/partials/header/notifications.tpl +49 -19
- package/templates/partials/header/search.tpl +24 -24
- package/templates/partials/header/user-menu.tpl +96 -96
- package/templates/partials/menu.tpl +128 -128
- package/templates/partials/notifications_list.tpl +44 -30
- package/templates/partials/paginator.tpl +44 -44
- package/templates/partials/post_bar.tpl +20 -20
- package/templates/partials/posts_list.tpl +7 -7
- package/templates/partials/posts_list_item.tpl +31 -31
- package/templates/partials/quick-search-results.tpl +33 -33
- package/templates/partials/search-filters.tpl +183 -183
- package/templates/partials/search-results.tpl +54 -54
- package/templates/partials/slideout-menu.tpl +4 -4
- package/templates/partials/tags/filter-dropdown-content.tpl +33 -33
- package/templates/partials/tags/watch.tpl +35 -35
- package/templates/partials/tags_list.tpl +4 -4
- package/templates/partials/toast.tpl +19 -19
- package/templates/partials/topic/event.tpl +12 -12
- package/templates/partials/topic/navigation-post.tpl +11 -11
- package/templates/partials/topic/navigator.tpl +39 -39
- package/templates/partials/topic/necro-post.tpl +2 -2
- package/templates/partials/topic/post-menu-list.tpl +132 -132
- package/templates/partials/topic/post-menu.tpl +4 -4
- package/templates/partials/topic/post.tpl +128 -128
- package/templates/partials/topic/quickreply.tpl +28 -28
- package/templates/partials/topic/reply-button.tpl +26 -26
- package/templates/partials/topic/selection-tooltip.tpl +2 -2
- package/templates/partials/topic/sort.tpl +9 -9
- package/templates/partials/topic/stats.tpl +11 -11
- package/templates/partials/topic/tags.tpl +2 -2
- package/templates/partials/topic/tools.tpl +7 -7
- package/templates/partials/topic/topic-menu-list.tpl +74 -74
- package/templates/partials/topic/watch.tpl +47 -47
- package/templates/partials/topic-filters.tpl +11 -11
- package/templates/partials/topic-terms.tpl +11 -11
- package/templates/partials/topics_list.tpl +117 -117
- package/templates/partials/users/filter-dropdown-content.tpl +20 -20
- package/templates/partials/users/item.tpl +43 -43
- package/templates/partials/users_list.tpl +14 -14
- package/templates/partials/users_list_menu.tpl +20 -20
- package/templates/popular.tpl +35 -35
- package/templates/recent.tpl +37 -37
- package/templates/search.tpl +47 -47
- package/templates/tag.tpl +34 -34
- package/templates/tags.tpl +32 -32
- package/templates/top.tpl +35 -35
- package/templates/topic.tpl +129 -129
- package/templates/unread.tpl +37 -37
- package/templates/users.tpl +34 -34
|
@@ -1,184 +1,184 @@
|
|
|
1
|
-
<div class="d-flex flex-wrap gap-2 align-items-center" component="search/filters">
|
|
2
|
-
<!-- category filter -->
|
|
3
|
-
<div class="post-search-item">
|
|
4
|
-
<div component="category/filter" class="dropdown" data-filter-name="category">
|
|
5
|
-
<a component="category/filter/button" class="filter-btn btn btn-light btn-sm border {{{ if filters.categories.active }}}active-filter{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-haspopup="true" aria-expanded="false">
|
|
6
|
-
<span class="filter-label">{{{ if filters.categories.active }}}{filters.categories.label}{{{ else }}}[[search:categories]]{{{ end }}}</span>
|
|
7
|
-
<span class="caret"></span>
|
|
8
|
-
</a>
|
|
9
|
-
|
|
10
|
-
<ul class="dropdown-menu p-1 text-sm" role="menu">
|
|
11
|
-
<li class="px-3 py-1 mb-2 d-flex flex-column gap-2">
|
|
12
|
-
<div component="category-selector-search">
|
|
13
|
-
<input type="text" class="form-control" component="category/filter/search" placeholder="[[search:type-a-category]]">
|
|
14
|
-
</div>
|
|
15
|
-
</li>
|
|
16
|
-
<div component="category/list" class="overflow-auto" style="max-height: 350px;"></div>
|
|
17
|
-
<div class="px-3 py-1">
|
|
18
|
-
<div class="form-check">
|
|
19
|
-
<input id="search-children" class="form-check-input" type="checkbox"/>
|
|
20
|
-
<label class="form-check-label" for="search-children">[[search:search-child-categories]]</label>
|
|
21
|
-
</div>
|
|
22
|
-
</div>
|
|
23
|
-
</ul>
|
|
24
|
-
</div>
|
|
25
|
-
</div>
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
<!-- tag filter -->
|
|
29
|
-
<div class="post-search-item">
|
|
30
|
-
<div component="tag/filter" class="dropdown" data-filter-name="tag">
|
|
31
|
-
<a component="tag/filter/button" class="filter-btn btn btn-light btn-sm border {{{ if filters.tags.active }}}active-filter{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-haspopup="true" aria-expanded="false">
|
|
32
|
-
<span class="filter-label">{{{ if filters.tags.active }}}{filters.tags.label}{{{ else }}}[[search:tags]]{{{ end }}}</span>
|
|
33
|
-
<span class="caret"></span>
|
|
34
|
-
</a>
|
|
35
|
-
|
|
36
|
-
<ul class="dropdown-menu p-1 text-sm" style="width: 350px;" role="menu">
|
|
37
|
-
<li class="px-3 py-1 d-flex flex-column gap-2">
|
|
38
|
-
<input type="text" class="form-control" component="tag/filter/search" placeholder="[[search:type-a-tag]]">
|
|
39
|
-
<div component="tag/filter/selected" class="d-flex flex-wrap gap-2">
|
|
40
|
-
{{{ each tagFilterSelected }}}
|
|
41
|
-
<div class="d-flex px-2 py-1 rounded-1 text-bg-primary gap-2 align-items-center text-sm">
|
|
42
|
-
<div>{./valueEscaped}</div>
|
|
43
|
-
<button component="tag/filter/delete" data-tag="{./valueEscaped}" class="btn btn-primary btn-sm py-0"><i class="fa fa-times fa-xs"></i></button>
|
|
44
|
-
</div>
|
|
45
|
-
{{{ end }}}
|
|
46
|
-
</div>
|
|
47
|
-
<hr/>
|
|
48
|
-
<div component="tag/filter/results" class="d-flex flex-wrap gap-2">
|
|
49
|
-
{{{ each tagFilterResults }}}
|
|
50
|
-
<button class="btn btn-light btn-sm border" data-tag="{./valueEscaped}">{./valueEscaped}</button>
|
|
51
|
-
{{{ end }}}
|
|
52
|
-
</div>
|
|
53
|
-
</li>
|
|
54
|
-
</ul>
|
|
55
|
-
</div>
|
|
56
|
-
</div>
|
|
57
|
-
|
|
58
|
-
<!-- user name filter -->
|
|
59
|
-
<div class="post-search-item">
|
|
60
|
-
<div component="user/filter" class="dropdown" data-filter-name="user">
|
|
61
|
-
<a component="user/filter/button" class="filter-btn btn btn-light btn-sm border {{{ if filters.users.active }}}active-filter{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-haspopup="true" aria-expanded="false">
|
|
62
|
-
<span class="filter-label">{{{ if filters.users.active }}}{filters.users.label}{{{ else }}}[[search:posted-by]]{{{ end }}}</span>
|
|
63
|
-
<span class="caret"></span>
|
|
64
|
-
</a>
|
|
65
|
-
|
|
66
|
-
<ul class="dropdown-menu p-1 text-sm" style="width: 350px;" role="menu">
|
|
67
|
-
<li class="px-3 py-1 d-flex flex-column gap-2">
|
|
68
|
-
<input type="text" class="form-control" component="user/filter/search" placeholder="[[search:type-a-username]]">
|
|
69
|
-
<div component="user/filter/selected" class="d-flex flex-wrap gap-2">
|
|
70
|
-
{{{ each userFilterSelected }}}
|
|
71
|
-
<div class="d-flex px-2 py-1 rounded-1 text-bg-primary gap-2 align-items-center text-sm">
|
|
72
|
-
{buildAvatar(@value, "16px", true)} {./username}
|
|
73
|
-
<button component="user/filter/delete" data-uid="{./uid}" class="btn btn-primary btn-sm py-0"><i class="fa fa-times fa-xs"></i></button>
|
|
74
|
-
</div>
|
|
75
|
-
{{{ end }}}
|
|
76
|
-
</div>
|
|
77
|
-
<hr/>
|
|
78
|
-
<div component="user/filter/results" class="d-flex flex-wrap gap-2">
|
|
79
|
-
{{{ each userFilterResults }}}
|
|
80
|
-
<button class="btn btn-light btn-sm border" data-uid="{./uid}" data-username="{./username}">{buildAvatar(@value, "16px", true)} {./username}</button>
|
|
81
|
-
{{{ end }}}
|
|
82
|
-
</div>
|
|
83
|
-
</li>
|
|
84
|
-
</ul>
|
|
85
|
-
</div>
|
|
86
|
-
</div>
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
<!-- reply count filter -->
|
|
90
|
-
<div class="post-search-item">
|
|
91
|
-
<div class="dropdown" data-filter-name="replies">
|
|
92
|
-
<a id="reply-count-button" class="filter-btn btn btn-light btn-sm border {{{ if filters.replies.active }}}active-filter{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
93
|
-
<span class="filter-label">{{{ if filters.replies.active }}}{filters.replies.label}{{{ else }}}[[search:replies]]{{{ end }}}</span>
|
|
94
|
-
<span class="caret"></span>
|
|
95
|
-
</a>
|
|
96
|
-
|
|
97
|
-
<ul class="dropdown-menu p-1 text-sm" style="width: 300px;" role="menu">
|
|
98
|
-
<li class="px-3 py-1 d-flex flex-nowrap gap-2">
|
|
99
|
-
<select id="reply-count-filter" class="form-select py-2 ps-2 pe-3">
|
|
100
|
-
<option value="atleast">[[search:at-least]]</option>
|
|
101
|
-
<option value="atmost">[[search:at-most]]</option>
|
|
102
|
-
</select>
|
|
103
|
-
<input id="reply-count" type="number" min="0" class="form-control py-2 ps-2 pe-3" />
|
|
104
|
-
</li>
|
|
105
|
-
</ul>
|
|
106
|
-
</div>
|
|
107
|
-
</div>
|
|
108
|
-
|
|
109
|
-
<!-- time filter -->
|
|
110
|
-
<div class="post-search-item">
|
|
111
|
-
<div class="dropdown" data-filter-name="time">
|
|
112
|
-
<a id="post-time-button" class="filter-btn btn btn-light btn-sm border {{{ if filters.time.active }}}active-filter{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
113
|
-
<span class="filter-label">{{{ if filters.time.active }}}{filters.time.label}{{{ else }}}[[search:time]]{{{ end }}}</span>
|
|
114
|
-
<span class="caret"></span>
|
|
115
|
-
</a>
|
|
116
|
-
|
|
117
|
-
<ul class="dropdown-menu p-1 text-sm" style="width: 350px;" role="menu">
|
|
118
|
-
<li class="px-3 py-1 d-flex flex-nowrap gap-2">
|
|
119
|
-
<select id="post-time-filter" class="form-select py-2 ps-2 pe-3">
|
|
120
|
-
<option value="newer">[[search:newer-than]]</option>
|
|
121
|
-
<option value="older">[[search:older-than]]</option>
|
|
122
|
-
</select>
|
|
123
|
-
<select id="post-time-range" class="form-select py-2 ps-2 pe-3">
|
|
124
|
-
<option value="">[[search:any-date]]</option>
|
|
125
|
-
<option value="86400">[[search:yesterday]]</option>
|
|
126
|
-
<option value="604800">[[search:one-week]]</option>
|
|
127
|
-
<option value="1209600">[[search:two-weeks]]</option>
|
|
128
|
-
<option value="2592000">[[search:one-month]]</option>
|
|
129
|
-
<option value="7776000">[[search:three-months]]</option>
|
|
130
|
-
<option value="15552000">[[search:six-months]]</option>
|
|
131
|
-
<option value="31104000">[[search:one-year]]</option>
|
|
132
|
-
</select>
|
|
133
|
-
</li>
|
|
134
|
-
</ul>
|
|
135
|
-
</div>
|
|
136
|
-
</div>
|
|
137
|
-
|
|
138
|
-
<!-- sort filter -->
|
|
139
|
-
<div class="post-search-item">
|
|
140
|
-
<div class="dropdown" data-filter-name="sort">
|
|
141
|
-
<a id="sort-by-button" class="filter-btn btn btn-light btn-sm border {{{ if filters.sort.active }}}active-filter{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
142
|
-
<span class="filter-label">{{{ if filters.sort.active }}}{filters.sort.label}{{{ else }}}[[search:sort]]{{{ end }}}</span>
|
|
143
|
-
<span class="caret"></span>
|
|
144
|
-
</a>
|
|
145
|
-
|
|
146
|
-
<ul class="dropdown-menu p-1 text-sm" style="width: 250px;" role="menu">
|
|
147
|
-
<li class="px-3 py-1 d-flex flex-column gap-2">
|
|
148
|
-
<select id="post-sort-by" class="form-select py-2 ps-2 pe-3">
|
|
149
|
-
<option value="relevance">[[search:relevance]]</option>
|
|
150
|
-
<option value="timestamp">[[search:post-time]]</option>
|
|
151
|
-
<option value="votes">[[search:votes]]</option>
|
|
152
|
-
<option value="topic.lastposttime">[[search:last-reply-time]]</option>
|
|
153
|
-
<option value="topic.title">[[search:topic-title]]</option>
|
|
154
|
-
<option value="topic.postcount">[[search:number-of-replies]]</option>
|
|
155
|
-
<option value="topic.viewcount">[[search:number-of-views]]</option>
|
|
156
|
-
<option value="topic.votes">[[search:topic-votes]]</option>
|
|
157
|
-
<option value="topic.timestamp">[[search:topic-start-date]]</option>
|
|
158
|
-
<option value="user.username">[[search:username]]</option>
|
|
159
|
-
<option value="category.name">[[search:category]]</option>
|
|
160
|
-
</select>
|
|
161
|
-
<select id="post-sort-direction" class="form-select py-2 ps-2 pe-3">
|
|
162
|
-
<option value="desc">[[search:descending]]</option>
|
|
163
|
-
<option value="asc">[[search:ascending]]</option>
|
|
164
|
-
</select>
|
|
165
|
-
</li>
|
|
166
|
-
</ul>
|
|
167
|
-
</div>
|
|
168
|
-
</div>
|
|
169
|
-
|
|
170
|
-
<!-- save & reset preferences -->
|
|
171
|
-
<div class="post-search-item">
|
|
172
|
-
<div class="dropdown">
|
|
173
|
-
<a class="btn btn-light btn-sm border border-gray-300 dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">[[search:save]] <span class="caret"></span>
|
|
174
|
-
</a>
|
|
175
|
-
|
|
176
|
-
<ul class="dropdown-menu p-1 text-sm" style="width: 300px;" role="menu">
|
|
177
|
-
<li class="px-3 py-1 d-flex flex-column gap-2">
|
|
178
|
-
<button id="save-preferences" class="btn btn-primary">[[search:save-preferences]]</button>
|
|
179
|
-
<button id="clear-preferences" class="btn btn-ghost border">[[search:clear-preferences]]</button>
|
|
180
|
-
</li>
|
|
181
|
-
</ul>
|
|
182
|
-
</div>
|
|
183
|
-
</div>
|
|
1
|
+
<div class="d-flex flex-wrap gap-2 align-items-center" component="search/filters">
|
|
2
|
+
<!-- category filter -->
|
|
3
|
+
<div class="post-search-item">
|
|
4
|
+
<div component="category/filter" class="dropdown" data-filter-name="category">
|
|
5
|
+
<a component="category/filter/button" class="filter-btn btn btn-light btn-sm border {{{ if filters.categories.active }}}active-filter{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-haspopup="true" aria-expanded="false">
|
|
6
|
+
<span class="filter-label">{{{ if filters.categories.active }}}{filters.categories.label}{{{ else }}}[[search:categories]]{{{ end }}}</span>
|
|
7
|
+
<span class="caret"></span>
|
|
8
|
+
</a>
|
|
9
|
+
|
|
10
|
+
<ul class="dropdown-menu p-1 text-sm" role="menu">
|
|
11
|
+
<li class="px-3 py-1 mb-2 d-flex flex-column gap-2">
|
|
12
|
+
<div component="category-selector-search">
|
|
13
|
+
<input type="text" class="form-control" component="category/filter/search" placeholder="[[search:type-a-category]]">
|
|
14
|
+
</div>
|
|
15
|
+
</li>
|
|
16
|
+
<div component="category/list" class="overflow-auto" style="max-height: 350px;"></div>
|
|
17
|
+
<div class="px-3 py-1">
|
|
18
|
+
<div class="form-check">
|
|
19
|
+
<input id="search-children" class="form-check-input" type="checkbox"/>
|
|
20
|
+
<label class="form-check-label" for="search-children">[[search:search-child-categories]]</label>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
</ul>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
<!-- tag filter -->
|
|
29
|
+
<div class="post-search-item">
|
|
30
|
+
<div component="tag/filter" class="dropdown" data-filter-name="tag">
|
|
31
|
+
<a component="tag/filter/button" class="filter-btn btn btn-light btn-sm border {{{ if filters.tags.active }}}active-filter{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-haspopup="true" aria-expanded="false">
|
|
32
|
+
<span class="filter-label">{{{ if filters.tags.active }}}{filters.tags.label}{{{ else }}}[[search:tags]]{{{ end }}}</span>
|
|
33
|
+
<span class="caret"></span>
|
|
34
|
+
</a>
|
|
35
|
+
|
|
36
|
+
<ul class="dropdown-menu p-1 text-sm" style="width: 350px;" role="menu">
|
|
37
|
+
<li class="px-3 py-1 d-flex flex-column gap-2">
|
|
38
|
+
<input type="text" class="form-control" component="tag/filter/search" placeholder="[[search:type-a-tag]]">
|
|
39
|
+
<div component="tag/filter/selected" class="d-flex flex-wrap gap-2">
|
|
40
|
+
{{{ each tagFilterSelected }}}
|
|
41
|
+
<div class="d-flex px-2 py-1 rounded-1 text-bg-primary gap-2 align-items-center text-sm">
|
|
42
|
+
<div>{./valueEscaped}</div>
|
|
43
|
+
<button component="tag/filter/delete" data-tag="{./valueEscaped}" class="btn btn-primary btn-sm py-0"><i class="fa fa-times fa-xs"></i></button>
|
|
44
|
+
</div>
|
|
45
|
+
{{{ end }}}
|
|
46
|
+
</div>
|
|
47
|
+
<hr/>
|
|
48
|
+
<div component="tag/filter/results" class="d-flex flex-wrap gap-2">
|
|
49
|
+
{{{ each tagFilterResults }}}
|
|
50
|
+
<button class="btn btn-light btn-sm border" data-tag="{./valueEscaped}">{./valueEscaped}</button>
|
|
51
|
+
{{{ end }}}
|
|
52
|
+
</div>
|
|
53
|
+
</li>
|
|
54
|
+
</ul>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
|
|
58
|
+
<!-- user name filter -->
|
|
59
|
+
<div class="post-search-item">
|
|
60
|
+
<div component="user/filter" class="dropdown" data-filter-name="user">
|
|
61
|
+
<a component="user/filter/button" class="filter-btn btn btn-light btn-sm border {{{ if filters.users.active }}}active-filter{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-haspopup="true" aria-expanded="false">
|
|
62
|
+
<span class="filter-label">{{{ if filters.users.active }}}{filters.users.label}{{{ else }}}[[search:posted-by]]{{{ end }}}</span>
|
|
63
|
+
<span class="caret"></span>
|
|
64
|
+
</a>
|
|
65
|
+
|
|
66
|
+
<ul class="dropdown-menu p-1 text-sm" style="width: 350px;" role="menu">
|
|
67
|
+
<li class="px-3 py-1 d-flex flex-column gap-2">
|
|
68
|
+
<input type="text" class="form-control" component="user/filter/search" placeholder="[[search:type-a-username]]">
|
|
69
|
+
<div component="user/filter/selected" class="d-flex flex-wrap gap-2">
|
|
70
|
+
{{{ each userFilterSelected }}}
|
|
71
|
+
<div class="d-flex px-2 py-1 rounded-1 text-bg-primary gap-2 align-items-center text-sm">
|
|
72
|
+
{buildAvatar(@value, "16px", true)} {./username}
|
|
73
|
+
<button component="user/filter/delete" data-uid="{./uid}" class="btn btn-primary btn-sm py-0"><i class="fa fa-times fa-xs"></i></button>
|
|
74
|
+
</div>
|
|
75
|
+
{{{ end }}}
|
|
76
|
+
</div>
|
|
77
|
+
<hr/>
|
|
78
|
+
<div component="user/filter/results" class="d-flex flex-wrap gap-2">
|
|
79
|
+
{{{ each userFilterResults }}}
|
|
80
|
+
<button class="btn btn-light btn-sm border" data-uid="{./uid}" data-username="{./username}">{buildAvatar(@value, "16px", true)} {./username}</button>
|
|
81
|
+
{{{ end }}}
|
|
82
|
+
</div>
|
|
83
|
+
</li>
|
|
84
|
+
</ul>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
<!-- reply count filter -->
|
|
90
|
+
<div class="post-search-item">
|
|
91
|
+
<div class="dropdown" data-filter-name="replies">
|
|
92
|
+
<a id="reply-count-button" class="filter-btn btn btn-light btn-sm border {{{ if filters.replies.active }}}active-filter{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
93
|
+
<span class="filter-label">{{{ if filters.replies.active }}}{filters.replies.label}{{{ else }}}[[search:replies]]{{{ end }}}</span>
|
|
94
|
+
<span class="caret"></span>
|
|
95
|
+
</a>
|
|
96
|
+
|
|
97
|
+
<ul class="dropdown-menu p-1 text-sm" style="width: 300px;" role="menu">
|
|
98
|
+
<li class="px-3 py-1 d-flex flex-nowrap gap-2">
|
|
99
|
+
<select id="reply-count-filter" class="form-select py-2 ps-2 pe-3">
|
|
100
|
+
<option value="atleast">[[search:at-least]]</option>
|
|
101
|
+
<option value="atmost">[[search:at-most]]</option>
|
|
102
|
+
</select>
|
|
103
|
+
<input id="reply-count" type="number" min="0" class="form-control py-2 ps-2 pe-3" />
|
|
104
|
+
</li>
|
|
105
|
+
</ul>
|
|
106
|
+
</div>
|
|
107
|
+
</div>
|
|
108
|
+
|
|
109
|
+
<!-- time filter -->
|
|
110
|
+
<div class="post-search-item">
|
|
111
|
+
<div class="dropdown" data-filter-name="time">
|
|
112
|
+
<a id="post-time-button" class="filter-btn btn btn-light btn-sm border {{{ if filters.time.active }}}active-filter{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
113
|
+
<span class="filter-label">{{{ if filters.time.active }}}{filters.time.label}{{{ else }}}[[search:time]]{{{ end }}}</span>
|
|
114
|
+
<span class="caret"></span>
|
|
115
|
+
</a>
|
|
116
|
+
|
|
117
|
+
<ul class="dropdown-menu p-1 text-sm" style="width: 350px;" role="menu">
|
|
118
|
+
<li class="px-3 py-1 d-flex flex-nowrap gap-2">
|
|
119
|
+
<select id="post-time-filter" class="form-select py-2 ps-2 pe-3">
|
|
120
|
+
<option value="newer">[[search:newer-than]]</option>
|
|
121
|
+
<option value="older">[[search:older-than]]</option>
|
|
122
|
+
</select>
|
|
123
|
+
<select id="post-time-range" class="form-select py-2 ps-2 pe-3">
|
|
124
|
+
<option value="">[[search:any-date]]</option>
|
|
125
|
+
<option value="86400">[[search:yesterday]]</option>
|
|
126
|
+
<option value="604800">[[search:one-week]]</option>
|
|
127
|
+
<option value="1209600">[[search:two-weeks]]</option>
|
|
128
|
+
<option value="2592000">[[search:one-month]]</option>
|
|
129
|
+
<option value="7776000">[[search:three-months]]</option>
|
|
130
|
+
<option value="15552000">[[search:six-months]]</option>
|
|
131
|
+
<option value="31104000">[[search:one-year]]</option>
|
|
132
|
+
</select>
|
|
133
|
+
</li>
|
|
134
|
+
</ul>
|
|
135
|
+
</div>
|
|
136
|
+
</div>
|
|
137
|
+
|
|
138
|
+
<!-- sort filter -->
|
|
139
|
+
<div class="post-search-item">
|
|
140
|
+
<div class="dropdown" data-filter-name="sort">
|
|
141
|
+
<a id="sort-by-button" class="filter-btn btn btn-light btn-sm border {{{ if filters.sort.active }}}active-filter{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
142
|
+
<span class="filter-label">{{{ if filters.sort.active }}}{filters.sort.label}{{{ else }}}[[search:sort]]{{{ end }}}</span>
|
|
143
|
+
<span class="caret"></span>
|
|
144
|
+
</a>
|
|
145
|
+
|
|
146
|
+
<ul class="dropdown-menu p-1 text-sm" style="width: 250px;" role="menu">
|
|
147
|
+
<li class="px-3 py-1 d-flex flex-column gap-2">
|
|
148
|
+
<select id="post-sort-by" class="form-select py-2 ps-2 pe-3">
|
|
149
|
+
<option value="relevance">[[search:relevance]]</option>
|
|
150
|
+
<option value="timestamp">[[search:post-time]]</option>
|
|
151
|
+
<option value="votes">[[search:votes]]</option>
|
|
152
|
+
<option value="topic.lastposttime">[[search:last-reply-time]]</option>
|
|
153
|
+
<option value="topic.title">[[search:topic-title]]</option>
|
|
154
|
+
<option value="topic.postcount">[[search:number-of-replies]]</option>
|
|
155
|
+
<option value="topic.viewcount">[[search:number-of-views]]</option>
|
|
156
|
+
<option value="topic.votes">[[search:topic-votes]]</option>
|
|
157
|
+
<option value="topic.timestamp">[[search:topic-start-date]]</option>
|
|
158
|
+
<option value="user.username">[[search:username]]</option>
|
|
159
|
+
<option value="category.name">[[search:category]]</option>
|
|
160
|
+
</select>
|
|
161
|
+
<select id="post-sort-direction" class="form-select py-2 ps-2 pe-3">
|
|
162
|
+
<option value="desc">[[search:descending]]</option>
|
|
163
|
+
<option value="asc">[[search:ascending]]</option>
|
|
164
|
+
</select>
|
|
165
|
+
</li>
|
|
166
|
+
</ul>
|
|
167
|
+
</div>
|
|
168
|
+
</div>
|
|
169
|
+
|
|
170
|
+
<!-- save & reset preferences -->
|
|
171
|
+
<div class="post-search-item">
|
|
172
|
+
<div class="dropdown">
|
|
173
|
+
<a class="btn btn-light btn-sm border border-gray-300 dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">[[search:save]] <span class="caret"></span>
|
|
174
|
+
</a>
|
|
175
|
+
|
|
176
|
+
<ul class="dropdown-menu p-1 text-sm" style="width: 300px;" role="menu">
|
|
177
|
+
<li class="px-3 py-1 d-flex flex-column gap-2">
|
|
178
|
+
<button id="save-preferences" class="btn btn-primary">[[search:save-preferences]]</button>
|
|
179
|
+
<button id="clear-preferences" class="btn btn-ghost border">[[search:clear-preferences]]</button>
|
|
180
|
+
</li>
|
|
181
|
+
</ul>
|
|
182
|
+
</div>
|
|
183
|
+
</div>
|
|
184
184
|
</div>
|
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
<div id="results" class="search-results col-md-12" data-search-query="{search_query}">
|
|
2
|
-
{{{ if matchCount }}}
|
|
3
|
-
<div class="alert alert-info">[[search:results-matching, {matchCount}, {search_query}, {time}]] </div>
|
|
4
|
-
{{{ else }}}
|
|
5
|
-
{{{ if search_query }}}
|
|
6
|
-
<div class="alert alert-warning">[[search:no-matches]]</div>
|
|
7
|
-
{{{ end }}}
|
|
8
|
-
{{{ end }}}
|
|
9
|
-
|
|
10
|
-
{{{each posts}}}
|
|
11
|
-
<div class="topic-row card clearfix mb-3">
|
|
12
|
-
<div class="card-body">
|
|
13
|
-
<div>
|
|
14
|
-
<a href="{config.relative_path}/user/{./user.userslug}">{buildAvatar(./user, "24px", true)}</a>
|
|
15
|
-
<span class="search-result-text search-result-title"><a href="{config.relative_path}/post/{posts.pid}">{./topic.title}</a></span>
|
|
16
|
-
</div>
|
|
17
|
-
|
|
18
|
-
{{{ if showAsPosts }}}
|
|
19
|
-
<div class="search-result-text">
|
|
20
|
-
{./content}
|
|
21
|
-
<p class="fade-out"></p>
|
|
22
|
-
</div>
|
|
23
|
-
{{{ end }}}
|
|
24
|
-
|
|
25
|
-
<small class="post-info float-end">
|
|
26
|
-
<a href="{config.relative_path}/category/{./category.slug}">
|
|
27
|
-
<div class="category-item d-inline-block">
|
|
28
|
-
{buildCategoryIcon(./category, "24px", "rounded-circle")}
|
|
29
|
-
{./category.name}
|
|
30
|
-
</div>
|
|
31
|
-
</a> •
|
|
32
|
-
<span class="timeago" title="{./timestampISO}"></span>
|
|
33
|
-
</small>
|
|
34
|
-
</div>
|
|
35
|
-
</div>
|
|
36
|
-
{{{end}}}
|
|
37
|
-
|
|
38
|
-
{{{ if users.length }}}
|
|
39
|
-
<!-- IMPORT partials/users_list.tpl -->
|
|
40
|
-
{{{ end }}}
|
|
41
|
-
|
|
42
|
-
{{{ if tags.length }}}
|
|
43
|
-
<!-- IMPORT partials/tags_list.tpl -->
|
|
44
|
-
{{{ end }}}
|
|
45
|
-
|
|
46
|
-
{{{ if categories.length }}}
|
|
47
|
-
<ul class="categories">
|
|
48
|
-
{{{each categories}}}
|
|
49
|
-
<!-- IMPORT partials/categories/item.tpl -->
|
|
50
|
-
{{{end}}}
|
|
51
|
-
</ul>
|
|
52
|
-
{{{ end }}}
|
|
53
|
-
|
|
54
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
1
|
+
<div id="results" class="search-results col-md-12" data-search-query="{search_query}">
|
|
2
|
+
{{{ if matchCount }}}
|
|
3
|
+
<div class="alert alert-info">[[search:results-matching, {matchCount}, {search_query}, {time}]] </div>
|
|
4
|
+
{{{ else }}}
|
|
5
|
+
{{{ if search_query }}}
|
|
6
|
+
<div class="alert alert-warning">[[search:no-matches]]</div>
|
|
7
|
+
{{{ end }}}
|
|
8
|
+
{{{ end }}}
|
|
9
|
+
|
|
10
|
+
{{{each posts}}}
|
|
11
|
+
<div class="topic-row card clearfix mb-3">
|
|
12
|
+
<div class="card-body">
|
|
13
|
+
<div>
|
|
14
|
+
<a href="{config.relative_path}/user/{./user.userslug}">{buildAvatar(./user, "24px", true)}</a>
|
|
15
|
+
<span class="search-result-text search-result-title"><a href="{config.relative_path}/post/{posts.pid}">{./topic.title}</a></span>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
{{{ if showAsPosts }}}
|
|
19
|
+
<div class="search-result-text">
|
|
20
|
+
{./content}
|
|
21
|
+
<p class="fade-out"></p>
|
|
22
|
+
</div>
|
|
23
|
+
{{{ end }}}
|
|
24
|
+
|
|
25
|
+
<small class="post-info float-end">
|
|
26
|
+
<a href="{config.relative_path}/category/{./category.slug}">
|
|
27
|
+
<div class="category-item d-inline-block">
|
|
28
|
+
{buildCategoryIcon(./category, "24px", "rounded-circle")}
|
|
29
|
+
{./category.name}
|
|
30
|
+
</div>
|
|
31
|
+
</a> •
|
|
32
|
+
<span class="timeago" title="{./timestampISO}"></span>
|
|
33
|
+
</small>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
{{{end}}}
|
|
37
|
+
|
|
38
|
+
{{{ if users.length }}}
|
|
39
|
+
<!-- IMPORT partials/users_list.tpl -->
|
|
40
|
+
{{{ end }}}
|
|
41
|
+
|
|
42
|
+
{{{ if tags.length }}}
|
|
43
|
+
<!-- IMPORT partials/tags_list.tpl -->
|
|
44
|
+
{{{ end }}}
|
|
45
|
+
|
|
46
|
+
{{{ if categories.length }}}
|
|
47
|
+
<ul class="categories">
|
|
48
|
+
{{{each categories}}}
|
|
49
|
+
<!-- IMPORT partials/categories/item.tpl -->
|
|
50
|
+
{{{end}}}
|
|
51
|
+
</ul>
|
|
52
|
+
{{{ end }}}
|
|
53
|
+
|
|
54
|
+
<!-- IMPORT partials/paginator.tpl -->
|
|
55
55
|
</div>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<section class="menu-section" data-section="navigation">
|
|
2
|
-
<ul class="menu-section-list text-bg-dark"></ul>
|
|
3
|
-
</section>
|
|
4
|
-
|
|
1
|
+
<section class="menu-section" data-section="navigation">
|
|
2
|
+
<ul class="menu-section-list text-bg-dark list-unstyled"></ul>
|
|
3
|
+
</section>
|
|
4
|
+
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
<button type="button" class="btn btn-outline-secondary d-flex gap-2 dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
2
|
-
{{{ if selectedTag }}}
|
|
3
|
-
<span class="d-inline-flex align-items-center gap-1">
|
|
4
|
-
<i class="fa fa-fw fa-tags text-primary"></i>
|
|
5
|
-
<span class="visible-md-inline visible-lg-inline fw-semibold">{selectedTag.label}</span>
|
|
6
|
-
</span>
|
|
7
|
-
{{{ else }}}
|
|
8
|
-
<i class="fa fa-fw fa-tags text-primary"></i>
|
|
9
|
-
<span class="visible-md-inline visible-lg-inline fw-semibold">[[tags:all-tags]]</span>
|
|
10
|
-
{{{ end }}}
|
|
11
|
-
</button>
|
|
12
|
-
<div component="tag/filter/search" class="hidden position-absolute top-0">
|
|
13
|
-
<input type="text" class="form-control" placeholder="[[search:type-to-search]]" autocomplete="off">
|
|
14
|
-
</div>
|
|
15
|
-
<ul component="tag/filter/list" class="dropdown-menu overflow-auto" role="menu" style="max-height: 500px;">
|
|
16
|
-
<li role="presentation" data-tag="">
|
|
17
|
-
<a class="dropdown-item d-flex align-items-center gap-2" role="menuitem" href="#">
|
|
18
|
-
<span class="flex-grow-1">[[tags:all-tags]]</span>
|
|
19
|
-
<i component="tag/select/icon" class="flex-shrink-0 fa fa-fw fa-check {{{if selectedTag }}}invisible{{{ end }}}"></i>
|
|
20
|
-
</a>
|
|
21
|
-
</li>
|
|
22
|
-
{{{ each tagItems }}}
|
|
23
|
-
<li role="presentation" data-tag="{./valueEscaped}">
|
|
24
|
-
<a class="dropdown-item d-flex align-items-center gap-2" role="menuitem" href="#">
|
|
25
|
-
<span component="tag-markup" class="flex-grow-1">
|
|
26
|
-
<div class="d-inline-flex align-items-center gap-1">
|
|
27
|
-
{./valueEscaped}
|
|
28
|
-
</div>
|
|
29
|
-
</span>
|
|
30
|
-
<i component="tag/select/icon" class="flex-shrink-0 fa fa-fw fa-check {{{ if !./selected }}}invisible{{{ end }}}"></i>
|
|
31
|
-
</a>
|
|
32
|
-
</li>
|
|
33
|
-
{{{ end }}}
|
|
1
|
+
<button type="button" class="btn btn-outline-secondary d-flex gap-2 dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
2
|
+
{{{ if selectedTag }}}
|
|
3
|
+
<span class="d-inline-flex align-items-center gap-1">
|
|
4
|
+
<i class="fa fa-fw fa-tags text-primary"></i>
|
|
5
|
+
<span class="visible-md-inline visible-lg-inline fw-semibold">{selectedTag.label}</span>
|
|
6
|
+
</span>
|
|
7
|
+
{{{ else }}}
|
|
8
|
+
<i class="fa fa-fw fa-tags text-primary"></i>
|
|
9
|
+
<span class="visible-md-inline visible-lg-inline fw-semibold">[[tags:all-tags]]</span>
|
|
10
|
+
{{{ end }}}
|
|
11
|
+
</button>
|
|
12
|
+
<div component="tag/filter/search" class="hidden position-absolute top-0">
|
|
13
|
+
<input type="text" class="form-control" placeholder="[[search:type-to-search]]" autocomplete="off">
|
|
14
|
+
</div>
|
|
15
|
+
<ul component="tag/filter/list" class="dropdown-menu overflow-auto" role="menu" style="max-height: 500px;">
|
|
16
|
+
<li role="presentation" data-tag="">
|
|
17
|
+
<a class="dropdown-item d-flex align-items-center gap-2" role="menuitem" href="#">
|
|
18
|
+
<span class="flex-grow-1">[[tags:all-tags]]</span>
|
|
19
|
+
<i component="tag/select/icon" class="flex-shrink-0 fa fa-fw fa-check {{{if selectedTag }}}invisible{{{ end }}}"></i>
|
|
20
|
+
</a>
|
|
21
|
+
</li>
|
|
22
|
+
{{{ each tagItems }}}
|
|
23
|
+
<li role="presentation" data-tag="{./valueEscaped}">
|
|
24
|
+
<a class="dropdown-item d-flex align-items-center gap-2" role="menuitem" href="#">
|
|
25
|
+
<span component="tag-markup" class="flex-grow-1">
|
|
26
|
+
<div class="d-inline-flex align-items-center gap-1">
|
|
27
|
+
{./valueEscaped}
|
|
28
|
+
</div>
|
|
29
|
+
</span>
|
|
30
|
+
<i component="tag/select/icon" class="flex-shrink-0 fa fa-fw fa-check {{{ if !./selected }}}invisible{{{ end }}}"></i>
|
|
31
|
+
</a>
|
|
32
|
+
</li>
|
|
33
|
+
{{{ end }}}
|
|
34
34
|
</ul>
|