nodebb-theme-harmony 2.0.1 → 2.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/.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
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
-
|
|
3
|
-
<div class="mb-3 d-flex justify-content-between">
|
|
4
|
-
<h3 class="fw-semibold fs-5">[[themes/harmony:settings.title]]</h3>
|
|
5
|
-
|
|
6
|
-
<button id="save" type="button" class="btn btn-primary">[[global:save-changes]]</button>
|
|
7
|
-
</div>
|
|
8
|
-
|
|
9
|
-
<form id="theme-settings" role="form">
|
|
10
|
-
<div class="form-check form-switch mb-3">
|
|
11
|
-
<input class="form-check-input" type="checkbox" role="switch" id="enableQuickReply" name="enableQuickReply" {{{ if theme.enableQuickReply }}}checked{{{ end }}}>
|
|
12
|
-
<label class="form-check-label" for="enableQuickReply">[[themes/harmony:settings.enableQuickReply]]</label>
|
|
13
|
-
</div>
|
|
14
|
-
|
|
15
|
-
<div class="form-check form-switch mb-3">
|
|
16
|
-
<input type="checkbox" class="form-check-input" id="enableBreadcrumbs" name="enableBreadcrumbs" {{{ if theme.enableBreadcrumbs }}}checked{{{ end }}} />
|
|
17
|
-
<label for="enableBreadcrumbs" class="form-check-label">[[themes/harmony:settings.enableBreadcrumbs]]</label>
|
|
18
|
-
</div>
|
|
19
|
-
|
|
20
|
-
<div class="form-check form-switch mb-3">
|
|
21
|
-
<input class="form-check-input" type="checkbox" role="switch" id="centerHeaderElements" name="centerHeaderElements" {{{ if theme.centerHeaderElements }}}checked{{{ end }}}>
|
|
22
|
-
<label class="form-check-label" for="centerHeaderElements">[[themes/harmony:settings.centerHeaderElements]]</label>
|
|
23
|
-
</div>
|
|
24
|
-
|
|
25
|
-
<div class="form-check form-switch mb-3">
|
|
26
|
-
<input class="form-check-input" type="checkbox" role="switch" id="mobileTopicTeasers" name="mobileTopicTeasers" {{{ if theme.mobileTopicTeasers }}}checked{{{ end }}}>
|
|
27
|
-
<label class="form-check-label" for="mobileTopicTeasers">[[themes/harmony:settings.mobileTopicTeasers]]</label>
|
|
28
|
-
</div>
|
|
29
|
-
|
|
30
|
-
<div class="form-check form-switch mb-3">
|
|
31
|
-
<input class="form-check-input" type="checkbox" role="switch" id="stickyToolbar" name="stickyToolbar" {{{ if theme.stickyToolbar }}}checked{{{ end }}}>
|
|
32
|
-
<label class="form-check-label" for="stickyToolbar">
|
|
33
|
-
[[themes/harmony:settings.stickyToolbar]]
|
|
34
|
-
<p class="form-text mb-0">
|
|
35
|
-
[[themes/harmony:settings.stickyToolbar.help]]
|
|
36
|
-
</p>
|
|
37
|
-
</label>
|
|
38
|
-
</div>
|
|
39
|
-
|
|
40
|
-
<div class="form-check form-switch mb-3">
|
|
41
|
-
<input class="form-check-input" type="checkbox" role="switch" id="autohideBottombar" name="autohideBottombar" {{{ if theme.autohideBottombar }}}checked{{{ end }}}>
|
|
42
|
-
<label class="form-check-label" for="autohideBottombar">
|
|
43
|
-
[[themes/harmony:settings.autohideBottombar]]
|
|
44
|
-
<p class="form-text mb-0">
|
|
45
|
-
[[themes/harmony:settings.autohideBottombar.help]]
|
|
46
|
-
</p>
|
|
47
|
-
</label>
|
|
48
|
-
</div>
|
|
49
|
-
|
|
50
|
-
<div class="form-check form-switch mb-3">
|
|
51
|
-
<input class="form-check-input" type="checkbox" role="switch" id="openSidebars" name="openSidebars" {{{ if theme.openSidebars }}}checked{{{ end }}}>
|
|
52
|
-
<label class="form-check-label" for="openSidebars">[[themes/harmony:settings.openSidebars]]</label>
|
|
53
|
-
</div>
|
|
54
|
-
|
|
55
|
-
<div class="form-check form-switch mb-3">
|
|
56
|
-
<input class="form-check-input" type="checkbox" role="switch" id="chatModals" name="chatModals" {{{ if theme.chatModals }}}checked{{{ end }}}>
|
|
57
|
-
<label class="form-check-label" for="chatModals">
|
|
58
|
-
[[themes/harmony:settings.chatModals]]
|
|
59
|
-
</label>
|
|
60
|
-
</div>
|
|
61
|
-
|
|
62
|
-
</form>
|
|
63
|
-
|
|
1
|
+
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
+
|
|
3
|
+
<div class="mb-3 d-flex justify-content-between">
|
|
4
|
+
<h3 class="fw-semibold fs-5">[[themes/harmony:settings.title]]</h3>
|
|
5
|
+
|
|
6
|
+
<button id="save" type="button" class="btn btn-primary">[[global:save-changes]]</button>
|
|
7
|
+
</div>
|
|
8
|
+
|
|
9
|
+
<form id="theme-settings" role="form">
|
|
10
|
+
<div class="form-check form-switch mb-3">
|
|
11
|
+
<input class="form-check-input" type="checkbox" role="switch" id="enableQuickReply" name="enableQuickReply" {{{ if theme.enableQuickReply }}}checked{{{ end }}}>
|
|
12
|
+
<label class="form-check-label" for="enableQuickReply">[[themes/harmony:settings.enableQuickReply]]</label>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<div class="form-check form-switch mb-3">
|
|
16
|
+
<input type="checkbox" class="form-check-input" id="enableBreadcrumbs" name="enableBreadcrumbs" {{{ if theme.enableBreadcrumbs }}}checked{{{ end }}} />
|
|
17
|
+
<label for="enableBreadcrumbs" class="form-check-label">[[themes/harmony:settings.enableBreadcrumbs]]</label>
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<div class="form-check form-switch mb-3">
|
|
21
|
+
<input class="form-check-input" type="checkbox" role="switch" id="centerHeaderElements" name="centerHeaderElements" {{{ if theme.centerHeaderElements }}}checked{{{ end }}}>
|
|
22
|
+
<label class="form-check-label" for="centerHeaderElements">[[themes/harmony:settings.centerHeaderElements]]</label>
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
<div class="form-check form-switch mb-3">
|
|
26
|
+
<input class="form-check-input" type="checkbox" role="switch" id="mobileTopicTeasers" name="mobileTopicTeasers" {{{ if theme.mobileTopicTeasers }}}checked{{{ end }}}>
|
|
27
|
+
<label class="form-check-label" for="mobileTopicTeasers">[[themes/harmony:settings.mobileTopicTeasers]]</label>
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
<div class="form-check form-switch mb-3">
|
|
31
|
+
<input class="form-check-input" type="checkbox" role="switch" id="stickyToolbar" name="stickyToolbar" {{{ if theme.stickyToolbar }}}checked{{{ end }}}>
|
|
32
|
+
<label class="form-check-label" for="stickyToolbar">
|
|
33
|
+
[[themes/harmony:settings.stickyToolbar]]
|
|
34
|
+
<p class="form-text mb-0">
|
|
35
|
+
[[themes/harmony:settings.stickyToolbar.help]]
|
|
36
|
+
</p>
|
|
37
|
+
</label>
|
|
38
|
+
</div>
|
|
39
|
+
|
|
40
|
+
<div class="form-check form-switch mb-3">
|
|
41
|
+
<input class="form-check-input" type="checkbox" role="switch" id="autohideBottombar" name="autohideBottombar" {{{ if theme.autohideBottombar }}}checked{{{ end }}}>
|
|
42
|
+
<label class="form-check-label" for="autohideBottombar">
|
|
43
|
+
[[themes/harmony:settings.autohideBottombar]]
|
|
44
|
+
<p class="form-text mb-0">
|
|
45
|
+
[[themes/harmony:settings.autohideBottombar.help]]
|
|
46
|
+
</p>
|
|
47
|
+
</label>
|
|
48
|
+
</div>
|
|
49
|
+
|
|
50
|
+
<div class="form-check form-switch mb-3">
|
|
51
|
+
<input class="form-check-input" type="checkbox" role="switch" id="openSidebars" name="openSidebars" {{{ if theme.openSidebars }}}checked{{{ end }}}>
|
|
52
|
+
<label class="form-check-label" for="openSidebars">[[themes/harmony:settings.openSidebars]]</label>
|
|
53
|
+
</div>
|
|
54
|
+
|
|
55
|
+
<div class="form-check form-switch mb-3">
|
|
56
|
+
<input class="form-check-input" type="checkbox" role="switch" id="chatModals" name="chatModals" {{{ if theme.chatModals }}}checked{{{ end }}}>
|
|
57
|
+
<label class="form-check-label" for="chatModals">
|
|
58
|
+
[[themes/harmony:settings.chatModals]]
|
|
59
|
+
</label>
|
|
60
|
+
</div>
|
|
61
|
+
|
|
62
|
+
</form>
|
|
63
|
+
|
|
64
64
|
<!-- IMPORT partials/account/footer.tpl -->
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
-
|
|
3
|
-
<div class="d-flex justify-content-between align-items-center mb-3">
|
|
4
|
-
<div class="d-flex gap-1">
|
|
5
|
-
<h3 class="fw-semibold fs-5 mb-0 align-self-center">[[global:topics]]</h3>
|
|
6
|
-
{{{ if showSort }}}
|
|
7
|
-
<div class="btn-group bottom-sheet" component="thread/sort">
|
|
8
|
-
<button title="[[global:sort]]" class="btn btn-ghost btn-sm dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" type="button"><i class="fa-solid fa-arrow-up-wide-short"></i></button>
|
|
9
|
-
<ul class="dropdown-menu p-1 text-sm" role="menu">
|
|
10
|
-
{{{each sortOptions }}}
|
|
11
|
-
<li>
|
|
12
|
-
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" href="{config.relative_path}{./url}" role="menuitem">
|
|
13
|
-
<div class="flex-grow-1">{./name}</div>
|
|
14
|
-
<i class="flex-shrink-0 fa fa-fw {{{if ./selected}}}fa-check{{{end}}}"></i>
|
|
15
|
-
</a>
|
|
16
|
-
</li>
|
|
17
|
-
{{{end}}}
|
|
18
|
-
</ul>
|
|
19
|
-
</div>
|
|
20
|
-
{{{ end }}}
|
|
21
|
-
</div>
|
|
22
|
-
|
|
23
|
-
<div class="d-flex gap-1">
|
|
24
|
-
{{{ if canEdit }}}
|
|
25
|
-
<a href="{config.relative_path}/user/{userslug}/topics" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if template.account/topics }}}active{{{ end }}}">[[global:header.recent]]</a>
|
|
26
|
-
<a href="{config.relative_path}/user/{userslug}/watched"class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if template.account/watched }}}active{{{ end }}}">[[user:watched]]</a>
|
|
27
|
-
<a href="{config.relative_path}/user/{userslug}/ignored" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if template.account/ignored }}}active{{{ end }}}">[[user:ignored]]</a>
|
|
28
|
-
<a href="{config.relative_path}/user/{userslug}/read" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if template.account/read }}}active{{{ end }}}">[[user:read]]</a>
|
|
29
|
-
{{{ end }}}
|
|
30
|
-
</div>
|
|
31
|
-
</div>
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
{{{ if !topics.length }}}
|
|
35
|
-
<div class="alert alert-warning text-center">{noItemsFoundKey}</div>
|
|
36
|
-
{{{ end }}}
|
|
37
|
-
|
|
38
|
-
<div class="category">
|
|
39
|
-
<!-- IMPORT partials/topics_list.tpl -->
|
|
40
|
-
{{{ if config.usePagination }}}
|
|
41
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
42
|
-
{{{ end }}}
|
|
43
|
-
</div>
|
|
44
|
-
|
|
1
|
+
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
+
|
|
3
|
+
<div class="d-flex justify-content-between align-items-center mb-3">
|
|
4
|
+
<div class="d-flex gap-1">
|
|
5
|
+
<h3 class="fw-semibold fs-5 mb-0 align-self-center">[[global:topics]]</h3>
|
|
6
|
+
{{{ if showSort }}}
|
|
7
|
+
<div class="btn-group bottom-sheet" component="thread/sort">
|
|
8
|
+
<button title="[[global:sort]]" class="btn btn-ghost btn-sm dropdown-toggle" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" type="button"><i class="fa-solid fa-arrow-up-wide-short"></i></button>
|
|
9
|
+
<ul class="dropdown-menu p-1 text-sm" role="menu">
|
|
10
|
+
{{{each sortOptions }}}
|
|
11
|
+
<li>
|
|
12
|
+
<a class="dropdown-item rounded-1 d-flex align-items-center gap-2" href="{config.relative_path}{./url}" role="menuitem">
|
|
13
|
+
<div class="flex-grow-1">{./name}</div>
|
|
14
|
+
<i class="flex-shrink-0 fa fa-fw {{{if ./selected}}}fa-check{{{end}}}"></i>
|
|
15
|
+
</a>
|
|
16
|
+
</li>
|
|
17
|
+
{{{end}}}
|
|
18
|
+
</ul>
|
|
19
|
+
</div>
|
|
20
|
+
{{{ end }}}
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<div class="d-flex gap-1">
|
|
24
|
+
{{{ if canEdit }}}
|
|
25
|
+
<a href="{config.relative_path}/user/{userslug}/topics" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if template.account/topics }}}active{{{ end }}}">[[global:header.recent]]</a>
|
|
26
|
+
<a href="{config.relative_path}/user/{userslug}/watched"class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if template.account/watched }}}active{{{ end }}}">[[user:watched]]</a>
|
|
27
|
+
<a href="{config.relative_path}/user/{userslug}/ignored" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if template.account/ignored }}}active{{{ end }}}">[[user:ignored]]</a>
|
|
28
|
+
<a href="{config.relative_path}/user/{userslug}/read" class="btn btn-ghost btn-sm ff-secondary fw-semibold {{{ if template.account/read }}}active{{{ end }}}">[[user:read]]</a>
|
|
29
|
+
{{{ end }}}
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
{{{ if !topics.length }}}
|
|
35
|
+
<div class="alert alert-warning text-center">{noItemsFoundKey}</div>
|
|
36
|
+
{{{ end }}}
|
|
37
|
+
|
|
38
|
+
<div class="category">
|
|
39
|
+
<!-- IMPORT partials/topics_list.tpl -->
|
|
40
|
+
{{{ if config.usePagination }}}
|
|
41
|
+
<!-- IMPORT partials/paginator.tpl -->
|
|
42
|
+
{{{ end }}}
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
45
|
<!-- IMPORT partials/account/footer.tpl -->
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
-
|
|
3
|
-
<h3 class="fw-semibold fs-5">{title}</h3>
|
|
4
|
-
|
|
5
|
-
<div class="alert alert-info text-center">
|
|
6
|
-
{{{ if privateUploads }}}[[uploads:private-uploads-info]]{{{ else }}}[[uploads:public-uploads-info]]{{{ end }}}
|
|
7
|
-
</div>
|
|
8
|
-
|
|
9
|
-
{{{ if !uploads.length }}}
|
|
10
|
-
<div class="alert alert-warning text-center">[[uploads:no-uploads-found]]</div>
|
|
11
|
-
{{{ end }}}
|
|
12
|
-
|
|
13
|
-
<table class="table table-striped table-responsive">
|
|
14
|
-
<thead>
|
|
15
|
-
<tr>
|
|
16
|
-
<th></th>
|
|
17
|
-
<th></th>
|
|
18
|
-
</tr>
|
|
19
|
-
</thead>
|
|
20
|
-
<tbody>
|
|
21
|
-
{{{ each uploads }}}
|
|
22
|
-
<tr data-name="{./name}">
|
|
23
|
-
<td>
|
|
24
|
-
<a class="text-break" href="{config.relative_path}{./url}">{./url}</a>
|
|
25
|
-
</td>
|
|
26
|
-
<td>
|
|
27
|
-
<div class="btn-group ">
|
|
28
|
-
<button class="btn btn-danger btn-sm" data-action="delete" aria-label="[[aria:delete-upload-button]]"><i class="fa fa-trash"></i></button>
|
|
29
|
-
</div>
|
|
30
|
-
</td>
|
|
31
|
-
</tr>
|
|
32
|
-
{{{ end }}}
|
|
33
|
-
</tbody>
|
|
34
|
-
</table>
|
|
35
|
-
|
|
36
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
37
|
-
<!-- IMPORT partials/account/footer.tpl -->
|
|
1
|
+
<!-- IMPORT partials/account/header.tpl -->
|
|
2
|
+
|
|
3
|
+
<h3 class="fw-semibold fs-5">{title}</h3>
|
|
4
|
+
|
|
5
|
+
<div class="alert alert-info text-center">
|
|
6
|
+
{{{ if privateUploads }}}[[uploads:private-uploads-info]]{{{ else }}}[[uploads:public-uploads-info]]{{{ end }}}
|
|
7
|
+
</div>
|
|
8
|
+
|
|
9
|
+
{{{ if !uploads.length }}}
|
|
10
|
+
<div class="alert alert-warning text-center">[[uploads:no-uploads-found]]</div>
|
|
11
|
+
{{{ end }}}
|
|
12
|
+
|
|
13
|
+
<table class="table table-striped table-responsive">
|
|
14
|
+
<thead>
|
|
15
|
+
<tr>
|
|
16
|
+
<th></th>
|
|
17
|
+
<th></th>
|
|
18
|
+
</tr>
|
|
19
|
+
</thead>
|
|
20
|
+
<tbody>
|
|
21
|
+
{{{ each uploads }}}
|
|
22
|
+
<tr data-name="{./name}">
|
|
23
|
+
<td>
|
|
24
|
+
<a class="text-break" href="{config.relative_path}{./url}">{./url}</a>
|
|
25
|
+
</td>
|
|
26
|
+
<td>
|
|
27
|
+
<div class="btn-group ">
|
|
28
|
+
<button class="btn btn-danger btn-sm" data-action="delete" aria-label="[[aria:delete-upload-button]]"><i class="fa fa-trash"></i></button>
|
|
29
|
+
</div>
|
|
30
|
+
</td>
|
|
31
|
+
</tr>
|
|
32
|
+
{{{ end }}}
|
|
33
|
+
</tbody>
|
|
34
|
+
</table>
|
|
35
|
+
|
|
36
|
+
<!-- IMPORT partials/paginator.tpl -->
|
|
37
|
+
<!-- IMPORT partials/account/footer.tpl -->
|
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
<div class="acp-page-container">
|
|
2
|
-
<!-- IMPORT admin/partials/settings/header.tpl -->
|
|
3
|
-
|
|
4
|
-
<div class="row m-0">
|
|
5
|
-
<div id="spy-container" class="col-12 col-md-8 px-0 mb-4" tabindex="0">
|
|
6
|
-
<form role="form" class="harmony-settings">
|
|
7
|
-
<div class="form-check form-switch">
|
|
8
|
-
<input type="checkbox" class="form-check-input" id="enableQuickReply" name="enableQuickReply" />
|
|
9
|
-
<label for="enableQuickReply" class="form-check-label">[[themes/harmony:settings.enableQuickReply]]</label>
|
|
10
|
-
</div>
|
|
11
|
-
<div class="form-check form-switch">
|
|
12
|
-
<input type="checkbox" class="form-check-input" id="enableBreadcrumbs" name="enableBreadcrumbs" />
|
|
13
|
-
<label for="enableBreadcrumbs" class="form-check-label">[[themes/harmony:settings.enableBreadcrumbs]]</label>
|
|
14
|
-
<p class="form-text">[[themes/harmony:settings.enableBreadcrumbs.why]]</p>
|
|
15
|
-
</div>
|
|
16
|
-
<div class="form-check form-switch">
|
|
17
|
-
<input type="checkbox" class="form-check-input" id="centerHeaderElements" name="centerHeaderElements" />
|
|
18
|
-
<label for="centerHeaderElements" class="form-check-label">[[themes/harmony:settings.centerHeaderElements]]</label>
|
|
19
|
-
</div>
|
|
20
|
-
<div class="form-check form-switch">
|
|
21
|
-
<input type="checkbox" class="form-check-input" id="mobileTopicTeasers" name="mobileTopicTeasers" />
|
|
22
|
-
<label for="mobileTopicTeasers" class="form-check-label">[[themes/harmony:settings.mobileTopicTeasers]]</label>
|
|
23
|
-
</div>
|
|
24
|
-
<div class="form-check form-switch">
|
|
25
|
-
<input type="checkbox" class="form-check-input" id="stickyToolbar" name="stickyToolbar" />
|
|
26
|
-
<div for="stickyToolbar" class="form-check-label">
|
|
27
|
-
[[themes/harmony:settings.stickyToolbar]]
|
|
28
|
-
<p class="form-text">
|
|
29
|
-
[[themes/harmony:settings.stickyToolbar.help]]
|
|
30
|
-
</p>
|
|
31
|
-
</div>
|
|
32
|
-
</div>
|
|
33
|
-
<div class="form-check form-switch">
|
|
34
|
-
<input type="checkbox" class="form-check-input" id="autohideBottombar" name="autohideBottombar" />
|
|
35
|
-
<div for="autohideBottombar" class="form-check-label">
|
|
36
|
-
[[themes/harmony:settings.autohideBottombar]]
|
|
37
|
-
<p class="form-text">
|
|
38
|
-
[[themes/harmony:settings.autohideBottombar.help]]
|
|
39
|
-
</p>
|
|
40
|
-
</div>
|
|
41
|
-
</div>
|
|
42
|
-
<div class="form-check form-switch">
|
|
43
|
-
<input type="checkbox" class="form-check-input" id="openSidebars" name="openSidebars" />
|
|
44
|
-
<label for="openSidebars" class="form-check-label">[[themes/harmony:settings.openSidebars]]</label>
|
|
45
|
-
</div>
|
|
46
|
-
<div class="form-check form-switch">
|
|
47
|
-
<input type="checkbox" class="form-check-input" id="chatModals" name="chatModals" />
|
|
48
|
-
<div for="chatModals" class="form-check-label">
|
|
49
|
-
[[themes/harmony:settings.chatModals]]
|
|
50
|
-
</div>
|
|
51
|
-
</div>
|
|
52
|
-
</form>
|
|
53
|
-
</div>
|
|
54
|
-
|
|
55
|
-
<!-- IMPORT admin/partials/settings/toc.tpl -->
|
|
56
|
-
</div>
|
|
57
|
-
</div>
|
|
1
|
+
<div class="acp-page-container">
|
|
2
|
+
<!-- IMPORT admin/partials/settings/header.tpl -->
|
|
3
|
+
|
|
4
|
+
<div class="row m-0">
|
|
5
|
+
<div id="spy-container" class="col-12 col-md-8 px-0 mb-4" tabindex="0">
|
|
6
|
+
<form role="form" class="harmony-settings">
|
|
7
|
+
<div class="form-check form-switch">
|
|
8
|
+
<input type="checkbox" class="form-check-input" id="enableQuickReply" name="enableQuickReply" />
|
|
9
|
+
<label for="enableQuickReply" class="form-check-label">[[themes/harmony:settings.enableQuickReply]]</label>
|
|
10
|
+
</div>
|
|
11
|
+
<div class="form-check form-switch">
|
|
12
|
+
<input type="checkbox" class="form-check-input" id="enableBreadcrumbs" name="enableBreadcrumbs" />
|
|
13
|
+
<label for="enableBreadcrumbs" class="form-check-label">[[themes/harmony:settings.enableBreadcrumbs]]</label>
|
|
14
|
+
<p class="form-text">[[themes/harmony:settings.enableBreadcrumbs.why]]</p>
|
|
15
|
+
</div>
|
|
16
|
+
<div class="form-check form-switch">
|
|
17
|
+
<input type="checkbox" class="form-check-input" id="centerHeaderElements" name="centerHeaderElements" />
|
|
18
|
+
<label for="centerHeaderElements" class="form-check-label">[[themes/harmony:settings.centerHeaderElements]]</label>
|
|
19
|
+
</div>
|
|
20
|
+
<div class="form-check form-switch">
|
|
21
|
+
<input type="checkbox" class="form-check-input" id="mobileTopicTeasers" name="mobileTopicTeasers" />
|
|
22
|
+
<label for="mobileTopicTeasers" class="form-check-label">[[themes/harmony:settings.mobileTopicTeasers]]</label>
|
|
23
|
+
</div>
|
|
24
|
+
<div class="form-check form-switch">
|
|
25
|
+
<input type="checkbox" class="form-check-input" id="stickyToolbar" name="stickyToolbar" />
|
|
26
|
+
<div for="stickyToolbar" class="form-check-label">
|
|
27
|
+
[[themes/harmony:settings.stickyToolbar]]
|
|
28
|
+
<p class="form-text">
|
|
29
|
+
[[themes/harmony:settings.stickyToolbar.help]]
|
|
30
|
+
</p>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
<div class="form-check form-switch">
|
|
34
|
+
<input type="checkbox" class="form-check-input" id="autohideBottombar" name="autohideBottombar" />
|
|
35
|
+
<div for="autohideBottombar" class="form-check-label">
|
|
36
|
+
[[themes/harmony:settings.autohideBottombar]]
|
|
37
|
+
<p class="form-text">
|
|
38
|
+
[[themes/harmony:settings.autohideBottombar.help]]
|
|
39
|
+
</p>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
<div class="form-check form-switch">
|
|
43
|
+
<input type="checkbox" class="form-check-input" id="openSidebars" name="openSidebars" />
|
|
44
|
+
<label for="openSidebars" class="form-check-label">[[themes/harmony:settings.openSidebars]]</label>
|
|
45
|
+
</div>
|
|
46
|
+
<div class="form-check form-switch">
|
|
47
|
+
<input type="checkbox" class="form-check-input" id="chatModals" name="chatModals" />
|
|
48
|
+
<div for="chatModals" class="form-check-label">
|
|
49
|
+
[[themes/harmony:settings.chatModals]]
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
</form>
|
|
53
|
+
</div>
|
|
54
|
+
|
|
55
|
+
<!-- IMPORT admin/partials/settings/toc.tpl -->
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
package/templates/categories.tpl
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
<div data-widget-area="header">
|
|
2
|
-
{{{ each widgets.header }}}
|
|
3
|
-
{{widgets.header.html}}
|
|
4
|
-
{{{ end }}}
|
|
5
|
-
</div>
|
|
6
|
-
<div class="row py-2">
|
|
7
|
-
<div class="{{{ if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
|
|
8
|
-
{{{ if pagination.pages.length }}}
|
|
9
|
-
<div><!-- IMPORT partials/category/selector-dropdown-left.tpl --></div>
|
|
10
|
-
{{{ end }}}
|
|
11
|
-
<ul class="categories-list list-unstyled" itemscope itemtype="http://www.schema.org/ItemList">
|
|
12
|
-
{{{ each categories }}}
|
|
13
|
-
<!-- IMPORT partials/categories/item.tpl -->
|
|
14
|
-
{{{ end }}}
|
|
15
|
-
</ul>
|
|
16
|
-
|
|
17
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
18
|
-
</div>
|
|
19
|
-
<div data-widget-area="sidebar" class="col-lg-3 col-sm-12 {{{ if !widgets.sidebar.length }}}hidden{{{ end }}}">
|
|
20
|
-
{{{ each widgets.sidebar }}}
|
|
21
|
-
{{widgets.sidebar.html}}
|
|
22
|
-
{{{ end }}}
|
|
23
|
-
</div>
|
|
24
|
-
</div>
|
|
25
|
-
<div data-widget-area="footer">
|
|
26
|
-
{{{ each widgets.footer }}}
|
|
27
|
-
{{widgets.footer.html}}
|
|
28
|
-
{{{ end }}}
|
|
29
|
-
</div>
|
|
1
|
+
<div data-widget-area="header">
|
|
2
|
+
{{{ each widgets.header }}}
|
|
3
|
+
{{widgets.header.html}}
|
|
4
|
+
{{{ end }}}
|
|
5
|
+
</div>
|
|
6
|
+
<div class="row py-2">
|
|
7
|
+
<div class="{{{ if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
|
|
8
|
+
{{{ if pagination.pages.length }}}
|
|
9
|
+
<div><!-- IMPORT partials/category/selector-dropdown-left.tpl --></div>
|
|
10
|
+
{{{ end }}}
|
|
11
|
+
<ul class="categories-list list-unstyled" itemscope itemtype="http://www.schema.org/ItemList">
|
|
12
|
+
{{{ each categories }}}
|
|
13
|
+
<!-- IMPORT partials/categories/item.tpl -->
|
|
14
|
+
{{{ end }}}
|
|
15
|
+
</ul>
|
|
16
|
+
|
|
17
|
+
<!-- IMPORT partials/paginator.tpl -->
|
|
18
|
+
</div>
|
|
19
|
+
<div data-widget-area="sidebar" class="col-lg-3 col-sm-12 {{{ if !widgets.sidebar.length }}}hidden{{{ end }}}">
|
|
20
|
+
{{{ each widgets.sidebar }}}
|
|
21
|
+
{{widgets.sidebar.html}}
|
|
22
|
+
{{{ end }}}
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
<div data-widget-area="footer">
|
|
26
|
+
{{{ each widgets.footer }}}
|
|
27
|
+
{{widgets.footer.html}}
|
|
28
|
+
{{{ end }}}
|
|
29
|
+
</div>
|
package/templates/category.tpl
CHANGED
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
<!-- IMPORT partials/breadcrumbs-json-ld.tpl -->
|
|
2
|
-
{{{ if config.theme.enableBreadcrumbs }}}
|
|
3
|
-
<!-- IMPORT partials/breadcrumbs.tpl -->
|
|
4
|
-
{{{ end }}}
|
|
5
|
-
|
|
6
|
-
<div class="category-header d-flex flex-column gap-2">
|
|
7
|
-
<div class="d-flex gap-2 align-items-center mb-1 {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}">
|
|
8
|
-
{buildCategoryIcon(@value, "40px", "rounded-1 flex-shrink-0")}
|
|
9
|
-
<h1 class="tracking-tight fs-2 fw-semibold mb-0">{./name}</h1>
|
|
10
|
-
</div>
|
|
11
|
-
{{{ if ./descriptionParsed }}}
|
|
12
|
-
<div class="description text-secondary text-sm w-100 {{{ if config.theme.centerHeaderElements }}}text-center{{{ end }}}">
|
|
13
|
-
{./descriptionParsed}
|
|
14
|
-
</div>
|
|
15
|
-
{{{ end }}}
|
|
16
|
-
<div class="d-flex flex-wrap gap-2 {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}">
|
|
17
|
-
<span class="badge text-body border border-gray-300 stats text-xs">
|
|
18
|
-
<span title="{totalTopicCount}" class="fw-bold">{humanReadableNumber(totalTopicCount)}</span>
|
|
19
|
-
<span class="text-lowercase fw-normal">[[global:topics]]</span>
|
|
20
|
-
</span>
|
|
21
|
-
<span class="badge text-body border border-gray-300 stats text-xs">
|
|
22
|
-
<span title="{totalPostCount}" class="fw-bold">{humanReadableNumber(totalPostCount)}</span>
|
|
23
|
-
<span class="text-lowercase fw-normal">[[global:posts]]</span>
|
|
24
|
-
</span>
|
|
25
|
-
</div>
|
|
26
|
-
</div>
|
|
27
|
-
|
|
28
|
-
{{{ if widgets.header.length }}}
|
|
29
|
-
<div data-widget-area="header">
|
|
30
|
-
{{{ each widgets.header }}}
|
|
31
|
-
{{widgets.header.html}}
|
|
32
|
-
{{{ end }}}
|
|
33
|
-
</div>
|
|
34
|
-
{{{ end }}}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
<div class="row mt-3">
|
|
38
|
-
<div class="category d-flex flex-column {{{if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
|
|
39
|
-
<!-- IMPORT partials/category/subcategory.tpl -->
|
|
40
|
-
{{{ if (topics.length || privileges.topics:create) }}}
|
|
41
|
-
<!-- IMPORT partials/topic-list-bar.tpl -->
|
|
42
|
-
{{{ end }}}
|
|
43
|
-
|
|
44
|
-
{{{ if (!topics.length && privileges.topics:create) }}}
|
|
45
|
-
<div class="alert alert-info" id="category-no-topics">
|
|
46
|
-
[[category:no-topics]]
|
|
47
|
-
</div>
|
|
48
|
-
{{{ end }}}
|
|
49
|
-
|
|
50
|
-
<!-- IMPORT partials/topics_list.tpl -->
|
|
51
|
-
|
|
52
|
-
{{{ if config.usePagination }}}
|
|
53
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
54
|
-
{{{ end }}}
|
|
55
|
-
</div>
|
|
56
|
-
<div data-widget-area="sidebar" class="col-lg-3 col-sm-12 {{{ if !widgets.sidebar.length }}}hidden{{{ end }}}">
|
|
57
|
-
{{{ each widgets.sidebar }}}
|
|
58
|
-
{{widgets.sidebar.html}}
|
|
59
|
-
{{{ end }}}
|
|
60
|
-
</div>
|
|
61
|
-
</div>
|
|
62
|
-
<div data-widget-area="footer">
|
|
63
|
-
{{{each widgets.footer}}}
|
|
64
|
-
{{widgets.footer.html}}
|
|
65
|
-
{{{end}}}
|
|
66
|
-
</div>
|
|
67
|
-
|
|
68
|
-
{{{ if !config.usePagination }}}
|
|
69
|
-
<noscript>
|
|
70
|
-
<!-- IMPORT partials/paginator.tpl -->
|
|
71
|
-
</noscript>
|
|
72
|
-
{{{ end }}}
|
|
1
|
+
<!-- IMPORT partials/breadcrumbs-json-ld.tpl -->
|
|
2
|
+
{{{ if config.theme.enableBreadcrumbs }}}
|
|
3
|
+
<!-- IMPORT partials/breadcrumbs.tpl -->
|
|
4
|
+
{{{ end }}}
|
|
5
|
+
|
|
6
|
+
<div class="category-header d-flex flex-column gap-2">
|
|
7
|
+
<div class="d-flex gap-2 align-items-center mb-1 {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}">
|
|
8
|
+
{buildCategoryIcon(@value, "40px", "rounded-1 flex-shrink-0")}
|
|
9
|
+
<h1 class="tracking-tight fs-2 fw-semibold mb-0">{./name}</h1>
|
|
10
|
+
</div>
|
|
11
|
+
{{{ if ./descriptionParsed }}}
|
|
12
|
+
<div class="description text-secondary text-sm w-100 {{{ if config.theme.centerHeaderElements }}}text-center{{{ end }}}">
|
|
13
|
+
{./descriptionParsed}
|
|
14
|
+
</div>
|
|
15
|
+
{{{ end }}}
|
|
16
|
+
<div class="d-flex flex-wrap gap-2 {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}">
|
|
17
|
+
<span class="badge text-body border border-gray-300 stats text-xs">
|
|
18
|
+
<span title="{totalTopicCount}" class="fw-bold">{humanReadableNumber(totalTopicCount)}</span>
|
|
19
|
+
<span class="text-lowercase fw-normal">[[global:topics]]</span>
|
|
20
|
+
</span>
|
|
21
|
+
<span class="badge text-body border border-gray-300 stats text-xs">
|
|
22
|
+
<span title="{totalPostCount}" class="fw-bold">{humanReadableNumber(totalPostCount)}</span>
|
|
23
|
+
<span class="text-lowercase fw-normal">[[global:posts]]</span>
|
|
24
|
+
</span>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
{{{ if widgets.header.length }}}
|
|
29
|
+
<div data-widget-area="header">
|
|
30
|
+
{{{ each widgets.header }}}
|
|
31
|
+
{{widgets.header.html}}
|
|
32
|
+
{{{ end }}}
|
|
33
|
+
</div>
|
|
34
|
+
{{{ end }}}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
<div class="row mt-3">
|
|
38
|
+
<div class="category d-flex flex-column {{{if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
|
|
39
|
+
<!-- IMPORT partials/category/subcategory.tpl -->
|
|
40
|
+
{{{ if (topics.length || privileges.topics:create) }}}
|
|
41
|
+
<!-- IMPORT partials/topic-list-bar.tpl -->
|
|
42
|
+
{{{ end }}}
|
|
43
|
+
|
|
44
|
+
{{{ if (!topics.length && privileges.topics:create) }}}
|
|
45
|
+
<div class="alert alert-info" id="category-no-topics">
|
|
46
|
+
[[category:no-topics]]
|
|
47
|
+
</div>
|
|
48
|
+
{{{ end }}}
|
|
49
|
+
|
|
50
|
+
<!-- IMPORT partials/topics_list.tpl -->
|
|
51
|
+
|
|
52
|
+
{{{ if config.usePagination }}}
|
|
53
|
+
<!-- IMPORT partials/paginator.tpl -->
|
|
54
|
+
{{{ end }}}
|
|
55
|
+
</div>
|
|
56
|
+
<div data-widget-area="sidebar" class="col-lg-3 col-sm-12 {{{ if !widgets.sidebar.length }}}hidden{{{ end }}}">
|
|
57
|
+
{{{ each widgets.sidebar }}}
|
|
58
|
+
{{widgets.sidebar.html}}
|
|
59
|
+
{{{ end }}}
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
<div data-widget-area="footer">
|
|
63
|
+
{{{each widgets.footer}}}
|
|
64
|
+
{{widgets.footer.html}}
|
|
65
|
+
{{{end}}}
|
|
66
|
+
</div>
|
|
67
|
+
|
|
68
|
+
{{{ if !config.usePagination }}}
|
|
69
|
+
<noscript>
|
|
70
|
+
<!-- IMPORT partials/paginator.tpl -->
|
|
71
|
+
</noscript>
|
|
72
|
+
{{{ end }}}
|