nodebb-theme-harmony 1.0.0-beta.7 → 1.0.0-beta.71

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 (137) hide show
  1. package/README.md +12 -1
  2. package/languages/en-GB/harmony.json +5 -1
  3. package/library.js +21 -7
  4. package/package.json +1 -1
  5. package/public/harmony.js +148 -9
  6. package/public/settings.js +1 -0
  7. package/screenshots/categories.png +0 -0
  8. package/screenshots/recent.png +0 -0
  9. package/screenshots/topic.png +0 -0
  10. package/scss/account.scss +1 -1
  11. package/scss/chats.scss +53 -25
  12. package/scss/common.scss +60 -8
  13. package/scss/flags.scss +5 -0
  14. package/scss/harmony.scss +3 -0
  15. package/scss/mixins.scss +7 -3
  16. package/scss/modals.scss +6 -1
  17. package/scss/modules/bottom-sheet.scss +1 -1
  18. package/scss/modules/composer.scss +0 -4
  19. package/scss/modules/cover.scss +1 -11
  20. package/scss/modules/filters.scss +8 -0
  21. package/scss/modules/paginator.scss +24 -0
  22. package/scss/modules/topic-navigator.scss +14 -42
  23. package/scss/modules/topics-list.scss +6 -0
  24. package/scss/overrides.scss +4 -1
  25. package/scss/search.scss +0 -0
  26. package/scss/sidebar.scss +20 -10
  27. package/scss/topic.scss +26 -13
  28. package/templates/account/blocks.tpl +35 -41
  29. package/templates/account/categories.tpl +26 -29
  30. package/templates/account/consent.tpl +66 -10
  31. package/templates/account/edit/password.tpl +25 -30
  32. package/templates/account/edit/username.tpl +21 -26
  33. package/templates/account/edit.tpl +105 -116
  34. package/templates/account/followers.tpl +12 -19
  35. package/templates/account/following.tpl +12 -18
  36. package/templates/account/groups.tpl +12 -17
  37. package/templates/account/info.tpl +178 -206
  38. package/templates/account/posts.tpl +31 -36
  39. package/templates/account/profile.tpl +66 -73
  40. package/templates/account/sessions.tpl +8 -30
  41. package/templates/account/settings.tpl +193 -198
  42. package/templates/account/theme.tpl +35 -26
  43. package/templates/account/topics.tpl +33 -38
  44. package/templates/account/uploads.tpl +33 -40
  45. package/templates/admin/plugins/harmony.tpl +17 -3
  46. package/templates/categories.tpl +1 -1
  47. package/templates/category.tpl +12 -13
  48. package/templates/chats.tpl +7 -8
  49. package/templates/flags/detail.tpl +160 -193
  50. package/templates/flags/list.tpl +4 -70
  51. package/templates/footer.tpl +2 -2
  52. package/templates/groups/details.tpl +21 -18
  53. package/templates/groups/list.tpl +1 -1
  54. package/templates/groups/members.tpl +0 -2
  55. package/templates/header.tpl +1 -1
  56. package/templates/login.tpl +2 -2
  57. package/templates/notifications.tpl +1 -1
  58. package/templates/partials/account/category-item.tpl +4 -4
  59. package/templates/partials/account/footer.tpl +3 -0
  60. package/templates/partials/account/header.tpl +78 -81
  61. package/templates/partials/account/session-list.tpl +18 -0
  62. package/templates/partials/account/sidebar-left.tpl +6 -0
  63. package/templates/partials/breadcrumbs.tpl +6 -6
  64. package/templates/partials/categories/item.tpl +20 -19
  65. package/templates/partials/categories/lastpost.tpl +2 -2
  66. package/templates/partials/{category-filter-content.tpl → category/filter-dropdown-content.tpl} +8 -6
  67. package/templates/partials/{category-selector-content.tpl → category/selector-dropdown-content.tpl} +3 -3
  68. package/templates/partials/category/subcategory.tpl +1 -1
  69. package/templates/partials/category/tags.tpl +0 -2
  70. package/templates/partials/category/watch.tpl +28 -4
  71. package/templates/partials/chats/message-window.tpl +10 -7
  72. package/templates/partials/chats/message.tpl +4 -6
  73. package/templates/partials/chats/recent_room.tpl +41 -32
  74. package/templates/partials/cookie-consent.tpl +5 -5
  75. package/templates/partials/flags/filters.tpl +142 -85
  76. package/templates/partials/flags/results.tpl +38 -0
  77. package/templates/partials/groups/admin.tpl +4 -4
  78. package/templates/partials/groups/badge.tpl +1 -1
  79. package/templates/partials/groups/memberlist.tpl +1 -1
  80. package/templates/partials/groups/sidebar-left.tpl +1 -1
  81. package/templates/partials/header/brand.tpl +1 -1
  82. package/templates/partials/mobile-footer.tpl +69 -64
  83. package/templates/partials/notifications_list.tpl +1 -1
  84. package/templates/partials/paginator.tpl +11 -9
  85. package/templates/partials/post_bar.tpl +26 -24
  86. package/templates/partials/posts_list_item.tpl +5 -5
  87. package/templates/partials/quick-search-results.tpl +3 -3
  88. package/templates/partials/search-filters.tpl +184 -0
  89. package/templates/partials/search-results.tpl +28 -32
  90. package/templates/partials/sidebar/chats.tpl +22 -33
  91. package/templates/partials/sidebar/drafts.tpl +42 -34
  92. package/templates/partials/sidebar/logged-in-menu.tpl +5 -5
  93. package/templates/partials/sidebar/logged-out-menu.tpl +1 -1
  94. package/templates/partials/sidebar/notifications.tpl +29 -8
  95. package/templates/partials/sidebar/search.tpl +1 -1
  96. package/templates/partials/sidebar/user-menu.tpl +6 -6
  97. package/templates/partials/sidebar-left.tpl +13 -10
  98. package/templates/partials/sidebar-right.tpl +1 -3
  99. package/templates/partials/skin-switcher.tpl +2 -2
  100. package/templates/partials/tags/filter-dropdown-content.tpl +31 -0
  101. package/templates/partials/tags_list.tpl +4 -4
  102. package/templates/partials/topic/browsing-users.tpl +0 -2
  103. package/templates/partials/topic/event.tpl +1 -1
  104. package/templates/partials/topic/navigation-post.tpl +5 -9
  105. package/templates/partials/topic/navigator-mobile.tpl +62 -0
  106. package/templates/partials/topic/navigator.tpl +21 -17
  107. package/templates/partials/topic/post-editor.tpl +0 -2
  108. package/templates/partials/topic/post-menu-list.tpl +36 -38
  109. package/templates/partials/topic/post-menu.tpl +15 -10
  110. package/templates/partials/topic/post.tpl +35 -17
  111. package/templates/partials/topic/quickreply.tpl +6 -6
  112. package/templates/partials/topic/reply-button.tpl +1 -1
  113. package/templates/partials/topic/topic-menu-list.tpl +16 -18
  114. package/templates/partials/topic/watch.tpl +28 -4
  115. package/templates/partials/topic-list-bar.tpl +50 -46
  116. package/templates/partials/topics_list.tpl +40 -38
  117. package/templates/partials/userFilter-placeholders.tpl +5 -0
  118. package/templates/partials/users/filter-dropdown-content.tpl +20 -0
  119. package/templates/partials/users/item.tpl +24 -26
  120. package/templates/partials/users_list.tpl +1 -1
  121. package/templates/popular.tpl +3 -1
  122. package/templates/post-queue.tpl +120 -0
  123. package/templates/recent.tpl +3 -2
  124. package/templates/register.tpl +2 -2
  125. package/templates/search.tpl +39 -177
  126. package/templates/tags.tpl +3 -3
  127. package/templates/top.tpl +3 -1
  128. package/templates/topic.tpl +74 -68
  129. package/templates/unread.tpl +3 -1
  130. package/templates/users.tpl +2 -2
  131. package/templates/modules/usercard.tpl +0 -39
  132. package/templates/partials/acceptTos.tpl +0 -11
  133. package/templates/partials/category-filter-right.tpl +0 -5
  134. package/templates/partials/category-filter.tpl +0 -3
  135. package/templates/partials/category-selector-right.tpl +0 -5
  136. package/templates/partials/category-selector.tpl +0 -3
  137. package/templates/partials/slideout-menu.tpl +0 -6
@@ -0,0 +1,24 @@
1
+ .skin-noskin [component="pagination"] {
2
+ .page-item.active:not(.disabled) .page-link {
3
+ color: $body-color;
4
+ background-color: $gray-300;
5
+ border-color: $gray-300;
6
+ }
7
+
8
+ .page-item:not(.disabled):hover .page-link {
9
+ color: $body-color;
10
+ }
11
+ }
12
+
13
+ [component="pagination"] {
14
+ .page-item.active:not(.disabled) .page-link {
15
+ color: $pagination-active-color;
16
+ }
17
+ .page-item:not(.disabled):hover .page-link {
18
+ color: $pagination-hover-color;
19
+ background-color: $pagination-hover-bg;
20
+ }
21
+ .page-item:not(.disabled) .page-link {
22
+ color: $body-color;
23
+ }
24
+ }
@@ -1,59 +1,31 @@
1
- body:not(.page-topic) [component="topic/navigator"] {
2
- display: none!important;
3
- }
4
-
5
- [component="topic/navigator"] {
6
- max-height: calc(200px + (2rem * 4));
7
- user-select: none;
8
-
9
- .track {
10
- width: 2px;
11
- background-color: mix($dark, $light, 10%);
12
-
13
- .handle {
1
+ .topic .pagination-block {
2
+ min-width: 150px;
3
+ .scroller-container {
4
+ height: 300px;
5
+ border-left: 2px solid $border-color;
6
+
7
+ .scroller-thumb {
8
+ &:not(.active) {
9
+ transition: top 100ms linear;
10
+ }
14
11
  cursor: grab;
15
- transition: $transition-base;
16
-
17
- &:active {
18
- transition: none;
12
+ &.active {
19
13
  cursor: grabbing;
20
14
  }
21
-
22
- .meta {
23
- top: -8px;
24
- left: calc($spacer + 8px);
25
- font-size: 13px;
26
- }
27
- }
28
-
29
- .knob {
30
- width: 16px;
31
- height: 16px;
32
- background-color: $link-color;
33
- margin-left: 1px;
34
15
  }
35
16
 
36
17
  .unread {
37
- width: 2px;
18
+ width: 1px;
38
19
  height: 0; // initial
39
20
  bottom: 0;
40
21
  background: $primary;
41
22
  transition: $transition-base;
23
+ left: -1px;
42
24
 
43
25
  .meta {
44
- left: calc($spacer + 8px);
26
+ left: 5px;
45
27
  font-size: 13px;
46
28
  }
47
29
  }
48
30
  }
49
- }
50
-
51
- .sidebar.open {
52
- [component="topic/navigator"] {
53
- align-self: flex-start;
54
- }
55
-
56
- [component="topic/navigator"].d-sm-flex.mt-auto + .mt-auto {
57
- margin-top: 0 !important;
58
- }
59
31
  }
@@ -1,7 +1,13 @@
1
1
  .topic-list {
2
2
  overflow-x: hidden!important;
3
3
  }
4
+
4
5
  [component="category/topic"] {
6
+ &.deleted {
7
+ opacity: 0.6;
8
+ .meta { display: none!important; }
9
+ }
10
+
5
11
  &.selected {
6
12
  [component="topic/select"] {
7
13
  color: $success!important;
@@ -39,6 +39,8 @@ $text-muted: $gray-600 !default;
39
39
  $border-color: $gray-200 !default;
40
40
  $link-color: shade-color($blue, 20%) !default;
41
41
 
42
+ $btn-ghost-hover-color: mix($light, $dark, 90);
43
+
42
44
  // no caret on dropdown-toggle
43
45
  $enable-caret: false;
44
46
 
@@ -53,8 +55,9 @@ $link-hover-decoration: underline;
53
55
 
54
56
  // Custom fonts
55
57
  $font-family-sans-serif: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
56
- $font-family-secondary: "Poppins" !default;
58
+ $font-family-secondary: "Poppins", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
57
59
  $font-weight-semibold: 500 !default;
60
+ $small-font-size: 0.875rem !default;
58
61
 
59
62
  $breadcrumb-divider: quote("→");
60
63
  $breadcrumb-divider-color: $gray-500 !default;
File without changes
package/scss/sidebar.scss CHANGED
@@ -1,10 +1,10 @@
1
1
  .skin-noskin {
2
2
  // only using colors when there is no bootswatch skin applied
3
- nav.sidebar, .bottombar {
3
+ nav.sidebar, .bottombar-nav {
4
4
  color: $secondary !important;
5
5
  background-color: $light !important;
6
6
  }
7
- .bottombar {
7
+ .bottombar-nav {
8
8
  .dropdown-menu {
9
9
  color: $secondary !important;
10
10
  background-color: $light !important;
@@ -76,7 +76,7 @@
76
76
  .chats-dropdown, .notifications-dropdown, .drafts-dropdown {
77
77
  min-width: 300px;
78
78
  width: 300px;
79
- ul {
79
+ .list-container {
80
80
  max-height: 400px;
81
81
  overflow-y: auto;
82
82
  }
@@ -87,7 +87,8 @@
87
87
  line-height: 12px;
88
88
  &.visible-open {
89
89
  font-size:12px;
90
- line-height: 16px;
90
+ line-height: 12px;
91
+ font-weight: normal;
91
92
  }
92
93
  }
93
94
 
@@ -97,7 +98,10 @@
97
98
  }
98
99
 
99
100
  .bottombar {
100
- z-index: $zindex-dropdown;
101
+ transition: bottom 150ms linear;
102
+ }
103
+
104
+ .bottombar-nav {
101
105
  .nav-text {
102
106
  font-size: 1rem;
103
107
  color: $body-color;
@@ -128,15 +132,21 @@
128
132
  overflow: auto!important;
129
133
  }
130
134
  .search-dropdown .quick-search-results {
131
- max-height: 250px!important;
135
+ max-height: 225px!important;
132
136
  overflow-y: auto!important;
133
137
  }
134
138
  .search-dropdown, .chats-dropdown, .notifications-dropdown, .drafts-dropdown {
135
- left: 0!important;
136
- right: 0!important;
137
- bottom: $spacer!important;
139
+ left: 0 !important;
140
+ right: 0 !important;
141
+ bottom: $spacer * 0.7 !important;
138
142
  box-shadow: none!important;
139
- ul {
143
+
144
+ border-left: 0;
145
+ border-right: 0;
146
+ border-bottom: 0;
147
+ border-radius: 0;
148
+
149
+ .list-container {
140
150
  max-height: 60vh!important;
141
151
  overflow-y: auto!important;
142
152
  }
package/scss/topic.scss CHANGED
@@ -1,3 +1,5 @@
1
+ .pagination-block { display: none; }
2
+
1
3
  .page-topic {
2
4
  [component="topic/title"] {
3
5
  font-size: 28px;
@@ -14,21 +16,10 @@
14
16
  line-height: 20px;
15
17
  }
16
18
 
17
- .action-bar {
18
- .dropdown-toggle::after {
19
- border: none;
20
- font-family: "FontAwesome";
21
- content: "\f078";
22
- color: tint-color($primary, 40%);
23
-
24
- position: relative;
25
- top: 2px;
26
- }
27
- }
28
-
29
19
  .topic {
30
20
  .posts {
31
21
  max-width: 960px;
22
+ width: 960px;
32
23
  // fixes code blocks pushing content out on mobile
33
24
  @include media-breakpoint-down(md) {
34
25
  max-width: calc(100vw - $grid-gutter-width);
@@ -49,11 +40,13 @@
49
40
  }
50
41
 
51
42
  [component="post"] {
52
- &.deleted {
43
+ &.deleted .post-container {
53
44
  opacity: .5;
54
45
  }
55
46
 
56
47
  [component="post/content"] {
48
+ @include fix-lists();
49
+
57
50
  pre {
58
51
  max-height: calc($font-size-base * 24);
59
52
  }
@@ -67,6 +60,17 @@
67
60
  [component="post/reply-count"] {
68
61
  font-size: $font-size-base * .75;
69
62
  }
63
+
64
+ [component="post/upvote"], [component="post/downvote"] {
65
+ &.upvoted, &.downvoted {
66
+ background-color: lighten($btn-ghost-hover-color, 5%);
67
+
68
+ &:hover {
69
+ background-color: $btn-ghost-hover-color;
70
+
71
+ }
72
+ }
73
+ }
70
74
  }
71
75
  }
72
76
 
@@ -106,6 +110,15 @@
106
110
  }
107
111
  }
108
112
  }
113
+
114
+ .pagination-block {
115
+ display: block;
116
+ transition: opacity 250ms ease-in;
117
+ opacity: 0;
118
+ &.ready {
119
+ opacity: 1;
120
+ }
121
+ }
109
122
  }
110
123
 
111
124
  @include media-breakpoint-up(sm) {
@@ -1,45 +1,39 @@
1
- <div class="account">
2
- <!-- IMPORT partials/account/header.tpl -->
3
- <div class="d-flex flex-column flex-md-row">
4
- <!-- IMPORT partials/account/sidebar-left.tpl -->
5
- <div class="flex-1 ps-md-2 ps-lg-5" style="min-width: 0;">
6
- <div class="d-flex justify-content-between mb-3">
7
- <h3 class="fw-semibold fs-5">[[pages:account/blocks, {username}]]</h3>
8
- <div class="justify-content-end">
9
- <div class="dropdown">
10
- <div class="input-group">
11
- <input class="form-control form-control-sm" type="text" id="user-search" placeholder="[[users:enter_username]]" data-bs-toggle="dropdown" autocomplete="off"/>
12
- <button class="btn btn-primary btn-sm" type="button">
13
- <i class="fa fa-search"></i>
14
- </button>
15
- </div>
1
+ <!-- IMPORT partials/account/header.tpl -->
2
+ <div class="d-flex justify-content-between mb-3">
3
+ <h3 class="fw-semibold fs-5">[[pages:account/blocks, {username}]]</h3>
4
+ <div class="justify-content-end">
5
+ <div class="dropdown">
6
+ <div class="input-group">
7
+ <input class="form-control form-control-sm" type="text" id="user-search" placeholder="[[users:enter_username]]" data-bs-toggle="dropdown" autocomplete="off"/>
8
+ <button class="btn btn-primary btn-sm" type="button">
9
+ <i class="fa fa-search"></i>
10
+ </button>
11
+ </div>
16
12
 
17
- <ul component="blocks/search/list" class="dropdown-menu dropdown-menu-end block-edit overflow-auto" style="max-height:300px;">
18
- <li><a href="#" class="dropdown-item">[[admin/menu:search.start-typing]]</a></li>
19
- {{{ each edit }}}
20
- <li class="">
21
- <div class="dropdown-item d-flex flex-nowrap gap-2 justify-content-between">
22
- <div class="text-truncate">
23
- <a href="{config.relative_path}/uid/{./uid}" class="text-decoration-none">{buildAvatar(edit, "24px", true)} {./username}</a>
24
- </div>
25
- <button class="btn btn-sm btn-primary text-nowrap" data-uid="{./uid}" data-action="toggle">[[user:block_toggle]]</button>
26
- </div>
27
- </li>
28
- {{{ end }}}
29
- </ul>
13
+ <ul component="blocks/search/list" class="dropdown-menu dropdown-menu-end block-edit overflow-auto" style="max-height:300px;">
14
+ <li><a href="#" class="dropdown-item">[[admin/menu:search.start-typing]]</a></li>
15
+ {{{ each edit }}}
16
+ <li class="">
17
+ <div class="dropdown-item d-flex flex-nowrap gap-2 justify-content-between">
18
+ <div class="text-truncate">
19
+ <a href="{config.relative_path}/uid/{./uid}" class="text-decoration-none">{buildAvatar(edit, "24px", true)} {./username}</a>
20
+ </div>
21
+ <button class="btn btn-sm btn-primary text-nowrap" data-uid="{./uid}" data-action="toggle">[[user:block_toggle]]</button>
30
22
  </div>
31
- </div>
32
- </div>
33
- <div class="users">
34
- <div id="users-container" class="row row-cols-2 row-cols-lg-3 row-cols-xl-4 g-2">
35
- {{{ each users }}}
36
- <!-- IMPORT partials/users/item.tpl -->
37
- {{{ end }}}
38
- </div>
39
- <div class="alert alert-warning text-center"{{{ if users.length }}} style="display: none;"{{{ end }}}>[[user:has_no_blocks]]</div>
40
- <!-- IMPORT partials/paginator.tpl -->
41
- </div>
23
+ </li>
24
+ {{{ end }}}
25
+ </ul>
42
26
  </div>
43
-
44
27
  </div>
45
- </div>
28
+ </div>
29
+ <div class="users">
30
+ <div id="users-container" class="row row-cols-2 row-cols-lg-3 row-cols-xl-4 g-2">
31
+ {{{ each users }}}
32
+ <!-- IMPORT partials/users/item.tpl -->
33
+ {{{ end }}}
34
+ </div>
35
+ <div class="alert alert-warning text-center"{{{ if users.length }}} style="display: none;"{{{ end }}}>[[user:has_no_blocks]]</div>
36
+ <!-- IMPORT partials/paginator.tpl -->
37
+ </div>
38
+
39
+ <!-- IMPORT partials/account/footer.tpl -->
@@ -1,34 +1,31 @@
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
- <h3 class="fw-semibold fs-5">{title}</h3>
3
+ <div class="d-flex justify-content-between align-items-center mb-3">
4
+ <div class="d-flex gap-1">
5
+ <h3 class="fw-semibold fs-5 mb-0">{title}</h3>
6
+ </div>
8
7
 
9
- <div class="row">
10
- <div class="col-lg-12 mb-2">
11
- <div class="btn-group bottom-sheet" component="category/watch/all">
12
- <button class="btn btn-outline-secondary dropdown-toggle" data-bs-toggle="dropdown" type="button">
13
- <span>[[user:change_all]]</span>
14
- <span class="caret"></span>
15
- </button>
16
- <ul class="dropdown-menu">
17
- <li><a class="dropdown-item" href="#" component="category/watching" data-state="watching"><i class="fa fa-fw fa-inbox"></i> [[category:watching]]<p class="help-text"><small>[[category:watching.description]]</small></p></a></li>
18
- <li><a class="dropdown-item" href="#" component="category/notwatching" data-state="notwatching"><i class="fa fa-fw fa-clock-o"></i> [[category:not-watching]]<p class="help-text"><small>[[category:not-watching.description]]</small></p></a></li>
19
- <li><a class="dropdown-item" href="#" component="category/ignoring" data-state="ignoring"><i class="fa fa-fw fa-eye-slash"></i> [[category:ignoring]]<p class="help-text"><small>[[category:ignoring.description]]</small></p></a></li>
20
- </ul>
21
- </div>
22
- </div>
23
- <div class="col-lg-12">
24
- <ul class="categories list-unstyled" itemscope itemtype="http://www.schema.org/ItemList">
25
- {{{each categories}}}
26
- <!-- IMPORT partials/account/category-item.tpl -->
27
- {{{end}}}
28
- </ul>
29
- <!-- IMPORT partials/paginator.tpl -->
30
- </div>
31
- </div>
8
+ <div class="d-flex gap-1">
9
+ <div class="btn-group bottom-sheet" component="category/watch/all">
10
+ <button class="btn-ghost-sm fw-semibold dropdown-toggle" data-bs-toggle="dropdown" type="button">
11
+ <span>[[user:change_all]]</span>
12
+ </button>
13
+ <ul class="dropdown-menu dropdown-menu-end">
14
+ <li><a class="dropdown-item" href="#" component="category/watching" data-state="watching"><i class="fa fa-fw fa-inbox"></i> [[category:watching]]<p class="help-text"><small>[[category:watching.description]]</small></p></a></li>
15
+ <li><a class="dropdown-item" href="#" component="category/notwatching" data-state="notwatching"><i class="fa fa-fw fa-clock-o"></i> [[category:not-watching]]<p class="help-text"><small>[[category:not-watching.description]]</small></p></a></li>
16
+ <li><a class="dropdown-item" href="#" component="category/ignoring" data-state="ignoring"><i class="fa fa-fw fa-eye-slash"></i> [[category:ignoring]]<p class="help-text"><small>[[category:ignoring.description]]</small></p></a></li>
17
+ </ul>
32
18
  </div>
33
19
  </div>
34
20
  </div>
21
+
22
+ <div>
23
+ <ul class="categories list-unstyled" itemscope itemtype="http://www.schema.org/ItemList">
24
+ {{{each categories}}}
25
+ <!-- IMPORT partials/account/category-item.tpl -->
26
+ {{{end}}}
27
+ </ul>
28
+ <!-- IMPORT partials/paginator.tpl -->
29
+ </div>
30
+
31
+ <!-- IMPORT partials/account/footer.tpl -->
@@ -1,17 +1,73 @@
1
- <div class="account">
2
- <!-- IMPORT partials/account/header.tpl -->
1
+ <!-- IMPORT partials/account/header.tpl -->
2
+ <h3 class="fw-semibold fs-5">[[user:consent.title]]</h3>
3
3
 
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
- <h3 class="fw-semibold fs-5">[[user:consent.title]]</h3>
4
+ <p class="lead">[[user:consent.lead]]</p>
5
+ <p>[[user:consent.intro]]</p>
8
6
 
9
- <p class="lead">[[user:consent.lead]]</p>
10
- <p>[[user:consent.intro]]</p>
7
+ <hr />
11
8
 
12
- <hr />
9
+ <div class="row">
10
+ <div class="col-sm-6">
11
+ {{{ if gdpr_consent }}}
12
+ <div class="alert alert-success">
13
+ <i class="fa fa-check float-end fa-3x"></i>
14
+ [[user:consent.received]]
15
+ </div>
16
+ {{{ else }}}
17
+ <div class="alert alert-warning">
18
+ [[user:consent.not_received]]
19
+ <br /><br />
20
+ <div class="text-center">
21
+ <button class="btn btn-warning" data-action="consent">[[user:consent.give]]</button>
22
+ </div>
23
+ </div>
24
+ {{{ end }}}
25
+ <div class="card">
26
+ <div class="card-body">
27
+ <p>[[user:consent.email_intro]]</p>
28
+ {{{ if digest.enabled }}}
29
+ <p>[[user:consent.digest_frequency, {digest.frequency}]]</p>
30
+ {{{ else }}}
31
+ <p>[[user:consent.digest_off]]</p>
32
+ {{{ end }}}
13
33
 
14
- <div class="row">
34
+ <div class="d-grid">
35
+ <a class="btn btn-outline-secondary" href="./settings">
36
+ <i class="fa fa-cog"></i>
37
+ [[pages:account/settings]]
38
+ </a>
39
+ </div>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ <div class="col-sm-6">
44
+ <div class="card">
45
+ <div class="card-body">
46
+ <p><strong>[[user:consent.right_of_access]]</strong></p>
47
+ <p>[[user:consent.right_of_access_description]]</p>
48
+ <p><strong>[[user:consent.right_to_rectification]]</strong></p>
49
+ <p>[[user:consent.right_to_rectification_description]]</p>
50
+ <p><strong>[[user:consent.right_to_erasure]]</strong></p>
51
+ <p>[[user:consent.right_to_erasure_description]]</p>
52
+ <p><strong>[[user:consent.right_to_data_portability]]</strong></p>
53
+ <p>[[user:consent.right_to_data_portability_description]]</p>
54
+
55
+ <hr />
56
+
57
+ <div class="btn-group-vertical d-grid">
58
+ <a data-action="export-profile" class="btn btn-outline-secondary">
59
+ <i class="fa fa-download"></i> [[user:consent.export_profile]]
60
+ </a>
61
+ <a data-action="export-posts" class="btn btn-outline-secondary">
62
+ <i class="fa fa-download"></i> [[user:consent.export_posts]]
63
+ </a>
64
+ <a data-action="export-uploads" class="btn btn-outline-secondary">
65
+ <i class="fa fa-download"></i> [[user:consent.export_uploads]]
66
+ </a>
67
+ </div>
68
+ </div>
15
69
  </div>
16
70
  </div>
17
71
  </div>
72
+
73
+ <!-- IMPORT partials/account/footer.tpl -->
@@ -1,37 +1,32 @@
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
- <h3 class="fw-semibold fs-5">{{{ if isSelf }}}[[user:change_password]]{{{ else }}}[[pages:{template.name}, {username}]]{{{ end }}}</h3>
3
+ <h3 class="fw-semibold fs-5">{{{ if isSelf }}}[[user:change_password]]{{{ else }}}[[pages:{template.name}, {username}]]{{{ end }}}</h3>
8
4
 
9
- <form class="edit-form">
10
- <!-- disables autocomplete on FF --><input type="password" style="display:none">
5
+ <form class="edit-form">
6
+ <!-- disables autocomplete on FF --><input type="password" style="display:none">
11
7
 
12
- {{{ if isSelf }}}
13
- <div class="mb-2">
14
- <label class="form-label fw-semibold text-xm" for="inputCurrentPassword">[[user:current_password]]</label>
15
- <input autocomplete="off" class="form-control" type="password" id="inputCurrentPassword" placeholder="[[user:current_password]]" value=""<!-- IF !hasPassword --> disabled<!-- ENDIF !hasPassword -->>
16
- </div>
17
- {{{ end }}}
8
+ {{{ if isSelf }}}
9
+ <div class="mb-2">
10
+ <label class="form-label fw-semibold text-xm" for="inputCurrentPassword">[[user:current_password]]</label>
11
+ <input autocomplete="off" class="form-control" type="password" id="inputCurrentPassword" placeholder="[[user:current_password]]" value="" {{{ if !hasPassword }}} disabled{{{ end }}}>
12
+ </div>
13
+ {{{ end }}}
18
14
 
19
- <div class="mb-2">
20
- <label class="form-label fw-semibold text-xm" for="inputNewPassword">[[user:new_password]]</label>
21
- <input class="form-control" type="password" id="inputNewPassword" placeholder="[[user:password]]" value="">
22
- <span class="form-feedback" id="password-notify"></span>
23
- </div>
15
+ <div class="mb-2">
16
+ <label class="form-label fw-semibold text-xm" for="inputNewPassword">[[user:new_password]]</label>
17
+ <input class="form-control" type="password" id="inputNewPassword" placeholder="[[user:password]]" value="">
18
+ <span class="form-feedback" id="password-notify"></span>
19
+ </div>
24
20
 
25
- <div class="mb-2">
26
- <label class="form-label fw-semibold text-xm" for="inputNewPasswordAgain">[[user:confirm_password]]</label>
27
- <input class="form-control" type="password" id="inputNewPasswordAgain" placeholder="[[user:confirm_password]]" value="">
28
- <span class="form-feedback" id="password-confirm-notify"></span>
29
- </div>
21
+ <div class="mb-2">
22
+ <label class="form-label fw-semibold text-xm" for="inputNewPasswordAgain">[[user:confirm_password]]</label>
23
+ <input class="form-control" type="password" id="inputNewPasswordAgain" placeholder="[[user:confirm_password]]" value="">
24
+ <span class="form-feedback" id="password-confirm-notify"></span>
25
+ </div>
30
26
 
31
- <div class="form-actions">
32
- <button id="changePasswordBtn" class="btn btn-primary btn-block"><i class="hide fa fa-spinner fa-spin"></i> [[user:change_password]]</button>
33
- </div>
34
- </form>
35
- </div>
27
+ <div class="form-actions">
28
+ <button id="changePasswordBtn" class="btn btn-primary btn-block"><i class="hide fa fa-spinner fa-spin"></i> [[user:change_password]]</button>
36
29
  </div>
37
- </div>
30
+ </form>
31
+
32
+ <!-- IMPORT partials/account/footer.tpl -->
@@ -1,33 +1,28 @@
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
- <h3 class="fw-semibold fs-5">{{{ if isSelf }}}[[user:change_username]]{{{ else }}}[[pages:{template.name}, {username}]]{{{ end }}}</h3>
3
+ <h3 class="fw-semibold fs-5">{{{ if isSelf }}}[[user:change_username]]{{{ else }}}[[pages:{template.name}, {username}]]{{{ end }}}</h3>
8
4
 
9
- <form class="form-horizontal edit-form">
10
- <div class="mb-2">
11
- <label class="form-label fw-semibold text-sm" for="inputNewUsername">[[user:username]]</label>
12
- <input class="form-control" type="text" id="inputNewUsername" placeholder="[[user:username]]" value="{username}">
13
- </div>
5
+ <form class="form-horizontal edit-form">
6
+ <div class="mb-2">
7
+ <label class="form-label fw-semibold text-sm" for="inputNewUsername">[[user:username]]</label>
8
+ <input class="form-control" type="text" id="inputNewUsername" placeholder="[[user:username]]" value="{username}">
9
+ </div>
14
10
 
15
- <!-- disables autocomplete on FF --><input type="password" style="display:none">
11
+ <!-- disables autocomplete on FF --><input type="password" style="display:none">
16
12
 
17
- {{{ if isSelf }}}
18
- <div class="mb-2">
19
- <label class="form-label fw-semibold text-sm" for="inputCurrentPassword">[[user:current_password]]</label>
20
- <input autocomplete="off" class="form-control" type="password" id="inputCurrentPassword" placeholder="[[user:current_password]]" value=""{{{ if !hasPassword }}} disabled{{{ end }}}>
21
- </div>
22
- {{{ end }}}
13
+ {{{ if isSelf }}}
14
+ <div class="mb-2">
15
+ <label class="form-label fw-semibold text-sm" for="inputCurrentPassword">[[user:current_password]]</label>
16
+ <input autocomplete="off" class="form-control" type="password" id="inputCurrentPassword" placeholder="[[user:current_password]]" value=""{{{ if !hasPassword }}} disabled{{{ end }}}>
17
+ </div>
18
+ {{{ end }}}
23
19
 
24
- <input type="hidden" name="uid" id="inputUID" value="{uid}" />
20
+ <input type="hidden" name="uid" id="inputUID" value="{uid}" />
25
21
 
26
- <br/>
27
- <div class="form-actions">
28
- <button id="submitBtn" class="btn btn-primary btn-block"><i class="hide fa fa-spinner fa-spin"></i> [[user:change_username]]</button>
29
- </div>
30
- </form>
31
- </div>
22
+ <br/>
23
+ <div class="form-actions">
24
+ <button id="submitBtn" class="btn btn-primary btn-block"><i class="hide fa fa-spinner fa-spin"></i> [[user:change_username]]</button>
32
25
  </div>
33
- </div>
26
+ </form>
27
+
28
+ <!-- IMPORT partials/account/footer.tpl -->