nodebb-theme-harmony 1.0.0-beta.4 → 1.0.0-beta.41

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 (108) hide show
  1. package/languages/en-GB/harmony.json +5 -1
  2. package/library.js +21 -7
  3. package/package.json +1 -1
  4. package/public/harmony.js +107 -9
  5. package/public/settings.js +1 -0
  6. package/scss/common.scss +46 -4
  7. package/scss/harmony.scss +2 -0
  8. package/scss/mixins.scss +7 -3
  9. package/scss/modals.scss +6 -1
  10. package/scss/modules/bottom-sheet.scss +1 -1
  11. package/scss/modules/composer.scss +0 -4
  12. package/scss/modules/cover.scss +1 -11
  13. package/scss/modules/paginator.scss +24 -0
  14. package/scss/overrides.scss +3 -1
  15. package/scss/search.scss +8 -0
  16. package/scss/sidebar.scss +7 -4
  17. package/scss/topic.scss +22 -12
  18. package/templates/account/blocks.tpl +35 -41
  19. package/templates/account/categories.tpl +23 -30
  20. package/templates/account/consent.tpl +66 -10
  21. package/templates/account/edit/password.tpl +25 -30
  22. package/templates/account/edit/username.tpl +21 -26
  23. package/templates/account/edit.tpl +105 -116
  24. package/templates/account/followers.tpl +12 -19
  25. package/templates/account/following.tpl +12 -18
  26. package/templates/account/groups.tpl +12 -17
  27. package/templates/account/info.tpl +178 -206
  28. package/templates/account/posts.tpl +31 -36
  29. package/templates/account/profile.tpl +66 -73
  30. package/templates/account/sessions.tpl +8 -30
  31. package/templates/account/settings.tpl +193 -198
  32. package/templates/account/theme.tpl +34 -25
  33. package/templates/account/topics.tpl +33 -38
  34. package/templates/account/uploads.tpl +33 -40
  35. package/templates/categories.tpl +1 -1
  36. package/templates/category.tpl +12 -13
  37. package/templates/flags/detail.tpl +24 -25
  38. package/templates/flags/list.tpl +11 -11
  39. package/templates/footer.tpl +2 -2
  40. package/templates/groups/details.tpl +20 -17
  41. package/templates/groups/members.tpl +0 -2
  42. package/templates/partials/account/footer.tpl +3 -0
  43. package/templates/partials/account/header.tpl +78 -81
  44. package/templates/partials/account/session-list.tpl +18 -0
  45. package/templates/partials/breadcrumbs.tpl +6 -6
  46. package/templates/partials/categories/item.tpl +19 -18
  47. package/templates/partials/categories/lastpost.tpl +2 -2
  48. package/templates/partials/{category-filter-content.tpl → category/filter-dropdown-content.tpl} +8 -6
  49. package/templates/partials/{category-selector-content.tpl → category/selector-dropdown-content.tpl} +3 -3
  50. package/templates/partials/category/subcategory.tpl +1 -1
  51. package/templates/partials/category/tags.tpl +0 -2
  52. package/templates/partials/category/watch.tpl +28 -4
  53. package/templates/partials/chats/message-window.tpl +1 -0
  54. package/templates/partials/chats/message.tpl +4 -6
  55. package/templates/partials/cookie-consent.tpl +5 -5
  56. package/templates/partials/flags/filters.tpl +1 -1
  57. package/templates/partials/groups/admin.tpl +4 -4
  58. package/templates/partials/groups/badge.tpl +1 -1
  59. package/templates/partials/groups/memberlist.tpl +1 -1
  60. package/templates/partials/groups/sidebar-left.tpl +1 -1
  61. package/templates/partials/header/brand.tpl +1 -1
  62. package/templates/partials/mobile-footer.tpl +69 -61
  63. package/templates/partials/paginator.tpl +9 -9
  64. package/templates/partials/post_bar.tpl +6 -5
  65. package/templates/partials/posts_list_item.tpl +5 -5
  66. package/templates/partials/quick-search-results.tpl +1 -1
  67. package/templates/partials/search-filters.tpl +184 -0
  68. package/templates/partials/search-results.tpl +28 -32
  69. package/templates/partials/sidebar/chats.tpl +2 -2
  70. package/templates/partials/sidebar/drafts.tpl +42 -34
  71. package/templates/partials/sidebar/logged-in-menu.tpl +5 -5
  72. package/templates/partials/sidebar/notifications.tpl +3 -3
  73. package/templates/partials/sidebar/search.tpl +1 -1
  74. package/templates/partials/sidebar/user-menu.tpl +1 -1
  75. package/templates/partials/sidebar-left.tpl +13 -10
  76. package/templates/partials/sidebar-right.tpl +1 -1
  77. package/templates/partials/skin-switcher.tpl +2 -2
  78. package/templates/partials/tags_list.tpl +6 -4
  79. package/templates/partials/topic/browsing-users.tpl +0 -2
  80. package/templates/partials/topic/event.tpl +1 -1
  81. package/templates/partials/topic/navigation-post.tpl +5 -9
  82. package/templates/partials/topic/navigator-mobile.tpl +48 -0
  83. package/templates/partials/topic/post-editor.tpl +0 -2
  84. package/templates/partials/topic/post-menu-list.tpl +35 -37
  85. package/templates/partials/topic/post.tpl +27 -10
  86. package/templates/partials/topic/quickreply.tpl +6 -6
  87. package/templates/partials/topic/reply-button.tpl +1 -1
  88. package/templates/partials/topic/topic-menu-list.tpl +16 -18
  89. package/templates/partials/topic/watch.tpl +28 -4
  90. package/templates/partials/topic-list-bar.tpl +7 -7
  91. package/templates/partials/topics_list.tpl +41 -41
  92. package/templates/partials/users/filter-dropdown-content.tpl +20 -0
  93. package/templates/popular.tpl +1 -1
  94. package/templates/post-queue.tpl +112 -0
  95. package/templates/recent.tpl +1 -1
  96. package/templates/search.tpl +39 -177
  97. package/templates/tags.tpl +1 -1
  98. package/templates/top.tpl +1 -1
  99. package/templates/topic.tpl +4 -4
  100. package/templates/unread.tpl +1 -1
  101. package/templates/users.tpl +1 -1
  102. package/templates/modules/usercard.tpl +0 -39
  103. package/templates/partials/acceptTos.tpl +0 -11
  104. package/templates/partials/category-filter-right.tpl +0 -5
  105. package/templates/partials/category-filter.tpl +0 -3
  106. package/templates/partials/category-selector-right.tpl +0 -5
  107. package/templates/partials/category-selector.tpl +0 -3
  108. package/templates/partials/slideout-menu.tpl +0 -6
@@ -1,85 +1,78 @@
1
- <div class="account mx-auto">
2
- <!-- IMPORT partials/account/header.tpl -->
3
-
4
- <div class="d-flex flex-column flex-md-row">
5
- <!-- IMPORT partials/account/sidebar-left.tpl -->
1
+ <!-- IMPORT partials/account/header.tpl -->
2
+ {{{ if aboutme }}}
3
+ <div component="aboutme" class="text-sm text-break">
4
+ {aboutmeParsed}
5
+ </div>
6
+ {{{ end }}}
6
7
 
7
- <div class="flex-1 ps-md-2 ps-lg-5">
8
- {{{ if aboutme }}}
9
- <div component="aboutme" class="text-sm">
10
- {aboutmeParsed}
8
+ <div class="account-stats container">
9
+ <div class="row row-cols-2 row-cols-xl-3 row-cols-xxl-4 g-2">
10
+ {{{ if !reputation:disabled }}}
11
+ <div class="stat">
12
+ <div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100">
13
+ <span class="stat-label text-xs fw-semibold">[[global:reputation]]</span>
14
+ <span class="human-readable-number fs-2 ff-secondary" title="{reputation}">{reputation}</span>
11
15
  </div>
12
- {{{ end }}}
13
-
14
- <div class="account-stats container">
15
- <div class="row row-cols-2 row-cols-xl-3 row-cols-xxl-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>
16
+ </div>
17
+ {{{ end }}}
18
+ <div class="stat">
19
+ <div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100">
20
+ <span class="stat-label text-xs fw-semibold">[[user:profile_views]]</span>
21
+ <span class="human-readable-number fs-2 ff-secondary" title="
22
+ {profileviews}">{profileviews}</span>
23
+ </div>
24
+ </div>
31
25
 
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-user-plus"></i> <span>[[user:joined]]</span></span>
35
- <span class="timeago fs-6 ff-secondary" title="{joindateISO}"></span>
36
- </div>
37
- </div>
26
+ <div class="stat">
27
+ <div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100 gap-2">
28
+ <span class="stat-label text-xs fw-semibold"><i class="text-muted fa-solid fa-user-plus"></i> <span>[[user:joined]]</span></span>
29
+ <span class="timeago fs-6 ff-secondary" title="{joindateISO}"></span>
30
+ </div>
31
+ </div>
38
32
 
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 text-center text-break w-100 px-2 fs-6 ff-secondary" title="{lastonlineISO}"></span>
43
- </div>
44
- </div>
33
+ <div class="stat">
34
+ <div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100 gap-2">
35
+ <span class="stat-label text-xs fw-semibold"><i class="text-muted fa-solid fa-clock"></i> <span>[[user:lastonline]]</span></span>
36
+ <span class="timeago text-center text-break w-100 px-2 fs-6 ff-secondary" title="{lastonlineISO}"></span>
37
+ </div>
38
+ </div>
45
39
 
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-center text-break w-100 px-2 ff-secondary">{email}</span>
51
- </div>
52
- </div>
53
- {{{ end }}}
40
+ {{{ if email }}}
41
+ <div class="stat">
42
+ <div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100 gap-2">
43
+ <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>
44
+ <span class="text-sm text-center text-break w-100 px-2 ff-secondary">{email}</span>
45
+ </div>
46
+ </div>
47
+ {{{ end }}}
54
48
 
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-center text-break w-100 px-2 ff-secondary text-underline text-reset" href="{websiteLink}" rel="nofollow noopener noreferrer">{websiteName}</a>
60
- </div>
61
- </div>
62
- {{{ end }}}
49
+ {{{ if websiteName }}}
50
+ <div class="stat">
51
+ <div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100 gap-2">
52
+ <span class="stat-label text-xs fw-semibold"><i class="text-muted fa-solid fa-globe"></i> <span>[[user:website]]</span></span>
53
+ <a class="text-sm text-center text-break w-100 px-2 ff-secondary text-underline text-reset" href="{websiteLink}" rel="nofollow noopener noreferrer">{websiteName}</a>
54
+ </div>
55
+ </div>
56
+ {{{ end }}}
63
57
 
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="text-center text-break w-100 px-2 fs-6 ff-secondary">{location}</span>
69
- </div>
70
- </div>
71
- {{{ end }}}
58
+ {{{ if location }}}
59
+ <div class="stat">
60
+ <div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100 gap-2">
61
+ <span class="stat-label text-xs fw-semibold"><i class="text-muted fa-solid fa-map-pin"></i> <span>[[user:location]]</span></span>
62
+ <span class="text-center text-break w-100 px-2 fs-6 ff-secondary">{location}</span>
63
+ </div>
64
+ </div>
65
+ {{{ end }}}
72
66
 
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><i class="text-muted fa-solid fa-cake-candles"></i> [[user:age]]</span></span>
77
- <span class="fs-6 ff-secondary">{age}</span>
78
- </div>
79
- </div>
80
- {{{ end }}}
81
- </div>
67
+ {{{ if age }}}
68
+ <div class="stat">
69
+ <div class="align-items-center justify-content-center card card-header px-0 py-3 border-0 rounded-1 h-100 gap-2">
70
+ <span class="stat-label text-xs fw-semibold"><span><i class="text-muted fa-solid fa-cake-candles"></i> [[user:age]]</span></span>
71
+ <span class="fs-6 ff-secondary">{age}</span>
82
72
  </div>
83
73
  </div>
74
+ {{{ end }}}
84
75
  </div>
85
76
  </div>
77
+
78
+ <!-- IMPORT partials/account/footer.tpl -->
@@ -1,31 +1,9 @@
1
- <div class="account">
2
- <!-- IMPORT partials/account/header.tpl -->
1
+ <!-- IMPORT partials/account/header.tpl -->
3
2
 
4
- <div class="d-flex flex-column flex-md-row">
5
- <!-- IMPORT partials/account/sidebar-left.tpl -->
6
- <div class="flex-1 ps-md-2 ps-lg-5" style="min-width: 0;">
7
- <p class="lead">[[user:sessions.description]]</p>
8
- <hr />
9
- <ul class="list-group" component="user/sessions">
10
- {{{each sessions}}}
11
- <li class="list-group-item" data-uuid="{../uuid}">
12
- <div class="float-end">
13
- <!-- IF isSelfOrAdminOrGlobalModerator -->
14
- <!-- IF !../current -->
15
- <button class="btn btn-sm btn-outline-secondary" type="button" data-action="revokeSession">Revoke Session</button>
16
- <!-- ENDIF !../current -->
17
- <!-- ENDIF isSelfOrAdminOrGlobalModerator -->
18
- {function.userAgentIcons}
19
- <i class="fa fa-circle text-<!-- IF ../current -->success<!-- ELSE -->muted<!-- ENDIF ../current -->"></i>
20
- </div>
21
- {../browser} {../version} on {../platform}<br />
22
- <small class="timeago text-muted" title="{../datetimeISO}"></small>
23
- <ul>
24
- <li><strong>[[global:ip_address]]</strong>: {../ip}</li>
25
- </ul>
26
- </li>
27
- {{{end}}}
28
- </ul>
29
- </div>
30
- </div>
31
- </div>
3
+ <p class="lead">[[user:sessions.description]]</p>
4
+ <hr />
5
+ <ul class="list-group" component="user/sessions">
6
+ <!-- IMPORT partials/account/session-list.tpl -->
7
+ </ul>
8
+
9
+ <!-- IMPORT partials/account/footer.tpl -->
@@ -1,218 +1,213 @@
1
- <div class="account">
2
- <!-- IMPORT partials/account/header.tpl -->
1
+ <!-- IMPORT partials/account/header.tpl -->
3
2
 
4
- <div class="d-flex flex-column flex-md-row">
5
- <!-- IMPORT partials/account/sidebar-left.tpl -->
6
- <div class="flex-1 ps-md-2 ps-lg-5" style="min-width: 0;">
7
- <div class="mb-3 d-flex justify-content-between">
8
- <h3 class="fw-semibold fs-5">{{{ if isSelf }}}[[pages:account/settings]]{{{ else }}}[[pages:account/settings-of, {username}]]{{{ end }}}</h3>
9
- <button id="submitBtn" class="btn btn-primary">[[global:save_changes]]</button>
10
- </div>
11
- <div class="row">
12
- <div class="col-12 col-md-6">
13
- {{{ if !disableCustomUserSkins }}}
14
- <h6 class="fw-bold">[[user:select-skin]]</h6>
15
- <div class="">
16
- <select class="form-select form-select-sm" id="bootswatchSkin" data-property="bootswatchSkin">
17
- {{{each bootswatchSkinOptions}}}
18
- <option value="{bootswatchSkinOptions.value}" {{{ if bootswatchSkinOptions.selected }}}selected{{{ end }}}>{bootswatchSkinOptions.name}</option>
19
- {{{end}}}
20
- </select>
21
- </div>
22
- <hr/>
23
- {{{ end }}}
3
+ <div class="mb-3 d-flex justify-content-between">
4
+ <h3 class="fw-semibold fs-5">{{{ if isSelf }}}[[pages:account/settings]]{{{ else }}}[[pages:account/settings-of, {username}]]{{{ end }}}</h3>
5
+ <button id="submitBtn" class="btn btn-primary">[[global:save_changes]]</button>
6
+ </div>
7
+ <div class="row">
8
+ <div class="col-12 col-md-6">
9
+ {{{ if !disableCustomUserSkins }}}
10
+ <h6 class="fw-bold">[[user:select-skin]]</h6>
11
+ <div class="">
12
+ <select class="form-select form-select-sm" id="bootswatchSkin" data-property="bootswatchSkin">
13
+ {{{each bootswatchSkinOptions}}}
14
+ <option value="{bootswatchSkinOptions.value}" {{{ if bootswatchSkinOptions.selected }}}selected{{{ end }}}>{bootswatchSkinOptions.name}</option>
15
+ {{{end}}}
16
+ </select>
17
+ </div>
18
+ <hr/>
19
+ {{{ end }}}
24
20
 
25
- {{{ if allowUserHomePage }}}
26
- <h6 class="fw-bold">[[user:select-homepage]]</h6>
27
- <div class="">
28
- <div class="mb-2">
29
- <select class="form-select form-select-sm" id="homePageRoute" data-property="homePageRoute">
30
- <option value="none">None</option>
31
- {{{each homePageRoutes}}}
32
- <option value="{homePageRoutes.route}" <!-- IF homePageRoutes.selected -->selected="1"<!-- ENDIF homePageRoutes.selected -->>{homePageRoutes.name}</option>
33
- {{{end}}}
34
- </select>
35
- <p class="form-text text-xs">[[user:homepage_description]]</p>
36
- </div>
37
- <div id="homePageCustom" class="mb-2" style="display: none;">
38
- <label class="form-label" for="homePageCustom">[[user:custom_route]]</label>
39
- <input type="text" class="form-control form-control-sm" data-property="homePageCustom" id="homePageCustom" value="{settings.homePageRoute}"/>
40
- <p class="form-text text-xs">[[user:custom_route_help]]</p>
41
- </div>
42
- </div>
43
- <hr/>
21
+ {{{ if allowUserHomePage }}}
22
+ <h6 class="fw-bold">[[user:select-homepage]]</h6>
23
+ <div class="">
24
+ <div class="mb-2">
25
+ <select class="form-select form-select-sm" id="homePageRoute" data-property="homePageRoute">
26
+ <option value="none">None</option>
27
+ {{{ each homePageRoutes }}}
28
+ <option value="{./route}" {{{ if ./selected }}}selected="1"{{{ end }}}>{./name}</option>
44
29
  {{{ end }}}
30
+ </select>
31
+ <p class="form-text text-xs">[[user:homepage_description]]</p>
32
+ </div>
33
+ <div id="homePageCustom" class="mb-2" style="display: none;">
34
+ <label class="form-label" for="homePageCustom">[[user:custom_route]]</label>
35
+ <input type="text" class="form-control form-control-sm" data-property="homePageCustom" id="homePageCustom" value="{settings.homePageRoute}"/>
36
+ <p class="form-text text-xs">[[user:custom_route_help]]</p>
37
+ </div>
38
+ </div>
39
+ <hr/>
40
+ {{{ end }}}
45
41
 
46
- <h6 class="fw-bold">[[global:privacy]]</h6>
47
- <div class="">
48
- {{{ if !hideEmail }}}
49
- <div class="form-check">
50
- <input class="form-check-input" type="checkbox" data-property="showemail" {{{ if settings.showemail }}}checked {{{ end }}}/>
51
- <label class="form-check-label text-sm">[[user:show_email]]</label>
52
- </div>
53
- {{{ end }}}
42
+ <h6 class="fw-bold">[[global:privacy]]</h6>
43
+ <div class="">
44
+ {{{ if !hideEmail }}}
45
+ <div class="form-check">
46
+ <input class="form-check-input" type="checkbox" data-property="showemail" {{{ if settings.showemail }}}checked {{{ end }}}/>
47
+ <label class="form-check-label text-sm">[[user:show_email]]</label>
48
+ </div>
49
+ {{{ end }}}
54
50
 
55
- {{{ if !hideFullname }}}
56
- <div class="form-check">
57
- <input class="form-check-input" type="checkbox" data-property="showfullname" {{{ if settings.showfullname }}}checked{{{ end }}}/>
58
- <label class="form-check-label text-sm">[[user:show_fullname]]</label>
59
- </div>
60
- {{{ end }}}
61
- {{{ if !config.disableChat }}}
62
- <div class="form-check">
63
- <input class="form-check-input" type="checkbox" data-property="restrictChat" {{{ if settings.restrictChat }}}checked{{{ end }}}/>
64
- <label class="form-check-label text-sm">[[user:restrict_chats]]</label>
65
- </div>
66
- {{{ end }}}
67
- </div>
68
- <hr/>
51
+ {{{ if !hideFullname }}}
52
+ <div class="form-check">
53
+ <input class="form-check-input" type="checkbox" data-property="showfullname" {{{ if settings.showfullname }}}checked{{{ end }}}/>
54
+ <label class="form-check-label text-sm">[[user:show_fullname]]</label>
55
+ </div>
56
+ {{{ end }}}
57
+ {{{ if !config.disableChat }}}
58
+ <div class="form-check">
59
+ <input class="form-check-input" type="checkbox" data-property="restrictChat" {{{ if settings.restrictChat }}}checked{{{ end }}}/>
60
+ <label class="form-check-label text-sm">[[user:restrict_chats]]</label>
61
+ </div>
62
+ {{{ end }}}
63
+ </div>
64
+ <hr/>
69
65
 
70
- <h6 class="fw-bold">[[user:browsing]]</h6>
71
- <div class="">
72
- <div class="form-check">
73
- <input class="form-check-input" type="checkbox" data-property="openOutgoingLinksInNewTab" {{{ if settings.openOutgoingLinksInNewTab }}}checked{{{ end }}}/>
74
- <label class="form-check-label">[[user:open_links_in_new_tab]]</label>
75
- </div>
76
- {{{ if inTopicSearchAvailable }}}
77
- <div class="form-check">
78
- <input class="form-check-input" type="checkbox" data-property="topicSearchEnabled" {{{ if settings.topicSearchEnabled }}}checked{{{ end }}}/>
79
- <label class="form-check-label">[[user:enable_topic_searching]]</label>
80
- </div>
81
- <p class="form-text text-xs">[[user:topic_search_help]]</p>
82
- {{{ end }}}
66
+ <h6 class="fw-bold">[[user:browsing]]</h6>
67
+ <div class="">
68
+ <div class="form-check">
69
+ <input class="form-check-input" type="checkbox" data-property="openOutgoingLinksInNewTab" {{{ if settings.openOutgoingLinksInNewTab }}}checked{{{ end }}}/>
70
+ <label class="form-check-label">[[user:open_links_in_new_tab]]</label>
71
+ </div>
72
+ {{{ if inTopicSearchAvailable }}}
73
+ <div class="form-check">
74
+ <input class="form-check-input" type="checkbox" data-property="topicSearchEnabled" {{{ if settings.topicSearchEnabled }}}checked{{{ end }}}/>
75
+ <label class="form-check-label">[[user:enable_topic_searching]]</label>
76
+ </div>
77
+ <p class="form-text text-xs">[[user:topic_search_help]]</p>
78
+ {{{ end }}}
83
79
 
84
- <div class="form-check">
85
- <input class="form-check-input" type="checkbox" data-property="updateUrlWithPostIndex" {{{ if settings.updateUrlWithPostIndex }}}checked{{{ end }}}/>
86
- <label class="form-check-label">[[user:update_url_with_post_index]]</label>
87
- </div>
88
- <div class="form-check">
89
- <input class="form-check-input" type="checkbox" data-property="scrollToMyPost" {{{ if settings.scrollToMyPost }}}checked{{{ end }}}/>
90
- <label class="form-check-label">[[user:scroll_to_my_post]]</label>
91
- </div>
92
- </div>
93
- <hr/>
80
+ <div class="form-check">
81
+ <input class="form-check-input" type="checkbox" data-property="updateUrlWithPostIndex" {{{ if settings.updateUrlWithPostIndex }}}checked{{{ end }}}/>
82
+ <label class="form-check-label">[[user:update_url_with_post_index]]</label>
83
+ </div>
84
+ <div class="form-check">
85
+ <input class="form-check-input" type="checkbox" data-property="scrollToMyPost" {{{ if settings.scrollToMyPost }}}checked{{{ end }}}/>
86
+ <label class="form-check-label">[[user:scroll_to_my_post]]</label>
87
+ </div>
88
+ </div>
89
+ <hr/>
94
90
 
95
- <h6 class="fw-bold">[[global:pagination]]</h6>
96
- <div class="">
97
- <div class="mb-2 form-check">
98
- <input type="checkbox" class="form-check-input" data-property="usePagination" {{{ if settings.usePagination }}}checked{{{ end }}}>
99
- <label class="form-check-label">[[user:paginate_description]]</label>
100
- </div>
101
- <div class="mb-2">
102
- <label class="form-label">[[user:topics_per_page]] ([[user:max_items_per_page, {maxTopicsPerPage}]])</label>
103
- <input type="text" class="form-control form-control-sm" data-property="topicsPerPage" value="{settings.topicsPerPage}">
104
- </div>
105
- <div class="">
106
- <label class="form-label">[[user:posts_per_page]] ([[user:max_items_per_page, {maxPostsPerPage}]])</label>
107
- <input type="text" class="form-control form-control-sm" data-property="postsPerPage" value="{settings.postsPerPage}">
108
- </div>
109
- </div>
91
+ <h6 class="fw-bold">[[global:pagination]]</h6>
92
+ <div class="">
93
+ <div class="mb-2 form-check">
94
+ <input type="checkbox" class="form-check-input" data-property="usePagination" {{{ if settings.usePagination }}}checked{{{ end }}}>
95
+ <label class="form-check-label">[[user:paginate_description]]</label>
96
+ </div>
97
+ <div class="mb-2">
98
+ <label class="form-label">[[user:topics_per_page]] ([[user:max_items_per_page, {maxTopicsPerPage}]])</label>
99
+ <input type="text" class="form-control form-control-sm" data-property="topicsPerPage" value="{settings.topicsPerPage}">
100
+ </div>
101
+ <div class="">
102
+ <label class="form-label">[[user:posts_per_page]] ([[user:max_items_per_page, {maxPostsPerPage}]])</label>
103
+ <input type="text" class="form-control form-control-sm" data-property="postsPerPage" value="{settings.postsPerPage}">
104
+ </div>
105
+ </div>
110
106
 
111
- {{{ if !disableEmailSubscriptions }}}
112
- <hr/>
113
- <h6 class="fw-bold">[[global:email]]</h6>
114
- <div class="">
115
- <div class="mb-2">
116
- <label class="form-label" for="dailyDigestFreq">[[user:digest_label]]</label>
117
- <select class="form-select form-select-sm" id="dailyDigestFreq" data-property="dailyDigestFreq" autocomplete="off">
118
- {{{each dailyDigestFreqOptions}}}
119
- <option value="{./value}" {{{ if ./selected }}}selected="1"{{{ end }}}>{./name}</option>
120
- {{{end}}}
121
- </select>
122
- <p class="form-text text-xs">[[user:digest_description]]</p>
123
- </div>
124
- </div>
125
- {{{ end }}}
107
+ {{{ if !disableEmailSubscriptions }}}
108
+ <hr/>
109
+ <h6 class="fw-bold">[[global:email]]</h6>
110
+ <div class="">
111
+ <div class="mb-2">
112
+ <label class="form-label" for="dailyDigestFreq">[[user:digest_label]]</label>
113
+ <select class="form-select form-select-sm" id="dailyDigestFreq" data-property="dailyDigestFreq" autocomplete="off">
114
+ {{{each dailyDigestFreqOptions}}}
115
+ <option value="{./value}" {{{ if ./selected }}}selected="1"{{{ end }}}>{./name}</option>
116
+ {{{end}}}
117
+ </select>
118
+ <p class="form-text text-xs">[[user:digest_description]]</p>
119
+ </div>
120
+ </div>
121
+ {{{ end }}}
126
122
 
127
- {{{ each customSettings}}}
128
- <hr/>
129
- <h6 class="fw-bold">{./title}</h6>
130
- <div class="">
131
- {./content}
132
- </div>
123
+ {{{ each customSettings}}}
124
+ <hr/>
125
+ <h6 class="fw-bold">{./title}</h6>
126
+ <div class="">
127
+ {./content}
128
+ </div>
133
129
 
134
- {{{end}}}
135
- <hr class="d-block d-md-none"/>
136
- </div>
130
+ {{{end}}}
131
+ <hr class="d-block d-md-none"/>
132
+ </div>
137
133
 
138
- <div class="col-12 col-md-6">
139
- <h6 class="fw-bold">[[global:language]]</h6>
140
- <div class="">
141
- <select data-property="userLang" class="form-select form-select-sm mb-2">
142
- {{{each languages}}}
143
- <option value="{./code}" {{{ if ./selected }}}selected{{{ end }}}>{./name} ({./code})</option>
144
- {{{end}}}
145
- </select>
146
- </div>
147
- <hr/>
148
- {{{ if (isAdmin && isSelf) }}}
149
- <h6 class="fw-bold">[[user:acp_language]]</h6>
150
- <div class="">
151
- <select data-property="acpLang" class="form-select form-select-sm">
152
- {{{each acpLanguages}}}
153
- <option value="{./code}" {{{ if ./selected }}}selected{{{ end }}}>{./name} ({./code})</option>
154
- {{{end}}}
155
- </select>
156
- </div>
157
- <hr/>
158
- {{{ end }}}
134
+ <div class="col-12 col-md-6">
135
+ <h6 class="fw-bold">[[global:language]]</h6>
136
+ <div class="">
137
+ <select data-property="userLang" class="form-select form-select-sm mb-2">
138
+ {{{each languages}}}
139
+ <option value="{./code}" {{{ if ./selected }}}selected{{{ end }}}>{./name} ({./code})</option>
140
+ {{{end}}}
141
+ </select>
142
+ </div>
143
+ <hr/>
144
+ {{{ if (isAdmin && isSelf) }}}
145
+ <h6 class="fw-bold">[[user:acp_language]]</h6>
146
+ <div class="">
147
+ <select data-property="acpLang" class="form-select form-select-sm">
148
+ {{{each acpLanguages}}}
149
+ <option value="{./code}" {{{ if ./selected }}}selected{{{ end }}}>{./name} ({./code})</option>
150
+ {{{end}}}
151
+ </select>
152
+ </div>
153
+ <hr/>
154
+ {{{ end }}}
155
+
156
+ <h6 class="fw-bold">[[topic:watch]]</h6>
157
+ <div class="">
158
+ <div class="form-check">
159
+ <input class="form-check-input" type="checkbox" data-property="followTopicsOnCreate" {{{ if settings.followTopicsOnCreate }}}checked{{{ end }}}/>
160
+ <label class="form-check-label">[[user:follow_topics_you_create]]</label>
161
+ </div>
162
+ <div class="form-check">
163
+ <input class="form-check-input" type="checkbox" data-property="followTopicsOnReply" {{{ if settings.followTopicsOnReply }}}checked{{{ end }}}/>
164
+ <label class="form-check-label">[[user:follow_topics_you_reply_to]]</label>
165
+ </div>
166
+ <div class="mb-2">
167
+ <label class="form-label">[[user:default-category-watch-state]]</label>
168
+ <select class="form-select form-select-sm" data-property="categoryWatchState">
169
+ <option value="watching" {{{ if categoryWatchState.watching }}}selected{{{ end }}}>[[category:watching]]</option>
170
+ <option value="notwatching" {{{ if categoryWatchState.notwatching }}}selected{{{ end }}}>[[category:not-watching]]</option>
171
+ <option value="ignoring" {{{ if categoryWatchState.ignoring }}}selected{{{ end }}}>[[category:ignoring]]</option>
172
+ </select>
173
+ </div>
174
+ </div>
175
+ <hr/>
159
176
 
160
- <h6 class="fw-bold">[[topic:watch]]</h6>
161
- <div class="">
162
- <div class="form-check">
163
- <input class="form-check-input" type="checkbox" data-property="followTopicsOnCreate" {{{ if settings.followTopicsOnCreate }}}checked{{{ end }}}/>
164
- <label class="form-check-label">[[user:follow_topics_you_create]]</label>
165
- </div>
166
- <div class="form-check">
167
- <input class="form-check-input" type="checkbox" data-property="followTopicsOnReply" {{{ if settings.followTopicsOnReply }}}checked{{{ end }}}/>
168
- <label class="form-check-label">[[user:follow_topics_you_reply_to]]</label>
169
- </div>
170
- <div class="mb-2">
171
- <label class="form-label">[[user:default-category-watch-state]]</label>
172
- <select class="form-select form-select-sm" data-property="categoryWatchState">
173
- <option value="watching" {{{ if categoryWatchState.watching }}}selected{{{ end }}}>[[category:watching]]</option>
174
- <option value="notwatching" {{{ if categoryWatchState.notwatching }}}selected{{{ end }}}>[[category:not-watching]]</option>
175
- <option value="ignoring" {{{ if categoryWatchState.ignoring }}}selected{{{ end }}}>[[category:ignoring]]</option>
176
- </select>
177
- </div>
178
- </div>
179
- <hr/>
177
+ <h6 class="fw-bold">[[user:notifications]]</h6>
178
+ <div class="">
179
+ {{{each notificationSettings}}}
180
+ <div class="row mb-3">
181
+ <div class="col-7">
182
+ <label class="text-sm">{./label}</label>
183
+ </div>
184
+ <div class="mb-2 col-5">
185
+ <select class="form-select form-select-sm" data-property="{./name}">
186
+ <option value="none" {{{ if ./none }}}selected{{{ end }}}>[[notifications:none]]</option>
187
+ <option value="notification" {{{ if ./notification }}}selected{{{ end }}}>[[notifications:notification_only]]</option>
188
+ <option value="email" {{{ if ./email }}}selected{{{ end }}}>[[notifications:email_only]]</option>
189
+ <option value="notificationemail" {{{ if ./notificationemail }}}selected{{{ end }}}>[[notifications:notification_and_email]]</option>
190
+ </select>
191
+ </div>
192
+ </div>
193
+ {{{end}}}
180
194
 
181
- <h6 class="fw-bold">[[user:notifications]]</h6>
182
- <div class="">
183
- {{{each notificationSettings}}}
184
- <div class="row mb-3">
185
- <div class="col-7">
186
- <label class="text-sm">{./label}</label>
187
- </div>
188
- <div class="mb-2 col-5">
189
- <select class="form-select form-select-sm" data-property="{./name}">
190
- <option value="none" {{{ if ./none }}}selected{{{ end }}}>[[notifications:none]]</option>
191
- <option value="notification" {{{ if ./notification }}}selected{{{ end }}}>[[notifications:notification_only]]</option>
192
- <option value="email" {{{ if ./email }}}selected{{{ end }}}>[[notifications:email_only]]</option>
193
- <option value="notificationemail" {{{ if ./notificationemail }}}selected{{{ end }}}>[[notifications:notification_and_email]]</option>
194
- </select>
195
- </div>
196
- </div>
195
+ <div class="row">
196
+ <div class="col-7">
197
+ <label class="text-sm" for="upvote-notif-freq">[[user:upvote-notif-freq]]</label>
198
+ </div>
199
+ <div class="mb-2 col-5">
200
+ <select class="form-select form-select-sm" id="upvote-notif-freq" name="upvote-notif-freq" data-property="upvoteNotifFreq">
201
+ {{{ each upvoteNotifFreq }}}
202
+ <option value="{./name}" {{{ if ./selected }}}selected{{{ end }}}>
203
+ [[user:upvote-notif-freq.{./name}]]
204
+ </option>
197
205
  {{{end}}}
198
-
199
- <div class="row">
200
- <div class="col-7">
201
- <label class="text-sm" for="upvote-notif-freq">[[user:upvote-notif-freq]]</label>
202
- </div>
203
- <div class="mb-2 col-5">
204
- <select class="form-select form-select-sm" id="upvote-notif-freq" name="upvote-notif-freq" data-property="upvoteNotifFreq">
205
- {{{ each upvoteNotifFreq }}}
206
- <option value="{./name}" {{{ if ./selected }}}selected{{{ end }}}>
207
- [[user:upvote-notif-freq.{./name}]]
208
- </option>
209
- {{{end}}}
210
- </select>
211
- </div>
212
- </div>
213
- </div>
206
+ </select>
214
207
  </div>
215
208
  </div>
216
209
  </div>
217
210
  </div>
218
211
  </div>
212
+
213
+ <!-- IMPORT partials/account/footer.tpl -->