nodebb-theme-persona 13.3.43 → 13.3.45
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/package.json +1 -1
- package/scss/persona.scss +0 -3
- package/templates/account/blocks.tpl +4 -4
- package/templates/account/categories.tpl +17 -15
- package/templates/notifications.tpl +19 -20
- package/templates/partials/category/subcategory.tpl +1 -1
- package/templates/partials/topic/post-menu-list.tpl +19 -19
- package/templates/partials/topic/post-menu.tpl +1 -1
- package/scss/flags.scss +0 -43
- package/templates/flags/detail.tpl +0 -208
- package/templates/flags/list.tpl +0 -71
- package/templates/partials/flags/filters.tpl +0 -174
package/package.json
CHANGED
package/scss/persona.scss
CHANGED
|
@@ -5,16 +5,16 @@
|
|
|
5
5
|
<div class="dropdown">
|
|
6
6
|
<input class="form-control" type="text" id="user-search" placeholder="[[users:enter-username]]" data-bs-toggle="dropdown" autocomplete="off" aria-haspopup="true" aria-expanded="false"/>
|
|
7
7
|
|
|
8
|
-
<ul component="blocks/search/list" class="dropdown-menu block-edit list-unstyled" role="menu">
|
|
8
|
+
<ul component="blocks/search/list" class="dropdown-menu p-1 block-edit list-unstyled" role="menu">
|
|
9
9
|
<li component="blocks/start-typing">
|
|
10
|
-
<a href="#" class="dropdown-item" role="menuitem">[[admin/menu:search.start-typing]]</a>
|
|
10
|
+
<a href="#" class="dropdown-item rounded-1" role="menuitem">[[admin/menu:search.start-typing]]</a>
|
|
11
11
|
</li>
|
|
12
12
|
<li component="blocks/no-users" class="hidden">
|
|
13
|
-
<a href="#" class="dropdown-item role="menuitem">[[users:no-users-found]]</a>
|
|
13
|
+
<a href="#" class="dropdown-item rounded-1" role="menuitem">[[users:no-users-found]]</a>
|
|
14
14
|
</li>
|
|
15
15
|
{{{ each edit }}}
|
|
16
16
|
<li component="blocks/search/match">
|
|
17
|
-
<div class="dropdown-item d-flex flex-nowrap gap-2 justify-content-between" role="menuitem">
|
|
17
|
+
<div class="dropdown-item rounded-1 d-flex flex-nowrap gap-2 justify-content-between align-items-center" role="menuitem">
|
|
18
18
|
<div class="text-truncate">
|
|
19
19
|
<a href="{config.relative_path}/uid/{../uid}">{buildAvatar(edit, "24px", true)} {../username}</a>
|
|
20
20
|
</div>
|
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
<!-- IMPORT partials/account/header.tpl -->
|
|
2
2
|
|
|
3
|
-
<div class="
|
|
4
|
-
<
|
|
5
|
-
|
|
6
|
-
<div class="
|
|
7
|
-
<
|
|
8
|
-
<
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
<
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
3
|
+
<div class="">
|
|
4
|
+
<div class="d-flex justify-content-between align-items-center mb-3">
|
|
5
|
+
<h1 class="fs-2">{title}</h1>
|
|
6
|
+
<div class="mb-2">
|
|
7
|
+
<div class="btn-group bottom-sheet" component="category/watch/all">
|
|
8
|
+
<button class="btn btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" type="button" aria-haspopup="true" aria-expanded="false">
|
|
9
|
+
<span>[[user:change-all]]</span>
|
|
10
|
+
<span class="caret"></span>
|
|
11
|
+
</button>
|
|
12
|
+
<ul class="dropdown-menu" role="menu">
|
|
13
|
+
<li><a class="dropdown-item" href="#" component="category/watching" data-state="watching" role="menuitem"><i class="fa fa-fw fa-bell-o"></i> [[category:watching]]<p class="help-text"><small>[[category:watching.description]]</small></p></a></li>
|
|
14
|
+
<li><a class="dropdown-item" href="#" component="category/tracking" data-state="tracking" role="menuitem"><i class="fa fa-fw fa-inbox"></i> [[category:tracking]]<p class="help-text"><small>[[category:tracking.description]]</small></p></a></li>
|
|
15
|
+
<li><a class="dropdown-item" href="#" component="category/notwatching" data-state="notwatching" role="menuitem"><i class="fa fa-fw fa-clock-o"></i> [[category:not-watching]]<p class="help-text"><small>[[category:not-watching.description]]</small></p></a></li>
|
|
16
|
+
<li><a class="dropdown-item" href="#" component="category/ignoring" data-state="ignoring" role="menuitem"><i class="fa fa-fw fa-eye-slash"></i> [[category:ignoring]]<p class="help-text"><small>[[category:ignoring.description]]</small></p></a></li>
|
|
17
|
+
</ul>
|
|
18
|
+
</div>
|
|
17
19
|
</div>
|
|
18
20
|
</div>
|
|
19
|
-
<div class="
|
|
21
|
+
<div class="">
|
|
20
22
|
<ul class="categories list-unstyled" itemscope itemtype="http://www.schema.org/ItemList">
|
|
21
23
|
{{{each categories}}}
|
|
22
24
|
<!-- IMPORT partials/account/category-item.tpl -->
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
<div class="notifications">
|
|
3
3
|
|
|
4
4
|
<!-- IMPORT partials/breadcrumbs.tpl -->
|
|
5
|
-
<div class="
|
|
5
|
+
<div class="d-flex gap-2 justify-content-end" role="toolbar">
|
|
6
6
|
<div class="btn-group me-2">
|
|
7
|
-
<button class="btn btn-
|
|
7
|
+
<button class="btn btn-ghost btn-sm dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
8
8
|
{{{ if selectedFilter }}}{selectedFilter.name}{{{ end}}} <span class="caret"></span>
|
|
9
9
|
</button>
|
|
10
10
|
<ul class="dropdown-menu dropdown-menu-end" role="menu">
|
|
@@ -20,15 +20,10 @@
|
|
|
20
20
|
</ul>
|
|
21
21
|
</div>
|
|
22
22
|
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
</button>
|
|
28
|
-
<ul class="dropdown-menu dropdown-menu-end" role="menu" aria-labelledby="dropdownMenu1">
|
|
29
|
-
<li role="presentation"><a class="dropdown-item" role="menuitem" href="#" component="notifications/mark_all">[[notifications:mark-all-read]]</a></li>
|
|
30
|
-
</ul>
|
|
31
|
-
</div>
|
|
23
|
+
<button component="notifications/mark_all" class="btn btn-ghost btn-sm" type="button">
|
|
24
|
+
<i class="fa fa-eye"></i>
|
|
25
|
+
[[notifications:mark-all-read]]
|
|
26
|
+
</button>
|
|
32
27
|
</div>
|
|
33
28
|
|
|
34
29
|
<hr />
|
|
@@ -37,10 +32,10 @@
|
|
|
37
32
|
[[notifications:no-notifs]]
|
|
38
33
|
</div>
|
|
39
34
|
|
|
40
|
-
<ul class="notifications-list list-unstyled" data-nextstart="{nextStart}">
|
|
35
|
+
<ul component="notifications/list" class="notifications-list list-unstyled" data-nextstart="{nextStart}">
|
|
41
36
|
{{{each notifications}}}
|
|
42
|
-
<li data-nid="{notifications.nid}" class="{notifications.readClass} {{{ if !./read}}}
|
|
43
|
-
<div
|
|
37
|
+
<li data-nid="{notifications.nid}" class="{notifications.readClass} {{{ if !./read}}}unread{{{ end }}} d-flex pointer border p-3 mb-2 d-flex gap-2" component="notifications/item">
|
|
38
|
+
<div>
|
|
44
39
|
{{{ if notifications.from }}}
|
|
45
40
|
{buildAvatar(notifications.user, "24px", true)}
|
|
46
41
|
{{{ else }}}
|
|
@@ -49,13 +44,17 @@
|
|
|
49
44
|
{{{ end }}}
|
|
50
45
|
{{{ end }}}
|
|
51
46
|
</div>
|
|
47
|
+
<div class="d-flex flex-column gap-1 flex-grow-1">
|
|
48
|
+
<a class="text-reset" component="notifications/item/link" href="{notifications.path}">{notifications.bodyShort}</a>
|
|
49
|
+
<span class="timeago text-sm text-secondary" title="{notifications.datetimeISO}"></span>
|
|
50
|
+
</div>
|
|
52
51
|
<div>
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
52
|
+
{{{ if ./nid }}}
|
|
53
|
+
<button class="mark-read btn btn-ghost btn-sm d-flex align-items-center justify-content-center flex-grow-0 flex-shrink-0 p-1" style="width: 1.5rem; height: 1.5rem;">
|
|
54
|
+
<i class="unread fa fa-2xs fa-circle text-primary {{{ if ./read }}}hidden{{{ end }}}" aria-label="[[unread:mark-as-read]]"></i>
|
|
55
|
+
<i class="read fa fa-2xs fa-circle-o text-secondary {{{ if !./read }}}hidden{{{ end }}}" aria-label="[[unread:mark-as-unread]]"></i>
|
|
56
|
+
</button>
|
|
57
|
+
{{{ end }}}
|
|
59
58
|
</div>
|
|
60
59
|
</li>
|
|
61
60
|
{{{end}}}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
{{{end}}}
|
|
13
13
|
</ul>
|
|
14
14
|
{{{ if hasMoreSubCategories}}}
|
|
15
|
-
<button class="btn btn-
|
|
15
|
+
<button class="btn btn-ghost btn-sm mb-2" component="category/load-more-subcategories">[[category:x-more-categories, {subCategoriesLeft}]]</button>
|
|
16
16
|
{{{ end }}}
|
|
17
17
|
</div>
|
|
18
18
|
{{{ end }}}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
<!-- IF posts.display_moderator_tools -->
|
|
2
2
|
<li>
|
|
3
|
-
<a class="dropdown-item d-flex align-items-center gap-2" component="post/edit" role="menuitem" href="#">
|
|
3
|
+
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" component="post/edit" role="menuitem" href="#">
|
|
4
4
|
<span class="menu-icon"><i class="fa fa-fw fa-pencil"></i></span> [[topic:edit]]
|
|
5
5
|
</a>
|
|
6
6
|
</li>
|
|
7
7
|
{{{ if posts.display_delete_tools }}}
|
|
8
8
|
<li <!-- IF posts.deleted -->hidden<!-- ENDIF posts.deleted -->>
|
|
9
|
-
<a class="dropdown-item d-flex align-items-center gap-2" component="post/delete" role="menuitem" href="#" class="<!-- IF posts.deleted -->hidden<!-- ENDIF posts.deleted -->">
|
|
9
|
+
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" component="post/delete" role="menuitem" href="#" class="<!-- IF posts.deleted -->hidden<!-- ENDIF posts.deleted -->">
|
|
10
10
|
<span class="menu-icon"><i class="fa fa-fw fa-trash-o"></i></span> [[topic:delete]]
|
|
11
11
|
</a>
|
|
12
12
|
</li>
|
|
13
13
|
<li <!-- IF !posts.deleted -->hidden<!-- ENDIF !posts.deleted -->>
|
|
14
|
-
<a class="dropdown-item d-flex align-items-center gap-2" component="post/restore" role="menuitem" href="#" class="<!-- IF !posts.deleted -->hidden<!-- ENDIF !posts.deleted -->">
|
|
14
|
+
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" component="post/restore" role="menuitem" href="#" class="<!-- IF !posts.deleted -->hidden<!-- ENDIF !posts.deleted -->">
|
|
15
15
|
<span class="menu-icon"><i class="fa fa-fw fa-history"></i><span> [[topic:restore]]
|
|
16
16
|
</a>
|
|
17
17
|
</li>
|
|
18
18
|
{{{ end }}}
|
|
19
19
|
<!-- IF posts.display_purge_tools -->
|
|
20
20
|
<li <!-- IF !posts.deleted -->hidden<!-- ENDIF !posts.deleted -->>
|
|
21
|
-
<a class="dropdown-item d-flex align-items-center gap-2" component="post/purge" role="menuitem" href="#" class="<!-- IF !posts.deleted -->hidden<!-- ENDIF !posts.deleted -->">
|
|
21
|
+
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" component="post/purge" role="menuitem" href="#" class="<!-- IF !posts.deleted -->hidden<!-- ENDIF !posts.deleted -->">
|
|
22
22
|
<span class="menu-icon"><i class="fa fa-fw fa-eraser"></i></span> [[topic:purge]]
|
|
23
23
|
</a>
|
|
24
24
|
</li>
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
|
|
27
27
|
<!-- IF posts.display_move_tools -->
|
|
28
28
|
<li>
|
|
29
|
-
<a class="dropdown-item d-flex align-items-center gap-2" component="post/move" role="menuitem" href="#">
|
|
29
|
+
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" component="post/move" role="menuitem" href="#">
|
|
30
30
|
<span class="menu-icon"><i class="fa fa-fw fa-arrows"></i></span> [[topic:move]]
|
|
31
31
|
</a>
|
|
32
32
|
</li>
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
|
|
35
35
|
<!-- IF posts.display_change_owner_tools -->
|
|
36
36
|
<li>
|
|
37
|
-
<a class="dropdown-item d-flex align-items-center gap-2" component="post/change-owner" role="menuitem" href="#">
|
|
37
|
+
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" component="post/change-owner" role="menuitem" href="#">
|
|
38
38
|
<span class="menu-icon"><i class="fa fa-fw fa-user"></i></span> [[topic:change-owner]]
|
|
39
39
|
</a>
|
|
40
40
|
</li>
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
|
|
43
43
|
{{{ if posts.display_manage_editors_tools }}}
|
|
44
44
|
<li>
|
|
45
|
-
<a class="dropdown-item d-flex align-items-center gap-2" component="post/manage-editors" role="menuitem" href="#">
|
|
45
|
+
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" component="post/manage-editors" role="menuitem" href="#">
|
|
46
46
|
<span class="menu-icon"><i class="fa fa-fw fa-user-pen"></i></span> [[topic:manage-editors]]
|
|
47
47
|
</a>
|
|
48
48
|
</li>
|
|
@@ -50,13 +50,13 @@
|
|
|
50
50
|
|
|
51
51
|
<!-- IF posts.ip -->
|
|
52
52
|
<li>
|
|
53
|
-
<a class="dropdown-item d-flex align-items-center gap-2" component="post/copy-ip" role="menuitem" href="#" data-clipboard-text="{posts.ip}">
|
|
53
|
+
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" component="post/copy-ip" role="menuitem" href="#" data-clipboard-text="{posts.ip}">
|
|
54
54
|
<span class="menu-icon" ><i class="fa fa-fw fa-copy"></i></span> [[topic:copy-ip]] {posts.ip}
|
|
55
55
|
</a>
|
|
56
56
|
</li>
|
|
57
57
|
<!-- IF posts.display_ip_ban -->
|
|
58
58
|
<li>
|
|
59
|
-
<a class="dropdown-item d-flex align-items-center gap-2" component="post/ban-ip" role="menuitem" href="#" data-ip="{posts.ip}">
|
|
59
|
+
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" component="post/ban-ip" role="menuitem" href="#" data-ip="{posts.ip}">
|
|
60
60
|
<span class="menu-icon"><i class="fa fa-fw fa-ban"></i></span> [[topic:ban-ip]] {posts.ip}
|
|
61
61
|
</a>
|
|
62
62
|
</li>
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
|
|
67
67
|
{{{each posts.tools}}}
|
|
68
68
|
<li {{{ if ./disabled }}}class="disabled" {{{ end }}}>
|
|
69
|
-
<a class="dropdown-item d-flex align-items-center gap-2" {{{ if ./action}}}component="{./action}"{{{ end }}} role="menuitem" href="{{{ if ./href }}}{./href}{{{ else }}}#{{{ end }}}">
|
|
69
|
+
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" {{{ if ./action}}}component="{./action}"{{{ end }}} role="menuitem" href="{{{ if ./href }}}{./href}{{{ else }}}#{{{ end }}}">
|
|
70
70
|
<span class="menu-icon"><i class="fa fa-fw {posts.tools.icon}"></i></span> {{posts.tools.html}}
|
|
71
71
|
</a>
|
|
72
72
|
</li>
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
<!-- IF !posts.deleted -->
|
|
76
76
|
<!-- IF posts.display_history -->
|
|
77
77
|
<li>
|
|
78
|
-
<a class="dropdown-item d-flex align-items-center gap-2" component="post/view-history" role="menuitem" href="#">
|
|
78
|
+
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" component="post/view-history" role="menuitem" href="#">
|
|
79
79
|
<span class="menu-icon"><i class="fa fa-fw fa-history"></i></span> [[topic:view-history]]
|
|
80
80
|
</a>
|
|
81
81
|
</li>
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
|
|
84
84
|
{{{ if config.loggedIn }}}
|
|
85
85
|
<li>
|
|
86
|
-
<a class="dropdown-item d-flex align-items-center gap-2" component="post/bookmark" role="menuitem" href="#" data-bookmarked="{posts.bookmarked}">
|
|
86
|
+
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" component="post/bookmark" role="menuitem" href="#" data-bookmarked="{posts.bookmarked}">
|
|
87
87
|
<span class="menu-icon">
|
|
88
88
|
<i component="post/bookmark/on" class="fa fa-fw fa-heart <!-- IF !posts.bookmarked -->hidden<!-- ENDIF !posts.bookmarked -->"></i>
|
|
89
89
|
<i component="post/bookmark/off" class="fa fa-fw fa-heart-o <!-- IF posts.bookmarked -->hidden<!-- ENDIF posts.bookmarked -->"></i>
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
{{{ end }}}
|
|
96
96
|
|
|
97
97
|
<li>
|
|
98
|
-
<a class="dropdown-item d-flex align-items-center gap-2" role="menuitem" href="#" data-clipboard-text="{posts.absolute_url}">
|
|
98
|
+
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" role="menuitem" href="#" data-clipboard-text="{posts.absolute_url}">
|
|
99
99
|
<i class="fa fa-fw fa-link"></i> [[topic:copy-permalink]]
|
|
100
100
|
</a>
|
|
101
101
|
</li>
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
<!-- ENDIF postSharing.length -->
|
|
107
107
|
<li class="d-flex gap-2 px-3">
|
|
108
108
|
{{{ each postSharing }}}
|
|
109
|
-
<a class="dropdown-item d-flex align-items-center px-1 py-2 w-auto" role="menuitem" component="share/{./id}" href="#" title="{./name}"><i class="fa-fw text-muted {./class}"></i></a>
|
|
109
|
+
<a class="dropdown-item rounded-1 d-flex align-items-center px-1 py-2 w-auto" role="menuitem" component="share/{./id}" href="#" title="{./name}"><i class="fa-fw text-muted {./class}"></i></a>
|
|
110
110
|
{{{ end }}}
|
|
111
111
|
</li>
|
|
112
112
|
<!-- ENDIF !posts.deleted -->
|
|
@@ -115,15 +115,15 @@
|
|
|
115
115
|
<li class="dropdown-divider"></li>
|
|
116
116
|
|
|
117
117
|
<li {{{ if posts.flags.flagged }}}hidden{{{ end }}}>
|
|
118
|
-
<a class="dropdown-item d-flex align-items-center gap-2" component="post/flag" role="menuitem" href="#"><i class="fa fa-fw fa-flag"></i> [[topic:flag-post]]</a>
|
|
118
|
+
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" component="post/flag" role="menuitem" href="#"><i class="fa fa-fw fa-flag"></i> [[topic:flag-post]]</a>
|
|
119
119
|
</li>
|
|
120
120
|
<li {{{ if !posts.flags.flagged }}}hidden{{{ end }}} class="disabled text-muted">
|
|
121
|
-
<a class="dropdown-item d-flex align-items-center gap-2" component="post/already-flagged" role="menuitem" href="#"><i class="fa fa-fw fa-flag"></i> [[topic:already-flagged]]</a>
|
|
121
|
+
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" component="post/already-flagged" role="menuitem" href="#"><i class="fa fa-fw fa-flag"></i> [[topic:already-flagged]]</a>
|
|
122
122
|
</li>
|
|
123
123
|
|
|
124
124
|
{{{ if (!posts.selfPost && posts.uid) }}}
|
|
125
125
|
<li>
|
|
126
|
-
<a class="dropdown-item d-flex align-items-center gap-2" component="post/flagUser" role="menuitem" href="#"><i class="fa fa-fw fa-flag"></i> [[topic:flag-user]]</a>
|
|
126
|
+
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" component="post/flagUser" role="menuitem" href="#"><i class="fa fa-fw fa-flag"></i> [[topic:flag-user]]</a>
|
|
127
127
|
</li>
|
|
128
128
|
{{{ end }}}
|
|
129
129
|
{{{ end }}}
|
|
@@ -131,11 +131,11 @@
|
|
|
131
131
|
<!-- IF posts.display_moderator_tools -->
|
|
132
132
|
{{{ if posts.flags.exists }}}
|
|
133
133
|
<li>
|
|
134
|
-
<a class="dropdown-item d-flex align-items-center gap-2" role="menuitem" href="{config.relative_path}/flags/{posts.flags.flagId}"><i class="fa fa-fw fa-exclamation-circle"></i> [[topic:view-flag-report]]</a>
|
|
134
|
+
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" role="menuitem" href="{config.relative_path}/flags/{posts.flags.flagId}"><i class="fa fa-fw fa-exclamation-circle"></i> [[topic:view-flag-report]]</a>
|
|
135
135
|
</li>
|
|
136
136
|
{{{ if (posts.flags.state == "open") }}}
|
|
137
137
|
<li>
|
|
138
|
-
<a class="dropdown-item d-flex align-items-center gap-2" component="post/flagResolve" data-flagId="{posts.flags.flagId}" role="menuitem" href="#"><i class="fa fa-fw fa-check"></i> [[topic:resolve-flag]]</a>
|
|
138
|
+
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" component="post/flagResolve" data-flagId="{posts.flags.flagId}" role="menuitem" href="#"><i class="fa fa-fw fa-check"></i> [[topic:resolve-flag]]</a>
|
|
139
139
|
</li>
|
|
140
140
|
{{{ end }}}
|
|
141
141
|
{{{ end }}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<span component="post/tools" class="dropdown bottom-sheet d-inline-block {{{ if !posts.display_post_menu }}}hidden{{{ end }}}">
|
|
2
2
|
<a class="btn btn-link btn-sm dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fa fa-fw fa-ellipsis-v"></i></a>
|
|
3
|
-
<ul class="dropdown-menu dropdown-menu-end p-1" role="menu"></ul>
|
|
3
|
+
<ul class="dropdown-menu dropdown-menu-end p-1 text-sm" role="menu"></ul>
|
|
4
4
|
</span>
|
package/scss/flags.scss
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
.page-flags {
|
|
2
|
-
[component="flags/list"] {
|
|
3
|
-
tr {
|
|
4
|
-
@include pointer;
|
|
5
|
-
}
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
#flags-daily-wrapper + .panel-footer {
|
|
9
|
-
@include pointer;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
[component="flag/reports"] {
|
|
13
|
-
blockquote {
|
|
14
|
-
margin: 0;
|
|
15
|
-
margin-top: 1rem;
|
|
16
|
-
overflow-wrap: break-word;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
[component="flag/notes"] {
|
|
21
|
-
.media {
|
|
22
|
-
padding: 1rem;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
.media-right {
|
|
26
|
-
visibility: hidden;
|
|
27
|
-
|
|
28
|
-
i {
|
|
29
|
-
padding: 1rem;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
&:hover {
|
|
34
|
-
.media-right {
|
|
35
|
-
visibility: visible;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
.editing {
|
|
40
|
-
background-color: $info;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
<!-- IMPORT partials/breadcrumbs.tpl -->
|
|
2
|
-
|
|
3
|
-
<div class="row">
|
|
4
|
-
<div class="col-12">
|
|
5
|
-
<h2 class="h4">
|
|
6
|
-
{target_readable}
|
|
7
|
-
<small><span class="text-muted timeago" title="{datetimeISO}"></span></small>
|
|
8
|
-
</h2>
|
|
9
|
-
|
|
10
|
-
<hr />
|
|
11
|
-
|
|
12
|
-
<!-- IF type_bool.post -->
|
|
13
|
-
<div class="d-flex">
|
|
14
|
-
<div class="flex-shrink-0">
|
|
15
|
-
<a href="{config.relative_path}/user/{target.user.userslug}">{buildAvatar(target.user, "64px", true, "media-object")}</a>
|
|
16
|
-
</div>
|
|
17
|
-
<div class="flex-grow-1 ms-3">
|
|
18
|
-
<h4 class="media-heading"><a href="{config.relative_path}/user/{target.user.userslug}">{target.user.username}</a></h4>
|
|
19
|
-
{target.content}
|
|
20
|
-
</div>
|
|
21
|
-
</div>
|
|
22
|
-
<!-- ENDIF type_bool.post -->
|
|
23
|
-
|
|
24
|
-
<!-- IF type_bool.user -->
|
|
25
|
-
<div class="d-flex">
|
|
26
|
-
<div class="flex-shrink-0">
|
|
27
|
-
<a href="{config.relative_path}/user/{target.userslug}">{buildAvatar(target, "64px", true, "media-object")}</a>
|
|
28
|
-
</div>
|
|
29
|
-
<div class="flex-grow-1 ms-3">
|
|
30
|
-
<h4 class="media-heading"><a href="{config.relative_path}/user/{target.userslug}">{target.username}</a></h4>
|
|
31
|
-
<p class="lead">
|
|
32
|
-
<a href="{config.relative_path}/uid/{target.uid}">[[flags:user-view]]</a> |
|
|
33
|
-
<a href="{config.relative_path}/uid/{target.uid}/edit">[[flags:user-edit]]</a>
|
|
34
|
-
</p>
|
|
35
|
-
</div>
|
|
36
|
-
</div>
|
|
37
|
-
<!-- ENDIF type_bool.user -->
|
|
38
|
-
|
|
39
|
-
<!-- IF type_bool.empty -->
|
|
40
|
-
<div class="alert alert-warning" role="alert">[[flags:target-purged]]</div>
|
|
41
|
-
<!-- ENDIF type_bool.empty -->
|
|
42
|
-
|
|
43
|
-
<hr />
|
|
44
|
-
|
|
45
|
-
<div class="row">
|
|
46
|
-
<div class="col-sm-6">
|
|
47
|
-
<form role="form" id="attributes">
|
|
48
|
-
<div class="mb-3">
|
|
49
|
-
<h2 class="h4">[[flags:reports]]</h2>
|
|
50
|
-
<ul class="list-group" component="flag/reports">
|
|
51
|
-
{{{ each reports }}}
|
|
52
|
-
<li class="list-group-item">
|
|
53
|
-
<a href="{config.relative_path}/user/{./reporter.userslug}">{buildAvatar(./reporter, "24px", true)}</a>
|
|
54
|
-
– <span class="timeago" title="{./timestampISO}"></span>
|
|
55
|
-
<blockquote><em>{./value}</em></blockquote>
|
|
56
|
-
</li>
|
|
57
|
-
{{{ end }}}
|
|
58
|
-
</ul>
|
|
59
|
-
</div>
|
|
60
|
-
<div class="mb-3">
|
|
61
|
-
<h2 class="h4" for="state">[[flags:state]]</h2>
|
|
62
|
-
<select class="form-select" id="state" name="state" disabled>
|
|
63
|
-
<option value="open">[[flags:state-open]]</option>
|
|
64
|
-
<option value="wip">[[flags:state-wip]]</option>
|
|
65
|
-
<option value="resolved">[[flags:state-resolved]]</option>
|
|
66
|
-
<option value="rejected">[[flags:state-rejected]]</option>
|
|
67
|
-
</select>
|
|
68
|
-
</div>
|
|
69
|
-
<div class="mb-3">
|
|
70
|
-
<h2 class="h4" for="assignee">[[flags:assignee]]</h2>
|
|
71
|
-
<select class="form-control" id="assignee" name="assignee" disabled>
|
|
72
|
-
<option value="">[[flags:no-assignee]]</option>
|
|
73
|
-
{{{each assignees}}}
|
|
74
|
-
<option value="{../uid}">{../username}</option>
|
|
75
|
-
{{{end}}}
|
|
76
|
-
</select>
|
|
77
|
-
</div>
|
|
78
|
-
<div class="d-grid">
|
|
79
|
-
<button type="button" class="btn btn-primary" data-action="update">[[flags:update]]</button>
|
|
80
|
-
</div>
|
|
81
|
-
</form>
|
|
82
|
-
|
|
83
|
-
<hr />
|
|
84
|
-
|
|
85
|
-
<form role="form">
|
|
86
|
-
<div class="mb-3">
|
|
87
|
-
<div class="d-flex align-items-center">
|
|
88
|
-
<h2 class="h4 me-auto mb-0" for="note">[[flags:notes]]</h2>
|
|
89
|
-
<button type="button" class="btn btn-primary" data-action="addEditNote">[[flags:add-note]]</button>
|
|
90
|
-
</div>
|
|
91
|
-
</div>
|
|
92
|
-
</form>
|
|
93
|
-
|
|
94
|
-
<div component="flag/notes">
|
|
95
|
-
<!-- IF !notes.length -->
|
|
96
|
-
<div class="alert alert-success text-center">[[flags:no-notes]]</div>
|
|
97
|
-
<!-- ENDIF !notes.length -->
|
|
98
|
-
{{{each notes}}}
|
|
99
|
-
<div class="d-flex mb-3" component="flag/note" data-datetime="{./datetime}" data-index="{@index}">
|
|
100
|
-
<div class="flex-shrink-0">
|
|
101
|
-
<a href="{config.relative_path}/user/{../user.userslug}">{buildAvatar(notes.user, "32px", true, "media-object")}</a>
|
|
102
|
-
</div>
|
|
103
|
-
<div class="flex-grow-1 mx-3">
|
|
104
|
-
<h2 class="h5">
|
|
105
|
-
<a href="{config.relative_path}/user/{../user.userslug}">{../user.username}</a>
|
|
106
|
-
<small><span class="timeago" title="{../datetimeISO}"></span></small>
|
|
107
|
-
</h4>
|
|
108
|
-
{../content}
|
|
109
|
-
</div>
|
|
110
|
-
<div class="flex-shrink-0">
|
|
111
|
-
<a href="#" class="btn btn-sm btn-link" data-action="addEditNote"><i class="fa fa-pencil"></i></a>
|
|
112
|
-
<a href="#" class="btn btn-sm btn-link" data-action="delete-note"><i class="fa fa-trash text-danger"></i></a>
|
|
113
|
-
</div>
|
|
114
|
-
</div>
|
|
115
|
-
{{{end}}}
|
|
116
|
-
</div>
|
|
117
|
-
</div>
|
|
118
|
-
<div class="col-sm-6">
|
|
119
|
-
<h2 class="h4">[[flags:quick-actions]]</h2>
|
|
120
|
-
|
|
121
|
-
<div class="d-grid gap-1">
|
|
122
|
-
<a class="btn btn-light" href="{config.relative_path}/{type_path}/{targetId}">
|
|
123
|
-
<i class="fa fa-external-link"></i>
|
|
124
|
-
[[flags:go-to-target]]
|
|
125
|
-
</a>
|
|
126
|
-
|
|
127
|
-
<a class="btn btn-light" href="#" data-action="assign">
|
|
128
|
-
<i class="fa fa-id-card-o"></i>
|
|
129
|
-
[[flags:assign-to-me]]
|
|
130
|
-
</a>
|
|
131
|
-
|
|
132
|
-
{{{ if type_bool.post }}}
|
|
133
|
-
{{{ if !target.deleted}}}
|
|
134
|
-
<a class="btn btn-outline-danger" href="#" data-action="delete-post"><i class="fa fa-trash"></i> [[flags:delete-post]]</a>
|
|
135
|
-
{{{ else }}}
|
|
136
|
-
<a class="btn btn-danger" href="#" data-action="purge-post"><i class="fa fa-trash"></i> [[flags:purge-post]]</a>
|
|
137
|
-
<a class="btn btn-outline-success" href="#" data-action="restore-post"><i class="fa fa-reply"></i><i class="fa fa-trash"></i> [[flags:restore-post]]</a>
|
|
138
|
-
{{{ end }}}
|
|
139
|
-
{{{ end }}}
|
|
140
|
-
|
|
141
|
-
{{{ if target.uid }}}
|
|
142
|
-
<div class="btn-group" data-uid="{target.uid}">
|
|
143
|
-
<button type="button" class="btn btn-light dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
144
|
-
<i class="fa fa-street-view"></i>
|
|
145
|
-
[[flags:flagged-user]]
|
|
146
|
-
<span class="caret"></span>
|
|
147
|
-
</button>
|
|
148
|
-
<ul class="dropdown-menu" role="menu">
|
|
149
|
-
<li><a class="dropdown-item" href="{config.relative_path}/uid/{target.uid}" role="menuitem">[[flags:view-profile]]</a></li>
|
|
150
|
-
{{{ if !config.disableChat }}}
|
|
151
|
-
<li><a class="dropdown-item" href="#" data-action="chat" role="menuitem">[[flags:start-new-chat]]</a></li>
|
|
152
|
-
{{{ end }}}
|
|
153
|
-
<li class="dropdown-divider"></li>
|
|
154
|
-
{{{ if privileges.ban }}}
|
|
155
|
-
<li class="{{{ if target.user.banned }}}hidden{{{ end }}}"><a class="dropdown-item" href="#" data-action="ban" role="menuitem">[[user:ban-account]]</a></li>
|
|
156
|
-
<li class="{{{ if !target.user.banned }}}hidden{{{ end }}}"><a class="dropdown-item" href="#" data-action="unban" role="menuitem">[[user:unban-account]]</a></li>
|
|
157
|
-
{{{ end }}}
|
|
158
|
-
{{{ if privileges.mute}}}
|
|
159
|
-
<li class="{{{ if target.user.muted }}}hidden{{{ end }}}"><a class="dropdown-item" href="#" data-action="mute" role="menuitem">[[user:mute-account]]</a></li>
|
|
160
|
-
<li class="{{{ if !target.user.muted }}}hidden{{{ end }}}"><a class="dropdown-item" href="#" data-action="unmute" role="menuitem">[[user:unmute-account]]</a></li>
|
|
161
|
-
{{{ end }}}
|
|
162
|
-
{{{ if privileges.admin:users }}}
|
|
163
|
-
<li><a class="dropdown-item" href="#" data-action="delete-account" role="menuitem">[[user:delete-account-as-admin]]</a></li>
|
|
164
|
-
<li><a class="dropdown-item" href="#" data-action="delete-content" role="menuitem">[[user:delete-content]]</a></li>
|
|
165
|
-
<li><a class="dropdown-item" href="#" data-action="delete-all" role="menuitem">[[user:delete-all]]</a></li>
|
|
166
|
-
{{{ end }}}
|
|
167
|
-
</ul>
|
|
168
|
-
</div>
|
|
169
|
-
{{{ end }}}
|
|
170
|
-
</div>
|
|
171
|
-
|
|
172
|
-
<hr />
|
|
173
|
-
|
|
174
|
-
<h2 class="h4">[[flags:history]]</h2>
|
|
175
|
-
<div component="flag/history">
|
|
176
|
-
<!-- IF !history.length -->
|
|
177
|
-
<div class="alert alert-success text-center">[[flags:no-history]]</div>
|
|
178
|
-
<!-- ENDIF !history.length -->
|
|
179
|
-
{{{each history}}}
|
|
180
|
-
<div class="d-flex">
|
|
181
|
-
<div class="flex-shrink-0">
|
|
182
|
-
<a href="{config.relative_path}/user/{../user.userslug}">{buildAvatar(history.user, "32px", true, "media-object")}</a>
|
|
183
|
-
</div>
|
|
184
|
-
<div class="flex-grow-1 ms-3">
|
|
185
|
-
<h4 class="media-heading">
|
|
186
|
-
<a href="{config.relative_path}/user/{../user.userslug}">{../user.username}</a>
|
|
187
|
-
<small><span class="timeago" title="{../datetimeISO}"></span></small>
|
|
188
|
-
</h4>
|
|
189
|
-
<ul>
|
|
190
|
-
{{{each ./fields}}}
|
|
191
|
-
<li>
|
|
192
|
-
<span class="badge bg-primary">[[flags:{@key}]]</span><!-- IF @value --> → <span class="badge bg-light text-dark">{@value}</span><!-- ENDIF @value -->
|
|
193
|
-
</li>
|
|
194
|
-
{{{end}}}
|
|
195
|
-
{{{ each ./meta }}}
|
|
196
|
-
<li>
|
|
197
|
-
<span class="badge bg-{{./labelClass}}">{{./key}}</span>{{{ if ./value }}} → <span class="badge bg-light text-dark">{{ ./value }}</span>{{{ end }}}
|
|
198
|
-
</li>
|
|
199
|
-
{{{ end }}}
|
|
200
|
-
</ul>
|
|
201
|
-
</div>
|
|
202
|
-
</div>
|
|
203
|
-
{{{end}}}
|
|
204
|
-
</div>
|
|
205
|
-
</div>
|
|
206
|
-
</div>
|
|
207
|
-
</div>
|
|
208
|
-
</div>
|
package/templates/flags/list.tpl
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
<!-- IMPORT partials/breadcrumbs.tpl -->
|
|
2
|
-
|
|
3
|
-
<div class="row">
|
|
4
|
-
<div class="col-sm-4 col-md-3">
|
|
5
|
-
<!-- IMPORT partials/flags/filters.tpl -->
|
|
6
|
-
</div>
|
|
7
|
-
<div class="col-sm-8 col-md-9">
|
|
8
|
-
<!-- IF hasFilter -->
|
|
9
|
-
<div class="alert alert-warning">
|
|
10
|
-
<p class="float-end">
|
|
11
|
-
<a href="{config.relative_path}/flags">[[flags:filter-reset]]</a>
|
|
12
|
-
</p>
|
|
13
|
-
[[flags:filter-active]]
|
|
14
|
-
</div>
|
|
15
|
-
<!-- ENDIF hasFilter -->
|
|
16
|
-
|
|
17
|
-
<div class="btn-group float-end" component="flags/bulk-actions">
|
|
18
|
-
<button type="button" class="btn btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" autocomplete="off" aria-haspopup="true" aria-expanded="false" disabled="disabled">
|
|
19
|
-
<i class="fa fa-clone"></i> [[flags:bulk-actions]] <span class="caret"></span>
|
|
20
|
-
</button>
|
|
21
|
-
<ul class="dropdown-menu" role="menu">
|
|
22
|
-
<li><a href="#" class="dropdown-item" data-action="bulk-assign" role="menuitem">[[flags:assign-to-me]]</a></li>
|
|
23
|
-
<li><a href="#" class="dropdown-item" data-action="bulk-mark-resolved" role="menuitem">[[flags:bulk-resolve]]</a></li>
|
|
24
|
-
</ul>
|
|
25
|
-
</div>
|
|
26
|
-
|
|
27
|
-
<table class="table table-striped table-hover" component="flags/list">
|
|
28
|
-
<thead>
|
|
29
|
-
<tr>
|
|
30
|
-
<th>
|
|
31
|
-
<input type="checkbox" data-action="toggle-all" autocomplete="off" />
|
|
32
|
-
</th>
|
|
33
|
-
<th></th>
|
|
34
|
-
<th><span class="hidden-xs">[[flags:reports]] </span><i class="fa fa-user-plus"></i></th>
|
|
35
|
-
<th><span class="hidden-xs">[[flags:first-reported]] </span><i class="fa fa-clock-o"></i></th>
|
|
36
|
-
<th>[[flags:state]]</th>
|
|
37
|
-
</tr>
|
|
38
|
-
</thead>
|
|
39
|
-
<tbody>
|
|
40
|
-
<!-- IF !flags.length -->
|
|
41
|
-
<tr>
|
|
42
|
-
<td colspan="5">
|
|
43
|
-
<div class="alert alert-success text-center">
|
|
44
|
-
[[flags:no-flags]]
|
|
45
|
-
</div>
|
|
46
|
-
</td>
|
|
47
|
-
</tr>
|
|
48
|
-
<!-- ENDIF !flags.length -->
|
|
49
|
-
{{{each flags}}}
|
|
50
|
-
<tr data-flag-id="{../flagId}">
|
|
51
|
-
<td>
|
|
52
|
-
<input type="checkbox" autocomplete="off" />
|
|
53
|
-
</td>
|
|
54
|
-
<td>
|
|
55
|
-
<a href="{config.relative_path}/flags/{../flagId}">
|
|
56
|
-
<strong>{../target_readable}</strong>
|
|
57
|
-
</a>
|
|
58
|
-
</td>
|
|
59
|
-
<td>
|
|
60
|
-
{./heat}
|
|
61
|
-
</td>
|
|
62
|
-
<td><span class="timeago" title="{../datetimeISO}"></span></td>
|
|
63
|
-
<td><span class="badge bg-{../labelClass}">[[flags:state-{../state}]]</span></td>
|
|
64
|
-
</tr>
|
|
65
|
-
{{{end}}}
|
|
66
|
-
</tbody>
|
|
67
|
-
</table>
|
|
68
|
-
|
|
69
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
70
|
-
</div>
|
|
71
|
-
</div>
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
<div class="text-center">
|
|
2
|
-
<div class="card mb-3">
|
|
3
|
-
<div class="card-body collapse" id="flags-daily-wrapper" aria-expanded="false">
|
|
4
|
-
<div class="position-relative" style="aspect-ratio: 2; max-height: initial;">
|
|
5
|
-
<canvas id="flags:daily" style="max-height: initial;"></canvas>
|
|
6
|
-
</div>
|
|
7
|
-
</div>
|
|
8
|
-
<div class="card-footer" data-bs-toggle="collapse" data-bs-target="#flags-daily-wrapper" aria-controls="#flags-daily-wrapper"><small>[[flags:graph-label]]</small> <i class="fa fa-sort"></i></div>
|
|
9
|
-
</div>
|
|
10
|
-
</div>
|
|
11
|
-
|
|
12
|
-
<div class="card mb-3">
|
|
13
|
-
<div class="card-header">
|
|
14
|
-
[[flags:quick-filters]]
|
|
15
|
-
</div>
|
|
16
|
-
<div class="card-body">
|
|
17
|
-
<ul>
|
|
18
|
-
<li><a href="{config.relative_path}/flags?quick=mine">[[flags:filter-quick-mine]]</a></li>
|
|
19
|
-
</ul>
|
|
20
|
-
</div>
|
|
21
|
-
</div>
|
|
22
|
-
|
|
23
|
-
<div class="card mb-3">
|
|
24
|
-
<div class="card-header">
|
|
25
|
-
[[flags:filters]]
|
|
26
|
-
</div>
|
|
27
|
-
<div class="card-body">
|
|
28
|
-
<form role="form" component="flags/filters">
|
|
29
|
-
<fieldset>
|
|
30
|
-
<div class="mb-3">
|
|
31
|
-
<label class="form-label" for="filter-cid">[[flags:filter-cid]]</label>
|
|
32
|
-
<div class="input-group">
|
|
33
|
-
<!-- IMPORT partials/category/filter-dropdown-left.tpl -->
|
|
34
|
-
</div>
|
|
35
|
-
</div>
|
|
36
|
-
<div class="mb-3">
|
|
37
|
-
<label class="form-label" for="sort">[[flags:sort]]</label>
|
|
38
|
-
<select class="form-control" id="sort" name="sort">
|
|
39
|
-
<optgroup label="[[flags:sort-all]]">
|
|
40
|
-
<option value="newest">[[flags:sort-newest]]</option>
|
|
41
|
-
<option value="oldest">[[flags:sort-oldest]]</option>
|
|
42
|
-
<option value="reports">[[flags:sort-reports]]</option>
|
|
43
|
-
</optgroup>
|
|
44
|
-
<optgroup label="[[flags:sort-posts-only]]">
|
|
45
|
-
<option value="downvotes">[[flags:sort-downvotes]]</option>
|
|
46
|
-
<option value="upvotes">[[flags:sort-upvotes]]</option>
|
|
47
|
-
<option value="replies">[[flags:sort-replies]]</option>
|
|
48
|
-
</optgroup>
|
|
49
|
-
</select>
|
|
50
|
-
</div>
|
|
51
|
-
<div class="mb-3">
|
|
52
|
-
<label class="form-label" for="filter-state">[[flags:filter-state]]</label>
|
|
53
|
-
<select class="form-control" id="filter-state" name="state">
|
|
54
|
-
<option value="">[[flags:state-all]]</option>
|
|
55
|
-
<option value="open">[[flags:state-open]]</option>
|
|
56
|
-
<option value="wip">[[flags:state-wip]]</option>
|
|
57
|
-
<option value="resolved">[[flags:state-resolved]]</option>
|
|
58
|
-
<option value="rejected">[[flags:state-rejected]]</option>
|
|
59
|
-
</select>
|
|
60
|
-
</div>
|
|
61
|
-
|
|
62
|
-
<div class="mb-3">
|
|
63
|
-
<label class="form-label" for="filter-type">[[flags:filter-type]]</label>
|
|
64
|
-
<select class="form-control" id="filter-type" name="type">
|
|
65
|
-
<option value="">[[flags:filter-type-all]]</option>
|
|
66
|
-
<option value="post">[[flags:filter-type-post]]</option>
|
|
67
|
-
<option value="user">[[flags:filter-type-user]]</option>
|
|
68
|
-
</select>
|
|
69
|
-
</div>
|
|
70
|
-
</fieldset>
|
|
71
|
-
|
|
72
|
-
<fieldset class="collapse{{{ if expanded }}} show{{{ end }}}" id="more-filters" aria-expanded="{expanded}">
|
|
73
|
-
<div class="mb-3">
|
|
74
|
-
<label class="form-label" for="filter-assignee">[[flags:filter-assignee]]</label>
|
|
75
|
-
<div component="flags/filter/assignee" class="dropdown" data-filter-name="assignee">
|
|
76
|
-
<a component="user/filter/button" class="filter-btn btn btn-sm border {{{ if filters.assignee }}}btn-primary{{{ else }}}btn-light{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-haspopup="true" aria-expanded="false">
|
|
77
|
-
<span class="filter-label">[[flags:filter-assignee]]</span>
|
|
78
|
-
<span class="caret"></span>
|
|
79
|
-
</a>
|
|
80
|
-
|
|
81
|
-
<ul class="dropdown-menu" style="width: 350px;" role="menu">
|
|
82
|
-
<li class="px-3 py-1 d-flex flex-column gap-2">
|
|
83
|
-
<input type="text" class="form-control" component="user/filter/search" placeholder="[[search:type-a-username]]">
|
|
84
|
-
<div component="user/filter/selected" class="d-flex flex-wrap gap-2">
|
|
85
|
-
{{{ each selected.assignee }}}
|
|
86
|
-
<div class="d-flex px-2 py-1 rounded-1 text-bg-primary gap-2 align-items-center text-sm">
|
|
87
|
-
{buildAvatar(@value, "16px", true)} {./username}
|
|
88
|
-
<button type="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>
|
|
89
|
-
</div>
|
|
90
|
-
{{{ end }}}
|
|
91
|
-
</div>
|
|
92
|
-
<hr/>
|
|
93
|
-
<div component="user/filter/results" class="d-flex flex-wrap gap-2">
|
|
94
|
-
{{{ each userFilterResults }}}
|
|
95
|
-
<button type="button" class="btn btn-light btn-sm border" data-uid="{./uid}" data-username="{./username}">{buildAvatar(@value, "16px", true)} {./username}</button>
|
|
96
|
-
{{{ end }}}
|
|
97
|
-
</div>
|
|
98
|
-
</li>
|
|
99
|
-
</ul>
|
|
100
|
-
</div>
|
|
101
|
-
</div>
|
|
102
|
-
|
|
103
|
-
<div class="mb-3">
|
|
104
|
-
<label class="form-label" for="filter-targetUid">[[flags:filter-targetUid]]</label>
|
|
105
|
-
<div component="flags/filter/targetUid" class="dropdown" data-filter-name="targetUid">
|
|
106
|
-
<a component="user/filter/button" class="filter-btn btn btn-sm border {{{ if filters.targetUid }}}btn-primary{{{ else }}}btn-light{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-haspopup="true" aria-expanded="false">
|
|
107
|
-
<span class="filter-label">[[flags:filter-targetUid]]</span>
|
|
108
|
-
<span class="caret"></span>
|
|
109
|
-
</a>
|
|
110
|
-
|
|
111
|
-
<ul class="dropdown-menu" style="width: 350px;" role="menu">
|
|
112
|
-
<li class="px-3 py-1 d-flex flex-column gap-2">
|
|
113
|
-
<input type="text" class="form-control" component="user/filter/search" placeholder="[[search:type-a-username]]">
|
|
114
|
-
<div component="user/filter/selected" class="d-flex flex-wrap gap-2">
|
|
115
|
-
{{{ each selected.targetUid }}}
|
|
116
|
-
<div class="d-flex px-2 py-1 rounded-1 text-bg-primary gap-2 align-items-center text-sm">
|
|
117
|
-
{buildAvatar(@value, "16px", true)} {./username}
|
|
118
|
-
<button type="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>
|
|
119
|
-
</div>
|
|
120
|
-
{{{ end }}}
|
|
121
|
-
</div>
|
|
122
|
-
<hr/>
|
|
123
|
-
<div component="user/filter/results" class="d-flex flex-wrap gap-2">
|
|
124
|
-
{{{ each userFilterResults }}}
|
|
125
|
-
<button type="button" class="btn btn-light btn-sm border" data-uid="{./uid}" data-username="{./username}">{buildAvatar(@value, "16px", true)} {./username}</button>
|
|
126
|
-
{{{ end }}}
|
|
127
|
-
</div>
|
|
128
|
-
</li>
|
|
129
|
-
</ul>
|
|
130
|
-
</div>
|
|
131
|
-
</div>
|
|
132
|
-
|
|
133
|
-
<div class="mb-3">
|
|
134
|
-
<label class="form-label" for="filter-reporterId">[[flags:filter-reporterId]]</label>
|
|
135
|
-
<div component="flags/filter/reporterId" class="dropdown" data-filter-name="reporterId">
|
|
136
|
-
<a component="user/filter/button" class="filter-btn btn btn-sm border {{{ if filters.reporterId }}}btn-primary{{{ else }}}btn-light{{{ end }}} dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-haspopup="true" aria-expanded="false">
|
|
137
|
-
<span class="filter-label">[[flags:filter-reporterId]]</span>
|
|
138
|
-
<span class="caret"></span>
|
|
139
|
-
</a>
|
|
140
|
-
|
|
141
|
-
<ul class="dropdown-menu" style="width: 350px;" role="menu">
|
|
142
|
-
<li class="px-3 py-1 d-flex flex-column gap-2">
|
|
143
|
-
<input type="text" class="form-control" component="user/filter/search" placeholder="[[search:type-a-username]]">
|
|
144
|
-
<div component="user/filter/selected" class="d-flex flex-wrap gap-2">
|
|
145
|
-
{{{ each selected.reporterId }}}
|
|
146
|
-
<div class="d-flex px-2 py-1 rounded-1 text-bg-primary gap-2 align-items-center text-sm">
|
|
147
|
-
{buildAvatar(@value, "16px", true)} {./username}
|
|
148
|
-
<button type="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>
|
|
149
|
-
</div>
|
|
150
|
-
{{{ end }}}
|
|
151
|
-
</div>
|
|
152
|
-
<hr/>
|
|
153
|
-
<div component="user/filter/results" class="d-flex flex-wrap gap-2">
|
|
154
|
-
{{{ each userFilterResults }}}
|
|
155
|
-
<button type="button" class="btn btn-light btn-sm border" data-uid="{./uid}" data-username="{./username}">{buildAvatar(@value, "16px", true)} {./username}</button>
|
|
156
|
-
{{{ end }}}
|
|
157
|
-
</div>
|
|
158
|
-
</li>
|
|
159
|
-
</ul>
|
|
160
|
-
</div>
|
|
161
|
-
</div>
|
|
162
|
-
</fieldset>
|
|
163
|
-
|
|
164
|
-
<div class="d-grid gap-2">
|
|
165
|
-
{{{ if expanded }}}
|
|
166
|
-
<button type="button" class="btn btn-link" data-bs-toggle="collapse" data-bs-target="#more-filters" aria-controls="#more-filters" data-text-variant="[[flags:more-filters]] ">[[flags:fewer-filters]] <i class="fa fa-sort"></i></button>
|
|
167
|
-
{{{ else }}}
|
|
168
|
-
<button type="button" class="btn btn-link" data-bs-toggle="collapse" data-bs-target="#more-filters" aria-controls="#more-filters" data-text-variant="[[flags:fewer-filters]] ">[[flags:more-filters]] <i class="fa fa-sort"></i></button>
|
|
169
|
-
{{{ end }}}
|
|
170
|
-
<button type="button" id="apply-filters" class="btn btn-primary">[[flags:apply-filters]]</button>
|
|
171
|
-
</div>
|
|
172
|
-
</form>
|
|
173
|
-
</div>
|
|
174
|
-
</div>
|