nodebb-theme-harmony 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc +3 -3
- package/README.md +22 -22
- package/lib/controllers.js +29 -29
- package/library.js +183 -183
- package/package.json +48 -48
- package/plugin.json +24 -24
- package/public/.eslintrc +3 -3
- package/public/admin.js +15 -15
- package/public/harmony.js +287 -287
- package/public/settings.js +31 -31
- package/renovate.json +6 -6
- package/scss/account.scss +27 -27
- package/scss/category.scss +3 -3
- package/scss/chats.scss +11 -11
- package/scss/common.scss +122 -122
- package/scss/fonts.scss +19 -19
- package/scss/groups.scss +22 -22
- package/scss/harmony.scss +24 -24
- package/scss/header.scss +15 -15
- package/scss/mixins.scss +183 -183
- package/scss/modals.scss +6 -6
- package/scss/modules/breadcrumbs.scss +15 -15
- package/scss/modules/cover.scss +102 -102
- package/scss/modules/filters.scss +7 -7
- package/scss/modules/nprogress.scss +80 -80
- package/scss/modules/paginator.scss +23 -23
- package/scss/modules/tags.scss +5 -5
- package/scss/modules/topic-navigator.scss +52 -52
- package/scss/modules/topics-list.scss +40 -40
- package/scss/modules/user-menu.scss +10 -10
- package/scss/overrides.scss +65 -65
- package/scss/sidebar.scss +188 -188
- package/scss/skins.scss +58 -58
- package/scss/status.scss +24 -24
- package/scss/topic.scss +130 -130
- package/templates/account/blocks.tpl +51 -51
- package/templates/account/categories.tpl +63 -63
- package/templates/account/consent.tpl +73 -73
- package/templates/account/edit/password.tpl +34 -34
- package/templates/account/edit/username.tpl +29 -29
- package/templates/account/edit.tpl +137 -137
- package/templates/account/followers.tpl +14 -14
- package/templates/account/following.tpl +15 -15
- package/templates/account/groups.tpl +15 -15
- package/templates/account/info.tpl +270 -270
- package/templates/account/posts.tpl +35 -35
- package/templates/account/profile.tpl +92 -92
- package/templates/account/sessions.tpl +8 -8
- package/templates/account/settings.tpl +236 -236
- package/templates/account/shares.tpl +19 -19
- package/templates/account/tags.tpl +12 -12
- package/templates/account/theme.tpl +63 -63
- package/templates/account/topics.tpl +44 -44
- package/templates/account/uploads.tpl +37 -37
- package/templates/admin/plugins/harmony.tpl +57 -57
- package/templates/categories.tpl +29 -29
- package/templates/category.tpl +72 -72
- package/templates/footer.tpl +17 -17
- package/templates/groups/details.tpl +86 -86
- package/templates/groups/list.tpl +58 -58
- package/templates/groups/members.tpl +9 -9
- package/templates/header.tpl +45 -45
- package/templates/notifications.tpl +32 -32
- package/templates/partials/account/admin-menu.tpl +36 -36
- package/templates/partials/account/category-item.tpl +22 -22
- package/templates/partials/account/footer.tpl +2 -2
- package/templates/partials/account/header.tpl +98 -98
- package/templates/partials/account/session-list.tpl +18 -18
- package/templates/partials/account/sidebar-left.tpl +116 -116
- package/templates/partials/breadcrumbs-json-ld.tpl +15 -15
- package/templates/partials/breadcrumbs.tpl +12 -12
- package/templates/partials/buttons/newTopic.tpl +22 -22
- package/templates/partials/categories/item.tpl +56 -56
- package/templates/partials/categories/lastpost.tpl +24 -24
- package/templates/partials/categories/link.tpl +4 -4
- package/templates/partials/category/subcategory.tpl +18 -18
- package/templates/partials/category/tags.tpl +3 -3
- package/templates/partials/cookie-consent.tpl +6 -6
- package/templates/partials/groups/admin.tpl +95 -95
- package/templates/partials/groups/invited.tpl +32 -32
- package/templates/partials/groups/list.tpl +15 -15
- package/templates/partials/groups/memberlist.tpl +46 -46
- package/templates/partials/groups/pending.tpl +29 -29
- package/templates/partials/groups/sidebar-left.tpl +27 -27
- package/templates/partials/header/brand.tpl +27 -27
- package/templates/partials/mobile-footer.tpl +95 -95
- package/templates/partials/notifications_list.tpl +44 -44
- package/templates/partials/paginator.tpl +46 -46
- package/templates/partials/post_bar.tpl +27 -27
- package/templates/partials/posts_list.tpl +7 -7
- package/templates/partials/posts_list_item.tpl +19 -19
- package/templates/partials/quick-search-results.tpl +46 -46
- package/templates/partials/search-filters.tpl +183 -183
- package/templates/partials/search-results.tpl +54 -54
- package/templates/partials/sidebar/chats.tpl +45 -45
- package/templates/partials/sidebar/drafts.tpl +63 -63
- package/templates/partials/sidebar/logged-in-menu.tpl +22 -22
- package/templates/partials/sidebar/logged-out-menu.tpl +44 -44
- package/templates/partials/sidebar/notifications.tpl +49 -49
- package/templates/partials/sidebar/search-mobile.tpl +28 -28
- package/templates/partials/sidebar/search.tpl +30 -30
- package/templates/partials/sidebar/user-menu.tpl +103 -103
- package/templates/partials/sidebar-left.tpl +39 -39
- package/templates/partials/sidebar-right.tpl +16 -16
- package/templates/partials/skin-switcher.tpl +50 -50
- package/templates/partials/tags_list.tpl +7 -7
- package/templates/partials/toast.tpl +19 -19
- package/templates/partials/topic/event.tpl +12 -12
- package/templates/partials/topic/navigation-post.tpl +9 -9
- package/templates/partials/topic/navigator-mobile.tpl +61 -61
- package/templates/partials/topic/navigator.tpl +26 -26
- package/templates/partials/topic/necro-post.tpl +5 -5
- package/templates/partials/topic/post-menu-list.tpl +156 -156
- package/templates/partials/topic/post-menu.tpl +4 -4
- package/templates/partials/topic/post-placeholder.tpl +14 -14
- package/templates/partials/topic/post.tpl +146 -146
- package/templates/partials/topic/quickreply.tpl +28 -28
- package/templates/partials/topic/reply-button.tpl +26 -26
- package/templates/partials/topic/selection-tooltip.tpl +2 -2
- package/templates/partials/topic/sort.tpl +27 -27
- package/templates/partials/topic/stats.tpl +14 -14
- package/templates/partials/topic/thumbs.tpl +4 -4
- package/templates/partials/topic/tools.tpl +8 -8
- package/templates/partials/topic/topic-menu-list.tpl +73 -73
- package/templates/partials/topic/watch.tpl +59 -59
- package/templates/partials/topic-filters.tpl +15 -15
- package/templates/partials/topic-list-bar.tpl +54 -54
- package/templates/partials/topic-terms.tpl +15 -15
- package/templates/partials/topics_list.tpl +131 -131
- package/templates/partials/users/item.tpl +39 -39
- package/templates/partials/users_list.tpl +4 -4
- package/templates/partials/users_list_menu.tpl +14 -14
- package/templates/popular.tpl +34 -34
- package/templates/post-queue.tpl +211 -211
- package/templates/recent.tpl +42 -42
- package/templates/search.tpl +46 -46
- package/templates/tag.tpl +34 -34
- package/templates/tags.tpl +49 -49
- package/templates/top.tpl +34 -34
- package/templates/topic.tpl +123 -123
- package/templates/unread.tpl +31 -31
- package/templates/users.tpl +39 -39
- package/templates/world.tpl +66 -66
- package/theme.json +6 -6
- package/package-lock.json +0 -2338
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
-
|
|
3
|
-
<h3 class="fw-semibold fs-5">{{{ if isSelf }}}[[user:change-password]]{{{ else }}}[[pages:{template.name}, {username}]]{{{ end }}}</h3>
|
|
4
|
-
<div class="row">
|
|
5
|
-
<div class="col-12 col-lg-4">
|
|
6
|
-
<form class="edit-form">
|
|
7
|
-
<!-- disables autocomplete on FF --><input type="password" style="display:none">
|
|
8
|
-
|
|
9
|
-
{{{ if isSelf }}}
|
|
10
|
-
<div class="mb-3">
|
|
11
|
-
<label class="form-label fw-semibold text-sm" for="inputCurrentPassword">[[user:current-password]]</label>
|
|
12
|
-
<input autocomplete="off" class="form-control" type="password" id="inputCurrentPassword" placeholder="[[user:current-password]]" value="" {{{ if !hasPassword }}} disabled{{{ end }}}>
|
|
13
|
-
</div>
|
|
14
|
-
{{{ end }}}
|
|
15
|
-
|
|
16
|
-
<div class="mb-3">
|
|
17
|
-
<label class="form-label fw-semibold text-sm" for="inputNewPassword">[[user:new-password]]</label>
|
|
18
|
-
<input class="form-control" type="password" id="inputNewPassword" placeholder="[[user:password]]" value="">
|
|
19
|
-
<span class="form-text" id="password-notify"></span>
|
|
20
|
-
</div>
|
|
21
|
-
|
|
22
|
-
<div class="mb-3">
|
|
23
|
-
<label class="form-label fw-semibold text-sm" for="inputNewPasswordAgain">[[user:confirm-password]]</label>
|
|
24
|
-
<input class="form-control" type="password" id="inputNewPasswordAgain" placeholder="[[user:confirm-password]]" value="">
|
|
25
|
-
<span class="form-text" id="password-confirm-notify"></span>
|
|
26
|
-
</div>
|
|
27
|
-
|
|
28
|
-
<div class="form-actions">
|
|
29
|
-
<button id="changePasswordBtn" class="btn btn-primary btn-block"><i class="hide fa fa-spinner fa-spin"></i> [[user:change-password]]</button>
|
|
30
|
-
</div>
|
|
31
|
-
</form>
|
|
32
|
-
</div>
|
|
33
|
-
</div>
|
|
34
|
-
|
|
1
|
+
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
+
|
|
3
|
+
<h3 class="fw-semibold fs-5">{{{ if isSelf }}}[[user:change-password]]{{{ else }}}[[pages:{template.name}, {username}]]{{{ end }}}</h3>
|
|
4
|
+
<div class="row">
|
|
5
|
+
<div class="col-12 col-lg-4">
|
|
6
|
+
<form class="edit-form">
|
|
7
|
+
<!-- disables autocomplete on FF --><input type="password" style="display:none">
|
|
8
|
+
|
|
9
|
+
{{{ if isSelf }}}
|
|
10
|
+
<div class="mb-3">
|
|
11
|
+
<label class="form-label fw-semibold text-sm" for="inputCurrentPassword">[[user:current-password]]</label>
|
|
12
|
+
<input autocomplete="off" class="form-control" type="password" id="inputCurrentPassword" placeholder="[[user:current-password]]" value="" {{{ if !hasPassword }}} disabled{{{ end }}}>
|
|
13
|
+
</div>
|
|
14
|
+
{{{ end }}}
|
|
15
|
+
|
|
16
|
+
<div class="mb-3">
|
|
17
|
+
<label class="form-label fw-semibold text-sm" for="inputNewPassword">[[user:new-password]]</label>
|
|
18
|
+
<input class="form-control" type="password" id="inputNewPassword" placeholder="[[user:password]]" value="">
|
|
19
|
+
<span class="form-text" id="password-notify"></span>
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
<div class="mb-3">
|
|
23
|
+
<label class="form-label fw-semibold text-sm" for="inputNewPasswordAgain">[[user:confirm-password]]</label>
|
|
24
|
+
<input class="form-control" type="password" id="inputNewPasswordAgain" placeholder="[[user:confirm-password]]" value="">
|
|
25
|
+
<span class="form-text" id="password-confirm-notify"></span>
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<div class="form-actions">
|
|
29
|
+
<button id="changePasswordBtn" class="btn btn-primary btn-block"><i class="hide fa fa-spinner fa-spin"></i> [[user:change-password]]</button>
|
|
30
|
+
</div>
|
|
31
|
+
</form>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
35
|
<!-- IMPORT partials/account/footer.tpl -->
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
-
|
|
3
|
-
<h3 class="fw-semibold fs-5">{{{ if isSelf }}}[[user:change-username]]{{{ else }}}[[pages:{template.name}, {username}]]{{{ end }}}</h3>
|
|
4
|
-
<div class="row">
|
|
5
|
-
<div class="col-12 col-lg-4">
|
|
6
|
-
<form class="edit-form">
|
|
7
|
-
<div class="mb-3">
|
|
8
|
-
<label class="form-label fw-semibold text-sm" for="inputNewUsername">[[user:username]]</label>
|
|
9
|
-
<input class="form-control" type="text" id="inputNewUsername" placeholder="[[user:username]]" value="{username}">
|
|
10
|
-
</div>
|
|
11
|
-
|
|
12
|
-
<!-- disables autocomplete on FF --><input type="password" style="display:none">
|
|
13
|
-
|
|
14
|
-
{{{ if isSelf }}}
|
|
15
|
-
<div class="mb-3">
|
|
16
|
-
<label class="form-label fw-semibold text-sm" for="inputCurrentPassword">[[user:current-password]]</label>
|
|
17
|
-
<input autocomplete="off" class="form-control" type="password" id="inputCurrentPassword" placeholder="[[user:current-password]]" value=""{{{ if !hasPassword }}} disabled{{{ end }}}>
|
|
18
|
-
</div>
|
|
19
|
-
{{{ end }}}
|
|
20
|
-
|
|
21
|
-
<input type="hidden" name="uid" id="inputUID" value="{uid}" />
|
|
22
|
-
|
|
23
|
-
<div class="form-actions">
|
|
24
|
-
<button id="submitBtn" class="btn btn-primary btn-block"><i class="hide fa fa-spinner fa-spin"></i> [[user:change-username]]</button>
|
|
25
|
-
</div>
|
|
26
|
-
</form>
|
|
27
|
-
</div>
|
|
28
|
-
</div>
|
|
29
|
-
|
|
1
|
+
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
+
|
|
3
|
+
<h3 class="fw-semibold fs-5">{{{ if isSelf }}}[[user:change-username]]{{{ else }}}[[pages:{template.name}, {username}]]{{{ end }}}</h3>
|
|
4
|
+
<div class="row">
|
|
5
|
+
<div class="col-12 col-lg-4">
|
|
6
|
+
<form class="edit-form">
|
|
7
|
+
<div class="mb-3">
|
|
8
|
+
<label class="form-label fw-semibold text-sm" for="inputNewUsername">[[user:username]]</label>
|
|
9
|
+
<input class="form-control" type="text" id="inputNewUsername" placeholder="[[user:username]]" value="{username}">
|
|
10
|
+
</div>
|
|
11
|
+
|
|
12
|
+
<!-- disables autocomplete on FF --><input type="password" style="display:none">
|
|
13
|
+
|
|
14
|
+
{{{ if isSelf }}}
|
|
15
|
+
<div class="mb-3">
|
|
16
|
+
<label class="form-label fw-semibold text-sm" for="inputCurrentPassword">[[user:current-password]]</label>
|
|
17
|
+
<input autocomplete="off" class="form-control" type="password" id="inputCurrentPassword" placeholder="[[user:current-password]]" value=""{{{ if !hasPassword }}} disabled{{{ end }}}>
|
|
18
|
+
</div>
|
|
19
|
+
{{{ end }}}
|
|
20
|
+
|
|
21
|
+
<input type="hidden" name="uid" id="inputUID" value="{uid}" />
|
|
22
|
+
|
|
23
|
+
<div class="form-actions">
|
|
24
|
+
<button id="submitBtn" class="btn btn-primary btn-block"><i class="hide fa fa-spinner fa-spin"></i> [[user:change-username]]</button>
|
|
25
|
+
</div>
|
|
26
|
+
</form>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
30
|
<!-- IMPORT partials/account/footer.tpl -->
|
|
@@ -1,138 +1,138 @@
|
|
|
1
|
-
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
-
|
|
3
|
-
<div class="d-flex justify-content-between py-1 mb-3 align-items-center position-sticky top-0 bg-body z-1">
|
|
4
|
-
<h3 class="fw-semibold fs-5 mb-0">{{{ if isSelf }}}[[user:edit-profile]]{{{ else }}}[[pages:account/edit, {username}]]{{{ end }}}</h3>
|
|
5
|
-
<button id="submitBtn" class="btn btn-sm btn-primary">[[global:save-changes]]</button>
|
|
6
|
-
</div>
|
|
7
|
-
<div class="row">
|
|
8
|
-
<div class="col-xl-6 col-12">
|
|
9
|
-
<form role="form" component="profile/edit/form">
|
|
10
|
-
<div class="mb-3">
|
|
11
|
-
<label class="form-label fw-bold" for="fullname">[[user:fullname]]</label>
|
|
12
|
-
<input class="form-control" type="text" id="fullname" name="fullname" placeholder="[[user:fullname]]" value="{fullname}">
|
|
13
|
-
</div>
|
|
14
|
-
|
|
15
|
-
<div class="mb-3">
|
|
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">
|
|
18
|
-
</div>
|
|
19
|
-
|
|
20
|
-
{{{ each customUserFields }}}
|
|
21
|
-
<div class="mb-3">
|
|
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
|
-
|
|
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 }}}
|
|
42
|
-
</div>
|
|
43
|
-
{{{ end }}}
|
|
44
|
-
|
|
45
|
-
{{{ if groups.length }}}
|
|
46
|
-
<div class="mb-3">
|
|
47
|
-
<label class="form-label fw-bold" for="groupTitle">[[user:grouptitle]]</label>
|
|
48
|
-
|
|
49
|
-
<div class="d-flex flex-column gap-2" component="group/badge/list">
|
|
50
|
-
{{{ each groups }}}
|
|
51
|
-
<div component="group/badge/item" class="d-flex gap-2 justify-content-between align-items-center" data-value="{./displayName}" data-selected="{./selected}">
|
|
52
|
-
<!-- IMPORT partials/groups/badge.tpl -->
|
|
53
|
-
<div class="d-flex gap-1">
|
|
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>
|
|
56
|
-
{{{ if allowMultipleBadges }}}
|
|
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>
|
|
59
|
-
{{{ end }}}
|
|
60
|
-
</div>
|
|
61
|
-
</div>
|
|
62
|
-
{{{ end }}}
|
|
63
|
-
</div>
|
|
64
|
-
</div>
|
|
65
|
-
{{{ end }}}
|
|
66
|
-
|
|
67
|
-
{{{ if allowAboutMe }}}
|
|
68
|
-
<div class="mb-3">
|
|
69
|
-
<label class="form-label fw-bold" for="aboutme">[[user:aboutme]]</label> <small><label id="aboutMeCharCountLeft"></label></small>
|
|
70
|
-
<textarea class="form-control" id="aboutme" name="aboutme" rows="5">{aboutme}</textarea>
|
|
71
|
-
</div>
|
|
72
|
-
{{{ end }}}
|
|
73
|
-
|
|
74
|
-
{{{ if (allowSignature && !disableSignatures) }}}
|
|
75
|
-
<div class="mb-3">
|
|
76
|
-
<label class="form-label fw-bold" for="signature">[[user:signature]]</label> <small><label id="signatureCharCountLeft"></label></small>
|
|
77
|
-
<textarea class="form-control" id="signature" name="signature" rows="5">{signature}</textarea>
|
|
78
|
-
</div>
|
|
79
|
-
{{{ end }}}
|
|
80
|
-
</form>
|
|
81
|
-
<hr class="visible-xs visible-sm"/>
|
|
82
|
-
</div>
|
|
83
|
-
|
|
84
|
-
<div class="col-xl-6 col-12">
|
|
85
|
-
<div class="text-center">
|
|
86
|
-
<ul class="list-group mb-3 text-sm text-nowrap">
|
|
87
|
-
{{{ if allowProfilePicture }}}
|
|
88
|
-
<li class="list-group-item"><a component="profile/change/picture" href="#" class="text-decoration-none text-reset">[[user:change-picture]]</a></li>
|
|
89
|
-
{{{ end }}}
|
|
90
|
-
{{{ if !username:disableEdit }}}
|
|
91
|
-
<li class="list-group-item"><a href="{config.relative_path}/user/{userslug}/edit/username" class="text-decoration-none text-reset">[[user:change-username]]</a></li>
|
|
92
|
-
{{{ end }}}
|
|
93
|
-
{{{ if !email:disableEdit }}}
|
|
94
|
-
<li class="list-group-item"><a href="{config.relative_path}/user/{userslug}/edit/email" class="text-decoration-none text-reset">[[user:change-email]]</a></li>
|
|
95
|
-
{{{ end }}}
|
|
96
|
-
{{{ if canChangePassword }}}
|
|
97
|
-
<li class="list-group-item"><a href="{config.relative_path}/user/{userslug}/edit/password" class="text-decoration-none text-reset">[[user:change-password]]</a></li>
|
|
98
|
-
{{{ end }}}
|
|
99
|
-
{{{ each editButtons }}}
|
|
100
|
-
<li class="list-group-item"><a href="{config.relative_path}{./link}" class="text-decoration-none text-reset">{./text}</a></li>
|
|
101
|
-
{{{ end }}}
|
|
102
|
-
</ul>
|
|
103
|
-
|
|
104
|
-
{{{ if config.requireEmailConfirmation }}}
|
|
105
|
-
{{{ if (email && isSelf) }}}
|
|
106
|
-
<a id="confirm-email" href="#" class="btn btn-warning {{{ if email:confirmed }}}hide{{{ end }}}">[[user:confirm-email]]</a><br/><br/>
|
|
107
|
-
{{{ end }}}
|
|
108
|
-
{{{ end }}}
|
|
109
|
-
</div>
|
|
110
|
-
|
|
111
|
-
{{{ if sso.length }}}
|
|
112
|
-
<label class="form-label text-sm fw-semibold">[[user:sso.title]]</label>
|
|
113
|
-
<div class="list-group">
|
|
114
|
-
{{{ each sso }}}
|
|
115
|
-
<div class="list-group-item d-flex align-items-center justify-content-between">
|
|
116
|
-
<a class="text-sm text-reset text-decoration-none" data-component="{./component}" href="{{{ if ./url }}}{./url}{{{ else }}}#{{{ end }}}" target="{{{ if ./associated }}}_blank{{{ else }}}_top{{{ end }}}">
|
|
117
|
-
{{{ if ./icon }}}<i class="fa {./icon}"></i>{{{ end }}}
|
|
118
|
-
{{{ if ./associated }}}[[user:sso.associated]]{{{ else }}}[[user:sso.not-associated]]{{{ end }}}
|
|
119
|
-
{./name}
|
|
120
|
-
</a>
|
|
121
|
-
{{{ if ./deauthUrl }}}
|
|
122
|
-
<a data-component="{./component}" class="btn btn-outline-secondary btn-sm" href="{./deauthUrl}">[[user:sso.dissociate]]</a>
|
|
123
|
-
{{{ end }}}
|
|
124
|
-
</div>
|
|
125
|
-
{{{ end }}}
|
|
126
|
-
</div>
|
|
127
|
-
{{{ end }}}
|
|
128
|
-
|
|
129
|
-
<hr/>
|
|
130
|
-
{{{ if (allowAccountDelete && isSelf) }}}
|
|
131
|
-
<div class="d-flex justify-content-center">
|
|
132
|
-
<button id="deleteAccountBtn" class="btn btn-danger">[[user:delete-account]]</button>
|
|
133
|
-
</div>
|
|
134
|
-
{{{ end }}}
|
|
135
|
-
</div>
|
|
136
|
-
</div>
|
|
137
|
-
|
|
1
|
+
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
+
|
|
3
|
+
<div class="d-flex justify-content-between py-1 mb-3 align-items-center position-sticky top-0 bg-body z-1">
|
|
4
|
+
<h3 class="fw-semibold fs-5 mb-0">{{{ if isSelf }}}[[user:edit-profile]]{{{ else }}}[[pages:account/edit, {username}]]{{{ end }}}</h3>
|
|
5
|
+
<button id="submitBtn" class="btn btn-sm btn-primary">[[global:save-changes]]</button>
|
|
6
|
+
</div>
|
|
7
|
+
<div class="row">
|
|
8
|
+
<div class="col-xl-6 col-12">
|
|
9
|
+
<form role="form" component="profile/edit/form">
|
|
10
|
+
<div class="mb-3">
|
|
11
|
+
<label class="form-label fw-bold" for="fullname">[[user:fullname]]</label>
|
|
12
|
+
<input class="form-control" type="text" id="fullname" name="fullname" placeholder="[[user:fullname]]" value="{fullname}">
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<div class="mb-3">
|
|
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">
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
{{{ each customUserFields }}}
|
|
21
|
+
<div class="mb-3">
|
|
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
|
+
|
|
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 }}}
|
|
42
|
+
</div>
|
|
43
|
+
{{{ end }}}
|
|
44
|
+
|
|
45
|
+
{{{ if groups.length }}}
|
|
46
|
+
<div class="mb-3">
|
|
47
|
+
<label class="form-label fw-bold" for="groupTitle">[[user:grouptitle]]</label>
|
|
48
|
+
|
|
49
|
+
<div class="d-flex flex-column gap-2" component="group/badge/list">
|
|
50
|
+
{{{ each groups }}}
|
|
51
|
+
<div component="group/badge/item" class="d-flex gap-2 justify-content-between align-items-center" data-value="{./displayName}" data-selected="{./selected}">
|
|
52
|
+
<!-- IMPORT partials/groups/badge.tpl -->
|
|
53
|
+
<div class="d-flex gap-1">
|
|
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>
|
|
56
|
+
{{{ if allowMultipleBadges }}}
|
|
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>
|
|
59
|
+
{{{ end }}}
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
{{{ end }}}
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
{{{ end }}}
|
|
66
|
+
|
|
67
|
+
{{{ if allowAboutMe }}}
|
|
68
|
+
<div class="mb-3">
|
|
69
|
+
<label class="form-label fw-bold" for="aboutme">[[user:aboutme]]</label> <small><label id="aboutMeCharCountLeft"></label></small>
|
|
70
|
+
<textarea class="form-control" id="aboutme" name="aboutme" rows="5">{aboutme}</textarea>
|
|
71
|
+
</div>
|
|
72
|
+
{{{ end }}}
|
|
73
|
+
|
|
74
|
+
{{{ if (allowSignature && !disableSignatures) }}}
|
|
75
|
+
<div class="mb-3">
|
|
76
|
+
<label class="form-label fw-bold" for="signature">[[user:signature]]</label> <small><label id="signatureCharCountLeft"></label></small>
|
|
77
|
+
<textarea class="form-control" id="signature" name="signature" rows="5">{signature}</textarea>
|
|
78
|
+
</div>
|
|
79
|
+
{{{ end }}}
|
|
80
|
+
</form>
|
|
81
|
+
<hr class="visible-xs visible-sm"/>
|
|
82
|
+
</div>
|
|
83
|
+
|
|
84
|
+
<div class="col-xl-6 col-12">
|
|
85
|
+
<div class="text-center">
|
|
86
|
+
<ul class="list-group mb-3 text-sm text-nowrap">
|
|
87
|
+
{{{ if allowProfilePicture }}}
|
|
88
|
+
<li class="list-group-item"><a component="profile/change/picture" href="#" class="text-decoration-none text-reset">[[user:change-picture]]</a></li>
|
|
89
|
+
{{{ end }}}
|
|
90
|
+
{{{ if !username:disableEdit }}}
|
|
91
|
+
<li class="list-group-item"><a href="{config.relative_path}/user/{userslug}/edit/username" class="text-decoration-none text-reset">[[user:change-username]]</a></li>
|
|
92
|
+
{{{ end }}}
|
|
93
|
+
{{{ if !email:disableEdit }}}
|
|
94
|
+
<li class="list-group-item"><a href="{config.relative_path}/user/{userslug}/edit/email" class="text-decoration-none text-reset">[[user:change-email]]</a></li>
|
|
95
|
+
{{{ end }}}
|
|
96
|
+
{{{ if canChangePassword }}}
|
|
97
|
+
<li class="list-group-item"><a href="{config.relative_path}/user/{userslug}/edit/password" class="text-decoration-none text-reset">[[user:change-password]]</a></li>
|
|
98
|
+
{{{ end }}}
|
|
99
|
+
{{{ each editButtons }}}
|
|
100
|
+
<li class="list-group-item"><a href="{config.relative_path}{./link}" class="text-decoration-none text-reset">{./text}</a></li>
|
|
101
|
+
{{{ end }}}
|
|
102
|
+
</ul>
|
|
103
|
+
|
|
104
|
+
{{{ if config.requireEmailConfirmation }}}
|
|
105
|
+
{{{ if (email && isSelf) }}}
|
|
106
|
+
<a id="confirm-email" href="#" class="btn btn-warning {{{ if email:confirmed }}}hide{{{ end }}}">[[user:confirm-email]]</a><br/><br/>
|
|
107
|
+
{{{ end }}}
|
|
108
|
+
{{{ end }}}
|
|
109
|
+
</div>
|
|
110
|
+
|
|
111
|
+
{{{ if sso.length }}}
|
|
112
|
+
<label class="form-label text-sm fw-semibold">[[user:sso.title]]</label>
|
|
113
|
+
<div class="list-group">
|
|
114
|
+
{{{ each sso }}}
|
|
115
|
+
<div class="list-group-item d-flex align-items-center justify-content-between">
|
|
116
|
+
<a class="text-sm text-reset text-decoration-none" data-component="{./component}" href="{{{ if ./url }}}{./url}{{{ else }}}#{{{ end }}}" target="{{{ if ./associated }}}_blank{{{ else }}}_top{{{ end }}}">
|
|
117
|
+
{{{ if ./icon }}}<i class="fa {./icon}"></i>{{{ end }}}
|
|
118
|
+
{{{ if ./associated }}}[[user:sso.associated]]{{{ else }}}[[user:sso.not-associated]]{{{ end }}}
|
|
119
|
+
{./name}
|
|
120
|
+
</a>
|
|
121
|
+
{{{ if ./deauthUrl }}}
|
|
122
|
+
<a data-component="{./component}" class="btn btn-outline-secondary btn-sm" href="{./deauthUrl}">[[user:sso.dissociate]]</a>
|
|
123
|
+
{{{ end }}}
|
|
124
|
+
</div>
|
|
125
|
+
{{{ end }}}
|
|
126
|
+
</div>
|
|
127
|
+
{{{ end }}}
|
|
128
|
+
|
|
129
|
+
<hr/>
|
|
130
|
+
{{{ if (allowAccountDelete && isSelf) }}}
|
|
131
|
+
<div class="d-flex justify-content-center">
|
|
132
|
+
<button id="deleteAccountBtn" class="btn btn-danger">[[user:delete-account]]</button>
|
|
133
|
+
</div>
|
|
134
|
+
{{{ end }}}
|
|
135
|
+
</div>
|
|
136
|
+
</div>
|
|
137
|
+
|
|
138
138
|
<!-- IMPORT partials/account/footer.tpl -->
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
-
<h3 class="fw-semibold fs-5">[[pages:{template.name}, {username}]]</h3>
|
|
3
|
-
|
|
4
|
-
{{{ if !users.length }}}
|
|
5
|
-
<div class="alert alert-warning text-center">[[user:has-no-follower]]</div>
|
|
6
|
-
{{{ end }}}
|
|
7
|
-
|
|
8
|
-
<div class="row row-cols-2 row-cols-lg-3 row-cols-xl-4 g-4">
|
|
9
|
-
{{{ each users }}}
|
|
10
|
-
<!-- IMPORT partials/users/item.tpl -->
|
|
11
|
-
{{{end}}}
|
|
12
|
-
</div>
|
|
13
|
-
|
|
14
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
1
|
+
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
+
<h3 class="fw-semibold fs-5">[[pages:{template.name}, {username}]]</h3>
|
|
3
|
+
|
|
4
|
+
{{{ if !users.length }}}
|
|
5
|
+
<div class="alert alert-warning text-center">[[user:has-no-follower]]</div>
|
|
6
|
+
{{{ end }}}
|
|
7
|
+
|
|
8
|
+
<div class="row row-cols-2 row-cols-lg-3 row-cols-xl-4 g-4">
|
|
9
|
+
{{{ each users }}}
|
|
10
|
+
<!-- IMPORT partials/users/item.tpl -->
|
|
11
|
+
{{{end}}}
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
<!-- IMPORT partials/paginator.tpl -->
|
|
15
15
|
<!-- IMPORT partials/account/footer.tpl -->
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
-
|
|
3
|
-
<h3 class="fw-semibold fs-5">[[pages:{template.name}, {username}]]</h3>
|
|
4
|
-
|
|
5
|
-
{{{ if !users.length }}}
|
|
6
|
-
<div class="alert alert-warning text-center">[[user:follows-no-one]]</div>
|
|
7
|
-
{{{ end }}}
|
|
8
|
-
|
|
9
|
-
<div class="row row-cols-2 row-cols-lg-3 row-cols-xl-4 g-4">
|
|
10
|
-
{{{ each users }}}
|
|
11
|
-
<!-- IMPORT partials/users/item.tpl -->
|
|
12
|
-
{{{end}}}
|
|
13
|
-
</div>
|
|
14
|
-
|
|
15
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
1
|
+
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
+
|
|
3
|
+
<h3 class="fw-semibold fs-5">[[pages:{template.name}, {username}]]</h3>
|
|
4
|
+
|
|
5
|
+
{{{ if !users.length }}}
|
|
6
|
+
<div class="alert alert-warning text-center">[[user:follows-no-one]]</div>
|
|
7
|
+
{{{ end }}}
|
|
8
|
+
|
|
9
|
+
<div class="row row-cols-2 row-cols-lg-3 row-cols-xl-4 g-4">
|
|
10
|
+
{{{ each users }}}
|
|
11
|
+
<!-- IMPORT partials/users/item.tpl -->
|
|
12
|
+
{{{end}}}
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<!-- IMPORT partials/paginator.tpl -->
|
|
16
16
|
<!-- IMPORT partials/account/footer.tpl -->
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
-
|
|
3
|
-
<h3 class="fw-semibold fs-5">[[pages:{template.name}, {username}]]</h3>
|
|
4
|
-
|
|
5
|
-
<div class="groups">
|
|
6
|
-
<div component="groups/container" id="groups-list" class="row">
|
|
7
|
-
{{{ if !groups.length }}}
|
|
8
|
-
<div class="alert alert-warning text-center">[[groups:no-groups-found]]</div>
|
|
9
|
-
{{{ else }}}
|
|
10
|
-
<!-- IMPORT partials/groups/list.tpl -->
|
|
11
|
-
{{{ end }}}
|
|
12
|
-
</div>
|
|
13
|
-
</div>
|
|
14
|
-
|
|
15
|
-
<!-- IMPORT partials/account/footer.tpl -->
|
|
1
|
+
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
+
|
|
3
|
+
<h3 class="fw-semibold fs-5">[[pages:{template.name}, {username}]]</h3>
|
|
4
|
+
|
|
5
|
+
<div class="groups">
|
|
6
|
+
<div component="groups/container" id="groups-list" class="row">
|
|
7
|
+
{{{ if !groups.length }}}
|
|
8
|
+
<div class="alert alert-warning text-center">[[groups:no-groups-found]]</div>
|
|
9
|
+
{{{ else }}}
|
|
10
|
+
<!-- IMPORT partials/groups/list.tpl -->
|
|
11
|
+
{{{ end }}}
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<!-- IMPORT partials/account/footer.tpl -->
|