nodebb-theme-harmony 1.0.0-beta.39 → 1.0.0-beta.40
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 +4 -1
- package/library.js +11 -7
- package/package.json +1 -1
- package/public/harmony.js +45 -0
- package/public/settings.js +1 -0
- package/scss/modals.scss +6 -1
- package/scss/modules/bottom-sheet.scss +1 -1
- package/scss/sidebar.scss +6 -3
- package/templates/account/theme.tpl +20 -4
- package/templates/category.tpl +2 -2
- package/templates/footer.tpl +2 -2
- package/templates/partials/breadcrumbs.tpl +1 -1
- package/templates/partials/header/brand.tpl +1 -1
- package/templates/partials/mobile-footer.tpl +5 -5
- package/templates/partials/post_bar.tpl +1 -1
- package/templates/partials/sidebar-left.tpl +1 -1
- package/templates/partials/sidebar-right.tpl +1 -1
- package/templates/partials/topic/navigator-mobile.tpl +14 -9
- package/templates/partials/topic/post.tpl +1 -1
- package/templates/partials/topic/reply-button.tpl +1 -1
- package/templates/partials/topic-list-bar.tpl +1 -1
- package/templates/partials/topics_list.tpl +5 -6
- package/templates/topic.tpl +3 -3
- package/templates/users.tpl +1 -1
|
@@ -6,5 +6,8 @@
|
|
|
6
6
|
"settings.title": "Theme settings",
|
|
7
7
|
"settings.enableQuickReply": "Enable quick reply",
|
|
8
8
|
"settings.centerHeaderElements": "Center header elements",
|
|
9
|
-
"settings.stickyToolbar": "Sticky toolbar"
|
|
9
|
+
"settings.stickyToolbar": "Sticky toolbar",
|
|
10
|
+
"settings.stickyToolbar.help": "The toolbar on topic and category pages will stick to the top of the page",
|
|
11
|
+
"settings.autohideBottombar": "Auto hide bottom bar",
|
|
12
|
+
"settings.autohideBottombar.help": "The bottom bar on mobile view will be hidden when the page is scrolled down"
|
|
10
13
|
}
|
package/library.js
CHANGED
|
@@ -12,6 +12,7 @@ const defaults = {
|
|
|
12
12
|
enableQuickReply: 'on',
|
|
13
13
|
centerHeaderElements: 'off',
|
|
14
14
|
stickyToolbar: 'on',
|
|
15
|
+
autohideBottombar: 'off',
|
|
15
16
|
openSidebars: 'off',
|
|
16
17
|
};
|
|
17
18
|
|
|
@@ -102,15 +103,18 @@ async function loadThemeConfig(uid) {
|
|
|
102
103
|
meta.settings.get('harmony'),
|
|
103
104
|
user.getSettings(uid),
|
|
104
105
|
]);
|
|
105
|
-
|
|
106
|
+
|
|
107
|
+
const config = { ...defaults, ...themeConfig, ...(_.pick(userConfig, Object.keys(defaults))) };
|
|
108
|
+
config.enableQuickReply = config.enableQuickReply === 'on';
|
|
109
|
+
config.centerHeaderElements = config.centerHeaderElements === 'on';
|
|
110
|
+
config.stickyToolbar = config.stickyToolbar === 'on';
|
|
111
|
+
config.autohideBottombar = config.autohideBottombar === 'on';
|
|
112
|
+
config.openSidebars = config.openSidebars === 'on';
|
|
113
|
+
return config;
|
|
106
114
|
}
|
|
107
115
|
|
|
108
116
|
library.getThemeConfig = async function (config) {
|
|
109
|
-
|
|
110
|
-
config.enableQuickReply = themeConfig.enableQuickReply === 'on';
|
|
111
|
-
config.centerHeaderElements = themeConfig.centerHeaderElements === 'on';
|
|
112
|
-
config.stickyToolbar = themeConfig.stickyToolbar === 'on';
|
|
113
|
-
config.openSidebars = themeConfig.openSidebars === 'on';
|
|
117
|
+
config.theme = await loadThemeConfig(config.uid);;
|
|
114
118
|
config.openDraftsOnPageLoad = false;
|
|
115
119
|
return config;
|
|
116
120
|
};
|
|
@@ -136,7 +140,7 @@ library.saveUserSettings = async function (hookData) {
|
|
|
136
140
|
|
|
137
141
|
library.addUserToTopic = async function (hookData) {
|
|
138
142
|
const { enableQuickReply } = await loadThemeConfig(hookData.req.uid);
|
|
139
|
-
if (enableQuickReply
|
|
143
|
+
if (enableQuickReply) {
|
|
140
144
|
if (hookData.req.user) {
|
|
141
145
|
const userData = await user.getUserData(hookData.req.uid);
|
|
142
146
|
hookData.templateData.loggedInUser = userData;
|
package/package.json
CHANGED
package/public/harmony.js
CHANGED
|
@@ -54,6 +54,51 @@ $(document).ready(function () {
|
|
|
54
54
|
hooks.fire('action:navigator.update', { newIndex: navigator.getIndex() });
|
|
55
55
|
}
|
|
56
56
|
});
|
|
57
|
+
|
|
58
|
+
const bottomBar = $('[component="bottombar"]');
|
|
59
|
+
$('body').on('shown.bs.dropdown', '.sticky-tools', function () {
|
|
60
|
+
bottomBar.addClass('hidden');
|
|
61
|
+
});
|
|
62
|
+
$('body').on('hidden.bs.dropdown', '.sticky-tools', function () {
|
|
63
|
+
bottomBar.removeClass('hidden');
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
let lastScrollTop = 0;
|
|
67
|
+
const $window = $(window);
|
|
68
|
+
function onWindowScroll() {
|
|
69
|
+
const st = $window.scrollTop();
|
|
70
|
+
if (st !== lastScrollTop) {
|
|
71
|
+
const diff = Math.abs(st - lastScrollTop);
|
|
72
|
+
const scrolledDown = st > lastScrollTop;
|
|
73
|
+
const scrolledUp = st < lastScrollTop;
|
|
74
|
+
if (diff > 5) {
|
|
75
|
+
bottomBar.css({
|
|
76
|
+
bottom: !scrolledUp && scrolledDown ?
|
|
77
|
+
-bottomBar.find('.bottombar-nav').outerHeight(true) :
|
|
78
|
+
0,
|
|
79
|
+
});
|
|
80
|
+
lastScrollTop = st;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
const delayedScroll = utils.throttle(onWindowScroll, 250);
|
|
86
|
+
function enableAutohide() {
|
|
87
|
+
if (config.theme.autohideBottombar) {
|
|
88
|
+
lastScrollTop = $window.scrollTop();
|
|
89
|
+
$window.on('scroll', delayedScroll);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
hooks.on('action:posts.loading', function () {
|
|
94
|
+
$window.off('scroll', delayedScroll);
|
|
95
|
+
});
|
|
96
|
+
hooks.on('action:posts.loaded', enableAutohide);
|
|
97
|
+
hooks.on('action:ajaxify.end', function () {
|
|
98
|
+
$window.off('scroll', delayedScroll);
|
|
99
|
+
enableAutohide();
|
|
100
|
+
});
|
|
101
|
+
enableAutohide();
|
|
57
102
|
});
|
|
58
103
|
}
|
|
59
104
|
|
package/public/settings.js
CHANGED
package/scss/modals.scss
CHANGED
package/scss/sidebar.scss
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
.skin-noskin {
|
|
2
2
|
// only using colors when there is no bootswatch skin applied
|
|
3
|
-
nav.sidebar, .bottombar {
|
|
3
|
+
nav.sidebar, .bottombar-nav {
|
|
4
4
|
color: $secondary !important;
|
|
5
5
|
background-color: $light !important;
|
|
6
6
|
}
|
|
7
|
-
.bottombar {
|
|
7
|
+
.bottombar-nav {
|
|
8
8
|
.dropdown-menu {
|
|
9
9
|
color: $secondary !important;
|
|
10
10
|
background-color: $light !important;
|
|
@@ -97,7 +97,10 @@
|
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
.bottombar {
|
|
100
|
-
|
|
100
|
+
transition: bottom 150ms linear;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.bottombar-nav {
|
|
101
104
|
.nav-text {
|
|
102
105
|
font-size: 1rem;
|
|
103
106
|
color: $body-color;
|
|
@@ -8,19 +8,35 @@
|
|
|
8
8
|
|
|
9
9
|
<form id="theme-settings" role="form">
|
|
10
10
|
<div class="form-check mb-2">
|
|
11
|
-
<input class="form-check-input" type="checkbox" id="enableQuickReply" name="enableQuickReply" {{{ if config.enableQuickReply }}}checked{{{ end }}}>
|
|
11
|
+
<input class="form-check-input" type="checkbox" id="enableQuickReply" name="enableQuickReply" {{{ if config.theme.enableQuickReply }}}checked{{{ end }}}>
|
|
12
12
|
<label class="form-check-label">[[harmony:settings.enableQuickReply]]</label>
|
|
13
13
|
</div>
|
|
14
14
|
|
|
15
15
|
<div class="form-check mb-2">
|
|
16
|
-
<input class="form-check-input" type="checkbox" id="centerHeaderElements" name="centerHeaderElements" {{{ if config.centerHeaderElements }}}checked{{{ end }}}>
|
|
16
|
+
<input class="form-check-input" type="checkbox" id="centerHeaderElements" name="centerHeaderElements" {{{ if config.theme.centerHeaderElements }}}checked{{{ end }}}>
|
|
17
17
|
<label class="form-check-label">[[harmony:settings.centerHeaderElements]]</label>
|
|
18
18
|
</div>
|
|
19
19
|
|
|
20
20
|
<div class="form-check mb-2">
|
|
21
|
-
<input class="form-check-input" type="checkbox" id="stickyToolbar" name="stickyToolbar" {{{ if config.stickyToolbar }}}checked{{{ end }}}>
|
|
22
|
-
<
|
|
21
|
+
<input class="form-check-input" type="checkbox" id="stickyToolbar" name="stickyToolbar" {{{ if config.theme.stickyToolbar }}}checked{{{ end }}}>
|
|
22
|
+
<div class="form-check-label">
|
|
23
|
+
[[harmony:settings.stickyToolbar]]
|
|
24
|
+
<p class="form-text">
|
|
25
|
+
[[harmony:settings.stickyToolbar.help]]
|
|
26
|
+
</p>
|
|
27
|
+
</div>
|
|
23
28
|
</div>
|
|
29
|
+
|
|
30
|
+
<div class="form-check mb-2">
|
|
31
|
+
<input class="form-check-input" type="checkbox" id="autohideBottombar" name="autohideBottombar" {{{ if config.theme.autohideBottombar }}}checked{{{ end }}}>
|
|
32
|
+
<div class="form-check-label">
|
|
33
|
+
[[harmony:settings.autohideBottombar]]
|
|
34
|
+
<p class="form-text">
|
|
35
|
+
[[harmony:settings.autohideBottombar.help]]
|
|
36
|
+
</p>
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
|
|
24
40
|
</form>
|
|
25
41
|
|
|
26
42
|
<!-- IMPORT partials/account/footer.tpl -->
|
package/templates/category.tpl
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
<!-- IMPORT partials/breadcrumbs.tpl -->
|
|
2
2
|
<div class="d-flex flex-column gap-2">
|
|
3
|
-
<div class="d-flex gap-2 align-items-center mb-1 {{{ if config.centerHeaderElements }}}justify-content-center{{{ end }}}">
|
|
3
|
+
<div class="d-flex gap-2 align-items-center mb-1 {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}">
|
|
4
4
|
{buildCategoryIcon(@value, "40px", "rounded-1 flex-shrink-0")}
|
|
5
5
|
<h2 class="fs-2 fw-semibold mb-0 text-center">{./name}</h2>
|
|
6
6
|
</div>
|
|
7
|
-
<div class="d-flex flex-wrap gap-2 {{{ if config.centerHeaderElements }}}justify-content-center{{{ end }}}">
|
|
7
|
+
<div class="d-flex flex-wrap gap-2 {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}">
|
|
8
8
|
<span class="badge text-body border border-gray-300 stats text-xs">
|
|
9
9
|
<span title="{totalTopicCount}" class="human-readable-number fw-bold">{totalTopicCount}</span>
|
|
10
10
|
<span class="text-lowercase fw-normal">[[global:topics]]</span>
|
package/templates/footer.tpl
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
</div>
|
|
6
6
|
<!-- IMPORT partials/mobile-footer.tpl -->
|
|
7
7
|
{{{ if !isSpider }}}
|
|
8
|
-
<div class="
|
|
9
|
-
<div component="toaster/tray" class="
|
|
8
|
+
<div class="">
|
|
9
|
+
<div component="toaster/tray" class="alert-window fixed-bottom pb-5 pb-md-0 mb-5 mb-md-2 pe-3 me-md-5 ms-auto" style="width:300px; z-index: 2!important;">
|
|
10
10
|
<div id="reconnect-alert" class="alert alert-dismissible alert-warning clearfix hide" component="toaster/toast">
|
|
11
11
|
<button type="button" class="btn-close float-end" data-bs-dismiss="alert" aria-hidden="true"></button>
|
|
12
12
|
<p>[[global:reconnecting-message, {config.siteTitle}]]</p>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
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">
|
|
2
|
+
<ol class="breadcrumb mb-0 {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}" itemscope="itemscope" itemprop="breadcrumb" itemtype="http://schema.org/BreadcrumbList">
|
|
3
3
|
{{{ each breadcrumbs }}}
|
|
4
4
|
<li{{{ if @last }}} component="breadcrumb/current"{{{ end }}} itemscope="itemscope" itemprop="itemListElement" itemtype="http://schema.org/ListItem" class="breadcrumb-item {{{ if @last }}}active{{{ end }}}">
|
|
5
5
|
<meta itemprop="position" content="{@index}" />
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{{{ if (brand:logo || config.showSiteTitle)}}}
|
|
2
2
|
<div class="container brand-container">
|
|
3
|
-
<div class="col-12 d-flex border-bottom pb-3 {{{ if config.centerHeaderElements }}}justify-content-center{{{ end }}}">
|
|
3
|
+
<div class="col-12 d-flex border-bottom pb-3 {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}">
|
|
4
4
|
<div component="brand/wrapper" class="d-flex align-items-center gap-3 p-2 rounded-1 align-content-stretch ">
|
|
5
5
|
{{{ if brand:logo }}}
|
|
6
6
|
<a component="brand/anchor" href="{{{ if brand:logo:url }}}{brand:logo:url}{{{ else }}}{relative_path}/{{{ end }}}">
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
<div class="d-flex flex-column d-md-none fixed-bottom ff-secondary gap-1 align-items-center">
|
|
1
|
+
<div component="bottombar" class="bottombar d-flex flex-column d-md-none fixed-bottom ff-secondary gap-1 align-items-center">
|
|
2
2
|
|
|
3
3
|
<!-- IMPORT partials/topic/navigator-mobile.tpl -->
|
|
4
4
|
|
|
5
|
-
<div class="bottombar p-2 text-dark bg-light d-flex justify-content-between align-items-center w-100">
|
|
5
|
+
<div class="bottombar-nav p-2 text-dark bg-light d-flex justify-content-between align-items-center w-100">
|
|
6
6
|
<div class="">
|
|
7
7
|
<a href="#" role="button" class="nav-link nav-btn d-flex justify-content-between align-items-center position-relative" data-bs-toggle="dropdown">
|
|
8
8
|
<span class="position-relative">
|
|
@@ -17,15 +17,15 @@
|
|
|
17
17
|
<a class="nav-link nav-btn navigation-link px-3 py-2 {{{ if ./dropdown }}}dropdown-toggle{{{ end }}}"
|
|
18
18
|
{{{ if ./dropdown }}} href="#" role="button" data-bs-toggle="collapse" data-bs-target="#collapse-target-{@index}" onclick="event.stopPropagation();" {{{ else }}} href="{./route}"{{{ end }}} {{{ if ./id }}}id="{./id}"{{{ end }}}{{{ if ./targetBlank }}} target="_blank"{{{ end }}}>
|
|
19
19
|
<span class="d-inline-flex justify-content-between align-items-center w-100">
|
|
20
|
-
<span class="text-nowrap
|
|
20
|
+
<span class="text-nowrap">
|
|
21
21
|
{{{ if ./iconClass }}}
|
|
22
22
|
<i class="fa fa-fw {./iconClass}" data-content="{./content}"></i>
|
|
23
23
|
{{{ end }}}
|
|
24
24
|
{{{ if ./text }}}
|
|
25
|
-
<span class="nav-text
|
|
25
|
+
<span class="nav-text px-2 fw-semibold">{./text}</span>
|
|
26
26
|
{{{ end }}}
|
|
27
27
|
</span>
|
|
28
|
-
<span component="navigation/count" class="
|
|
28
|
+
<span component="navigation/count" class="badge rounded-1 bg-primary {{{ if !./content }}}hidden{{{ end }}}">{./content}</span>
|
|
29
29
|
</span>
|
|
30
30
|
</a>
|
|
31
31
|
{{{ if ./dropdown }}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<nav class="{{{ if config.stickyToolbar }}}sticky-tools{{{ end }}} navbar navbar-expand mt-4 p-0 border-0 rounded topic-main-buttons">
|
|
1
|
+
<nav class="{{{ if config.theme.stickyToolbar }}}sticky-tools{{{ end }}} navbar navbar-expand mt-4 p-0 border-0 rounded topic-main-buttons">
|
|
2
2
|
<div class="card card-header flex-row p-2 border rounded ff-secondary w-100">
|
|
3
3
|
<ul class="navbar-nav me-auto gap-2 align-items-center">
|
|
4
4
|
{{{ if loggedIn }}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<nav class="{{{ if config.openSidebars}}}open{{{ end }}} text-dark bg-light sidebar sidebar-left start-0 border-end vh-100 d-none d-md-flex flex-column justify-content-between sticky-top ff-secondary">
|
|
1
|
+
<nav class="{{{ if config.theme.openSidebars}}}open{{{ end }}} text-dark bg-light sidebar sidebar-left start-0 border-end vh-100 d-none d-md-flex flex-column justify-content-between sticky-top ff-secondary">
|
|
2
2
|
<ul id="main-nav" class="list-unstyled d-flex flex-column w-100 gap-2 mt-2">
|
|
3
3
|
{{{ each navigation }}}
|
|
4
4
|
{{{ if displayMenuItem(@root, @index) }}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<nav class="{{{ if config.openSidebars}}}open{{{ end }}} text-dark bg-light sidebar sidebar-right end-0 border-start vh-100 d-none d-md-flex flex-column sticky-top ff-secondary">
|
|
1
|
+
<nav class="{{{ if config.theme.openSidebars}}}open{{{ end }}} text-dark bg-light sidebar sidebar-right end-0 border-start vh-100 d-none d-md-flex flex-column sticky-top ff-secondary">
|
|
2
2
|
{{{ if config.loggedIn }}}
|
|
3
3
|
<ul id="logged-in-menu" class="list-unstyled d-flex flex-column w-100 gap-2 mt-2">
|
|
4
4
|
<!-- IMPORT partials/sidebar/logged-in-menu.tpl -->
|
|
@@ -1,26 +1,31 @@
|
|
|
1
|
-
<div class="d-flex
|
|
2
|
-
<div class="pagination-block text-bg-light m-2 rounded-1 border border-gray-300" style="height:
|
|
1
|
+
<div class="d-flex w-100">
|
|
2
|
+
<div class="pagination-block text-bg-light m-2 rounded-1 border border-gray-300 w-100" style="height:30px;">
|
|
3
3
|
<div class="position-relative">
|
|
4
|
-
<div class="progress-bar rounded-1 bg-info d-block position-absolute" style="height:
|
|
4
|
+
<div class="progress-bar rounded-1 bg-info d-block position-absolute" style="height:28px;"></div>
|
|
5
5
|
</div>
|
|
6
|
-
<div class="wrapper d-flex align-items-center h-100" style="padding: 5px 0px;">
|
|
7
|
-
<
|
|
6
|
+
<div class="wrapper dropup-center d-flex align-items-center justify-content-between w-100 h-100" style="padding: 5px 0px;">
|
|
7
|
+
<div class="lh-1 px-2">
|
|
8
|
+
<i class="fa fa-angle-double-up pointer fa-fw pagetop fs-5" style="z-index: 1;"></i>
|
|
9
|
+
</div>
|
|
8
10
|
|
|
9
11
|
<a href="#" class="text-reset dropdown-toggle d-inline-block px-3 text-decoration-none" data-bs-toggle="dropdown">
|
|
10
12
|
<span class="pagination-text position-relative fw-bold"></span>
|
|
11
13
|
</a>
|
|
12
14
|
|
|
13
|
-
<
|
|
15
|
+
<div class="lh-1 px-2">
|
|
16
|
+
<i class="fa fa-angle-double-down pointer fa-fw pagebottom fs-5" style="z-index: 1;"></i>
|
|
17
|
+
</div>
|
|
18
|
+
|
|
14
19
|
<ul class="dropdown-menu p-0" role="menu" style="width: 100%;">
|
|
15
20
|
<li class="p-3">
|
|
16
21
|
<div class="row">
|
|
17
22
|
<div class="col-8 post-content overflow-hidden mb-3" style="height: 350px;"></div>
|
|
18
|
-
<div class="col-4 text-end">
|
|
23
|
+
<div class="col-4 ps-0 text-end">
|
|
19
24
|
<div class="scroller-content">
|
|
20
25
|
<span class="pointer pagetop">[[topic:first-post]] <i class="fa fa-angle-double-up"></i></span>
|
|
21
26
|
<div class="scroller-container border-gray-200" style="height: 300px; border-right: 3px solid; margin-right: 5.5px;">
|
|
22
|
-
<div class="scroller-thumb position-relative" style="height: 40px;right: -6px; padding-right: 15px; margin-right: -15px;">
|
|
23
|
-
<span class="thumb-text fw-bold user-select-none position-relative" style="top: -15px;
|
|
27
|
+
<div class="scroller-thumb position-relative text-nowrap" style="height: 40px;right: -6px; padding-right: 15px; margin-right: -15px;">
|
|
28
|
+
<span class="thumb-text text-sm fw-bold user-select-none position-relative pe-2" style="top: -15px;"></span>
|
|
24
29
|
<div class="rounded-2 scroller-thumb-icon bg-primary d-inline-block position-relative" style="width: 9px; height:40px;"></div>
|
|
25
30
|
</div>
|
|
26
31
|
</div>
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
</div>
|
|
64
64
|
<div class="d-flex align-items-center gap-1 flex-grow-1 justify-content-end">
|
|
65
65
|
<span class="bookmarked opacity-0 text-primary"><i class="fa fa-bookmark-o"></i></span>
|
|
66
|
-
<a href="{config.relative_path}/post/{./pid}" class="post-index text-muted">#{increment(./index, "1")}</a>
|
|
66
|
+
<a href="{config.relative_path}/post/{./pid}" class="post-index text-muted d-none d-md-inline">#{increment(./index, "1")}</a>
|
|
67
67
|
</div>
|
|
68
68
|
</div>
|
|
69
69
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<div component="topic/reply/container" class="btn-group action-bar
|
|
1
|
+
<div component="topic/reply/container" class="btn-group action-bar {{{ if !privileges.topics:reply }}}hidden{{{ end }}}">
|
|
2
2
|
<a href="{config.relative_path}/compose?tid={tid}&title={title}" class="d-flex align-items-center btn btn-sm btn-primary px-3 fw-semibold " component="topic/reply" data-ajaxify="false" role="button"><i class="fa fa-reply d-sm-block d-md-none"></i><span class="d-none d-md-block"> [[topic:reply]]</span></a>
|
|
3
3
|
<button type="button" class="btn btn-sm btn-primary dropdown-toggle" data-bs-toggle="dropdown">
|
|
4
4
|
<span class="caret"></span>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<nav class="topic-list-header {{{ if config.stickyToolbar }}} sticky-tools{{{ end }}} navbar navbar-expand p-0 border-0 rounded mb-3">
|
|
1
|
+
<nav class="topic-list-header {{{ if config.theme.stickyToolbar }}} sticky-tools{{{ end }}} navbar navbar-expand p-0 border-0 rounded mb-3">
|
|
2
2
|
<div class="card card-header flex-row p-2 gap-1 border rounded ff-secondary w-100">
|
|
3
3
|
<ul class="navbar-nav me-auto gap-2 align-items-center">
|
|
4
4
|
{{{ if template.category }}}
|
|
@@ -114,13 +114,12 @@
|
|
|
114
114
|
{{{ end }}}
|
|
115
115
|
</div>
|
|
116
116
|
</div>
|
|
117
|
-
|
|
118
|
-
{{{ if showSelect }}}
|
|
119
|
-
<div class="position-absolute top-0 end-0 w-auto p-0">
|
|
120
|
-
<i component="topic/select" class="fa fa-square-o fs-5 text-muted pointer"></i>
|
|
121
|
-
</div>
|
|
122
|
-
{{{ end }}}
|
|
123
117
|
</div>
|
|
118
|
+
{{{ if showSelect }}}
|
|
119
|
+
<div class="position-absolute top-0 end-0 w-auto p-0">
|
|
120
|
+
<i component="topic/select" class="fa fa-square-o fs-5 text-muted pointer"></i>
|
|
121
|
+
</div>
|
|
122
|
+
{{{ end }}}
|
|
124
123
|
</div>
|
|
125
124
|
<hr class="text-muted opacity-25"/>
|
|
126
125
|
</li>
|
package/templates/topic.tpl
CHANGED
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
</div>
|
|
7
7
|
{{{ end }}}
|
|
8
8
|
|
|
9
|
-
<h2 component="post/header" class="fs-2 mb-0 text-break {{{ if config.centerHeaderElements }}}text-center{{{ end }}}" itemprop="name">
|
|
9
|
+
<h2 component="post/header" class="fs-2 mb-0 text-break {{{ if config.theme.centerHeaderElements }}}text-center{{{ end }}}" itemprop="name">
|
|
10
10
|
<span class="topic-title" component="topic/title">{title}</span>
|
|
11
11
|
</h2>
|
|
12
12
|
|
|
13
|
-
<div class="topic-info d-flex gap-2 align-items-center flex-wrap {{{ if config.centerHeaderElements }}}justify-content-center{{{ end }}}">
|
|
13
|
+
<div class="topic-info d-flex gap-2 align-items-center flex-wrap {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}">
|
|
14
14
|
<span component="topic/labels" class="d-flex gap-2">
|
|
15
15
|
<span component="topic/scheduled" class="badge badge border border-gray-300 text-primary {{{ if !scheduled }}}hidden{{{ end }}}">
|
|
16
16
|
<i class="fa fa-clock-o"></i>
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
</div>
|
|
75
75
|
{{{ end }}}
|
|
76
76
|
|
|
77
|
-
{{{ if config.enableQuickReply }}}
|
|
77
|
+
{{{ if config.theme.enableQuickReply }}}
|
|
78
78
|
<!-- IMPORT partials/topic/quickreply.tpl -->
|
|
79
79
|
{{{ end }}}
|
|
80
80
|
|
package/templates/users.tpl
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<div class="">
|
|
13
13
|
<div class="d-flex justify-content-end gap-2">
|
|
14
14
|
{{{ if showInviteButton }}}
|
|
15
|
-
<button component="user/invite" class="btn btn-primary btn-sm"><i class="fa fa-user-plus"></i> [[users:invite]]</button>
|
|
15
|
+
<button component="user/invite" class="btn btn-primary btn-sm text-nowrap"><i class="fa fa-user-plus"></i> [[users:invite]]</button>
|
|
16
16
|
{{{ end }}}
|
|
17
17
|
{{{ if displayUserSearch }}}
|
|
18
18
|
<div class="search">
|