nodebb-theme-persona 14.2.42 → 15.0.0-beta.2
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/scss/account.scss +0 -139
- package/scss/persona.scss +0 -1
- package/templates/account/blocks.tpl +1 -1
- package/templates/account/categories.tpl +1 -1
- package/templates/account/consent.tpl +2 -0
- package/templates/account/info.tpl +7 -7
- package/templates/account/profile.tpl +69 -23
- package/templates/account/settings.tpl +6 -6
- package/templates/account/tags.tpl +1 -1
- package/templates/account/uploads.tpl +1 -1
- package/templates/category.tpl +2 -2
- package/templates/header.tpl +2 -2
- package/templates/modules/usercard.tpl +1 -1
- package/templates/notifications.tpl +2 -2
- package/templates/partials/account/category-item.tpl +2 -2
- package/templates/partials/account/header.tpl +11 -11
- package/templates/partials/account/menu.tpl +3 -3
- package/templates/partials/account/session-list.tpl +1 -1
- package/templates/partials/breadcrumbs.tpl +1 -1
- package/templates/partials/buttons/newTopic.tpl +1 -1
- package/templates/partials/categories/item.tpl +3 -3
- package/templates/partials/categories/lastpost.tpl +2 -2
- package/templates/partials/categories/link.tpl +5 -11
- package/templates/partials/chats-menu.tpl +1 -1
- package/templates/partials/cookie-consent.tpl +2 -2
- package/templates/partials/header/user-menu.tpl +1 -1
- package/templates/partials/menu.tpl +6 -6
- package/templates/partials/notifications_list.tpl +3 -3
- package/templates/partials/posts_list_item.tpl +2 -2
- package/templates/partials/quick-category-search-results.tpl +2 -2
- package/templates/partials/quick-search-results.tpl +2 -2
- package/templates/partials/search-filters.tpl +2 -2
- package/templates/partials/search-results.tpl +5 -5
- package/templates/partials/tags_list.tpl +4 -1
- package/templates/partials/topic/event.tpl +1 -1
- package/templates/partials/topic/navigation-post.tpl +2 -2
- package/templates/partials/topic/necro-post.tpl +1 -1
- package/templates/partials/topic/post.tpl +5 -5
- package/templates/partials/topic/quickreply.tpl +1 -1
- package/templates/partials/topics_list.tpl +5 -5
- package/templates/partials/users/item.tpl +1 -1
- package/templates/topic.tpl +2 -10
- package/templates/world.tpl +4 -4
- package/scss/groups.scss +0 -111
- package/templates/groups/details.tpl +0 -114
- package/templates/groups/list.tpl +0 -46
- package/templates/groups/members.tpl +0 -6
- package/templates/partials/groups/admin.tpl +0 -96
- package/templates/partials/groups/badge.tpl +0 -1
- package/templates/partials/groups/invited.tpl +0 -33
- package/templates/partials/groups/list.tpl +0 -21
- package/templates/partials/groups/memberlist.tpl +0 -45
- package/templates/partials/groups/pending.tpl +0 -28
- package/templates/partials/toast.tpl +0 -19
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
{{{ if @first }}}
|
|
4
4
|
<div component="category/posts" class="ps-2 text-xs d-flex flex-column h-100 gap-1">
|
|
5
5
|
<div class="text-nowrap text-truncate">
|
|
6
|
-
<a class="text-decoration-none avatar-tooltip" title="{./user.displayname}" href="{config.relative_path}/user/{./user.userslug}">{buildAvatar(posts.user, "18px", true)}</a>
|
|
6
|
+
<a class="text-decoration-none avatar-tooltip" title="{./user.displayname}" href="{config.relative_path}/user/{./user.userslug}">{{buildAvatar(posts.user, "18px", true)}}</a>
|
|
7
7
|
<a class="permalink text-muted timeago text-xs" href="{config.relative_path}/topic/{./topic.slug}{{{ if ./index }}}/{./index}{{{ end }}}" title="{./timestampISO}" aria-label="[[global:lastpost]]"></a>
|
|
8
8
|
</div>
|
|
9
9
|
<div class="post-content text-xs text-break line-clamp-sm-2 lh-sm position-relative flex-fill">
|
|
10
10
|
<a class="stretched-link" tabindex="-1" href="{config.relative_path}/topic/{./topic.slug}{{{ if ./index }}}/{./index}{{{ end }}}" aria-label="[[global:lastpost]]"></a>
|
|
11
|
-
{./content}
|
|
11
|
+
{{./content}}
|
|
12
12
|
</div>
|
|
13
13
|
</div>
|
|
14
14
|
{{{ end }}}
|
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
{
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
<!-- ELSE -->
|
|
7
|
-
<a href="{config.relative_path}/category/{../slug}" itemprop="url">
|
|
8
|
-
<!-- ENDIF ../link -->
|
|
9
|
-
{../name}
|
|
10
|
-
</a>
|
|
11
|
-
<!-- ENDIF ../isSection -->
|
|
1
|
+
{{{ if ./isSection }}}
|
|
2
|
+
{tx(./name)}
|
|
3
|
+
{{{ else }}}
|
|
4
|
+
<a class="text-reset" href="{{{ if ./link }}}{./link}{{{ else }}}{config.relative_path}/category/{./slug}{{{ end }}}" itemprop="url">{tx(./name)}</a>
|
|
5
|
+
{{{ end }}}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{{{ end }}}
|
|
11
11
|
<li class="nav-item">
|
|
12
12
|
<a class="nav-link active text-decoration-none" href="#" data-bs-target="#profile" data-bs-toggle="tab">
|
|
13
|
-
{buildAvatar(user, "24px", true, "user-icon")}
|
|
13
|
+
{{buildAvatar(user, "24px", true, "user-icon")}}
|
|
14
14
|
</a>
|
|
15
15
|
</li>
|
|
16
16
|
</ul>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<div class="cookie-consent">
|
|
2
|
-
<button class="float-end btn btn-primary">{dismiss}</button>
|
|
3
|
-
{message} <a target="_blank" rel="noopener" href="{link_url}">{link}</a>
|
|
2
|
+
<button class="float-end btn btn-primary">{tx(dismiss)}</button>
|
|
3
|
+
{tx(message)} <a target="_blank" rel="noopener" href="{link_url}">{tx(link)}</a>
|
|
4
4
|
</div>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<li id="user_label" class="nav-item dropdown px-3" title="[[global:header.profile]]">
|
|
2
2
|
<a href="#" for="user-control-list-check" data-bs-toggle="dropdown" id="user_dropdown" role="button" component="header/avatar" aria-haspopup="true" aria-expanded="false">
|
|
3
|
-
{buildAvatar(user, "32px", true)}
|
|
3
|
+
{{buildAvatar(user, "32px", true)}}
|
|
4
4
|
<span id="user-header-name" class="d-block d-sm-none">{user.username}</span>
|
|
5
5
|
</a>
|
|
6
6
|
<input type="checkbox" class="hidden" id="user-control-list-check" aria-hidden="true">
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
<button type="button" class="navbar-toggler border-0" id="mobile-chats">
|
|
36
36
|
<span component="notifications/icon" class="notification-icon fa fa-fw fa-bell-o unread-count" data-content="{unreadCount.notification}"></span>
|
|
37
37
|
<span component="chat/icon" class="notification-icon fa fa-fw fa-comments unread-count" data-content="{unreadCount.chat}"></span>
|
|
38
|
-
{buildAvatar(user, "32px", true)}
|
|
38
|
+
{{buildAvatar(user, "32px", true)}}
|
|
39
39
|
</button>
|
|
40
40
|
{{{ end }}}
|
|
41
41
|
|
|
@@ -47,14 +47,14 @@
|
|
|
47
47
|
<ul id="main-nav" class="navbar-nav me-auto mb-2 mb-lg-0">
|
|
48
48
|
{{{each navigation}}}
|
|
49
49
|
{{{ if displayMenuItem(@root, @index) }}}
|
|
50
|
-
<li class="nav-item {navigation.class}{{{ if navigation.dropdown }}} dropdown{{{ end }}}" title="{
|
|
50
|
+
<li class="nav-item {navigation.class}{{{ if navigation.dropdown }}} dropdown{{{ end }}}" title="{tx(./title)}">
|
|
51
51
|
<a class="nav-link navigation-link {{{ if navigation.dropdown }}}dropdown-toggle{{{ end }}}"
|
|
52
52
|
{{{ if navigation.dropdown }}} href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" {{{ else }}} href="{navigation.route}"{{{ end }}} {{{ if navigation.id }}}id="{navigation.id}"{{{ end }}}{{{ if navigation.targetBlank }}} target="_blank"{{{ end }}}>
|
|
53
53
|
{{{ if navigation.iconClass }}}
|
|
54
|
-
<i class="fa fa-fw {navigation.iconClass}" data-content="{
|
|
54
|
+
<i class="fa fa-fw {navigation.iconClass}" data-content="{./content}"></i>
|
|
55
55
|
{{{ end }}}
|
|
56
|
-
{{{ if
|
|
57
|
-
<span class="{
|
|
56
|
+
{{{ if ./text }}}
|
|
57
|
+
<span class="{./textClass}">{tx(./text)}</span>
|
|
58
58
|
{{{ end }}}
|
|
59
59
|
{{{ if navigation.dropdown}}}
|
|
60
60
|
<i class="fa fa-caret-down"></i>
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
</a>
|
|
63
63
|
{{{ if navigation.dropdown }}}
|
|
64
64
|
<ul class="dropdown-menu p-1" role="menu">
|
|
65
|
-
{navigation.dropdownContent}
|
|
65
|
+
{{navigation.dropdownContent}}
|
|
66
66
|
</ul>
|
|
67
67
|
{{{ end }}}
|
|
68
68
|
</li>
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<div class="btn btn-ghost btn-sm d-flex gap-2 flex-grow-1 align-items-start text-start">
|
|
12
12
|
<a class="flex-grow-0 flex-shrink-0" href="{{{ if ./user.userslug}}}{config.relative_path}/user/{./user.userslug}{{{ else }}}#{{{ end }}}">
|
|
13
13
|
{{{ if ./user }}}
|
|
14
|
-
{buildAvatar(./user, "32px", true)}
|
|
14
|
+
{{buildAvatar(./user, "32px", true)}}
|
|
15
15
|
{{{ else }}}
|
|
16
16
|
{{{ if ./icon }}}
|
|
17
17
|
<div class="avatar avatar-rounded" style="--avatar-size: 32px;"><i class="text-secondary fa {./icon}"></i></div>
|
|
@@ -25,11 +25,11 @@
|
|
|
25
25
|
|
|
26
26
|
<div class="d-flex flex-grow-1 flex-column gap-1 align-items-start position-relative">
|
|
27
27
|
<a href="{./path}" class="text-decoration-none d-inline-block text-reset text-break text-sm ff-sans stretched-link" component="notifications/item/link">
|
|
28
|
-
{./bodyShort}
|
|
28
|
+
{{./bodyShort}}
|
|
29
29
|
</a>
|
|
30
30
|
{{{ if ./bodyLong}}}
|
|
31
31
|
<div class="text-secondary text-sm line-clamp-2 text-contain hidden-blockquote hidden-pre hidden-first-child-br">
|
|
32
|
-
{./bodyLong}
|
|
32
|
+
{{./bodyLong}}
|
|
33
33
|
</div>
|
|
34
34
|
{{{ end }}}
|
|
35
35
|
<div class="text-xs text-muted">{{{ if ./timeagoLong }}}{./timeagoLong}{{{ else }}}<span class="timeago" title="{./datetimeISO}"></span>{{{ end }}}</div>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
</a>
|
|
6
6
|
|
|
7
7
|
<div component="post/content" class="content mb-3">
|
|
8
|
-
{../content}
|
|
8
|
+
{{../content}}
|
|
9
9
|
</div>
|
|
10
10
|
|
|
11
11
|
<div class="mb-3">
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
</div>
|
|
24
24
|
|
|
25
25
|
<div class="post-info">
|
|
26
|
-
<a href="{config.relative_path}/user/{./user.userslug}">{buildAvatar(./user, "28px", true, "user-img not-responsive")}</a>
|
|
26
|
+
<a href="{config.relative_path}/user/{./user.userslug}">{{buildAvatar(./user, "28px", true, "user-img not-responsive")}}</a>
|
|
27
27
|
|
|
28
28
|
<div class="post-author text-secondary text-uppercase">
|
|
29
29
|
<a class="text-reset" href="{config.relative_path}/user/{./user.userslug}">{./user.displayname}</a><br />
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
{{{ each categories }}}
|
|
12
12
|
<li data-cid="{./cid}" class="d-flex flex-column gap-1">
|
|
13
13
|
<div class="btn btn-ghost btn-sm ff-secondary d-flex gap-2 align-items-center rounded-1 text-start text-reset d-block text-truncate px-2 py-1 position-relative">
|
|
14
|
-
<div class="flex-shrink-0">{buildCategoryIcon(@value, "40px", "rounded-circle")}</div>
|
|
14
|
+
<div class="flex-shrink-0">{{buildCategoryIcon(@value, "40px", "rounded-circle")}}</div>
|
|
15
15
|
<div class="flex-grow-1" style="min-width:0;">
|
|
16
16
|
<a class="stretched-link" href="{config.relative_path}/category/{./slug}"></a>
|
|
17
17
|
<span class="quick-search-title fw-semibold text-sm">
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
</span>
|
|
23
23
|
<br/>
|
|
24
24
|
<div class="snippet text-xs text-break text-wrap mb-0 text-sm text-secondary line-clamp-1">
|
|
25
|
-
{./descriptionParsed}
|
|
25
|
+
{{./descriptionParsed}}
|
|
26
26
|
</div>
|
|
27
27
|
</div>
|
|
28
28
|
</div>
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<li data-tid="{posts.topic.tid}" data-pid="{posts.pid}">
|
|
4
4
|
<a href="{config.relative_path}/post/{encodeURIComponent(posts.pid)}"
|
|
5
5
|
class="text-decoration-none text-reset clearfix d-block text-truncate px-3 py-1">
|
|
6
|
-
{buildAvatar(posts.user, "24px", true)}
|
|
6
|
+
{{buildAvatar(posts.user, "24px", true)}}
|
|
7
7
|
<span class="quick-search-title fw-bold">{posts.topic.title}</span>
|
|
8
8
|
<br/>
|
|
9
9
|
<p class="snippet text-break text-wrap">
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
</p>
|
|
12
12
|
<small class="post-info float-end">
|
|
13
13
|
<div class="category-item d-inline-block">
|
|
14
|
-
{buildCategoryIcon(./category, "24px", "rounded-circle")} {posts.category.name}
|
|
14
|
+
{{buildCategoryIcon(./category, "24px", "rounded-circle")}} {posts.category.name}
|
|
15
15
|
• <span class="timeago" title="{posts.timestampISO}"></span>
|
|
16
16
|
</div>
|
|
17
17
|
</small>
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
<div component="user/filter/selected" class="d-flex flex-wrap gap-2">
|
|
70
70
|
{{{ each userFilterSelected }}}
|
|
71
71
|
<div class="d-flex px-2 py-1 rounded-1 text-bg-primary gap-2 align-items-center text-sm">
|
|
72
|
-
{buildAvatar(@value, "16px", true)} {./username}
|
|
72
|
+
{{buildAvatar(@value, "16px", true)}} {./username}
|
|
73
73
|
<button component="user/filter/delete" data-uid="{./uid}" class="btn btn-primary btn-sm py-0"><i class="fa fa-times fa-xs"></i></button>
|
|
74
74
|
</div>
|
|
75
75
|
{{{ end }}}
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
<hr class="my-2"/>
|
|
78
78
|
<div component="user/filter/results" class="d-flex flex-wrap gap-2">
|
|
79
79
|
{{{ each userFilterResults }}}
|
|
80
|
-
<button class="btn btn-light btn-sm border" data-uid="{./uid}" data-username="{./username}">{buildAvatar(@value, "16px", true)} {./username}</button>
|
|
80
|
+
<button class="btn btn-light btn-sm border" data-uid="{./uid}" data-username="{./username}">{{buildAvatar(@value, "16px", true)}} {./username}</button>
|
|
81
81
|
{{{ end }}}
|
|
82
82
|
</div>
|
|
83
83
|
</li>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<div id="results" class="search-results col-md-12" data-search-query="{search_query}">
|
|
2
2
|
{{{ if matchCount }}}
|
|
3
|
-
<div class="alert alert-info">
|
|
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
6
|
<div class="alert alert-warning">[[search:no-matches]]</div>
|
|
@@ -11,21 +11,21 @@
|
|
|
11
11
|
<div class="topic-row card clearfix mb-3">
|
|
12
12
|
<div class="card-body">
|
|
13
13
|
<div class="mb-2">
|
|
14
|
-
<a href="{config.relative_path}/user/{./user.userslug}">{buildAvatar(./user, "24px", true)}</a>
|
|
14
|
+
<a href="{config.relative_path}/user/{./user.userslug}">{{buildAvatar(./user, "24px", true)}}</a>
|
|
15
15
|
<a class="topic-title fw-semibold fs-5" href="{config.relative_path}/post/{encodeURIComponent(posts.pid)}">{./topic.title}</a>
|
|
16
16
|
</div>
|
|
17
17
|
|
|
18
18
|
{{{ if showAsPosts }}}
|
|
19
19
|
<div component="post/content" class="content">
|
|
20
|
-
{./content}
|
|
20
|
+
{{./content}}
|
|
21
21
|
</div>
|
|
22
22
|
{{{ end }}}
|
|
23
23
|
|
|
24
24
|
<small class="post-info">
|
|
25
25
|
<a href="{config.relative_path}/category/{./category.slug}">
|
|
26
26
|
<div class="category-item d-inline-block">
|
|
27
|
-
{buildCategoryIcon(./category, "24px", "rounded-circle")}
|
|
28
|
-
{./category.name}
|
|
27
|
+
{{buildCategoryIcon(./category, "24px", "rounded-circle")}}
|
|
28
|
+
{tx(./category.name)}
|
|
29
29
|
</div>
|
|
30
30
|
</a> •
|
|
31
31
|
<span class="timeago" title="{./timestampISO}"></span>
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
{{{each tags}}}
|
|
2
2
|
<h5 class="float-start tag-container me-5 mb-5 fw-bold">
|
|
3
|
-
<a href="{config.relative_path}/tags/{
|
|
3
|
+
<a href="{config.relative_path}/tags/{./valueEncoded}" data-tag="{./value}">
|
|
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>
|
|
6
|
+
</a>
|
|
4
7
|
</h5>
|
|
5
8
|
{{{end}}}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<i class="fa {{{ if ./icon }}}{./icon}{{{ else }}}fa-circle{{{ end }}}"></i>
|
|
4
4
|
</div>
|
|
5
5
|
<span class="timeline-text">
|
|
6
|
-
{./text}
|
|
6
|
+
{{./text}}
|
|
7
7
|
</span>
|
|
8
8
|
{{{ if (privileges.isAdminOrMod && ./id) }}}
|
|
9
9
|
<span component="topic/event/delete" data-topic-event-id="{./id}" data-topic-event-type="{./type}" class="timeline-text pointer" title="[[topic:delete-event]]"><i class="fa fa-trash"></i></span>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<div class="clearfix">
|
|
2
2
|
<div class="icon float-start">
|
|
3
3
|
<a href="<!-- IF post.user.userslug -->{config.relative_path}/user/{post.user.userslug}<!-- ELSE -->#<!-- ENDIF post.user.userslug -->">
|
|
4
|
-
{buildAvatar(post.user, "24px", true, "", "user/picture")} {post.user.username}
|
|
4
|
+
{{buildAvatar(post.user, "24px", true, "", "user/picture")}} {post.user.username}
|
|
5
5
|
</a>
|
|
6
6
|
</div>
|
|
7
7
|
<small class="float-end">
|
|
@@ -9,4 +9,4 @@
|
|
|
9
9
|
</small>
|
|
10
10
|
</div>
|
|
11
11
|
|
|
12
|
-
<div>{post.content}</div>
|
|
12
|
+
<div>{{post.content}}</div>
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<div class="clearfix post-header">
|
|
10
10
|
<div class="icon float-start">
|
|
11
11
|
<a href="<!-- IF posts.user.userslug -->{config.relative_path}/user/{posts.user.userslug}<!-- ELSE -->#<!-- ENDIF posts.user.userslug -->">
|
|
12
|
-
{buildAvatar(posts.user, "48px", true, "", "user/picture")}
|
|
12
|
+
{{buildAvatar(posts.user, "48px", true, "", "user/picture")}}
|
|
13
13
|
{{{ if ./user.isLocal }}}
|
|
14
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">[[global:{posts.user.status}]]</span></span>
|
|
15
15
|
{{{ else }}}
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
<!-- IF posts.user.custom_profile_info.length -->
|
|
49
49
|
|
|
|
50
50
|
{{{each posts.user.custom_profile_info}}}
|
|
51
|
-
{posts.user.custom_profile_info.content}
|
|
51
|
+
{{posts.user.custom_profile_info.content}}
|
|
52
52
|
{{{end}}}
|
|
53
53
|
<!-- ENDIF posts.user.custom_profile_info.length -->
|
|
54
54
|
</span>
|
|
@@ -72,12 +72,12 @@
|
|
|
72
72
|
<br />
|
|
73
73
|
|
|
74
74
|
<div class="content" component="post/content" itemprop="text">
|
|
75
|
-
{posts.content}
|
|
75
|
+
{{posts.content}}
|
|
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">{posts.user.signature}</div>
|
|
80
|
+
<div component="post/signature" data-uid="{posts.user.uid}" class="post-signature">{{txEscape(posts.user.signature)}}</div>
|
|
81
81
|
{{{ end }}}
|
|
82
82
|
|
|
83
83
|
<div class="clearfix">
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
<a component="post/reply-count" data-target-component="post/replies/container" href="#" class="threaded-replies user-select-none float-start text-muted {{{ if (!./replies || shouldHideReplyContainer(@value)) }}}hidden{{{ end }}}">
|
|
86
86
|
<span component="post/reply-count/avatars" class="avatars d-inline-flex gap-1 align-items-top hidden-xs {{{ if posts.replies.hasMore }}}hasMore{{{ end }}}">
|
|
87
87
|
{{{each posts.replies.users}}}
|
|
88
|
-
<span>{buildAvatar(posts.replies.users, "16px", true, "")}</span>
|
|
88
|
+
<span>{{buildAvatar(posts.replies.users, "16px", true, "")}}</span>
|
|
89
89
|
{{{end}}}
|
|
90
90
|
{{{ if posts.replies.hasMore}}}
|
|
91
91
|
<span><i class="fa fa-ellipsis"></i></span>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<div component="topic/quickreply/container" class="quick-reply d-flex gap-3 mb-4">
|
|
3
3
|
<div class="icon hidden-xs">
|
|
4
4
|
<a class="d-inline-block position-relative" href="{{{ if loggedInUser.userslug }}}{config.relative_path}/user/{loggedInUser.userslug}{{{ else }}}#{{{ end }}}">
|
|
5
|
-
{buildAvatar(loggedInUser, "48px", true, "", "user/picture")}
|
|
5
|
+
{{buildAvatar(loggedInUser, "48px", true, "", "user/picture")}}
|
|
6
6
|
</a>
|
|
7
7
|
</div>
|
|
8
8
|
<form class="flex-grow-1 d-flex flex-column gap-2" method="post" action="{config.relative_path}/compose">
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
{{{ each topics }}}
|
|
4
4
|
<li component="category/topic" class="category-item hover-parent py-2 mb-2 d-flex flex-column flex-lg-row align-items-start {generateTopicClass(@value)}" <!-- IMPORT partials/data/category.tpl -->>
|
|
5
5
|
<link itemprop="url" content="{config.relative_path}/topic/{./slug}" />
|
|
6
|
-
<meta itemprop="name" content="{
|
|
6
|
+
<meta itemprop="name" content="{./title}" />
|
|
7
7
|
<meta itemprop="itemListOrder" content="descending" />
|
|
8
8
|
<meta itemprop="position" content="{increment(./index, "1")}" />
|
|
9
9
|
<a id="{./index}" data-index="{./index}" component="topic/anchor"></a>
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<div class="d-flex p-0 col-12 col-lg-7 gap-2 gap-lg-3 pe-1 align-items-start {{{ if config.theme.mobileTopicTeasers }}}mb-2 mb-lg-0{{{ end }}}">
|
|
12
12
|
<div class="flex-shrink-0 position-relative">
|
|
13
13
|
<a class="d-inline-block text-decoration-none avatar-tooltip" title="{./user.displayname}" href="{{{ if ./user.userslug }}}{config.relative_path}/user/{./user.userslug}{{{ else }}}#{{{ end }}}">
|
|
14
|
-
{buildAvatar(./user, "40px", true)}
|
|
14
|
+
{{buildAvatar(./user, "40px", true)}}
|
|
15
15
|
</a>
|
|
16
16
|
{{{ if showSelect }}}
|
|
17
17
|
<div class="checkbox position-absolute top-100 start-50 translate-middle-x m-0 d-none d-lg-flex" style="max-width:max-content">
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
{{{each ./icons}}}<span class="lh-1">{@value}</span>{{{end}}}
|
|
52
52
|
|
|
53
53
|
{{{ if (!template.category || (cid != ./cid)) }}}
|
|
54
|
-
{buildCategoryLabel(./category, "a", "border")}
|
|
54
|
+
{{buildCategoryLabel(./category, "a", "border")}}
|
|
55
55
|
{{{ end }}}
|
|
56
56
|
|
|
57
57
|
<span data-tid="{./tid}" component="topic/tags" class="lh-1 tag-list d-flex flex-wrap gap-1 {{{ if !./tags.length }}}hidden{{{ end }}}">
|
|
@@ -114,12 +114,12 @@
|
|
|
114
114
|
{{{ else }}}
|
|
115
115
|
{{{ if ./teaser.pid }}}
|
|
116
116
|
<div class="ps-2">
|
|
117
|
-
<a href="{{{ if ./teaser.user.userslug }}}{config.relative_path}/user/{./teaser.user.userslug}{{{ else }}}#{{{ end }}}" class="text-decoration-none avatar-tooltip" title="{./teaser.user.displayname}">{buildAvatar(./teaser.user, "18px", true)}</a>
|
|
117
|
+
<a href="{{{ if ./teaser.user.userslug }}}{config.relative_path}/user/{./teaser.user.userslug}{{{ else }}}#{{{ end }}}" class="text-decoration-none avatar-tooltip" title="{./teaser.user.displayname}">{{buildAvatar(./teaser.user, "18px", true)}}</a>
|
|
118
118
|
<a class="permalink text-muted timeago text-xs" href="{config.relative_path}/topic/{./slug}/{./teaser.index}" title="{./teaser.timestampISO}" aria-label="[[global:lastpost]]"></a>
|
|
119
119
|
</div>
|
|
120
120
|
<div class="post-content text-xs ps-2 line-clamp-sm-2 lh-sm text-break position-relative flex-fill">
|
|
121
121
|
<a class="stretched-link" tabindex="-1" href="{config.relative_path}/topic/{./slug}/{./teaser.index}" aria-label="[[global:lastpost]]"></a>
|
|
122
|
-
{./teaser.content}
|
|
122
|
+
{{./teaser.content}}
|
|
123
123
|
</div>
|
|
124
124
|
{{{ end }}}
|
|
125
125
|
{{{ end }}}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<li class="users-box registered-user text-center pb-3" data-uid="{users.uid}" style="width: 102px;">
|
|
2
|
-
<a href="{config.relative_path}/user/{users.userslug}">{buildAvatar(users, "64px", true)}</a>
|
|
2
|
+
<a href="{config.relative_path}/user/{users.userslug}">{{buildAvatar(users, "64px", true)}}</a>
|
|
3
3
|
|
|
4
4
|
<div class="user-info">
|
|
5
5
|
<div class="text-nowrap text-truncate">
|
package/templates/topic.tpl
CHANGED
|
@@ -5,15 +5,7 @@
|
|
|
5
5
|
</div>
|
|
6
6
|
<div class="row mb-5">
|
|
7
7
|
<div class="topic {{{ if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}" itemid="{url}" itemscope itemtype="https://schema.org/DiscussionForumPosting">
|
|
8
|
-
|
|
9
|
-
<meta itemprop="text" content="{escape(titleRaw)}">
|
|
10
|
-
<meta itemprop="url" content="{url}">
|
|
11
|
-
<meta itemprop="datePublished" content="{timestampISO}">
|
|
12
|
-
<meta itemprop="dateModified" content="{lastposttimeISO}">
|
|
13
|
-
<div itemprop="author" itemscope itemtype="https://schema.org/Person">
|
|
14
|
-
<meta itemprop="name" content="{author.username}">
|
|
15
|
-
{{{ if author.userslug }}}<meta itemprop="url" content="{config.relative_path}/user/{author.userslug}">{{{ end }}}
|
|
16
|
-
</div>
|
|
8
|
+
<!-- IMPORT partials/topic/meta-tags.tpl -->
|
|
17
9
|
|
|
18
10
|
<div class="topic-header sticky-top mb-3 bg-body">
|
|
19
11
|
<div class="d-flex flex-wrap gap-3 border-bottom p-2">
|
|
@@ -40,7 +32,7 @@
|
|
|
40
32
|
</a>
|
|
41
33
|
{{{each icons}}}<span class="lh-1">{@value}</span>{{{end}}}
|
|
42
34
|
</span>
|
|
43
|
-
{buildCategoryLabel(category, "a", "border")}
|
|
35
|
+
{{buildCategoryLabel(category, "a", "border")}}
|
|
44
36
|
<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>
|
|
45
37
|
<div class="d-flex gap-2" component="topic/stats"><!-- IMPORT partials/topic/stats.tpl --></div>
|
|
46
38
|
{{{ if !feeds:disableRSS }}}
|
package/templates/world.tpl
CHANGED
|
@@ -13,12 +13,12 @@
|
|
|
13
13
|
|
|
14
14
|
<div class="category-header d-flex flex-column gap-2">
|
|
15
15
|
<div class="d-flex gap-2 align-items-center mb-1 {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}">
|
|
16
|
-
{buildCategoryIcon(@value, "40px", "rounded-1 flex-shrink-0")}
|
|
16
|
+
{{buildCategoryIcon(@value, "40px", "rounded-1 flex-shrink-0")}}
|
|
17
17
|
<h1 class="tracking-tight fs-2 fw-semibold mb-0 text-center">[[world:name]]</h1>
|
|
18
18
|
</div>
|
|
19
19
|
{{{ if ./descriptionParsed }}}
|
|
20
20
|
<p class="description text-secondary text-sm w-100 {{{ if config.theme.centerHeaderElements }}}text-center{{{ end }}}">
|
|
21
|
-
{./descriptionParsed}
|
|
21
|
+
{{./descriptionParsed}}
|
|
22
22
|
</p>
|
|
23
23
|
{{{ end }}}
|
|
24
24
|
</div>
|
|
@@ -39,14 +39,14 @@
|
|
|
39
39
|
{{{ each categories }}}
|
|
40
40
|
<li class="flex-grow-1 align-items-start d-flex gap-2 p-1 mb-2 position-relative">
|
|
41
41
|
<div>
|
|
42
|
-
{buildCategoryIcon(@value, "24px", "rounded-1")}
|
|
42
|
+
{{buildCategoryIcon(@value, "24px", "rounded-1")}}
|
|
43
43
|
</div>
|
|
44
44
|
<div class="d-grid gap-0">
|
|
45
45
|
<div class="title fw-semibold">
|
|
46
46
|
<a class="text-reset stretched-link" href="{{{ if ./link }}}{./link}{{{ else }}}{config.relative_path}/category/{./slug}{{{ end }}}" itemprop="url">{../name}</a>
|
|
47
47
|
</div>
|
|
48
48
|
{{{ if ./descriptionParsed }}}
|
|
49
|
-
<div class="description text-muted text-xs w-100 line-clamp-sm-5">{./descriptionParsed}</div>
|
|
49
|
+
<div class="description text-muted text-xs w-100 line-clamp-sm-5">{{./descriptionParsed}}</div>
|
|
50
50
|
{{{ end }}}
|
|
51
51
|
</div>
|
|
52
52
|
</li>
|
package/scss/groups.scss
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
.groups.details {
|
|
2
|
-
margin-top: 200px;
|
|
3
|
-
|
|
4
|
-
[component="groups/cover"] {
|
|
5
|
-
background-size: cover;
|
|
6
|
-
background-repeat: no-repeat;
|
|
7
|
-
background-origin: content-box;
|
|
8
|
-
|
|
9
|
-
min-height: 200px;
|
|
10
|
-
width: 100%;
|
|
11
|
-
margin-bottom: 1em;
|
|
12
|
-
padding-left: 0;
|
|
13
|
-
padding-right: 0;
|
|
14
|
-
|
|
15
|
-
position: absolute;
|
|
16
|
-
top: var(--panel-offset);
|
|
17
|
-
right: 0;
|
|
18
|
-
left: auto;
|
|
19
|
-
|
|
20
|
-
&:hover {
|
|
21
|
-
.controls {
|
|
22
|
-
opacity: 0.8;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
.controls {
|
|
27
|
-
text-align: center;
|
|
28
|
-
min-height: 200px;
|
|
29
|
-
line-height: 200px;
|
|
30
|
-
opacity: 0;
|
|
31
|
-
@include transition(opacity .15s linear);
|
|
32
|
-
cursor: pointer;
|
|
33
|
-
pointer-events: none;
|
|
34
|
-
|
|
35
|
-
> * {
|
|
36
|
-
pointer-events: all;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
.fa {
|
|
40
|
-
color: white;
|
|
41
|
-
background-color: #333;
|
|
42
|
-
opacity: 1;
|
|
43
|
-
margin: 15px;
|
|
44
|
-
padding: 5px;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
&.active {
|
|
49
|
-
&:hover {
|
|
50
|
-
cursor: move;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
.controls {
|
|
54
|
-
> * {
|
|
55
|
-
display: none;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
.save {
|
|
60
|
-
display: inline-block;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
&.saving {
|
|
65
|
-
.save {
|
|
66
|
-
display: none;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
.indicator {
|
|
70
|
-
display: inline-block;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
.save, .indicator {
|
|
75
|
-
display: inline-block;
|
|
76
|
-
position: absolute;
|
|
77
|
-
top: 1em;
|
|
78
|
-
right: 2em;
|
|
79
|
-
opacity: 1;
|
|
80
|
-
background-color: $primary;
|
|
81
|
-
color: $gray-200;
|
|
82
|
-
padding: 0.5em;
|
|
83
|
-
font-weight: bold;
|
|
84
|
-
|
|
85
|
-
&:hover {
|
|
86
|
-
cursor: pointer;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
.save {
|
|
91
|
-
display: none;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
.indicator {
|
|
95
|
-
display: none;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
@include media-breakpoint-up(md) {
|
|
100
|
-
margin-top: 300px;
|
|
101
|
-
|
|
102
|
-
[component="groups/cover"] {
|
|
103
|
-
min-height: 300px;
|
|
104
|
-
|
|
105
|
-
.controls {
|
|
106
|
-
min-height: 300px;
|
|
107
|
-
line-height: 300px;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|