Skip to content

Commit 63d9928

Browse files
committed
fix
1 parent bf6bc0b commit 63d9928

File tree

6 files changed

+77
-35
lines changed

6 files changed

+77
-35
lines changed

modules/setting/config.go

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package setting
55

66
import (
77
"context"
8+
"strings"
89
"sync"
910

1011
"code.gitea.io/gitea/modules/container"
@@ -82,6 +83,19 @@ type UIStruct struct {
8283
}
8384

8485
func (u *UIStruct) ToStruct(ctx context.Context) UIForm {
86+
var themes, reactions, customEmojis string
87+
for _, v := range u.Themes.Value(ctx) {
88+
themes += v + ","
89+
}
90+
themes = strings.TrimSuffix(themes, ",")
91+
for _, v := range u.Reactions.Value(ctx) {
92+
reactions += v + ","
93+
}
94+
reactions = strings.TrimSuffix(reactions, ",")
95+
for _, v := range u.CustomEmojis.Value(ctx) {
96+
customEmojis += v + ","
97+
}
98+
customEmojis = strings.TrimSuffix(customEmojis, ",")
8599
return UIForm{
86100
ExplorePagingNum: u.ExplorePagingNum.Value(ctx),
87101
SitemapPagingNum: u.SitemapPagingNum.Value(ctx),
@@ -98,12 +112,12 @@ func (u *UIStruct) ToStruct(ctx context.Context) UIForm {
98112
ShowUserEmail: u.ShowUserEmail.Value(ctx),
99113
DefaultShowFullName: u.DefaultShowFullName.Value(ctx),
100114
DefaultTheme: u.DefaultTheme.Value(ctx),
101-
Themes: u.Themes.Value(ctx),
102-
Reactions: u.Reactions.Value(ctx),
103-
CustomEmojis: u.CustomEmojis.Value(ctx),
115+
Themes: themes,
116+
Reactions: reactions,
117+
CustomEmojis: customEmojis,
104118
SearchRepoDescription: u.SearchRepoDescription.Value(ctx),
105119
OnlyShowRelevantRepos: u.OnlyShowRelevantRepos.Value(ctx),
106-
ExploreDefaultSort: u.ExploreDefaultSort.Value(ctx),
120+
ExplorePagingDefaultSort: u.ExploreDefaultSort.Value(ctx),
107121
PreferredTimestampTense: u.PreferredTimestampTense.Value(ctx),
108122
AmbiguousUnicodeDetection: u.AmbiguousUnicodeDetection.Value(ctx),
109123
}
@@ -125,12 +139,12 @@ type UIForm struct {
125139
ShowUserEmail bool
126140
DefaultShowFullName bool
127141
DefaultTheme string
128-
Themes []string
129-
Reactions []string
130-
CustomEmojis []string
142+
Themes string
143+
Reactions string
144+
CustomEmojis string
131145
SearchRepoDescription bool
132146
OnlyShowRelevantRepos bool
133-
ExploreDefaultSort string
147+
ExplorePagingDefaultSort string
134148
PreferredTimestampTense string
135149
AmbiguousUnicodeDetection bool
136150
}
@@ -177,7 +191,7 @@ func initDefaultConfig() {
177191
CustomEmojis: config.ValueJSON[[]string]("ui.custom_emojis").WithFileConfig(config.CfgSecKey{Sec: "ui", Key: "CUSTOM_EMOJIS"}),
178192
SearchRepoDescription: config.ValueJSON[bool]("ui.search_repo_description").WithFileConfig(config.CfgSecKey{Sec: "ui", Key: "SEARCH_REPO_DESCRIPTION"}),
179193
OnlyShowRelevantRepos: config.ValueJSON[bool]("ui.only_show_relevant_repos").WithFileConfig(config.CfgSecKey{Sec: "ui", Key: "ONLY_SHOW_RELEVANT_REPOS"}),
180-
ExploreDefaultSort: config.ValueJSON[string]("ui.explore_default_sort").WithFileConfig(config.CfgSecKey{Sec: "ui", Key: "EXPLORE_PAGING_DEFAULT_SORT"}),
194+
ExploreDefaultSort: config.ValueJSON[string]("ui.explore_paging_default_sort").WithFileConfig(config.CfgSecKey{Sec: "ui", Key: "EXPLORE_PAGING_DEFAULT_SORT"}),
181195
PreferredTimestampTense: config.ValueJSON[string]("ui.preferred_timestamp_tense").WithFileConfig(config.CfgSecKey{Sec: "ui", Key: "PREFERRED_TIMESTAMP_TENSE"}),
182196
AmbiguousUnicodeDetection: config.ValueJSON[bool]("ui.ambiguous_unicode_detection").WithFileConfig(config.CfgSecKey{Sec: "ui", Key: "AMBIGUOUS_UNICODE"}),
183197
},

modules/util/util.go

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"strconv"
1313
"strings"
1414

15+
"code.gitea.io/gitea/modules/json"
1516
"code.gitea.io/gitea/modules/optional"
1617

1718
"golang.org/x/text/cases"
@@ -276,16 +277,32 @@ func ConfigSectionToMap(in any, keyPrefix string) (map[string]string, error) {
276277
t := v.Type()
277278
for i := 0; i < v.NumField(); i++ {
278279
fi := t.Field(i)
280+
fieldName := fi.Name
279281
if tagValue := fi.Tag.Get("ini"); tagValue == "-" {
280282
continue
283+
} else if tagValue != "" {
284+
fieldName = tagValue
281285
}
282286
switch v.FieldByName(fi.Name).Kind() {
283287
case reflect.Bool,
284-
reflect.String,
285-
reflect.Slice, reflect.Array,
286288
reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64,
287289
reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
288-
out[fmt.Sprintf("%s.%s", keyPrefix, ToSnakeCase(fi.Name))] = fmt.Sprintf("%v", v.FieldByName(fi.Name).Interface())
290+
out[fmt.Sprintf("%s.%s", keyPrefix, ToSnakeCase(fieldName))] = fmt.Sprintf("%v", v.FieldByName(fi.Name).Interface())
291+
case reflect.String:
292+
marshal, err := json.Marshal(v.FieldByName(fi.Name).Interface())
293+
if err != nil {
294+
return nil, err
295+
}
296+
out[fmt.Sprintf("%s.%s", keyPrefix, ToSnakeCase(fieldName))] = fmt.Sprintf("%v", string(marshal))
297+
case reflect.Slice, reflect.Array:
298+
if v.FieldByName(fi.Name).Len() == 0 {
299+
continue
300+
}
301+
marshal, err := json.Marshal(v.FieldByName(fi.Name).Interface())
302+
if err != nil {
303+
return nil, err
304+
}
305+
out[fmt.Sprintf("%s.%s", keyPrefix, ToSnakeCase(fieldName))] = fmt.Sprintf("%v", string(marshal))
289306
}
290307
}
291308

options/locale/locale_en-US.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3007,6 +3007,7 @@ dashboard.sync_branch.started = Branches Sync started
30073007
dashboard.sync_tag.started = Tags Sync started
30083008
dashboard.rebuild_issue_indexer = Rebuild issue indexer
30093009
dashboard.sync_repo_licenses = Sync repo licenses
3010+
dashboard.update_settings_success = Update settings success
30103011
30113012
users.user_manage_panel = User Account Management
30123013
users.new_account = Create User Account
@@ -3364,6 +3365,7 @@ config.ui.explore_paging_num = Explore Paging Number
33643365
config.ui.issue_paging_num = Issue Paging Number
33653366
config.ui.feed_max_commit_numb = Feed Max Commit Number
33663367
config.ui.feed_paging_num = Feed Paging Number
3368+
config.ui.members_paging_num = Member Paging Number
33673369
config.ui.sitemap_paging_num = Sitemap Paging Number
33683370
config.ui.graph_max_commit_num = Graph Max Commit Number
33693371
config.ui.code_comment_lines = Code Comment Lines

routers/web/admin/config.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,7 @@ func ChangeConfig(ctx *context.Context) {
259259

260260
func ChangeUIConfig(ctx *context.Context) {
261261
form := web.GetForm(ctx).(*forms.UIForm)
262+
log.Debug("ChangeUIConfig form: %+v", form)
262263
formMap, err := util.ConfigSectionToMap(form, "ui")
263264
if err != nil {
264265
ctx.ServerError("unable convert struct to map[string]string", err)
@@ -274,5 +275,7 @@ func ChangeUIConfig(ctx *context.Context) {
274275
}
275276

276277
config.GetDynGetter().InvalidateCache()
278+
279+
ctx.Flash.Success(ctx.Tr("admin.dashboard.update_settings_success"))
277280
ctx.Redirect(setting.AppSubURL + "/-/admin/config/settings")
278281
}

services/forms/admin_config_form.go

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,28 +13,28 @@ import (
1313
)
1414

1515
type UIForm struct {
16-
ExplorePagingNum int
17-
SitemapPagingNum int
18-
IssuePagingNum int
19-
RepoSearchPagingNum int
20-
MembersPagingNum int
21-
FeedMaxCommitNum int
22-
FeedPagingNum int
23-
PackagesPagingNum int
24-
GraphMaxCommitNum int
25-
CodeCommentLines int
26-
ReactionMaxUserNum int
27-
MaxDisplayFileSize int64
28-
ShowUserEmail bool
29-
DefaultShowFullName bool
30-
DefaultTheme string
31-
Themes []string
32-
Reactions []string
33-
CustomEmojis []string
34-
SearchRepoDescription bool
35-
OnlyShowRelevantRepos bool
36-
ExploreDefaultSort string `binding:"In(recentupdate,alphabetically,reverselastlogin,newest,oldest)"`
37-
PreferredTimestampTense string `binding:"In(mixed,absolute)"`
16+
ExplorePagingNum int
17+
SitemapPagingNum int
18+
IssuePagingNum int
19+
RepoSearchPagingNum int
20+
MembersPagingNum int
21+
FeedMaxCommitNum int
22+
FeedPagingNum int
23+
PackagesPagingNum int
24+
GraphMaxCommitNum int
25+
CodeCommentLines int
26+
ReactionMaxUserNum int
27+
MaxDisplayFileSize int64
28+
ShowUserEmail bool
29+
DefaultShowFullName bool
30+
DefaultTheme string
31+
Themes []string
32+
Reactions []string
33+
CustomEmojis []string
34+
SearchRepoDescription bool
35+
OnlyShowRelevantRepos bool
36+
ExplorePagingDefaultSort string `binding:"In(recentupdate,alphabetically,reverselastlogin,newest,oldest)"`
37+
PreferredTimestampTense string `binding:"In(mixed,absolute)"`
3838

3939
AmbiguousUnicodeDetection bool
4040
}

templates/admin/config_settings.tmpl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@
3030
<input id="feed_paging_num" name="feed_paging_num" type="number" min="0" value="{{.UI.FeedPagingNum}}">
3131
</div>
3232
</dd>
33+
<dt>{{ctx.Locale.Tr "admin.config.ui.members_paging_num"}}</dt>
34+
<dd>
35+
<div class="inline field" data-tooltip-content="{{ctx.Locale.Tr "admin.config.disable_gravatar"}}">
36+
<input id="members_paging_num" name="members_paging_num" type="number" min="0" value="{{.UI.MembersPagingNum}}">
37+
</div>
38+
</dd>
3339
<dt>{{ctx.Locale.Tr "admin.config.ui.sitemap_paging_num"}}</dt>
3440
<dd>
3541
<div class="inline field" data-tooltip-content="{{ctx.Locale.Tr "admin.config.disable_gravatar"}}">
@@ -87,7 +93,7 @@
8793
<dt>{{ctx.Locale.Tr "admin.config.ui.explore_paging_default_sort"}}</dt>
8894
<dd>
8995
<div class="inline field" data-tooltip-content="{{ctx.Locale.Tr "admin.config.disable_gravatar"}}">
90-
<input id="explore_paging_default_sort" name="explore_paging_default_sort" value="{{.UI.ExploreDefaultSort}}">
96+
<input id="explore_paging_default_sort" name="explore_paging_default_sort" value="{{.UI.ExplorePagingDefaultSort}}">
9197
</div>
9298
</dd>
9399
<dt>{{ctx.Locale.Tr "admin.config.ui.preferred_timestamp_tense"}}</dt>

0 commit comments

Comments
 (0)