nodebb-theme-harmony 0.0.8 → 0.0.10
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/templates/account/edit.tpl +121 -116
- package/templates/account/info.tpl +206 -203
- package/templates/account/sessions.tpl +4 -6
- package/templates/account/settings.tpl +212 -208
- package/templates/account/theme.tpl +22 -21
- package/templates/admin/plugins/harmony.tpl +4 -0
- package/templates/categories.tpl +0 -1
- package/templates/notifications.tpl +1 -2
- package/templates/partials/account/sidebar-left.tpl +16 -9
- package/templates/partials/chats/message-window.tpl +2 -2
- package/templates/partials/groups/admin.tpl +3 -5
- package/templates/partials/post_bar.tpl +1 -1
- package/templates/partials/topic-list-bar.tpl +1 -1
- package/templates/partials/users/item.tpl +31 -1
- package/templates/popular.tpl +0 -1
- package/templates/recent.tpl +0 -2
- package/templates/search.tpl +0 -2
- package/templates/tag.tpl +0 -2
- package/templates/tags.tpl +0 -1
- package/templates/top.tpl +0 -1
- package/templates/unread.tpl +0 -1
|
@@ -1,231 +1,235 @@
|
|
|
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
|
-
<!-- IF !disableCustomUserSkins -->
|
|
9
|
-
<h4>[[user:select-skin]]</h4>
|
|
10
|
-
<div class="card card-body mb-3">
|
|
11
|
-
<select class="form-select" id="bootswatchSkin" data-property="bootswatchSkin">
|
|
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 -->
|
|
67
|
-
</div>
|
|
68
|
-
|
|
69
|
-
<h4>[[user:browsing]]</h4>
|
|
70
|
-
<div class="card card-body mb-3">
|
|
71
|
-
<div class="form-check">
|
|
72
|
-
<input class="form-check-input" type="checkbox" data-property="openOutgoingLinksInNewTab" <!-- IF settings.openOutgoingLinksInNewTab -->checked<!-- ENDIF settings.openOutgoingLinksInNewTab -->/>
|
|
73
|
-
<strong>
|
|
74
|
-
<label class="form-check-label">[[user:open_links_in_new_tab]]</label>
|
|
75
|
-
</strong>
|
|
76
|
-
</div>
|
|
77
|
-
<!-- IF inTopicSearchAvailable -->
|
|
78
|
-
<div class="form-check">
|
|
79
|
-
<input class="form-check-input" type="checkbox" data-property="topicSearchEnabled" <!-- IF settings.topicSearchEnabled -->checked<!-- ENDIF settings.topicSearchEnabled -->/>
|
|
80
|
-
<strong>
|
|
81
|
-
<label class="form-check-label">[[user:enable_topic_searching]]</label>
|
|
82
|
-
</strong>
|
|
83
|
-
</div>
|
|
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>
|
|
99
|
-
|
|
100
|
-
<h4>[[global:pagination]]</h4>
|
|
101
|
-
<div class="card card-body mb-3">
|
|
102
|
-
<div class="mb-2 form-check">
|
|
103
|
-
<input type="checkbox" class="form-check-input" data-property="usePagination" <!-- IF settings.usePagination -->checked<!-- ENDIF settings.usePagination -->> <strong><label class="form-check-label">[[user:paginate_description]]</label></strong>
|
|
104
|
-
</div>
|
|
105
|
-
<div class="mb-3">
|
|
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>
|
|
114
|
-
|
|
115
|
-
<!-- IF !disableEmailSubscriptions -->
|
|
116
|
-
<h4>[[global:email]]</h4>
|
|
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>
|
|
126
|
-
</div>
|
|
127
|
-
</div>
|
|
128
|
-
<!-- ENDIF !disableEmailSubscriptions -->
|
|
4
|
+
<div class="row gx-5">
|
|
5
|
+
<!-- IMPORT partials/account/sidebar-left.tpl -->
|
|
129
6
|
|
|
130
|
-
|
|
131
|
-
<
|
|
132
|
-
|
|
133
|
-
{customSettings.content}
|
|
7
|
+
<div class="col-12 col-md-9 col-lg-10 ps-md-5">
|
|
8
|
+
<div class="form-actions mb-3 d-flex justify-content-end sticky-lg-top" style="top: 1rem;">
|
|
9
|
+
<button id="submitBtn" class="btn btn-primary">[[global:save_changes]]</button>
|
|
134
10
|
</div>
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
<div class="mb-2 col-lg-12">
|
|
144
|
-
<select data-property="userLang" class="form-select">
|
|
145
|
-
{{{each languages}}}
|
|
146
|
-
<option value="{languages.code}" <!-- IF languages.selected -->selected<!-- ENDIF languages.selected -->>{languages.name} ({languages.code})</option>
|
|
11
|
+
<div class="row">
|
|
12
|
+
<div class="col-12 col-md-6">
|
|
13
|
+
<!-- IF !disableCustomUserSkins -->
|
|
14
|
+
<h4>[[user:select-skin]]</h4>
|
|
15
|
+
<div class="card card-body mb-3">
|
|
16
|
+
<select class="form-select" id="bootswatchSkin" data-property="bootswatchSkin">
|
|
17
|
+
{{{each bootswatchSkinOptions}}}
|
|
18
|
+
<option value="{bootswatchSkinOptions.value}" <!-- IF bootswatchSkinOptions.selected -->selected<!-- ENDIF bootswatchSkinOptions.selected -->>{bootswatchSkinOptions.name}</option>
|
|
147
19
|
{{{end}}}
|
|
148
20
|
</select>
|
|
149
21
|
</div>
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
22
|
+
<!-- ENDIF !disableCustomUserSkins -->
|
|
23
|
+
|
|
24
|
+
<!-- IF allowUserHomePage -->
|
|
25
|
+
<h4>[[user:select-homepage]]</h4>
|
|
26
|
+
<div class="card card-body mb-3">
|
|
27
|
+
<div class="mb-2">
|
|
28
|
+
<label for="homePageRoute">[[user:homepage]]</label>
|
|
29
|
+
<select class="form-select" 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">[[user:homepage_description]]</p>
|
|
36
|
+
</div>
|
|
37
|
+
<div id="homePageCustom" class="mb-2" style="display: none;">
|
|
38
|
+
<label for="homePageCustom">[[user:custom_route]]</label>
|
|
39
|
+
<input type="text" class="form-control" data-property="homePageCustom" id="homePageCustom" value="{settings.homePageRoute}"/>
|
|
40
|
+
<p class="form-text">[[user:custom_route_help]]</p>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
<!-- ENDIF allowUserHomePage -->
|
|
44
|
+
|
|
45
|
+
<h4>[[global:privacy]]</h4>
|
|
46
|
+
<div class="card card-body mb-3">
|
|
47
|
+
<!-- IF !hideEmail -->
|
|
48
|
+
<div class="form-check">
|
|
49
|
+
<input class="form-check-input" type="checkbox" data-property="showemail" <!-- IF settings.showemail -->checked <!-- ENDIF settings.showemail -->/>
|
|
50
|
+
<strong>
|
|
51
|
+
<label class="form-check-label">[[user:show_email]]</label>
|
|
52
|
+
</strong>
|
|
53
|
+
</div>
|
|
54
|
+
<!-- ENDIF !hideEmail -->
|
|
55
|
+
|
|
56
|
+
<!-- IF !hideFullname -->
|
|
57
|
+
<div class="form-check">
|
|
58
|
+
<input class="form-check-input" type="checkbox" data-property="showfullname" <!-- IF settings.showfullname -->checked<!-- ENDIF settings.showfullname -->/>
|
|
59
|
+
<strong>
|
|
60
|
+
<label class="form-check-label">[[user:show_fullname]]</label>
|
|
61
|
+
</strong>
|
|
62
|
+
</div>
|
|
63
|
+
<!-- ENDIF !hideFullname -->
|
|
64
|
+
<!-- IF !config.disableChat -->
|
|
65
|
+
<div class="form-check">
|
|
66
|
+
<input class="form-check-input" type="checkbox" data-property="restrictChat" <!-- IF settings.restrictChat -->checked<!-- ENDIF settings.restrictChat -->/>
|
|
67
|
+
<strong>
|
|
68
|
+
<label class="form-check-label">[[user:restrict_chats]]</label>
|
|
69
|
+
</strong>
|
|
70
|
+
</div>
|
|
71
|
+
<!-- ENDIF !config.disableChat -->
|
|
161
72
|
</div>
|
|
162
|
-
</div>
|
|
163
|
-
<!-- ENDIF isSelf -->
|
|
164
|
-
<!-- ENDIF isAdmin -->
|
|
165
|
-
</div>
|
|
166
73
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
<
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
74
|
+
<h4>[[user:browsing]]</h4>
|
|
75
|
+
<div class="card card-body mb-3">
|
|
76
|
+
<div class="form-check">
|
|
77
|
+
<input class="form-check-input" type="checkbox" data-property="openOutgoingLinksInNewTab" <!-- IF settings.openOutgoingLinksInNewTab -->checked<!-- ENDIF settings.openOutgoingLinksInNewTab -->/>
|
|
78
|
+
<strong>
|
|
79
|
+
<label class="form-check-label">[[user:open_links_in_new_tab]]</label>
|
|
80
|
+
</strong>
|
|
81
|
+
</div>
|
|
82
|
+
<!-- IF inTopicSearchAvailable -->
|
|
83
|
+
<div class="form-check">
|
|
84
|
+
<input class="form-check-input" type="checkbox" data-property="topicSearchEnabled" <!-- IF settings.topicSearchEnabled -->checked<!-- ENDIF settings.topicSearchEnabled -->/>
|
|
85
|
+
<strong>
|
|
86
|
+
<label class="form-check-label">[[user:enable_topic_searching]]</label>
|
|
87
|
+
</strong>
|
|
88
|
+
</div>
|
|
89
|
+
<p class="form-text">[[user:topic_search_help]]</p>
|
|
90
|
+
<!-- ENDIF inTopicSearchAvailable -->
|
|
91
|
+
<div class="form-check">
|
|
92
|
+
<input class="form-check-input" type="checkbox" data-property="updateUrlWithPostIndex" {{{ if settings.updateUrlWithPostIndex }}}checked{{{ end }}}/>
|
|
93
|
+
<strong>
|
|
94
|
+
<label class="form-check-label">[[user:update_url_with_post_index]]</label>
|
|
95
|
+
</strong>
|
|
96
|
+
</div>
|
|
97
|
+
<div class="form-check">
|
|
98
|
+
<input class="form-check-input" type="checkbox" data-property="scrollToMyPost" <!-- IF settings.scrollToMyPost -->checked<!-- ENDIF settings.scrollToMyPost -->/>
|
|
99
|
+
<strong>
|
|
100
|
+
<label class="form-check-label">[[user:scroll_to_my_post]]</label>
|
|
101
|
+
</strong>
|
|
102
|
+
</div>
|
|
103
|
+
</div>
|
|
190
104
|
|
|
105
|
+
<h4>[[global:pagination]]</h4>
|
|
106
|
+
<div class="card card-body mb-3">
|
|
107
|
+
<div class="mb-2 form-check">
|
|
108
|
+
<input type="checkbox" class="form-check-input" data-property="usePagination" <!-- IF settings.usePagination -->checked<!-- ENDIF settings.usePagination -->> <strong><label class="form-check-label">[[user:paginate_description]]</label></strong>
|
|
109
|
+
</div>
|
|
110
|
+
<div class="mb-3">
|
|
111
|
+
<strong><label class="form-label">[[user:topics_per_page]] ([[user:max_items_per_page, {maxTopicsPerPage}]])</label></strong>
|
|
112
|
+
<input type="text" class="form-control" data-property="topicsPerPage" value="{settings.topicsPerPage}">
|
|
113
|
+
</div>
|
|
114
|
+
<div class="">
|
|
115
|
+
<strong><label class="form-label">[[user:posts_per_page]] ([[user:max_items_per_page, {maxPostsPerPage}]])</label></strong>
|
|
116
|
+
<input type="text" class="form-control" data-property="postsPerPage" value="{settings.postsPerPage}">
|
|
117
|
+
</div>
|
|
118
|
+
</div>
|
|
191
119
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
120
|
+
<!-- IF !disableEmailSubscriptions -->
|
|
121
|
+
<h4>[[global:email]]</h4>
|
|
122
|
+
<div class="card card-body mb-3">
|
|
123
|
+
<div class="mb-2">
|
|
124
|
+
<label for="dailyDigestFreq">[[user:digest_label]]</label>
|
|
125
|
+
<select class="form-select" id="dailyDigestFreq" data-property="dailyDigestFreq" autocomplete="off">
|
|
126
|
+
{{{each dailyDigestFreqOptions}}}
|
|
127
|
+
<option value="{dailyDigestFreqOptions.value}" <!-- IF dailyDigestFreqOptions.selected -->selected="1"<!-- ENDIF dailyDigestFreqOptions.selected -->>{dailyDigestFreqOptions.name}</option>
|
|
128
|
+
{{{end}}}
|
|
129
|
+
</select>
|
|
130
|
+
<p class="form-text">[[user:digest_description]]</p>
|
|
131
|
+
</div>
|
|
198
132
|
</div>
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
</select>
|
|
133
|
+
<!-- ENDIF !disableEmailSubscriptions -->
|
|
134
|
+
|
|
135
|
+
{{{each customSettings}}}
|
|
136
|
+
<h4>{customSettings.title}</h4>
|
|
137
|
+
<div class="card card-body mb-3">
|
|
138
|
+
{customSettings.content}
|
|
206
139
|
</div>
|
|
140
|
+
{{{end}}}
|
|
141
|
+
|
|
207
142
|
</div>
|
|
208
|
-
{{{end}}}
|
|
209
143
|
|
|
210
|
-
<div class="
|
|
211
|
-
<
|
|
212
|
-
|
|
144
|
+
<div class="col-12 col-md-6">
|
|
145
|
+
<h4>[[global:language]]</h4>
|
|
146
|
+
<div class="card card-body mb-3">
|
|
147
|
+
<div class="row">
|
|
148
|
+
<div class="mb-2 col-lg-12">
|
|
149
|
+
<select data-property="userLang" class="form-select">
|
|
150
|
+
{{{each languages}}}
|
|
151
|
+
<option value="{languages.code}" <!-- IF languages.selected -->selected<!-- ENDIF languages.selected -->>{languages.name} ({languages.code})</option>
|
|
152
|
+
{{{end}}}
|
|
153
|
+
</select>
|
|
154
|
+
</div>
|
|
155
|
+
</div>
|
|
156
|
+
<!-- IF isAdmin -->
|
|
157
|
+
<!-- IF isSelf -->
|
|
158
|
+
<label>[[user:acp_language]]</label>
|
|
159
|
+
<div class="row">
|
|
160
|
+
<div class="mb-2 col-lg-12">
|
|
161
|
+
<select data-property="acpLang" class="form-select">
|
|
162
|
+
{{{each acpLanguages}}}
|
|
163
|
+
<option value="{acpLanguages.code}" <!-- IF acpLanguages.selected -->selected<!-- ENDIF acpLanguages.selected -->>{acpLanguages.name} ({acpLanguages.code})</option>
|
|
164
|
+
{{{end}}}
|
|
165
|
+
</select>
|
|
166
|
+
</div>
|
|
167
|
+
</div>
|
|
168
|
+
<!-- ENDIF isSelf -->
|
|
169
|
+
<!-- ENDIF isAdmin -->
|
|
213
170
|
</div>
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
171
|
+
|
|
172
|
+
<h4>[[topic:watch]]</h4>
|
|
173
|
+
<div class="card card-body mb-3">
|
|
174
|
+
<div class="form-check">
|
|
175
|
+
<input class="form-check-input" type="checkbox" data-property="followTopicsOnCreate" <!-- IF settings.followTopicsOnCreate -->checked <!-- ENDIF settings.followTopicsOnCreate -->/>
|
|
176
|
+
<strong>
|
|
177
|
+
<label class="form-check-label">[[user:follow_topics_you_create]]</label>
|
|
178
|
+
</strong>
|
|
179
|
+
</div>
|
|
180
|
+
<div class="form-check">
|
|
181
|
+
<input class="form-check-input" type="checkbox" data-property="followTopicsOnReply" <!-- IF settings.followTopicsOnReply -->checked<!-- ENDIF settings.followTopicsOnReply -->/>
|
|
182
|
+
<strong>
|
|
183
|
+
<label class="form-check-label">[[user:follow_topics_you_reply_to]]</label>
|
|
184
|
+
</strong>
|
|
185
|
+
</div>
|
|
186
|
+
<div class="mb-2">
|
|
187
|
+
<label>[[user:default-category-watch-state]]</label>
|
|
188
|
+
<select class="form-select" data-property="categoryWatchState">
|
|
189
|
+
<option value="watching" <!-- IF categoryWatchState.watching -->selected<!-- ENDIF categoryWatchState.watching -->>[[category:watching]]</option>
|
|
190
|
+
<option value="notwatching" <!-- IF categoryWatchState.notwatching -->selected<!-- ENDIF categoryWatchState.notwatching -->>[[category:not-watching]]</option>
|
|
191
|
+
<option value="ignoring" <!-- IF categoryWatchState.ignoring -->selected<!-- ENDIF categoryWatchState.ignoring -->>[[category:ignoring]]</option>
|
|
192
|
+
</select>
|
|
193
|
+
</div>
|
|
194
|
+
</div>
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
<h4>[[user:notifications]]</h4>
|
|
198
|
+
<div class="card card-body mb-3">
|
|
199
|
+
{{{each notificationSettings}}}
|
|
200
|
+
<div class="row mb-3">
|
|
201
|
+
<div class="col-7">
|
|
202
|
+
<label>{notificationSettings.label}</label>
|
|
203
|
+
</div>
|
|
204
|
+
<div class="mb-2 col-5">
|
|
205
|
+
<select class="form-select" data-property="{notificationSettings.name}">
|
|
206
|
+
<option value="none" <!-- IF notificationSettings.none -->selected<!-- ENDIF notificationSettings.none -->>[[notifications:none]]</option>
|
|
207
|
+
<option value="notification" <!-- IF notificationSettings.notification -->selected<!-- ENDIF notificationSettings.notification -->>[[notifications:notification_only]]</option>
|
|
208
|
+
<option value="email" <!-- IF notificationSettings.email -->selected<!-- ENDIF notificationSettings.email -->>[[notifications:email_only]]</option>
|
|
209
|
+
<option value="notificationemail" <!-- IF notificationSettings.notificationemail -->selected<!-- ENDIF notificationSettings.notificationemail -->>[[notifications:notification_and_email]]</option>
|
|
210
|
+
</select>
|
|
211
|
+
</div>
|
|
212
|
+
</div>
|
|
213
|
+
{{{end}}}
|
|
214
|
+
|
|
215
|
+
<div class="row">
|
|
216
|
+
<div class="col-7">
|
|
217
|
+
<label for="upvote-notif-freq">[[user:upvote-notif-freq]]</label>
|
|
218
|
+
</div>
|
|
219
|
+
<div class="mb-2 col-5">
|
|
220
|
+
<select class="form-select" id="upvote-notif-freq" name="upvote-notif-freq" data-property="upvoteNotifFreq">
|
|
221
|
+
{{{each upvoteNotifFreq}}}
|
|
222
|
+
<option value="{upvoteNotifFreq.name}" <!-- IF upvoteNotifFreq.selected -->selected<!-- ENDIF upvoteNotifFreq.selected -->>
|
|
223
|
+
[[user:upvote-notif-freq.{upvoteNotifFreq.name}]]
|
|
224
|
+
</option>
|
|
225
|
+
{{{end}}}
|
|
226
|
+
</select>
|
|
227
|
+
</div>
|
|
228
|
+
</div>
|
|
222
229
|
</div>
|
|
223
230
|
</div>
|
|
224
231
|
</div>
|
|
232
|
+
|
|
225
233
|
</div>
|
|
226
234
|
</div>
|
|
227
|
-
<div class="form-actions">
|
|
228
|
-
<a id="submitBtn" href="#" class="btn btn-primary">[[global:save_changes]]</a>
|
|
229
|
-
</div>
|
|
230
235
|
</div>
|
|
231
|
-
|
|
@@ -1,29 +1,30 @@
|
|
|
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="row gx-5">
|
|
5
|
+
<!-- IMPORT partials/account/sidebar-left.tpl -->
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
<div class="col-12 col-md-9 col-lg-10 ps-md-5">
|
|
8
|
+
<h3 class="fw-semibold fs-5">[[harmony:settings.title]]</h3>
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
</div><br />
|
|
10
|
+
<form id="theme-settings" role="form">
|
|
11
|
+
<div class="form-check mb-2">
|
|
12
|
+
<input class="form-check-input" type="checkbox" id="enableQuickReply" name="enableQuickReply" {{{ if config.enableQuickReply }}}checked{{{ end }}}>
|
|
13
|
+
<label class="form-check-label">[[harmony:settings.enableQuickReply]]</label>
|
|
14
|
+
</div>
|
|
16
15
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
<option value="sm">[[persona:settings.autoHidingNavbar-sm]]</option>
|
|
22
|
-
<option value="md">[[persona:settings.autoHidingNavbar-md]]</option>
|
|
23
|
-
<option value="lg">[[persona:settings.autoHidingNavbar-lg]]</option>
|
|
24
|
-
</select>
|
|
25
|
-
</div>
|
|
16
|
+
<div class="form-check mb-2">
|
|
17
|
+
<input class="form-check-input" type="checkbox" id="centerHeaderElements" name="centerHeaderElements" {{{ if config.centerHeaderElements }}}checked{{{ end }}}>
|
|
18
|
+
<label class="form-check-label">[[harmony:settings.centerHeaderElements]]</label>
|
|
19
|
+
</div>
|
|
26
20
|
|
|
27
|
-
|
|
28
|
-
|
|
21
|
+
<div class="form-check mb-2">
|
|
22
|
+
<input class="form-check-input" type="checkbox" id="stickyToolbar" name="stickyToolbar" {{{ if config.stickyToolbar }}}checked{{{ end }}}>
|
|
23
|
+
<label class="form-check-label">[[harmony:settings.stickyToolbar]]</label>
|
|
24
|
+
</div>
|
|
25
|
+
|
|
26
|
+
<button id="save" type="button" class="btn btn-primary">[[global:save_changes]]</button>
|
|
27
|
+
</form>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
29
30
|
</div>
|
|
@@ -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>
|
package/templates/categories.tpl
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
<div class="notifications">
|
|
2
|
-
|
|
3
2
|
<div class="btn-toolbar justify-content-end" role="toolbar">
|
|
4
3
|
<button class="btn btn-light" component="notifications/mark_all">[[notifications:mark_all_read]]</button>
|
|
5
4
|
</div>
|
|
6
5
|
|
|
7
|
-
<hr />
|
|
6
|
+
<hr class="text-muted opacity-25"/>
|
|
8
7
|
|
|
9
8
|
<div class="row">
|
|
10
9
|
<div class="col-12 col-md-3 col-lg-2 border-end-md text-sm mb-3">
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<div class="col-12 col-md-3 col-lg-2 border-end-md text-sm mb-3">
|
|
2
|
-
<div class="sticky-top d-flex flex-row flex-md-column flex-wrap gap-1" style="z-index: 1;">
|
|
2
|
+
<div class="sticky-top d-flex flex-row flex-md-column flex-wrap gap-1" style="top: 1rem;z-index: 1;">
|
|
3
3
|
<a href="{config.relative_path}/user/{userslug}" class="btn-ghost fw-semibold {{{ if template.account/profile }}}active{{{ end }}}">
|
|
4
4
|
<div class="flex-1">[[global:about]]</div>
|
|
5
5
|
</a>
|
|
@@ -20,28 +20,33 @@
|
|
|
20
20
|
<div class="flex-1">[[global:topics]]</div>
|
|
21
21
|
<span class="text-xs human-readable-number" title="{counts.topics}">{counts.topics}</span>
|
|
22
22
|
</a>
|
|
23
|
-
<a href="{config.relative_path}/user/{userslug}/groups" class="btn-ghost fw-semibold
|
|
23
|
+
<a href="{config.relative_path}/user/{userslug}/groups" class="btn-ghost fw-semibold
|
|
24
|
+
{{{ if template.account/groups }}}active{{{ end }}}">
|
|
24
25
|
<div class="flex-1">[[global:header.groups]]</div>
|
|
25
26
|
<span class="text-xs human-readable-number" title="{counts.groups}">{counts.groups}</span>
|
|
26
27
|
</a>
|
|
27
28
|
|
|
28
|
-
<a href="{config.relative_path}/user/{userslug}/followers" class="btn-ghost fw-semibold
|
|
29
|
+
<a href="{config.relative_path}/user/{userslug}/followers" class="btn-ghost fw-semibold
|
|
30
|
+
{{{ if template.account/followers }}}active{{{ end }}}">
|
|
29
31
|
<div class="flex-1">[[user:followers]]</div>
|
|
30
32
|
<span class="text-xs human-readable-number" title="{counts.followers}">{counts.followers}</span>
|
|
31
33
|
</a>
|
|
32
34
|
|
|
33
|
-
<a href="{config.relative_path}/user/{userslug}/following" class="btn-ghost fw-semibold
|
|
35
|
+
<a href="{config.relative_path}/user/{userslug}/following" class="btn-ghost fw-semibold
|
|
36
|
+
{{{ if template.account/following }}}active{{{ end }}}">
|
|
34
37
|
<div class="flex-1">[[user:following]]</div>
|
|
35
38
|
<span class="text-xs human-readable-number" title="{counts.following}">{counts.following}</span>
|
|
36
39
|
</a>
|
|
37
40
|
|
|
38
41
|
{{{ if canEdit }}}
|
|
39
|
-
<a href="{config.relative_path}/user/{userslug}/blocks" class="btn-ghost fw-semibold
|
|
42
|
+
<a href="{config.relative_path}/user/{userslug}/blocks" class="btn-ghost fw-semibold
|
|
43
|
+
{{{ if template.account/blocks }}}active{{{ end }}}">
|
|
40
44
|
<div class="flex-1">[[user:blocked-users]]</div>
|
|
41
45
|
<span class="text-xs human-readable-number" title="{counts.blocks}">{counts.blocks}</span>
|
|
42
46
|
</a>
|
|
43
47
|
|
|
44
|
-
<a href="{config.relative_path}/user/{userslug}/uploads" class="btn-ghost fw-semibold
|
|
48
|
+
<a href="{config.relative_path}/user/{userslug}/uploads" class="btn-ghost fw-semibold
|
|
49
|
+
{{{ if template.account/uploads }}}active{{{ end }}}">
|
|
45
50
|
<div class="flex-1">[[global:uploads]]</div>
|
|
46
51
|
<span class="text-xs human-readable-number" title="{counts.uploaded}">{counts.uploaded}</span>
|
|
47
52
|
</a>
|
|
@@ -65,16 +70,18 @@
|
|
|
65
70
|
{{{ end }}}
|
|
66
71
|
|
|
67
72
|
{{{ if canEdit }}}
|
|
68
|
-
<a href="{config.relative_path}/user/{userslug}/edit" class="btn-ghost-sm text-xs
|
|
73
|
+
<a href="{config.relative_path}/user/{userslug}/edit" class="btn-ghost-sm text-xs
|
|
74
|
+
{{{ if template.account/edit }}}active{{{ end }}}">
|
|
69
75
|
<div class="flex-1">[[user:edit-profile]]</div>
|
|
70
76
|
</a>
|
|
71
|
-
<a href="{config.relative_path}/user/{userslug}/settings" class="btn-ghost-sm text-xs
|
|
77
|
+
<a href="{config.relative_path}/user/{userslug}/settings" class="btn-ghost-sm text-xs
|
|
78
|
+
{{{ if template.account/settings }}}active{{{ end }}}">
|
|
72
79
|
<div class="flex-1">[[user:settings]]</div>
|
|
73
80
|
</a>
|
|
74
81
|
{{{ end }}}
|
|
75
82
|
|
|
76
83
|
{{{ each profile_links }}}
|
|
77
|
-
<a href="{config.relative_path}/user/{userslug}/{./route}" class="btn-ghost-sm text-xs plugin-link {{{ if ./public }}}public{{{ else }}}private{{{ end }}}" id="{./id}">
|
|
84
|
+
<a href="{config.relative_path}/user/{userslug}/{./route}" class="btn-ghost-sm text-xs plugin-link {{{ if ./public }}}public{{{ else }}}private{{{ end }}} {url} {{{ if (url == ./url) }}}active{{{ end }}}" id="{./id}">
|
|
78
85
|
<div class="flex-1">{./name}</div>
|
|
79
86
|
</a>
|
|
80
87
|
{{{end}}}
|
|
@@ -80,13 +80,11 @@
|
|
|
80
80
|
|
|
81
81
|
<div class="mb-3">
|
|
82
82
|
<label class="form-label" for="memberPostCids">[[groups:details.member-post-cids]]</label>
|
|
83
|
-
<div class="
|
|
84
|
-
<div class="
|
|
85
|
-
<input id="memberPostCids" type="text" class="form-control" value="{group.memberPostCids}">
|
|
86
|
-
</div>
|
|
87
|
-
<div class="col-md-6 member-post-cids-selector">
|
|
83
|
+
<div class="d-flex gap-1">
|
|
84
|
+
<div class="member-post-cids-selector">
|
|
88
85
|
<!-- IMPORT partials/category-selector.tpl -->
|
|
89
86
|
</div>
|
|
87
|
+
<input id="memberPostCids" type="text" class="form-control" value="{group.memberPostCids}">
|
|
90
88
|
</div>
|
|
91
89
|
</div>
|
|
92
90
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<nav class="sticky-tools navbar navbar-expand mt-4 p-0 border-0 rounded topic-main-buttons">
|
|
1
|
+
<nav class="{{{ if config.stickyToolbar }}}sticky-tools{{{ end }}} navbar navbar-expand mt-4 p-0 border-0 rounded topic-main-buttons">
|
|
2
2
|
<div class="card card-header flex-row p-2 border rounded ff-secondary w-100">
|
|
3
3
|
<ul class="navbar-nav me-auto gap-2 align-items-center">
|
|
4
4
|
{{{ if loggedIn }}}
|