nodebb-theme-harmony 2.0.0-pre.24 → 2.0.0-pre.25
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 +1 -1
- package/templates/account/info.tpl +2 -2
- package/templates/account/posts.tpl +1 -1
- package/templates/account/settings.tpl +5 -5
- package/templates/footer.tpl +1 -1
- package/templates/groups/list.tpl +3 -3
- package/templates/partials/breadcrumbs-json-ld.tpl +15 -25
- package/templates/partials/groups/memberlist.tpl +1 -1
- package/templates/partials/mobile-footer.tpl +2 -5
- package/templates/partials/post_bar.tpl +1 -3
- package/templates/partials/sidebar-left.tpl +2 -5
- package/templates/partials/topic/post-menu.tpl +3 -29
- package/templates/partials/topic/post.tpl +12 -25
- package/templates/partials/topic/reply-button.tpl +4 -2
- package/templates/partials/topic/tools.tpl +1 -5
- package/templates/topic.tpl +15 -27
- package/templates/users.tpl +1 -1
package/package.json
CHANGED
|
@@ -198,7 +198,7 @@
|
|
|
198
198
|
<p class="mb-1">
|
|
199
199
|
<span class="reason">[[user:info.banned-reason-label]]: <strong>{./reason}</strong></span>
|
|
200
200
|
</p>
|
|
201
|
-
<p
|
|
201
|
+
<p>
|
|
202
202
|
{{{ if ./until }}}
|
|
203
203
|
<span class="expiry">[[user:info.banned-until, {isoTimeToLocaleString(./untilISO, config.userLang)}]]</span>
|
|
204
204
|
{{{ else }}}
|
|
@@ -252,7 +252,7 @@
|
|
|
252
252
|
<p class="mb-1">
|
|
253
253
|
<span class="reason">[[user:info.banned-reason-label]]: <strong>{./reason}</strong></span>
|
|
254
254
|
</p>
|
|
255
|
-
<p
|
|
255
|
+
<p>
|
|
256
256
|
{{{ if ./until }}}
|
|
257
257
|
<span class="expiry">[[user:info.muted-until, {isoTimeToLocaleString(./untilISO, config.userLang)}]]</span>
|
|
258
258
|
{{{ end }}}
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
<label class="form-label text-sm" for="topicsPerPage">[[user:topics-per-page]] ([[user:max-items-per-page, {maxTopicsPerPage}]])</label>
|
|
101
101
|
<input type="text" class="form-control form-control-sm" id="topicsPerPage" data-property="topicsPerPage" value="{settings.topicsPerPage}">
|
|
102
102
|
</div>
|
|
103
|
-
<div
|
|
103
|
+
<div>
|
|
104
104
|
<label class="form-label text-sm" for="postsPerPage">[[user:posts-per-page]] ([[user:max-items-per-page, {maxPostsPerPage}]])</label>
|
|
105
105
|
<input type="text" class="form-control form-control-sm" id="postsPerPage" data-property="postsPerPage" value="{settings.postsPerPage}">
|
|
106
106
|
</div>
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
<option value="most_views" {{{ if (settings.categoryTopicSort == "most_views") }}}selected{{{ end }}}>[[topic:most-views]]</option>
|
|
120
120
|
</select>
|
|
121
121
|
</div>
|
|
122
|
-
<div
|
|
122
|
+
<div>
|
|
123
123
|
<label class="form-label text-sm" for="topicPostSort">[[user:topic-post-sort]]</label>
|
|
124
124
|
<select class="form-select form-select-sm" id="topicPostSort" data-property="topicPostSort">
|
|
125
125
|
<option value="oldest_to_newest" {{{ if (settings.topicPostSort == "oldest_to_newest") }}}selected{{{ end }}}>[[topic:oldest-to-newest]]</option>
|
|
@@ -132,7 +132,7 @@
|
|
|
132
132
|
{{{ if !disableEmailSubscriptions }}}
|
|
133
133
|
<hr/>
|
|
134
134
|
<h6 class="fw-bold">[[global:email]]</h6>
|
|
135
|
-
<div
|
|
135
|
+
<div>
|
|
136
136
|
<div class="mb-2">
|
|
137
137
|
<label class="form-label text-sm" for="dailyDigestFreq">[[user:digest-label]]</label>
|
|
138
138
|
<select class="form-select form-select-sm" id="dailyDigestFreq" data-property="dailyDigestFreq" autocomplete="off">
|
|
@@ -148,7 +148,7 @@
|
|
|
148
148
|
{{{ each customSettings}}}
|
|
149
149
|
<hr/>
|
|
150
150
|
<h6 class="fw-bold">{./title}</h6>
|
|
151
|
-
<div
|
|
151
|
+
<div>
|
|
152
152
|
{./content}
|
|
153
153
|
</div>
|
|
154
154
|
{{{end}}}
|
|
@@ -177,7 +177,7 @@
|
|
|
177
177
|
{{{ end }}}
|
|
178
178
|
|
|
179
179
|
<h6 class="fw-bold">[[topic:watch]]</h6>
|
|
180
|
-
<div
|
|
180
|
+
<div>
|
|
181
181
|
<div class="form-check form-switch">
|
|
182
182
|
<input class="form-check-input" type="checkbox" role="switch" id="followTopicsOnCreate" data-property="followTopicsOnCreate" {{{ if settings.followTopicsOnCreate }}}checked{{{ end }}}/>
|
|
183
183
|
<label class="form-check-label text-sm" for="followTopicsOnCreate">[[user:follow-topics-you-create]]</label>
|
package/templates/footer.tpl
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
</div>
|
|
6
6
|
<!-- IMPORT partials/mobile-footer.tpl -->
|
|
7
7
|
{{{ if !isSpider }}}
|
|
8
|
-
<div
|
|
8
|
+
<div>
|
|
9
9
|
<div component="toaster/tray" class="alert-window fixed-bottom mb-5 mb-md-2 me-2 me-md-5 ms-auto" style="width:300px; z-index: 1090;">
|
|
10
10
|
<!-- IMPORT partials/reconnect-alert.tpl -->
|
|
11
11
|
</div>
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
</div>
|
|
17
17
|
</div>
|
|
18
18
|
</div>
|
|
19
|
-
<div
|
|
19
|
+
<div>
|
|
20
20
|
<div class="d-flex justify-content-end gap-2">
|
|
21
|
-
<div
|
|
21
|
+
<div>
|
|
22
22
|
{{{ if allowGroupCreation }}}
|
|
23
23
|
<button class="btn btn-primary btn-sm text-nowrap" data-action="new"><i class="fa fa-users"></i> [[groups:new-group]]</button>
|
|
24
24
|
{{{ end }}}
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
<option value="date">[[groups:details.creation-date]]</option>
|
|
29
29
|
</select>
|
|
30
30
|
</div>
|
|
31
|
-
<div
|
|
31
|
+
<div>
|
|
32
32
|
<div class="input-group">
|
|
33
33
|
<input type="text" class="form-control form-control-sm" placeholder="[[global:search]]" name="query" id="search-text">
|
|
34
34
|
<button id="search-button" class="btn btn-primary btn-sm" aria-label="[[global:search]]">
|
|
@@ -1,26 +1,16 @@
|
|
|
1
|
-
<script type="application/ld+json">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
"name": "{config.siteTitle}",
|
|
10
|
-
"item": "{breadcrumbs.0.url}"
|
|
11
|
-
}
|
|
12
|
-
{{{ each breadcrumbs }}}
|
|
13
|
-
{{{ if !@first}}}
|
|
14
|
-
,{
|
|
15
|
-
"@type": "ListItem",
|
|
16
|
-
"position": {increment(@index, "1")},
|
|
17
|
-
"name": "{stripTags(./text)}"
|
|
18
|
-
{{{ if !@last }}}
|
|
19
|
-
,"item": "{./url}"
|
|
20
|
-
{{{ end }}}
|
|
21
|
-
}
|
|
22
|
-
{{{ end }}}
|
|
23
|
-
{{{ end }}}
|
|
24
|
-
]
|
|
1
|
+
<script type="application/ld+json">{
|
|
2
|
+
"@context": "https://schema.org",
|
|
3
|
+
"@type": "BreadcrumbList",
|
|
4
|
+
"itemListElement": [{
|
|
5
|
+
"@type": "ListItem",
|
|
6
|
+
"position": 1,
|
|
7
|
+
"name": "{config.siteTitle}",
|
|
8
|
+
"item": "{breadcrumbs.0.url}"
|
|
25
9
|
}
|
|
26
|
-
|
|
10
|
+
{{{ each breadcrumbs }}}{{{ if !@first}}},{
|
|
11
|
+
"@type": "ListItem",
|
|
12
|
+
"position": {increment(@index, "1")},
|
|
13
|
+
"name": "{stripTags(./text)}"
|
|
14
|
+
{{{ if !@last }}},"item": "{./url}"{{{ end }}}
|
|
15
|
+
}{{{ end }}}{{{ end }}}
|
|
16
|
+
]}</script>
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<button component="groups/members/add" type="button" class="btn btn-primary btn-sm me-3" title="[[groups:details.add-member]]"><i class="fa fa-user-plus"></i> [[groups:details.add-member]]</button>
|
|
5
5
|
</div>
|
|
6
6
|
{{{ end }}}
|
|
7
|
-
<div
|
|
7
|
+
<div>
|
|
8
8
|
<div class="input-group">
|
|
9
9
|
<input class="form-control form-control-sm" type="text" component="groups/members/search" placeholder="[[global:search]]"/>
|
|
10
10
|
<button class="btn btn-primary btn-sm search-button" type="button">
|
|
@@ -15,16 +15,13 @@
|
|
|
15
15
|
{{{ each navigation }}}
|
|
16
16
|
{{{ if displayMenuItem(@root, @index) }}}
|
|
17
17
|
<li class="nav-item {./class}{{{ if ./dropdown }}} dropend{{{ end }}}" title="{./title}">
|
|
18
|
-
<a class="nav-link navigation-link px-3 py-2 {{{ if ./dropdown }}}dropdown-toggle{{{ end }}}"
|
|
19
|
-
{{{ if ./dropdown }}} href="#" role="button" data-bs-toggle="collapse" data-bs-target="#collapse-target-{@index}" onclick="event.stopPropagation();" {{{ else }}} href="{./route}"{{{ end }}} {{{ if ./id }}}id="{./id}"{{{ end }}}{{{ if ./targetBlank }}} target="_blank"{{{ end }}}>
|
|
18
|
+
<a class="nav-link navigation-link px-3 py-2 {{{ if ./dropdown }}}dropdown-toggle{{{ end }}}" {{{ if ./dropdown }}} href="#" role="button" data-bs-toggle="collapse" data-bs-target="#collapse-target-{@index}" onclick="event.stopPropagation();" {{{ else }}} href="{./route}"{{{ end }}} {{{ if ./id }}}id="{./id}"{{{ end }}}{{{ if ./targetBlank }}} target="_blank"{{{ end }}}>
|
|
20
19
|
<span class="d-inline-flex justify-content-between align-items-center w-100">
|
|
21
20
|
<span class="text-nowrap">
|
|
22
21
|
{{{ if ./iconClass }}}
|
|
23
22
|
<i class="fa fa-fw {./iconClass}" data-content="{./content}"></i>
|
|
24
23
|
{{{ end }}}
|
|
25
|
-
{{{ if ./text }}}
|
|
26
|
-
<span class="nav-text px-2 fw-semibold">{./text}</span>
|
|
27
|
-
{{{ end }}}
|
|
24
|
+
{{{ if ./text }}}<span class="nav-text px-2 fw-semibold">{./text}</span>{{{ end }}}
|
|
28
25
|
</span>
|
|
29
26
|
<span component="navigation/count" class="badge rounded-1 bg-primary {{{ if !./content }}}hidden{{{ end }}}">{./content}</span>
|
|
30
27
|
</span>
|
|
@@ -18,9 +18,7 @@
|
|
|
18
18
|
{{{ end }}}
|
|
19
19
|
|
|
20
20
|
{{{ if browsingUsers }}}
|
|
21
|
-
<div class="hidden-xs">
|
|
22
|
-
<!-- IMPORT partials/topic/browsing-users.tpl -->
|
|
23
|
-
</div>
|
|
21
|
+
<div class="hidden-xs"><!-- IMPORT partials/topic/browsing-users.tpl --></div>
|
|
24
22
|
{{{ end }}}
|
|
25
23
|
</div>
|
|
26
24
|
<!-- IMPORT partials/topic/reply-button.tpl -->
|
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
{{{ each navigation }}}
|
|
4
4
|
{{{ if displayMenuItem(@root, @index) }}}
|
|
5
5
|
<li class="nav-item mx-2 {./class}{{{ if ./dropdown }}} dropend{{{ end }}}" title="{./title}">
|
|
6
|
-
<a class="nav-link navigation-link d-flex gap-2 justify-content-between align-items-center {{{ if ./dropdown }}}dropdown-toggle{{{ end }}}"
|
|
7
|
-
{{{ if ./dropdown }}} href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" {{{ else }}} href="{./route}"{{{ end }}} {{{ if ./id }}}id="{./id}"{{{ end }}}{{{ if ./targetBlank }}} target="_blank"{{{ end }}} {{{ if ./text }}}aria-label="{./text}"{{{ end }}}>
|
|
6
|
+
<a class="nav-link navigation-link d-flex gap-2 justify-content-between align-items-center {{{ if ./dropdown }}}dropdown-toggle{{{ end }}}" {{{ if ./dropdown }}} href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" {{{ else }}} href="{./route}"{{{ end }}} {{{ if ./id }}}id="{./id}"{{{ end }}}{{{ if ./targetBlank }}} target="_blank"{{{ end }}} {{{ if ./text }}}aria-label="{./text}"{{{ end }}}>
|
|
8
7
|
<span class="d-flex gap-2 align-items-center text-nowrap truncate-open">
|
|
9
8
|
<span class="position-relative">
|
|
10
9
|
{{{ if ./iconClass }}}
|
|
@@ -12,9 +11,7 @@
|
|
|
12
11
|
<span component="navigation/count" class="visible-closed position-absolute top-0 start-100 translate-middle badge rounded-1 bg-primary {{{ if !./content }}}hidden{{{ end }}}">{./content}</span>
|
|
13
12
|
{{{ end }}}
|
|
14
13
|
</span>
|
|
15
|
-
{{{ if ./text }}}
|
|
16
|
-
<span class="nav-text small visible-open fw-semibold text-truncate">{./text}</span>
|
|
17
|
-
{{{ end }}}
|
|
14
|
+
{{{ if ./text }}}<span class="nav-text small visible-open fw-semibold text-truncate">{./text}</span>{{{ end }}}
|
|
18
15
|
</span>
|
|
19
16
|
<span component="navigation/count" class="visible-open badge rounded-1 bg-primary {{{ if !./content }}}hidden{{{ end }}}">{./content}</span>
|
|
20
17
|
</a>
|
|
@@ -1,30 +1,4 @@
|
|
|
1
|
-
<span component="post/tools" class="dropdown
|
|
2
|
-
<a class="btn-ghost-sm ff-secondary dropdown-toggle
|
|
3
|
-
<ul class="dropdown-menu dropdown-menu-end p-1 text-sm" role="menu">
|
|
4
|
-
<li class="dropdown-item placeholder-wave">
|
|
5
|
-
<div class="placeholder" style="width: 20px;"></div>
|
|
6
|
-
<div class="placeholder col-3"></div>
|
|
7
|
-
</li>
|
|
8
|
-
<li class="dropdown-item placeholder-wave">
|
|
9
|
-
<div class="placeholder" style="width: 20px;"></div>
|
|
10
|
-
<div class="placeholder col-5"></div>
|
|
11
|
-
</li>
|
|
12
|
-
<li class="dropdown-item placeholder-wave">
|
|
13
|
-
<div class="placeholder" style="width: 20px;"></div>
|
|
14
|
-
<div class="placeholder col-9"></div>
|
|
15
|
-
</li>
|
|
16
|
-
<li class="dropdown-item placeholder-wave">
|
|
17
|
-
<div class="placeholder" style="width: 20px;"></div>
|
|
18
|
-
<div class="placeholder col-7"></div>
|
|
19
|
-
</li>
|
|
20
|
-
<li class="dropdown-item placeholder-wave">
|
|
21
|
-
<div class="placeholder" style="width: 20px;"></div>
|
|
22
|
-
<div class="placeholder col-10"></div>
|
|
23
|
-
</li>
|
|
24
|
-
<li class="dropdown-divider"></li>
|
|
25
|
-
<li class="dropdown-item placeholder-wave">
|
|
26
|
-
<div class="placeholder" style="width: 20px;"></div>
|
|
27
|
-
<div class="placeholder col-10"></div>
|
|
28
|
-
</li>
|
|
29
|
-
</ul>
|
|
1
|
+
<span component="post/tools" class="dropdown bottom-sheet {{{ if !./display_post_menu }}}hidden{{{ end }}}">
|
|
2
|
+
<a class="btn-ghost-sm ff-secondary dropdown-toggle" href="#" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="[[topic:post-tools]]"><i class="fa fa-fw fa-ellipsis-v text-primary"></i></a>
|
|
3
|
+
<ul class="dropdown-menu dropdown-menu-end p-1 text-sm" role="menu"></ul>
|
|
30
4
|
</span>
|
|
@@ -5,30 +5,26 @@
|
|
|
5
5
|
{{{ end }}}
|
|
6
6
|
</div>
|
|
7
7
|
{{{ end }}}
|
|
8
|
-
|
|
9
8
|
<div class="d-flex align-items-start gap-3">
|
|
10
|
-
<div class="
|
|
11
|
-
<a class="d-inline-block position-relative text-decoration-none" href="{{{ if ./user.userslug }}}{config.relative_path}/user/{./user.userslug}{{{ else }}}#{{{ end }}}">
|
|
9
|
+
<div class="bg-body d-none d-sm-block rounded-circle" style="outline: 2px solid var(--bs-body-bg);">
|
|
10
|
+
<a class="d-inline-block position-relative text-decoration-none" href="{{{ if ./user.userslug }}}{config.relative_path}/user/{./user.userslug}{{{ else }}}#{{{ end }}}" aria-label="[[aria:user-avatar-for, {./user.username}]]">
|
|
12
11
|
{buildAvatar(posts.user, "48px", true, "", "user/picture")}
|
|
13
12
|
<span component="user/status" class="position-absolute translate-middle-y border border-white border-2 rounded-circle status {posts.user.status}"><span class="visually-hidden">[[global:{posts.user.status}]]</span></span>
|
|
14
13
|
</a>
|
|
15
14
|
</div>
|
|
16
|
-
|
|
17
|
-
<div class="post-container d-flex flex-grow-1 flex-column w-100" style="min-width: 0;">
|
|
15
|
+
<div class="post-container d-flex flex-grow-1 flex-column w-100" style="min-width:0;">
|
|
18
16
|
<div class="d-flex align-items-center gap-1 flex-wrap w-100 post-header mt-1" itemprop="author" itemscope itemtype="https://schema.org/Person">
|
|
19
17
|
<meta itemprop="name" content="{./user.username}">
|
|
20
18
|
{{{ if ./user.userslug }}}<meta itemprop="url" content="{config.relative_path}/user/{./user.userslug}">{{{ end }}}
|
|
21
19
|
|
|
22
|
-
<div class="
|
|
20
|
+
<div class="bg-body d-sm-none">
|
|
23
21
|
<a class="d-inline-block position-relative text-decoration-none" href="{{{ if ./user.userslug }}}{config.relative_path}/user/{./user.userslug}{{{ else }}}#{{{ end }}}">
|
|
24
22
|
{buildAvatar(posts.user, "20px", true, "", "user/picture")}
|
|
25
23
|
<span component="user/status" class="position-absolute translate-middle-y border border-white border-2 rounded-circle status {posts.user.status}"><span class="visually-hidden">[[global:{posts.user.status}]]</span></span>
|
|
26
24
|
</a>
|
|
27
25
|
</div>
|
|
28
26
|
|
|
29
|
-
<
|
|
30
|
-
<a class="fw-bold" href="{{{ if ./user.userslug }}}{config.relative_path}/user/{./user.userslug}{{{ else }}}#{{{ end }}}" data-username="{posts.user.username}" data-uid="{posts.user.uid}">{posts.user.displayname}</a>
|
|
31
|
-
</span>
|
|
27
|
+
<a class="fw-bold text-nowrap" href="{{{ if ./user.userslug }}}{config.relative_path}/user/{./user.userslug}{{{ else }}}#{{{ end }}}" data-username="{posts.user.username}" data-uid="{posts.user.uid}">{posts.user.displayname}</a>
|
|
32
28
|
|
|
33
29
|
{{{ each posts.user.selectedGroups }}}
|
|
34
30
|
{{{ if posts.user.selectedGroups.slug }}}
|
|
@@ -41,28 +37,22 @@
|
|
|
41
37
|
{{{ end }}}
|
|
42
38
|
|
|
43
39
|
<div class="d-flex gap-1 align-items-center">
|
|
44
|
-
<span class="text-muted">
|
|
45
|
-
{{{ if posts.toPid }}}
|
|
46
|
-
{generateRepliedTo(@value, config.timeagoCutoff)}
|
|
47
|
-
{{{ else }}}
|
|
48
|
-
{generateWrote(@value, config.timeagoCutoff)}
|
|
49
|
-
{{{ end }}}
|
|
50
|
-
</span>
|
|
40
|
+
<span class="text-muted">{generateWroteReplied(@value, config.timeagoCutoff)}</span>
|
|
51
41
|
|
|
52
42
|
<i component="post/edit-indicator" class="fa fa-edit text-muted{{{ if privileges.posts:history }}} pointer{{{ end }}} edit-icon {{{ if !posts.editor.username }}}hidden{{{ end }}}" title="[[global:edited-timestamp, {isoTimeToLocaleString(./editedISO, config.userLang)}]]"></i>
|
|
53
43
|
<span data-editor="{posts.editor.userslug}" component="post/editor" class="visually-hidden">[[global:last-edited-by, {posts.editor.username}]] <span class="timeago" title="{isoTimeToLocaleString(posts.editedISO, config.userLang)}"></span></span>
|
|
54
44
|
</div>
|
|
55
45
|
|
|
46
|
+
{{{ if posts.user.custom_profile_info.length }}}
|
|
56
47
|
<div>
|
|
57
48
|
<span>
|
|
58
|
-
{{{ if posts.user.custom_profile_info.length }}}
|
|
59
49
|
|
|
|
60
50
|
{{{ each posts.user.custom_profile_info }}}
|
|
61
51
|
{posts.user.custom_profile_info.content}
|
|
62
52
|
{{{ end }}}
|
|
63
|
-
{{{ end }}}
|
|
64
53
|
</span>
|
|
65
54
|
</div>
|
|
55
|
+
{{{ end }}}
|
|
66
56
|
<div class="d-flex align-items-center gap-1 flex-grow-1 justify-content-end">
|
|
67
57
|
<span class="bookmarked opacity-0 text-primary"><i class="fa fa-bookmark-o"></i></span>
|
|
68
58
|
<a href="{config.relative_path}/post/{encodeURIComponent(./pid)}" class="post-index text-muted d-none d-md-inline">#{increment(./index, "1")}</a>
|
|
@@ -82,8 +72,8 @@
|
|
|
82
72
|
|
|
83
73
|
<div class="d-flex">
|
|
84
74
|
{{{ if !hideReplies }}}
|
|
85
|
-
<a component="post/reply-count" data-target-component="post/replies/container" href="#" class="d-flex gap-2 align-items-center mt-2 btn-ghost ff-secondary border rounded-1 p-1
|
|
86
|
-
<span component="post/reply-count/avatars" class="
|
|
75
|
+
<a component="post/reply-count" data-target-component="post/replies/container" href="#" class="d-flex gap-2 align-items-center mt-2 btn-ghost ff-secondary border rounded-1 p-1 text-muted text-decoration-none text-xs {{{ if (!./replies || shouldHideReplyContainer(@value)) }}}hidden{{{ end }}}">
|
|
76
|
+
<span component="post/reply-count/avatars" class="d-flex gap-1 {{{ if posts.replies.hasMore }}}hasMore{{{ end }}}">
|
|
87
77
|
{{{each posts.replies.users}}}
|
|
88
78
|
<span>{buildAvatar(posts.replies.users, "20px", true, "avatar-tooltip")}</span>
|
|
89
79
|
{{{end}}}
|
|
@@ -96,8 +86,6 @@
|
|
|
96
86
|
<span class="ms-2 replies-last hidden-xs fw-semibold">[[topic:last-reply-time]] <span class="timeago" title="{posts.replies.timestampISO}"></span></span>
|
|
97
87
|
|
|
98
88
|
<i class="fa fa-fw fa-chevron-down" component="post/replies/open"></i>
|
|
99
|
-
<i class="fa fa-fw fa-chevron-up hidden" component="post/replies/close"></i>
|
|
100
|
-
<i class="fa fa-fw fa-spin fa-spinner hidden" component="post/replies/loading"></i>
|
|
101
89
|
</a>
|
|
102
90
|
{{{ end }}}
|
|
103
91
|
</div>
|
|
@@ -106,8 +94,8 @@
|
|
|
106
94
|
|
|
107
95
|
<div component="post/actions" class="d-flex justify-content-end gap-1 post-tools">
|
|
108
96
|
<!-- IMPORT partials/topic/reactions.tpl -->
|
|
109
|
-
<a component="post/reply" href="#" class="btn-ghost-sm
|
|
110
|
-
<a component="post/quote" href="#" class="btn-ghost-sm
|
|
97
|
+
<a component="post/reply" href="#" class="btn-ghost-sm {{{ if !privileges.topics:reply }}}hidden{{{ end }}}" title="[[topic:reply]]"><i class="fa fa-fw fa-reply text-primary"></i></a>
|
|
98
|
+
<a component="post/quote" href="#" class="btn-ghost-sm {{{ if !privileges.topics:reply }}}hidden{{{ end }}}" title="[[topic:quote]]"><i class="fa fa-fw fa-quote-right text-primary"></i></a>
|
|
111
99
|
|
|
112
100
|
{{{ if !reputation:disabled }}}
|
|
113
101
|
<div class="d-flex votes align-items-center">
|
|
@@ -130,7 +118,6 @@
|
|
|
130
118
|
<!-- IMPORT partials/topic/post-menu.tpl -->
|
|
131
119
|
</div>
|
|
132
120
|
</div>
|
|
133
|
-
|
|
134
121
|
{{{ if (!./index && widgets.mainpost-footer.length) }}}
|
|
135
122
|
<div data-widget-area="mainpost-footer">
|
|
136
123
|
{{{ each widgets.mainpost-footer }}}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
{{{ if privileges.topics:reply }}}
|
|
2
|
+
<div component="topic/reply/container" class="btn-group">
|
|
3
|
+
<a href="{config.relative_path}/compose?tid={tid}" class="d-flex align-items-center btn btn-sm btn-primary px-3 fw-semibold" component="topic/reply" data-ajaxify="false" role="button"><i class="fa fa-reply d-sm-block d-md-none"></i><span class="d-none d-md-block"> [[topic:reply]]</span></a>
|
|
3
4
|
<button type="button" class="btn btn-sm btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="[[topic:reply-options]]">
|
|
4
5
|
<span class="caret"></span>
|
|
5
6
|
</button>
|
|
@@ -7,6 +8,7 @@
|
|
|
7
8
|
<li><a class="dropdown-item rounded-1" href="#" component="topic/reply-as-topic" role="menuitem">[[topic:reply-as-topic]]</a></li>
|
|
8
9
|
</ul>
|
|
9
10
|
</div>
|
|
11
|
+
{{{ end }}}
|
|
10
12
|
|
|
11
13
|
{{{ if loggedIn }}}
|
|
12
14
|
{{{ if !privileges.topics:reply }}}
|
|
@@ -4,10 +4,6 @@
|
|
|
4
4
|
<i class="fa fa-fw fa-gear text-primary"></i>
|
|
5
5
|
<span class="d-none d-md-inline fw-semibold">[[topic:thread-tools.title]]</span>
|
|
6
6
|
</button>
|
|
7
|
-
<ul class="dropdown-menu p-1 text-sm" role="menu">
|
|
8
|
-
<li class="placeholder-wave"><a class="dropdown-item d-flex gap-2" href="#"><div class="placeholder bg-secondary rounded-1" style="width: 1em;"></div><div class="placeholder bg-secondary rounded-1 col-8"></div></a></li>
|
|
9
|
-
<li class="placeholder-wave"><a class="dropdown-item d-flex gap-2" href="#"><div class="placeholder bg-secondary rounded-1" style="width: 1em;"></div><div class="placeholder bg-secondary rounded-1 col-8"></div></a></li>
|
|
10
|
-
<li class="placeholder-wave"><a class="dropdown-item d-flex gap-2" href="#"><div class="placeholder bg-secondary rounded-1" style="width: 1em;"></div><div class="placeholder bg-secondary rounded-1 col-8"></div></a></li>
|
|
11
|
-
</ul>
|
|
7
|
+
<ul class="dropdown-menu p-1 text-sm" role="menu"></ul>
|
|
12
8
|
</div>
|
|
13
9
|
{{{ end }}}
|
package/templates/topic.tpl
CHANGED
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
{{{ end }}}
|
|
5
5
|
{{{ if widgets.header.length }}}
|
|
6
6
|
<div data-widget-area="header">
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
{{{each widgets.header}}}
|
|
8
|
+
{{widgets.header.html}}
|
|
9
|
+
{{{end}}}
|
|
10
10
|
</div>
|
|
11
11
|
{{{ end }}}
|
|
12
12
|
|
|
@@ -27,28 +27,22 @@
|
|
|
27
27
|
<div class="topic-info d-flex gap-2 align-items-center flex-wrap {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}">
|
|
28
28
|
<span component="topic/labels" class="d-flex gap-2 {{{ if (!scheduled && (!pinned && (!locked && (!oldCid && !icons.length)))) }}}hidden{{{ end }}}">
|
|
29
29
|
<span component="topic/scheduled" class="badge badge border border-gray-300 text-body {{{ if !scheduled }}}hidden{{{ end }}}">
|
|
30
|
-
<i class="fa fa-clock-o"></i>
|
|
31
|
-
[[topic:scheduled]]
|
|
30
|
+
<i class="fa fa-clock-o"></i> [[topic:scheduled]]
|
|
32
31
|
</span>
|
|
33
32
|
<span component="topic/pinned" class="badge badge border border-gray-300 text-body {{{ if (scheduled || !pinned) }}}hidden{{{ end }}}">
|
|
34
|
-
<i class="fa fa-thumb-tack"></i>
|
|
35
|
-
{{{ if !pinExpiry }}}[[topic:pinned]]{{{ else }}}[[topic:pinned-with-expiry, {isoTimeToLocaleString(./pinExpiryISO, config.userLang)}]]{{{ end }}}
|
|
33
|
+
<i class="fa fa-thumb-tack"></i> {{{ if !pinExpiry }}}[[topic:pinned]]{{{ else }}}[[topic:pinned-with-expiry, {isoTimeToLocaleString(./pinExpiryISO, config.userLang)}]]{{{ end }}}
|
|
36
34
|
</span>
|
|
37
35
|
<span component="topic/locked" class="badge badge border border-gray-300 text-body {{{ if !locked }}}hidden{{{ end }}}">
|
|
38
|
-
<i class="fa fa-lock"></i>
|
|
39
|
-
[[topic:locked]]
|
|
36
|
+
<i class="fa fa-lock"></i> [[topic:locked]]
|
|
40
37
|
</span>
|
|
41
38
|
<a component="topic/moved" href="{config.relative_path}/category/{oldCid}" class="badge badge border border-gray-300 text-body text-decoration-none {{{ if !oldCid }}}hidden{{{ end }}}">
|
|
42
|
-
<i class="fa fa-arrow-circle-right"></i>
|
|
43
|
-
{{{ if privileges.isAdminOrMod }}}[[topic:moved-from, {oldCategory.name}]]{{{ else }}}[[topic:moved]]{{{ end }}}
|
|
39
|
+
<i class="fa fa-arrow-circle-right"></i> {{{ if privileges.isAdminOrMod }}}[[topic:moved-from, {oldCategory.name}]]{{{ else }}}[[topic:moved]]{{{ end }}}
|
|
44
40
|
</a>
|
|
45
41
|
{{{each icons}}}<span class="lh-1">{@value}</span>{{{end}}}
|
|
46
42
|
</span>
|
|
47
43
|
{function.buildCategoryLabel, category, "a", "border"}
|
|
48
44
|
<div data-tid="{./tid}" component="topic/tags" class="lh-1 tags tag-list d-flex flex-wrap hidden-xs hidden-empty gap-2"><!-- IMPORT partials/topic/tags.tpl --></div>
|
|
49
|
-
<div class="d-flex hidden-xs gap-2">
|
|
50
|
-
<!-- IMPORT partials/topic/stats.tpl -->
|
|
51
|
-
</div>
|
|
45
|
+
<div class="d-flex hidden-xs gap-2"><!-- IMPORT partials/topic/stats.tpl --></div>
|
|
52
46
|
</div>
|
|
53
47
|
</div>
|
|
54
48
|
<div class="d-flex gap-2 justify-content-end align-items-center mt-2 hidden-empty" component="topic/thumb/list"><!-- IMPORT partials/topic/thumbs.tpl --></div>
|
|
@@ -57,15 +51,12 @@
|
|
|
57
51
|
<div class="row mb-4 mb-lg-0">
|
|
58
52
|
<div class="topic {{{ if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
|
|
59
53
|
<!-- IMPORT partials/post_bar.tpl -->
|
|
60
|
-
|
|
61
54
|
{{{ if merger }}}
|
|
62
55
|
<!-- IMPORT partials/topic/merged-message.tpl -->
|
|
63
56
|
{{{ end }}}
|
|
64
|
-
|
|
65
57
|
{{{ if forker }}}
|
|
66
58
|
<!-- IMPORT partials/topic/forked-message.tpl -->
|
|
67
59
|
{{{ end }}}
|
|
68
|
-
|
|
69
60
|
{{{ if !scheduled }}}
|
|
70
61
|
<!-- IMPORT partials/topic/deleted-message.tpl -->
|
|
71
62
|
{{{ end }}}
|
|
@@ -76,7 +67,6 @@
|
|
|
76
67
|
{{{ each posts }}}
|
|
77
68
|
<li component="post" class="pt-4 {{{ if posts.deleted }}}deleted{{{ end }}} {{{ if posts.selfPost }}}self-post{{{ end }}} {{{ if posts.topicOwnerPost }}}topic-owner-post{{{ end }}}" <!-- IMPORT partials/data/topic.tpl -->>
|
|
78
69
|
<a component="post/anchor" data-index="{./index}" id="{increment(./index, "1")}"></a>
|
|
79
|
-
|
|
80
70
|
<meta itemprop="datePublished" content="{./timestampISO}">
|
|
81
71
|
{{{ if ./editedISO }}}
|
|
82
72
|
<meta itemprop="dateModified" content="{./editedISO}">
|
|
@@ -85,9 +75,7 @@
|
|
|
85
75
|
<!-- IMPORT partials/topic/post.tpl -->
|
|
86
76
|
</li>
|
|
87
77
|
{{{ if (config.topicPostSort != "most_votes") }}}
|
|
88
|
-
{{{ each ./events}}}
|
|
89
|
-
<!-- IMPORT partials/topic/event.tpl -->
|
|
90
|
-
{{{ end }}}
|
|
78
|
+
{{{ each ./events}}}<!-- IMPORT partials/topic/event.tpl -->{{{ end }}}
|
|
91
79
|
{{{ end }}}
|
|
92
80
|
{{{ end }}}
|
|
93
81
|
</ul>
|
|
@@ -110,17 +98,17 @@
|
|
|
110
98
|
{{{ end }}}
|
|
111
99
|
</div>
|
|
112
100
|
<div data-widget-area="sidebar" class="col-lg-3 col-sm-12 {{{ if !widgets.sidebar.length }}}hidden{{{ end }}}">
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
101
|
+
{{{each widgets.sidebar}}}
|
|
102
|
+
{{widgets.sidebar.html}}
|
|
103
|
+
{{{end}}}
|
|
116
104
|
</div>
|
|
117
105
|
</div>
|
|
118
106
|
</div>
|
|
119
107
|
|
|
120
108
|
<div data-widget-area="footer">
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
109
|
+
{{{each widgets.footer}}}
|
|
110
|
+
{{widgets.footer.html}}
|
|
111
|
+
{{{end}}}
|
|
124
112
|
</div>
|
|
125
113
|
|
|
126
114
|
{{{ if !config.usePagination }}}
|
package/templates/users.tpl
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<div class="mb-2 mb-md-0">
|
|
10
10
|
<!-- IMPORT partials/users_list_menu.tpl -->
|
|
11
11
|
</div>
|
|
12
|
-
<div
|
|
12
|
+
<div>
|
|
13
13
|
<div class="d-flex justify-content-end gap-2">
|
|
14
14
|
{{{ if showInviteButton }}}
|
|
15
15
|
<button component="user/invite" class="btn btn-primary btn-sm text-nowrap"><i class="fa fa-user-plus"></i> [[users:invite]]</button>
|