nodebb-theme-harmony 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/languages/en-GB/harmony.json +5 -0
- package/library.js +101 -26
- package/package.json +5 -2
- package/plugin.json +14 -2
- package/public/harmony.js +101 -0
- package/scss/account.scss +38 -0
- package/scss/chats.scss +72 -0
- package/scss/common.scss +65 -0
- package/scss/fonts.scss +17 -0
- package/scss/groups.scss +30 -0
- package/scss/harmony.scss +23 -3
- package/scss/header.scss +16 -0
- package/scss/mixins.scss +183 -0
- package/scss/modals.scss +4 -0
- package/scss/modules/bottom-sheet.scss +52 -0
- package/scss/modules/breadcrumbs.scss +16 -0
- package/scss/modules/composer.scss +21 -0
- package/scss/modules/cover.scss +115 -0
- package/scss/modules/tags.scss +6 -0
- package/scss/modules/topic-navigator.scss +61 -0
- package/scss/modules/topics-list.scss +20 -0
- package/scss/modules/user-menu.scss +5 -0
- package/scss/overrides.scss +65 -0
- package/scss/sidebar.scss +125 -0
- package/scss/skins.scss +13 -0
- package/scss/status.scss +25 -0
- package/scss/topic.scss +128 -0
- package/templates/account/best.tpl +0 -2
- package/templates/account/blocks.tpl +31 -26
- package/templates/account/bookmarks.tpl +0 -2
- package/templates/account/categories.tpl +1 -3
- package/templates/account/controversial.tpl +0 -2
- package/templates/account/downvoted.tpl +0 -2
- package/templates/account/followers.tpl +14 -10
- package/templates/account/following.tpl +14 -10
- package/templates/account/groups.tpl +13 -11
- package/templates/account/ignored.tpl +0 -2
- package/templates/account/posts.tpl +29 -10
- package/templates/account/profile.tpl +76 -159
- package/templates/account/topics.tpl +32 -21
- package/templates/account/uploads.tpl +38 -35
- package/templates/account/upvoted.tpl +0 -2
- package/templates/account/watched.tpl +0 -2
- package/templates/admin/plugins/harmony.tpl +17 -0
- package/templates/categories.tpl +5 -5
- package/templates/category.tpl +26 -26
- package/templates/chat.tpl +9 -9
- package/templates/chats.tpl +5 -7
- package/templates/footer.tpl +11 -7
- package/templates/groups/details.tpl +76 -62
- package/templates/groups/list.tpl +16 -11
- package/templates/header.tpl +34 -21
- package/templates/login.tpl +51 -45
- package/templates/partials/account/admin-menu.tpl +36 -0
- package/templates/partials/account/category-item.tpl +17 -17
- package/templates/partials/account/header.tpl +77 -35
- package/templates/partials/account/sidebar-left.tpl +82 -0
- package/templates/partials/breadcrumbs.tpl +4 -12
- package/templates/partials/categories/item.tpl +48 -44
- package/templates/partials/categories/lastpost.tpl +17 -19
- package/templates/partials/categories/link.tpl +5 -13
- package/templates/partials/category/sort.tpl +4 -7
- package/templates/partials/category/subcategory.tpl +4 -4
- package/templates/partials/category/tools.tpl +6 -9
- package/templates/partials/category/watch.tpl +7 -11
- package/templates/partials/category-filter-content.tpl +5 -6
- package/templates/partials/category-filter.tpl +0 -2
- package/templates/partials/category-selector-content.tpl +4 -5
- package/templates/partials/category-selector.tpl +0 -2
- package/templates/partials/chats/dropdown.tpl +24 -32
- package/templates/partials/chats/message-window.tpl +7 -7
- package/templates/partials/chats/message.tpl +34 -34
- package/templates/partials/chats/recent_room.tpl +16 -29
- package/templates/partials/chats/system-message.tpl +4 -4
- package/templates/partials/chats/user.tpl +1 -3
- package/templates/partials/groups/admin.tpl +82 -175
- package/templates/partials/groups/badge.tpl +1 -3
- package/templates/partials/groups/invited.tpl +31 -0
- package/templates/partials/groups/list.tpl +14 -21
- package/templates/partials/groups/memberlist.tpl +28 -24
- package/templates/partials/groups/pending.tpl +28 -0
- package/templates/partials/groups/sidebar-left.tpl +27 -0
- package/templates/partials/mobile-footer.tpl +70 -0
- package/templates/partials/notifications_list.tpl +19 -27
- package/templates/partials/paginator.tpl +22 -24
- package/templates/partials/post_bar.tpl +23 -18
- package/templates/partials/posts_list.tpl +0 -2
- package/templates/partials/posts_list_item.tpl +14 -29
- package/templates/partials/quick-search-results.tpl +36 -25
- package/templates/partials/search-results.tpl +4 -1
- package/templates/partials/sidebar/chats.tpl +53 -0
- package/templates/partials/sidebar/drafts.tpl +41 -0
- package/templates/partials/sidebar/logged-out-menu.tpl +38 -0
- package/templates/partials/sidebar/notifications.tpl +28 -0
- package/templates/partials/sidebar/search-mobile.tpl +29 -0
- package/templates/partials/sidebar/search.tpl +30 -0
- package/templates/partials/sidebar/user-menu.tpl +87 -0
- package/templates/partials/sidebar-left.tpl +40 -0
- package/templates/partials/sidebar-right.tpl +41 -0
- package/templates/partials/skin-switcher.tpl +35 -0
- package/templates/partials/tags_list.tpl +0 -2
- package/templates/partials/toast.tpl +6 -8
- package/templates/partials/topic/event.tpl +4 -20
- package/templates/partials/topic/navigator.tpl +20 -41
- package/templates/partials/topic/necro-post.tpl +5 -4
- package/templates/partials/topic/post-menu.tpl +23 -2
- package/templates/partials/topic/post-placeholder.tpl +15 -0
- package/templates/partials/topic/post.tpl +67 -64
- package/templates/partials/topic/quickreply.tpl +12 -14
- package/templates/partials/topic/reactions.tpl +0 -2
- package/templates/partials/topic/reply-button.tpl +16 -20
- package/templates/partials/topic/selection-tooltip.tpl +0 -2
- package/templates/partials/topic/sort.tpl +8 -6
- package/templates/partials/topic/stats.tpl +15 -14
- package/templates/partials/topic/tag.tpl +1 -3
- package/templates/partials/topic/tags.tpl +1 -5
- package/templates/partials/topic/tools.tpl +13 -0
- package/templates/partials/topic/watch.tpl +15 -13
- package/templates/partials/topic-filters.tpl +4 -5
- package/templates/partials/topic-list-bar.tpl +54 -0
- package/templates/partials/topic-terms.tpl +4 -5
- package/templates/partials/topics_list.tpl +109 -100
- package/templates/partials/users/item.tpl +7 -0
- package/templates/partials/users_list.tpl +11 -60
- package/templates/partials/users_list_menu.tpl +10 -18
- package/templates/popular.tpl +1 -18
- package/templates/recent.tpl +8 -24
- package/templates/register.tpl +74 -60
- package/templates/tag.tpl +3 -15
- package/templates/tags.tpl +3 -4
- package/templates/top.tpl +1 -18
- package/templates/topic.tpl +39 -43
- package/templates/unread.tpl +1 -22
- package/templates/users.tpl +17 -17
- package/templates/admin/plugins/persona.tpl +0 -29
- package/templates/partials/account/menu.tpl +0 -103
- package/templates/partials/header/user-menu.tpl +0 -87
- package/templates/partials/menu.tpl +0 -188
- package/templates/partials/thread_tools.tpl +0 -10
|
@@ -1,168 +1,85 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
<div class="account">
|
|
1
|
+
<div class="account mx-auto">
|
|
4
2
|
<!-- IMPORT partials/account/header.tpl -->
|
|
5
3
|
|
|
6
|
-
<div class="
|
|
7
|
-
|
|
8
|
-
<h2 class="username"><!-- IF !banned -->@{username}<!-- ELSE -->[[user:banned]]<!-- ENDIF !banned --></h2>
|
|
9
|
-
<!-- IF isAdminOrGlobalModeratorOrModerator -->
|
|
10
|
-
<!-- IF banned -->
|
|
11
|
-
<div class="text-center">
|
|
12
|
-
<!-- IF banned_until -->
|
|
13
|
-
[[user:info.banned-until, {banned_until_readable}]]
|
|
14
|
-
<!-- ELSE -->
|
|
15
|
-
[[user:info.banned-permanently]]
|
|
16
|
-
<!-- ENDIF banned_until -->
|
|
17
|
-
</div>
|
|
18
|
-
<!-- ENDIF banned -->
|
|
19
|
-
<!-- ENDIF isAdminOrGlobalModeratorOrModerator -->
|
|
20
|
-
|
|
21
|
-
<!-- IF selectedGroup.length -->
|
|
22
|
-
<div class="text-center">
|
|
23
|
-
{{{each selectedGroup}}}
|
|
24
|
-
<!-- IF selectedGroup.slug -->
|
|
25
|
-
<!-- IMPORT partials/groups/badge.tpl -->
|
|
26
|
-
<!-- ENDIF selectedGroup.slug -->
|
|
27
|
-
{{{end}}}
|
|
28
|
-
</div>
|
|
29
|
-
<br/>
|
|
30
|
-
<!-- ENDIF selectedGroup.length -->
|
|
31
|
-
|
|
32
|
-
<!-- IF aboutme -->
|
|
33
|
-
<span component="aboutme" class="text-center aboutme">{aboutmeParsed}</span>
|
|
34
|
-
<!-- ENDIF aboutme -->
|
|
35
|
-
|
|
36
|
-
<div class="account-stats">
|
|
37
|
-
<!-- IF !reputation:disabled -->
|
|
38
|
-
<div class="stat">
|
|
39
|
-
<div class="human-readable-number" title="{reputation}">{reputation}</div>
|
|
40
|
-
<span class="stat-label">[[global:reputation]]</span>
|
|
41
|
-
</div>
|
|
42
|
-
<!-- ENDIF !reputation:disabled -->
|
|
43
|
-
|
|
44
|
-
<div class="stat">
|
|
45
|
-
<div class="human-readable-number" title="{profileviews}">{profileviews}</div>
|
|
46
|
-
<span class="stat-label">[[user:profile_views]]</span>
|
|
47
|
-
</div>
|
|
48
|
-
|
|
49
|
-
<div class="stat">
|
|
50
|
-
<div><a class="human-readable-number" title="{counts.posts}" href="{config.relative_path}/user/{userslug}/posts">{counts.posts}</a></div>
|
|
51
|
-
<span class="stat-label">[[global:posts]]</span>
|
|
52
|
-
</div>
|
|
4
|
+
<div class="row gx-5">
|
|
5
|
+
<!-- IMPORT partials/account/sidebar-left.tpl -->
|
|
53
6
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
7
|
+
<div class="col-12 col-md-9 col-lg-10 ps-md-5">
|
|
8
|
+
{{{ if aboutme }}}
|
|
9
|
+
<div component="aboutme" class="text-sm">
|
|
10
|
+
{aboutmeParsed}
|
|
57
11
|
</div>
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
<
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
[[global:recentips]]
|
|
128
|
-
</h5>
|
|
129
|
-
<div class="card-body">
|
|
130
|
-
{{{each ips}}}
|
|
131
|
-
<div>{ips}</div>
|
|
132
|
-
{{{end}}}
|
|
12
|
+
{{{ end }}}
|
|
13
|
+
|
|
14
|
+
<div class="account-stats container">
|
|
15
|
+
<div class="row row-cols-2 row-cols-lg-3 row-cols-xl-4 g-2">
|
|
16
|
+
{{{ if !reputation:disabled }}}
|
|
17
|
+
<div class="stat">
|
|
18
|
+
<div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100">
|
|
19
|
+
<span class="stat-label text-xs fw-semibold">[[global:reputation]]</span>
|
|
20
|
+
<span class="human-readable-number fs-2 ff-secondary" title="{reputation}">{reputation}</span>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
{{{ end }}}
|
|
24
|
+
<div class="stat">
|
|
25
|
+
<div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100">
|
|
26
|
+
<span class="stat-label text-xs fw-semibold">[[user:profile_views]]</span>
|
|
27
|
+
<span class="human-readable-number fs-2 ff-secondary" title="
|
|
28
|
+
{profileviews}">{profileviews}</span>
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
<div class="stat">
|
|
33
|
+
<div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100 gap-2">
|
|
34
|
+
<span class="stat-label text-xs fw-semibold"><i class="text-muted fa-solid fa-cake-candles"></i> <span>[[user:joined]]</span></span>
|
|
35
|
+
<span class="timeago fs-6 ff-secondary" title="{joindateISO}"></span>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
<div class="stat">
|
|
40
|
+
<div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100 gap-2">
|
|
41
|
+
<span class="stat-label text-xs fw-semibold"><i class="text-muted fa-solid fa-clock"></i> <span>[[user:lastonline]]</span></span>
|
|
42
|
+
<span class="timeago fs-6 ff-secondary" title="{lastonlineISO}"></span>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
{{{ if email }}}
|
|
47
|
+
<div class="stat">
|
|
48
|
+
<div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100 gap-2">
|
|
49
|
+
<span class="stat-label text-xs fw-semibold"><i class="text-muted fa-solid fa-envelope"></i> <span>[[user:email]]</span> {{{ if emailHidden}}}<span class="text-lowercase">([[global:hidden]])</span>{{{ end }}}</span>
|
|
50
|
+
<span class="text-sm text-break ff-secondary">{email}</span>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
{{{ end }}}
|
|
54
|
+
|
|
55
|
+
{{{ if websiteName }}}
|
|
56
|
+
<div class="stat">
|
|
57
|
+
<div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100 gap-2">
|
|
58
|
+
<span class="stat-label text-xs fw-semibold"><i class="text-muted fa-solid fa-globe"></i> <span>[[user:website]]</span></span>
|
|
59
|
+
<a class="text-sm text-break ff-secondary text-underline text-reset" href="{websiteLink}" rel="nofollow noopener noreferrer">{websiteName}</a>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
{{{ end }}}
|
|
63
|
+
|
|
64
|
+
{{{ if location }}}
|
|
65
|
+
<div class="stat">
|
|
66
|
+
<div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100 gap-2">
|
|
67
|
+
<span class="stat-label text-xs fw-semibold"><i class="text-muted fa-solid fa-map-pin"></i> <span>[[user:location]]</span></span>
|
|
68
|
+
<span class="fs-6 ff-secondary">{location}</span>
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
71
|
+
{{{ end }}}
|
|
72
|
+
|
|
73
|
+
{{{ if age }}}
|
|
74
|
+
<div class="stat">
|
|
75
|
+
<div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100 gap-2">
|
|
76
|
+
<span class="stat-label text-xs fw-semibold"><span>[[user:age]]</span></span>
|
|
77
|
+
<span class="fs-6 ff-secondary">{age}</span>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
{{{ end }}}
|
|
133
81
|
</div>
|
|
134
82
|
</div>
|
|
135
83
|
</div>
|
|
136
84
|
</div>
|
|
137
|
-
<!-- ENDIF ips.length -->
|
|
138
|
-
|
|
139
|
-
<div class="row">
|
|
140
|
-
{{{ if bestPosts.length }}}
|
|
141
|
-
<div class="col-lg-12 col-12">
|
|
142
|
-
<h1>[[pages:account/best, {username}]]</h1>
|
|
143
|
-
|
|
144
|
-
<div class="col-12">
|
|
145
|
-
<ul component="posts" class="posts-list list-unstyled">
|
|
146
|
-
{{{each bestPosts}}}
|
|
147
|
-
<!-- IMPORT partials/posts_list_item.tpl -->
|
|
148
|
-
{{{end}}}
|
|
149
|
-
</ul>
|
|
150
|
-
</div>
|
|
151
|
-
</div>
|
|
152
|
-
{{{ end }}}
|
|
153
|
-
{{{ if latestPosts.length}}}
|
|
154
|
-
<div class="col-lg-12 col-12">
|
|
155
|
-
<h1>[[pages:account/latest-posts, {username}]]</h1>
|
|
156
|
-
<div class="col-12">
|
|
157
|
-
<ul component="posts" class="posts-list list-unstyled">
|
|
158
|
-
{{{each latestPosts}}}
|
|
159
|
-
<!-- IMPORT partials/posts_list_item.tpl -->
|
|
160
|
-
{{{end}}}
|
|
161
|
-
</ul>
|
|
162
|
-
</div>
|
|
163
|
-
</div>
|
|
164
|
-
{{{ end }}}
|
|
165
|
-
</div>
|
|
166
|
-
|
|
167
|
-
<div id="user-action-alert" class="alert alert-success hide"></div>
|
|
168
85
|
</div>
|
|
@@ -1,32 +1,43 @@
|
|
|
1
|
-
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
-
|
|
3
1
|
<div class="account">
|
|
4
2
|
<!-- IMPORT partials/account/header.tpl -->
|
|
5
3
|
|
|
6
|
-
<div class="row">
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
<
|
|
12
|
-
|
|
13
|
-
{{{
|
|
14
|
-
<
|
|
15
|
-
{{{end}}}
|
|
16
|
-
|
|
4
|
+
<div class="row gx-5">
|
|
5
|
+
<!-- IMPORT partials/account/sidebar-left.tpl -->
|
|
6
|
+
<div class="col-12 col-md-9 col-lg-10 ps-md-5">
|
|
7
|
+
<div class="d-flex justify-content-between align-items-center mb-3">
|
|
8
|
+
<h3 class="fw-semibold fs-5 mb-0">[[global:topics]]</h3>
|
|
9
|
+
<div class="d-flex gap-1">
|
|
10
|
+
<a href="{config.relative_path}/user/{userslug}/topics" class="btn-ghost-sm fw-semibold {{{ if template.account/topics }}}active{{{ end }}}">[[global:header.recent]]</a>
|
|
11
|
+
{{{ if canEdit }}}
|
|
12
|
+
<a href="{config.relative_path}/user/{userslug}/watched"class="btn-ghost-sm fw-semibold {{{ if template.account/watched }}}active{{{ end }}}">[[user:watched]]</a>
|
|
13
|
+
<a href="{config.relative_path}/user/{userslug}/ignored" class="btn-ghost-sm fw-semibold {{{ if template.account/ignored }}}active{{{ end }}}">[[user:ignored]]</a>
|
|
14
|
+
{{{ end }}}
|
|
15
|
+
</div>
|
|
17
16
|
</div>
|
|
18
|
-
</div>
|
|
19
|
-
<!-- ENDIF showSort -->
|
|
20
17
|
|
|
21
|
-
|
|
18
|
+
{{{ if showSort }}}
|
|
19
|
+
<div class="btn-toolbar justify-content-end mb-2">
|
|
20
|
+
<div class="btn-group bottom-sheet" component="thread/sort">
|
|
21
|
+
<button class="btn-ghost-sm dropdown-toggle" data-bs-toggle="dropdown" type="button"><span>[[topic:sort_by]]</span></button>
|
|
22
|
+
<ul class="dropdown-menu dropdown-menu-end">
|
|
23
|
+
{{{each sortOptions }}}
|
|
24
|
+
<li><a class="dropdown-item" href="{config.relative_path}{sortOptions.url}"><i class="fa fa-fw {{{if sortOptions.selected}}}fa-check{{{end}}}"></i>{sortOptions.name}</a></li>
|
|
25
|
+
{{{end}}}
|
|
26
|
+
</ul>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
{{{ end }}}
|
|
30
|
+
|
|
31
|
+
{{{ if !topics.length }}}
|
|
22
32
|
<div class="alert alert-warning text-center">{noItemsFoundKey}</div>
|
|
23
|
-
|
|
33
|
+
{{{ end }}}
|
|
24
34
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
35
|
+
<div class="category">
|
|
36
|
+
<!-- IMPORT partials/topics_list.tpl -->
|
|
37
|
+
{{{ if config.usePagination }}}
|
|
28
38
|
<!-- IMPORT partials/paginator.tpl -->
|
|
29
|
-
|
|
39
|
+
{{{ end }}}
|
|
40
|
+
</div>
|
|
30
41
|
</div>
|
|
31
42
|
</div>
|
|
32
43
|
</div>
|
|
@@ -1,43 +1,46 @@
|
|
|
1
|
-
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
-
|
|
3
1
|
<div class="account">
|
|
4
2
|
<!-- IMPORT partials/account/header.tpl -->
|
|
5
|
-
<div class="row">
|
|
6
|
-
|
|
3
|
+
<div class="row gx-5">
|
|
4
|
+
<!-- IMPORT partials/account/sidebar-left.tpl -->
|
|
5
|
+
|
|
6
|
+
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
<div class="alert alert-info text-center">[[uploads:private-uploads-info]]</div>
|
|
10
|
-
<!-- ELSE -->
|
|
11
|
-
<div class="alert alert-info text-center">[[uploads:public-uploads-info]]</div>
|
|
12
|
-
<!-- ENDIF privateUploads -->
|
|
8
|
+
<div class="col-12 col-md-9 col-lg-10 ps-md-5">
|
|
13
9
|
|
|
14
|
-
|
|
10
|
+
<h3 class="fw-semibold fs-5">{title}</h3>
|
|
11
|
+
|
|
12
|
+
<!-- IF privateUploads -->
|
|
13
|
+
<div class="alert alert-info text-center">[[uploads:private-uploads-info]]</div>
|
|
14
|
+
<!-- ELSE -->
|
|
15
|
+
<div class="alert alert-info text-center">[[uploads:public-uploads-info]]</div>
|
|
16
|
+
<!-- ENDIF privateUploads -->
|
|
17
|
+
|
|
18
|
+
<!-- IF !uploads.length -->
|
|
15
19
|
<div class="alert alert-warning text-center">[[uploads:no-uploads-found]]</div>
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
</table>
|
|
20
|
+
<!-- ENDIF !uploads.length -->
|
|
21
|
+
|
|
22
|
+
<table class="table table-striped">
|
|
23
|
+
<thead>
|
|
24
|
+
<tr>
|
|
25
|
+
<th></th>
|
|
26
|
+
<th></th>
|
|
27
|
+
</tr>
|
|
28
|
+
</thead>
|
|
29
|
+
<tbody>
|
|
30
|
+
{{{each uploads}}}
|
|
31
|
+
<tr data-name="{uploads.name}">
|
|
32
|
+
<td>
|
|
33
|
+
<a href="{config.relative_path}{uploads.url}">{uploads.url}</a>
|
|
34
|
+
</td>
|
|
35
|
+
<td>
|
|
36
|
+
<div class="btn-group ">
|
|
37
|
+
<button class="btn btn-danger btn-sm" data-action="delete"><i class="fa fa-trash"></i></button>
|
|
38
|
+
</div>
|
|
39
|
+
</td>
|
|
40
|
+
</tr>
|
|
41
|
+
{{{end}}}
|
|
42
|
+
</tbody>
|
|
43
|
+
</table>
|
|
41
44
|
|
|
42
45
|
<!-- IMPORT partials/paginator.tpl -->
|
|
43
46
|
</div>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<div class="row">
|
|
2
|
+
<div class="col-sm-2 col-12 settings-header">Settings</div>
|
|
3
|
+
<div class="col-sm-10 col-12">
|
|
4
|
+
<form role="form" class="harmony-settings">
|
|
5
|
+
<div class="form-check form-switch">
|
|
6
|
+
<input type="checkbox" class="form-check-input" id="enableQuickReply" name="enableQuickReply" />
|
|
7
|
+
<label for="enableQuickReply" class="form-check-label">Enable quick reply</label>
|
|
8
|
+
</div>
|
|
9
|
+
<div class="form-check form-switch">
|
|
10
|
+
<input type="checkbox" class="form-check-input" id="centerHeaderElements" name="centerHeaderElements" />
|
|
11
|
+
<label for="centerHeaderElements" class="form-check-label">Center header elements</label>
|
|
12
|
+
</div>
|
|
13
|
+
</form>
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
<!-- IMPORT admin/partials/save_button.tpl -->
|
package/templates/categories.tpl
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
-
|
|
3
1
|
<!-- IMPORT partials/breadcrumbs.tpl -->
|
|
4
2
|
<div data-widget-area="header">
|
|
5
3
|
{{{ each widgets.header }}}
|
|
@@ -10,14 +8,16 @@
|
|
|
10
8
|
<div class="{{{ if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
|
|
11
9
|
{{{ if pagination.pages.length }}}
|
|
12
10
|
<div><!-- IMPORT partials/category-selector.tpl --></div>
|
|
13
|
-
{{{ else }}}
|
|
14
|
-
<h1 class="categories-title">[[pages:categories]]</h1>
|
|
15
11
|
{{{ end }}}
|
|
16
|
-
<ul class="categories" itemscope itemtype="http://www.schema.org/ItemList">
|
|
12
|
+
<ul class="categories list-unstyled" itemscope itemtype="http://www.schema.org/ItemList">
|
|
17
13
|
{{{ each categories }}}
|
|
14
|
+
{{{ if !@first }}}
|
|
15
|
+
<hr class="text-muted opacity-25"/>
|
|
16
|
+
{{{ end }}}
|
|
18
17
|
<!-- IMPORT partials/categories/item.tpl -->
|
|
19
18
|
{{{ end }}}
|
|
20
19
|
</ul>
|
|
20
|
+
|
|
21
21
|
<!-- IMPORT partials/paginator.tpl -->
|
|
22
22
|
</div>
|
|
23
23
|
<div data-widget-area="sidebar" class="col-lg-3 col-sm-12 {{{ if !widgets.sidebar.length }}}hidden{{{ end }}}">
|
package/templates/category.tpl
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
-
|
|
3
1
|
<!-- IMPORT partials/breadcrumbs.tpl -->
|
|
2
|
+
|
|
3
|
+
{{{ if widgets.header.length }}}
|
|
4
4
|
<div data-widget-area="header">
|
|
5
5
|
{{{ each widgets.header }}}
|
|
6
6
|
{{widgets.header.html}}
|
|
7
7
|
{{{ end }}}
|
|
8
8
|
</div>
|
|
9
|
-
|
|
10
|
-
<div class="category {{{if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
|
|
11
|
-
<!-- IMPORT partials/category/subcategory.tpl -->
|
|
9
|
+
{{{ end }}}
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
11
|
+
<div class="d-flex flex-column gap-2">
|
|
12
|
+
<div class="d-flex gap-2 align-items-center mb-1 {{{ if config.centerHeaderElements }}}justify-content-center{{{ end }}}">
|
|
13
|
+
{buildCategoryIcon(@value, "40px", "rounded-1 flex-shrink-0")}
|
|
14
|
+
<h2 class="fs-2 fw-semibold mb-0 text-center">{./name}</h2>
|
|
15
|
+
</div>
|
|
16
|
+
<div class="d-flex flex-wrap gap-2 {{{ if config.centerHeaderElements }}}justify-content-center{{{ end }}}">
|
|
17
|
+
<span class="badge text-body border border-gray-300 stats text-xs">
|
|
18
|
+
<span title="{totalTopicCount}" class="human-readable-number fw-bold">{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="human-readable-number fw-bold">{totalPostCount}</span>
|
|
23
|
+
<span class="text-lowercase fw-normal">[[global:posts]]</span>
|
|
24
|
+
</span>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
22
27
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
<!-- IMPORT partials/category/watch.tpl -->
|
|
29
|
-
<!-- IMPORT partials/category/sort.tpl -->
|
|
30
|
-
<!-- IMPORT partials/category/tools.tpl -->
|
|
31
|
-
</div>
|
|
32
|
-
</div>
|
|
28
|
+
<div class="row mt-3">
|
|
29
|
+
<div class="category d-flex flex-column {{{if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
|
|
30
|
+
<!-- IMPORT partials/category/subcategory.tpl -->
|
|
31
|
+
|
|
32
|
+
<!-- IMPORT partials/topic-list-bar.tpl -->
|
|
33
33
|
|
|
34
34
|
{{{ if !topics.length }}}
|
|
35
35
|
{{{ if privileges.topics:create }}}
|
|
@@ -58,8 +58,8 @@
|
|
|
58
58
|
{{{end}}}
|
|
59
59
|
</div>
|
|
60
60
|
|
|
61
|
-
|
|
61
|
+
{{{ if !config.usePagination }}}
|
|
62
62
|
<noscript>
|
|
63
63
|
<!-- IMPORT partials/paginator.tpl -->
|
|
64
64
|
</noscript>
|
|
65
|
-
|
|
65
|
+
{{{ end }}}
|
package/templates/chat.tpl
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
<div id="chat-modal" class="chat-modal modal hide" tabindex="-1" role="dialog" aria-labelledby="Chat" aria-hidden="true" data-backdrop="none">
|
|
1
|
+
<div id="chat-modal" class="chat-modal d-flex flex-nowrap modal hide" tabindex="-1" role="dialog" aria-labelledby="Chat" aria-hidden="true" data-backdrop="none">
|
|
4
2
|
<div class="modal-dialog">
|
|
5
3
|
<div class="modal-content">
|
|
6
4
|
<div class="modal-header d-flex">
|
|
7
|
-
<div class="fs-5 flex-grow-1" component="chat/room/name"
|
|
5
|
+
<div class="fs-5 flex-grow-1" component="chat/room/name"><!-- IF roomName -->{roomName}<!-- ELSE -->{usernames}<!-- ENDIF roomName --></div>
|
|
8
6
|
<button type="button" class="btn btn-link d-none d-md-block p-2 text-muted align-text-top" data-action="maximize">
|
|
9
7
|
<span aria-hidden="true"><i class="fa fa-fw fa-expand"></i></span>
|
|
10
8
|
<span class="sr-only">[[modules:chat.maximize]]</span>
|
|
@@ -18,18 +16,20 @@
|
|
|
18
16
|
<button id="chat-close-btn" type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
19
17
|
</div>
|
|
20
18
|
|
|
21
|
-
<div class="modal-body">
|
|
19
|
+
<div class="modal-body d-flex flex-column" style="height: 500px;">
|
|
22
20
|
<div class="position-relative">
|
|
23
21
|
<div component="chat/messages/scroll-up-alert" class="position-absolute scroll-up-alert alert alert-info hidden w-100" role="button" style="z-index: 1;">[[modules:chat.scroll-up-alert]]</div>
|
|
24
22
|
</div>
|
|
25
|
-
<ul class="chat-content" component="chat/messages">
|
|
23
|
+
<ul class="chat-content p-0 m-0 list-unstyled d-flex flex-column overflow-auto flex-grow-1" component="chat/messages">
|
|
26
24
|
<!-- IMPORT partials/chats/messages.tpl -->
|
|
27
25
|
</ul>
|
|
28
26
|
|
|
29
|
-
<div component="chat/composer">
|
|
30
|
-
<
|
|
27
|
+
<div component="chat/composer" class="d-flex">
|
|
28
|
+
<div class="flex-grow-1 position-relative">
|
|
29
|
+
<textarea component="chat/input" placeholder="[[modules:chat.placeholder]]" class="form-control chat-input mousetrap" rows="2"></textarea>
|
|
30
|
+
<span component="chat/message/remaining" class="text-muted position-absolute me-1 mb-1" style="right: 0px; bottom:0px;">{maximumChatMessageLength}</span>
|
|
31
|
+
</div>
|
|
31
32
|
<button class="btn btn-primary" type="button" data-action="send"><i class="fa fa-fw fa-2x fa-paper-plane"></i></button>
|
|
32
|
-
<span component="chat/message/remaining">{maximumChatMessageLength}</span>
|
|
33
33
|
<form component="chat/upload" method="post" enctype="multipart/form-data">
|
|
34
34
|
<input type="file" name="files[]" multiple class="hidden"/>
|
|
35
35
|
</form>
|
package/templates/chats.tpl
CHANGED
|
@@ -1,20 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
<div class="
|
|
4
|
-
<div component="chat/nav-wrapper" data-loaded="{{{ if roomId }}}1{{{ else }}}0{{{ end }}}">
|
|
5
|
-
<div class="chat-search dropdown">
|
|
1
|
+
<div class="chats-full d-flex gap-1 vh-100 py-3">
|
|
2
|
+
<div class="d-flex flex-column h-100" component="chat/nav-wrapper" data-loaded="{{{ if roomId }}}1{{{ else }}}0{{{ end }}}">
|
|
3
|
+
<div class="chat-search dropdown mb-2">
|
|
6
4
|
<input class="form-control" type="text" component="chat/search" placeholder="[[users:search-user-for-chat]]" data-bs-toggle="dropdown" />
|
|
7
5
|
<ul component="chat/search/list" class="dropdown-menu">
|
|
8
6
|
<li><a href="#" class="dropdown-item">[[admin/menu:search.start-typing]]</a></li>
|
|
9
7
|
</ul>
|
|
10
8
|
</div>
|
|
11
|
-
<ul component="chat/recent" class="chats-list list-unstyled" data-nextstart="{nextStart}">
|
|
9
|
+
<ul component="chat/recent" class="chats-list list-unstyled overflow-auto mb-0 pe-2" data-nextstart="{nextStart}">
|
|
12
10
|
{{{each rooms}}}
|
|
13
11
|
<!-- IMPORT partials/chats/recent_room.tpl -->
|
|
14
12
|
{{{end}}}
|
|
15
13
|
</ul>
|
|
16
14
|
</div>
|
|
17
|
-
<div component="chat/main-wrapper">
|
|
15
|
+
<div class="flex-1 ms-md-2 ps-md-2 border-1 border-start-md" component="chat/main-wrapper">
|
|
18
16
|
<!-- IMPORT partials/chats/message-window.tpl -->
|
|
19
17
|
</div>
|
|
20
18
|
<div class="imagedrop"><div>[[topic:composer.drag_and_drop_images]]</div></div>
|
package/templates/footer.tpl
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
1
|
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
</div><!-- /.container#content -->
|
|
3
|
+
</main>
|
|
4
|
+
<!-- IMPORT partials/sidebar-right.tpl -->
|
|
5
|
+
</div>
|
|
6
|
+
<!-- IMPORT partials/mobile-footer.tpl -->
|
|
5
7
|
{{{ if !isSpider }}}
|
|
6
|
-
<div
|
|
7
|
-
<div
|
|
8
|
-
<
|
|
9
|
-
|
|
8
|
+
<div class="row">
|
|
9
|
+
<div component="toaster/tray" class="col-12 col-md-3 alert-window fixed-bottom pb-3 mb-5 mb-md-2 me-md-5 ms-auto">
|
|
10
|
+
<div id="reconnect-alert" class="alert alert-dismissible alert-warning clearfix hide" component="toaster/toast">
|
|
11
|
+
<button type="button" class="btn-close float-end" data-bs-dismiss="alert" aria-hidden="true"></button>
|
|
12
|
+
<p>[[global:reconnecting-message, {config.siteTitle}]]</p>
|
|
13
|
+
</div>
|
|
10
14
|
</div>
|
|
11
15
|
</div>
|
|
12
16
|
{{{ end }}}
|