nodebb-theme-harmony 2.0.1 → 2.0.3
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/.eslintrc +3 -3
- package/README.md +22 -22
- package/lib/controllers.js +29 -29
- package/library.js +183 -183
- package/package.json +48 -48
- package/plugin.json +24 -24
- package/public/.eslintrc +3 -3
- package/public/admin.js +15 -15
- package/public/harmony.js +287 -287
- package/public/settings.js +31 -31
- package/renovate.json +6 -6
- package/scss/account.scss +27 -27
- package/scss/category.scss +3 -3
- package/scss/chats.scss +11 -11
- package/scss/common.scss +122 -122
- package/scss/fonts.scss +19 -19
- package/scss/groups.scss +22 -22
- package/scss/harmony.scss +24 -24
- package/scss/header.scss +15 -15
- package/scss/mixins.scss +183 -183
- package/scss/modals.scss +6 -6
- package/scss/modules/breadcrumbs.scss +15 -15
- package/scss/modules/cover.scss +102 -102
- package/scss/modules/filters.scss +7 -7
- package/scss/modules/nprogress.scss +80 -80
- package/scss/modules/paginator.scss +23 -23
- package/scss/modules/tags.scss +5 -5
- package/scss/modules/topic-navigator.scss +52 -52
- package/scss/modules/topics-list.scss +40 -40
- package/scss/modules/user-menu.scss +10 -10
- package/scss/overrides.scss +65 -65
- package/scss/sidebar.scss +188 -188
- package/scss/skins.scss +58 -58
- package/scss/status.scss +24 -24
- package/scss/topic.scss +130 -130
- package/templates/account/blocks.tpl +51 -51
- package/templates/account/categories.tpl +63 -63
- package/templates/account/consent.tpl +73 -73
- package/templates/account/edit/password.tpl +34 -34
- package/templates/account/edit/username.tpl +29 -29
- package/templates/account/edit.tpl +137 -137
- package/templates/account/followers.tpl +14 -14
- package/templates/account/following.tpl +15 -15
- package/templates/account/groups.tpl +15 -15
- package/templates/account/info.tpl +270 -270
- package/templates/account/posts.tpl +35 -35
- package/templates/account/profile.tpl +92 -92
- package/templates/account/sessions.tpl +8 -8
- package/templates/account/settings.tpl +236 -236
- package/templates/account/shares.tpl +19 -19
- package/templates/account/tags.tpl +12 -12
- package/templates/account/theme.tpl +63 -63
- package/templates/account/topics.tpl +44 -44
- package/templates/account/uploads.tpl +37 -37
- package/templates/admin/plugins/harmony.tpl +57 -57
- package/templates/categories.tpl +29 -29
- package/templates/category.tpl +72 -72
- package/templates/footer.tpl +17 -17
- package/templates/groups/details.tpl +86 -86
- package/templates/groups/list.tpl +58 -58
- package/templates/groups/members.tpl +9 -9
- package/templates/header.tpl +45 -45
- package/templates/notifications.tpl +32 -32
- package/templates/partials/account/admin-menu.tpl +36 -36
- package/templates/partials/account/category-item.tpl +22 -22
- package/templates/partials/account/footer.tpl +2 -2
- package/templates/partials/account/header.tpl +98 -98
- package/templates/partials/account/session-list.tpl +18 -18
- package/templates/partials/account/sidebar-left.tpl +116 -116
- package/templates/partials/breadcrumbs-json-ld.tpl +15 -15
- package/templates/partials/breadcrumbs.tpl +12 -12
- package/templates/partials/buttons/newTopic.tpl +22 -22
- package/templates/partials/categories/item.tpl +56 -56
- package/templates/partials/categories/lastpost.tpl +24 -24
- package/templates/partials/categories/link.tpl +4 -4
- package/templates/partials/category/subcategory.tpl +18 -18
- package/templates/partials/category/tags.tpl +3 -3
- package/templates/partials/cookie-consent.tpl +6 -6
- package/templates/partials/groups/admin.tpl +95 -95
- package/templates/partials/groups/invited.tpl +32 -32
- package/templates/partials/groups/list.tpl +15 -15
- package/templates/partials/groups/memberlist.tpl +46 -46
- package/templates/partials/groups/pending.tpl +29 -29
- package/templates/partials/groups/sidebar-left.tpl +27 -27
- package/templates/partials/header/brand.tpl +27 -27
- package/templates/partials/mobile-footer.tpl +95 -95
- package/templates/partials/notifications_list.tpl +44 -44
- package/templates/partials/paginator.tpl +46 -46
- package/templates/partials/post_bar.tpl +27 -27
- package/templates/partials/posts_list.tpl +7 -7
- package/templates/partials/posts_list_item.tpl +19 -19
- package/templates/partials/quick-search-results.tpl +46 -46
- package/templates/partials/search-filters.tpl +183 -183
- package/templates/partials/search-results.tpl +54 -54
- package/templates/partials/sidebar/chats.tpl +45 -45
- package/templates/partials/sidebar/drafts.tpl +63 -63
- package/templates/partials/sidebar/logged-in-menu.tpl +22 -22
- package/templates/partials/sidebar/logged-out-menu.tpl +44 -44
- package/templates/partials/sidebar/notifications.tpl +49 -49
- package/templates/partials/sidebar/search-mobile.tpl +28 -28
- package/templates/partials/sidebar/search.tpl +30 -30
- package/templates/partials/sidebar/user-menu.tpl +103 -103
- package/templates/partials/sidebar-left.tpl +39 -39
- package/templates/partials/sidebar-right.tpl +16 -16
- package/templates/partials/skin-switcher.tpl +50 -50
- package/templates/partials/tags_list.tpl +7 -7
- package/templates/partials/toast.tpl +19 -19
- package/templates/partials/topic/event.tpl +12 -12
- package/templates/partials/topic/navigation-post.tpl +9 -9
- package/templates/partials/topic/navigator-mobile.tpl +61 -61
- package/templates/partials/topic/navigator.tpl +26 -26
- package/templates/partials/topic/necro-post.tpl +5 -5
- package/templates/partials/topic/post-menu-list.tpl +156 -156
- package/templates/partials/topic/post-menu.tpl +4 -4
- package/templates/partials/topic/post-placeholder.tpl +14 -14
- package/templates/partials/topic/post.tpl +146 -146
- package/templates/partials/topic/quickreply.tpl +28 -28
- package/templates/partials/topic/reply-button.tpl +26 -26
- package/templates/partials/topic/selection-tooltip.tpl +2 -2
- package/templates/partials/topic/sort.tpl +27 -27
- package/templates/partials/topic/stats.tpl +14 -14
- package/templates/partials/topic/thumbs.tpl +4 -4
- package/templates/partials/topic/tools.tpl +8 -8
- package/templates/partials/topic/topic-menu-list.tpl +73 -73
- package/templates/partials/topic/watch.tpl +59 -59
- package/templates/partials/topic-filters.tpl +15 -15
- package/templates/partials/topic-list-bar.tpl +54 -54
- package/templates/partials/topic-terms.tpl +15 -15
- package/templates/partials/topics_list.tpl +131 -131
- package/templates/partials/users/item.tpl +39 -39
- package/templates/partials/users_list.tpl +4 -4
- package/templates/partials/users_list_menu.tpl +14 -14
- package/templates/popular.tpl +34 -34
- package/templates/post-queue.tpl +211 -211
- package/templates/recent.tpl +42 -42
- package/templates/search.tpl +46 -46
- package/templates/tag.tpl +34 -34
- package/templates/tags.tpl +49 -49
- package/templates/top.tpl +34 -34
- package/templates/topic.tpl +123 -123
- package/templates/unread.tpl +31 -31
- package/templates/users.tpl +39 -39
- package/templates/world.tpl +66 -66
- package/theme.json +6 -6
package/templates/tag.tpl
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
{{{ if widgets.header.length }}}
|
|
2
|
-
<div data-widget-area="header">
|
|
3
|
-
{{{each widgets.header}}}
|
|
4
|
-
{{widgets.header.html}}
|
|
5
|
-
{{{end}}}
|
|
6
|
-
</div>
|
|
7
|
-
{{{ end }}}
|
|
8
|
-
<div class="row">
|
|
9
|
-
<div class="tag {{{if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
|
|
10
|
-
<!-- IMPORT partials/topic-list-bar.tpl -->
|
|
11
|
-
|
|
12
|
-
<div class="category">
|
|
13
|
-
{{{ if !topics.length }}}
|
|
14
|
-
<div class="alert alert-warning">[[tags:no-tag-topics]]</div>
|
|
15
|
-
{{{ end }}}
|
|
16
|
-
|
|
17
|
-
<!-- IMPORT partials/topics_list.tpl -->
|
|
18
|
-
<button id="load-more-btn" class="btn btn-primary hide">[[unread:load-more]]</button>
|
|
19
|
-
{{{ if config.usePagination }}}
|
|
20
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
21
|
-
{{{ end }}}
|
|
22
|
-
</div>
|
|
23
|
-
</div>
|
|
24
|
-
<div data-widget-area="sidebar" class="col-lg-3 col-sm-12 {{{ if !widgets.sidebar.length }}}hidden{{{ end }}}">
|
|
25
|
-
{{{ each widgets.sidebar }}}
|
|
26
|
-
{{widgets.sidebar.html}}
|
|
27
|
-
{{{ end }}}
|
|
28
|
-
</div>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
<div data-widget-area="footer">
|
|
32
|
-
{{{each widgets.footer}}}
|
|
33
|
-
{{widgets.footer.html}}
|
|
34
|
-
{{{end}}}
|
|
1
|
+
{{{ if widgets.header.length }}}
|
|
2
|
+
<div data-widget-area="header">
|
|
3
|
+
{{{each widgets.header}}}
|
|
4
|
+
{{widgets.header.html}}
|
|
5
|
+
{{{end}}}
|
|
6
|
+
</div>
|
|
7
|
+
{{{ end }}}
|
|
8
|
+
<div class="row">
|
|
9
|
+
<div class="tag {{{if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
|
|
10
|
+
<!-- IMPORT partials/topic-list-bar.tpl -->
|
|
11
|
+
|
|
12
|
+
<div class="category">
|
|
13
|
+
{{{ if !topics.length }}}
|
|
14
|
+
<div class="alert alert-warning">[[tags:no-tag-topics]]</div>
|
|
15
|
+
{{{ end }}}
|
|
16
|
+
|
|
17
|
+
<!-- IMPORT partials/topics_list.tpl -->
|
|
18
|
+
<button id="load-more-btn" class="btn btn-primary hide">[[unread:load-more]]</button>
|
|
19
|
+
{{{ if config.usePagination }}}
|
|
20
|
+
<!-- IMPORT partials/paginator.tpl -->
|
|
21
|
+
{{{ end }}}
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
<div data-widget-area="sidebar" class="col-lg-3 col-sm-12 {{{ if !widgets.sidebar.length }}}hidden{{{ end }}}">
|
|
25
|
+
{{{ each widgets.sidebar }}}
|
|
26
|
+
{{widgets.sidebar.html}}
|
|
27
|
+
{{{ end }}}
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<div data-widget-area="footer">
|
|
32
|
+
{{{each widgets.footer}}}
|
|
33
|
+
{{widgets.footer.html}}
|
|
34
|
+
{{{end}}}
|
|
35
35
|
</div>
|
package/templates/tags.tpl
CHANGED
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
<div data-widget-area="header">
|
|
2
|
-
{{{each widgets.header}}}
|
|
3
|
-
{{widgets.header.html}}
|
|
4
|
-
{{{end}}}
|
|
5
|
-
</div>
|
|
6
|
-
|
|
7
|
-
<div class="row">
|
|
8
|
-
<div class="tags {{{if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
|
|
9
|
-
<h3 class="fw-semibold">[[pages:tags]]</h3>
|
|
10
|
-
{{{ if displayTagSearch }}}
|
|
11
|
-
{{{ if tags.length }}}
|
|
12
|
-
<div class="row justify-content-end mb-3">
|
|
13
|
-
<div class="col-lg-6">
|
|
14
|
-
<div class="d-flex justify-content-end">
|
|
15
|
-
<div>
|
|
16
|
-
<div class="input-group">
|
|
17
|
-
<input type="text" class="form-control form-control-sm" placeholder="[[global:search]]" id="tag-search">
|
|
18
|
-
<button class="btn btn-primary btn-sm" type="button">
|
|
19
|
-
<i class="fa fa-search"></i>
|
|
20
|
-
</button>
|
|
21
|
-
</div>
|
|
22
|
-
</div>
|
|
23
|
-
</div>
|
|
24
|
-
</div>
|
|
25
|
-
</div>
|
|
26
|
-
{{{ end }}}
|
|
27
|
-
{{{ end }}}
|
|
28
|
-
<hr/>
|
|
29
|
-
{{{ if !tags.length }}}
|
|
30
|
-
<div class="alert alert-warning">[[tags:no-tags]]</div>
|
|
31
|
-
{{{ end }}}
|
|
32
|
-
|
|
33
|
-
<div class="category">
|
|
34
|
-
<div class="tag-list row row-cols-2 row-cols-lg-4 row-cols-xl-5 gx-3 gy-2" data-nextstart="{nextStart}">
|
|
35
|
-
<!-- IMPORT partials/tags_list.tpl -->
|
|
36
|
-
</div>
|
|
37
|
-
</div>
|
|
38
|
-
</div>
|
|
39
|
-
<div data-widget-area="sidebar" class="col-lg-3 col-sm-12 {{{ if !widgets.sidebar.length }}}hidden{{{ end }}}">
|
|
40
|
-
{{{ each widgets.sidebar }}}
|
|
41
|
-
{{widgets.sidebar.html}}
|
|
42
|
-
{{{ end }}}
|
|
43
|
-
</div>
|
|
44
|
-
</div>
|
|
45
|
-
|
|
46
|
-
<div data-widget-area="footer">
|
|
47
|
-
{{{each widgets.footer}}}
|
|
48
|
-
{{widgets.footer.html}}
|
|
49
|
-
{{{end}}}
|
|
1
|
+
<div data-widget-area="header">
|
|
2
|
+
{{{each widgets.header}}}
|
|
3
|
+
{{widgets.header.html}}
|
|
4
|
+
{{{end}}}
|
|
5
|
+
</div>
|
|
6
|
+
|
|
7
|
+
<div class="row">
|
|
8
|
+
<div class="tags {{{if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
|
|
9
|
+
<h3 class="fw-semibold">[[pages:tags]]</h3>
|
|
10
|
+
{{{ if displayTagSearch }}}
|
|
11
|
+
{{{ if tags.length }}}
|
|
12
|
+
<div class="row justify-content-end mb-3">
|
|
13
|
+
<div class="col-lg-6">
|
|
14
|
+
<div class="d-flex justify-content-end">
|
|
15
|
+
<div>
|
|
16
|
+
<div class="input-group">
|
|
17
|
+
<input type="text" class="form-control form-control-sm" placeholder="[[global:search]]" id="tag-search">
|
|
18
|
+
<button class="btn btn-primary btn-sm" type="button">
|
|
19
|
+
<i class="fa fa-search"></i>
|
|
20
|
+
</button>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
{{{ end }}}
|
|
27
|
+
{{{ end }}}
|
|
28
|
+
<hr/>
|
|
29
|
+
{{{ if !tags.length }}}
|
|
30
|
+
<div class="alert alert-warning">[[tags:no-tags]]</div>
|
|
31
|
+
{{{ end }}}
|
|
32
|
+
|
|
33
|
+
<div class="category">
|
|
34
|
+
<div class="tag-list row row-cols-2 row-cols-lg-4 row-cols-xl-5 gx-3 gy-2" data-nextstart="{nextStart}">
|
|
35
|
+
<!-- IMPORT partials/tags_list.tpl -->
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
<div data-widget-area="sidebar" class="col-lg-3 col-sm-12 {{{ if !widgets.sidebar.length }}}hidden{{{ end }}}">
|
|
40
|
+
{{{ each widgets.sidebar }}}
|
|
41
|
+
{{widgets.sidebar.html}}
|
|
42
|
+
{{{ end }}}
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<div data-widget-area="footer">
|
|
47
|
+
{{{each widgets.footer}}}
|
|
48
|
+
{{widgets.footer.html}}
|
|
49
|
+
{{{end}}}
|
|
50
50
|
</div>
|
package/templates/top.tpl
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
{{{ if widgets.header.length }}}
|
|
2
|
-
<div data-widget-area="header">
|
|
3
|
-
{{{each widgets.header}}}
|
|
4
|
-
{{widgets.header.html}}
|
|
5
|
-
{{{end}}}
|
|
6
|
-
</div>
|
|
7
|
-
{{{ end }}}
|
|
8
|
-
|
|
9
|
-
<div class="row">
|
|
10
|
-
<div class="top {{{if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
|
|
11
|
-
<!-- IMPORT partials/topic-list-bar.tpl -->
|
|
12
|
-
<div class="category">
|
|
13
|
-
{{{ if !topics.length }}}
|
|
14
|
-
<div class="alert alert-info" id="category-no-topics">[[top:no-top-topics]]</div>
|
|
15
|
-
{{{ end }}}
|
|
16
|
-
|
|
17
|
-
<!-- IMPORT partials/topics_list.tpl -->
|
|
18
|
-
|
|
19
|
-
{{{ if config.usePagination }}}
|
|
20
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
21
|
-
{{{ end }}}
|
|
22
|
-
</div>
|
|
23
|
-
</div>
|
|
24
|
-
<div data-widget-area="sidebar" class="col-lg-3 col-sm-12 {{{ if !widgets.sidebar.length }}}hidden{{{ end }}}">
|
|
25
|
-
{{{ each widgets.sidebar }}}
|
|
26
|
-
{{widgets.sidebar.html}}
|
|
27
|
-
{{{ end }}}
|
|
28
|
-
</div>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
<div data-widget-area="footer">
|
|
32
|
-
{{{each widgets.footer}}}
|
|
33
|
-
{{widgets.footer.html}}
|
|
34
|
-
{{{end}}}
|
|
1
|
+
{{{ if widgets.header.length }}}
|
|
2
|
+
<div data-widget-area="header">
|
|
3
|
+
{{{each widgets.header}}}
|
|
4
|
+
{{widgets.header.html}}
|
|
5
|
+
{{{end}}}
|
|
6
|
+
</div>
|
|
7
|
+
{{{ end }}}
|
|
8
|
+
|
|
9
|
+
<div class="row">
|
|
10
|
+
<div class="top {{{if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
|
|
11
|
+
<!-- IMPORT partials/topic-list-bar.tpl -->
|
|
12
|
+
<div class="category">
|
|
13
|
+
{{{ if !topics.length }}}
|
|
14
|
+
<div class="alert alert-info" id="category-no-topics">[[top:no-top-topics]]</div>
|
|
15
|
+
{{{ end }}}
|
|
16
|
+
|
|
17
|
+
<!-- IMPORT partials/topics_list.tpl -->
|
|
18
|
+
|
|
19
|
+
{{{ if config.usePagination }}}
|
|
20
|
+
<!-- IMPORT partials/paginator.tpl -->
|
|
21
|
+
{{{ end }}}
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
<div data-widget-area="sidebar" class="col-lg-3 col-sm-12 {{{ if !widgets.sidebar.length }}}hidden{{{ end }}}">
|
|
25
|
+
{{{ each widgets.sidebar }}}
|
|
26
|
+
{{widgets.sidebar.html}}
|
|
27
|
+
{{{ end }}}
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<div data-widget-area="footer">
|
|
32
|
+
{{{each widgets.footer}}}
|
|
33
|
+
{{widgets.footer.html}}
|
|
34
|
+
{{{end}}}
|
|
35
35
|
</div>
|
package/templates/topic.tpl
CHANGED
|
@@ -1,123 +1,123 @@
|
|
|
1
|
-
<!-- IMPORT partials/breadcrumbs-json-ld.tpl -->
|
|
2
|
-
{{{ if config.theme.enableBreadcrumbs }}}
|
|
3
|
-
<!-- IMPORT partials/breadcrumbs.tpl -->
|
|
4
|
-
{{{ end }}}
|
|
5
|
-
{{{ if widgets.header.length }}}
|
|
6
|
-
<div data-widget-area="header">
|
|
7
|
-
{{{each widgets.header}}}
|
|
8
|
-
{{widgets.header.html}}
|
|
9
|
-
{{{end}}}
|
|
10
|
-
</div>
|
|
11
|
-
{{{ end }}}
|
|
12
|
-
|
|
13
|
-
<div itemid="{url}" itemscope itemtype="https://schema.org/DiscussionForumPosting">
|
|
14
|
-
<meta itemprop="headline" content="{escape(titleRaw)}">
|
|
15
|
-
<meta itemprop="text" content="{escape(titleRaw)}">
|
|
16
|
-
<meta itemprop="url" content="{url}">
|
|
17
|
-
<meta itemprop="datePublished" content="{timestampISO}">
|
|
18
|
-
<meta itemprop="dateModified" content="{lastposttimeISO}">
|
|
19
|
-
<div itemprop="author" itemscope itemtype="https://schema.org/Person">
|
|
20
|
-
<meta itemprop="name" content="{author.username}">
|
|
21
|
-
{{{ if author.userslug }}}<meta itemprop="url" content="{config.relative_path}/user/{author.userslug}">{{{ end }}}
|
|
22
|
-
</div>
|
|
23
|
-
|
|
24
|
-
<div class="d-flex flex-column gap-3">
|
|
25
|
-
<div class="d-flex flex-wrap">
|
|
26
|
-
<div class="d-flex flex-column gap-3 flex-grow-1">
|
|
27
|
-
<h1 component="post/header" class="tracking-tight fw-semibold fs-3 mb-0 text-break {{{ if config.theme.centerHeaderElements }}}text-center{{{ end }}}">
|
|
28
|
-
<span class="topic-title" component="topic/title">{title}</span>
|
|
29
|
-
</h1>
|
|
30
|
-
|
|
31
|
-
<div class="topic-info d-flex gap-2 align-items-center flex-wrap {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}">
|
|
32
|
-
<span component="topic/labels" class="d-flex gap-2 {{{ if (!scheduled && (!pinned && (!locked && (!oldCid && !icons.length)))) }}}hidden{{{ end }}}">
|
|
33
|
-
<span component="topic/scheduled" class="badge badge border border-gray-300 text-body {{{ if !scheduled }}}hidden{{{ end }}}">
|
|
34
|
-
<i class="fa fa-clock-o"></i> [[topic:scheduled]]
|
|
35
|
-
</span>
|
|
36
|
-
<span component="topic/pinned" class="badge badge border border-gray-300 text-body {{{ if (scheduled || !pinned) }}}hidden{{{ end }}}">
|
|
37
|
-
<i class="fa fa-thumb-tack"></i> {{{ if !pinExpiry }}}[[topic:pinned]]{{{ else }}}[[topic:pinned-with-expiry, {isoTimeToLocaleString(./pinExpiryISO, config.userLang)}]]{{{ end }}}
|
|
38
|
-
</span>
|
|
39
|
-
<span component="topic/locked" class="badge badge border border-gray-300 text-body {{{ if !locked }}}hidden{{{ end }}}">
|
|
40
|
-
<i class="fa fa-lock"></i> [[topic:locked]]
|
|
41
|
-
</span>
|
|
42
|
-
<a component="topic/moved" href="{config.relative_path}/category/{oldCid}" class="badge badge border border-gray-300 text-body text-decoration-none {{{ if (!oldCid || (oldCid == "-1")) }}}hidden{{{ end }}}">
|
|
43
|
-
<i class="fa fa-arrow-circle-right"></i> {{{ if privileges.isAdminOrMod }}}[[topic:moved-from, {oldCategory.name}]]{{{ else }}}[[topic:moved]]{{{ end }}}
|
|
44
|
-
</a>
|
|
45
|
-
{{{each icons}}}<span class="lh-1">{@value}</span>{{{end}}}
|
|
46
|
-
</span>
|
|
47
|
-
{function.buildCategoryLabel, category, "a", "border"}
|
|
48
|
-
<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"><!-- IMPORT partials/topic/stats.tpl --></div>
|
|
50
|
-
</div>
|
|
51
|
-
</div>
|
|
52
|
-
<div class="d-flex gap-2 align-items-center mt-2 hidden-empty" component="topic/thumb/list"><!-- IMPORT partials/topic/thumbs.tpl --></div>
|
|
53
|
-
</div>
|
|
54
|
-
|
|
55
|
-
<div class="row mb-4 mb-lg-0">
|
|
56
|
-
<div class="topic {{{ if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
|
|
57
|
-
<!-- IMPORT partials/post_bar.tpl -->
|
|
58
|
-
{{{ if merger }}}
|
|
59
|
-
<!-- IMPORT partials/topic/merged-message.tpl -->
|
|
60
|
-
{{{ end }}}
|
|
61
|
-
{{{ if forker }}}
|
|
62
|
-
<!-- IMPORT partials/topic/forked-message.tpl -->
|
|
63
|
-
{{{ end }}}
|
|
64
|
-
{{{ if !scheduled }}}
|
|
65
|
-
<!-- IMPORT partials/topic/deleted-message.tpl -->
|
|
66
|
-
{{{ end }}}
|
|
67
|
-
|
|
68
|
-
<div class="d-flex gap-0 gap-lg-5">
|
|
69
|
-
<div class="posts-container" style="min-width: 0;">
|
|
70
|
-
<ul component="topic" class="posts timeline list-unstyled mt-sm-2 p-0 py-3" style="min-width: 0;" data-tid="{tid}" data-cid="{cid}">
|
|
71
|
-
{{{ each posts }}}
|
|
72
|
-
<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 -->>
|
|
73
|
-
<a component="post/anchor" data-index="{./index}" id="{increment(./index, "1")}"></a>
|
|
74
|
-
<meta itemprop="datePublished" content="{./timestampISO}">
|
|
75
|
-
{{{ if ./editedISO }}}
|
|
76
|
-
<meta itemprop="dateModified" content="{./editedISO}">
|
|
77
|
-
{{{ end }}}
|
|
78
|
-
|
|
79
|
-
<!-- IMPORT partials/topic/post.tpl -->
|
|
80
|
-
</li>
|
|
81
|
-
{{{ if (config.topicPostSort != "most_votes") }}}
|
|
82
|
-
{{{ each ./events}}}<!-- IMPORT partials/topic/event.tpl -->{{{ end }}}
|
|
83
|
-
{{{ end }}}
|
|
84
|
-
{{{ end }}}
|
|
85
|
-
</ul>
|
|
86
|
-
{{{ if browsingUsers }}}
|
|
87
|
-
<div class="visible-xs">
|
|
88
|
-
<!-- IMPORT partials/topic/browsing-users.tpl -->
|
|
89
|
-
<hr/>
|
|
90
|
-
</div>
|
|
91
|
-
{{{ end }}}
|
|
92
|
-
{{{ if config.theme.enableQuickReply }}}
|
|
93
|
-
<!-- IMPORT partials/topic/quickreply.tpl -->
|
|
94
|
-
{{{ end }}}
|
|
95
|
-
</div>
|
|
96
|
-
|
|
97
|
-
<!-- IMPORT partials/topic/navigator.tpl -->
|
|
98
|
-
</div>
|
|
99
|
-
|
|
100
|
-
{{{ if config.usePagination }}}
|
|
101
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
102
|
-
{{{ end }}}
|
|
103
|
-
</div>
|
|
104
|
-
<div data-widget-area="sidebar" class="col-lg-3 col-sm-12 {{{ if !widgets.sidebar.length }}}hidden{{{ end }}}">
|
|
105
|
-
{{{each widgets.sidebar}}}
|
|
106
|
-
{{widgets.sidebar.html}}
|
|
107
|
-
{{{end}}}
|
|
108
|
-
</div>
|
|
109
|
-
</div>
|
|
110
|
-
</div>
|
|
111
|
-
</div>
|
|
112
|
-
|
|
113
|
-
<div data-widget-area="footer">
|
|
114
|
-
{{{each widgets.footer}}}
|
|
115
|
-
{{widgets.footer.html}}
|
|
116
|
-
{{{end}}}
|
|
117
|
-
</div>
|
|
118
|
-
|
|
119
|
-
{{{ if !config.usePagination }}}
|
|
120
|
-
<noscript>
|
|
121
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
122
|
-
</noscript>
|
|
123
|
-
{{{ end }}}
|
|
1
|
+
<!-- IMPORT partials/breadcrumbs-json-ld.tpl -->
|
|
2
|
+
{{{ if config.theme.enableBreadcrumbs }}}
|
|
3
|
+
<!-- IMPORT partials/breadcrumbs.tpl -->
|
|
4
|
+
{{{ end }}}
|
|
5
|
+
{{{ if widgets.header.length }}}
|
|
6
|
+
<div data-widget-area="header">
|
|
7
|
+
{{{each widgets.header}}}
|
|
8
|
+
{{widgets.header.html}}
|
|
9
|
+
{{{end}}}
|
|
10
|
+
</div>
|
|
11
|
+
{{{ end }}}
|
|
12
|
+
|
|
13
|
+
<div itemid="{url}" itemscope itemtype="https://schema.org/DiscussionForumPosting">
|
|
14
|
+
<meta itemprop="headline" content="{escape(titleRaw)}">
|
|
15
|
+
<meta itemprop="text" content="{escape(titleRaw)}">
|
|
16
|
+
<meta itemprop="url" content="{url}">
|
|
17
|
+
<meta itemprop="datePublished" content="{timestampISO}">
|
|
18
|
+
<meta itemprop="dateModified" content="{lastposttimeISO}">
|
|
19
|
+
<div itemprop="author" itemscope itemtype="https://schema.org/Person">
|
|
20
|
+
<meta itemprop="name" content="{author.username}">
|
|
21
|
+
{{{ if author.userslug }}}<meta itemprop="url" content="{config.relative_path}/user/{author.userslug}">{{{ end }}}
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
|
+
<div class="d-flex flex-column gap-3">
|
|
25
|
+
<div class="d-flex flex-wrap">
|
|
26
|
+
<div class="d-flex flex-column gap-3 flex-grow-1">
|
|
27
|
+
<h1 component="post/header" class="tracking-tight fw-semibold fs-3 mb-0 text-break {{{ if config.theme.centerHeaderElements }}}text-center{{{ end }}}">
|
|
28
|
+
<span class="topic-title" component="topic/title">{title}</span>
|
|
29
|
+
</h1>
|
|
30
|
+
|
|
31
|
+
<div class="topic-info d-flex gap-2 align-items-center flex-wrap {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}">
|
|
32
|
+
<span component="topic/labels" class="d-flex gap-2 {{{ if (!scheduled && (!pinned && (!locked && (!oldCid && !icons.length)))) }}}hidden{{{ end }}}">
|
|
33
|
+
<span component="topic/scheduled" class="badge badge border border-gray-300 text-body {{{ if !scheduled }}}hidden{{{ end }}}">
|
|
34
|
+
<i class="fa fa-clock-o"></i> [[topic:scheduled]]
|
|
35
|
+
</span>
|
|
36
|
+
<span component="topic/pinned" class="badge badge border border-gray-300 text-body {{{ if (scheduled || !pinned) }}}hidden{{{ end }}}">
|
|
37
|
+
<i class="fa fa-thumb-tack"></i> {{{ if !pinExpiry }}}[[topic:pinned]]{{{ else }}}[[topic:pinned-with-expiry, {isoTimeToLocaleString(./pinExpiryISO, config.userLang)}]]{{{ end }}}
|
|
38
|
+
</span>
|
|
39
|
+
<span component="topic/locked" class="badge badge border border-gray-300 text-body {{{ if !locked }}}hidden{{{ end }}}">
|
|
40
|
+
<i class="fa fa-lock"></i> [[topic:locked]]
|
|
41
|
+
</span>
|
|
42
|
+
<a component="topic/moved" href="{config.relative_path}/category/{oldCid}" class="badge badge border border-gray-300 text-body text-decoration-none {{{ if (!oldCid || (oldCid == "-1")) }}}hidden{{{ end }}}">
|
|
43
|
+
<i class="fa fa-arrow-circle-right"></i> {{{ if privileges.isAdminOrMod }}}[[topic:moved-from, {oldCategory.name}]]{{{ else }}}[[topic:moved]]{{{ end }}}
|
|
44
|
+
</a>
|
|
45
|
+
{{{each icons}}}<span class="lh-1">{@value}</span>{{{end}}}
|
|
46
|
+
</span>
|
|
47
|
+
{function.buildCategoryLabel, category, "a", "border"}
|
|
48
|
+
<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"><!-- IMPORT partials/topic/stats.tpl --></div>
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
<div class="d-flex gap-2 align-items-center mt-2 hidden-empty" component="topic/thumb/list"><!-- IMPORT partials/topic/thumbs.tpl --></div>
|
|
53
|
+
</div>
|
|
54
|
+
|
|
55
|
+
<div class="row mb-4 mb-lg-0">
|
|
56
|
+
<div class="topic {{{ if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
|
|
57
|
+
<!-- IMPORT partials/post_bar.tpl -->
|
|
58
|
+
{{{ if merger }}}
|
|
59
|
+
<!-- IMPORT partials/topic/merged-message.tpl -->
|
|
60
|
+
{{{ end }}}
|
|
61
|
+
{{{ if forker }}}
|
|
62
|
+
<!-- IMPORT partials/topic/forked-message.tpl -->
|
|
63
|
+
{{{ end }}}
|
|
64
|
+
{{{ if !scheduled }}}
|
|
65
|
+
<!-- IMPORT partials/topic/deleted-message.tpl -->
|
|
66
|
+
{{{ end }}}
|
|
67
|
+
|
|
68
|
+
<div class="d-flex gap-0 gap-lg-5">
|
|
69
|
+
<div class="posts-container" style="min-width: 0;">
|
|
70
|
+
<ul component="topic" class="posts timeline list-unstyled mt-sm-2 p-0 py-3" style="min-width: 0;" data-tid="{tid}" data-cid="{cid}">
|
|
71
|
+
{{{ each posts }}}
|
|
72
|
+
<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 -->>
|
|
73
|
+
<a component="post/anchor" data-index="{./index}" id="{increment(./index, "1")}"></a>
|
|
74
|
+
<meta itemprop="datePublished" content="{./timestampISO}">
|
|
75
|
+
{{{ if ./editedISO }}}
|
|
76
|
+
<meta itemprop="dateModified" content="{./editedISO}">
|
|
77
|
+
{{{ end }}}
|
|
78
|
+
|
|
79
|
+
<!-- IMPORT partials/topic/post.tpl -->
|
|
80
|
+
</li>
|
|
81
|
+
{{{ if (config.topicPostSort != "most_votes") }}}
|
|
82
|
+
{{{ each ./events}}}<!-- IMPORT partials/topic/event.tpl -->{{{ end }}}
|
|
83
|
+
{{{ end }}}
|
|
84
|
+
{{{ end }}}
|
|
85
|
+
</ul>
|
|
86
|
+
{{{ if browsingUsers }}}
|
|
87
|
+
<div class="visible-xs">
|
|
88
|
+
<!-- IMPORT partials/topic/browsing-users.tpl -->
|
|
89
|
+
<hr/>
|
|
90
|
+
</div>
|
|
91
|
+
{{{ end }}}
|
|
92
|
+
{{{ if config.theme.enableQuickReply }}}
|
|
93
|
+
<!-- IMPORT partials/topic/quickreply.tpl -->
|
|
94
|
+
{{{ end }}}
|
|
95
|
+
</div>
|
|
96
|
+
|
|
97
|
+
<!-- IMPORT partials/topic/navigator.tpl -->
|
|
98
|
+
</div>
|
|
99
|
+
|
|
100
|
+
{{{ if config.usePagination }}}
|
|
101
|
+
<!-- IMPORT partials/paginator.tpl -->
|
|
102
|
+
{{{ end }}}
|
|
103
|
+
</div>
|
|
104
|
+
<div data-widget-area="sidebar" class="col-lg-3 col-sm-12 {{{ if !widgets.sidebar.length }}}hidden{{{ end }}}">
|
|
105
|
+
{{{each widgets.sidebar}}}
|
|
106
|
+
{{widgets.sidebar.html}}
|
|
107
|
+
{{{end}}}
|
|
108
|
+
</div>
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
|
|
113
|
+
<div data-widget-area="footer">
|
|
114
|
+
{{{each widgets.footer}}}
|
|
115
|
+
{{widgets.footer.html}}
|
|
116
|
+
{{{end}}}
|
|
117
|
+
</div>
|
|
118
|
+
|
|
119
|
+
{{{ if !config.usePagination }}}
|
|
120
|
+
<noscript>
|
|
121
|
+
<!-- IMPORT partials/paginator.tpl -->
|
|
122
|
+
</noscript>
|
|
123
|
+
{{{ end }}}
|
package/templates/unread.tpl
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
{{{ if widgets.header.length }}}
|
|
2
|
-
<div data-widget-area="header">
|
|
3
|
-
{{{each widgets.header}}}
|
|
4
|
-
{{widgets.header.html}}
|
|
5
|
-
{{{end}}}
|
|
6
|
-
</div>
|
|
7
|
-
{{{ end }}}
|
|
8
|
-
<div class="row">
|
|
9
|
-
<div class="unread {{{if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
|
|
10
|
-
<!-- IMPORT partials/topic-list-bar.tpl -->
|
|
11
|
-
<div class="category">
|
|
12
|
-
<div id="category-no-topics" class="alert alert-info {{{ if topics.length }}}hidden{{{ end }}}">[[unread:no-unread-topics]]</div>
|
|
13
|
-
|
|
14
|
-
<!-- IMPORT partials/topics_list.tpl -->
|
|
15
|
-
<button id="load-more-btn" class="btn btn-primary hide">[[unread:load-more]]</button>
|
|
16
|
-
{{{ if config.usePagination }}}
|
|
17
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
18
|
-
{{{ end }}}
|
|
19
|
-
</div>
|
|
20
|
-
</div>
|
|
21
|
-
<div data-widget-area="sidebar" class="col-lg-3 col-sm-12 {{{ if !widgets.sidebar.length }}}hidden{{{ end }}}">
|
|
22
|
-
{{{ each widgets.sidebar }}}
|
|
23
|
-
{{widgets.sidebar.html}}
|
|
24
|
-
{{{ end }}}
|
|
25
|
-
</div>
|
|
26
|
-
</div>
|
|
27
|
-
|
|
28
|
-
<div data-widget-area="footer">
|
|
29
|
-
{{{each widgets.footer}}}
|
|
30
|
-
{{widgets.footer.html}}
|
|
31
|
-
{{{end}}}
|
|
1
|
+
{{{ if widgets.header.length }}}
|
|
2
|
+
<div data-widget-area="header">
|
|
3
|
+
{{{each widgets.header}}}
|
|
4
|
+
{{widgets.header.html}}
|
|
5
|
+
{{{end}}}
|
|
6
|
+
</div>
|
|
7
|
+
{{{ end }}}
|
|
8
|
+
<div class="row">
|
|
9
|
+
<div class="unread {{{if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
|
|
10
|
+
<!-- IMPORT partials/topic-list-bar.tpl -->
|
|
11
|
+
<div class="category">
|
|
12
|
+
<div id="category-no-topics" class="alert alert-info {{{ if topics.length }}}hidden{{{ end }}}">[[unread:no-unread-topics]]</div>
|
|
13
|
+
|
|
14
|
+
<!-- IMPORT partials/topics_list.tpl -->
|
|
15
|
+
<button id="load-more-btn" class="btn btn-primary hide">[[unread:load-more]]</button>
|
|
16
|
+
{{{ if config.usePagination }}}
|
|
17
|
+
<!-- IMPORT partials/paginator.tpl -->
|
|
18
|
+
{{{ end }}}
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
<div data-widget-area="sidebar" class="col-lg-3 col-sm-12 {{{ if !widgets.sidebar.length }}}hidden{{{ end }}}">
|
|
22
|
+
{{{ each widgets.sidebar }}}
|
|
23
|
+
{{widgets.sidebar.html}}
|
|
24
|
+
{{{ end }}}
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<div data-widget-area="footer">
|
|
29
|
+
{{{each widgets.footer}}}
|
|
30
|
+
{{widgets.footer.html}}
|
|
31
|
+
{{{end}}}
|
|
32
32
|
</div>
|
package/templates/users.tpl
CHANGED
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
<div data-widget-area="header">
|
|
2
|
-
{{{each widgets.header}}}
|
|
3
|
-
{{widgets.header.html}}
|
|
4
|
-
{{{end}}}
|
|
5
|
-
</div>
|
|
6
|
-
<div class="users">
|
|
7
|
-
<h3 class="fw-semibold">[[global:users]]</h3>
|
|
8
|
-
<div class="d-flex flex-wrap justify-content-between">
|
|
9
|
-
<div class="mb-2 mb-md-0">
|
|
10
|
-
<!-- IMPORT partials/users_list_menu.tpl -->
|
|
11
|
-
</div>
|
|
12
|
-
<div>
|
|
13
|
-
<div class="d-flex justify-content-end gap-2">
|
|
14
|
-
{{{ if showInviteButton }}}
|
|
15
|
-
<button component="user/invite" class="btn btn-primary btn-sm text-nowrap"><i class="fa fa-user-plus"></i> [[users:invite]]</button>
|
|
16
|
-
{{{ end }}}
|
|
17
|
-
{{{ if displayUserSearch }}}
|
|
18
|
-
<div class="search">
|
|
19
|
-
<div class="input-group">
|
|
20
|
-
<input class="form-control form-control-sm" id="search-user" type="text" placeholder="[[global:search]]" autocomplete="off" />
|
|
21
|
-
<button class="btn btn-primary btn-sm" type="button" aria-label="[[global:search]]">
|
|
22
|
-
<i component="user/search/icon" class="fa fa-search"></i>
|
|
23
|
-
</button>
|
|
24
|
-
</div>
|
|
25
|
-
</div>
|
|
26
|
-
{{{ end }}}
|
|
27
|
-
</div>
|
|
28
|
-
</div>
|
|
29
|
-
</div>
|
|
30
|
-
<hr/>
|
|
31
|
-
|
|
32
|
-
<div id="users-container" class="users-container row row-cols-2 row-cols-md-3 row-cols-lg-4 row-cols-xl-5 g-4">
|
|
33
|
-
{{{ each users }}}
|
|
34
|
-
<!-- IMPORT partials/users/item.tpl -->
|
|
35
|
-
{{{ end }}}
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
39
|
-
</div>
|
|
1
|
+
<div data-widget-area="header">
|
|
2
|
+
{{{each widgets.header}}}
|
|
3
|
+
{{widgets.header.html}}
|
|
4
|
+
{{{end}}}
|
|
5
|
+
</div>
|
|
6
|
+
<div class="users">
|
|
7
|
+
<h3 class="fw-semibold">[[global:users]]</h3>
|
|
8
|
+
<div class="d-flex flex-wrap justify-content-between">
|
|
9
|
+
<div class="mb-2 mb-md-0">
|
|
10
|
+
<!-- IMPORT partials/users_list_menu.tpl -->
|
|
11
|
+
</div>
|
|
12
|
+
<div>
|
|
13
|
+
<div class="d-flex justify-content-end gap-2">
|
|
14
|
+
{{{ if showInviteButton }}}
|
|
15
|
+
<button component="user/invite" class="btn btn-primary btn-sm text-nowrap"><i class="fa fa-user-plus"></i> [[users:invite]]</button>
|
|
16
|
+
{{{ end }}}
|
|
17
|
+
{{{ if displayUserSearch }}}
|
|
18
|
+
<div class="search">
|
|
19
|
+
<div class="input-group">
|
|
20
|
+
<input class="form-control form-control-sm" id="search-user" type="text" placeholder="[[global:search]]" autocomplete="off" />
|
|
21
|
+
<button class="btn btn-primary btn-sm" type="button" aria-label="[[global:search]]">
|
|
22
|
+
<i component="user/search/icon" class="fa fa-search"></i>
|
|
23
|
+
</button>
|
|
24
|
+
</div>
|
|
25
|
+
</div>
|
|
26
|
+
{{{ end }}}
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
<hr/>
|
|
31
|
+
|
|
32
|
+
<div id="users-container" class="users-container row row-cols-2 row-cols-md-3 row-cols-lg-4 row-cols-xl-5 g-4">
|
|
33
|
+
{{{ each users }}}
|
|
34
|
+
<!-- IMPORT partials/users/item.tpl -->
|
|
35
|
+
{{{ end }}}
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
<!-- IMPORT partials/paginator.tpl -->
|
|
39
|
+
</div>
|