nodebb-theme-persona 15.0.11 → 15.1.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/package.json +2 -2
- package/templates/account/blocks.tpl +8 -8
- package/templates/account/categories.tpl +5 -5
- package/templates/account/consent.tpl +21 -21
- package/templates/account/edit/password.tpl +7 -7
- package/templates/account/edit/username.tpl +5 -5
- package/templates/account/edit.tpl +21 -21
- 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 +35 -35
- package/templates/account/posts.tpl +7 -7
- package/templates/account/profile.tpl +19 -36
- package/templates/account/sessions.tpl +1 -1
- package/templates/account/settings.tpl +55 -55
- package/templates/account/theme.tpl +8 -8
- package/templates/account/topics.tpl +6 -6
- package/templates/account/uploads.tpl +4 -4
- package/templates/categories.tpl +1 -1
- package/templates/category.tpl +6 -6
- package/templates/modules/usercard.tpl +4 -5
- package/templates/notifications.tpl +2 -2
- package/templates/partials/account/header.tpl +4 -4
- package/templates/partials/account/menu.tpl +27 -27
- package/templates/partials/account/session-list.tpl +3 -3
- package/templates/partials/buttons/newTopic.tpl +1 -1
- package/templates/partials/categories/item.tpl +3 -3
- package/templates/partials/categories/lastpost.tpl +4 -4
- package/templates/partials/category/subcategory.tpl +2 -2
- package/templates/partials/chats-menu.tpl +2 -2
- package/templates/partials/cookie-consent.tpl +1 -1
- package/templates/partials/header/chats.tpl +3 -3
- package/templates/partials/header/notifications.tpl +5 -5
- package/templates/partials/header/search.tpl +4 -4
- package/templates/partials/header/user-menu.tpl +18 -18
- package/templates/partials/menu.tpl +8 -8
- package/templates/partials/notifications_list.tpl +3 -3
- package/templates/partials/paginator.tpl +9 -9
- package/templates/partials/post_bar.tpl +2 -2
- package/templates/partials/posts_list_item.tpl +2 -2
- package/templates/partials/quick-category-search-results.tpl +4 -4
- package/templates/partials/quick-search-results.tpl +2 -2
- package/templates/partials/search/results.tpl +2 -2
- package/templates/partials/topic/crosspost.tpl +1 -1
- package/templates/partials/topic/event.tpl +31 -5
- package/templates/partials/topic/navigation-post.tpl +1 -1
- package/templates/partials/topic/navigator.tpl +4 -4
- package/templates/partials/topic/post-editor.tpl +1 -1
- package/templates/partials/topic/post.tpl +11 -11
- package/templates/partials/topic/quickreply.tpl +6 -4
- package/templates/partials/topic/reply-button.tpl +5 -5
- package/templates/partials/topic/selection-tooltip.tpl +1 -1
- package/templates/partials/topic/sort.tpl +5 -5
- 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/topics_list.tpl +14 -14
- package/templates/partials/users_list.tpl +1 -1
- package/templates/partials/users_list_menu.tpl +6 -6
- package/templates/popular.tpl +2 -2
- package/templates/recent.tpl +3 -3
- package/templates/tag.tpl +3 -3
- package/templates/tags.tpl +2 -2
- package/templates/top.tpl +2 -2
- package/templates/topic.tpl +4 -4
- package/templates/unread.tpl +3 -3
- package/templates/users.tpl +2 -2
- package/templates/world.tpl +18 -18
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
{{{ if sessions.length }}}
|
|
4
4
|
<div class="mb-3">
|
|
5
|
-
<h5>
|
|
5
|
+
<h5>{{tx("global:sessions")}}</h5>
|
|
6
6
|
<ul class="list-group" component="user/sessions">
|
|
7
7
|
<!-- IMPORT partials/account/session-list.tpl -->
|
|
8
8
|
</ul>
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<div class="col-sm-6 mb-3">
|
|
14
14
|
{{{ if invitedBy}}}
|
|
15
15
|
<div class="mb-4 pb-3 border-bottom">
|
|
16
|
-
<h6>
|
|
16
|
+
<h6>{{tx("user:info.invited-by")}}</h6>
|
|
17
17
|
<div class="d-flex align-items-center gap-2">
|
|
18
18
|
<a href="">{{buildAvatar(invitedBy, "24px", true)}}</a>
|
|
19
19
|
<a href="">{invitedBy.username}</a>
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
{{{ end }}}
|
|
23
23
|
|
|
24
24
|
<div class="mb-4 border-bottom">
|
|
25
|
-
<h6>
|
|
25
|
+
<h6>{{tx("global:recentips")}}</h6>
|
|
26
26
|
<div class="">
|
|
27
27
|
<ul class="text-sm text-secondary">
|
|
28
28
|
{{{each ips}}}
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
</div>
|
|
34
34
|
|
|
35
35
|
<div class="mb-4 border-bottom">
|
|
36
|
-
<h6>
|
|
36
|
+
<h6>{{tx("user:info.username-history")}}</h6>
|
|
37
37
|
<div class="">
|
|
38
38
|
<ul class="list-unstyled">
|
|
39
39
|
{{{ each usernames }}}
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
</div>
|
|
55
55
|
|
|
56
56
|
<div class="mb-4 border-bottom">
|
|
57
|
-
<h6>
|
|
57
|
+
<h6>{{tx("user:info.email-history")}}</h6>
|
|
58
58
|
<div class="">
|
|
59
59
|
<ul class="list-unstyled">
|
|
60
60
|
{{{ each emails }}}
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
</div>
|
|
75
75
|
|
|
76
76
|
<div class="mb-3 border-bottom">
|
|
77
|
-
<h6>
|
|
77
|
+
<h6>{{tx("user:info.latest-flags")}}</h6>
|
|
78
78
|
<div class="">
|
|
79
79
|
{{{ if history.flags.length }}}
|
|
80
80
|
<ul class="recent-flags list-unstyled">
|
|
@@ -83,20 +83,20 @@
|
|
|
83
83
|
<div class="mb-1 d-flex align-items-center justify-content-between">
|
|
84
84
|
<div>
|
|
85
85
|
{{{ if (./type == "user")}}}
|
|
86
|
-
<span class="badge text-bg-info">
|
|
86
|
+
<span class="badge text-bg-info">{{tx("user:info.profile")}}</span>
|
|
87
87
|
{{{ else }}}
|
|
88
|
-
<span class="badge text-bg-info">
|
|
88
|
+
<span class="badge text-bg-info">{{tx("user:info.post")}}</span>
|
|
89
89
|
{{{ end }}}
|
|
90
90
|
<span class="timestamp timeago" title="{./timestampISO}"></span>
|
|
91
91
|
</div>
|
|
92
92
|
|
|
93
|
-
<a href="{config.relative_path}/flags/{./flagId}" class="badge badge border border-gray-300 text-body">
|
|
93
|
+
<a href="{config.relative_path}/flags/{./flagId}" class="badge badge border border-gray-300 text-body">{{tx("user:info.view-flag")}}</a>
|
|
94
94
|
</div>
|
|
95
95
|
|
|
96
96
|
{{{ if (./type == "post") }}}
|
|
97
97
|
<p class="mb-1">
|
|
98
98
|
{{{ if history.flags.targetPurged }}}
|
|
99
|
-
<div>
|
|
99
|
+
<div>{{tx("flags:target-purged")}}</div>
|
|
100
100
|
{{{ else }}}
|
|
101
101
|
<a class="title" href="{config.relative_path}/post/{encodeURIComponent(./pid)}">{./title}</a>
|
|
102
102
|
{{{ end }}}
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
{{{ end }}}
|
|
105
105
|
|
|
106
106
|
<div class="d-flex gap-2 align-items-center mb-3">
|
|
107
|
-
<span class="text-sm">
|
|
107
|
+
<span class="text-sm">{{tx("user:info.reported-by")}}</span>
|
|
108
108
|
<div class="d-flex text-nowrap">
|
|
109
109
|
{{{ each ./reports }}}
|
|
110
110
|
<a style="width: 18px; z-index: 3;" class="text-decoration-none" href="{config.relative_path}/user/{./reporter.userslug}">{{buildAvatar(./reporter, "24px", true)}}</a>
|
|
@@ -115,20 +115,20 @@
|
|
|
115
115
|
{{{ end }}}
|
|
116
116
|
</ul>
|
|
117
117
|
{{{ else }}}
|
|
118
|
-
<div class="alert alert-light">
|
|
118
|
+
<div class="alert alert-light">{{tx("user:info.no-flags")}}</div>
|
|
119
119
|
{{{ end }}}
|
|
120
120
|
</div>
|
|
121
121
|
</div>
|
|
122
122
|
|
|
123
123
|
<div class="mb-3 border-bottom">
|
|
124
124
|
<h6 class="d-flex align-items-center justify-content-between">
|
|
125
|
-
|
|
125
|
+
{{tx("user:info.ban-history")}}
|
|
126
126
|
|
|
127
127
|
{{{ if (!banned && !isSelf) }}}
|
|
128
|
-
<button class="btn btn-sm btn-danger" component="account/ban">
|
|
128
|
+
<button class="btn btn-sm btn-danger" component="account/ban">{{tx("user:ban-account")}}</button>
|
|
129
129
|
{{{ end }}}
|
|
130
130
|
{{{ if (banned && !isSelf) }}}
|
|
131
|
-
<button class="btn btn-sm btn-success" component="account/unban">
|
|
131
|
+
<button class="btn btn-sm btn-success" component="account/unban">{{tx("user:unban-account")}}</button>
|
|
132
132
|
{{{ end }}}
|
|
133
133
|
</h6>
|
|
134
134
|
<div class="">
|
|
@@ -145,20 +145,20 @@
|
|
|
145
145
|
<span class="timestamp timeago" title="{./timestampISO}"></span>
|
|
146
146
|
</div>
|
|
147
147
|
{{{ if (./type != "unban") }}}
|
|
148
|
-
<span class="badge text-bg-danger">
|
|
148
|
+
<span class="badge text-bg-danger">{{tx("user:banned")}}</span>
|
|
149
149
|
{{{ else }}}
|
|
150
|
-
<span class="badge text-bg-success">
|
|
150
|
+
<span class="badge text-bg-success">{{tx("user:unbanned")}}</span>
|
|
151
151
|
{{{ end }}}
|
|
152
152
|
</div>
|
|
153
153
|
<p class="mb-1">
|
|
154
|
-
<span class="reason">
|
|
154
|
+
<span class="reason">{{tx("user:info.banned-reason-label")}}: <strong>{{tx(./reason)}}</strong></span>
|
|
155
155
|
</p>
|
|
156
156
|
<p>
|
|
157
157
|
{{{ if ./until }}}
|
|
158
|
-
<span class="expiry">
|
|
158
|
+
<span class="expiry">{{tx("user:info.banned-until", isoTimeToLocaleString(./untilISO, config.userLang))}}</span>
|
|
159
159
|
{{{ else }}}
|
|
160
160
|
{{{ if (./type != "unban") }}}
|
|
161
|
-
<span class="expiry">
|
|
161
|
+
<span class="expiry">{{tx("user:info.banned-permanently")}}</span>
|
|
162
162
|
{{{ end }}}
|
|
163
163
|
{{{ end }}}
|
|
164
164
|
</p>
|
|
@@ -166,22 +166,22 @@
|
|
|
166
166
|
{{{ end }}}
|
|
167
167
|
</ul>
|
|
168
168
|
{{{ else }}}
|
|
169
|
-
<div class="alert alert-light">
|
|
169
|
+
<div class="alert alert-light">{{tx("user:info.no-ban-history")}}</div>
|
|
170
170
|
{{{ end }}}
|
|
171
171
|
</div>
|
|
172
172
|
</div>
|
|
173
173
|
|
|
174
174
|
<div class="mb-3">
|
|
175
175
|
<h6 class="d-flex align-items-center justify-content-between">
|
|
176
|
-
|
|
176
|
+
{{tx("user:info.mute-history")}}
|
|
177
177
|
|
|
178
178
|
{{{ if !muted }}}
|
|
179
179
|
{{{ if !isSelf }}}
|
|
180
|
-
<button class="btn btn-sm btn-danger" component="account/mute">
|
|
180
|
+
<button class="btn btn-sm btn-danger" component="account/mute">{{tx("user:mute-account")}}</button>
|
|
181
181
|
{{{ end }}}
|
|
182
182
|
{{{ else }}}
|
|
183
183
|
{{{ if !isSelf }}}
|
|
184
|
-
<button class="btn btn-sm btn-success" component="account/unmute">
|
|
184
|
+
<button class="btn btn-sm btn-success" component="account/unmute">{{tx("user:unmute-account")}}</button>
|
|
185
185
|
{{{ end }}}
|
|
186
186
|
{{{ end }}}
|
|
187
187
|
</h6>
|
|
@@ -199,24 +199,24 @@
|
|
|
199
199
|
<span class="timestamp timeago" title="{./timestampISO}"></span>
|
|
200
200
|
</div>
|
|
201
201
|
{{{ if (./type != "unmute") }}}
|
|
202
|
-
<span class="badge text-bg-danger">
|
|
202
|
+
<span class="badge text-bg-danger">{{tx("user:muted")}}</span>
|
|
203
203
|
{{{ else }}}
|
|
204
|
-
<span class="badge text-bg-success">
|
|
204
|
+
<span class="badge text-bg-success">{{tx("user:unmuted")}}</span>
|
|
205
205
|
{{{ end }}}
|
|
206
206
|
</div>
|
|
207
207
|
<p class="mb-1">
|
|
208
|
-
<span class="reason">
|
|
208
|
+
<span class="reason">{{tx("user:info.banned-reason-label")}}: <strong>{{tx(./reason)}}</strong></span>
|
|
209
209
|
</p>
|
|
210
210
|
<p>
|
|
211
211
|
{{{ if ./until }}}
|
|
212
|
-
<span class="expiry">
|
|
212
|
+
<span class="expiry">{{tx("user:info.muted-until", isoTimeToLocaleString(./untilISO, config.userLang))}}</span>
|
|
213
213
|
{{{ end }}}
|
|
214
214
|
</p>
|
|
215
215
|
</li>
|
|
216
216
|
{{{ end }}}
|
|
217
217
|
</ul>
|
|
218
218
|
{{{ else }}}
|
|
219
|
-
<div class="alert alert-light">
|
|
219
|
+
<div class="alert alert-light">{{tx("user:info.no-mute-history")}}</div>
|
|
220
220
|
{{{ end }}}
|
|
221
221
|
</div>
|
|
222
222
|
</div>
|
|
@@ -227,12 +227,12 @@
|
|
|
227
227
|
{{{ if isAdminOrGlobalModerator }}}
|
|
228
228
|
<div class="card">
|
|
229
229
|
<h5 class="card-header">
|
|
230
|
-
|
|
230
|
+
{{tx("user:info.moderation-note")}}
|
|
231
231
|
</h5>
|
|
232
232
|
<div class="card-body">
|
|
233
|
-
<textarea component="account/moderation-note" class="form-control mb-3" aria-label="
|
|
233
|
+
<textarea component="account/moderation-note" class="form-control mb-3" aria-label="{{tx("user:info.moderation-note")}}"></textarea>
|
|
234
234
|
|
|
235
|
-
<button class="btn btn-sm float-end btn-success" component="account/save-moderation-note">
|
|
235
|
+
<button class="btn btn-sm float-end btn-success" component="account/save-moderation-note">{{tx("user:info.moderation-note.add")}}</button>
|
|
236
236
|
<br/>
|
|
237
237
|
<div component="account/moderation-note/list">
|
|
238
238
|
{{{ each moderationNotes }}}
|
|
@@ -252,14 +252,14 @@
|
|
|
252
252
|
<div class="content text-secondary">
|
|
253
253
|
{./note}
|
|
254
254
|
</div>
|
|
255
|
-
<button component="account/moderation-note/edit" class="btn btn-sm btn-link align-self-end">
|
|
255
|
+
<button component="account/moderation-note/edit" class="btn btn-sm btn-link align-self-end">{{tx("topic:edit")}}</button>
|
|
256
256
|
</div>
|
|
257
257
|
|
|
258
258
|
<div component="account/moderation-note/edit-area" class="d-flex flex-column gap-2 hidden">
|
|
259
259
|
<textarea class="form-control form-control-sm w-100 overflow-hidden">{./rawNote}</textarea>
|
|
260
260
|
<div class="align-self-end">
|
|
261
|
-
<button component="account/moderation-note/cancel-edit" class="btn btn-sm btn-link text-danger align-self-end">
|
|
262
|
-
<button component="account/moderation-note/save-edit" class="btn btn-sm btn-primary align-self-end">
|
|
261
|
+
<button component="account/moderation-note/cancel-edit" class="btn btn-sm btn-link text-danger align-self-end">{{tx("global:cancel")}}</button>
|
|
262
|
+
<button component="account/moderation-note/save-edit" class="btn btn-sm btn-primary align-self-end">{{tx("global:save")}}</button>
|
|
263
263
|
</div>
|
|
264
264
|
</div>
|
|
265
265
|
</div>
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
<!-- IMPORT partials/account/header.tpl -->
|
|
2
2
|
|
|
3
3
|
<div class="d-flex flex-wrap justify-content-between align-items-center gap-2 mb-3">
|
|
4
|
-
<h3 class="fw-semibold fs-4 mb-0">
|
|
4
|
+
<h3 class="fw-semibold fs-4 mb-0">{{tx("global:posts")}}</h3>
|
|
5
5
|
<div class="d-flex flex-wrap gap-1">
|
|
6
|
-
<a href="{config.relative_path}/user/{userslug}/posts" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if template.account/posts }}}active{{{ end }}}">
|
|
6
|
+
<a href="{config.relative_path}/user/{userslug}/posts" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if template.account/posts }}}active{{{ end }}}">{{tx("global:header.recent")}}</a>
|
|
7
7
|
{{{ if !reputation:disabled }}}
|
|
8
|
-
<a href="{config.relative_path}/user/{userslug}/best"class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if template.account/best }}}active{{{ end }}}">
|
|
9
|
-
<a href="{config.relative_path}/user/{userslug}/controversial" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if template.account/controversial }}}active{{{ end }}}">
|
|
8
|
+
<a href="{config.relative_path}/user/{userslug}/best"class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if template.account/best }}}active{{{ end }}}">{{tx("global:best")}}</a>
|
|
9
|
+
<a href="{config.relative_path}/user/{userslug}/controversial" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if template.account/controversial }}}active{{{ end }}}">{{tx("global:controversial")}}</a>
|
|
10
10
|
{{{ if canEdit }}}
|
|
11
|
-
<a href="{config.relative_path}/user/{userslug}/upvoted" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if template.account/upvoted }}}active{{{ end }}}">
|
|
11
|
+
<a href="{config.relative_path}/user/{userslug}/upvoted" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if template.account/upvoted }}}active{{{ end }}}">{{tx("global:upvoted")}}</a>
|
|
12
12
|
{{{ if !downvote:disabled }}}
|
|
13
|
-
<a href="{config.relative_path}/user/{userslug}/downvoted" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if template.account/downvoted }}}active{{{ end }}}">
|
|
13
|
+
<a href="{config.relative_path}/user/{userslug}/downvoted" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if template.account/downvoted }}}active{{{ end }}}">{{tx("global:downvoted")}}</a>
|
|
14
14
|
{{{ end }}}
|
|
15
15
|
{{{ end }}}
|
|
16
16
|
{{{ end }}}
|
|
17
17
|
{{{ if canEdit }}}
|
|
18
|
-
<a href="{config.relative_path}/user/{userslug}/bookmarks" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if template.account/bookmarks }}}active{{{ end }}}">
|
|
18
|
+
<a href="{config.relative_path}/user/{userslug}/bookmarks" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if template.account/bookmarks }}}active{{{ end }}}">{{tx("user:bookmarks")}}</a>
|
|
19
19
|
{{{ end }}}
|
|
20
20
|
</div>
|
|
21
21
|
</div>
|
|
@@ -8,18 +8,18 @@
|
|
|
8
8
|
{{{ if banned }}}
|
|
9
9
|
<div class="text-center">
|
|
10
10
|
{{{ if banned_until }}}
|
|
11
|
-
|
|
11
|
+
{{tx("user:info.banned-until", isoTimeToLocaleString(./banned_until_readable, config.userLang))}}
|
|
12
12
|
{{{ else }}}
|
|
13
|
-
|
|
13
|
+
{{tx("user:info.banned-permanently")}}
|
|
14
14
|
{{{ end }}}
|
|
15
15
|
</div>
|
|
16
16
|
{{{ end }}}
|
|
17
17
|
{{{ if muted }}}
|
|
18
18
|
<div class="text-center">
|
|
19
19
|
{{{ if mutedUntil }}}
|
|
20
|
-
|
|
20
|
+
{{tx("user:info.muted-until", isoTimeToLocaleString(./muted_until_readable, config.userLang))}}
|
|
21
21
|
{{{ else }}}
|
|
22
|
-
|
|
22
|
+
{{tx("user:info.muted-permanently")}}
|
|
23
23
|
{{{ end }}}
|
|
24
24
|
</div>
|
|
25
25
|
{{{ end }}}
|
|
@@ -36,61 +36,61 @@
|
|
|
36
36
|
{{{ end }}}
|
|
37
37
|
|
|
38
38
|
<!-- IF aboutme -->
|
|
39
|
-
<div component="aboutme" class="text-center aboutme text-secondary w-75 mx-auto text-center">{{
|
|
39
|
+
<div component="aboutme" class="text-center aboutme text-secondary w-75 mx-auto text-center">{{aboutmeParsed}}</div>
|
|
40
40
|
<!-- ENDIF aboutme -->
|
|
41
41
|
|
|
42
42
|
<div class="account-stats fs-1 text-center mb-3">
|
|
43
43
|
<!-- IF !reputation:disabled -->
|
|
44
44
|
<div class="stat d-inline-block" style="min-width: 100px;">
|
|
45
45
|
<div title="{reputation}">{humanReadableNumber(reputation)}</div>
|
|
46
|
-
<div class="stat-label text-xs text-uppercase text-secondary">
|
|
46
|
+
<div class="stat-label text-xs text-uppercase text-secondary">{{tx("global:reputation")}}</div>
|
|
47
47
|
</div>
|
|
48
48
|
<!-- ENDIF !reputation:disabled -->
|
|
49
49
|
|
|
50
50
|
<div class="stat d-inline-block" style="min-width: 100px;">
|
|
51
51
|
<div title="{profileviews}">{humanReadableNumber(profileviews)}</div>
|
|
52
|
-
<div class="stat-label text-xs text-uppercase text-secondary">
|
|
52
|
+
<div class="stat-label text-xs text-uppercase text-secondary">{{tx("user:profile-views")}}</div>
|
|
53
53
|
</div>
|
|
54
54
|
|
|
55
55
|
<div class="stat d-inline-block" style="min-width: 100px;">
|
|
56
56
|
<div><a title="{counts.posts}" href="{config.relative_path}/user/{userslug}/posts">{humanReadableNumber(counts.posts)}</a></div>
|
|
57
|
-
<div class="stat-label text-xs text-uppercase text-secondary">
|
|
57
|
+
<div class="stat-label text-xs text-uppercase text-secondary">{{tx("global:posts")}}</div>
|
|
58
58
|
</div>
|
|
59
59
|
|
|
60
60
|
<div class="stat d-inline-block" style="min-width: 100px;">
|
|
61
61
|
<div><a title="{counts.followers}" href="{config.relative_path}/user/{userslug}/followers">{humanReadableNumber(counts.followers)}</a></div>
|
|
62
|
-
<div class="stat-label text-xs text-uppercase text-secondary">
|
|
62
|
+
<div class="stat-label text-xs text-uppercase text-secondary">{{tx("user:followers")}}</div>
|
|
63
63
|
</div>
|
|
64
64
|
|
|
65
65
|
<div class="stat d-inline-block" style="min-width: 100px;">
|
|
66
66
|
<div><a title="{counts.following}" href="{config.relative_path}/user/{userslug}/following">{humanReadableNumber(counts.following)}</a></div>
|
|
67
|
-
<div class="stat-label text-xs text-uppercase text-secondary">
|
|
67
|
+
<div class="stat-label text-xs text-uppercase text-secondary">{{tx("user:following")}}</div>
|
|
68
68
|
</div>
|
|
69
69
|
</div>
|
|
70
70
|
|
|
71
71
|
<div class="profile-meta text-xs text-uppercase d-flex gap-3 flex-wrap justify-content-center align-items-center">
|
|
72
72
|
<div class="w-100 d-flex gap-3 justify-content-center">
|
|
73
73
|
<div>
|
|
74
|
-
<span class="stat-label">
|
|
74
|
+
<span class="stat-label">{{tx("user:joined")}}</span>
|
|
75
75
|
<span class="timeago fw-bold" title="{joindateISO}"></span>
|
|
76
76
|
</div>
|
|
77
77
|
|
|
78
78
|
<div>
|
|
79
|
-
<span class="stat-label">
|
|
79
|
+
<span class="stat-label">{{tx("user:lastonline")}}</span>
|
|
80
80
|
<span class="timeago fw-bold" title="{lastonlineISO}"></span>
|
|
81
81
|
</div>
|
|
82
82
|
</div>
|
|
83
83
|
|
|
84
84
|
{{{ if email }}}
|
|
85
85
|
<div>
|
|
86
|
-
<span class="stat-label">
|
|
87
|
-
<strong><i class="fa fa-eye-slash {emailClass}" title="
|
|
86
|
+
<span class="stat-label">{{tx("user:email")}}</span>
|
|
87
|
+
<strong><i class="fa fa-eye-slash {emailClass}" title="{{tx("user:email-hidden")}}"></i> {email}</strong>
|
|
88
88
|
</div>
|
|
89
89
|
{{{ end }}}
|
|
90
90
|
|
|
91
91
|
{{{ if age }}}
|
|
92
92
|
<div class="">
|
|
93
|
-
<span class="stat-label">
|
|
93
|
+
<span class="stat-label">{{tx("user:age")}}</span>
|
|
94
94
|
<span class="fw-bold">{age}</span>
|
|
95
95
|
</div>
|
|
96
96
|
{{{ end }}}
|
|
@@ -121,8 +121,8 @@
|
|
|
121
121
|
</span>
|
|
122
122
|
|
|
123
123
|
<!-- IF !isSelf -->
|
|
124
|
-
<a component="account/unfollow" href="#" class="btn btn-outline-secondary{{{ if !isFollowing }}} hide{{{ end }}}">
|
|
125
|
-
<a component="account/follow" href="#" class="btn btn-primary{{{ if isFollowing }}} hide{{{ end }}}">
|
|
124
|
+
<a component="account/unfollow" href="#" class="btn btn-outline-secondary{{{ if !isFollowing }}} hide{{{ end }}}">{{tx("user:unfollow")}}</a>
|
|
125
|
+
<a component="account/follow" href="#" class="btn btn-primary{{{ if isFollowing }}} hide{{{ end }}}">{{tx("user:follow")}}</a>
|
|
126
126
|
<!-- ENDIF !isSelf -->
|
|
127
127
|
</div>
|
|
128
128
|
</div>
|
|
@@ -138,23 +138,6 @@
|
|
|
138
138
|
</div>
|
|
139
139
|
<!-- ENDIF groups.length -->
|
|
140
140
|
|
|
141
|
-
<!-- IF ips.length -->
|
|
142
|
-
<div class="row">
|
|
143
|
-
<div class="col-12 hidden">
|
|
144
|
-
<div class="card">
|
|
145
|
-
<h5 class="card-header">
|
|
146
|
-
[[global:recentips]]
|
|
147
|
-
</h5>
|
|
148
|
-
<div class="card-body">
|
|
149
|
-
{{{each ips}}}
|
|
150
|
-
<div>{ips}</div>
|
|
151
|
-
{{{end}}}
|
|
152
|
-
</div>
|
|
153
|
-
</div>
|
|
154
|
-
</div>
|
|
155
|
-
</div>
|
|
156
|
-
<!-- ENDIF ips.length -->
|
|
157
|
-
|
|
158
141
|
<div class="row">
|
|
159
142
|
{{{ if (bestPosts.length || latestPosts.length) }}}
|
|
160
143
|
<div class="col-12">
|
|
@@ -171,7 +154,7 @@
|
|
|
171
154
|
aria-controls="best-posts-pane"
|
|
172
155
|
aria-selected="true"
|
|
173
156
|
>
|
|
174
|
-
|
|
157
|
+
{{tx("pages:account/best", txEscape(username))}}
|
|
175
158
|
</button>
|
|
176
159
|
</li>
|
|
177
160
|
{{{ end }}}
|
|
@@ -187,7 +170,7 @@
|
|
|
187
170
|
aria-controls="latest-posts-pane"
|
|
188
171
|
aria-selected="{{{ if !bestPosts.length }}}true{{{ else }}}false{{{ end }}}"
|
|
189
172
|
>
|
|
190
|
-
|
|
173
|
+
{{tx("pages:account/latest-posts", txEscape(username))}}
|
|
191
174
|
</button>
|
|
192
175
|
</li>
|
|
193
176
|
{{{ end }}}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<!-- IF sessions.length -->
|
|
4
4
|
<div class="row">
|
|
5
5
|
<div class="col-12 col-md-12">
|
|
6
|
-
<p class="lead">
|
|
6
|
+
<p class="lead">{{tx("user:sessions.description")}}</p>
|
|
7
7
|
<hr />
|
|
8
8
|
<ul class="list-group" component="user/sessions">
|
|
9
9
|
<!-- IMPORT partials/account/session-list.tpl -->
|