nodebb-theme-harmony 3.0.15 → 3.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package-lock.json +1023 -0
- package/package.json +1 -1
- package/templates/account/blocks.tpl +6 -6
- package/templates/account/categories.tpl +9 -9
- package/templates/account/consent.tpl +21 -21
- package/templates/account/edit/password.tpl +8 -8
- package/templates/account/edit/username.tpl +6 -6
- package/templates/account/edit.tpl +22 -22
- package/templates/account/followers.tpl +2 -2
- package/templates/account/following.tpl +2 -2
- package/templates/account/groups.tpl +2 -2
- package/templates/account/info.tpl +33 -33
- package/templates/account/posts.tpl +7 -7
- package/templates/account/profile.tpl +6 -6
- package/templates/account/sessions.tpl +1 -1
- package/templates/account/settings.tpl +55 -55
- package/templates/account/shares.tpl +1 -1
- package/templates/account/theme.tpl +15 -16
- package/templates/account/topics.tpl +6 -6
- package/templates/account/uploads.tpl +3 -3
- package/templates/admin/plugins/harmony.tpl +14 -14
- package/templates/category.tpl +7 -7
- package/templates/header.tpl +1 -1
- package/templates/notifications.tpl +1 -1
- package/templates/partials/account/admin-menu.tpl +8 -8
- package/templates/partials/account/header.tpl +12 -10
- package/templates/partials/account/session-list.tpl +3 -3
- package/templates/partials/account/sidebar-left.tpl +18 -18
- package/templates/partials/buttons/newTopic.tpl +1 -1
- package/templates/partials/categories/item.tpl +2 -2
- package/templates/partials/categories/lastpost.tpl +3 -3
- package/templates/partials/category/subcategory.tpl +2 -2
- package/templates/partials/header/brand.tpl +2 -2
- package/templates/partials/mobile-nav.tpl +2 -2
- package/templates/partials/notifications_list.tpl +3 -3
- package/templates/partials/paginator.tpl +10 -10
- package/templates/partials/posts_list_item.tpl +1 -1
- package/templates/partials/quick-category-search-results.tpl +4 -4
- package/templates/partials/quick-search-results.tpl +4 -4
- package/templates/partials/sidebar/chats.tpl +5 -5
- package/templates/partials/sidebar/drafts.tpl +3 -3
- package/templates/partials/sidebar/logged-in-menu.tpl +4 -4
- package/templates/partials/sidebar/logged-out-menu.tpl +10 -10
- package/templates/partials/sidebar/notifications.tpl +5 -5
- package/templates/partials/sidebar/search-mobile.tpl +5 -5
- package/templates/partials/sidebar/search.tpl +5 -5
- package/templates/partials/sidebar/user-menu.tpl +20 -20
- package/templates/partials/sidebar-left.tpl +2 -2
- package/templates/partials/skin-switcher.tpl +3 -3
- package/templates/partials/topic/crosspost.tpl +2 -2
- package/templates/partials/topic/event.tpl +3 -3
- package/templates/partials/topic/mark-unread.tpl +1 -1
- package/templates/partials/topic/navigator-mobile.tpl +4 -4
- package/templates/partials/topic/post-editor.tpl +1 -1
- package/templates/partials/topic/post-menu.tpl +1 -1
- package/templates/partials/topic/post.tpl +17 -17
- package/templates/partials/topic/quickreply.tpl +7 -5
- package/templates/partials/topic/reply-button.tpl +5 -5
- package/templates/partials/topic/selection-tooltip.tpl +1 -1
- package/templates/partials/topic/sort.tpl +4 -4
- package/templates/partials/topic/stats.tpl +11 -11
- package/templates/partials/topic/tools.tpl +1 -1
- package/templates/partials/topic/watch.tpl +9 -9
- package/templates/partials/topic-list-bar.tpl +12 -12
- package/templates/partials/topics_list.tpl +13 -13
- package/templates/partials/users_list_menu.tpl +6 -6
- package/templates/popular.tpl +1 -1
- package/templates/recent.tpl +3 -3
- package/templates/tag.tpl +2 -2
- package/templates/tags.tpl +3 -3
- package/templates/top.tpl +1 -1
- package/templates/topic.tpl +5 -5
- package/templates/unread.tpl +2 -2
- package/templates/users.tpl +4 -4
- package/templates/world.tpl +9 -9
- package/templates/partials/topic/post-placeholder.tpl +0 -15
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
<!-- IMPORT partials/account/header.tpl -->
|
|
2
2
|
<div class="d-flex justify-content-between mb-3">
|
|
3
|
-
<h3 class="fw-semibold fs-5">
|
|
3
|
+
<h3 class="fw-semibold fs-5">{{tx("pages:account/blocks", txEscape(username))}}</h3>
|
|
4
4
|
<div class="justify-content-end">
|
|
5
5
|
<div class="dropdown">
|
|
6
6
|
<div class="input-group">
|
|
7
|
-
<input class="form-control form-control-sm" type="text" id="user-search" placeholder="
|
|
7
|
+
<input class="form-control form-control-sm" type="text" id="user-search" placeholder="{{tx("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
10
|
<li component="blocks/start-typing">
|
|
11
|
-
<a href="#" class="dropdown-item rounded-1" role="menuitem">
|
|
11
|
+
<a href="#" class="dropdown-item rounded-1" role="menuitem">{{tx("admin/menu:search.start-typing")}}</a>
|
|
12
12
|
</li>
|
|
13
13
|
<li component="blocks/no-users" class="hidden">
|
|
14
|
-
<a href="#" class="dropdown-item rounded-1" role="menuitem">
|
|
14
|
+
<a href="#" class="dropdown-item rounded-1" role="menuitem">{{tx("users:no-users-found")}}</a>
|
|
15
15
|
</li>
|
|
16
16
|
{{{ each edit }}}
|
|
17
17
|
<li component="blocks/search/match">
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
<a href="{config.relative_path}/uid/{./uid}" class="text-decoration-none">{{buildAvatar(edit, "24px", true)}} {./username}</a>
|
|
21
21
|
</div>
|
|
22
22
|
|
|
23
|
-
<button class="btn btn-sm btn-outline-danger text-nowrap {{{ if ./isBlocked }}}hidden{{{ end }}}" data-uid="{./uid}" data-action="block">
|
|
24
|
-
<button class="btn btn-sm btn-outline-primary text-nowrap {{{ if !./isBlocked }}}hidden{{{ end }}}" data-uid="{./uid}" data-action="unblock">
|
|
23
|
+
<button class="btn btn-sm btn-outline-danger text-nowrap {{{ if ./isBlocked }}}hidden{{{ end }}}" data-uid="{./uid}" data-action="block">{{tx("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">{{tx("user:unblock-user")}}</button>
|
|
25
25
|
</div>
|
|
26
26
|
</li>
|
|
27
27
|
{{{ end }}}
|
|
@@ -8,43 +8,43 @@
|
|
|
8
8
|
<div class="d-flex gap-1">
|
|
9
9
|
<div class="dropdown bottom-sheet" component="category/watch/all">
|
|
10
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
|
-
<span>
|
|
11
|
+
<span>{{tx("user:change-all")}}</span>
|
|
12
12
|
</button>
|
|
13
13
|
<ul class="dropdown-menu p-1 text-sm dropdown-menu-end" role="menu">
|
|
14
14
|
<li>
|
|
15
15
|
<a class="dropdown-item rounded-1 d-flex flex-column p-2" href="#" component="category/watching" data-state="watching" role="menuitem">
|
|
16
16
|
<div class="d-flex align-items-center gap-2">
|
|
17
17
|
<i class="flex-shrink-0 fa fa-fw fa-bell-o"></i>
|
|
18
|
-
<span class="flex-grow-1 fw-semibold">
|
|
18
|
+
<span class="flex-grow-1 fw-semibold">{{tx("category:watching")}}</span>
|
|
19
19
|
</div>
|
|
20
|
-
<div class="help-text text-muted text-xs">
|
|
20
|
+
<div class="help-text text-muted text-xs">{{tx("category:watching.description")}}</div>
|
|
21
21
|
</a>
|
|
22
22
|
</li>
|
|
23
23
|
<li>
|
|
24
24
|
<a class="dropdown-item rounded-1 d-flex flex-column p-2" href="#" component="category/tracking" data-state="tracking" role="menuitem">
|
|
25
25
|
<div class="d-flex align-items-center gap-2">
|
|
26
26
|
<i class="flex-shrink-0 fa fa-fw fa-inbox"></i>
|
|
27
|
-
<span class="flex-grow-1 fw-semibold">
|
|
27
|
+
<span class="flex-grow-1 fw-semibold">{{tx("category:tracking")}}</span>
|
|
28
28
|
</div>
|
|
29
|
-
<div class="help-text text-muted text-xs">
|
|
29
|
+
<div class="help-text text-muted text-xs">{{tx("category:tracking.description")}}</div>
|
|
30
30
|
</a>
|
|
31
31
|
</li>
|
|
32
32
|
<li>
|
|
33
33
|
<a class="dropdown-item rounded-1 d-flex flex-column p-2" href="#" component="category/notwatching" data-state="notwatching" role="menuitem">
|
|
34
34
|
<div class="d-flex align-items-center gap-2">
|
|
35
35
|
<i class="flex-shrink-0 fa fa-fw fa-clock-o"></i>
|
|
36
|
-
<span class="flex-grow-1 fw-semibold">
|
|
36
|
+
<span class="flex-grow-1 fw-semibold">{{tx("category:not-watching")}}</span>
|
|
37
37
|
</div>
|
|
38
|
-
<div class="help-text text-muted text-xs">
|
|
38
|
+
<div class="help-text text-muted text-xs">{{tx("category:not-watching.description")}}</div>
|
|
39
39
|
</a>
|
|
40
40
|
</li>
|
|
41
41
|
<li>
|
|
42
42
|
<a class="dropdown-item rounded-1 d-flex flex-column p-2" href="#" component="category/ignoring" data-state="ignoring" role="menuitem">
|
|
43
43
|
<div class="d-flex align-items-center gap-2">
|
|
44
44
|
<i class="flex-shrink-0 fa fa-fw fa-eye-slash"></i>
|
|
45
|
-
<span class="flex-grow-1 fw-semibold">
|
|
45
|
+
<span class="flex-grow-1 fw-semibold">{{tx("category:ignoring")}}</span>
|
|
46
46
|
</div>
|
|
47
|
-
<div class="help-text text-muted text-xs">
|
|
47
|
+
<div class="help-text text-muted text-xs">{{tx("category:ignoring.description")}}</div>
|
|
48
48
|
</a>
|
|
49
49
|
</li>
|
|
50
50
|
</ul>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
-
<h3 class="fw-semibold fs-5">
|
|
2
|
+
<h3 class="fw-semibold fs-5">{{tx("user:consent.title")}}</h3>
|
|
3
3
|
|
|
4
|
-
<p class="lead">
|
|
5
|
-
<p>
|
|
4
|
+
<p class="lead">{{tx("user:consent.lead")}}</p>
|
|
5
|
+
<p>{{tx("user:consent.intro")}}</p>
|
|
6
6
|
|
|
7
7
|
<hr />
|
|
8
8
|
|
|
@@ -10,31 +10,31 @@
|
|
|
10
10
|
<div class="col-sm-6">
|
|
11
11
|
{{{ if gdpr_consent }}}
|
|
12
12
|
<div class="alert alert-success d-flex gap-3">
|
|
13
|
-
|
|
13
|
+
{{tx("user:consent.received")}}
|
|
14
14
|
<i class="fa fa-check fa-3x"></i>
|
|
15
15
|
</div>
|
|
16
16
|
{{{ else }}}
|
|
17
17
|
<div class="alert alert-warning">
|
|
18
|
-
|
|
18
|
+
{{tx("user:consent.not-received")}}
|
|
19
19
|
<br /><br />
|
|
20
20
|
<div class="text-center">
|
|
21
|
-
<button class="btn btn-warning" data-action="consent">
|
|
21
|
+
<button class="btn btn-warning" data-action="consent">{{tx("user:consent.give")}}</button>
|
|
22
22
|
</div>
|
|
23
23
|
</div>
|
|
24
24
|
{{{ end }}}
|
|
25
25
|
<div class="card">
|
|
26
26
|
<div class="card-body">
|
|
27
|
-
<p>
|
|
27
|
+
<p>{{tx("user:consent.email-intro")}}</p>
|
|
28
28
|
{{{ if digest.enabled }}}
|
|
29
|
-
<p>
|
|
29
|
+
<p>{{tx("user:consent.digest-frequency", digest.frequency)}}</p>
|
|
30
30
|
{{{ else }}}
|
|
31
|
-
<p>
|
|
31
|
+
<p>{{tx("user:consent.digest-off")}}</p>
|
|
32
32
|
{{{ end }}}
|
|
33
33
|
|
|
34
34
|
<div class="d-grid">
|
|
35
35
|
<a class="btn btn-outline-secondary" href="./settings">
|
|
36
36
|
<i class="fa fa-cog"></i>
|
|
37
|
-
|
|
37
|
+
{{tx("pages:account/settings")}}
|
|
38
38
|
</a>
|
|
39
39
|
</div>
|
|
40
40
|
</div>
|
|
@@ -43,27 +43,27 @@
|
|
|
43
43
|
<div class="col-sm-6">
|
|
44
44
|
<div class="card">
|
|
45
45
|
<div class="card-body">
|
|
46
|
-
<p><strong>
|
|
47
|
-
<p>
|
|
48
|
-
<p><strong>
|
|
49
|
-
<p>
|
|
50
|
-
<p><strong>
|
|
51
|
-
<p>
|
|
52
|
-
<p><strong>
|
|
53
|
-
<p>
|
|
46
|
+
<p><strong>{{tx("user:consent.right-of-access")}}</strong></p>
|
|
47
|
+
<p>{{tx("user:consent.right-of-access-description")}}</p>
|
|
48
|
+
<p><strong>{{tx("user:consent.right-to-rectification")}}</strong></p>
|
|
49
|
+
<p>{{tx("user:consent.right-to-rectification-description")}}</p>
|
|
50
|
+
<p><strong>{{tx("user:consent.right-to-erasure")}}</strong></p>
|
|
51
|
+
<p>{{tx("user:consent.right-to-erasure-description")}}</p>
|
|
52
|
+
<p><strong>{{tx("user:consent.right-to-data-portability")}}</strong></p>
|
|
53
|
+
<p>{{tx("user:consent.right-to-data-portability-description")}}</p>
|
|
54
54
|
|
|
55
55
|
<hr />
|
|
56
56
|
|
|
57
57
|
{{{ if canExport }}}
|
|
58
58
|
<div class="d-grid gap-2">
|
|
59
59
|
<a data-action="export-profile" class="btn btn-outline-secondary">
|
|
60
|
-
<i class="fa fa-download"></i>
|
|
60
|
+
<i class="fa fa-download"></i> {{tx("user:consent.export-profile")}}
|
|
61
61
|
</a>
|
|
62
62
|
<a data-action="export-posts" class="btn btn-outline-secondary">
|
|
63
|
-
<i class="fa fa-download"></i>
|
|
63
|
+
<i class="fa fa-download"></i> {{tx("user:consent.export-posts")}}
|
|
64
64
|
</a>
|
|
65
65
|
<a data-action="export-uploads" class="btn btn-outline-secondary">
|
|
66
|
-
<i class="fa fa-download"></i>
|
|
66
|
+
<i class="fa fa-download"></i> {{tx("user:consent.export-uploads")}}
|
|
67
67
|
</a>
|
|
68
68
|
</div>
|
|
69
69
|
{{{ end }}}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<!-- IMPORT partials/account/header.tpl -->
|
|
2
2
|
|
|
3
|
-
<h3 class="fw-semibold fs-5">{{{ if isSelf }}}
|
|
3
|
+
<h3 class="fw-semibold fs-5">{{{ if isSelf }}}{{tx("user:change-password")}}{{{ else }}}{{tx("pages:account/edit/password", txEscape(username))}}{{{ end }}}</h3>
|
|
4
4
|
<div class="row">
|
|
5
5
|
<div class="col-12 col-lg-4">
|
|
6
6
|
<form class="edit-form">
|
|
@@ -8,25 +8,25 @@
|
|
|
8
8
|
|
|
9
9
|
{{{ if isSelf }}}
|
|
10
10
|
<div class="mb-3">
|
|
11
|
-
<label class="form-label fw-semibold text-sm" for="inputCurrentPassword">
|
|
12
|
-
<input autocomplete="off" class="form-control" type="password" id="inputCurrentPassword" placeholder="
|
|
11
|
+
<label class="form-label fw-semibold text-sm" for="inputCurrentPassword">{{tx("user:current-password")}}</label>
|
|
12
|
+
<input autocomplete="off" class="form-control" type="password" id="inputCurrentPassword" placeholder="{{tx("user:current-password")}}" value="" {{{ if !hasPassword }}} disabled{{{ end }}}>
|
|
13
13
|
</div>
|
|
14
14
|
{{{ end }}}
|
|
15
15
|
|
|
16
16
|
<div class="mb-3">
|
|
17
|
-
<label class="form-label fw-semibold text-sm" for="inputNewPassword">
|
|
18
|
-
<input class="form-control" type="password" id="inputNewPassword" placeholder="
|
|
17
|
+
<label class="form-label fw-semibold text-sm" for="inputNewPassword">{{tx("user:new-password")}}</label>
|
|
18
|
+
<input class="form-control" type="password" id="inputNewPassword" placeholder="{{tx("user:password")}}" value="">
|
|
19
19
|
<span class="form-text" id="password-notify"></span>
|
|
20
20
|
</div>
|
|
21
21
|
|
|
22
22
|
<div class="mb-3">
|
|
23
|
-
<label class="form-label fw-semibold text-sm" for="inputNewPasswordAgain">
|
|
24
|
-
<input class="form-control" type="password" id="inputNewPasswordAgain" placeholder="
|
|
23
|
+
<label class="form-label fw-semibold text-sm" for="inputNewPasswordAgain">{{tx("user:confirm-password")}}</label>
|
|
24
|
+
<input class="form-control" type="password" id="inputNewPasswordAgain" placeholder="{{tx("user:confirm-password")}}" value="">
|
|
25
25
|
<span class="form-text" id="password-confirm-notify"></span>
|
|
26
26
|
</div>
|
|
27
27
|
|
|
28
28
|
<div class="form-actions">
|
|
29
|
-
<button id="changePasswordBtn" class="btn btn-primary btn-block"><i class="hide fa fa-spinner fa-spin"></i>
|
|
29
|
+
<button id="changePasswordBtn" class="btn btn-primary btn-block"><i class="hide fa fa-spinner fa-spin"></i> {{tx("user:change-password")}}</button>
|
|
30
30
|
</div>
|
|
31
31
|
</form>
|
|
32
32
|
</div>
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
<!-- IMPORT partials/account/header.tpl -->
|
|
2
2
|
|
|
3
|
-
<h3 class="fw-semibold fs-5">{{{ if isSelf }}}
|
|
3
|
+
<h3 class="fw-semibold fs-5">{{{ if isSelf }}}{{tx("user:change-username")}}{{{ else }}}{{tx("pages:account/edit/username", txEscape(username))}}{{{ end }}}</h3>
|
|
4
4
|
<div class="row">
|
|
5
5
|
<div class="col-12 col-lg-4">
|
|
6
6
|
<form class="edit-form">
|
|
7
7
|
<div class="mb-3">
|
|
8
|
-
<label class="form-label fw-semibold text-sm" for="inputNewUsername">
|
|
9
|
-
<input class="form-control" type="text" id="inputNewUsername" placeholder="
|
|
8
|
+
<label class="form-label fw-semibold text-sm" for="inputNewUsername">{{tx("user:username")}}</label>
|
|
9
|
+
<input class="form-control" type="text" id="inputNewUsername" placeholder="{{tx("user:username")}}" value="{username}">
|
|
10
10
|
</div>
|
|
11
11
|
|
|
12
12
|
<!-- disables autocomplete on FF --><input type="password" style="display:none">
|
|
13
13
|
|
|
14
14
|
{{{ if isSelf }}}
|
|
15
15
|
<div class="mb-3">
|
|
16
|
-
<label class="form-label fw-semibold text-sm" for="inputCurrentPassword">
|
|
17
|
-
<input autocomplete="off" class="form-control" type="password" id="inputCurrentPassword" placeholder="
|
|
16
|
+
<label class="form-label fw-semibold text-sm" for="inputCurrentPassword">{{tx("user:current-password")}}</label>
|
|
17
|
+
<input autocomplete="off" class="form-control" type="password" id="inputCurrentPassword" placeholder="{{tx("user:current-password")}}" value=""{{{ if !hasPassword }}} disabled{{{ end }}}>
|
|
18
18
|
</div>
|
|
19
19
|
{{{ end }}}
|
|
20
20
|
|
|
21
21
|
<input type="hidden" name="uid" id="inputUID" value="{uid}" />
|
|
22
22
|
|
|
23
23
|
<div class="form-actions">
|
|
24
|
-
<button id="submitBtn" class="btn btn-primary btn-block"><i class="hide fa fa-spinner fa-spin"></i>
|
|
24
|
+
<button id="submitBtn" class="btn btn-primary btn-block"><i class="hide fa fa-spinner fa-spin"></i> {{tx("user:change-username")}}</button>
|
|
25
25
|
</div>
|
|
26
26
|
</form>
|
|
27
27
|
</div>
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
<!-- IMPORT partials/account/header.tpl -->
|
|
2
2
|
|
|
3
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 }}}
|
|
5
|
-
<button id="submitBtn" class="btn btn-sm btn-primary">
|
|
4
|
+
<h3 class="fw-semibold fs-5 mb-0">{{{ if isSelf }}}{{tx("user:edit-profile")}}{{{ else }}}{{tx("pages:account/edit", txEscape(username))}}{{{ end }}}</h3>
|
|
5
|
+
<button id="submitBtn" class="btn btn-sm btn-primary">{{tx("global:save-changes")}}</button>
|
|
6
6
|
</div>
|
|
7
7
|
<div class="row">
|
|
8
8
|
<div class="col-xl-6 col-12">
|
|
9
9
|
<form role="form" component="profile/edit/form">
|
|
10
10
|
<div class="mb-3">
|
|
11
|
-
<label class="form-label fw-bold" for="fullname">
|
|
12
|
-
<input class="form-control" type="text" id="fullname" name="fullname" placeholder="
|
|
11
|
+
<label class="form-label fw-bold" for="fullname">{{tx("user:fullname")}}</label>
|
|
12
|
+
<input class="form-control" type="text" id="fullname" name="fullname" placeholder="{{tx("user:fullname")}}" value="{fullname}">
|
|
13
13
|
</div>
|
|
14
14
|
|
|
15
15
|
<div class="mb-3">
|
|
16
|
-
<label class="form-label fw-bold" for="birthday">
|
|
16
|
+
<label class="form-label fw-bold" for="birthday">{{tx("user:birthday")}}</label>
|
|
17
17
|
<input class="form-control" type="date" id="birthday" name="birthday" value="{birthday}" placeholder="mm/dd/yyyy">
|
|
18
18
|
</div>
|
|
19
19
|
|
|
@@ -44,18 +44,18 @@
|
|
|
44
44
|
|
|
45
45
|
{{{ if groups.length }}}
|
|
46
46
|
<div class="mb-3">
|
|
47
|
-
<label class="form-label fw-bold" for="groupTitle">
|
|
47
|
+
<label class="form-label fw-bold" for="groupTitle">{{tx("user:grouptitle")}}</label>
|
|
48
48
|
|
|
49
49
|
<div class="d-flex flex-column gap-2" component="group/badge/list">
|
|
50
50
|
{{{ each groups }}}
|
|
51
51
|
<div component="group/badge/item" class="d-flex gap-2 justify-content-between align-items-center" data-value="{./displayName}" data-selected="{./selected}">
|
|
52
52
|
<!-- IMPORT partials/groups/badge.tpl -->
|
|
53
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="
|
|
55
|
-
<button component="group/toggle/show" type="button" class="btn btn-ghost btn-sm {{{ if ./selected }}}hidden{{{ end }}}" title="
|
|
54
|
+
<button component="group/toggle/hide" type="button" class="btn btn-ghost btn-sm {{{ if !./selected }}}hidden{{{ end }}}" title="{{tx("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="{{tx("user:show-group-title")}}"><i class="fa fa-fw fa-eye-slash"></i></button>
|
|
56
56
|
{{{ if allowMultipleBadges }}}
|
|
57
|
-
<button component="group/order/up" type="button" class="btn btn-ghost btn-sm" title="
|
|
58
|
-
<button component="group/order/down" type="button" class="btn btn-ghost btn-sm" title="
|
|
57
|
+
<button component="group/order/up" type="button" class="btn btn-ghost btn-sm" title="{{tx("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="{{tx("user:order-group-down")}}"><i class="fa fa-fw fa-chevron-down"></i></button>
|
|
59
59
|
{{{ end }}}
|
|
60
60
|
</div>
|
|
61
61
|
</div>
|
|
@@ -66,14 +66,14 @@
|
|
|
66
66
|
|
|
67
67
|
{{{ if allowAboutMe }}}
|
|
68
68
|
<div class="mb-3">
|
|
69
|
-
<label class="form-label fw-bold" for="aboutme">
|
|
69
|
+
<label class="form-label fw-bold" for="aboutme">{{tx("user:aboutme")}}</label> <small><label id="aboutMeCharCountLeft"></label></small>
|
|
70
70
|
<textarea class="form-control" id="aboutme" name="aboutme" rows="5">{aboutme}</textarea>
|
|
71
71
|
</div>
|
|
72
72
|
{{{ end }}}
|
|
73
73
|
|
|
74
74
|
{{{ if (allowSignature && !disableSignatures) }}}
|
|
75
75
|
<div class="mb-3">
|
|
76
|
-
<label class="form-label fw-bold" for="signature">
|
|
76
|
+
<label class="form-label fw-bold" for="signature">{{tx("user:signature")}}</label> <small><label id="signatureCharCountLeft"></label></small>
|
|
77
77
|
<textarea class="form-control" id="signature" name="signature" rows="5">{signature}</textarea>
|
|
78
78
|
</div>
|
|
79
79
|
{{{ end }}}
|
|
@@ -85,41 +85,41 @@
|
|
|
85
85
|
<div class="text-center">
|
|
86
86
|
<ul class="list-group mb-3 text-sm text-nowrap">
|
|
87
87
|
{{{ if allowProfilePicture }}}
|
|
88
|
-
<li class="list-group-item"><a component="profile/change/picture" href="#" class="text-decoration-none text-reset">
|
|
88
|
+
<li class="list-group-item"><a component="profile/change/picture" href="#" class="text-decoration-none text-reset">{{tx("user:change-picture")}}</a></li>
|
|
89
89
|
{{{ end }}}
|
|
90
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">
|
|
91
|
+
<li class="list-group-item"><a href="{config.relative_path}/user/{userslug}/edit/username" class="text-decoration-none text-reset">{{tx("user:change-username")}}</a></li>
|
|
92
92
|
{{{ end }}}
|
|
93
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">
|
|
94
|
+
<li class="list-group-item"><a href="{config.relative_path}/user/{userslug}/edit/email" class="text-decoration-none text-reset">{{tx("user:change-email")}}</a></li>
|
|
95
95
|
{{{ end }}}
|
|
96
96
|
{{{ if canChangePassword }}}
|
|
97
|
-
<li class="list-group-item"><a href="{config.relative_path}/user/{userslug}/edit/password" class="text-decoration-none text-reset">
|
|
97
|
+
<li class="list-group-item"><a href="{config.relative_path}/user/{userslug}/edit/password" class="text-decoration-none text-reset">{{tx("user:change-password")}}</a></li>
|
|
98
98
|
{{{ end }}}
|
|
99
99
|
{{{ each editButtons }}}
|
|
100
|
-
<li class="list-group-item"><a href="{config.relative_path}{./link}" class="text-decoration-none text-reset">{./text}</a></li>
|
|
100
|
+
<li class="list-group-item"><a href="{config.relative_path}{./link}" class="text-decoration-none text-reset">{{tx(./text)}}</a></li>
|
|
101
101
|
{{{ end }}}
|
|
102
102
|
</ul>
|
|
103
103
|
|
|
104
104
|
{{{ if config.requireEmailConfirmation }}}
|
|
105
105
|
{{{ if (email && isSelf) }}}
|
|
106
|
-
<a id="confirm-email" href="#" class="btn btn-warning {{{ if email:confirmed }}}hide{{{ end }}}">
|
|
106
|
+
<a id="confirm-email" href="#" class="btn btn-warning {{{ if email:confirmed }}}hide{{{ end }}}">{{tx("user:confirm-email")}}</a><br/><br/>
|
|
107
107
|
{{{ end }}}
|
|
108
108
|
{{{ end }}}
|
|
109
109
|
</div>
|
|
110
110
|
|
|
111
111
|
{{{ if sso.length }}}
|
|
112
|
-
<label class="form-label text-sm fw-semibold">
|
|
112
|
+
<label class="form-label text-sm fw-semibold">{{tx("user:sso.title")}}</label>
|
|
113
113
|
<div class="list-group">
|
|
114
114
|
{{{ each sso }}}
|
|
115
115
|
<div class="list-group-item d-flex align-items-center justify-content-between">
|
|
116
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
117
|
{{{ if ./icon }}}<i class="fa {./icon}"></i>{{{ end }}}
|
|
118
|
-
{{{ if ./associated }}}
|
|
118
|
+
{{{ if ./associated }}}{{tx("user:sso.associated")}}{{{ else }}}{{tx("user:sso.not-associated")}}{{{ end }}}
|
|
119
119
|
{./name}
|
|
120
120
|
</a>
|
|
121
121
|
{{{ if ./deauthUrl }}}
|
|
122
|
-
<a data-component="{./component}" class="btn btn-outline-secondary btn-sm" href="{./deauthUrl}">
|
|
122
|
+
<a data-component="{./component}" class="btn btn-outline-secondary btn-sm" href="{./deauthUrl}">{{tx("user:sso.dissociate")}}</a>
|
|
123
123
|
{{{ end }}}
|
|
124
124
|
</div>
|
|
125
125
|
{{{ end }}}
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
<hr/>
|
|
130
130
|
{{{ if (allowAccountDelete && isSelf) }}}
|
|
131
131
|
<div class="d-flex justify-content-center">
|
|
132
|
-
<button id="deleteAccountBtn" class="btn btn-danger">
|
|
132
|
+
<button id="deleteAccountBtn" class="btn btn-danger">{{tx("user:delete-account")}}</button>
|
|
133
133
|
</div>
|
|
134
134
|
{{{ end }}}
|
|
135
135
|
</div>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
-
<h3 class="fw-semibold fs-5">
|
|
2
|
+
<h3 class="fw-semibold fs-5">{{tx("pages:account/followers", txEscape(username))}}</h3>
|
|
3
3
|
|
|
4
4
|
{{{ if !users.length }}}
|
|
5
|
-
<div class="alert alert-warning text-center">
|
|
5
|
+
<div class="alert alert-warning text-center">{{tx("user:has-no-follower")}}</div>
|
|
6
6
|
{{{ end }}}
|
|
7
7
|
|
|
8
8
|
<!-- IMPORT partials/users_list.tpl -->
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<!-- IMPORT partials/account/header.tpl -->
|
|
2
2
|
|
|
3
|
-
<h3 class="fw-semibold fs-5">
|
|
3
|
+
<h3 class="fw-semibold fs-5">{{tx("pages:account/following", txEscape(username))}}</h3>
|
|
4
4
|
|
|
5
5
|
{{{ if !users.length }}}
|
|
6
|
-
<div class="alert alert-warning text-center">
|
|
6
|
+
<div class="alert alert-warning text-center">{{tx("user:follows-no-one")}}</div>
|
|
7
7
|
{{{ end }}}
|
|
8
8
|
|
|
9
9
|
<!-- IMPORT partials/users_list.tpl -->
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
<!-- IMPORT partials/account/header.tpl -->
|
|
2
2
|
|
|
3
|
-
<h3 class="fw-semibold fs-5">
|
|
3
|
+
<h3 class="fw-semibold fs-5">{{tx("pages:account/groups", txEscape(username))}}</h3>
|
|
4
4
|
|
|
5
5
|
<div class="groups">
|
|
6
6
|
<div component="groups/container" id="groups-list" class="row">
|
|
7
7
|
{{{ if !groups.length }}}
|
|
8
|
-
<div class="alert alert-warning text-center">
|
|
8
|
+
<div class="alert alert-warning text-center">{{tx("groups:no-groups-found")}}</div>
|
|
9
9
|
{{{ else }}}
|
|
10
10
|
<!-- IMPORT partials/groups/list.tpl -->
|
|
11
11
|
{{{ end }}}
|