123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- // Copyright 2023 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package setting
-
- import (
- "time"
-
- "code.gitea.io/gitea/modules/container"
- "code.gitea.io/gitea/modules/log"
- )
-
- // UI settings
- var UI = struct {
- ExplorePagingNum int
- SitemapPagingNum int
- IssuePagingNum int
- RepoSearchPagingNum int
- MembersPagingNum int
- FeedMaxCommitNum int
- FeedPagingNum int
- PackagesPagingNum int
- GraphMaxCommitNum int
- CodeCommentLines int
- ReactionMaxUserNum int
- MaxDisplayFileSize int64
- ShowUserEmail bool
- DefaultShowFullName bool
- DefaultTheme string
- Themes []string
- Reactions []string
- ReactionsLookup container.Set[string] `ini:"-"`
- CustomEmojis []string
- CustomEmojisMap map[string]string `ini:"-"`
- SearchRepoDescription bool
- OnlyShowRelevantRepos bool
- ExploreDefaultSort string `ini:"EXPLORE_PAGING_DEFAULT_SORT"`
- PreferredTimestampTense string
-
- AmbiguousUnicodeDetection bool
-
- Notification struct {
- MinTimeout time.Duration
- TimeoutStep time.Duration
- MaxTimeout time.Duration
- EventSourceUpdateTime time.Duration
- } `ini:"ui.notification"`
-
- SVG struct {
- Enabled bool `ini:"ENABLE_RENDER"`
- } `ini:"ui.svg"`
-
- CSV struct {
- MaxFileSize int64
- } `ini:"ui.csv"`
-
- Admin struct {
- UserPagingNum int
- RepoPagingNum int
- NoticePagingNum int
- OrgPagingNum int
- } `ini:"ui.admin"`
- User struct {
- RepoPagingNum int
- } `ini:"ui.user"`
- Meta struct {
- Author string
- Description string
- Keywords string
- } `ini:"ui.meta"`
- }{
- ExplorePagingNum: 20,
- SitemapPagingNum: 20,
- IssuePagingNum: 20,
- RepoSearchPagingNum: 20,
- MembersPagingNum: 20,
- FeedMaxCommitNum: 5,
- FeedPagingNum: 20,
- PackagesPagingNum: 20,
- GraphMaxCommitNum: 100,
- CodeCommentLines: 4,
- ReactionMaxUserNum: 10,
- MaxDisplayFileSize: 8388608,
- DefaultTheme: `gitea-auto`,
- Reactions: []string{`+1`, `-1`, `laugh`, `hooray`, `confused`, `heart`, `rocket`, `eyes`},
- CustomEmojis: []string{`git`, `gitea`, `codeberg`, `gitlab`, `github`, `gogs`},
- CustomEmojisMap: map[string]string{"git": ":git:", "gitea": ":gitea:", "codeberg": ":codeberg:", "gitlab": ":gitlab:", "github": ":github:", "gogs": ":gogs:"},
- PreferredTimestampTense: "mixed",
-
- AmbiguousUnicodeDetection: true,
-
- Notification: struct {
- MinTimeout time.Duration
- TimeoutStep time.Duration
- MaxTimeout time.Duration
- EventSourceUpdateTime time.Duration
- }{
- MinTimeout: 10 * time.Second,
- TimeoutStep: 10 * time.Second,
- MaxTimeout: 60 * time.Second,
- EventSourceUpdateTime: 10 * time.Second,
- },
- SVG: struct {
- Enabled bool `ini:"ENABLE_RENDER"`
- }{
- Enabled: true,
- },
- CSV: struct {
- MaxFileSize int64
- }{
- MaxFileSize: 524288,
- },
- Admin: struct {
- UserPagingNum int
- RepoPagingNum int
- NoticePagingNum int
- OrgPagingNum int
- }{
- UserPagingNum: 50,
- RepoPagingNum: 50,
- NoticePagingNum: 25,
- OrgPagingNum: 50,
- },
- User: struct {
- RepoPagingNum int
- }{
- RepoPagingNum: 15,
- },
- Meta: struct {
- Author string
- Description string
- Keywords string
- }{
- Author: "Gitea - Git with a cup of tea",
- Description: "Gitea (Git with a cup of tea) is a painless self-hosted Git service written in Go",
- Keywords: "go,git,self-hosted,gitea",
- },
- }
-
- func loadUIFrom(rootCfg ConfigProvider) {
- mustMapSetting(rootCfg, "ui", &UI)
- sec := rootCfg.Section("ui")
- UI.ShowUserEmail = sec.Key("SHOW_USER_EMAIL").MustBool(true)
- UI.DefaultShowFullName = sec.Key("DEFAULT_SHOW_FULL_NAME").MustBool(false)
- UI.SearchRepoDescription = sec.Key("SEARCH_REPO_DESCRIPTION").MustBool(true)
-
- if UI.PreferredTimestampTense != "mixed" && UI.PreferredTimestampTense != "absolute" {
- log.Fatal("ui.PREFERRED_TIMESTAMP_TENSE must be either 'mixed' or 'absolute'")
- }
-
- // OnlyShowRelevantRepos=false is important for many private/enterprise instances,
- // because many private repositories do not have "description/topic", users just want to search by their names.
- UI.OnlyShowRelevantRepos = sec.Key("ONLY_SHOW_RELEVANT_REPOS").MustBool(false)
-
- UI.ReactionsLookup = make(container.Set[string])
- for _, reaction := range UI.Reactions {
- UI.ReactionsLookup.Add(reaction)
- }
- UI.CustomEmojisMap = make(map[string]string)
- for _, emoji := range UI.CustomEmojis {
- UI.CustomEmojisMap[emoji] = ":" + emoji + ":"
- }
- }
|