nodebb-theme-harmony 0.0.9 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/languages/en-GB/harmony.json +5 -1
- package/lib/controllers.js +15 -0
- package/library.js +63 -6
- package/package.json +1 -1
- package/plugin.json +5 -1
- package/public/settings.js +28 -0
- package/scss/account.scss +0 -3
- package/scss/common.scss +6 -0
- package/scss/modules/bottom-sheet.scss +1 -1
- package/scss/modules/topic-navigator.scss +0 -6
- package/scss/sidebar.scss +18 -16
- package/templates/account/blocks.tpl +2 -2
- package/templates/account/categories.tpl +27 -21
- package/templates/account/consent.tpl +10 -64
- package/templates/account/edit/password.tpl +29 -24
- package/templates/account/edit/username.tpl +25 -20
- package/templates/account/edit.tpl +110 -115
- package/templates/account/followers.tpl +2 -3
- package/templates/account/following.tpl +2 -3
- package/templates/account/groups.tpl +2 -3
- package/templates/account/info.tpl +206 -204
- package/templates/account/posts.tpl +4 -4
- package/templates/account/profile.tpl +9 -9
- package/templates/account/sessions.tpl +3 -6
- package/templates/account/settings.tpl +193 -206
- package/templates/account/theme.tpl +25 -21
- package/templates/account/topics.tpl +17 -16
- package/templates/account/uploads.tpl +4 -8
- package/templates/admin/plugins/harmony.tpl +4 -0
- package/templates/groups/details.tpl +3 -20
- package/templates/groups/list.tpl +10 -9
- package/templates/header.tpl +3 -21
- package/templates/login.tpl +1 -1
- package/templates/notifications.tpl +4 -4
- package/templates/partials/account/header.tpl +58 -47
- package/templates/partials/account/sidebar-left.tpl +19 -12
- package/templates/partials/buttons/newTopic.tpl +1 -3
- package/templates/partials/categories/item.tpl +1 -8
- package/templates/partials/category/sort.tpl +3 -3
- package/templates/partials/category/subcategory.tpl +1 -1
- package/templates/partials/category/tools.tpl +3 -3
- package/templates/partials/category/watch.tpl +7 -7
- package/templates/partials/category-filter-content.tpl +4 -4
- package/templates/partials/category-selector-content.tpl +10 -9
- package/templates/partials/chats/message-window.tpl +9 -7
- package/templates/partials/groups/admin.tpl +3 -5
- package/templates/partials/groups/sidebar-left.tpl +1 -1
- package/templates/partials/header/brand.tpl +19 -0
- package/templates/partials/notifications_list.tpl +5 -5
- package/templates/partials/post_bar.tpl +5 -5
- package/templates/partials/sidebar/logged-in-menu.tpl +23 -0
- package/templates/partials/sidebar/user-menu.tpl +1 -1
- package/templates/partials/sidebar-left.tpl +1 -1
- package/templates/partials/sidebar-right.tpl +1 -23
- package/templates/partials/tags_list.tpl +3 -2
- package/templates/partials/topic/navigator.tpl +2 -2
- package/templates/partials/topic/post-menu.tpl +2 -4
- package/templates/partials/topic/post.tpl +13 -13
- package/templates/partials/topic/reply-button.tpl +3 -3
- package/templates/partials/topic/sort.tpl +3 -3
- package/templates/partials/topic/tools.tpl +3 -3
- package/templates/partials/topic/watch.tpl +17 -16
- package/templates/partials/topic-filters.tpl +3 -3
- package/templates/partials/topic-list-bar.tpl +8 -12
- package/templates/partials/topic-terms.tpl +3 -3
- package/templates/partials/topics_list.tpl +4 -4
- package/templates/partials/users/item.tpl +27 -25
- package/templates/partials/users_list_menu.tpl +1 -1
- package/templates/search.tpl +0 -2
- package/templates/tags.tpl +12 -8
- package/templates/topic.tpl +1 -3
- package/templates/users.tpl +4 -5
|
@@ -1,231 +1,218 @@
|
|
|
1
|
-
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
-
|
|
3
1
|
<div class="account">
|
|
4
2
|
<!-- IMPORT partials/account/header.tpl -->
|
|
5
3
|
|
|
6
|
-
<div class="row">
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
<
|
|
10
|
-
|
|
11
|
-
<
|
|
12
|
-
{{{each bootswatchSkinOptions}}}
|
|
13
|
-
<option value="{bootswatchSkinOptions.value}" <!-- IF bootswatchSkinOptions.selected -->selected<!-- ENDIF bootswatchSkinOptions.selected -->>{bootswatchSkinOptions.name}</option>
|
|
14
|
-
{{{end}}}
|
|
15
|
-
</select>
|
|
16
|
-
</div>
|
|
17
|
-
<!-- ENDIF !disableCustomUserSkins -->
|
|
18
|
-
|
|
19
|
-
<!-- IF allowUserHomePage -->
|
|
20
|
-
<h4>[[user:select-homepage]]</h4>
|
|
21
|
-
<div class="card card-body mb-3">
|
|
22
|
-
<div class="mb-2">
|
|
23
|
-
<label for="homePageRoute">[[user:homepage]]</label>
|
|
24
|
-
<select class="form-select" id="homePageRoute" data-property="homePageRoute">
|
|
25
|
-
<option value="none">None</option>
|
|
26
|
-
{{{each homePageRoutes}}}
|
|
27
|
-
<option value="{homePageRoutes.route}" <!-- IF homePageRoutes.selected -->selected="1"<!-- ENDIF homePageRoutes.selected -->>{homePageRoutes.name}</option>
|
|
28
|
-
{{{end}}}
|
|
29
|
-
</select>
|
|
30
|
-
<p class="form-text">[[user:homepage_description]]</p>
|
|
31
|
-
</div>
|
|
32
|
-
<div id="homePageCustom" class="mb-2" style="display: none;">
|
|
33
|
-
<label for="homePageCustom">[[user:custom_route]]</label>
|
|
34
|
-
<input type="text" class="form-control" data-property="homePageCustom" id="homePageCustom" value="{settings.homePageRoute}"/>
|
|
35
|
-
<p class="form-text">[[user:custom_route_help]]</p>
|
|
36
|
-
</div>
|
|
37
|
-
</div>
|
|
38
|
-
<!-- ENDIF allowUserHomePage -->
|
|
39
|
-
|
|
40
|
-
<h4>[[global:privacy]]</h4>
|
|
41
|
-
<div class="card card-body mb-3">
|
|
42
|
-
<!-- IF !hideEmail -->
|
|
43
|
-
<div class="form-check">
|
|
44
|
-
<input class="form-check-input" type="checkbox" data-property="showemail" <!-- IF settings.showemail -->checked <!-- ENDIF settings.showemail -->/>
|
|
45
|
-
<strong>
|
|
46
|
-
<label class="form-check-label">[[user:show_email]]</label>
|
|
47
|
-
</strong>
|
|
48
|
-
</div>
|
|
49
|
-
<!-- ENDIF !hideEmail -->
|
|
50
|
-
|
|
51
|
-
<!-- IF !hideFullname -->
|
|
52
|
-
<div class="form-check">
|
|
53
|
-
<input class="form-check-input" type="checkbox" data-property="showfullname" <!-- IF settings.showfullname -->checked<!-- ENDIF settings.showfullname -->/>
|
|
54
|
-
<strong>
|
|
55
|
-
<label class="form-check-label">[[user:show_fullname]]</label>
|
|
56
|
-
</strong>
|
|
57
|
-
</div>
|
|
58
|
-
<!-- ENDIF !hideFullname -->
|
|
59
|
-
<!-- IF !config.disableChat -->
|
|
60
|
-
<div class="form-check">
|
|
61
|
-
<input class="form-check-input" type="checkbox" data-property="restrictChat" <!-- IF settings.restrictChat -->checked<!-- ENDIF settings.restrictChat -->/>
|
|
62
|
-
<strong>
|
|
63
|
-
<label class="form-check-label">[[user:restrict_chats]]</label>
|
|
64
|
-
</strong>
|
|
65
|
-
</div>
|
|
66
|
-
<!-- ENDIF !config.disableChat -->
|
|
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>
|
|
67
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 }}}
|
|
24
|
+
|
|
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/>
|
|
44
|
+
{{{ end }}}
|
|
45
|
+
|
|
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 }}}
|
|
54
|
+
|
|
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/>
|
|
69
|
+
|
|
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 }}}
|
|
83
|
+
|
|
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/>
|
|
94
|
+
|
|
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>
|
|
68
110
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
<
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
</
|
|
83
|
-
|
|
84
|
-
<p class="form-text">[[user:topic_search_help]]</p>
|
|
85
|
-
<!-- ENDIF inTopicSearchAvailable -->
|
|
86
|
-
<div class="form-check">
|
|
87
|
-
<input class="form-check-input" type="checkbox" data-property="updateUrlWithPostIndex" {{{ if settings.updateUrlWithPostIndex }}}checked{{{ end }}}/>
|
|
88
|
-
<strong>
|
|
89
|
-
<label class="form-check-label">[[user:update_url_with_post_index]]</label>
|
|
90
|
-
</strong>
|
|
91
|
-
</div>
|
|
92
|
-
<div class="form-check">
|
|
93
|
-
<input class="form-check-input" type="checkbox" data-property="scrollToMyPost" <!-- IF settings.scrollToMyPost -->checked<!-- ENDIF settings.scrollToMyPost -->/>
|
|
94
|
-
<strong>
|
|
95
|
-
<label class="form-check-label">[[user:scroll_to_my_post]]</label>
|
|
96
|
-
</strong>
|
|
97
|
-
</div>
|
|
98
|
-
</div>
|
|
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 }}}
|
|
99
126
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
<
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
<strong><label class="form-label">[[user:topics_per_page]] ([[user:max_items_per_page, {maxTopicsPerPage}]])</label></strong>
|
|
107
|
-
<input type="text" class="form-control" data-property="topicsPerPage" value="{settings.topicsPerPage}">
|
|
108
|
-
</div>
|
|
109
|
-
<div class="">
|
|
110
|
-
<strong><label class="form-label">[[user:posts_per_page]] ([[user:max_items_per_page, {maxPostsPerPage}]])</label></strong>
|
|
111
|
-
<input type="text" class="form-control" data-property="postsPerPage" value="{settings.postsPerPage}">
|
|
112
|
-
</div>
|
|
113
|
-
</div>
|
|
127
|
+
{{{ each customSettings}}}
|
|
128
|
+
<hr/>
|
|
129
|
+
<h6 class="fw-bold">{./title}</h6>
|
|
130
|
+
<div class="">
|
|
131
|
+
{./content}
|
|
132
|
+
</div>
|
|
114
133
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
<div class="card card-body mb-3">
|
|
118
|
-
<div class="mb-2">
|
|
119
|
-
<label for="dailyDigestFreq">[[user:digest_label]]</label>
|
|
120
|
-
<select class="form-select" id="dailyDigestFreq" data-property="dailyDigestFreq" autocomplete="off">
|
|
121
|
-
{{{each dailyDigestFreqOptions}}}
|
|
122
|
-
<option value="{dailyDigestFreqOptions.value}" <!-- IF dailyDigestFreqOptions.selected -->selected="1"<!-- ENDIF dailyDigestFreqOptions.selected -->>{dailyDigestFreqOptions.name}</option>
|
|
123
|
-
{{{end}}}
|
|
124
|
-
</select>
|
|
125
|
-
<p class="form-text">[[user:digest_description]]</p>
|
|
134
|
+
{{{end}}}
|
|
135
|
+
<hr class="d-block d-md-none"/>
|
|
126
136
|
</div>
|
|
127
|
-
</div>
|
|
128
|
-
<!-- ENDIF !disableEmailSubscriptions -->
|
|
129
|
-
|
|
130
|
-
{{{each customSettings}}}
|
|
131
|
-
<h4>{customSettings.title}</h4>
|
|
132
|
-
<div class="card card-body mb-3">
|
|
133
|
-
{customSettings.content}
|
|
134
|
-
</div>
|
|
135
|
-
{{{end}}}
|
|
136
137
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
<div class="card card-body mb-3">
|
|
142
|
-
<div class="row">
|
|
143
|
-
<div class="mb-2 col-lg-12">
|
|
144
|
-
<select data-property="userLang" class="form-select">
|
|
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">
|
|
145
142
|
{{{each languages}}}
|
|
146
|
-
<option value="{
|
|
143
|
+
<option value="{./code}" {{{ if ./selected }}}selected{{{ end }}}>{./name} ({./code})</option>
|
|
147
144
|
{{{end}}}
|
|
148
145
|
</select>
|
|
149
146
|
</div>
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
<div class="mb-2 col-lg-12">
|
|
156
|
-
<select data-property="acpLang" class="form-select">
|
|
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">
|
|
157
152
|
{{{each acpLanguages}}}
|
|
158
|
-
<option value="{
|
|
153
|
+
<option value="{./code}" {{{ if ./selected }}}selected{{{ end }}}>{./name} ({./code})</option>
|
|
159
154
|
{{{end}}}
|
|
160
155
|
</select>
|
|
161
156
|
</div>
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
<select class="form-select" data-property="categoryWatchState">
|
|
184
|
-
<option value="watching" <!-- IF categoryWatchState.watching -->selected<!-- ENDIF categoryWatchState.watching -->>[[category:watching]]</option>
|
|
185
|
-
<option value="notwatching" <!-- IF categoryWatchState.notwatching -->selected<!-- ENDIF categoryWatchState.notwatching -->>[[category:not-watching]]</option>
|
|
186
|
-
<option value="ignoring" <!-- IF categoryWatchState.ignoring -->selected<!-- ENDIF categoryWatchState.ignoring -->>[[category:ignoring]]</option>
|
|
187
|
-
</select>
|
|
188
|
-
</div>
|
|
189
|
-
</div>
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
<h4>[[user:notifications]]</h4>
|
|
193
|
-
<div class="card card-body mb-3">
|
|
194
|
-
{{{each notificationSettings}}}
|
|
195
|
-
<div class="row mb-3">
|
|
196
|
-
<div class="col-7">
|
|
197
|
-
<label>{notificationSettings.label}</label>
|
|
198
|
-
</div>
|
|
199
|
-
<div class="mb-2 col-5">
|
|
200
|
-
<select class="form-select" data-property="{notificationSettings.name}">
|
|
201
|
-
<option value="none" <!-- IF notificationSettings.none -->selected<!-- ENDIF notificationSettings.none -->>[[notifications:none]]</option>
|
|
202
|
-
<option value="notification" <!-- IF notificationSettings.notification -->selected<!-- ENDIF notificationSettings.notification -->>[[notifications:notification_only]]</option>
|
|
203
|
-
<option value="email" <!-- IF notificationSettings.email -->selected<!-- ENDIF notificationSettings.email -->>[[notifications:email_only]]</option>
|
|
204
|
-
<option value="notificationemail" <!-- IF notificationSettings.notificationemail -->selected<!-- ENDIF notificationSettings.notificationemail -->>[[notifications:notification_and_email]]</option>
|
|
205
|
-
</select>
|
|
157
|
+
<hr/>
|
|
158
|
+
{{{ end }}}
|
|
159
|
+
|
|
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>
|
|
206
178
|
</div>
|
|
207
|
-
|
|
208
|
-
|
|
179
|
+
<hr/>
|
|
180
|
+
|
|
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>
|
|
197
|
+
{{{end}}}
|
|
209
198
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
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>
|
|
222
213
|
</div>
|
|
223
214
|
</div>
|
|
224
215
|
</div>
|
|
225
216
|
</div>
|
|
226
217
|
</div>
|
|
227
|
-
<div class="form-actions">
|
|
228
|
-
<a id="submitBtn" href="#" class="btn btn-primary">[[global:save_changes]]</a>
|
|
229
|
-
</div>
|
|
230
218
|
</div>
|
|
231
|
-
|
|
@@ -1,29 +1,33 @@
|
|
|
1
|
-
<!-- THIS FILE IS STILL PERSONA -->
|
|
2
|
-
|
|
3
1
|
<div class="account">
|
|
4
2
|
<!-- IMPORT partials/account/header.tpl -->
|
|
5
3
|
|
|
6
|
-
<
|
|
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">[[harmony:settings.title]]</h3>
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
<button id="save" type="button" class="btn btn-primary">[[global:save_changes]]</button>
|
|
11
|
+
</div>
|
|
9
12
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
</div><br />
|
|
13
|
+
<form id="theme-settings" role="form">
|
|
14
|
+
<div class="form-check mb-2">
|
|
15
|
+
<input class="form-check-input" type="checkbox" id="enableQuickReply" name="enableQuickReply" {{{ if config.enableQuickReply }}}checked{{{ end }}}>
|
|
16
|
+
<label class="form-check-label">[[harmony:settings.enableQuickReply]]</label>
|
|
17
|
+
</div>
|
|
16
18
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
<
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
<div class="form-check mb-2">
|
|
20
|
+
<input class="form-check-input" type="checkbox" id="centerHeaderElements" name="centerHeaderElements" {{{ if config.centerHeaderElements }}}checked{{{ end }}}>
|
|
21
|
+
<label class="form-check-label">[[harmony:settings.centerHeaderElements]]</label>
|
|
22
|
+
</div>
|
|
23
|
+
|
|
24
|
+
<div class="form-check mb-2">
|
|
25
|
+
<input class="form-check-input" type="checkbox" id="stickyToolbar" name="stickyToolbar" {{{ if config.stickyToolbar }}}checked{{{ end }}}>
|
|
26
|
+
<label class="form-check-label">[[harmony:settings.stickyToolbar]]</label>
|
|
27
|
+
</div>
|
|
26
28
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
|
|
30
|
+
</form>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
29
33
|
</div>
|
|
@@ -1,32 +1,33 @@
|
|
|
1
1
|
<div class="account">
|
|
2
2
|
<!-- IMPORT partials/account/header.tpl -->
|
|
3
3
|
|
|
4
|
-
<div class="
|
|
4
|
+
<div class="d-flex flex-column flex-md-row">
|
|
5
5
|
<!-- IMPORT partials/account/sidebar-left.tpl -->
|
|
6
|
-
<div class="
|
|
6
|
+
<div class="flex-1 ps-md-2 ps-lg-5" style="min-width: 0;">
|
|
7
7
|
<div class="d-flex justify-content-between align-items-center mb-3">
|
|
8
|
-
<h3 class="fw-semibold fs-5 mb-0">[[global:topics]]</h3>
|
|
9
8
|
<div class="d-flex gap-1">
|
|
10
|
-
<
|
|
9
|
+
<h3 class="fw-semibold fs-5 mb-0">[[global:topics]]</h3>
|
|
10
|
+
{{{ if showSort }}}
|
|
11
|
+
<div class="btn-group bottom-sheet" component="thread/sort">
|
|
12
|
+
<button title="[[global:sort]]" class="btn-ghost-sm dropdown-toggle" data-bs-toggle="dropdown" type="button"><i class="fa-solid fa-arrow-up-wide-short"></i></button>
|
|
13
|
+
<ul class="dropdown-menu">
|
|
14
|
+
{{{each sortOptions }}}
|
|
15
|
+
<li><a class="dropdown-item" href="{config.relative_path}{./url}"><i class="fa fa-fw {{{if ./selected}}}fa-check{{{end}}}"></i>{./name}</a></li>
|
|
16
|
+
{{{end}}}
|
|
17
|
+
</ul>
|
|
18
|
+
</div>
|
|
19
|
+
{{{ end }}}
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
<div class="d-flex gap-1">
|
|
11
23
|
{{{ if canEdit }}}
|
|
24
|
+
<a href="{config.relative_path}/user/{userslug}/topics" class="btn-ghost-sm fw-semibold {{{ if template.account/topics }}}active{{{ end }}}">[[global:header.recent]]</a>
|
|
12
25
|
<a href="{config.relative_path}/user/{userslug}/watched"class="btn-ghost-sm fw-semibold {{{ if template.account/watched }}}active{{{ end }}}">[[user:watched]]</a>
|
|
13
26
|
<a href="{config.relative_path}/user/{userslug}/ignored" class="btn-ghost-sm fw-semibold {{{ if template.account/ignored }}}active{{{ end }}}">[[user:ignored]]</a>
|
|
14
27
|
{{{ end }}}
|
|
15
28
|
</div>
|
|
16
29
|
</div>
|
|
17
30
|
|
|
18
|
-
{{{ if showSort }}}
|
|
19
|
-
<div class="btn-toolbar justify-content-end mb-2">
|
|
20
|
-
<div class="btn-group bottom-sheet" component="thread/sort">
|
|
21
|
-
<button class="btn-ghost-sm dropdown-toggle" data-bs-toggle="dropdown" type="button"><span>[[topic:sort_by]]</span></button>
|
|
22
|
-
<ul class="dropdown-menu dropdown-menu-end">
|
|
23
|
-
{{{each sortOptions }}}
|
|
24
|
-
<li><a class="dropdown-item" href="{config.relative_path}{sortOptions.url}"><i class="fa fa-fw {{{if sortOptions.selected}}}fa-check{{{end}}}"></i>{sortOptions.name}</a></li>
|
|
25
|
-
{{{end}}}
|
|
26
|
-
</ul>
|
|
27
|
-
</div>
|
|
28
|
-
</div>
|
|
29
|
-
{{{ end }}}
|
|
30
31
|
|
|
31
32
|
{{{ if !topics.length }}}
|
|
32
33
|
<div class="alert alert-warning text-center">{noItemsFoundKey}</div>
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
<div class="account">
|
|
2
2
|
<!-- IMPORT partials/account/header.tpl -->
|
|
3
|
-
<div class="
|
|
3
|
+
<div class="d-flex flex-column flex-md-row">
|
|
4
4
|
<!-- IMPORT partials/account/sidebar-left.tpl -->
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
<div class="col-12 col-md-9 col-lg-10 ps-md-5">
|
|
9
|
-
|
|
5
|
+
<div class="flex-1 ps-md-2 ps-lg-5" style="min-width: 0;">
|
|
10
6
|
<h3 class="fw-semibold fs-5">{title}</h3>
|
|
11
7
|
|
|
12
8
|
<!-- IF privateUploads -->
|
|
@@ -19,7 +15,7 @@
|
|
|
19
15
|
<div class="alert alert-warning text-center">[[uploads:no-uploads-found]]</div>
|
|
20
16
|
<!-- ENDIF !uploads.length -->
|
|
21
17
|
|
|
22
|
-
<table class="table table-striped">
|
|
18
|
+
<table class="table table-striped table-responsive">
|
|
23
19
|
<thead>
|
|
24
20
|
<tr>
|
|
25
21
|
<th></th>
|
|
@@ -30,7 +26,7 @@
|
|
|
30
26
|
{{{each uploads}}}
|
|
31
27
|
<tr data-name="{uploads.name}">
|
|
32
28
|
<td>
|
|
33
|
-
<a href="{config.relative_path}{uploads.url}">{uploads.url}</a>
|
|
29
|
+
<a class="text-break" href="{config.relative_path}{uploads.url}">{uploads.url}</a>
|
|
34
30
|
</td>
|
|
35
31
|
<td>
|
|
36
32
|
<div class="btn-group ">
|
|
@@ -10,6 +10,10 @@
|
|
|
10
10
|
<input type="checkbox" class="form-check-input" id="centerHeaderElements" name="centerHeaderElements" />
|
|
11
11
|
<label for="centerHeaderElements" class="form-check-label">Center header elements</label>
|
|
12
12
|
</div>
|
|
13
|
+
<div class="form-check form-switch">
|
|
14
|
+
<input type="checkbox" class="form-check-input" id="stickyToolbar" name="stickyToolbar" />
|
|
15
|
+
<label for="stickyToolbar" class="form-check-label">Sticky toolbar on topic and category pages</label>
|
|
16
|
+
</div>
|
|
13
17
|
</form>
|
|
14
18
|
</div>
|
|
15
19
|
</div>
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
</div>
|
|
15
15
|
|
|
16
16
|
<div class="d-flex flex-column pb-4 mb-4 mt-2 border-bottom">
|
|
17
|
-
<div class="d-flex justify-content-between align-items-center">
|
|
17
|
+
<div class="d-flex justify-content-between mt-1 align-items-center">
|
|
18
18
|
<div class="d-flex align-items-center gap-2">
|
|
19
19
|
<h2 class="mb-0">{group.displayName}</h2>
|
|
20
20
|
{{{ if group.private }}}<span class="badge text-bg-light border border-1">[[groups:details.private]]</span>{{{ end }}}
|
|
@@ -33,11 +33,10 @@
|
|
|
33
33
|
{group.descriptionParsed}
|
|
34
34
|
</div>
|
|
35
35
|
|
|
36
|
-
<div class="row">
|
|
36
|
+
<div class="d-flex flex-column flex-md-row">
|
|
37
37
|
<!-- IMPORT partials/groups/sidebar-left.tpl -->
|
|
38
38
|
|
|
39
|
-
<div class="
|
|
40
|
-
|
|
39
|
+
<div class="flex-1 ps-md-2 ps-lg-5" style="min-width:0;">
|
|
41
40
|
<div class="tab-content">
|
|
42
41
|
<div class="tab-pane fade show active" id="groups-posts" role="tabpanel">
|
|
43
42
|
<h3 class="fw-semibold fs-5 mb-0">[[global:posts]]</h3>
|
|
@@ -68,22 +67,6 @@
|
|
|
68
67
|
</div>
|
|
69
68
|
{{{ end }}}
|
|
70
69
|
</div>
|
|
71
|
-
|
|
72
|
-
<div data-widget-area="left">
|
|
73
|
-
{{{each widgets.left}}}
|
|
74
|
-
{{widgets.left.html}}
|
|
75
|
-
{{{end}}}
|
|
76
|
-
</div>
|
|
77
|
-
</div>
|
|
78
|
-
<div class="col-lg-8 col-12">
|
|
79
|
-
<div class="col-lg-11">
|
|
80
|
-
|
|
81
|
-
</div>
|
|
82
|
-
<div data-widget-area="right">
|
|
83
|
-
{{{each widgets.right}}}
|
|
84
|
-
{{widgets.right.html}}
|
|
85
|
-
{{{end}}}
|
|
86
|
-
</div>
|
|
87
70
|
</div>
|
|
88
71
|
</div>
|
|
89
72
|
</div>
|