From 8d2c24f7f9b9bce3a806e4748623bd3b2742025b Mon Sep 17 00:00:00 2001 From: Lanre Adelowo Date: Wed, 9 Jan 2019 18:22:57 +0100 Subject: 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 --- modules/auth/user_form.go | 26 +++++++++++++++++++++++++- modules/setting/defaults.go | 1 + modules/setting/setting.go | 8 +++++--- 3 files changed, 31 insertions(+), 4 deletions(-) (limited to 'modules') 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 -- cgit v1.2.3