nodebb-theme-harmony 2.0.0-pre.9 → 2.0.0
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 +3 -0
- package/library.js +1 -7
- package/package-lock.json +372 -402
- package/package.json +2 -2
- package/plugin.json +1 -2
- package/public/harmony.js +15 -15
- package/scss/common.scss +2 -8
- package/scss/harmony.scss +0 -1
- package/scss/header.scss +1 -1
- package/scss/mixins.scss +12 -5
- package/scss/modules/cover.scss +2 -4
- package/scss/modules/topics-list.scss +1 -1
- package/scss/overrides.scss +4 -0
- package/scss/sidebar.scss +18 -19
- package/scss/skins.scss +9 -0
- package/scss/topic.scss +4 -12
- package/templates/account/blocks.tpl +18 -7
- package/templates/account/categories.tpl +1 -1
- package/templates/account/consent.tpl +2 -2
- package/templates/account/edit/password.tpl +8 -8
- package/templates/account/edit/username.tpl +2 -3
- package/templates/account/edit.tpl +30 -15
- package/templates/account/info.tpl +142 -73
- package/templates/account/posts.tpl +7 -7
- package/templates/account/profile.tpl +19 -22
- package/templates/account/read.tpl +1 -0
- package/templates/account/settings.tpl +5 -5
- package/templates/account/shares.tpl +20 -0
- package/templates/account/topics.tpl +6 -5
- package/templates/admin/plugins/harmony.tpl +1 -0
- package/templates/footer.tpl +1 -1
- package/templates/groups/list.tpl +9 -7
- package/templates/notifications.tpl +1 -1
- package/templates/partials/account/header.tpl +15 -15
- package/templates/partials/account/sidebar-left.tpl +30 -16
- package/templates/partials/breadcrumbs-json-ld.tpl +15 -25
- package/templates/partials/categories/item.tpl +8 -8
- package/templates/partials/categories/lastpost.tpl +1 -1
- package/templates/partials/category/subcategory.tpl +1 -1
- package/templates/partials/groups/list.tpl +1 -1
- package/templates/partials/groups/memberlist.tpl +1 -1
- package/templates/partials/groups/sidebar-left.tpl +8 -8
- package/templates/partials/header/brand.tpl +3 -1
- package/templates/partials/mobile-footer.tpl +3 -6
- package/templates/partials/notifications_list.tpl +2 -2
- package/templates/partials/post_bar.tpl +3 -5
- package/templates/partials/posts_list_item.tpl +1 -1
- package/templates/partials/quick-search-results.tpl +5 -5
- package/templates/partials/search-filters.tpl +1 -1
- package/templates/partials/search-results.tpl +1 -1
- package/templates/partials/sidebar/chats.tpl +1 -1
- package/templates/partials/sidebar/notifications.tpl +1 -1
- package/templates/partials/sidebar/search.tpl +2 -2
- package/templates/partials/sidebar-left.tpl +2 -5
- package/templates/partials/tags_list.tpl +6 -4
- package/templates/partials/topic/event.tpl +1 -1
- package/templates/partials/topic/navigator.tpl +2 -2
- package/templates/partials/topic/post-menu-list.tpl +20 -4
- package/templates/partials/topic/post-menu.tpl +3 -29
- package/templates/partials/topic/post.tpl +108 -101
- package/templates/partials/topic/quickreply.tpl +2 -2
- package/templates/partials/topic/reply-button.tpl +4 -2
- package/templates/partials/topic/sort.tpl +1 -1
- package/templates/partials/topic/thumbs.tpl +1 -1
- package/templates/partials/topic/tools.tpl +2 -6
- package/templates/partials/topic/watch.tpl +1 -1
- package/templates/partials/topic-filters.tpl +1 -1
- package/templates/partials/topic-list-bar.tpl +6 -6
- package/templates/partials/topic-terms.tpl +1 -1
- package/templates/partials/topics_list.tpl +12 -4
- package/templates/partials/users/item.tpl +33 -31
- package/templates/partials/users_list_menu.tpl +5 -5
- package/templates/post-queue.tpl +6 -2
- package/templates/recent.tpl +7 -0
- package/templates/topic.tpl +81 -88
- package/templates/users.tpl +2 -2
- package/templates/world.tpl +32 -1
- package/scss/modules/bottom-sheet.scss +0 -52
- package/templates/flags/detail.tpl +0 -179
- package/templates/flags/list.tpl +0 -6
- package/templates/login.tpl +0 -102
- package/templates/partials/category/filter-dropdown-content.tpl +0 -41
- package/templates/partials/category/selector-dropdown-content.tpl +0 -39
- package/templates/partials/category/sort.tpl +0 -39
- package/templates/partials/category/tools.tpl +0 -89
- package/templates/partials/category/watch.tpl +0 -67
- package/templates/partials/flags/bulk-actions.tpl +0 -9
- package/templates/partials/flags/filters.tpl +0 -189
- package/templates/partials/flags/results.tpl +0 -38
- package/templates/partials/groups/filter-dropdown-content.tpl +0 -25
- package/templates/partials/tags/filter-dropdown-content.tpl +0 -38
- package/templates/partials/tags/watch.tpl +0 -42
- package/templates/partials/users/filter-dropdown-content.tpl +0 -23
- package/templates/register.tpl +0 -104
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nodebb-theme-harmony",
|
|
3
|
-
"version": "2.0.0
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"nbbpm": {
|
|
5
5
|
"compatibility": "^3.7.0"
|
|
6
6
|
},
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"@fontsource/poppins": "5.0.8"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"eslint": "^
|
|
44
|
+
"eslint": "^9.0.0",
|
|
45
45
|
"eslint-config-nodebb": "^0.2.0",
|
|
46
46
|
"eslint-plugin-import": "^2.24.2"
|
|
47
47
|
}
|
package/plugin.json
CHANGED
|
@@ -8,8 +8,7 @@
|
|
|
8
8
|
{ "hook": "filter:settings.get", "method": "getAdminSettings"},
|
|
9
9
|
{ "hook": "filter:user.saveSettings", "method": "saveUserSettings" },
|
|
10
10
|
{ "hook": "filter:user.profileMenu", "method": "addProfileItem" },
|
|
11
|
-
{ "hook": "filter:middleware.renderHeader", "method": "filterMiddlewareRenderHeader" }
|
|
12
|
-
{ "hook": "filter:teasers.configureStripTags", "method": "filterTeasersConfigureStripTags"}
|
|
11
|
+
{ "hook": "filter:middleware.renderHeader", "method": "filterMiddlewareRenderHeader" }
|
|
13
12
|
],
|
|
14
13
|
"scripts": [
|
|
15
14
|
"public/harmony.js"
|
package/public/harmony.js
CHANGED
|
@@ -72,7 +72,7 @@ $(document).ready(function () {
|
|
|
72
72
|
return !!$('[component="bottombar"] [component="sidebar/search"] .search-dropdown.show').length;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
let lastScrollTop =
|
|
75
|
+
let lastScrollTop = $window.scrollTop();
|
|
76
76
|
let newPostsLoaded = false;
|
|
77
77
|
|
|
78
78
|
function onWindowScroll() {
|
|
@@ -86,7 +86,7 @@ $(document).ready(function () {
|
|
|
86
86
|
const diff = Math.abs(st - lastScrollTop);
|
|
87
87
|
const scrolledDown = st > lastScrollTop;
|
|
88
88
|
const scrolledUp = st < lastScrollTop;
|
|
89
|
-
if (diff >
|
|
89
|
+
if (diff > 10) {
|
|
90
90
|
bottomBar.css({
|
|
91
91
|
bottom: !scrolledUp && scrolledDown ?
|
|
92
92
|
-bottomBar.find('.bottombar-nav').outerHeight(true) :
|
|
@@ -115,8 +115,10 @@ $(document).ready(function () {
|
|
|
115
115
|
});
|
|
116
116
|
hooks.on('action:ajaxify.end', function () {
|
|
117
117
|
$window.off('scroll', delayedScroll);
|
|
118
|
-
|
|
119
|
-
|
|
118
|
+
if (config.theme.autohideBottombar) {
|
|
119
|
+
bottomBar.css({ bottom: 0 });
|
|
120
|
+
setTimeout(enableAutohide, 250);
|
|
121
|
+
}
|
|
120
122
|
});
|
|
121
123
|
});
|
|
122
124
|
}
|
|
@@ -252,20 +254,18 @@ $(document).ready(function () {
|
|
|
252
254
|
return;
|
|
253
255
|
}
|
|
254
256
|
['notifications', 'chat'].forEach((type) => {
|
|
255
|
-
const countEl =
|
|
256
|
-
if (!countEl) {
|
|
257
|
+
const countEl = $(`nav.sidebar [component="${type}/count"]`).first();
|
|
258
|
+
if (!countEl.length) {
|
|
257
259
|
return;
|
|
258
260
|
}
|
|
259
|
-
const count = parseInt(countEl.
|
|
261
|
+
const count = parseInt(countEl.text(), 10);
|
|
260
262
|
if (count > 1) {
|
|
261
|
-
const listEls =
|
|
262
|
-
listEls.
|
|
263
|
-
const placeholder =
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
listEl.insertBefore(cloneEl, placeholder);
|
|
268
|
-
}
|
|
263
|
+
const listEls = $(`.dropdown-menu [component="${type}/list"]`);
|
|
264
|
+
listEls.each((index, el) => {
|
|
265
|
+
const placeholder = $(el).children().first();
|
|
266
|
+
for (let x = 0; x < count - 1; x++) {
|
|
267
|
+
const cloneEl = placeholder.clone(true);
|
|
268
|
+
cloneEl.insertAfter(placeholder);
|
|
269
269
|
}
|
|
270
270
|
});
|
|
271
271
|
}
|
package/scss/common.scss
CHANGED
|
@@ -90,13 +90,6 @@ body:not(.page-user) {
|
|
|
90
90
|
background-color: initial;
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
-
.btn-link {
|
|
94
|
-
&:hover, &.active {
|
|
95
|
-
background-color: var(--btn-ghost-hover-color);
|
|
96
|
-
text-decoration: none;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
93
|
.flex-basis-md-200 {
|
|
101
94
|
@include media-breakpoint-up(md) {
|
|
102
95
|
flex-basis: 200px!important;
|
|
@@ -124,6 +117,7 @@ body:not(.page-user) {
|
|
|
124
117
|
[component="chat/message/body"],
|
|
125
118
|
[component="post/content"],
|
|
126
119
|
[component="topic/teaser"] .post-content,
|
|
127
|
-
[component="category/posts"] .post-content
|
|
120
|
+
[component="category/posts"] .post-content,
|
|
121
|
+
.post-queue.posts-list .post-content {
|
|
128
122
|
a { text-decoration: underline;}
|
|
129
123
|
}
|
package/scss/harmony.scss
CHANGED
package/scss/header.scss
CHANGED
package/scss/mixins.scss
CHANGED
|
@@ -5,18 +5,25 @@
|
|
|
5
5
|
line-height: calc(var(--avatar-size) - 4px);
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
[component="user/
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
[component="user/locality"] {
|
|
9
|
+
transform: translate(-75%, -100%);
|
|
10
|
+
z-index: 2;
|
|
11
|
+
background-color: $body-bg;
|
|
12
|
+
font-size: .5rem;
|
|
13
|
+
}
|
|
11
14
|
|
|
15
|
+
[component="user/status"] {
|
|
16
|
+
transform: translate(-80%, -100%);
|
|
12
17
|
z-index: 2;
|
|
13
18
|
}
|
|
14
19
|
|
|
15
20
|
@include media-breakpoint-up(sm) {
|
|
16
21
|
[component="user/status"] {
|
|
17
22
|
padding: 5px;
|
|
18
|
-
|
|
19
|
-
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
[component="user/locality"] {
|
|
26
|
+
font-size: .75rem;
|
|
20
27
|
}
|
|
21
28
|
}
|
|
22
29
|
}
|
package/scss/modules/cover.scss
CHANGED
package/scss/overrides.scss
CHANGED
|
@@ -35,6 +35,10 @@ $text-muted: $gray-600 !default;
|
|
|
35
35
|
$border-color: $gray-200 !default;
|
|
36
36
|
$link-color: #0951be !default;
|
|
37
37
|
|
|
38
|
+
$form-check-input-border: var(--bs-border-width) solid $gray-500 !default;
|
|
39
|
+
|
|
40
|
+
$input-placeholder-color: $gray-600!important;
|
|
41
|
+
|
|
38
42
|
// no caret on dropdown-toggle
|
|
39
43
|
$enable-caret: false;
|
|
40
44
|
|
package/scss/sidebar.scss
CHANGED
|
@@ -138,6 +138,9 @@
|
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
.bottombar-nav {
|
|
141
|
+
#user_dropdown .avatar {
|
|
142
|
+
margin: 2px 0; // fixes the avatar so its height is same as the icons on right sidebar
|
|
143
|
+
}
|
|
141
144
|
.nav-text {
|
|
142
145
|
font-size: 1rem;
|
|
143
146
|
color: $body-color;
|
|
@@ -154,36 +157,32 @@
|
|
|
154
157
|
line-height: 12px;
|
|
155
158
|
}
|
|
156
159
|
|
|
160
|
+
.dropdown-menu {
|
|
161
|
+
left: 0!important;
|
|
162
|
+
right: 0!important;
|
|
163
|
+
box-shadow: none!important;
|
|
164
|
+
border-left: 0;
|
|
165
|
+
border-right: 0;
|
|
166
|
+
border-radius: 0;
|
|
167
|
+
.list-container {
|
|
168
|
+
max-height: 60vh!important;
|
|
169
|
+
overflow-y: auto!important;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
157
173
|
.navigation-dropdown, .user-dropdown {
|
|
158
174
|
> li {
|
|
159
175
|
> a, .dropdown-item {
|
|
160
176
|
padding: 10px 20px!important;
|
|
161
177
|
}
|
|
162
178
|
}
|
|
163
|
-
|
|
164
|
-
right: 0!important;
|
|
165
|
-
bottom: $spacer*0.5!important;
|
|
166
|
-
box-shadow: none!important;
|
|
179
|
+
|
|
167
180
|
max-height: 60vh!important;
|
|
168
181
|
overflow: auto!important;
|
|
169
182
|
}
|
|
183
|
+
|
|
170
184
|
.search-dropdown .quick-search-results {
|
|
171
185
|
max-height: 225px!important;
|
|
172
186
|
overflow-y: auto!important;
|
|
173
187
|
}
|
|
174
|
-
.search-dropdown, .chats-dropdown, .notifications-dropdown, .drafts-dropdown {
|
|
175
|
-
left: 0 !important;
|
|
176
|
-
right: 0 !important;
|
|
177
|
-
box-shadow: none!important;
|
|
178
|
-
|
|
179
|
-
border-left: 0;
|
|
180
|
-
border-right: 0;
|
|
181
|
-
border-bottom: 0;
|
|
182
|
-
border-radius: 0;
|
|
183
|
-
|
|
184
|
-
.list-container {
|
|
185
|
-
max-height: 60vh!important;
|
|
186
|
-
overflow-y: auto!important;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
188
|
}
|
package/scss/skins.scss
CHANGED
|
@@ -3,6 +3,15 @@
|
|
|
3
3
|
[component="post"] .icon {
|
|
4
4
|
background-color: transparent !important;
|
|
5
5
|
}
|
|
6
|
+
.form-control::placeholder {
|
|
7
|
+
color:$gray-100!important;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.skin-solar {
|
|
12
|
+
.form-control::placeholder {
|
|
13
|
+
color:$gray-100!important;
|
|
14
|
+
}
|
|
6
15
|
}
|
|
7
16
|
|
|
8
17
|
.skin-quartz, .skin-lux, .skin-morph {
|
package/scss/topic.scss
CHANGED
|
@@ -9,11 +9,6 @@ body.template-topic {
|
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
.posts {
|
|
12
|
-
// fixes code blocks pushing content out on mobile
|
|
13
|
-
@include media-breakpoint-down(md) {
|
|
14
|
-
max-width: calc(100vw - $grid-gutter-width);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
12
|
&.timeline {
|
|
18
13
|
@include timeline-style;
|
|
19
14
|
}
|
|
@@ -27,10 +22,6 @@ body.template-topic {
|
|
|
27
22
|
}
|
|
28
23
|
}
|
|
29
24
|
|
|
30
|
-
> [component="post"] > [component="post/footer"] {
|
|
31
|
-
margin-left: calc($spacer * 2.5);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
25
|
[component="post"] {
|
|
35
26
|
&.selected .post-container {
|
|
36
27
|
background-color: mix($body-bg, $body-color, 90%);
|
|
@@ -101,6 +92,7 @@ body.template-topic {
|
|
|
101
92
|
&:last-of-type {
|
|
102
93
|
padding-bottom: 0;
|
|
103
94
|
.post-footer {
|
|
95
|
+
padding-bottom: 0!important;
|
|
104
96
|
border-bottom: none !important;
|
|
105
97
|
}
|
|
106
98
|
}
|
|
@@ -108,12 +100,12 @@ body.template-topic {
|
|
|
108
100
|
}
|
|
109
101
|
|
|
110
102
|
|
|
111
|
-
[component="topic/thumb/list"] {
|
|
103
|
+
[component="topic/thumb/list"] > a{
|
|
112
104
|
height: calc($font-size-base * 4);
|
|
113
105
|
}
|
|
114
106
|
}
|
|
115
107
|
|
|
116
|
-
@include media-breakpoint-up(
|
|
108
|
+
@include media-breakpoint-up(lg) {
|
|
117
109
|
body.template-topic {
|
|
118
110
|
.topic .posts {
|
|
119
111
|
[component="post"] {
|
|
@@ -129,7 +121,7 @@ body.template-topic {
|
|
|
129
121
|
opacity: 1;
|
|
130
122
|
}
|
|
131
123
|
&:hover {
|
|
132
|
-
> .post-footer > [component="post/actions"] {
|
|
124
|
+
> div > .post-container > [component="post/footer"] > div > [component="post/actions"] {
|
|
133
125
|
opacity: 1;
|
|
134
126
|
}
|
|
135
127
|
}
|
|
@@ -7,14 +7,21 @@
|
|
|
7
7
|
<input class="form-control form-control-sm" type="text" id="user-search" placeholder="[[users:enter-username]]" data-bs-toggle="dropdown" autocomplete="off" aria-haspopup="true" aria-expanded="false"/>
|
|
8
8
|
|
|
9
9
|
<ul component="blocks/search/list" class="dropdown-menu dropdown-menu-end p-1 text-sm block-edit overflow-auto" style="max-height:300px;" role="menu">
|
|
10
|
-
<li
|
|
10
|
+
<li component="blocks/start-typing">
|
|
11
|
+
<a href="#" class="dropdown-item rounded-1" role="menuitem">[[admin/menu:search.start-typing]]</a>
|
|
12
|
+
</li>
|
|
13
|
+
<li component="blocks/no-users" class="hidden">
|
|
14
|
+
<a href="#" class="dropdown-item rounded-1" role="menuitem">[[users:no-users-found]]</a>
|
|
15
|
+
</li>
|
|
11
16
|
{{{ each edit }}}
|
|
12
|
-
<li>
|
|
13
|
-
<div class="dropdown-item d-flex flex-nowrap gap-
|
|
17
|
+
<li component="blocks/search/match">
|
|
18
|
+
<div class="dropdown-item rounded-1 d-flex flex-nowrap gap-4 justify-content-between align-items-center" role="menuitem">
|
|
14
19
|
<div class="text-truncate">
|
|
15
20
|
<a href="{config.relative_path}/uid/{./uid}" class="text-decoration-none">{buildAvatar(edit, "24px", true)} {./username}</a>
|
|
16
21
|
</div>
|
|
17
|
-
|
|
22
|
+
|
|
23
|
+
<button class="btn btn-sm btn-outline-danger text-nowrap {{{ if ./isBlocked }}}hidden{{{ end }}}" data-uid="{./uid}" data-action="block">[[user:block-user]]</button>
|
|
24
|
+
<button class="btn btn-sm btn-outline-primary text-nowrap {{{ if !./isBlocked }}}hidden{{{ end }}}" data-uid="{./uid}" data-action="unblock">[[user:unblock-user]]</button>
|
|
18
25
|
</div>
|
|
19
26
|
</li>
|
|
20
27
|
{{{ end }}}
|
|
@@ -28,12 +35,16 @@
|
|
|
28
35
|
</div>
|
|
29
36
|
</div>
|
|
30
37
|
<div class="users">
|
|
31
|
-
<div
|
|
38
|
+
<div class="alert alert-warning text-center m-0"{{{ if users.length }}} style="display: none;"{{{ end }}}>[[user:has-no-blocks]]</div>
|
|
39
|
+
|
|
40
|
+
<div id="users-container" class="row row-cols-2 row-cols-lg-3 row-cols-xl-4 g-3">
|
|
32
41
|
{{{ each users }}}
|
|
33
|
-
|
|
42
|
+
<div class="d-flex flex-column gap-1">
|
|
43
|
+
<!-- IMPORT partials/users/item.tpl -->
|
|
44
|
+
<button class="btn btn-sm btn-outline-primary text-nowrap mx-auto" data-uid="{./uid}" data-action="unblock">[[user:unblock-user]]</button>
|
|
45
|
+
</div>
|
|
34
46
|
{{{ end }}}
|
|
35
47
|
</div>
|
|
36
|
-
<div class="alert alert-warning text-center"{{{ if users.length }}} style="display: none;"{{{ end }}}>[[user:has-no-blocks]]</div>
|
|
37
48
|
<!-- IMPORT partials/paginator.tpl -->
|
|
38
49
|
</div>
|
|
39
50
|
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
<div class="d-flex gap-1">
|
|
9
9
|
<div class="btn-group bottom-sheet" component="category/watch/all">
|
|
10
|
-
<button class="btn-ghost-sm ff-secondary fw-semibold dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" type="button">
|
|
10
|
+
<button class="btn btn-ghost btn-sm ff-secondary fw-semibold dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" type="button">
|
|
11
11
|
<span>[[user:change-all]]</span>
|
|
12
12
|
</button>
|
|
13
13
|
<ul class="dropdown-menu p-1 text-sm dropdown-menu-end" role="menu">
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
<div class="row">
|
|
10
10
|
<div class="col-sm-6">
|
|
11
11
|
{{{ if gdpr_consent }}}
|
|
12
|
-
<div class="alert alert-success">
|
|
13
|
-
<i class="fa fa-check float-end fa-3x"></i>
|
|
12
|
+
<div class="alert alert-success d-flex gap-3">
|
|
14
13
|
[[user:consent.received]]
|
|
14
|
+
<i class="fa fa-check fa-3x"></i>
|
|
15
15
|
</div>
|
|
16
16
|
{{{ else }}}
|
|
17
17
|
<div class="alert alert-warning">
|
|
@@ -7,22 +7,22 @@
|
|
|
7
7
|
<!-- disables autocomplete on FF --><input type="password" style="display:none">
|
|
8
8
|
|
|
9
9
|
{{{ if isSelf }}}
|
|
10
|
-
<div class="mb-
|
|
11
|
-
<label class="form-label fw-semibold text-
|
|
10
|
+
<div class="mb-3">
|
|
11
|
+
<label class="form-label fw-semibold text-sm" for="inputCurrentPassword">[[user:current-password]]</label>
|
|
12
12
|
<input autocomplete="off" class="form-control" type="password" id="inputCurrentPassword" placeholder="[[user:current-password]]" value="" {{{ if !hasPassword }}} disabled{{{ end }}}>
|
|
13
13
|
</div>
|
|
14
14
|
{{{ end }}}
|
|
15
15
|
|
|
16
|
-
<div class="mb-
|
|
17
|
-
<label class="form-label fw-semibold text-
|
|
16
|
+
<div class="mb-3">
|
|
17
|
+
<label class="form-label fw-semibold text-sm" for="inputNewPassword">[[user:new-password]]</label>
|
|
18
18
|
<input class="form-control" type="password" id="inputNewPassword" placeholder="[[user:password]]" value="">
|
|
19
|
-
<span class="form-
|
|
19
|
+
<span class="form-text" id="password-notify"></span>
|
|
20
20
|
</div>
|
|
21
21
|
|
|
22
|
-
<div class="mb-
|
|
23
|
-
<label class="form-label fw-semibold text-
|
|
22
|
+
<div class="mb-3">
|
|
23
|
+
<label class="form-label fw-semibold text-sm" for="inputNewPasswordAgain">[[user:confirm-password]]</label>
|
|
24
24
|
<input class="form-control" type="password" id="inputNewPasswordAgain" placeholder="[[user:confirm-password]]" value="">
|
|
25
|
-
<span class="form-
|
|
25
|
+
<span class="form-text" id="password-confirm-notify"></span>
|
|
26
26
|
</div>
|
|
27
27
|
|
|
28
28
|
<div class="form-actions">
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<div class="row">
|
|
5
5
|
<div class="col-12 col-lg-4">
|
|
6
6
|
<form class="edit-form">
|
|
7
|
-
<div class="mb-
|
|
7
|
+
<div class="mb-3">
|
|
8
8
|
<label class="form-label fw-semibold text-sm" for="inputNewUsername">[[user:username]]</label>
|
|
9
9
|
<input class="form-control" type="text" id="inputNewUsername" placeholder="[[user:username]]" value="{username}">
|
|
10
10
|
</div>
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<!-- disables autocomplete on FF --><input type="password" style="display:none">
|
|
13
13
|
|
|
14
14
|
{{{ if isSelf }}}
|
|
15
|
-
<div class="mb-
|
|
15
|
+
<div class="mb-3">
|
|
16
16
|
<label class="form-label fw-semibold text-sm" for="inputCurrentPassword">[[user:current-password]]</label>
|
|
17
17
|
<input autocomplete="off" class="form-control" type="password" id="inputCurrentPassword" placeholder="[[user:current-password]]" value=""{{{ if !hasPassword }}} disabled{{{ end }}}>
|
|
18
18
|
</div>
|
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
|
|
21
21
|
<input type="hidden" name="uid" id="inputUID" value="{uid}" />
|
|
22
22
|
|
|
23
|
-
<br/>
|
|
24
23
|
<div class="form-actions">
|
|
25
24
|
<button id="submitBtn" class="btn btn-primary btn-block"><i class="hide fa fa-spinner fa-spin"></i> [[user:change-username]]</button>
|
|
26
25
|
</div>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<!-- IMPORT partials/account/header.tpl -->
|
|
2
2
|
|
|
3
|
-
<div class="d-flex justify-content-between py-1 mb-3 align-items-center position-sticky top-0 bg-body">
|
|
3
|
+
<div class="d-flex justify-content-between py-1 mb-3 align-items-center position-sticky top-0 bg-body z-1">
|
|
4
4
|
<h3 class="fw-semibold fs-5 mb-0">{{{ if isSelf }}}[[user:edit-profile]]{{{ else }}}[[pages:account/edit, {username}]]{{{ end }}}</h3>
|
|
5
5
|
<button id="submitBtn" class="btn btn-sm btn-primary">[[global:save-changes]]</button>
|
|
6
6
|
</div>
|
|
@@ -12,23 +12,37 @@
|
|
|
12
12
|
<input class="form-control" type="text" id="fullname" name="fullname" placeholder="[[user:fullname]]" value="{fullname}">
|
|
13
13
|
</div>
|
|
14
14
|
|
|
15
|
-
{{{ if allowWebsite }}}
|
|
16
15
|
<div class="mb-3">
|
|
17
|
-
<label class="form-label fw-bold" for="
|
|
18
|
-
<input class="form-control" type="
|
|
16
|
+
<label class="form-label fw-bold" for="birthday">[[user:birthday]]</label>
|
|
17
|
+
<input class="form-control" type="date" id="birthday" name="birthday" value="{birthday}" placeholder="mm/dd/yyyy">
|
|
19
18
|
</div>
|
|
20
|
-
{{{ end }}}
|
|
21
19
|
|
|
20
|
+
{{{ each customUserFields }}}
|
|
22
21
|
<div class="mb-3">
|
|
23
|
-
<label class="form-label fw-bold" for="
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
<label class="form-label fw-bold" for="{./key}">{./name}</label>
|
|
23
|
+
{{{ if ((./type == "input-text") || (./type == "input-link")) }}}
|
|
24
|
+
<input class="form-control" type="text" id="{./key}" name="{./key}" value="{./value}">
|
|
25
|
+
{{{ end }}}
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
<
|
|
29
|
-
|
|
27
|
+
{{{ if (./type == "input-number") }}}
|
|
28
|
+
<input class="form-control" type="number" id="{./key}" name="{./key}" value="{./value}">
|
|
29
|
+
{{{ end }}}
|
|
30
|
+
|
|
31
|
+
{{{ if (./type == "input-date") }}}
|
|
32
|
+
<input class="form-control" type="date" id="{./key}" name="{./key}" value="{./value}">
|
|
33
|
+
{{{ end }}}
|
|
34
|
+
|
|
35
|
+
{{{ if ((./type == "select") || (./type == "select-multi")) }}}
|
|
36
|
+
<select class="form-select" id="{./key}" name="{./key}" {{{ if (./type == "select-multi") }}} multiple{{{ end }}}>
|
|
37
|
+
{{{ each ./select-options}}}
|
|
38
|
+
<option value="{./value}" {{{ if ./selected }}}selected{{{ end }}}>{./value}</option>
|
|
39
|
+
{{{ end }}}
|
|
40
|
+
</select>
|
|
41
|
+
{{{ end }}}
|
|
30
42
|
</div>
|
|
43
|
+
{{{ end }}}
|
|
31
44
|
|
|
45
|
+
{{{ if groups.length }}}
|
|
32
46
|
<div class="mb-3">
|
|
33
47
|
<label class="form-label fw-bold" for="groupTitle">[[user:grouptitle]]</label>
|
|
34
48
|
|
|
@@ -37,17 +51,18 @@
|
|
|
37
51
|
<div component="group/badge/item" class="d-flex gap-2 justify-content-between align-items-center" data-value="{./displayName}" data-selected="{./selected}">
|
|
38
52
|
<!-- IMPORT partials/groups/badge.tpl -->
|
|
39
53
|
<div class="d-flex gap-1">
|
|
40
|
-
<button component="group/toggle/hide" type="button" class="btn-ghost-sm {{{ if !./selected }}}hidden{{{ end }}}" title="[[user:hide-group-title]]"><i class="fa fa-fw fa-eye"></i></button>
|
|
41
|
-
<button component="group/toggle/show" type="button" class="btn-ghost-sm {{{ if ./selected }}}hidden{{{ end }}}" title="[[user:show-group-title]]"><i class="fa fa-fw fa-eye-slash"></i></button>
|
|
54
|
+
<button component="group/toggle/hide" type="button" class="btn btn-ghost btn-sm {{{ if !./selected }}}hidden{{{ end }}}" title="[[user:hide-group-title]]"><i class="fa fa-fw fa-eye"></i></button>
|
|
55
|
+
<button component="group/toggle/show" type="button" class="btn btn-ghost btn-sm {{{ if ./selected }}}hidden{{{ end }}}" title="[[user:show-group-title]]"><i class="fa fa-fw fa-eye-slash"></i></button>
|
|
42
56
|
{{{ if allowMultipleBadges }}}
|
|
43
|
-
<button component="group/order/up" type="button" class="btn-ghost-sm" title="[[user:order-group-up]]"><i class="fa fa-fw fa-chevron-up"></i></button>
|
|
44
|
-
<button component="group/order/down" type="button" class="btn-ghost-sm" title="[[user:order-group-down]]"><i class="fa fa-fw fa-chevron-down"></i></button>
|
|
57
|
+
<button component="group/order/up" type="button" class="btn btn-ghost btn-sm" title="[[user:order-group-up]]"><i class="fa fa-fw fa-chevron-up"></i></button>
|
|
58
|
+
<button component="group/order/down" type="button" class="btn btn-ghost btn-sm" title="[[user:order-group-down]]"><i class="fa fa-fw fa-chevron-down"></i></button>
|
|
45
59
|
{{{ end }}}
|
|
46
60
|
</div>
|
|
47
61
|
</div>
|
|
48
62
|
{{{ end }}}
|
|
49
63
|
</div>
|
|
50
64
|
</div>
|
|
65
|
+
{{{ end }}}
|
|
51
66
|
|
|
52
67
|
{{{ if allowAboutMe }}}
|
|
53
68
|
<div class="mb-3">
|