nodebb-theme-persona 15.0.10 → 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 +6 -6
- 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 +8 -8
- package/templates/account/profile.tpl +19 -36
- package/templates/account/sessions.tpl +1 -1
- package/templates/account/settings.tpl +58 -58
- package/templates/account/tags.tpl +1 -1
- package/templates/account/theme.tpl +8 -8
- package/templates/account/topics.tpl +8 -8
- package/templates/account/uploads.tpl +5 -5
- package/templates/categories.tpl +1 -1
- package/templates/category.tpl +6 -6
- package/templates/modules/usercard.tpl +4 -5
- package/templates/notifications.tpl +4 -4
- 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 +2 -2
- 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 +9 -9
- 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/tags_list.tpl +1 -1
- 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/necro-post.tpl +1 -1
- package/templates/partials/topic/post-editor.tpl +1 -1
- package/templates/partials/topic/post.tpl +12 -12
- 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
|
@@ -1,45 +1,45 @@
|
|
|
1
1
|
<nav component="pagination" class="pagination-container<!-- IF !pagination.pages.length --> hidden<!-- ENDIF !pagination.pages.length -->" aria-label="[[global:pagination]]">
|
|
2
2
|
<ul class="pagination hidden-xs justify-content-center">
|
|
3
3
|
<li class="page-item previous float-start<!-- IF !pagination.prev.active --> disabled<!-- ENDIF !pagination.prev.active -->">
|
|
4
|
-
<a class="page-link" href="?{pagination.prev.qs}" data-page="{pagination.prev.page}" aria-label="
|
|
4
|
+
<a class="page-link" href="?{pagination.prev.qs}" data-page="{pagination.prev.page}" aria-label="{{tx("global:pagination.previouspage")}}"><i class="fa fa-chevron-left"></i> </a>
|
|
5
5
|
</li>
|
|
6
6
|
|
|
7
7
|
{{{each pagination.pages}}}
|
|
8
8
|
<!-- IF pagination.pages.separator -->
|
|
9
9
|
<li component="pagination/select-page" class="page-item page select-page">
|
|
10
|
-
<a class="page-link" href="#" aria-label="
|
|
10
|
+
<a class="page-link" href="#" aria-label="{{tx("global:pagination.go-to-page")}}"><i class="fa fa-ellipsis-h"></i></a>
|
|
11
11
|
</li>
|
|
12
12
|
<!-- ELSE -->
|
|
13
13
|
<li class="page-item page<!-- IF pagination.pages.active --> active<!-- ENDIF pagination.pages.active -->" >
|
|
14
|
-
<a class="page-link" href="?{pagination.pages.qs}" data-page="{pagination.pages.page}" aria-label="
|
|
14
|
+
<a class="page-link" href="?{pagination.pages.qs}" data-page="{pagination.pages.page}" aria-label="{{tx("global:pagination.page-x", ./page)}}">{pagination.pages.page}</a>
|
|
15
15
|
</li>
|
|
16
16
|
<!-- ENDIF pagination.pages.separator -->
|
|
17
17
|
{{{end}}}
|
|
18
18
|
|
|
19
19
|
<li class="page-item next float-end<!-- IF !pagination.next.active --> disabled<!-- ENDIF !pagination.next.active -->">
|
|
20
|
-
<a class="page-link" href="?{pagination.next.qs}" data-page="{pagination.next.page}" aria-label="
|
|
20
|
+
<a class="page-link" href="?{pagination.next.qs}" data-page="{pagination.next.page}" aria-label="{{tx("global:pagination.nextpage")}}"><i class="fa fa-chevron-right"></i></a>
|
|
21
21
|
</li>
|
|
22
22
|
</ul>
|
|
23
23
|
|
|
24
24
|
<ul class="pagination hidden-sm hidden-md hidden-lg justify-content-center">
|
|
25
25
|
<li class="page-item first<!-- IF !pagination.prev.active --> disabled<!-- ENDIF !pagination.prev.active -->">
|
|
26
|
-
<a class="page-link" href="?{pagination.first.qs}" data-page="1" aria-label="
|
|
26
|
+
<a class="page-link" href="?{pagination.first.qs}" data-page="1" aria-label="{{tx("global:pagination.firstpage")}}"><i class="fa fa-fast-backward"></i> </a>
|
|
27
27
|
</li>
|
|
28
28
|
|
|
29
29
|
<li class="page-item previous<!-- IF !pagination.prev.active --> disabled<!-- ENDIF !pagination.prev.active -->">
|
|
30
|
-
<a class="page-link" href="?{pagination.prev.qs}" data-page="{pagination.prev.page}" aria-label="
|
|
30
|
+
<a class="page-link" href="?{pagination.prev.qs}" data-page="{pagination.prev.page}" aria-label="{{tx("global:pagination.previouspage")}}"><i class="fa fa-chevron-left"></i> </a>
|
|
31
31
|
</li>
|
|
32
32
|
|
|
33
33
|
<li component="pagination/select-page" class="page-item page select-page">
|
|
34
|
-
<a class="page-link" href="#" aria-label="
|
|
34
|
+
<a class="page-link" href="#" aria-label="{{tx("global:pagination.go-to-page")}}">{pagination.currentPage} / {pagination.pageCount}</a>
|
|
35
35
|
</li>
|
|
36
36
|
|
|
37
37
|
<li class="page-item next<!-- IF !pagination.next.active --> disabled<!-- ENDIF !pagination.next.active -->">
|
|
38
|
-
<a class="page-link" href="?{pagination.next.qs}" data-page="{pagination.next.page}" aria-label="
|
|
38
|
+
<a class="page-link" href="?{pagination.next.qs}" data-page="{pagination.next.page}" aria-label="{{tx("global:pagination.nextpage")}}"><i class="fa fa-chevron-right"></i></a>
|
|
39
39
|
</li>
|
|
40
40
|
|
|
41
41
|
<li class="page-item last<!-- IF !pagination.next.active --> disabled<!-- ENDIF !pagination.next.active -->">
|
|
42
|
-
<a class="page-link" href="?{pagination.last.qs}" data-page="{pagination.pageCount}" aria-label="
|
|
42
|
+
<a class="page-link" href="?{pagination.last.qs}" data-page="{pagination.pageCount}" aria-label="{{tx("global:pagination.lastpage")}}"><i class="fa fa-fast-forward"></i> </a>
|
|
43
43
|
</li>
|
|
44
44
|
</ul>
|
|
45
45
|
</nav>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<div class="topic-main-buttons d-flex gap-2 align-items-center">
|
|
2
2
|
<span class="loading-indicator btn float-start hidden" done="0">
|
|
3
|
-
<span class="hidden-xs">
|
|
3
|
+
<span class="hidden-xs">{{tx("topic:loading-more-posts")}}</span> <i class="fa fa-refresh fa-spin"></i>
|
|
4
4
|
</span>
|
|
5
5
|
|
|
6
6
|
{{{ if loggedIn }}}
|
|
7
|
-
<button component="topic/mark-unread" class="btn btn-sm btn-ghost" title="
|
|
7
|
+
<button component="topic/mark-unread" class="btn btn-sm btn-ghost" title="{{tx("topic:mark-unread")}}">
|
|
8
8
|
<i class="fa fa-fw fa-inbox text-secondary"></i>
|
|
9
9
|
</button>
|
|
10
10
|
{{{ end }}}
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
</a>
|
|
6
6
|
|
|
7
7
|
<div component="post/content" class="content mb-3 text-break">
|
|
8
|
-
{{{ if ./txContent }}}{{tx(./content)}}{{{ else }}}{{
|
|
8
|
+
{{{ if ./txContent }}}{{tx(./content)}}{{{ else }}}{{./content}}{{{ end }}}
|
|
9
9
|
</div>
|
|
10
10
|
|
|
11
11
|
<div class="mb-3">
|
|
12
|
-
<a class="topic-category text-xs fw-bold text-uppercase text-secondary mb-3" href="{config.relative_path}/category/{../category.slug}">
|
|
12
|
+
<a class="topic-category text-xs fw-bold text-uppercase text-secondary mb-3" href="{config.relative_path}/category/{../category.slug}">{{tx("global:posted-in", ../category.name)}}</a>
|
|
13
13
|
|
|
14
14
|
{{{ if ../isMainPost }}}
|
|
15
15
|
{{{ if ../topic.tags.length }}}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{{{ if (multiplePages && !config.theme.topMobilebar) }}}
|
|
2
2
|
<div class="show-more-container">
|
|
3
3
|
<div class="text-center d-block d-md-none">
|
|
4
|
-
<a href="{url}" class="btn btn-sm btn-primary">
|
|
4
|
+
<a href="{url}" class="btn btn-sm btn-primary">{{tx("search:see-more-results", matchCount)}}</a>
|
|
5
5
|
</div>
|
|
6
6
|
<li role="separator" class="dropdown-divider d-block d-md-none"></li>
|
|
7
7
|
</div>
|
|
@@ -35,16 +35,16 @@
|
|
|
35
35
|
|
|
36
36
|
{{{ if multiplePages }}}
|
|
37
37
|
<div class="text-center mt-2 d-none d-md-block">
|
|
38
|
-
<a href="{url}" class="btn btn-sm btn-primary">
|
|
38
|
+
<a href="{url}" class="btn btn-sm btn-primary">{{tx("search:see-more-results", matchCount)}}</a>
|
|
39
39
|
</div>
|
|
40
40
|
{{{ end }}}
|
|
41
41
|
{{{ if (multiplePages && config.theme.topMobilebar) }}}
|
|
42
42
|
<div class="text-center mt-2 d-block d-md-none">
|
|
43
|
-
<a href="{url}" class="btn btn-sm btn-primary">
|
|
43
|
+
<a href="{url}" class="btn btn-sm btn-primary">{{tx("search:see-more-results", matchCount)}}</a>
|
|
44
44
|
</div>
|
|
45
45
|
{{{ end }}}
|
|
46
46
|
|
|
47
47
|
{{{if !categories.length}}}
|
|
48
|
-
<div class="text-center no-results py-2 py-md-0">
|
|
48
|
+
<div class="text-center no-results py-2 py-md-0">{{tx("search:no-matches")}}</div>
|
|
49
49
|
<li role="separator" class="dropdown-divider d-block d-md-none"></li>
|
|
50
50
|
{{{end}}}
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
<!-- IF multiplePages -->
|
|
26
26
|
<div class="text-center mt-2">
|
|
27
27
|
<a href="{url}">
|
|
28
|
-
|
|
28
|
+
{{tx("search:see-more-results", matchCount)}}
|
|
29
29
|
</a>
|
|
30
30
|
</div>
|
|
31
31
|
<!-- ENDIF multiplePages -->
|
|
32
32
|
{{{if !posts.length}}}
|
|
33
|
-
<div class="text-center no-results">
|
|
33
|
+
<div class="text-center no-results">{{tx("search:no-matches")}}</div>
|
|
34
34
|
{{{end}}}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<div class="alert alert-info">{{tx("search:results-matching", matchCount, txEscape(search_query), time)}}</div>
|
|
4
4
|
{{{ else }}}
|
|
5
5
|
{{{ if search_query }}}
|
|
6
|
-
<div class="alert alert-warning">
|
|
6
|
+
<div class="alert alert-warning">{{tx("search:no-matches")}}</div>
|
|
7
7
|
{{{ end }}}
|
|
8
8
|
{{{ end }}}
|
|
9
9
|
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<a href="{config.relative_path}/category/{./category.slug}">
|
|
26
26
|
<div class="category-item d-inline-block">
|
|
27
27
|
{{buildCategoryIcon(./category, "24px", "rounded-circle")}}
|
|
28
|
-
{tx(./category.name)}
|
|
28
|
+
{{tx(./category.name)}}
|
|
29
29
|
</div>
|
|
30
30
|
</a> •
|
|
31
31
|
<span class="timeago" title="{./timestampISO}"></span>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<h5 class="float-start tag-container me-5 mb-5 fw-bold">
|
|
3
3
|
<a href="{config.relative_path}/tags/{./valueEncoded}" data-tag="{./value}">
|
|
4
4
|
<span class="tag-item text-muted text-uppercase text-nowrap tag-class-{tags.class} me-2" data-tag="{tags.value}">{./value}</span>
|
|
5
|
-
<span class="tag-topic-count text-primary text-nowrap" title="{./score}">{tx("global:x-topics", formattedNumber(./score))}</span>
|
|
5
|
+
<span class="tag-topic-count text-primary text-nowrap" title="{./score}">{{tx("global:x-topics", formattedNumber(./score))}}</span>
|
|
6
6
|
</a>
|
|
7
7
|
</h5>
|
|
8
8
|
{{{end}}}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{{{ if loggedIn }}}
|
|
2
|
-
<button component="topic/crosspost" title="
|
|
2
|
+
<button component="topic/crosspost" title="{{tx("topic:crosspost-topic")}}" class="btn btn-sm btn-ghost">
|
|
3
3
|
<i class="fa fa-fw fa-square-arrow-up-right text-secondary"></i>
|
|
4
4
|
</button>
|
|
5
5
|
{{{ end }}}
|
|
@@ -1,12 +1,38 @@
|
|
|
1
|
-
|
|
1
|
+
{{{ if ./items.length }}}
|
|
2
|
+
<li component="topic/event" class="timeline-event text-muted d-flex align-items-start gap-2 pt-4 px-2 px-lg-0">
|
|
3
|
+
<div class="timeline-badge my-2 my-lg-1">
|
|
4
|
+
<i class="fa fa-fw {{{ if ./icon }}}{./icon}{{{ else }}}fa-circle{{{ end }}} small"></i>
|
|
5
|
+
</div>
|
|
6
|
+
<div class="d-flex flex-column align-items-start">
|
|
7
|
+
<button class="btn btn-sm btn-ghost" type="button" data-bs-toggle="collapse" data-bs-target="#event-collapse-{./id}" aria-expanded="false" aria-controls="collapseExample">
|
|
8
|
+
{{tx("topic:announcers-x", ./items.length)}}
|
|
9
|
+
</button>
|
|
10
|
+
<div class="collapse align-self-start" id="event-collapse-{./id}">
|
|
11
|
+
<div component="topic/event/items">
|
|
12
|
+
{{{ each ./items }}}
|
|
13
|
+
<div class="d-flex gap-2 pt-3 pt-lg-2" data-topic-event-id="{./id}" data-topic-event-type="{./type}">
|
|
14
|
+
<span class="timeline-text small d-flex align-items-center gap-1 flex-wrap flex-grow-1 flex-lg-grow-0">
|
|
15
|
+
{{./text}}
|
|
16
|
+
</span>
|
|
17
|
+
{{{ if (privileges.isAdminOrMod && ./id) }}}
|
|
18
|
+
<span component="topic/event/delete" data-topic-event-id="{./id}" data-topic-event-type="{./type}" class="timeline-text pointer" title="{{tx("topic:delete-event")}}"><i class="fa fa-trash"></i></span>
|
|
19
|
+
{{{ end }}}
|
|
20
|
+
</div>
|
|
21
|
+
{{{ end }}}
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
</li>
|
|
26
|
+
{{{ else }}}
|
|
27
|
+
<li component="topic/event" class="timeline-event text-muted d-flex align-items-start align-items-lg-center gap-2 pt-4 px-2 px-lg-0" data-topic-event-id="{./id}" data-topic-event-type="{./type}">
|
|
2
28
|
<div class="timeline-badge">
|
|
3
|
-
<i class="fa {{{ if ./icon }}}{./icon}{{{ else }}}fa-circle{{{ end }}}"></i>
|
|
29
|
+
<i class="fa fa-fw {{{ if ./icon }}}{./icon}{{{ else }}}fa-circle{{{ end }}} small"></i>
|
|
4
30
|
</div>
|
|
5
|
-
<span class="timeline-text">
|
|
31
|
+
<span class="timeline-text small d-flex align-items-center gap-1 flex-wrap flex-grow-1 flex-lg-grow-0">
|
|
6
32
|
{{./text}}
|
|
7
33
|
</span>
|
|
8
34
|
{{{ if (privileges.isAdminOrMod && ./id) }}}
|
|
9
|
-
|
|
35
|
+
<span component="topic/event/delete" data-topic-event-id="{./id}" data-topic-event-type="{./type}" class="timeline-text pointer" title="{{tx("topic:delete-event")}}"><i class="fa fa-trash"></i></span>
|
|
10
36
|
{{{ end }}}
|
|
11
37
|
</li>
|
|
12
|
-
|
|
38
|
+
{{{ end }}}
|
|
@@ -14,23 +14,23 @@
|
|
|
14
14
|
<div class="col-8 post-content"></div>
|
|
15
15
|
<div class="col-4 text-end">
|
|
16
16
|
<div class="scroller-content">
|
|
17
|
-
<span class="pointer pagetop">
|
|
17
|
+
<span class="pointer pagetop">{{tx("topic:first-post")}} <i class="fa fa-angle-double-up"></i></span>
|
|
18
18
|
<div class="scroller-container">
|
|
19
19
|
<div class="scroller-thumb">
|
|
20
20
|
<span class="thumb-text"></span>
|
|
21
21
|
<div class="scroller-thumb-icon"></div>
|
|
22
22
|
</div>
|
|
23
23
|
</div>
|
|
24
|
-
<span class="pointer pagebottom">
|
|
24
|
+
<span class="pointer pagebottom">{{tx("topic:last-post")}} <i class="fa fa-angle-double-down"></i></span>
|
|
25
25
|
</div>
|
|
26
26
|
</div>
|
|
27
27
|
</div>
|
|
28
28
|
<div class="row">
|
|
29
29
|
<div class="col-6">
|
|
30
|
-
<button id="myNextPostBtn" class="btn btn-outline-secondary form-control" disabled>
|
|
30
|
+
<button id="myNextPostBtn" class="btn btn-outline-secondary form-control" disabled>{{tx("topic:go-to-my-next-post")}}</button>
|
|
31
31
|
</div>
|
|
32
32
|
<div class="col-6">
|
|
33
|
-
<input type="number" class="form-control" id="indexInput" placeholder="
|
|
33
|
+
<input type="number" class="form-control" id="indexInput" placeholder="{{tx("global:pagination.enter-index")}}">
|
|
34
34
|
</div>
|
|
35
35
|
</div>
|
|
36
36
|
</li>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<small data-editor="{editor.userslug}" component="post/editor" class="hidden">
|
|
1
|
+
<small data-editor="{editor.userslug}" component="post/editor" class="hidden">{{tx("global:last-edited-by", txEscape(editor.username))}} <span class="timeago" title="{isoTimeToLocaleString(editedISO, config.userLang)}"></span></small>
|
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
<a href="<!-- IF posts.user.userslug -->{config.relative_path}/user/{posts.user.userslug}<!-- ELSE -->#<!-- ENDIF posts.user.userslug -->">
|
|
12
12
|
{{buildAvatar(posts.user, "48px", true, "", "user/picture")}}
|
|
13
13
|
{{{ if ./user.isLocal }}}
|
|
14
|
-
<span component="user/status" class="position-absolute top-100 start-100 border border-white border-2 rounded-circle status {posts.user.status}"><span class="visually-hidden">
|
|
14
|
+
<span component="user/status" class="position-absolute top-100 start-100 border border-white border-2 rounded-circle status {posts.user.status}"><span class="visually-hidden">{{tx(concat("global:", posts.user.status))}}</span></span>
|
|
15
15
|
{{{ else }}}
|
|
16
16
|
<span component="user/locality" class="position-absolute top-100 start-100 lh-1 border border-white border-2 rounded-circle small" title="[[global:remote-user]]">
|
|
17
|
-
<span class="visually-hidden">
|
|
17
|
+
<span class="visually-hidden">{{tx("global:remote-user")}}</span>
|
|
18
18
|
<i class="fa fa-globe"></i>
|
|
19
19
|
</span>
|
|
20
20
|
{{{ end }}}
|
|
@@ -36,12 +36,12 @@
|
|
|
36
36
|
{{{ end }}}
|
|
37
37
|
|
|
38
38
|
<!-- IF posts.user.banned -->
|
|
39
|
-
<span class="badge bg-danger">
|
|
39
|
+
<span class="badge bg-danger">{{tx("user:banned")}}</span>
|
|
40
40
|
<!-- ENDIF posts.user.banned -->
|
|
41
41
|
|
|
42
42
|
<span class="visible-xs-inline-block visible-sm-inline-block visible-md-inline-block visible-lg-inline-block">
|
|
43
43
|
{{{ if posts.toPid }}}
|
|
44
|
-
<a component="post/parent" class="btn btn-sm btn-ghost py-0 px-1 text-xs hidden-xs" data-topid="{posts.toPid}" href="{config.relative_path}/post/{encodeURIComponent(posts.toPid)}"><i class="fa fa-reply"></i> @{{{ if posts.parent.user.userslug }}}{posts.parent.user.username}{{{ else }}}
|
|
44
|
+
<a component="post/parent" class="btn btn-sm btn-ghost py-0 px-1 text-xs hidden-xs" data-topid="{posts.toPid}" href="{config.relative_path}/post/{encodeURIComponent(posts.toPid)}"><i class="fa fa-reply"></i> @{{{ if posts.parent.user.userslug }}}{posts.parent.user.username}{{{ else }}}{{tx("global:guest")}}{{{ end }}}</a>
|
|
45
45
|
{{{ end }}}
|
|
46
46
|
|
|
47
47
|
<span>
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
<span>
|
|
58
58
|
<i component="post/edit-indicator" class="fa fa-pencil-square<!-- IF privileges.posts:history --> pointer<!-- END --> edit-icon <!-- IF !posts.editor.username -->hidden<!-- ENDIF !posts.editor.username -->"></i>
|
|
59
59
|
|
|
60
|
-
<span data-editor="{posts.editor.userslug}" component="post/editor" class="hidden">
|
|
60
|
+
<span data-editor="{posts.editor.userslug}" component="post/editor" class="hidden">{{tx("global:last-edited-by", txEscape(posts.editor.username))}} <span class="timeago" title="{isoTimeToLocaleString(posts.editedISO, config.userLang)}"></span></span>
|
|
61
61
|
|
|
62
62
|
<span class="visible-xs-inline-block visible-sm-inline-block visible-md-inline-block visible-lg-inline-block">
|
|
63
63
|
<a class="permalink text-muted" href="{config.relative_path}/post/{encodeURIComponent(posts.pid)}"><span class="timeago" title="{posts.timestampISO}"></span></a>
|
|
@@ -72,12 +72,12 @@
|
|
|
72
72
|
<br />
|
|
73
73
|
|
|
74
74
|
<div class="content" component="post/content" itemprop="text">
|
|
75
|
-
{{{ if posts.txContent }}}{{tx(posts.content)}}{{{ else }}}{{
|
|
75
|
+
{{{ if posts.txContent }}}{{tx(posts.content)}}{{{ else }}}{{posts.content}}{{{ end }}}
|
|
76
76
|
</div>
|
|
77
77
|
|
|
78
78
|
<div class="post-footer">
|
|
79
79
|
{{{ if posts.user.signature }}}
|
|
80
|
-
<div component="post/signature" data-uid="{posts.user.uid}" class="post-signature">{{
|
|
80
|
+
<div component="post/signature" data-uid="{posts.user.uid}" class="post-signature">{{posts.user.signature}}</div>
|
|
81
81
|
{{{ end }}}
|
|
82
82
|
|
|
83
83
|
<div class="clearfix">
|
|
@@ -92,8 +92,8 @@
|
|
|
92
92
|
{{{ end }}}
|
|
93
93
|
</span>
|
|
94
94
|
|
|
95
|
-
<span class="replies-count small" component="post/reply-count/text" data-replies="{posts.replies.count}">{tx(posts.replies.text)}</span>
|
|
96
|
-
<span class="replies-last hidden-xs small">
|
|
95
|
+
<span class="replies-count small" component="post/reply-count/text" data-replies="{posts.replies.count}">{{tx(posts.replies.text)}}</span>
|
|
96
|
+
<span class="replies-last hidden-xs small">{{tx("topic:last-reply-time")}} <span class="timeago" title="{posts.replies.timestampISO}"></span></span>
|
|
97
97
|
|
|
98
98
|
<i class="fa fa-fw fa-chevron-down" component="post/replies/open"></i>
|
|
99
99
|
</a>
|
|
@@ -102,12 +102,12 @@
|
|
|
102
102
|
<small class="d-flex justify-content-end align-items-center gap-1" component="post/actions">
|
|
103
103
|
<!-- IMPORT partials/topic/reactions.tpl -->
|
|
104
104
|
<span class="post-tools">
|
|
105
|
-
<a component="post/reply" href="#" class="btn btn-sm btn-link user-select-none <!-- IF !privileges.topics:reply -->hidden<!-- ENDIF !privileges.topics:reply -->">
|
|
106
|
-
<a component="post/quote" href="#" class="btn btn-sm btn-link user-select-none <!-- IF !privileges.topics:reply -->hidden<!-- ENDIF !privileges.topics:reply -->">
|
|
105
|
+
<a component="post/reply" href="#" class="btn btn-sm btn-link user-select-none <!-- IF !privileges.topics:reply -->hidden<!-- ENDIF !privileges.topics:reply -->">{{tx("topic:reply")}}</a>
|
|
106
|
+
<a component="post/quote" href="#" class="btn btn-sm btn-link user-select-none <!-- IF !privileges.topics:reply -->hidden<!-- ENDIF !privileges.topics:reply -->">{{tx("topic:quote")}}</a>
|
|
107
107
|
</span>
|
|
108
108
|
|
|
109
109
|
{{{ if ./announces }}}
|
|
110
|
-
<a component="post/announce-count" href="#" class="btn-ghost-sm" title="
|
|
110
|
+
<a component="post/announce-count" href="#" class="btn-ghost-sm" title="{{tx("topic:announcers")}}"><i class="fa fa-share-alt text-primary"></i> {./announces}</a>
|
|
111
111
|
{{{ end }}}
|
|
112
112
|
|
|
113
113
|
<!-- IF !reputation:disabled -->
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
<input type="hidden" name="tid" value="{tid}" />
|
|
10
10
|
<input type="hidden" name="_csrf" value="{config.csrf_token}" />
|
|
11
11
|
<div class="quickreply-message position-relative">
|
|
12
|
-
<textarea rows="4" name="content" component="topic/quickreply/text" class="form-control mousetrap" placeholder="
|
|
13
|
-
<div class="imagedrop"><div>
|
|
12
|
+
<textarea rows="4" name="content" component="topic/quickreply/text" class="form-control mousetrap" placeholder="{{tx("modules:composer.textarea.placeholder")}}"></textarea>
|
|
13
|
+
<div class="imagedrop"><div>{{tx("topic:composer.drag-and-drop-images")}}</div></div>
|
|
14
14
|
</div>
|
|
15
15
|
<div>
|
|
16
16
|
<div class="d-flex justify-content-end gap-2">
|
|
@@ -18,8 +18,10 @@
|
|
|
18
18
|
<!-- IMPORT partials/category/selector-dropdown-left.tpl -->
|
|
19
19
|
</div>
|
|
20
20
|
<button type="button" component="topic/quickreply/upload/button" class="btn btn-ghost btn-sm border"><i class="fa fa-upload"></i></button>
|
|
21
|
-
<button type="button" component="topic/quickreply/expand" class="btn btn-ghost btn-sm border" title="
|
|
22
|
-
<button type="submit" component="topic/quickreply/button" class="btn btn-sm btn-primary">
|
|
21
|
+
<button type="button" component="topic/quickreply/expand" class="btn btn-ghost btn-sm border" title="{{tx("topic:open-composer")}}"><i class="fa fa-expand"></i></button>
|
|
22
|
+
<button type="submit" component="topic/quickreply/button" class="btn btn-sm btn-primary">
|
|
23
|
+
{{{ if tid }}}{{tx("topic:post-quick-reply")}}{{{ else }}}{{tx("topic:post-quick-create")}}{{{ end }}}
|
|
24
|
+
</button>
|
|
23
25
|
</div>
|
|
24
26
|
</div>
|
|
25
27
|
</form>
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
<div component="topic/reply/container" class="btn-group bottom-sheet <!-- IF !privileges.topics:reply -->hidden<!-- ENDIF !privileges.topics:reply -->">
|
|
2
|
-
<a href="{config.relative_path}/compose?tid={tid}" class="btn btn-sm btn-primary" component="topic/reply" data-ajaxify="false" role="button"><i class="fa fa-reply visible-xs-inline"></i><span class="visible-sm-inline visible-md-inline visible-lg-inline">
|
|
2
|
+
<a href="{config.relative_path}/compose?tid={tid}" class="btn btn-sm btn-primary" component="topic/reply" data-ajaxify="false" role="button"><i class="fa fa-reply visible-xs-inline"></i><span class="visible-sm-inline visible-md-inline visible-lg-inline"> {{tx("topic:reply")}}</span></a>
|
|
3
3
|
<button type="button" class="btn btn-sm btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
4
4
|
<span class="caret"></span>
|
|
5
5
|
</button>
|
|
6
6
|
<ul class="dropdown-menu dropdown-menu-end p-1" role="menu">
|
|
7
|
-
<li><a class="dropdown-item rounded-1" href="#" component="topic/reply-as-topic" role="menuitem">
|
|
7
|
+
<li><a class="dropdown-item rounded-1" href="#" component="topic/reply-as-topic" role="menuitem">{{tx("topic:reply-as-topic")}}</a></li>
|
|
8
8
|
</ul>
|
|
9
9
|
</div>
|
|
10
10
|
|
|
11
11
|
<!-- IF loggedIn -->
|
|
12
12
|
<!-- IF !privileges.topics:reply -->
|
|
13
13
|
<!-- IF locked -->
|
|
14
|
-
<a component="topic/reply/locked" class="btn btn-sm btn-primary" disabled><i class="fa fa-lock"></i>
|
|
14
|
+
<a component="topic/reply/locked" class="btn btn-sm btn-primary" disabled><i class="fa fa-lock"></i> {{tx("topic:locked")}}</a>
|
|
15
15
|
<!-- ENDIF locked -->
|
|
16
16
|
<!-- ENDIF !privileges.topics:reply -->
|
|
17
17
|
|
|
18
18
|
<!-- IF !locked -->
|
|
19
|
-
<a component="topic/reply/locked" class="btn btn-sm btn-primary hidden" disabled><i class="fa fa-lock"></i>
|
|
19
|
+
<a component="topic/reply/locked" class="btn btn-sm btn-primary hidden" disabled><i class="fa fa-lock"></i> {{tx("topic:locked")}}</a>
|
|
20
20
|
<!-- ENDIF !locked -->
|
|
21
21
|
|
|
22
22
|
<!-- ELSE -->
|
|
23
23
|
|
|
24
24
|
<!-- IF !privileges.topics:reply -->
|
|
25
|
-
<a component="topic/reply/guest" href="{config.relative_path}/login" class="btn btn-sm btn-primary">
|
|
25
|
+
<a component="topic/reply/guest" href="{config.relative_path}/login" class="btn btn-sm btn-primary">{{tx("topic:guest-login-reply")}}</a>
|
|
26
26
|
<!-- ENDIF !privileges.topics:reply -->
|
|
27
27
|
<!-- ENDIF loggedIn -->
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
<div component="selection/tooltip" class="selection-tooltip-container position-absolute card card-body p-1 rounded-1 mt-2" style="z-index: 1;">
|
|
2
|
-
<button component="selection/tooltip/quote" class="btn btn-sm btn-primary quote-tooltip-btn">
|
|
2
|
+
<button component="selection/tooltip/quote" class="btn btn-sm btn-primary quote-tooltip-btn">{{tx("topic:quote")}}</button>
|
|
3
3
|
</div>
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
<div title="
|
|
2
|
-
<button class="btn btn-sm btn-ghost dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="
|
|
1
|
+
<div title="{{tx("topic:sort-by")}}" class="dropdown bottom-sheet hidden-xs" component="thread/sort">
|
|
2
|
+
<button class="btn btn-sm btn-ghost dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="{{tx("aria:post-sort-option", sortOptionLabel)}}">
|
|
3
3
|
<i class="fa fa-fw fa-arrow-down-wide-short text-secondary"></i></button>
|
|
4
4
|
<ul class="dropdown-menu dropdown-menu-end p-1 text-sm" role="menu">
|
|
5
5
|
<li>
|
|
6
6
|
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" href="#" class="oldest_to_newest" data-sort="oldest_to_newest" role="menuitem">
|
|
7
|
-
<span class="flex-grow-1">
|
|
7
|
+
<span class="flex-grow-1">{{tx("topic:oldest-to-newest")}}</span>
|
|
8
8
|
<i class="flex-shrink-0 fa fa-fw text-secondary"></i>
|
|
9
9
|
</a>
|
|
10
10
|
</li>
|
|
11
11
|
<li>
|
|
12
12
|
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" href="#" class="newest_to_oldest" data-sort="newest_to_oldest" role="menuitem">
|
|
13
|
-
<span class="flex-grow-1">
|
|
13
|
+
<span class="flex-grow-1">{{tx("topic:newest-to-oldest")}}</span>
|
|
14
14
|
<i class="flex-shrink-0 fa fa-fw text-secondary"></i>
|
|
15
15
|
</a>
|
|
16
16
|
</li>
|
|
17
17
|
<li>
|
|
18
18
|
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" href="#" class="most_votes" data-sort="most_votes" role="menuitem">
|
|
19
|
-
<span class="flex-grow-1">
|
|
19
|
+
<span class="flex-grow-1">{{tx("topic:most-votes")}}</span>
|
|
20
20
|
<i class="flex-shrink-0 fa fa-fw text-secondary"></i>
|
|
21
21
|
</a>
|
|
22
22
|
</li>
|
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
{{{ if ./crossposts.length }}}
|
|
2
2
|
<span class="badge text-body border border-gray-300 stats text-xs position-relative">
|
|
3
|
-
<i class="fa-regular fa-fw fa-clone visible-xs-inline" title="
|
|
3
|
+
<i class="fa-regular fa-fw fa-clone visible-xs-inline" title="{{tx("global:crossposts")}}"></i>
|
|
4
4
|
<span component="topic/crosspost-count" title="{crossposts.length}" class="fw-bold">{humanReadableNumber(crossposts.length)}</span>
|
|
5
|
-
<span class="hidden-xs text-lowercase fw-normal">
|
|
6
|
-
<a href="#" aria-label="
|
|
5
|
+
<span class="hidden-xs text-lowercase fw-normal">{{tx("global:crossposts")}}</span>
|
|
6
|
+
<a href="#" aria-label="{{tx("aria:show-crossposts")}}" id="show-crossposts" class="stretched-link"></a>
|
|
7
7
|
</span>
|
|
8
8
|
{{{ end }}}
|
|
9
9
|
<span class="badge text-body border border-gray-300 stats text-xs">
|
|
10
|
-
<i class="fa-regular fa-fw fa-message visible-xs-inline" title="
|
|
10
|
+
<i class="fa-regular fa-fw fa-message visible-xs-inline" title="{{tx("global:posts")}}"></i>
|
|
11
11
|
<span component="topic/post-count" title="{postcount}" class="fw-bold">{humanReadableNumber(postcount)}</span>
|
|
12
|
-
<span class="hidden-xs text-lowercase fw-normal">
|
|
12
|
+
<span class="hidden-xs text-lowercase fw-normal">{{tx("global:posts")}}</span>
|
|
13
13
|
</span>
|
|
14
14
|
<span class="badge text-body border border-gray-300 stats text-xs">
|
|
15
|
-
<i class="fa fa-fw fa-user visible-xs-inline" title="
|
|
15
|
+
<i class="fa fa-fw fa-user visible-xs-inline" title="{{tx("global:posters")}}"></i>
|
|
16
16
|
<span title="{postercount}" class="fw-bold">{humanReadableNumber(postercount)}</span>
|
|
17
|
-
<span class="hidden-xs text-lowercase fw-normal">
|
|
17
|
+
<span class="hidden-xs text-lowercase fw-normal">{{tx("global:posters")}}</span>
|
|
18
18
|
</span>
|
|
19
19
|
<span class="badge text-body border border-gray-300 stats text-xs">
|
|
20
|
-
<i class="fa fa-fw fa-eye visible-xs-inline" title="
|
|
20
|
+
<i class="fa fa-fw fa-eye visible-xs-inline" title="{{tx("global:views")}}"></i>
|
|
21
21
|
<span class="fw-bold" title="{viewcount}">{humanReadableNumber(viewcount)}</span>
|
|
22
|
-
<span class="hidden-xs text-lowercase fw-normal">
|
|
22
|
+
<span class="hidden-xs text-lowercase fw-normal">{{tx("global:views")}}</span>
|
|
23
23
|
</span>
|
|
24
24
|
{{{ if ./followercount }}}
|
|
25
25
|
<span class="badge text-body border border-gray-300 stats text-xs">
|
|
26
|
-
<i class="fa fa-fw fa-bell-o visible-xs-inline" title="
|
|
26
|
+
<i class="fa fa-fw fa-bell-o visible-xs-inline" title="{{tx("global:watching")}}"></i>
|
|
27
27
|
<span class="fw-bold" title="{viewcount}">{humanReadableNumber(followercount)}</span>
|
|
28
|
-
<span class="hidden-xs text-lowercase fw-normal">
|
|
28
|
+
<span class="hidden-xs text-lowercase fw-normal">{{tx("global:watching")}}</span>
|
|
29
29
|
</span>
|
|
30
30
|
{{{ end }}}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{{{ if privileges.view_thread_tools }}}
|
|
2
|
-
<div title="
|
|
2
|
+
<div title="{{tx("topic:thread-tools.title")}}" class="dropdown thread-tools bottom-sheet">
|
|
3
3
|
<button class="btn btn-sm btn-ghost dropdown-toggle" data-bs-toggle="dropdown" type="button" aria-haspopup="true" aria-expanded="false">
|
|
4
4
|
<i class="fa fa-fw fa-gear text-secondary"></i>
|
|
5
5
|
</button>
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{{{ if config.loggedIn }}}
|
|
2
2
|
<div class="dropdown bottom-sheet" component="topic/watch"
|
|
3
3
|
data-bs-toggle="tooltip"
|
|
4
|
-
{{{if isFollowing}}}title="
|
|
5
|
-
{{{if isNotFollowing}}}title="
|
|
6
|
-
{{{if isIgnoring}}}title="
|
|
4
|
+
{{{if isFollowing}}}title="{{tx("topic:watching")}}"{{{end}}}
|
|
5
|
+
{{{if isNotFollowing}}}title="{{tx("topic:not-watching")}}"{{{end}}}
|
|
6
|
+
{{{if isIgnoring}}}title="{{tx("topic:ignoring")}}"{{{end}}}
|
|
7
7
|
>
|
|
8
8
|
<button class="btn btn-sm btn-ghost dropdown-toggle text-secondary" data-bs-toggle="dropdown" type="button" aria-haspopup="true" aria-expanded="false">
|
|
9
9
|
<span component="topic/following/menu" <!-- IF !isFollowing -->class="hidden"<!-- ENDIF !isFollowing -->><i class="fa fa-fw fa-bell-o"></i></span>
|
|
@@ -18,9 +18,9 @@ data-bs-toggle="tooltip"
|
|
|
18
18
|
<div class="flex-grow-1 d-flex flex-column">
|
|
19
19
|
<span class="d-flex align-items-center gap-2">
|
|
20
20
|
<i class="flex-shrink-0 fa fa-fw fa-bell-o text-secondary"></i>
|
|
21
|
-
<span class="flex-grow-1 fw-semibold">
|
|
21
|
+
<span class="flex-grow-1 fw-semibold">{{tx("topic:watching")}}</span>
|
|
22
22
|
</span>
|
|
23
|
-
<div class="help-text text-secondary text-xs">
|
|
23
|
+
<div class="help-text text-secondary text-xs">{{tx("topic:watching.description")}}</div>
|
|
24
24
|
</div>
|
|
25
25
|
<span class="flex-shrink-0"><i component="topic/following/check" class="fa fa-fw {{{ if isFollowing }}}fa-check{{{ end }}}"></i></span>
|
|
26
26
|
</a>
|
|
@@ -31,9 +31,9 @@ data-bs-toggle="tooltip"
|
|
|
31
31
|
<div class="flex-grow-1 d-flex flex-column">
|
|
32
32
|
<span class="d-flex align-items-center gap-2">
|
|
33
33
|
<i class="flex-shrink-0 fa fa-fw fa-bell-slash-o text-secondary"></i>
|
|
34
|
-
<span class="flex-grow-1 fw-semibold">
|
|
34
|
+
<span class="flex-grow-1 fw-semibold">{{tx("topic:not-watching")}}</span>
|
|
35
35
|
</span>
|
|
36
|
-
<div class="help-text text-secondary text-xs">
|
|
36
|
+
<div class="help-text text-secondary text-xs">{{tx("topic:not-watching.description")}}</div>
|
|
37
37
|
</div>
|
|
38
38
|
<span class="flex-shrink-0"><i component="topic/not-following/check" class="fa fa-fw {{{ if isNotFollowing }}}fa-check{{{ end }}}"></i></span>
|
|
39
39
|
</a>
|
|
@@ -44,9 +44,9 @@ data-bs-toggle="tooltip"
|
|
|
44
44
|
<div class="flex-grow-1 d-flex flex-column">
|
|
45
45
|
<span class="d-flex align-items-center gap-2">
|
|
46
46
|
<i class="flex-shrink-0 fa fa-fw fa-eye-slash text-secondary"></i>
|
|
47
|
-
<span class="flex-grow-1 fw-semibold">
|
|
47
|
+
<span class="flex-grow-1 fw-semibold">{{tx("topic:ignoring")}}</span>
|
|
48
48
|
</span>
|
|
49
|
-
<div class="help-text text-secondary text-xs">
|
|
49
|
+
<div class="help-text text-secondary text-xs">{{tx("topic:ignoring.description")}}</div>
|
|
50
50
|
</div>
|
|
51
51
|
<span class="flex-shrink-0"><i component="topic/ignoring/check" class="fa fa-fw {{{ if isIgnoring }}}fa-check{{{ end }}}"></i></span>
|
|
52
52
|
</a>
|