nodebb-theme-harmony 1.0.0-beta.9 → 1.0.0-beta.90
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/README.md +12 -1
- package/languages/en-GB/harmony.json +5 -1
- package/library.js +25 -25
- package/package.json +1 -1
- package/plugin.json +0 -1
- package/public/harmony.js +148 -9
- package/public/settings.js +1 -0
- package/screenshots/categories.png +0 -0
- package/screenshots/recent.png +0 -0
- package/screenshots/topic.png +0 -0
- package/scss/account.scss +1 -1
- package/scss/chats.scss +53 -25
- package/scss/common.scss +78 -9
- package/scss/flags.scss +5 -0
- package/scss/groups.scss +2 -2
- package/scss/harmony.scss +3 -0
- package/scss/mixins.scss +7 -3
- package/scss/modals.scss +6 -1
- package/scss/modules/bottom-sheet.scss +1 -1
- package/scss/modules/composer.scss +0 -4
- package/scss/modules/cover.scss +1 -11
- package/scss/modules/filters.scss +8 -0
- package/scss/modules/paginator.scss +24 -0
- package/scss/modules/topic-navigator.scss +16 -42
- package/scss/modules/topics-list.scss +164 -16
- package/scss/modules/user-menu.scss +6 -0
- package/scss/overrides.scss +4 -1
- package/scss/sidebar.scss +39 -11
- package/scss/topic.scss +30 -13
- package/templates/account/blocks.tpl +35 -40
- package/templates/account/categories.tpl +47 -29
- package/templates/account/consent.tpl +66 -10
- package/templates/account/edit/password.tpl +25 -30
- package/templates/account/edit/username.tpl +21 -26
- package/templates/account/edit.tpl +105 -116
- package/templates/account/followers.tpl +12 -19
- package/templates/account/following.tpl +12 -18
- package/templates/account/groups.tpl +12 -17
- package/templates/account/info.tpl +178 -206
- package/templates/account/posts.tpl +31 -36
- package/templates/account/profile.tpl +66 -73
- package/templates/account/sessions.tpl +8 -30
- package/templates/account/settings.tpl +222 -203
- package/templates/account/theme.tpl +35 -26
- package/templates/account/topics.tpl +36 -38
- package/templates/account/uploads.tpl +33 -40
- package/templates/admin/plugins/harmony.tpl +17 -3
- package/templates/categories.tpl +2 -2
- package/templates/category.tpl +13 -14
- package/templates/chats.tpl +7 -8
- package/templates/flags/detail.tpl +160 -193
- package/templates/flags/list.tpl +4 -70
- package/templates/footer.tpl +2 -2
- package/templates/groups/details.tpl +21 -18
- package/templates/groups/list.tpl +1 -1
- package/templates/groups/members.tpl +0 -2
- package/templates/header.tpl +2 -2
- package/templates/login.tpl +2 -2
- package/templates/notifications.tpl +1 -1
- package/templates/partials/account/admin-menu.tpl +9 -9
- package/templates/partials/account/category-item.tpl +14 -17
- package/templates/partials/account/footer.tpl +3 -0
- package/templates/partials/account/header.tpl +78 -81
- package/templates/partials/account/session-list.tpl +18 -0
- package/templates/partials/account/sidebar-left.tpl +6 -0
- package/templates/partials/breadcrumbs.tpl +6 -6
- package/templates/partials/buttons/newTopic.tpl +1 -1
- package/templates/partials/categories/item.tpl +30 -23
- package/templates/partials/categories/lastpost.tpl +2 -2
- package/templates/partials/category/filter-dropdown-content.tpl +37 -0
- package/templates/partials/{category-selector-content.tpl → category/selector-dropdown-content.tpl} +7 -7
- package/templates/partials/category/sort.tpl +7 -7
- package/templates/partials/category/subcategory.tpl +1 -1
- package/templates/partials/category/tags.tpl +0 -2
- package/templates/partials/category/tools.tpl +28 -25
- package/templates/partials/category/watch.tpl +30 -6
- package/templates/partials/chats/dropdown.tpl +4 -1
- package/templates/partials/chats/message-window.tpl +8 -7
- package/templates/partials/chats/message.tpl +4 -6
- package/templates/partials/chats/options.tpl +14 -6
- package/templates/partials/chats/recent_room.tpl +41 -32
- package/templates/partials/cookie-consent.tpl +5 -5
- package/templates/partials/flags/bulk-actions.tpl +9 -0
- package/templates/partials/flags/filters.tpl +163 -78
- package/templates/partials/flags/results.tpl +38 -0
- package/templates/partials/groups/admin.tpl +4 -4
- package/templates/partials/groups/badge.tpl +1 -1
- package/templates/partials/groups/memberlist.tpl +1 -1
- package/templates/partials/groups/sidebar-left.tpl +1 -1
- package/templates/partials/header/brand.tpl +9 -2
- package/templates/partials/mobile-footer.tpl +69 -64
- package/templates/partials/notifications_list.tpl +11 -8
- package/templates/partials/paginator.tpl +11 -9
- package/templates/partials/post_bar.tpl +26 -24
- package/templates/partials/posts_list_item.tpl +5 -5
- package/templates/partials/quick-search-results.tpl +3 -3
- package/templates/partials/search-filters.tpl +184 -0
- package/templates/partials/search-results.tpl +28 -32
- package/templates/partials/sidebar/chats.tpl +22 -33
- package/templates/partials/sidebar/drafts.tpl +45 -34
- package/templates/partials/sidebar/logged-in-menu.tpl +5 -5
- package/templates/partials/sidebar/logged-out-menu.tpl +1 -1
- package/templates/partials/sidebar/notifications.tpl +29 -8
- package/templates/partials/sidebar/search.tpl +1 -1
- package/templates/partials/sidebar/user-menu.tpl +38 -29
- package/templates/partials/sidebar-left.tpl +11 -11
- package/templates/partials/sidebar-right.tpl +1 -3
- package/templates/partials/skin-switcher.tpl +3 -3
- package/templates/partials/tags/filter-dropdown-content.tpl +31 -0
- package/templates/partials/tags_list.tpl +4 -4
- package/templates/partials/topic/browsing-users.tpl +0 -2
- package/templates/partials/topic/event.tpl +1 -1
- package/templates/partials/topic/navigation-post.tpl +5 -9
- package/templates/partials/topic/navigator-mobile.tpl +62 -0
- package/templates/partials/topic/navigator.tpl +21 -17
- package/templates/partials/topic/post-editor.tpl +0 -2
- package/templates/partials/topic/post-menu-list.tpl +60 -62
- package/templates/partials/topic/post-menu.tpl +16 -11
- package/templates/partials/topic/post.tpl +43 -25
- package/templates/partials/topic/quickreply.tpl +5 -5
- package/templates/partials/topic/reply-button.tpl +3 -3
- package/templates/partials/topic/sort.tpl +17 -5
- package/templates/partials/topic/tools.tpl +2 -2
- package/templates/partials/topic/topic-menu-list.tpl +22 -24
- package/templates/partials/topic/watch.tpl +30 -6
- package/templates/partials/topic-filters.tpl +6 -3
- package/templates/partials/topic-list-bar.tpl +50 -46
- package/templates/partials/topic-terms.tpl +6 -3
- package/templates/partials/topics_list.tpl +54 -61
- package/templates/partials/userFilter-placeholders.tpl +5 -0
- package/templates/partials/users/filter-dropdown-content.tpl +23 -0
- package/templates/partials/users/item.tpl +25 -27
- package/templates/partials/users_list.tpl +1 -1
- package/templates/popular.tpl +3 -1
- package/templates/post-queue.tpl +166 -0
- package/templates/recent.tpl +3 -2
- package/templates/register.tpl +2 -2
- package/templates/search.tpl +39 -177
- package/templates/tags.tpl +3 -3
- package/templates/top.tpl +3 -1
- package/templates/topic.tpl +74 -68
- package/templates/unread.tpl +3 -1
- package/templates/users.tpl +7 -3
- package/templates/modules/usercard.tpl +0 -39
- package/templates/partials/acceptTos.tpl +0 -11
- package/templates/partials/category-filter-content.tpl +0 -30
- package/templates/partials/category-filter-right.tpl +0 -5
- package/templates/partials/category-filter.tpl +0 -3
- package/templates/partials/category-selector-right.tpl +0 -5
- package/templates/partials/category-selector.tpl +0 -3
- package/templates/partials/slideout-menu.tpl +0 -6
package/templates/flags/list.tpl
CHANGED
|
@@ -1,73 +1,7 @@
|
|
|
1
|
-
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
-
|
|
3
1
|
<!-- IMPORT partials/breadcrumbs.tpl -->
|
|
4
2
|
|
|
5
|
-
<div class="
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
<div class="col-sm-8 col-md-9">
|
|
10
|
-
<!-- IF hasFilter -->
|
|
11
|
-
<div class="alert alert-warning">
|
|
12
|
-
<p class="float-end">
|
|
13
|
-
<a href="{config.relative_path}/flags">[[flags:filter-reset]]</a>
|
|
14
|
-
</p>
|
|
15
|
-
[[flags:filter-active]]
|
|
16
|
-
</div>
|
|
17
|
-
<!-- ENDIF hasFilter -->
|
|
18
|
-
|
|
19
|
-
<div class="btn-group float-end" component="flags/bulk-actions">
|
|
20
|
-
<button type="button" class="btn btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" autocomplete="off" aria-haspopup="true" aria-expanded="false" disabled="disabled">
|
|
21
|
-
<i class="fa fa-clone"></i> [[flags:bulk-actions]] <span class="caret"></span>
|
|
22
|
-
</button>
|
|
23
|
-
<ul class="dropdown-menu">
|
|
24
|
-
<li><a href="#" class="dropdown-item" data-action="bulk-assign">[[flags:assign-to-me]]</a></li>
|
|
25
|
-
<li><a href="#" class="dropdown-item" data-action="bulk-mark-resolved">[[flags:bulk-resolve]]</a></li>
|
|
26
|
-
</ul>
|
|
27
|
-
</div>
|
|
28
|
-
|
|
29
|
-
<table class="table table-striped table-hover" component="flags/list">
|
|
30
|
-
<thead>
|
|
31
|
-
<tr>
|
|
32
|
-
<th>
|
|
33
|
-
<input type="checkbox" data-action="toggle-all" autocomplete="off" />
|
|
34
|
-
</th>
|
|
35
|
-
<th></th>
|
|
36
|
-
<th><span class="hidden-xs">[[flags:reports]] </span><i class="fa fa-user-plus"></i></th>
|
|
37
|
-
<th><span class="hidden-xs">[[flags:first-reported]] </span><i class="fa fa-clock-o"></i></th>
|
|
38
|
-
<th>[[flags:state]]</th>
|
|
39
|
-
</tr>
|
|
40
|
-
</thead>
|
|
41
|
-
<tbody>
|
|
42
|
-
<!-- IF !flags.length -->
|
|
43
|
-
<tr>
|
|
44
|
-
<td colspan="5">
|
|
45
|
-
<div class="alert alert-success text-center">
|
|
46
|
-
[[flags:no-flags]]
|
|
47
|
-
</div>
|
|
48
|
-
</td>
|
|
49
|
-
</tr>
|
|
50
|
-
<!-- ENDIF !flags.length -->
|
|
51
|
-
{{{each flags}}}
|
|
52
|
-
<tr data-flag-id="{../flagId}">
|
|
53
|
-
<td>
|
|
54
|
-
<input type="checkbox" autocomplete="off" />
|
|
55
|
-
</td>
|
|
56
|
-
<td>
|
|
57
|
-
<a href="{config.relative_path}/flags/{../flagId}">
|
|
58
|
-
<strong>{../target_readable}</strong>
|
|
59
|
-
</a>
|
|
60
|
-
</td>
|
|
61
|
-
<td>
|
|
62
|
-
{./heat}
|
|
63
|
-
</td>
|
|
64
|
-
<td><span class="timeago" title="{../datetimeISO}"></span></td>
|
|
65
|
-
<td><span class="badge bg-{../labelClass}">[[flags:state-{../state}]]</span></td>
|
|
66
|
-
</tr>
|
|
67
|
-
{{{end}}}
|
|
68
|
-
</tbody>
|
|
69
|
-
</table>
|
|
70
|
-
|
|
71
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
72
|
-
</div>
|
|
3
|
+
<div class="d-flex flex-column gap-3">
|
|
4
|
+
<!-- IMPORT partials/flags/filters.tpl -->
|
|
5
|
+
<!-- IMPORT partials/flags/bulk-actions.tpl -->
|
|
6
|
+
<!-- IMPORT partials/flags/results.tpl -->
|
|
73
7
|
</div>
|
package/templates/footer.tpl
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
</div>
|
|
6
6
|
<!-- IMPORT partials/mobile-footer.tpl -->
|
|
7
7
|
{{{ if !isSpider }}}
|
|
8
|
-
<div class="
|
|
9
|
-
<div component="toaster/tray" class="
|
|
8
|
+
<div class="">
|
|
9
|
+
<div component="toaster/tray" class="alert-window fixed-bottom mb-5 mb-md-2 me-2 me-md-5 ms-auto" style="width:300px; z-index: 1090;">
|
|
10
10
|
<div id="reconnect-alert" class="alert alert-dismissible alert-warning clearfix hide" component="toaster/toast">
|
|
11
11
|
<button type="button" class="btn-close float-end" data-bs-dismiss="alert" aria-hidden="true"></button>
|
|
12
12
|
<p>[[global:reconnecting-message, {config.siteTitle}]]</p>
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
<div class="cover position-absolute start-0 top-0" component="groups/cover" style="background-image: url({group.cover:url}); background-position: {group.cover:position};">
|
|
3
3
|
<div class="container">
|
|
4
4
|
{{{ if group.isOwner }}}
|
|
5
|
-
<div class="controls">
|
|
6
|
-
<span class="upload"><i class="fa fa-fw fa-
|
|
7
|
-
<span class="resize"><i class="fa fa-fw fa-
|
|
8
|
-
<span class="remove"><i class="fa fa-fw fa-
|
|
5
|
+
<div class="controls text-center">
|
|
6
|
+
<span class="upload p-2 m-2 rounded-1 text-bg-light opacity-75"><i class="fa fa-fw fa-upload"></i></span>
|
|
7
|
+
<span class="resize p-2 m-2 rounded-1 text-bg-light opacity-75"><i class="fa fa-fw fa-arrows"></i></span>
|
|
8
|
+
<span class="remove p-2 m-2 rounded-1 text-bg-light opacity-75"><i class="fa fa-fw fa-times"></i></span>
|
|
9
9
|
</div>
|
|
10
10
|
<div class="save text-bg-primary">[[groups:cover-save]] <i class="fa fa-fw fa-floppy-o"></i></div>
|
|
11
11
|
<div class="indicator text-bg-primary">[[groups:cover-saving]] <i class="fa fa-fw fa-refresh fa-spin"></i></div>
|
|
@@ -13,24 +13,27 @@
|
|
|
13
13
|
</div>
|
|
14
14
|
</div>
|
|
15
15
|
|
|
16
|
-
<div class="d-flex flex-column pb-4 mb-4 mt-2 border-bottom">
|
|
17
|
-
<div class="d-flex
|
|
16
|
+
<div class="d-flex flex-column flex-md-row justify-content-md-between pb-4 mb-4 mt-2 border-bottom">
|
|
17
|
+
<div class="d-flex flex-column mt-1">
|
|
18
18
|
<div class="d-flex align-items-center gap-2">
|
|
19
|
-
<
|
|
20
|
-
{{{ if group.private }}}<span class="badge text-bg-light border border-1">[[groups:details.private]]</span>{{{ end }}}
|
|
21
|
-
{{{ if group.hidden }}}<span class="badge text-bg-light border border-1">[[groups:details.hidden]]</span>{{{ end }}}
|
|
19
|
+
<h3 class="mb-0">{group.displayName}</h3>
|
|
22
20
|
</div>
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
<a href="{config.relative_path}/admin/manage/groups/{group.nameEncoded}" target="_blank" class="btn btn-light"><i class="fa fa-gear"></i> [[user:edit]]</a>
|
|
30
|
-
{{{ end }}}
|
|
21
|
+
<div class="d-flex gap-2">
|
|
22
|
+
{group.descriptionParsed}
|
|
23
|
+
<div>
|
|
24
|
+
{{{ if group.private }}}<span class="badge text-bg-light border border-1">[[groups:details.private]]</span>{{{ end }}}
|
|
25
|
+
{{{ if group.hidden }}}<span class="badge text-bg-light border border-1">[[groups:details.hidden]]</span>{{{ end }}}
|
|
26
|
+
</div>
|
|
31
27
|
</div>
|
|
32
28
|
</div>
|
|
33
|
-
|
|
29
|
+
<div>
|
|
30
|
+
{{{ if loggedIn }}}
|
|
31
|
+
{function.membershipBtn, group}
|
|
32
|
+
{{{ end }}}
|
|
33
|
+
{{{ if isAdmin }}}
|
|
34
|
+
<a href="{config.relative_path}/admin/manage/groups/{group.nameEncoded}" target="_blank" class="btn btn-light"><i class="fa fa-gear"></i> [[user:edit]]</a>
|
|
35
|
+
{{{ end }}}
|
|
36
|
+
</div>
|
|
34
37
|
</div>
|
|
35
38
|
|
|
36
39
|
<div class="d-flex flex-column flex-md-row">
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
{{{end}}}
|
|
5
5
|
</div>
|
|
6
6
|
<div class="groups list">
|
|
7
|
-
<
|
|
7
|
+
<h3 class="fw-semibold">[[pages:groups]]</h3>
|
|
8
8
|
<div class="d-flex flex-wrap justify-content-between">
|
|
9
9
|
<div class="mb-2 mb-md-0">
|
|
10
10
|
<div class="text-sm d-flex flex-wrap align-items-center gap-2">
|
package/templates/header.tpl
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
</head>
|
|
25
25
|
|
|
26
26
|
<body class="{bodyClass} skin-{{{if bootswatchSkin}}}{bootswatchSkin}{{{else}}}noskin{{{end}}}">
|
|
27
|
-
<div class="d-flex justify-content-between pb-4 pb-md-0">
|
|
27
|
+
<div class="layout-container d-flex justify-content-between pb-4 pb-md-0">
|
|
28
28
|
<!-- IMPORT partials/sidebar-left.tpl -->
|
|
29
29
|
|
|
30
30
|
<main id="panel" class="d-flex flex-column gap-3 flex-grow-1 mt-3" style="min-width: 0;">
|
|
@@ -39,6 +39,6 @@
|
|
|
39
39
|
document.documentElement.style.setProperty('--panel-offset', `0px`);
|
|
40
40
|
}
|
|
41
41
|
</script>
|
|
42
|
-
<div class="container d-flex flex-column gap-3" id="content">
|
|
42
|
+
<div class="container px-md-4 d-flex flex-column gap-3" id="content">
|
|
43
43
|
<!-- IMPORT partials/noscript/warning.tpl -->
|
|
44
44
|
<!-- IMPORT partials/noscript/message.tpl -->
|
package/templates/login.tpl
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<h2 class="tracking-tight fw-semibold text-center">[[global:login]]</h2>
|
|
9
9
|
<div class="row justify-content-center gap-5">
|
|
10
10
|
{{{ if allowLocalLogin }}}
|
|
11
|
-
<div class="col-12 col-md-3 px-md-0">
|
|
11
|
+
<div class="col-12 col-md-5 col-lg-3 px-md-0">
|
|
12
12
|
<div class="login-block">
|
|
13
13
|
<div class="alert alert-danger alert-dismissible" id="login-error-notify" {{{ if error }}}style="display:block"{{{ else }}}style="display: none;"{{{ end }}}>
|
|
14
14
|
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
{{{ end }}}
|
|
69
69
|
|
|
70
70
|
{{{ if alternate_logins }}}
|
|
71
|
-
<div class="col-12 col-md-3 px-md-0">
|
|
71
|
+
<div class="col-12 col-md-5 col-lg-3 px-md-0">
|
|
72
72
|
<div class="alt-login-block d-flex flex-column gap-2">
|
|
73
73
|
<label>[[login:alternative_logins]]</label>
|
|
74
74
|
<ul class="alt-logins list-unstyled">
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<div class="notifications">
|
|
2
2
|
<div class="btn-toolbar justify-content-end" role="toolbar">
|
|
3
|
-
<button class="btn btn-light" component="notifications/mark_all">[[notifications:mark_all_read]]</button>
|
|
3
|
+
<button class="btn btn-sm btn-light" component="notifications/mark_all">[[notifications:mark_all_read]]</button>
|
|
4
4
|
</div>
|
|
5
5
|
|
|
6
6
|
<hr class="text-muted opacity-25"/>
|
|
@@ -2,34 +2,34 @@
|
|
|
2
2
|
<button type="button" class="btn btn-light dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
3
3
|
<i class="fa fa-gear fa-fw"></i>
|
|
4
4
|
</button>
|
|
5
|
-
<ul class="dropdown-menu dropdown-menu-end account-sub-links">
|
|
5
|
+
<ul class="dropdown-menu dropdown-menu-end p-1 text-sm account-sub-links">
|
|
6
6
|
<li>
|
|
7
|
-
<a class="dropdown-item" href="{config.relative_path}/user/{userslug}/info">[[user:account_info]]</a>
|
|
7
|
+
<a class="dropdown-item rounded-1" href="{config.relative_path}/user/{userslug}/info">[[user:account_info]]</a>
|
|
8
8
|
</li>
|
|
9
9
|
{{{ if (canBan || canMute) }}}
|
|
10
10
|
<li role="separator" class="dropdown-divider"></li>
|
|
11
11
|
{{{ end }}}
|
|
12
12
|
{{{ if canBan }}}
|
|
13
13
|
<li class="{{{ if banned }}}hide{{{ end }}}">
|
|
14
|
-
<a class="dropdown-item" component="account/ban" href="#">[[user:ban_account]]</a>
|
|
14
|
+
<a class="dropdown-item rounded-1" component="account/ban" href="#">[[user:ban_account]]</a>
|
|
15
15
|
</li>
|
|
16
16
|
<li class="{{{ if !banned }}}hide{{{ end }}}">
|
|
17
|
-
<a class="dropdown-item" component="account/unban" href="#">[[user:unban_account]]</a>
|
|
17
|
+
<a class="dropdown-item rounded-1" component="account/unban" href="#">[[user:unban_account]]</a>
|
|
18
18
|
</li>
|
|
19
19
|
{{{ end }}}
|
|
20
20
|
{{{ if canMute }}}
|
|
21
21
|
<li class="{{{ if muted }}}hide{{{ end }}}">
|
|
22
|
-
<a class="dropdown-item" component="account/mute" href="#">[[user:mute_account]]</a>
|
|
22
|
+
<a class="dropdown-item rounded-1" component="account/mute" href="#">[[user:mute_account]]</a>
|
|
23
23
|
</li>
|
|
24
24
|
<li class="{{{ if !muted }}}hide{{{ end }}}">
|
|
25
|
-
<a class="dropdown-item" component="account/unmute" href="#">[[user:unmute_account]]</a>
|
|
25
|
+
<a class="dropdown-item rounded-1" component="account/unmute" href="#">[[user:unmute_account]]</a>
|
|
26
26
|
</li>
|
|
27
27
|
{{{ end }}}
|
|
28
28
|
{{{ if isAdmin }}}
|
|
29
29
|
<li>
|
|
30
|
-
<a component="account/delete-account" href="#" class="dropdown-item">[[user:delete_account_as_admin]]</a>
|
|
31
|
-
<a component="account/delete-content" href="#" class="dropdown-item">[[user:delete_content]]</a>
|
|
32
|
-
<a component="account/delete-all" href="#" class="dropdown-item">[[user:delete_all]]</a>
|
|
30
|
+
<a component="account/delete-account" href="#" class="dropdown-item rounded-1">[[user:delete_account_as_admin]]</a>
|
|
31
|
+
<a component="account/delete-content" href="#" class="dropdown-item rounded-1">[[user:delete_content]]</a>
|
|
32
|
+
<a component="account/delete-all" href="#" class="dropdown-item rounded-1">[[user:delete_all]]</a>
|
|
33
33
|
</li>
|
|
34
34
|
{{{ end }}}
|
|
35
35
|
</ul>
|
|
@@ -1,25 +1,22 @@
|
|
|
1
|
-
<li component="categories/category" data-cid="{./cid}" class="
|
|
1
|
+
<li component="categories/category" data-cid="{./cid}" data-parent-cid="{../parentCid}" class="category-{./cid}">
|
|
2
2
|
<meta itemprop="name" content="{./name}">
|
|
3
|
-
<div class="content
|
|
4
|
-
<div class="d-flex">
|
|
5
|
-
<div
|
|
6
|
-
{buildCategoryIcon(@value, "
|
|
3
|
+
<div class="content depth-{./depth} d-flex gap-2">
|
|
4
|
+
<div class="flex-1 align-items-start d-flex gap-2">
|
|
5
|
+
<div>
|
|
6
|
+
{buildCategoryIcon(@value, "24px", "rounded-1")}
|
|
7
7
|
</div>
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
<h3 class="title">
|
|
8
|
+
<div class="d-grid gap-0">
|
|
9
|
+
<div class="title fw-semibold">
|
|
11
10
|
<!-- IMPORT partials/categories/link.tpl -->
|
|
12
|
-
</h3>
|
|
13
|
-
<!-- description -->
|
|
14
|
-
<div class="mb-2">
|
|
15
|
-
{{{ if ../descriptionParsed }}}
|
|
16
|
-
<div class="description text-muted">{../descriptionParsed}</div>
|
|
17
|
-
{{{ end }}}
|
|
18
11
|
</div>
|
|
12
|
+
{{{ if ./descriptionParsed }}}
|
|
13
|
+
<div class="description text-muted text-xs">{./descriptionParsed}</div>
|
|
14
|
+
{{{ end }}}
|
|
19
15
|
</div>
|
|
20
16
|
</div>
|
|
17
|
+
<div class="flex-grow-0 flex-shrink-0">
|
|
18
|
+
<!-- IMPORT partials/category/watch.tpl -->
|
|
19
|
+
</div>
|
|
21
20
|
</div>
|
|
22
|
-
<
|
|
23
|
-
<!-- IMPORT partials/category/watch.tpl -->
|
|
24
|
-
</div>
|
|
21
|
+
<hr class="text-muted opacity-25"/>
|
|
25
22
|
</li>
|
|
@@ -1,101 +1,98 @@
|
|
|
1
|
-
<div
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
<div class="account">
|
|
2
|
+
<div data-widget-area="header">
|
|
3
|
+
{{{each widgets.header}}}
|
|
4
|
+
{{widgets.header.html}}
|
|
5
|
+
{{{end}}}
|
|
6
|
+
</div>
|
|
6
7
|
|
|
7
|
-
<div class="cover position-absolute start-0 top-0 w-100" component="account/cover" style="background-image: url({cover:url}); background-position: {cover:position};">
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
<div class="cover position-absolute start-0 top-0 w-100" component="account/cover" style="background-image: url({cover:url}); background-position: {cover:position};">
|
|
9
|
+
<div class="container">
|
|
10
|
+
{{{ if allowCoverPicture }}}
|
|
11
|
+
{{{ if canEdit }}}
|
|
12
|
+
<div class="controls text-center">
|
|
13
|
+
<span class="upload p-2 m-2 rounded-1 text-bg-light opacity-75"><i class="fa fa-fw fa-upload"></i></span>
|
|
14
|
+
<span class="resize p-2 m-2 rounded-1 text-bg-light opacity-75"><i class="fa fa-fw fa-arrows"></i></span>
|
|
15
|
+
<span class="remove p-2 m-2 rounded-1 text-bg-light opacity-75"><i class="fa fa-fw fa-times"></i></span>
|
|
16
|
+
</div>
|
|
17
|
+
<div class="save text-bg-primary">[[groups:cover-save]] <i class="fa fa-fw fa-floppy-o"></i></div>
|
|
18
|
+
<div class="indicator text-bg-primary">[[groups:cover-saving]] <i class="fa fa-fw fa-refresh fa-spin"></i></div>
|
|
19
|
+
{{{ end }}}
|
|
20
|
+
{{{ end }}}
|
|
15
21
|
</div>
|
|
16
|
-
<div class="save text-bg-primary">[[groups:cover-save]] <i class="fa fa-fw fa-floppy-o"></i></div>
|
|
17
|
-
<div class="indicator text-bg-primary">[[groups:cover-saving]] <i class="fa fa-fw fa-refresh fa-spin"></i></div>
|
|
18
|
-
{{{ end }}}
|
|
19
|
-
{{{ end }}}
|
|
20
22
|
</div>
|
|
21
|
-
</div>
|
|
22
23
|
|
|
23
|
-
<div class="d-flex flex-column flex-md-row gap-2 w-100 pb-4 mb-4 mt-2 border-bottom">
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
<div class="d-flex flex-column flex-md-row gap-2 w-100 pb-4 mb-4 mt-2 border-bottom">
|
|
25
|
+
<div {{{ if (allowProfilePicture && isSelfOrAdminOrGlobalModerator)}}}component="profile/change/picture"{{{ end }}} class="avatar-wrapper border-4 position-relative align-self-center align-self-md-start hover-parent" style="margin-top: -75px;">
|
|
26
|
+
{buildAvatar(@value, "142px", true)}
|
|
27
|
+
{{{ if (allowProfilePicture && isSelfOrAdminOrGlobalModerator)}}}
|
|
28
|
+
<div component="profile/change/picture" class="d-none d-md-block pointer p-2 rounded-1 opacity-75 text-bg-light position-absolute top-50 start-50 translate-middle hover-visible">
|
|
29
|
+
<span class="upload"><i class="fa fa-fw fa-upload"></i></span>
|
|
30
|
+
</div>
|
|
31
|
+
{{{ end }}}
|
|
32
|
+
</div>
|
|
31
33
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
<div class="d-flex flex-column flex-md-row mt-1 justify-content-between w-100 gap-2">
|
|
35
|
+
<div class="d-flex flex-1 flex-row gap-2">
|
|
36
|
+
<div class="d-flex flex-column">
|
|
37
|
+
<h2 class="fullname fw-semibold fs-2 tracking-tight mb-0">{{{ if fullname }}}{fullname}{{{ else }}}{username}{{{ end }}}</h2>
|
|
38
|
+
<div class="d-flex flex-wrap gap-1 text-sm align-items-center">
|
|
39
|
+
<span class="username fw-bold">{{{ if !banned }}}@{username}{{{ else }}}[[user:banned]]{{{ end }}}</span>
|
|
40
|
+
<div class="d-flex align-items-center gap-1 p-1">
|
|
41
|
+
{{{ if selectedGroup.length }}}
|
|
42
|
+
{{{ each selectedGroup }}}
|
|
43
|
+
{{{ if ./slug }}}
|
|
44
|
+
<!-- IMPORT partials/groups/badge.tpl -->
|
|
45
|
+
{{{ end }}}
|
|
46
|
+
{{{ end }}}
|
|
47
|
+
{{{ end }}}
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
39
50
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
{{{ if selectedGroup.length }}}
|
|
48
|
-
{{{ each selectedGroup }}}
|
|
49
|
-
{{{ if ./slug }}}
|
|
50
|
-
<!-- IMPORT partials/groups/badge.tpl -->
|
|
51
|
-
{{{ end }}}
|
|
52
|
-
{{{ end }}}
|
|
51
|
+
{{{ if isAdminOrGlobalModeratorOrModerator }}}
|
|
52
|
+
{{{ if banned }}}
|
|
53
|
+
<div class="text-xm text-muted">
|
|
54
|
+
{{{ if banned_until }}}
|
|
55
|
+
[[user:info.banned-until, {banned_until_readable}]]
|
|
56
|
+
{{{ else }}}
|
|
57
|
+
[[user:info.banned-permanently]]
|
|
53
58
|
{{{ end }}}
|
|
54
59
|
</div>
|
|
60
|
+
{{{ end }}}
|
|
61
|
+
{{{ end }}}
|
|
55
62
|
</div>
|
|
63
|
+
</div>
|
|
64
|
+
|
|
65
|
+
<div class="d-flex gap-1 align-self-stretch align-self-md-start justify-content-end">
|
|
66
|
+
{{{ if loggedIn }}}
|
|
67
|
+
{{{ if !isSelf }}}
|
|
68
|
+
<a component="account/unfollow" href="#" class="btn btn-info flex-fill{{{ if !isFollowing }}} hide{{{ end }}}">[[user:unfollow]]</a>
|
|
69
|
+
<a component="account/follow" href="#" class="btn btn-primary flex-fill{{{ if isFollowing }}} hide{{{ end }}}">[[user:follow]]</a>
|
|
70
|
+
{{{ end }}}
|
|
71
|
+
{{{ end }}}
|
|
56
72
|
|
|
57
|
-
{{{ if
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
{{{ if
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
73
|
+
{{{ if (loggedIn && (!isSelf && (!banned && !config.disableChat))) }}}
|
|
74
|
+
<div class="btn-group flex-fill">
|
|
75
|
+
<a {{{ if hasPrivateChat }}}component="account/chat"{{{ else }}}component="account/new-chat"{{{ end }}} href="#" class="btn btn-light" role="button">[[user:chat]]</a>
|
|
76
|
+
{{{ if hasPrivateChat}}}
|
|
77
|
+
<button type="button" class="btn btn-light dropdown-toggle flex-0" data-bs-toggle="dropdown">
|
|
78
|
+
<i class="fa fa-caret-down"></i>
|
|
79
|
+
</button>
|
|
80
|
+
<ul class="dropdown-menu dropdown-menu-end p-1 text-sm" role="menu">
|
|
81
|
+
<li><a class="dropdown-item rounded-1" href="#" component="account/new-chat">[[user:new_chat_with, {username}]]</a></li>
|
|
82
|
+
</ul>
|
|
64
83
|
{{{ end }}}
|
|
65
84
|
</div>
|
|
66
85
|
{{{ end }}}
|
|
86
|
+
{{{ if !isSelf }}}
|
|
87
|
+
{{{ if (isAdmin || (canBan || canMute ))}}}
|
|
88
|
+
<!-- IMPORT partials/account/admin-menu.tpl -->
|
|
67
89
|
{{{ end }}}
|
|
68
|
-
</div>
|
|
69
|
-
</div>
|
|
70
|
-
|
|
71
|
-
<div class="d-flex gap-1 align-self-stretch align-self-md-start justify-content-end">
|
|
72
|
-
{{{ if loggedIn }}}
|
|
73
|
-
{{{ if !isSelf }}}
|
|
74
|
-
<a component="account/unfollow" href="#" class="btn btn-info flex-fill{{{ if !isFollowing }}} hide{{{ end }}}">[[user:unfollow]]</a>
|
|
75
|
-
<a component="account/follow" href="#" class="btn btn-primary flex-fill{{{ if isFollowing }}} hide{{{ end }}}">[[user:follow]]</a>
|
|
76
|
-
{{{ end }}}
|
|
77
|
-
{{{ end }}}
|
|
78
|
-
|
|
79
|
-
{{{ if (loggedIn && (!isSelf && (!banned && !config.disableChat))) }}}
|
|
80
|
-
<div class="btn-group flex-fill">
|
|
81
|
-
<a {{{ if hasPrivateChat }}}component="account/chat"{{{ else }}}component="account/new-chat"{{{ end }}} href="#" class="btn btn-light" role="button">[[user:chat]]</a>
|
|
82
|
-
{{{ if hasPrivateChat}}}
|
|
83
|
-
<button type="button" class="btn btn-light dropdown-toggle flex-0" data-bs-toggle="dropdown">
|
|
84
|
-
<i class="fa fa-caret-down"></i>
|
|
85
|
-
</button>
|
|
86
|
-
<ul class="dropdown-menu dropdown-menu-end" role="menu">
|
|
87
|
-
<li><a class="dropdown-item" href="#" component="account/new-chat">[[user:new_chat_with, {username}]]</a></li>
|
|
88
|
-
</ul>
|
|
89
90
|
{{{ end }}}
|
|
90
91
|
</div>
|
|
91
|
-
{{{ end }}}
|
|
92
|
-
{{{ if !isSelf }}}
|
|
93
|
-
{{{ if (isAdmin || (canBan || canMute ))}}}
|
|
94
|
-
<!-- IMPORT partials/account/admin-menu.tpl -->
|
|
95
|
-
{{{ end }}}
|
|
96
|
-
{{{ end }}}
|
|
97
92
|
</div>
|
|
98
93
|
</div>
|
|
99
|
-
</div>
|
|
100
94
|
|
|
95
|
+
<div class="d-flex flex-column flex-md-row">
|
|
96
|
+
<!-- IMPORT partials/account/sidebar-left.tpl -->
|
|
97
|
+
<div class="account-content flex-1 ps-md-2 ps-lg-3 ps-xl-4" style="min-width: 0;">
|
|
101
98
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{{{ each sessions }}}
|
|
2
|
+
<li class="list-group-item text-break" data-uuid="{./uuid}">
|
|
3
|
+
<div class="float-end">
|
|
4
|
+
{{{ if isSelfOrAdminOrGlobalModerator }}}
|
|
5
|
+
{{{ if !./current }}}
|
|
6
|
+
<button class="btn btn-sm btn-outline-secondary" type="button" data-action="revokeSession">[[user:revoke-session]]</button>
|
|
7
|
+
{{{ end }}}
|
|
8
|
+
{{{ end }}}
|
|
9
|
+
{function.userAgentIcons}
|
|
10
|
+
<i class="fa fa-circle text-{{{ if ./current }}}success{{{ else }}}muted{{{ end }}}"></i>
|
|
11
|
+
</div>
|
|
12
|
+
[[user:browser-version-on-platform, {./browser}, {./version}, {./platform}]]<br />
|
|
13
|
+
<small class="timeago text-muted" title="{../datetimeISO}"></small>
|
|
14
|
+
<ul>
|
|
15
|
+
<li><strong>[[global:ip_address]]</strong>: {../ip}</li>
|
|
16
|
+
</ul>
|
|
17
|
+
</li>
|
|
18
|
+
{{{ end }}}
|
|
@@ -39,6 +39,12 @@
|
|
|
39
39
|
</a>
|
|
40
40
|
|
|
41
41
|
{{{ if canEdit }}}
|
|
42
|
+
<a href="{config.relative_path}/user/{userslug}/categories" class="btn-ghost fw-semibold
|
|
43
|
+
{{{ if template.account/categories }}}active{{{ end }}}">
|
|
44
|
+
<div class="flex-1">[[user:watched_categories]]</div>
|
|
45
|
+
<span class="text-xs human-readable-number" title="{counts.categoriesWatched}">{counts.categoriesWatched}</span>
|
|
46
|
+
</a>
|
|
47
|
+
|
|
42
48
|
<a href="{config.relative_path}/user/{userslug}/blocks" class="btn-ghost fw-semibold
|
|
43
49
|
{{{ if template.account/blocks }}}active{{{ end }}}">
|
|
44
50
|
<div class="flex-1">[[user:blocked-users]]</div>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{{{ if breadcrumbs.length }}}
|
|
2
|
-
<ol class="breadcrumb mb-0 {{{ if config.centerHeaderElements }}}justify-content-center{{{ end }}}" itemscope="itemscope" itemprop="breadcrumb" itemtype="http://schema.org/BreadcrumbList">
|
|
3
|
-
{{{each breadcrumbs}}}
|
|
4
|
-
<li
|
|
2
|
+
<ol class="breadcrumb mb-0 {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}" itemscope="itemscope" itemprop="breadcrumb" itemtype="http://schema.org/BreadcrumbList">
|
|
3
|
+
{{{ each breadcrumbs }}}
|
|
4
|
+
<li{{{ if @last }}} component="breadcrumb/current"{{{ end }}} itemscope="itemscope" itemprop="itemListElement" itemtype="http://schema.org/ListItem" class="breadcrumb-item {{{ if @last }}}active{{{ end }}}">
|
|
5
5
|
<meta itemprop="position" content="{@index}" />
|
|
6
|
-
{{{ if ./url }}}<a href="{
|
|
7
|
-
<span class="fw-semibold" itemprop="name">{
|
|
6
|
+
{{{ if ./url }}}<a href="{./url}" itemprop="item">{{{ end }}}
|
|
7
|
+
<span class="fw-semibold" itemprop="name">{./text}</span>
|
|
8
8
|
{{{ if ./url }}}</a>{{{ end }}}
|
|
9
9
|
</li>
|
|
10
|
-
{{{end}}}
|
|
10
|
+
{{{ end }}}
|
|
11
11
|
</ol>
|
|
12
12
|
{{{ end }}}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
</button>
|
|
5
5
|
<noscript>
|
|
6
6
|
<input type="checkbox" class="hidden" id="category-dropdown-check" aria-hidden="true">
|
|
7
|
-
<ul component="category/list" class="dropdown-menu category-dropdown-menu" role="menu">
|
|
7
|
+
<ul component="category/list" class="dropdown-menu p-1 text-sm category-dropdown-menu" role="menu">
|
|
8
8
|
{{{each categories}}}
|
|
9
9
|
<li role="presentation" class="category {{{if categories.disabledClass}}}disabled{{{end}}}">
|
|
10
10
|
<a role="menu-item" href="{config.relative_path}/compose?cid={categories.cid}">{categories.level}
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
<div class="">
|
|
6
6
|
{buildCategoryIcon(@value, "40px", "rounded-1")}
|
|
7
7
|
</div>
|
|
8
|
-
<div class="d-flex flex-column gap-1">
|
|
9
|
-
<h2 class="title fw-
|
|
8
|
+
<div class="d-flex flex-column gap-1 flex-1">
|
|
9
|
+
<h2 class="title fw-semibold fs-4 m-0 tracking-tight">
|
|
10
10
|
<!-- IMPORT partials/categories/link.tpl -->
|
|
11
11
|
</h2>
|
|
12
12
|
{{{ if ./descriptionParsed }}}
|
|
13
|
-
<div class="description text-muted
|
|
13
|
+
<div class="description text-muted text-xs">
|
|
14
14
|
{./descriptionParsed}
|
|
15
15
|
</div>
|
|
16
16
|
{{{ end }}}
|
|
@@ -21,9 +21,15 @@
|
|
|
21
21
|
{{{ if !./isSection }}}
|
|
22
22
|
<span class="category-children-item small">
|
|
23
23
|
{{{ if ./link }}}
|
|
24
|
-
<
|
|
24
|
+
<div class="d-flex align-items-start gap-1">
|
|
25
|
+
<i class="fa fa-fw fa-caret-right text-primary mt-1"></i>
|
|
26
|
+
<a href="{./link}" class="text-reset fw-semibold">{./name}</a>
|
|
27
|
+
</div>
|
|
25
28
|
{{{ else }}}
|
|
26
|
-
<
|
|
29
|
+
<div class="d-flex align-items-start gap-1">
|
|
30
|
+
<i class="fa fa-fw fa-caret-right text-primary mt-1"></i>
|
|
31
|
+
<a href="{config.relative_path}/category/{./slug}" class="text-reset fw-semibold">{./name}</a>
|
|
32
|
+
</div>
|
|
27
33
|
{{{ end }}}
|
|
28
34
|
</span>
|
|
29
35
|
{{{ end }}}
|
|
@@ -33,27 +39,28 @@
|
|
|
33
39
|
{{{ end }}}
|
|
34
40
|
</div>
|
|
35
41
|
</div>
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
<div class="row col-md-5 col-sm-3 d-none d-md-flex align-self-start">
|
|
43
|
+
{{{ if !./link }}}
|
|
44
|
+
<div class="col-md-5 d-none d-lg-flex stats text-muted gap-2 px-0">
|
|
45
|
+
<div class="w-50">
|
|
46
|
+
<div class="card card-header align-items-center px-0 py-2 border-0 rounded-1">
|
|
47
|
+
<span class="{./unread-class} human-readable-number fs-5 ff-secondary" title="{./totalTopicCount}">{./totalTopicCount}</span>
|
|
48
|
+
<span class="text-lowercase text-xs">[[global:topics]]</span>
|
|
49
|
+
</div>
|
|
43
50
|
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
51
|
+
<div class="w-50">
|
|
52
|
+
<div class="card card-header align-items-center px-0 py-2 border-0 rounded-1">
|
|
53
|
+
<span class="{./unread-class} human-readable-number fs-5 ff-secondary" title="{./totalPostCount}">{./totalPostCount}</span>
|
|
54
|
+
<span class="text-lowercase text-xs">[[global:posts]]</span>
|
|
55
|
+
</div>
|
|
49
56
|
</div>
|
|
50
57
|
</div>
|
|
51
|
-
</div>
|
|
52
58
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
59
|
+
{{{ if !config.hideCategoryLastPost }}}
|
|
60
|
+
<div class="col-md-7 col-sm-3 teaser d-none d-sm-block" component="topic/teaser">
|
|
61
|
+
<!-- IMPORT partials/categories/lastpost.tpl -->
|
|
62
|
+
</div>
|
|
63
|
+
{{{ end }}}
|
|
64
|
+
{{{ end }}}
|
|
56
65
|
</div>
|
|
57
|
-
{{{ end }}}
|
|
58
|
-
{{{ end }}}
|
|
59
66
|
</li>
|