nodebb-theme-harmony 2.0.0-pre.9 → 2.0.1

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.
Files changed (163) hide show
  1. package/.eslintrc +3 -3
  2. package/README.md +22 -19
  3. package/lib/controllers.js +29 -29
  4. package/library.js +184 -190
  5. package/package.json +48 -48
  6. package/plugin.json +24 -25
  7. package/public/.eslintrc +3 -3
  8. package/public/admin.js +15 -15
  9. package/public/harmony.js +287 -287
  10. package/public/settings.js +31 -31
  11. package/renovate.json +6 -6
  12. package/scss/account.scss +27 -27
  13. package/scss/category.scss +3 -3
  14. package/scss/chats.scss +11 -11
  15. package/scss/common.scss +122 -128
  16. package/scss/fonts.scss +19 -19
  17. package/scss/groups.scss +22 -22
  18. package/scss/harmony.scss +24 -25
  19. package/scss/header.scss +15 -15
  20. package/scss/mixins.scss +183 -176
  21. package/scss/modals.scss +6 -6
  22. package/scss/modules/breadcrumbs.scss +15 -15
  23. package/scss/modules/cover.scss +102 -104
  24. package/scss/modules/filters.scss +7 -7
  25. package/scss/modules/nprogress.scss +80 -80
  26. package/scss/modules/paginator.scss +23 -23
  27. package/scss/modules/tags.scss +5 -5
  28. package/scss/modules/topic-navigator.scss +52 -52
  29. package/scss/modules/topics-list.scss +40 -40
  30. package/scss/modules/user-menu.scss +10 -10
  31. package/scss/overrides.scss +65 -61
  32. package/scss/sidebar.scss +188 -189
  33. package/scss/skins.scss +58 -49
  34. package/scss/status.scss +24 -24
  35. package/scss/topic.scss +130 -138
  36. package/templates/account/blocks.tpl +51 -40
  37. package/templates/account/categories.tpl +63 -63
  38. package/templates/account/consent.tpl +73 -73
  39. package/templates/account/edit/password.tpl +34 -34
  40. package/templates/account/edit/username.tpl +29 -30
  41. package/templates/account/edit.tpl +137 -122
  42. package/templates/account/followers.tpl +14 -14
  43. package/templates/account/following.tpl +15 -15
  44. package/templates/account/groups.tpl +15 -15
  45. package/templates/account/info.tpl +270 -201
  46. package/templates/account/posts.tpl +35 -35
  47. package/templates/account/profile.tpl +92 -95
  48. package/templates/account/read.tpl +1 -0
  49. package/templates/account/sessions.tpl +8 -8
  50. package/templates/account/settings.tpl +236 -236
  51. package/templates/account/shares.tpl +20 -0
  52. package/templates/account/tags.tpl +12 -12
  53. package/templates/account/theme.tpl +63 -63
  54. package/templates/account/topics.tpl +44 -43
  55. package/templates/account/uploads.tpl +37 -37
  56. package/templates/admin/plugins/harmony.tpl +57 -56
  57. package/templates/categories.tpl +29 -29
  58. package/templates/category.tpl +72 -72
  59. package/templates/footer.tpl +17 -17
  60. package/templates/groups/details.tpl +86 -86
  61. package/templates/groups/list.tpl +58 -56
  62. package/templates/groups/members.tpl +9 -9
  63. package/templates/header.tpl +45 -45
  64. package/templates/notifications.tpl +32 -32
  65. package/templates/partials/account/admin-menu.tpl +36 -36
  66. package/templates/partials/account/category-item.tpl +22 -22
  67. package/templates/partials/account/footer.tpl +2 -2
  68. package/templates/partials/account/header.tpl +98 -98
  69. package/templates/partials/account/session-list.tpl +18 -18
  70. package/templates/partials/account/sidebar-left.tpl +116 -102
  71. package/templates/partials/breadcrumbs-json-ld.tpl +16 -26
  72. package/templates/partials/breadcrumbs.tpl +12 -12
  73. package/templates/partials/buttons/newTopic.tpl +22 -22
  74. package/templates/partials/categories/item.tpl +56 -56
  75. package/templates/partials/categories/lastpost.tpl +24 -24
  76. package/templates/partials/categories/link.tpl +4 -4
  77. package/templates/partials/category/subcategory.tpl +18 -18
  78. package/templates/partials/category/tags.tpl +3 -3
  79. package/templates/partials/cookie-consent.tpl +6 -6
  80. package/templates/partials/groups/admin.tpl +95 -95
  81. package/templates/partials/groups/invited.tpl +32 -32
  82. package/templates/partials/groups/list.tpl +15 -15
  83. package/templates/partials/groups/memberlist.tpl +46 -46
  84. package/templates/partials/groups/pending.tpl +29 -29
  85. package/templates/partials/groups/sidebar-left.tpl +27 -27
  86. package/templates/partials/header/brand.tpl +27 -25
  87. package/templates/partials/mobile-footer.tpl +95 -98
  88. package/templates/partials/notifications_list.tpl +44 -44
  89. package/templates/partials/paginator.tpl +46 -46
  90. package/templates/partials/post_bar.tpl +27 -29
  91. package/templates/partials/posts_list.tpl +7 -7
  92. package/templates/partials/posts_list_item.tpl +19 -19
  93. package/templates/partials/quick-search-results.tpl +46 -46
  94. package/templates/partials/search-filters.tpl +183 -183
  95. package/templates/partials/search-results.tpl +54 -54
  96. package/templates/partials/sidebar/chats.tpl +45 -45
  97. package/templates/partials/sidebar/drafts.tpl +63 -63
  98. package/templates/partials/sidebar/logged-in-menu.tpl +22 -22
  99. package/templates/partials/sidebar/logged-out-menu.tpl +44 -44
  100. package/templates/partials/sidebar/notifications.tpl +49 -49
  101. package/templates/partials/sidebar/search-mobile.tpl +28 -28
  102. package/templates/partials/sidebar/search.tpl +30 -30
  103. package/templates/partials/sidebar/user-menu.tpl +103 -103
  104. package/templates/partials/sidebar-left.tpl +39 -42
  105. package/templates/partials/sidebar-right.tpl +16 -16
  106. package/templates/partials/skin-switcher.tpl +50 -50
  107. package/templates/partials/tags_list.tpl +7 -5
  108. package/templates/partials/toast.tpl +19 -19
  109. package/templates/partials/topic/event.tpl +12 -12
  110. package/templates/partials/topic/navigation-post.tpl +9 -9
  111. package/templates/partials/topic/navigator-mobile.tpl +61 -61
  112. package/templates/partials/topic/navigator.tpl +26 -26
  113. package/templates/partials/topic/necro-post.tpl +5 -5
  114. package/templates/partials/topic/post-menu-list.tpl +156 -140
  115. package/templates/partials/topic/post-menu.tpl +4 -30
  116. package/templates/partials/topic/post-placeholder.tpl +14 -14
  117. package/templates/partials/topic/post.tpl +146 -139
  118. package/templates/partials/topic/quickreply.tpl +28 -28
  119. package/templates/partials/topic/reply-button.tpl +26 -24
  120. package/templates/partials/topic/selection-tooltip.tpl +2 -2
  121. package/templates/partials/topic/sort.tpl +27 -27
  122. package/templates/partials/topic/stats.tpl +14 -14
  123. package/templates/partials/topic/thumbs.tpl +4 -4
  124. package/templates/partials/topic/tools.tpl +8 -12
  125. package/templates/partials/topic/topic-menu-list.tpl +73 -73
  126. package/templates/partials/topic/watch.tpl +59 -59
  127. package/templates/partials/topic-filters.tpl +15 -15
  128. package/templates/partials/topic-list-bar.tpl +54 -54
  129. package/templates/partials/topic-terms.tpl +15 -15
  130. package/templates/partials/topics_list.tpl +131 -123
  131. package/templates/partials/users/item.tpl +39 -37
  132. package/templates/partials/users_list.tpl +4 -4
  133. package/templates/partials/users_list_menu.tpl +14 -14
  134. package/templates/popular.tpl +34 -34
  135. package/templates/post-queue.tpl +211 -207
  136. package/templates/recent.tpl +42 -35
  137. package/templates/search.tpl +46 -46
  138. package/templates/tag.tpl +34 -34
  139. package/templates/tags.tpl +49 -49
  140. package/templates/top.tpl +34 -34
  141. package/templates/topic.tpl +123 -130
  142. package/templates/unread.tpl +31 -31
  143. package/templates/users.tpl +39 -39
  144. package/templates/world.tpl +66 -35
  145. package/theme.json +6 -6
  146. package/package-lock.json +0 -2368
  147. package/scss/modules/bottom-sheet.scss +0 -52
  148. package/templates/flags/detail.tpl +0 -179
  149. package/templates/flags/list.tpl +0 -6
  150. package/templates/login.tpl +0 -102
  151. package/templates/partials/category/filter-dropdown-content.tpl +0 -41
  152. package/templates/partials/category/selector-dropdown-content.tpl +0 -39
  153. package/templates/partials/category/sort.tpl +0 -39
  154. package/templates/partials/category/tools.tpl +0 -89
  155. package/templates/partials/category/watch.tpl +0 -67
  156. package/templates/partials/flags/bulk-actions.tpl +0 -9
  157. package/templates/partials/flags/filters.tpl +0 -189
  158. package/templates/partials/flags/results.tpl +0 -38
  159. package/templates/partials/groups/filter-dropdown-content.tpl +0 -25
  160. package/templates/partials/tags/filter-dropdown-content.tpl +0 -38
  161. package/templates/partials/tags/watch.tpl +0 -42
  162. package/templates/partials/users/filter-dropdown-content.tpl +0 -23
  163. package/templates/register.tpl +0 -104
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>
@@ -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>
@@ -1,130 +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 class="d-flex flex-column gap-3" itemid="{url}" itemscope itemtype="https://schema.org/DiscussionForumPosting">
14
- <meta itemprop="headline" content="{title}">
15
- <meta itemprop="url" content="{url}">
16
- <meta itemprop="datePublished" content="{timestampISO}">
17
- <meta itemprop="dateModified" content="{lastposttimeISO}">
18
- <meta itemprop="author" itemscope itemtype="https://schema.org/Person" itemref="topicAuthorName{{{ if author.userslug }}} topicAuthorUrl{{{ end }}}">
19
- <meta id="topicAuthorName" itemprop="name" content="{author.username}">
20
- {{{ if author.userslug }}}<meta id="topicAuthorUrl" itemprop="url" content="{config.relative_path}/user/{author.userslug}">{{{ end }}}
21
- <div class="d-flex flex-wrap">
22
- <div class="d-flex flex-column gap-3 flex-grow-1">
23
- <h1 component="post/header" class="tracking-tight fw-semibold fs-3 mb-0 text-break {{{ if config.theme.centerHeaderElements }}}text-center{{{ end }}}">
24
- <span class="topic-title" component="topic/title">{title}</span>
25
- </h1>
26
-
27
- <div class="topic-info d-flex gap-2 align-items-center flex-wrap {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}">
28
- <span component="topic/labels" class="d-flex gap-2 {{{ if (!scheduled && (!pinned && (!locked && (!oldCid && !icons.length)))) }}}hidden{{{ end }}}">
29
- <span component="topic/scheduled" class="badge badge border border-gray-300 text-body {{{ if !scheduled }}}hidden{{{ end }}}">
30
- <i class="fa fa-clock-o"></i>
31
- [[topic:scheduled]]
32
- </span>
33
- <span component="topic/pinned" class="badge badge border border-gray-300 text-body {{{ if (scheduled || !pinned) }}}hidden{{{ end }}}">
34
- <i class="fa fa-thumb-tack"></i>
35
- {{{ if !pinExpiry }}}[[topic:pinned]]{{{ else }}}[[topic:pinned-with-expiry, {isoTimeToLocaleString(./pinExpiryISO, config.userLang)}]]{{{ end }}}
36
- </span>
37
- <span component="topic/locked" class="badge badge border border-gray-300 text-body {{{ if !locked }}}hidden{{{ end }}}">
38
- <i class="fa fa-lock"></i>
39
- [[topic:locked]]
40
- </span>
41
- <a href="{config.relative_path}/category/{oldCid}" class="badge badge border border-gray-300 text-body text-decoration-none {{{ if !oldCid }}}hidden{{{ end }}}">
42
- <i class="fa fa-arrow-circle-right"></i>
43
- {{{ 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">
50
- <!-- IMPORT partials/topic/stats.tpl -->
51
- </div>
52
- </div>
53
- </div>
54
- <div class="d-flex gap-2 justify-content-end align-items-center mt-2 hidden-empty" component="topic/thumb/list"><!-- IMPORT partials/topic/thumbs.tpl --></div>
55
- </div>
56
-
57
- <div class="row mb-4 mb-lg-0">
58
- <div class="topic {{{ if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
59
- <!-- IMPORT partials/post_bar.tpl -->
60
-
61
- {{{ if merger }}}
62
- <!-- IMPORT partials/topic/merged-message.tpl -->
63
- {{{ end }}}
64
-
65
- {{{ if forker }}}
66
- <!-- IMPORT partials/topic/forked-message.tpl -->
67
- {{{ end }}}
68
-
69
- {{{ if !scheduled }}}
70
- <!-- IMPORT partials/topic/deleted-message.tpl -->
71
- {{{ end }}}
72
-
73
- <div class="d-flex gap-0 gap-lg-5">
74
- <div class="posts-container" style="min-width: 0;">
75
- <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}">
76
- {{{ each posts }}}
77
- <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 -->>
78
- <a component="post/anchor" data-index="{./index}" id="{increment(./index, "1")}"></a>
79
-
80
- <meta itemprop="datePublished" content="{./timestampISO}">
81
- {{{ if ./editedISO }}}
82
- <meta itemprop="dateModified" content="{./editedISO}">
83
- {{{ end }}}
84
-
85
- <!-- IMPORT partials/topic/post.tpl -->
86
- </li>
87
- {{{ if (config.topicPostSort != "most_votes") }}}
88
- {{{ each ./events}}}
89
- <!-- IMPORT partials/topic/event.tpl -->
90
- {{{ end }}}
91
- {{{ end }}}
92
- {{{ end }}}
93
- </ul>
94
- {{{ if browsingUsers }}}
95
- <div class="visible-xs">
96
- <!-- IMPORT partials/topic/browsing-users.tpl -->
97
- <hr/>
98
- </div>
99
- {{{ end }}}
100
- {{{ if config.theme.enableQuickReply }}}
101
- <!-- IMPORT partials/topic/quickreply.tpl -->
102
- {{{ end }}}
103
- </div>
104
-
105
- <!-- IMPORT partials/topic/navigator.tpl -->
106
- </div>
107
-
108
- {{{ if config.usePagination }}}
109
- <!-- IMPORT partials/paginator.tpl -->
110
- {{{ end }}}
111
- </div>
112
- <div data-widget-area="sidebar" class="col-lg-3 col-sm-12 {{{ if !widgets.sidebar.length }}}hidden{{{ end }}}">
113
- {{{each widgets.sidebar}}}
114
- {{widgets.sidebar.html}}
115
- {{{end}}}
116
- </div>
117
- </div>
118
- </div>
119
-
120
- <div data-widget-area="footer">
121
- {{{each widgets.footer}}}
122
- {{widgets.footer.html}}
123
- {{{end}}}
124
- </div>
125
-
126
- {{{ if !config.usePagination }}}
127
- <noscript>
128
- <!-- IMPORT partials/paginator.tpl -->
129
- </noscript>
130
- {{{ 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 }}}
@@ -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>
@@ -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 class="">
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]]"/>
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>