summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorLanre Adelowo <adelowomailbox@gmail.com>2019-01-09 18:22:57 +0100
committertechknowlogick <hello@techknowlogick.com>2019-01-09 12:22:57 -0500
commit8d2c24f7f9b9bce3a806e4748623bd3b2742025b (patch)
tree2010e6ffaf542d0828c496c31afa56f816c069d5 /modules
parentea518681d95c9ef8ae5ed71d6d8cd7cfb6994a50 (diff)
downloadgitea-8d2c24f7f9b9bce3a806e4748623bd3b2742025b.tar.gz
gitea-8d2c24f7f9b9bce3a806e4748623bd3b2742025b.zip
Allow for user specific themes (#5668)
* add migration and basic UI for changing a user's theme * update user themem * use right text on button * load theme based on users' selection * load theme based on users' selection in pwa too * update sample config * delete older theme loading * implement AfterLoad to set users' theme properly * set up default theme when creating a user. This uses the installation wide theme * use flash messages for error * set default theme when creating a user from the cli * fix @lunny review
Diffstat (limited to 'modules')
-rw-r--r--modules/auth/user_form.go26
-rw-r--r--modules/setting/defaults.go1
-rw-r--r--modules/setting/setting.go8
3 files changed, 31 insertions, 4 deletions
diff --git a/modules/auth/user_form.go b/modules/auth/user_form.go
index c281672fe1..f59b795b4e 100644
--- a/modules/auth/user_form.go
+++ b/modules/auth/user_form.go
@@ -12,7 +12,7 @@ import (
"code.gitea.io/gitea/modules/setting"
"github.com/go-macaron/binding"
- "gopkg.in/macaron.v1"
+ macaron "gopkg.in/macaron.v1"
)
// InstallForm form for installation page
@@ -189,6 +189,30 @@ func (f *AddEmailForm) Validate(ctx *macaron.Context, errs binding.Errors) bindi
return validate(errs, ctx.Data, f, ctx.Locale)
}
+// UpdateThemeForm form for updating a users' theme
+type UpdateThemeForm struct {
+ Theme string `binding:"Required;MaxSize(30)"`
+}
+
+// Validate validates the field
+func (f *UpdateThemeForm) Validate(ctx *macaron.Context, errs binding.Errors) binding.Errors {
+ return validate(errs, ctx.Data, f, ctx.Locale)
+}
+
+// IsThemeExists checks if the theme is a theme available in the config.
+func (f UpdateThemeForm) IsThemeExists() bool {
+ var exists bool
+
+ for _, v := range setting.UI.Themes {
+ if strings.ToLower(v) == strings.ToLower(f.Theme) {
+ exists = true
+ break
+ }
+ }
+
+ return exists
+}
+
// ChangePasswordForm form for changing password
type ChangePasswordForm struct {
OldPassword string `form:"old_password" binding:"MaxSize(255)"`
diff --git a/modules/setting/defaults.go b/modules/setting/defaults.go
index 7630d10090..48257284c7 100644
--- a/modules/setting/defaults.go
+++ b/modules/setting/defaults.go
@@ -8,4 +8,5 @@ var (
defaultLangs = strings.Split("en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,uk-UA,ja-JP,es-ES,pt-BR,pl-PL,bg-BG,it-IT,fi-FI,tr-TR,cs-CZ,sr-SP,sv-SE,ko-KR", ",")
defaultLangNames = strings.Split("English,简体中文,繁體中文(香港),繁體中文(台灣),Deutsch,français,Nederlands,latviešu,русский,Українська,日本語,español,português do Brasil,polski,български,italiano,suomi,Türkçe,čeština,српски,svenska,한국어", ",")
defaultPullRequestWorkInProgressPrefixes = strings.Split("WIP:,[WIP]", ",")
+ defaultThemes = strings.Split("gitea", "arc-green")
)
diff --git a/modules/setting/setting.go b/modules/setting/setting.go
index 23304453d2..88101937e9 100644
--- a/modules/setting/setting.go
+++ b/modules/setting/setting.go
@@ -33,9 +33,9 @@ import (
"github.com/go-macaron/session"
_ "github.com/go-macaron/session/redis" // redis plugin for store session
"github.com/go-xorm/core"
- "github.com/kballard/go-shellquote"
- "github.com/mcuadros/go-version"
- "gopkg.in/ini.v1"
+ shellquote "github.com/kballard/go-shellquote"
+ version "github.com/mcuadros/go-version"
+ ini "gopkg.in/ini.v1"
"strk.kbt.io/projects/go/libravatar"
)
@@ -303,6 +303,7 @@ var (
MaxDisplayFileSize int64
ShowUserEmail bool
DefaultTheme string
+ Themes []string
Admin struct {
UserPagingNum int
@@ -329,6 +330,7 @@ var (
ThemeColorMetaTag: `#6cc644`,
MaxDisplayFileSize: 8388608,
DefaultTheme: `gitea`,
+ Themes: []string{`gitea`, `arc-green`},
Admin: struct {
UserPagingNum int
RepoPagingNum int