nodebb-theme-harmony 0.0.1 → 0.0.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/languages/en-GB/harmony.json +5 -0
- package/library.js +101 -26
- package/package.json +5 -2
- package/plugin.json +14 -2
- package/public/harmony.js +101 -0
- package/scss/account.scss +38 -0
- package/scss/chats.scss +72 -0
- package/scss/common.scss +65 -0
- package/scss/fonts.scss +17 -0
- package/scss/groups.scss +30 -0
- package/scss/harmony.scss +23 -3
- package/scss/header.scss +16 -0
- package/scss/mixins.scss +183 -0
- package/scss/modals.scss +4 -0
- package/scss/modules/bottom-sheet.scss +52 -0
- package/scss/modules/breadcrumbs.scss +16 -0
- package/scss/modules/composer.scss +21 -0
- package/scss/modules/cover.scss +115 -0
- package/scss/modules/tags.scss +6 -0
- package/scss/modules/topic-navigator.scss +61 -0
- package/scss/modules/topics-list.scss +20 -0
- package/scss/modules/user-menu.scss +5 -0
- package/scss/overrides.scss +65 -0
- package/scss/sidebar.scss +125 -0
- package/scss/skins.scss +13 -0
- package/scss/status.scss +25 -0
- package/scss/topic.scss +128 -0
- package/templates/account/best.tpl +0 -2
- package/templates/account/blocks.tpl +31 -26
- package/templates/account/bookmarks.tpl +0 -2
- package/templates/account/categories.tpl +1 -3
- package/templates/account/controversial.tpl +0 -2
- package/templates/account/downvoted.tpl +0 -2
- package/templates/account/followers.tpl +14 -10
- package/templates/account/following.tpl +14 -10
- package/templates/account/groups.tpl +13 -11
- package/templates/account/ignored.tpl +0 -2
- package/templates/account/posts.tpl +29 -10
- package/templates/account/profile.tpl +76 -159
- package/templates/account/topics.tpl +32 -21
- package/templates/account/uploads.tpl +38 -35
- package/templates/account/upvoted.tpl +0 -2
- package/templates/account/watched.tpl +0 -2
- package/templates/admin/plugins/harmony.tpl +17 -0
- package/templates/categories.tpl +5 -5
- package/templates/category.tpl +26 -26
- package/templates/chat.tpl +9 -9
- package/templates/chats.tpl +5 -7
- package/templates/footer.tpl +11 -7
- package/templates/groups/details.tpl +76 -62
- package/templates/groups/list.tpl +16 -11
- package/templates/header.tpl +34 -21
- package/templates/login.tpl +51 -45
- package/templates/partials/account/admin-menu.tpl +36 -0
- package/templates/partials/account/category-item.tpl +17 -17
- package/templates/partials/account/header.tpl +77 -35
- package/templates/partials/account/sidebar-left.tpl +82 -0
- package/templates/partials/breadcrumbs.tpl +4 -12
- package/templates/partials/categories/item.tpl +48 -44
- package/templates/partials/categories/lastpost.tpl +17 -19
- package/templates/partials/categories/link.tpl +5 -13
- package/templates/partials/category/sort.tpl +4 -7
- package/templates/partials/category/subcategory.tpl +4 -4
- package/templates/partials/category/tools.tpl +6 -9
- package/templates/partials/category/watch.tpl +7 -11
- package/templates/partials/category-filter-content.tpl +5 -6
- package/templates/partials/category-filter.tpl +0 -2
- package/templates/partials/category-selector-content.tpl +4 -5
- package/templates/partials/category-selector.tpl +0 -2
- package/templates/partials/chats/dropdown.tpl +24 -32
- package/templates/partials/chats/message-window.tpl +7 -7
- package/templates/partials/chats/message.tpl +34 -34
- package/templates/partials/chats/recent_room.tpl +16 -29
- package/templates/partials/chats/system-message.tpl +4 -4
- package/templates/partials/chats/user.tpl +1 -3
- package/templates/partials/groups/admin.tpl +82 -175
- package/templates/partials/groups/badge.tpl +1 -3
- package/templates/partials/groups/invited.tpl +31 -0
- package/templates/partials/groups/list.tpl +14 -21
- package/templates/partials/groups/memberlist.tpl +28 -24
- package/templates/partials/groups/pending.tpl +28 -0
- package/templates/partials/groups/sidebar-left.tpl +27 -0
- package/templates/partials/mobile-footer.tpl +70 -0
- package/templates/partials/notifications_list.tpl +19 -27
- package/templates/partials/paginator.tpl +22 -24
- package/templates/partials/post_bar.tpl +23 -18
- package/templates/partials/posts_list.tpl +0 -2
- package/templates/partials/posts_list_item.tpl +14 -29
- package/templates/partials/quick-search-results.tpl +36 -25
- package/templates/partials/search-results.tpl +4 -1
- package/templates/partials/sidebar/chats.tpl +53 -0
- package/templates/partials/sidebar/drafts.tpl +41 -0
- package/templates/partials/sidebar/logged-out-menu.tpl +38 -0
- package/templates/partials/sidebar/notifications.tpl +28 -0
- package/templates/partials/sidebar/search-mobile.tpl +29 -0
- package/templates/partials/sidebar/search.tpl +30 -0
- package/templates/partials/sidebar/user-menu.tpl +87 -0
- package/templates/partials/sidebar-left.tpl +40 -0
- package/templates/partials/sidebar-right.tpl +41 -0
- package/templates/partials/skin-switcher.tpl +35 -0
- package/templates/partials/tags_list.tpl +0 -2
- package/templates/partials/toast.tpl +6 -8
- package/templates/partials/topic/event.tpl +4 -20
- package/templates/partials/topic/navigator.tpl +20 -41
- package/templates/partials/topic/necro-post.tpl +5 -4
- package/templates/partials/topic/post-menu.tpl +23 -2
- package/templates/partials/topic/post-placeholder.tpl +15 -0
- package/templates/partials/topic/post.tpl +67 -64
- package/templates/partials/topic/quickreply.tpl +12 -14
- package/templates/partials/topic/reactions.tpl +0 -2
- package/templates/partials/topic/reply-button.tpl +16 -20
- package/templates/partials/topic/selection-tooltip.tpl +0 -2
- package/templates/partials/topic/sort.tpl +8 -6
- package/templates/partials/topic/stats.tpl +15 -14
- package/templates/partials/topic/tag.tpl +1 -3
- package/templates/partials/topic/tags.tpl +1 -5
- package/templates/partials/topic/tools.tpl +13 -0
- package/templates/partials/topic/watch.tpl +15 -13
- package/templates/partials/topic-filters.tpl +4 -5
- package/templates/partials/topic-list-bar.tpl +54 -0
- package/templates/partials/topic-terms.tpl +4 -5
- package/templates/partials/topics_list.tpl +109 -100
- package/templates/partials/users/item.tpl +7 -0
- package/templates/partials/users_list.tpl +11 -60
- package/templates/partials/users_list_menu.tpl +10 -18
- package/templates/popular.tpl +1 -18
- package/templates/recent.tpl +8 -24
- package/templates/register.tpl +74 -60
- package/templates/tag.tpl +3 -15
- package/templates/tags.tpl +3 -4
- package/templates/top.tpl +1 -18
- package/templates/topic.tpl +39 -43
- package/templates/unread.tpl +1 -22
- package/templates/users.tpl +17 -17
- package/templates/admin/plugins/persona.tpl +0 -29
- package/templates/partials/account/menu.tpl +0 -103
- package/templates/partials/header/user-menu.tpl +0 -87
- package/templates/partials/menu.tpl +0 -188
- package/templates/partials/thread_tools.tpl +0 -10
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
<div class="col-12 col-md-3 col-lg-2 border-end-md text-sm mb-3">
|
|
2
|
+
<div class="sticky-top d-flex flex-row flex-md-column flex-wrap gap-1" style="z-index: 1;">
|
|
3
|
+
<a href="{config.relative_path}/user/{userslug}" class="btn-ghost fw-semibold {{{ if template.account/profile }}}active{{{ end }}}">
|
|
4
|
+
<div class="flex-1">[[global:about]]</div>
|
|
5
|
+
</a>
|
|
6
|
+
<a href="{config.relative_path}/user/{userslug}/posts"class="btn-ghost fw-semibold
|
|
7
|
+
{{{ if template.account/posts }}}active{{{ end }}}
|
|
8
|
+
{{{ if template.account/best }}}active{{{ end }}}
|
|
9
|
+
{{{ if template.account/controversial }}}active{{{ end }}}
|
|
10
|
+
{{{ if template.account/upvoted }}}active{{{ end }}}
|
|
11
|
+
{{{ if template.account/downvoted }}}active{{{ end }}}
|
|
12
|
+
{{{ if template.account/bookmarks }}}active{{{ end }}}">
|
|
13
|
+
<div class="flex-1">[[global:posts]]</div>
|
|
14
|
+
<span class="text-xs human-readable-number" title="{counts.posts}">{counts.posts}</span>
|
|
15
|
+
</a>
|
|
16
|
+
<a href="{config.relative_path}/user/{userslug}/topics" class="btn-ghost fw-semibold
|
|
17
|
+
{{{ if template.account/topics }}}active{{{ end }}}
|
|
18
|
+
{{{ if template.account/watched }}}active{{{ end }}}
|
|
19
|
+
{{{ if template.account/ignored }}}active{{{ end }}}">
|
|
20
|
+
<div class="flex-1">[[global:topics]]</div>
|
|
21
|
+
<span class="text-xs human-readable-number" title="{counts.topics}">{counts.topics}</span>
|
|
22
|
+
</a>
|
|
23
|
+
<a href="{config.relative_path}/user/{userslug}/groups" class="btn-ghost fw-semibold">
|
|
24
|
+
<div class="flex-1">[[global:header.groups]]</div>
|
|
25
|
+
<span class="text-xs human-readable-number" title="{counts.groups}">{counts.groups}</span>
|
|
26
|
+
</a>
|
|
27
|
+
|
|
28
|
+
<a href="{config.relative_path}/user/{userslug}/followers" class="btn-ghost fw-semibold">
|
|
29
|
+
<div class="flex-1">[[user:followers]]</div>
|
|
30
|
+
<span class="text-xs human-readable-number" title="{counts.followers}">{counts.followers}</span>
|
|
31
|
+
</a>
|
|
32
|
+
|
|
33
|
+
<a href="{config.relative_path}/user/{userslug}/following" class="btn-ghost fw-semibold">
|
|
34
|
+
<div class="flex-1">[[user:following]]</div>
|
|
35
|
+
<span class="text-xs human-readable-number" title="{counts.following}">{counts.following}</span>
|
|
36
|
+
</a>
|
|
37
|
+
|
|
38
|
+
{{{ if canEdit }}}
|
|
39
|
+
<a href="{config.relative_path}/user/{userslug}/blocks" class="btn-ghost fw-semibold">
|
|
40
|
+
<div class="flex-1">[[user:blocked-users]]</div>
|
|
41
|
+
<span class="text-xs human-readable-number" title="{counts.blocks}">{counts.blocks}</span>
|
|
42
|
+
</a>
|
|
43
|
+
|
|
44
|
+
<a href="{config.relative_path}/user/{userslug}/uploads" class="btn-ghost fw-semibold">
|
|
45
|
+
<div class="flex-1">[[global:uploads]]</div>
|
|
46
|
+
<span class="text-xs human-readable-number" title="{counts.uploaded}">{counts.uploaded}</span>
|
|
47
|
+
</a>
|
|
48
|
+
{{{ end }}}
|
|
49
|
+
|
|
50
|
+
<hr/>
|
|
51
|
+
{{{ if (loggedIn && (!isSelf && !banned)) }}}
|
|
52
|
+
<a href="#" component="account/flag" class="btn-ghost-sm">
|
|
53
|
+
<i class="fa-solid fa-flag text-danger"></i>
|
|
54
|
+
<div class="flex-1 text-nowrap">[[user:flag-profile]]</div>
|
|
55
|
+
</a>
|
|
56
|
+
<a href="#" component="account/block" class="btn-ghost-sm {{{ if isBlocked }}}hidden{{{ end }}}">
|
|
57
|
+
<i class="fa-solid fa-ban text-danger"></i>
|
|
58
|
+
<div class="flex-1 text-nowrap">[[user:block_user]]</div>
|
|
59
|
+
</a>
|
|
60
|
+
<a href="#" component="account/unblock" class="btn-ghost-sm {{{ if !isBlocked }}}hidden{{{ end }}}">
|
|
61
|
+
<i class="fa-solid fa-ban text-danger"></i>
|
|
62
|
+
<div class="flex-1 text-nowrap">[[user:unblock_user]]</div>
|
|
63
|
+
</a>
|
|
64
|
+
<hr/>
|
|
65
|
+
{{{ end }}}
|
|
66
|
+
|
|
67
|
+
{{{ if canEdit }}}
|
|
68
|
+
<a href="{config.relative_path}/user/{userslug}/edit" class="btn-ghost-sm text-xs">
|
|
69
|
+
<div class="flex-1">[[user:edit-profile]]</div>
|
|
70
|
+
</a>
|
|
71
|
+
<a href="{config.relative_path}/user/{userslug}/settings" class="btn-ghost-sm text-xs">
|
|
72
|
+
<div class="flex-1">[[user:settings]]</div>
|
|
73
|
+
</a>
|
|
74
|
+
{{{ end }}}
|
|
75
|
+
|
|
76
|
+
{{{ each profile_links }}}
|
|
77
|
+
<a href="{config.relative_path}/user/{userslug}/{./route}" class="btn-ghost-sm text-xs plugin-link {{{ if ./public }}}public{{{ else }}}private{{{ end }}}" id="{./id}">
|
|
78
|
+
<div class="flex-1">{./name}</div>
|
|
79
|
+
</a>
|
|
80
|
+
{{{end}}}
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
@@ -1,20 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
<!-- IF breadcrumbs.length -->
|
|
4
|
-
<ol class="breadcrumb" itemscope="itemscope" itemprop="breadcrumb" itemtype="http://schema.org/BreadcrumbList">
|
|
1
|
+
{{{ if breadcrumbs.length }}}
|
|
2
|
+
<ol class="breadcrumb mb-0 {{{ if config.centerHeaderElements }}}justify-content-center{{{ end }}}" itemscope="itemscope" itemprop="breadcrumb" itemtype="http://schema.org/BreadcrumbList">
|
|
5
3
|
{{{each breadcrumbs}}}
|
|
6
4
|
<li<!-- IF @last --> component="breadcrumb/current"<!-- ENDIF @last --> itemscope="itemscope" itemprop="itemListElement" itemtype="http://schema.org/ListItem" class="breadcrumb-item <!-- IF @last -->active<!-- ENDIF @last -->">
|
|
7
5
|
<meta itemprop="position" content="{@index}" />
|
|
8
6
|
{{{ if ./url }}}<a href="{breadcrumbs.url}" itemprop="item">{{{ end }}}
|
|
9
|
-
<span itemprop="name">
|
|
10
|
-
{breadcrumbs.text}
|
|
11
|
-
<!-- IF @last -->
|
|
12
|
-
<!-- IF !feeds:disableRSS -->
|
|
13
|
-
<!-- IF rssFeedUrl --><a target="_blank" href="{rssFeedUrl}" itemprop="item"><i class="fa fa-rss-square"></i></a><!-- ENDIF rssFeedUrl --><!-- ENDIF !feeds:disableRSS -->
|
|
14
|
-
<!-- ENDIF @last -->
|
|
15
|
-
</span>
|
|
7
|
+
<span class="fw-semibold" itemprop="name">{breadcrumbs.text}</span>
|
|
16
8
|
{{{ if ./url }}}</a>{{{ end }}}
|
|
17
9
|
</li>
|
|
18
10
|
{{{end}}}
|
|
19
11
|
</ol>
|
|
20
|
-
|
|
12
|
+
{{{ end }}}
|
|
@@ -1,62 +1,66 @@
|
|
|
1
|
-
|
|
1
|
+
<li component="categories/category" data-cid="{./cid}" class="row clearfix category-{./cid}">
|
|
2
|
+
<meta itemprop="name" content="{./name}">
|
|
2
3
|
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
<div class="content col-12 <!-- IF config.hideCategoryLastPost -->col-md-10 col-sm-12<!-- ELSE -->col-md-7 col-sm-9<!-- ENDIF config.hideCategoryLastPost -->">
|
|
7
|
-
<div class="float-start">
|
|
8
|
-
{buildCategoryIcon(@value, "48px", "rounded-circle")}
|
|
4
|
+
<div class="d-flex gap-3 col-12 {{{ if config.hideCategoryLastPost }}}col-md-10 col-sm-12{{{ else }}}col-md-7 col-sm-9{{{ end }}}">
|
|
5
|
+
<div class="">
|
|
6
|
+
{buildCategoryIcon(@value, "40px", "rounded-1")}
|
|
9
7
|
</div>
|
|
10
|
-
<
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
<div class="description text-muted">
|
|
16
|
-
{
|
|
8
|
+
<div class="d-flex flex-column gap-1">
|
|
9
|
+
<h2 class="title fw-bold fs-4">
|
|
10
|
+
<!-- IMPORT partials/categories/link.tpl -->
|
|
11
|
+
</h2>
|
|
12
|
+
{{{ if ./descriptionParsed }}}
|
|
13
|
+
<div class="description text-muted small">
|
|
14
|
+
{./descriptionParsed}
|
|
17
15
|
</div>
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
{{{ if
|
|
21
|
-
<div class="category-children">
|
|
22
|
-
{{{ each
|
|
23
|
-
{{{ if
|
|
24
|
-
<span class="category-children-item">
|
|
25
|
-
{
|
|
26
|
-
{
|
|
27
|
-
<a href="{../link}">{../name}</a>
|
|
16
|
+
{{{ end }}}
|
|
17
|
+
{{{ if !config.hideSubCategories }}}
|
|
18
|
+
{{{ if ./children.length }}}
|
|
19
|
+
<div class="category-children d-flex gap-3">
|
|
20
|
+
{{{ each ./children }}}
|
|
21
|
+
{{{ if !./isSection }}}
|
|
22
|
+
<span class="category-children-item small">
|
|
23
|
+
{{{ if ./link }}}
|
|
24
|
+
<a href="{./link}">{./name}</a>
|
|
28
25
|
{{{ else }}}
|
|
29
|
-
<a href="{config.relative_path}/category/{
|
|
26
|
+
<a href="{config.relative_path}/category/{./slug}">{./name}</a>
|
|
30
27
|
{{{ end }}}
|
|
31
28
|
</span>
|
|
32
29
|
{{{ end }}}
|
|
33
30
|
{{{ end }}}
|
|
34
31
|
</div>
|
|
35
32
|
{{{ end }}}
|
|
36
|
-
|
|
33
|
+
{{{ end }}}
|
|
34
|
+
<span class="d-block d-sm-none">
|
|
35
|
+
{{{ if ./teaser.timestampISO }}}
|
|
36
|
+
<a class="permalink" href="{./teaser.url}">
|
|
37
|
+
<small class="timeago" title="{./teaser.timestampISO}"></small>
|
|
38
|
+
</a>
|
|
39
|
+
{{{ end }}}
|
|
40
|
+
</span>
|
|
37
41
|
</div>
|
|
38
|
-
<span class="d-block d-sm-none float-end">
|
|
39
|
-
<!-- IF ../teaser.timestampISO -->
|
|
40
|
-
<a class="permalink" href="{../teaser.url}">
|
|
41
|
-
<small class="timeago" title="{../teaser.timestampISO}"></small>
|
|
42
|
-
</a>
|
|
43
|
-
<!-- ENDIF ../teaser.timestampISO -->
|
|
44
|
-
</span>
|
|
45
42
|
</div>
|
|
46
43
|
|
|
47
|
-
|
|
48
|
-
<div class="col-md-
|
|
49
|
-
<
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
44
|
+
{{{ if !./link }}}
|
|
45
|
+
<div class="col-md-2 d-none d-md-flex stats text-muted gap-2 px-0">
|
|
46
|
+
<div class="w-50">
|
|
47
|
+
<div class="card card-header align-items-center px-0 py-2 border-0 rounded-1">
|
|
48
|
+
<span class="{./unread-class} human-readable-number fs-5 fw-semibold ff-secondary" title="{./totalTopicCount}">{./totalTopicCount}</span>
|
|
49
|
+
<span class="text-lowercase text-xs">[[global:topics]]</span>
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
<div class="w-50">
|
|
53
|
+
<div class="card card-header align-items-center px-0 py-2 border-0 rounded-1">
|
|
54
|
+
<span class="{./unread-class} human-readable-number fs-5 fw-semibold ff-secondary" title="{./totalPostCount}">{./totalPostCount}</span>
|
|
55
|
+
<span class="text-lowercase text-xs">[[global:posts]]</span>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
55
58
|
</div>
|
|
56
|
-
|
|
59
|
+
|
|
60
|
+
{{{ if !config.hideCategoryLastPost }}}
|
|
57
61
|
<div class="col-md-3 col-sm-3 teaser d-none d-sm-block" component="topic/teaser">
|
|
58
62
|
<!-- IMPORT partials/categories/lastpost.tpl -->
|
|
59
63
|
</div>
|
|
60
|
-
|
|
61
|
-
|
|
64
|
+
{{{ end }}}
|
|
65
|
+
{{{ end }}}
|
|
62
66
|
</li>
|
|
@@ -1,28 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
<a class="permalink text-muted" href="{config.relative_path}/topic/{../topic.slug}<!-- IF ../index -->/{../index}<!-- ENDIF ../index -->">
|
|
11
|
-
<small class="timeago" title="{../timestampISO}"></small>
|
|
1
|
+
<div class="lastpost background-link-container border-start border-2 h-100" style="border-color: {./bgColor}!important;">
|
|
2
|
+
{{{ each ./posts }}}
|
|
3
|
+
{{{ if @first }}}
|
|
4
|
+
<div component="category/posts" class="ps-3">
|
|
5
|
+
<a class="background-link" href="{config.relative_path}/topic/{./topic.slug}{{{ if ./index }}}/{./index}{{{ end }}}"></a>
|
|
6
|
+
<p class="mb-0">
|
|
7
|
+
<a href="{config.relative_path}/user/{./user.userslug}">{buildAvatar(posts.user, "20px", true)}</a>
|
|
8
|
+
<a class="permalink text-muted" href="{config.relative_path}/topic/{./topic.slug}{{{ if ./index }}}/{./index}{{{ end }}}">
|
|
9
|
+
<span class="timeago text-xs" title="{../timestampISO}"></span>
|
|
12
10
|
</a>
|
|
13
11
|
</p>
|
|
14
|
-
<div class="post-content">
|
|
15
|
-
{
|
|
12
|
+
<div class="post-content mt-2 overflow-hidden text-xs line-clamp-3">
|
|
13
|
+
{./content}
|
|
16
14
|
</div>
|
|
17
15
|
</div>
|
|
18
|
-
|
|
19
|
-
{{{end}}}
|
|
16
|
+
{{{ end }}}
|
|
17
|
+
{{{ end }}}
|
|
20
18
|
|
|
21
|
-
|
|
22
|
-
<div component="category/posts">
|
|
23
|
-
<div class="post-content">
|
|
19
|
+
{{{ if !./posts.length }}}
|
|
20
|
+
<div component="category/posts" class="ps-3">
|
|
21
|
+
<div class="post-content overflow-hidden text-xs">
|
|
24
22
|
[[category:no_new_posts]]
|
|
25
23
|
</div>
|
|
26
24
|
</div>
|
|
27
|
-
|
|
25
|
+
{{{ end }}}
|
|
28
26
|
</div>
|
|
@@ -1,13 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
{../name}
|
|
5
|
-
|
|
6
|
-
<!-- IF ../link -->
|
|
7
|
-
<a href="{../link}" itemprop="url">
|
|
8
|
-
<!-- ELSE -->
|
|
9
|
-
<a href="{config.relative_path}/category/{../slug}" itemprop="url">
|
|
10
|
-
<!-- ENDIF ../link -->
|
|
11
|
-
{../name}
|
|
12
|
-
</a>
|
|
13
|
-
<!-- ENDIF ../isSection -->
|
|
1
|
+
{{{ if ./isSection }}}
|
|
2
|
+
{./name}
|
|
3
|
+
{{{ else }}}
|
|
4
|
+
<a class="text-reset" href="{{{ if ./link }}}{./link}{{{ else }}}{config.relative_path}/category/{./slug}{{{ end }}}" itemprop="url">{../name}</a>
|
|
5
|
+
{{{ end }}}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
-
|
|
3
1
|
<div class="btn-group bottom-sheet" component="thread/sort">
|
|
4
|
-
<button class="btn btn-
|
|
5
|
-
<
|
|
6
|
-
<span class="visible-
|
|
7
|
-
<span class="caret"></span>
|
|
2
|
+
<button class="btn btn-link d-flex gap-2 align-items-baseline dropdown-toggle" data-bs-toggle="dropdown" type="button">
|
|
3
|
+
<i class="fa fa-fw fa-arrow-down-wide-short small link-primary"></i>
|
|
4
|
+
<span class="visible-md-inline visible-lg-inline small">[[topic:sort_by]]</span>
|
|
8
5
|
</button>
|
|
9
6
|
|
|
10
|
-
<ul class="dropdown-menu
|
|
7
|
+
<ul class="dropdown-menu">
|
|
11
8
|
<li><a class="dropdown-item" href="#" class="newest_to_oldest" data-sort="newest_to_oldest"><i class="fa fa-fw"></i> [[topic:newest_to_oldest]]</a></li>
|
|
12
9
|
<li><a class="dropdown-item" href="#" class="oldest_to_newest" data-sort="oldest_to_newest"><i class="fa fa-fw"></i> [[topic:oldest_to_newest]]</a></li>
|
|
13
10
|
<li><a class="dropdown-item" href="#" class="most_posts" data-sort="most_posts"><i class="fa fa-fw"></i> [[topic:most_posts]]</a></li>
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
-
|
|
3
1
|
{{{ if children.length }}}
|
|
4
2
|
<div class="subcategory">
|
|
5
3
|
{{{ if hasMoreSubCategories }}}
|
|
6
4
|
<div class="mb-2"><!-- IMPORT partials/category-selector.tpl --></div>
|
|
7
5
|
{{{ else }}}
|
|
8
|
-
<
|
|
6
|
+
<h3 class="fs-6 fw-semibold">[[category:subcategories]]</h3>
|
|
9
7
|
{{{ end }}}
|
|
10
8
|
|
|
11
9
|
<ul component="category/subcategory/container" class="categories list-unstyled" itemscope itemtype="http://www.schema.org/ItemList">
|
|
10
|
+
<hr class="text-muted"/>
|
|
12
11
|
{{{each children}}}
|
|
13
12
|
<!-- IMPORT partials/categories/item.tpl -->
|
|
13
|
+
<hr class="text-muted"/>
|
|
14
14
|
{{{end}}}
|
|
15
15
|
</ul>
|
|
16
16
|
{{{ if hasMoreSubCategories}}}
|
|
17
|
-
<button class="btn btn-
|
|
17
|
+
<button class="btn btn-link mb-2" component="category/load-more-subcategories">[[category:x-more-categories, {subCategoriesLeft}]]</button>
|
|
18
18
|
{{{ end }}}
|
|
19
19
|
</div>
|
|
20
20
|
{{{ end }}}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
<!-- IF showTopicTools -->
|
|
1
|
+
{{{ if showTopicTools }}}
|
|
4
2
|
<div class="btn-group thread-tools bottom-sheet">
|
|
5
|
-
<button class="btn btn-
|
|
6
|
-
<
|
|
7
|
-
<span class="visible-
|
|
8
|
-
<span class="caret"></span>
|
|
3
|
+
<button class="btn btn-link d-flex gap-2 align-items-baseline dropdown-toggle" data-bs-toggle="dropdown" type="button">
|
|
4
|
+
<i class="fa fa-fw fa-gear small link-primary"></i>
|
|
5
|
+
<span class="visible-md-inline visible-lg-inline small">[[topic:thread_tools.title]]</span>
|
|
9
6
|
</button>
|
|
10
|
-
<ul class="dropdown-menu
|
|
7
|
+
<ul class="dropdown-menu">
|
|
11
8
|
<li>
|
|
12
9
|
<a component="topic/mark-unread-for-all" href="#" class="dropdown-item">
|
|
13
10
|
<i class="fa fa-fw fa-inbox"></i> [[topic:thread_tools.markAsUnreadForAll]]
|
|
@@ -80,4 +77,4 @@
|
|
|
80
77
|
{{{end}}}
|
|
81
78
|
</ul>
|
|
82
79
|
</div>
|
|
83
|
-
|
|
80
|
+
{{{ end }}}
|
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
<!-- IF config.loggedIn -->
|
|
1
|
+
{{{ if config.loggedIn }}}
|
|
4
2
|
<div class="btn-group topic-watch-dropdown bottom-sheet" component="topic/watch">
|
|
3
|
+
<button class="btn btn-link d-flex gap-2 align-items-baseline dropdown-toggle" data-bs-toggle="dropdown" type="button">
|
|
4
|
+
<span component="category/watching/menu" <!-- IF !../isWatched -->class="hidden"<!-- ENDIF !../isWatched -->><i class="fa fa-fw fa-inbox small link-primary"></i><span class="visible-md-inline visible-lg-inline small"> [[category:watching]]</span></span>
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
<span component="category/watching/menu" <!-- IF !../isWatched -->class="hidden"<!-- ENDIF !../isWatched -->><i class="fa fa-fw fa-inbox"></i><span class="visible-sm-inline visible-md-inline visible-lg-inline"> [[category:watching]]</span></span>
|
|
8
|
-
|
|
9
|
-
<span component="category/notwatching/menu" <!-- IF !../isNotWatched -->class="hidden"<!-- ENDIF !../isNotWatched -->><i class="fa fa-fw fa-clock-o"></i><span class="visible-sm-inline visible-md-inline visible-lg-inline"> [[category:not-watching]]</span></span>
|
|
6
|
+
<span component="category/notwatching/menu" <!-- IF !../isNotWatched -->class="hidden"<!-- ENDIF !../isNotWatched -->><i class="fa fa-fw fa-clock-o small link-primary"></i><span class="visible-md-inline visible-lg-inline small"> [[category:not-watching]]</span></span>
|
|
10
7
|
|
|
11
|
-
<span component="category/ignoring/menu" <!-- IF !../isIgnored -->class="hidden"<!-- ENDIF !../isIgnored -->><i class="fa fa-fw fa-eye-slash"></i><span class="visible-
|
|
12
|
-
<span class="caret"></span>
|
|
8
|
+
<span component="category/ignoring/menu" <!-- IF !../isIgnored -->class="hidden"<!-- ENDIF !../isIgnored -->><i class="fa fa-fw fa-eye-slash small link-primary"></i><span class="visible-md-inline visible-lg-inline small"> [[category:ignoring]]</span></span>
|
|
13
9
|
</button>
|
|
14
10
|
|
|
15
|
-
<ul class="dropdown-menu
|
|
11
|
+
<ul class="dropdown-menu">
|
|
16
12
|
<li><a class="dropdown-item" href="#" component="category/watching" data-state="watching"><i component="category/watching/check" class="fa fa-fw <!-- IF ../isWatched -->fa-check<!-- ENDIF ../isWatched -->"></i><i class="fa fa-fw fa-inbox"></i> [[category:watching]]<p class="help-text"><small>[[category:watching.description]]</small></p></a></li>
|
|
17
13
|
|
|
18
14
|
<li><a class="dropdown-item" href="#" component="category/notwatching" data-state="notwatching"><i component="category/notwatching/check" class="fa fa-fw <!-- IF ../isNotWatched -->fa-check<!-- ENDIF ../isNotWatched -->"></i><i class="fa fa-fw fa-clock-o"></i> [[category:not-watching]]<p class="help-text"><small>[[category:not-watching.description]]</small></p></a></li>
|
|
@@ -20,4 +16,4 @@
|
|
|
20
16
|
<li><a class="dropdown-item" href="#" component="category/ignoring" data-state="ignoring"><i component="category/ignoring/check" class="fa fa-fw <!-- IF ../isIgnored -->fa-check<!-- ENDIF ../isIgnored -->"></i><i class="fa fa-fw fa-eye-slash"></i> [[category:ignoring]]<p class="help-text"><small>[[category:ignoring.description]]</small></p></a></li>
|
|
21
17
|
</ul>
|
|
22
18
|
</div>
|
|
23
|
-
|
|
19
|
+
{{{ end }}}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
<button type="button" class="btn btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown">
|
|
1
|
+
<button type="button" class="btn btn-link d-flex gap-2 align-items-baseline dropdown-toggle" data-bs-toggle="dropdown">
|
|
4
2
|
{{{ if selectedCategory }}}
|
|
5
3
|
<span class="category-item">
|
|
6
|
-
{buildCategoryIcon(selectedCategory, "
|
|
7
|
-
<span class="visible-
|
|
4
|
+
{buildCategoryIcon(selectedCategory, "20px", "rounded-circle")}
|
|
5
|
+
<span class="visible-md-inline visible-lg-inline small">{selectedCategory.name}</span>
|
|
8
6
|
</span>
|
|
9
7
|
{{{ else }}}
|
|
10
|
-
<
|
|
8
|
+
<i class="fa fa-fw fa-list small link-primary"></i>
|
|
9
|
+
<span class="visible-md-inline visible-lg-inline small">[[unread:all_categories]]</span>{{{ end }}}
|
|
11
10
|
</button>
|
|
12
11
|
<div component="category-selector-search" class="hidden position-absolute">
|
|
13
12
|
<input type="text" class="form-control" autocomplete="off">
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
<button type="button" class="btn btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown">
|
|
1
|
+
<button type="button" class="btn btn-link d-flex gap-2 align-items-baseline dropdown-toggle" data-bs-toggle="dropdown">
|
|
4
2
|
<span component="category-selector-selected">
|
|
5
3
|
{{{ if (selectedCategory && !showCategorySelectLabel) }}}
|
|
6
4
|
<span class="category-item">
|
|
@@ -8,8 +6,9 @@
|
|
|
8
6
|
{selectedCategory.name}
|
|
9
7
|
</span>
|
|
10
8
|
{{{ else }}}
|
|
11
|
-
<
|
|
12
|
-
{{{ end }}}</span>
|
|
9
|
+
<i class="fa fa-fw {{{ if selectCategoryIcon }}}{selectCategoryIcon}{{{ else }}}fa-list{{{ end }}} link-primary small"></i>
|
|
10
|
+
<span class="visible-md-inline visible-lg-inline small">{{{ if selectCategoryLabel }}}{selectCategoryLabel}{{{ else }}}[[topic:thread_tools.select_category]]{{{ end }}}</span>
|
|
11
|
+
{{{ end }}}</span>
|
|
13
12
|
</button>
|
|
14
13
|
<div component="category-selector-search" class="hidden position-absolute">
|
|
15
14
|
<input type="text" class="form-control" autocomplete="off">
|
|
@@ -1,40 +1,32 @@
|
|
|
1
|
-
|
|
1
|
+
{{{ if !rooms.length }}}
|
|
2
|
+
<li class="text-center"><a href="#" class="text-reset">[[modules:chat.no_active]]</a></li>
|
|
3
|
+
{{{ end }}}
|
|
2
4
|
|
|
3
|
-
|
|
4
|
-
{{{
|
|
5
|
-
<li class="<!-- IF ../unread -->unread<!-- ENDIF ../unread -->" data-roomid="{rooms.roomId}">
|
|
6
|
-
{{{each rooms.users}}}
|
|
7
|
-
<!-- IF @first -->
|
|
5
|
+
{{{ each rooms }}}
|
|
6
|
+
<li class="{{{ if ./unread }}}unread{{{ end }}} dropdown-item rounded-1 p-2 d-flex gap-2 pointer" data-roomid="{./roomId}">
|
|
8
7
|
<div class="main-avatar">
|
|
8
|
+
{{{ each ./users}}}
|
|
9
|
+
{{{ if @first }}}
|
|
9
10
|
<!-- IMPORT partials/chats/user.tpl -->
|
|
11
|
+
{{{ end }}}
|
|
12
|
+
{{{ end }}}
|
|
13
|
+
{{{ if !./users.length}}}
|
|
14
|
+
<span class="avatar avatar-rounded text-bg-warning" component="avatar/icon" style="--avatar-size: 32px;">?</span>
|
|
15
|
+
{{{ end }}}
|
|
10
16
|
</div>
|
|
11
|
-
<!-- ENDIF @first -->
|
|
12
|
-
{{{end}}}
|
|
13
17
|
|
|
14
|
-
<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
<!-- IMPORT partials/chats/user.tpl -->
|
|
18
|
-
</li>
|
|
19
|
-
{{{end}}}
|
|
20
|
-
</ul>
|
|
21
|
-
|
|
22
|
-
<div class="notification-chat-content">
|
|
23
|
-
<strong class="room-name">
|
|
24
|
-
<!-- IF !rooms.lastUser.uid -->
|
|
18
|
+
<div class="notification-chat-content d-flex flex-grow-1 flex-column w-100">
|
|
19
|
+
<div class="room-name fw-semibold text-xs">
|
|
20
|
+
{{{ if !./lastUser.uid }}}
|
|
25
21
|
<span>[[modules:chat.no-users-in-room]]</span>
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
</
|
|
30
|
-
<
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
</
|
|
22
|
+
{{{ else }}}
|
|
23
|
+
{./lastUser.username}
|
|
24
|
+
{{{ end }}}
|
|
25
|
+
</div>
|
|
26
|
+
<div class="teaser-content text-sm line-clamp-3">
|
|
27
|
+
{./teaser.content}
|
|
28
|
+
</div>
|
|
29
|
+
<div class="teaser-timestamp notification-chat-controls text-muted text-xs">{./teaser.timeagoLong}</div>
|
|
34
30
|
</div>
|
|
35
|
-
<div class="teaser-timestamp notification-chat-controls">{rooms.teaser.timeago}</div>
|
|
36
31
|
</li>
|
|
37
|
-
{{{end}}}
|
|
38
|
-
<!-- ELSE -->
|
|
39
|
-
<li class="no_active"><a href="#">[[modules:chat.no_active]]</a></li>
|
|
40
|
-
<!-- ENDIF rooms.length -->
|
|
32
|
+
{{{ end }}}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
-
|
|
3
1
|
<!-- IF roomId -->
|
|
4
|
-
<div component="chat/messages" class="expanded-chat" data-roomid="{roomId}">
|
|
2
|
+
<div component="chat/messages" class="expanded-chat d-flex flex-column h-100" data-roomid="{roomId}">
|
|
5
3
|
<div component="chat/header" class="d-flex align-items-center px-3">
|
|
6
4
|
<span class="members flex-grow-1">
|
|
7
5
|
[[modules:chat.chatting_with]]:
|
|
@@ -17,13 +15,15 @@
|
|
|
17
15
|
<div class="position-relative">
|
|
18
16
|
<div component="chat/messages/scroll-up-alert" class="position-absolute scroll-up-alert alert alert-info hidden w-100" role="button" style="z-index: 1;">[[modules:chat.scroll-up-alert]]</div>
|
|
19
17
|
</div>
|
|
20
|
-
<ul class="chat-content">
|
|
18
|
+
<ul class="chat-content p-0 m-0 list-unstyled overflow-auto flex-grow-1">
|
|
21
19
|
<!-- IMPORT partials/chats/messages.tpl -->
|
|
22
20
|
</ul>
|
|
23
|
-
<div component="chat/composer">
|
|
24
|
-
<
|
|
21
|
+
<div component="chat/composer" class="d-flex">
|
|
22
|
+
<div class="flex-grow-1 position-relative">
|
|
23
|
+
<textarea component="chat/input" placeholder="[[modules:chat.placeholder]]" class="form-control chat-input mousetrap" rows="2" style="resize:none;"></textarea>
|
|
24
|
+
<span component="chat/message/remaining" class="text-muted position-absolute me-1 mb-1" style="right: 0px; bottom:0px;">{maximumChatMessageLength}</span>
|
|
25
|
+
</div>
|
|
25
26
|
<button class="btn btn-primary" type="button" data-action="send"><i class="fa fa-fw fa-2x fa-paper-plane"></i></button>
|
|
26
|
-
<span component="chat/message/remaining">{maximumChatMessageLength}</span>
|
|
27
27
|
<form component="chat/upload" method="post" enctype="multipart/form-data">
|
|
28
28
|
<input type="file" name="files[]" multiple class="hidden"/>
|
|
29
29
|
</form>
|