You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ui.go 4.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. // Copyright 2023 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package setting
  4. import (
  5. "time"
  6. "code.gitea.io/gitea/modules/container"
  7. )
  8. // UI settings
  9. var UI = struct {
  10. ExplorePagingNum int
  11. SitemapPagingNum int
  12. IssuePagingNum int
  13. RepoSearchPagingNum int
  14. MembersPagingNum int
  15. FeedMaxCommitNum int
  16. FeedPagingNum int
  17. PackagesPagingNum int
  18. GraphMaxCommitNum int
  19. CodeCommentLines int
  20. ReactionMaxUserNum int
  21. MaxDisplayFileSize int64
  22. ShowUserEmail bool
  23. DefaultShowFullName bool
  24. DefaultTheme string
  25. Themes []string
  26. Reactions []string
  27. ReactionsLookup container.Set[string] `ini:"-"`
  28. CustomEmojis []string
  29. CustomEmojisMap map[string]string `ini:"-"`
  30. SearchRepoDescription bool
  31. OnlyShowRelevantRepos bool
  32. AmbiguousUnicodeDetection bool
  33. Notification struct {
  34. MinTimeout time.Duration
  35. TimeoutStep time.Duration
  36. MaxTimeout time.Duration
  37. EventSourceUpdateTime time.Duration
  38. } `ini:"ui.notification"`
  39. SVG struct {
  40. Enabled bool `ini:"ENABLE_RENDER"`
  41. } `ini:"ui.svg"`
  42. CSV struct {
  43. MaxFileSize int64
  44. } `ini:"ui.csv"`
  45. Admin struct {
  46. UserPagingNum int
  47. RepoPagingNum int
  48. NoticePagingNum int
  49. OrgPagingNum int
  50. } `ini:"ui.admin"`
  51. User struct {
  52. RepoPagingNum int
  53. } `ini:"ui.user"`
  54. Meta struct {
  55. Author string
  56. Description string
  57. Keywords string
  58. } `ini:"ui.meta"`
  59. }{
  60. ExplorePagingNum: 20,
  61. SitemapPagingNum: 20,
  62. IssuePagingNum: 20,
  63. RepoSearchPagingNum: 20,
  64. MembersPagingNum: 20,
  65. FeedMaxCommitNum: 5,
  66. FeedPagingNum: 20,
  67. PackagesPagingNum: 20,
  68. GraphMaxCommitNum: 100,
  69. CodeCommentLines: 4,
  70. ReactionMaxUserNum: 10,
  71. MaxDisplayFileSize: 8388608,
  72. DefaultTheme: `auto`,
  73. Themes: []string{`auto`, `gitea`, `arc-green`},
  74. Reactions: []string{`+1`, `-1`, `laugh`, `hooray`, `confused`, `heart`, `rocket`, `eyes`},
  75. CustomEmojis: []string{`git`, `gitea`, `codeberg`, `gitlab`, `github`, `gogs`},
  76. CustomEmojisMap: map[string]string{"git": ":git:", "gitea": ":gitea:", "codeberg": ":codeberg:", "gitlab": ":gitlab:", "github": ":github:", "gogs": ":gogs:"},
  77. AmbiguousUnicodeDetection: true,
  78. Notification: struct {
  79. MinTimeout time.Duration
  80. TimeoutStep time.Duration
  81. MaxTimeout time.Duration
  82. EventSourceUpdateTime time.Duration
  83. }{
  84. MinTimeout: 10 * time.Second,
  85. TimeoutStep: 10 * time.Second,
  86. MaxTimeout: 60 * time.Second,
  87. EventSourceUpdateTime: 10 * time.Second,
  88. },
  89. SVG: struct {
  90. Enabled bool `ini:"ENABLE_RENDER"`
  91. }{
  92. Enabled: true,
  93. },
  94. CSV: struct {
  95. MaxFileSize int64
  96. }{
  97. MaxFileSize: 524288,
  98. },
  99. Admin: struct {
  100. UserPagingNum int
  101. RepoPagingNum int
  102. NoticePagingNum int
  103. OrgPagingNum int
  104. }{
  105. UserPagingNum: 50,
  106. RepoPagingNum: 50,
  107. NoticePagingNum: 25,
  108. OrgPagingNum: 50,
  109. },
  110. User: struct {
  111. RepoPagingNum int
  112. }{
  113. RepoPagingNum: 15,
  114. },
  115. Meta: struct {
  116. Author string
  117. Description string
  118. Keywords string
  119. }{
  120. Author: "Gitea - Git with a cup of tea",
  121. Description: "Gitea (Git with a cup of tea) is a painless self-hosted Git service written in Go",
  122. Keywords: "go,git,self-hosted,gitea",
  123. },
  124. }
  125. func loadUIFrom(rootCfg ConfigProvider) {
  126. mustMapSetting(rootCfg, "ui", &UI)
  127. sec := rootCfg.Section("ui")
  128. UI.ShowUserEmail = sec.Key("SHOW_USER_EMAIL").MustBool(true)
  129. UI.DefaultShowFullName = sec.Key("DEFAULT_SHOW_FULL_NAME").MustBool(false)
  130. UI.SearchRepoDescription = sec.Key("SEARCH_REPO_DESCRIPTION").MustBool(true)
  131. // OnlyShowRelevantRepos=false is important for many private/enterprise instances,
  132. // because many private repositories do not have "description/topic", users just want to search by their names.
  133. UI.OnlyShowRelevantRepos = sec.Key("ONLY_SHOW_RELEVANT_REPOS").MustBool(false)
  134. UI.ReactionsLookup = make(container.Set[string])
  135. for _, reaction := range UI.Reactions {
  136. UI.ReactionsLookup.Add(reaction)
  137. }
  138. UI.CustomEmojisMap = make(map[string]string)
  139. for _, emoji := range UI.CustomEmojis {
  140. UI.CustomEmojisMap[emoji] = ":" + emoji + ":"
  141. }
  142. }