nodebb-theme-harmony 3.0.14 → 3.0.16

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 (77) hide show
  1. package/package-lock.json +1023 -0
  2. package/package.json +1 -1
  3. package/scss/mobilebar.scss +1 -1
  4. package/templates/account/blocks.tpl +6 -6
  5. package/templates/account/categories.tpl +9 -9
  6. package/templates/account/consent.tpl +21 -21
  7. package/templates/account/edit/password.tpl +8 -8
  8. package/templates/account/edit/username.tpl +6 -6
  9. package/templates/account/edit.tpl +22 -22
  10. package/templates/account/followers.tpl +2 -2
  11. package/templates/account/following.tpl +2 -2
  12. package/templates/account/groups.tpl +2 -2
  13. package/templates/account/info.tpl +33 -33
  14. package/templates/account/posts.tpl +7 -7
  15. package/templates/account/profile.tpl +6 -6
  16. package/templates/account/sessions.tpl +1 -1
  17. package/templates/account/settings.tpl +55 -55
  18. package/templates/account/shares.tpl +1 -1
  19. package/templates/account/theme.tpl +15 -16
  20. package/templates/account/topics.tpl +6 -6
  21. package/templates/account/uploads.tpl +3 -3
  22. package/templates/admin/plugins/harmony.tpl +14 -14
  23. package/templates/category.tpl +7 -7
  24. package/templates/header.tpl +1 -1
  25. package/templates/notifications.tpl +1 -1
  26. package/templates/partials/account/admin-menu.tpl +8 -8
  27. package/templates/partials/account/header.tpl +12 -10
  28. package/templates/partials/account/session-list.tpl +3 -3
  29. package/templates/partials/account/sidebar-left.tpl +18 -18
  30. package/templates/partials/buttons/newTopic.tpl +1 -1
  31. package/templates/partials/categories/item.tpl +2 -2
  32. package/templates/partials/categories/lastpost.tpl +3 -3
  33. package/templates/partials/category/subcategory.tpl +2 -2
  34. package/templates/partials/header/brand.tpl +2 -2
  35. package/templates/partials/mobile-nav.tpl +2 -2
  36. package/templates/partials/notifications_list.tpl +3 -3
  37. package/templates/partials/paginator.tpl +10 -10
  38. package/templates/partials/posts_list_item.tpl +1 -1
  39. package/templates/partials/quick-category-search-results.tpl +4 -4
  40. package/templates/partials/quick-search-results.tpl +4 -4
  41. package/templates/partials/sidebar/chats.tpl +5 -5
  42. package/templates/partials/sidebar/drafts.tpl +3 -3
  43. package/templates/partials/sidebar/logged-in-menu.tpl +4 -4
  44. package/templates/partials/sidebar/logged-out-menu.tpl +10 -10
  45. package/templates/partials/sidebar/notifications.tpl +5 -5
  46. package/templates/partials/sidebar/search-mobile.tpl +5 -5
  47. package/templates/partials/sidebar/search.tpl +5 -5
  48. package/templates/partials/sidebar/user-menu.tpl +20 -20
  49. package/templates/partials/sidebar-left.tpl +2 -2
  50. package/templates/partials/skin-switcher.tpl +3 -3
  51. package/templates/partials/topic/crosspost.tpl +2 -2
  52. package/templates/partials/topic/event.tpl +3 -3
  53. package/templates/partials/topic/mark-unread.tpl +1 -1
  54. package/templates/partials/topic/navigator-mobile.tpl +4 -4
  55. package/templates/partials/topic/post-editor.tpl +1 -1
  56. package/templates/partials/topic/post-menu.tpl +1 -1
  57. package/templates/partials/topic/post.tpl +17 -17
  58. package/templates/partials/topic/quickreply.tpl +7 -5
  59. package/templates/partials/topic/reply-button.tpl +5 -5
  60. package/templates/partials/topic/selection-tooltip.tpl +1 -1
  61. package/templates/partials/topic/sort.tpl +4 -4
  62. package/templates/partials/topic/stats.tpl +11 -11
  63. package/templates/partials/topic/tools.tpl +1 -1
  64. package/templates/partials/topic/watch.tpl +9 -9
  65. package/templates/partials/topic-list-bar.tpl +12 -12
  66. package/templates/partials/topics_list.tpl +13 -13
  67. package/templates/partials/users_list_menu.tpl +6 -6
  68. package/templates/popular.tpl +1 -1
  69. package/templates/recent.tpl +3 -3
  70. package/templates/tag.tpl +2 -2
  71. package/templates/tags.tpl +3 -3
  72. package/templates/top.tpl +1 -1
  73. package/templates/topic.tpl +5 -5
  74. package/templates/unread.tpl +2 -2
  75. package/templates/users.tpl +4 -4
  76. package/templates/world.tpl +9 -9
  77. package/templates/partials/topic/post-placeholder.tpl +0 -15
@@ -1,17 +1,17 @@
1
1
  <div component="user/list/menu" class="text-sm d-flex flex-wrap align-items-center gap-2">
2
- <a class="btn btn-ghost btn-sm ff-secondary fw-semibold" href="{config.relative_path}/users?section=online">[[global:online]]</a>
2
+ <a class="btn btn-ghost btn-sm ff-secondary fw-semibold" href="{config.relative_path}/users?section=online">{{tx("global:online")}}</a>
3
3
 
4
- <a class="btn btn-ghost btn-sm ff-secondary fw-semibold" href="{config.relative_path}/users?section=sort-posts">[[users:top-posters]]</a>
4
+ <a class="btn btn-ghost btn-sm ff-secondary fw-semibold" href="{config.relative_path}/users?section=sort-posts">{{tx("users:top-posters")}}</a>
5
5
 
6
6
  {{{ if !reputation:disabled }}}
7
- <a class="btn btn-ghost btn-sm ff-secondary fw-semibold" href="{config.relative_path}/users?section=sort-reputation">[[users:most-reputation]]</a>
7
+ <a class="btn btn-ghost btn-sm ff-secondary fw-semibold" href="{config.relative_path}/users?section=sort-reputation">{{tx("users:most-reputation")}}</a>
8
8
  {{{ end }}}
9
9
 
10
10
  {{{ if isAdminOrGlobalMod }}}
11
- <a class="btn btn-ghost btn-sm ff-secondary fw-semibold" href="{config.relative_path}/users?section=flagged">[[users:most-flags]]</a>
11
+ <a class="btn btn-ghost btn-sm ff-secondary fw-semibold" href="{config.relative_path}/users?section=flagged">{{tx("users:most-flags")}}</a>
12
12
 
13
- <a class="btn btn-ghost btn-sm ff-secondary fw-semibold" href="{config.relative_path}/users?section=banned">[[user:banned]]</a>
13
+ <a class="btn btn-ghost btn-sm ff-secondary fw-semibold" href="{config.relative_path}/users?section=banned">{{tx("user:banned")}}</a>
14
14
 
15
- <a class="btn btn-ghost btn-sm ff-secondary fw-semibold" href="{config.relative_path}/users?section=muted">[[user:muted]]</a>
15
+ <a class="btn btn-ghost btn-sm ff-secondary fw-semibold" href="{config.relative_path}/users?section=muted">{{tx("user:muted")}}</a>
16
16
  {{{ end }}}
17
17
  </div>
@@ -11,7 +11,7 @@
11
11
  <!-- IMPORT partials/topic-list-bar.tpl -->
12
12
  <div class="category">
13
13
  {{{ if !topics.length }}}
14
- <div class="alert alert-info" id="category-no-topics">[[recent:no-popular-topics]]</div>
14
+ <div class="alert alert-info" id="category-no-topics">{{tx("recent:no-popular-topics")}}</div>
15
15
  {{{ end }}}
16
16
 
17
17
  <!-- IMPORT partials/topics_list.tpl -->
@@ -12,13 +12,13 @@
12
12
 
13
13
  <div class="category">
14
14
  {{{ if !topics.length }}}
15
- <div class="alert alert-info" id="category-no-topics">[[recent:no-recent-topics]]</div>
15
+ <div class="alert alert-info" id="category-no-topics">{{tx("recent:no-recent-topics")}}</div>
16
16
  {{{ end }}}
17
17
 
18
18
  {{{ if (selectedCategory.cid == "-1") }}}
19
19
  <div class="py-3">
20
- <h4>[[recent:uncategorized.title]]</h4>
21
- <p>[[recent:uncategorized.intro]]</p>
20
+ <h4>{{tx("recent:uncategorized.title")}}</h4>
21
+ <p>{{tx("recent:uncategorized.intro")}}</p>
22
22
  </div>
23
23
  {{{ end }}}
24
24
 
package/templates/tag.tpl CHANGED
@@ -11,11 +11,11 @@
11
11
 
12
12
  <div class="category">
13
13
  {{{ if !topics.length }}}
14
- <div class="alert alert-warning">[[tags:no-tag-topics]]</div>
14
+ <div class="alert alert-warning">{{tx("tags:no-tag-topics")}}</div>
15
15
  {{{ end }}}
16
16
 
17
17
  <!-- IMPORT partials/topics_list.tpl -->
18
- <button id="load-more-btn" class="btn btn-primary hide">[[unread:load-more]]</button>
18
+ <button id="load-more-btn" class="btn btn-primary hide">{{tx("unread:load-more")}}</button>
19
19
  {{{ if config.usePagination }}}
20
20
  <!-- IMPORT partials/paginator.tpl -->
21
21
  {{{ end }}}
@@ -6,7 +6,7 @@
6
6
 
7
7
  <div class="row flex-fill">
8
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>
9
+ <h3 class="fw-semibold">{{tx("pages:tags")}}</h3>
10
10
  {{{ if displayTagSearch }}}
11
11
  {{{ if tags.length }}}
12
12
  <div class="row justify-content-end mb-3">
@@ -14,7 +14,7 @@
14
14
  <div class="d-flex justify-content-end">
15
15
  <div>
16
16
  <div class="input-group">
17
- <input type="text" class="form-control form-control-sm" placeholder="[[global:search]]" id="tag-search">
17
+ <input type="text" class="form-control form-control-sm" placeholder="{{tx("global:search")}}" id="tag-search">
18
18
  <button class="btn btn-primary btn-sm" type="button">
19
19
  <i class="fa fa-search"></i>
20
20
  </button>
@@ -27,7 +27,7 @@
27
27
  {{{ end }}}
28
28
  <hr/>
29
29
  {{{ if !tags.length }}}
30
- <div class="alert alert-warning">[[tags:no-tags]]</div>
30
+ <div class="alert alert-warning">{{tx("tags:no-tags")}}</div>
31
31
  {{{ end }}}
32
32
 
33
33
  <div class="category">
package/templates/top.tpl CHANGED
@@ -11,7 +11,7 @@
11
11
  <!-- IMPORT partials/topic-list-bar.tpl -->
12
12
  <div class="category">
13
13
  {{{ if !topics.length }}}
14
- <div class="alert alert-info" id="category-no-topics">[[top:no-top-topics]]</div>
14
+ <div class="alert alert-info" id="category-no-topics">{{tx("top:no-top-topics")}}</div>
15
15
  {{{ end }}}
16
16
 
17
17
  <!-- IMPORT partials/topics_list.tpl -->
@@ -23,16 +23,16 @@
23
23
  <div class="topic-info d-flex gap-2 align-items-center flex-wrap {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}">
24
24
  <span component="topic/labels" class="d-flex gap-2 {{{ if (!scheduled && (!pinned && (!locked && (!icons.length && (!oldCid || (oldCid == "-1")))))) }}}hidden{{{ end }}}">
25
25
  <span component="topic/scheduled" class="badge border border-gray-300 text-body {{{ if !scheduled }}}hidden{{{ end }}}">
26
- <i class="fa fa-clock-o"></i> [[topic:scheduled]]
26
+ <i class="fa fa-clock-o"></i> {{tx("topic:scheduled")}}
27
27
  </span>
28
28
  <span component="topic/pinned" class=" badge border border-gray-300 text-body {{{ if (scheduled || !pinned) }}}hidden{{{ end }}}">
29
- <i class="fa fa-thumb-tack"></i> {{{ if !pinExpiry }}}[[topic:pinned]]{{{ else }}}[[topic:pinned-with-expiry, {isoTimeToLocaleString(./pinExpiryISO, config.userLang)}]]{{{ end }}}
29
+ <i class="fa fa-thumb-tack"></i> {{{ if !pinExpiry }}}{{tx("topic:pinned")}}{{{ else }}}{{tx("topic:pinned-with-expiry", isoTimeToLocaleString(./pinExpiryISO, config.userLang))}}{{{ end }}}
30
30
  </span>
31
31
  <span component="topic/locked" class="badge border border-gray-300 text-body {{{ if !locked }}}hidden{{{ end }}}">
32
- <i class="fa fa-lock"></i> [[topic:locked]]
32
+ <i class="fa fa-lock"></i> {{tx("topic:locked")}}
33
33
  </span>
34
34
  <a component="topic/moved" href="{config.relative_path}/category/{oldCid}" class="badge border border-gray-300 text-body text-decoration-none {{{ if (!oldCid || (oldCid == "-1")) }}}hidden{{{ end }}}">
35
- <i class="fa fa-arrow-circle-right"></i> {{{ if privileges.isAdminOrMod }}}[[topic:moved-from, {oldCategory.name}]]{{{ else }}}[[topic:moved]]{{{ end }}}
35
+ <i class="fa fa-arrow-circle-right"></i> {{{ if privileges.isAdminOrMod }}}{{tx("topic:moved-from", oldCategory.name)}}{{{ else }}}{{tx("topic:moved")}}{{{ end }}}
36
36
  </a>
37
37
  {{{ each ./icons }}}<!-- IMPORT partials/topic/icon.tpl -->{{{ end }}}
38
38
  </span>
@@ -41,7 +41,7 @@
41
41
  <div class="d-flex gap-2" component="topic/stats"><!-- IMPORT partials/topic/stats.tpl --></div>
42
42
 
43
43
  {{{ if (!feeds:disableRSS && rssFeedUrl) }}}
44
- <a class="badge border border-gray-300 text-body text-decoration-none d-flex align-items-center align-self-stretch" target="_blank" href="{rssFeedUrl}" title="[[global:rss-feed]]"><i class="fa fa-rss fa-sm text-muted lh-1"></i></a>
44
+ <a class="badge border border-gray-300 text-body text-decoration-none d-flex align-items-center align-self-stretch" target="_blank" href="{rssFeedUrl}" title="{{tx("global:rss-feed")}}"><i class="fa fa-rss fa-sm text-muted lh-1"></i></a>
45
45
  {{{ end }}}
46
46
  </div>
47
47
  </div>
@@ -9,10 +9,10 @@
9
9
  <div class="unread {{{if widgets.sidebar.length }}}col-lg-9 col-sm-12{{{ else }}}col-lg-12{{{ end }}}">
10
10
  <!-- IMPORT partials/topic-list-bar.tpl -->
11
11
  <div class="category">
12
- <div id="category-no-topics" class="alert alert-info {{{ if topics.length }}}hidden{{{ end }}}">[[unread:no-unread-topics]]</div>
12
+ <div id="category-no-topics" class="alert alert-info {{{ if topics.length }}}hidden{{{ end }}}">{{tx("unread:no-unread-topics")}}</div>
13
13
 
14
14
  <!-- IMPORT partials/topics_list.tpl -->
15
- <button id="load-more-btn" class="btn btn-primary hide">[[unread:load-more]]</button>
15
+ <button id="load-more-btn" class="btn btn-primary hide">{{tx("unread:load-more")}}</button>
16
16
  {{{ if config.usePagination }}}
17
17
  <!-- IMPORT partials/paginator.tpl -->
18
18
  {{{ end }}}
@@ -4,7 +4,7 @@
4
4
  {{{end}}}
5
5
  </div>
6
6
  <div class="users flex-fill">
7
- <h3 class="fw-semibold">[[global:users]]</h3>
7
+ <h3 class="fw-semibold">{{tx("global:users")}}</h3>
8
8
  <div class="d-flex flex-wrap justify-content-between">
9
9
  <div class="mb-2 mb-md-0">
10
10
  <!-- IMPORT partials/users_list_menu.tpl -->
@@ -12,13 +12,13 @@
12
12
  <div>
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 text-nowrap"><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> {{tx("users:invite")}}</button>
16
16
  {{{ end }}}
17
17
  {{{ if displayUserSearch }}}
18
18
  <div class="search">
19
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]]">
20
+ <input class="form-control form-control-sm" id="search-user" type="text" placeholder="{{tx("global:search")}}" autocomplete="off" />
21
+ <button class="btn btn-primary btn-sm" type="button" aria-label="{{tx("global:search")}}">
22
22
  <i component="user/search/icon" class="fa fa-search"></i>
23
23
  </button>
24
24
  </div>
@@ -14,11 +14,11 @@
14
14
  <div class="category-header d-flex flex-column gap-2">
15
15
  <div class="d-flex gap-2 align-items-center mb-1 {{{ if config.theme.centerHeaderElements }}}justify-content-center{{{ end }}}">
16
16
  {{buildCategoryIcon(@value, "40px", "rounded-1 flex-shrink-0")}}
17
- <h1 class="tracking-tight fs-2 fw-semibold mb-0 text-center">[[world:name]]</h1>
17
+ <h1 class="tracking-tight fs-2 fw-semibold mb-0 text-center">{{tx("world:name")}}</h1>
18
18
  </div>
19
19
  {{{ if ./descriptionParsed }}}
20
20
  <p class="description text-secondary text-sm w-100 {{{ if config.theme.centerHeaderElements }}}text-center{{{ end }}}">
21
- {{./descriptionParsed}}
21
+ {{{ if (cid == "-1") }}}{{tx(./descriptionParsed)}}{{{ else }}}{{./descriptionParsed}}{{{ end }}}
22
22
  </p>
23
23
  {{{ end }}}
24
24
  </div>
@@ -73,14 +73,14 @@
73
73
  {{{ if !config.loggedIn }}}
74
74
  <div class="alert alert-info alert-dismissible fade show">
75
75
  <p class="fw-semibold">
76
- [[world:onboard.title]]
76
+ {{tx("world:onboard.title")}}
77
77
  </p>
78
- <p>[[world:onboard.what]]</p>
79
- <p>[[world:onboard.why]]</p>
80
- <p>[[world:onboard.how]]</p>
81
- <a href="{config.relative_path}/register" class="fw-semibold btn btn-sm btn-warning">[[global:register]]</a>
82
- <a href="{config.relative_path}/login" class="fw-semibold btn btn-sm btn-info">[[global:login]]</a>
83
- <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
78
+ <p>{{tx("world:onboard.what")}}</p>
79
+ <p>{{tx("world:onboard.why")}}</p>
80
+ <p>{{tx("world:onboard.how")}}</p>
81
+ <a href="{config.relative_path}/register" class="fw-semibold btn btn-sm btn-warning">{{tx("global:register")}}</a>
82
+ <a href="{config.relative_path}/login" class="fw-semibold btn btn-sm btn-info">{{tx("global:login")}}</a>
83
+ <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="{{tx("global:close")}}"></button>
84
84
  </div>
85
85
  {{{ end }}}
86
86
 
@@ -1,15 +0,0 @@
1
- <div class="d-flex align-items-start gap-3">
2
- <div class="icon py-1 bg-body d-none d-sm-block">
3
- <div class="placeholder bg-secondary rounded-circle" style="width: 48px; height: 48px;"></div>
4
- </div>
5
-
6
- <div class="d-flex flex-grow-1 flex-column placeholder-wave">
7
- <div class="d-flex align-items-center gap-1 flex-wrap w-100 post-header mt-1">
8
- <div class="placeholder bg-secondary rounded-1 col-2">&nbsp;</div>
9
- </div>
10
-
11
- <div class="content mt-2 placeholder bg-secondary rounded-1 col-5" component="post/content" itemprop="text">
12
- <p>&nbsp;</p>
13
- </div>
14
- </div>
15
- </div>