diff --git a/app/http/endpoints/manage/settings.go b/app/http/endpoints/manage/settings.go index f17f6ca..0852d5c 100644 --- a/app/http/endpoints/manage/settings.go +++ b/app/http/endpoints/manage/settings.go @@ -56,6 +56,10 @@ func SettingsHandler(ctx *gin.Context) { archiveChannel := table.GetArchiveChannel(guildId) categoryId := table.GetChannelCategory(guildId) + namingSchemeChan := make(chan table.NamingScheme) + go table.GetTicketNamingScheme(guildId, namingSchemeChan) + namingScheme := <-namingSchemeChan + // /users/@me/guilds doesn't return channels, so we have to get them for the specific guild channelsChan := make(chan []table.Channel) go table.GetCachedChannelsByGuild(guildId, channelsChan) @@ -104,6 +108,7 @@ func SettingsHandler(ctx *gin.Context) { "panelcontent": panelSettings.Content, "panelcolour": strconv.FormatInt(int64(panelSettings.Colour), 16), "usersCanClose": usersCanClose, + "namingScheme": string(namingScheme), }) } else { ctx.Redirect(302, "/login") diff --git a/app/http/endpoints/manage/updatesettings.go b/app/http/endpoints/manage/updatesettings.go index 87d1615..cf11a6e 100644 --- a/app/http/endpoints/manage/updatesettings.go +++ b/app/http/endpoints/manage/updatesettings.go @@ -125,31 +125,24 @@ func UpdateSettingsHandler(ctx *gin.Context) { table.UpdateArchiveChannel(guildId, parsed) } - // Get panel title - panelTitle := ctx.PostForm("paneltitle") - if panelTitle != "" && len(panelTitle) <= 255 { - table.UpdatePanelTitle(guildId, panelTitle) - } - - // Get panel content - panelContent := ctx.PostForm("panelcontent") - if panelContent != "" || len(panelContent) <= 2048 { - table.UpdatePanelContent(guildId, panelContent) - } - - // Get panel colour - panelColourHex := ctx.PostForm("panelcolour") - if panelColourHex != "" { - panelColour, err := strconv.ParseUint(panelColourHex, 16, 32) - if err == nil { - table.UpdatePanelColour(guildId, int(panelColour)) - } - } - // Users can close usersCanClose := ctx.PostForm("userscanclose") == "on" table.SetUserCanClose(guildId, usersCanClose) + // Get naming scheme + namingScheme := table.NamingScheme(ctx.PostForm("namingscheme")) + isValidScheme := false + for _, validNamingScheme := range table.Schemes { + if validNamingScheme == namingScheme { + isValidScheme = true + break + } + } + + if isValidScheme { + go table.SetTicketNamingScheme(guildId, namingScheme) + } + ctx.Redirect(302, fmt.Sprintf("/manage/%d/settings?validPrefix=%t&validWelcomeMessage=%t&validTicketLimit=%t", guildId, prefixValid, welcomeMessageValid, ticketLimitValid)) } else { ctx.Redirect(302, "/login") diff --git a/database/table/namingscheme.go b/database/table/namingscheme.go new file mode 100644 index 0000000..ffe7bb6 --- /dev/null +++ b/database/table/namingscheme.go @@ -0,0 +1,37 @@ +package table + +import "github.com/TicketsBot/GoPanel/database" + +type TicketNamingScheme struct { + Guild int64 `gorm:"column:GUILDID;unique;primary_key"` + NamingScheme string `gorm:"column:NAMINGSCHEME;type:VARCHAR(16)"` +} + +type NamingScheme string + +const ( + Id NamingScheme = "id" + Username NamingScheme = "username" +) + +var Schemes = []NamingScheme{Id, Username} + +func (TicketNamingScheme) TableName() string { + return "TicketNamingScheme" +} + +func GetTicketNamingScheme(guild int64, ch chan NamingScheme) { + var node TicketNamingScheme + database.Database.Where(TicketNamingScheme{Guild: guild}).First(&node) + namingScheme := node.NamingScheme + + if namingScheme == "" { + ch <- Id + } else { + ch <- NamingScheme(namingScheme) + } +} + +func SetTicketNamingScheme(guild int64, scheme NamingScheme) { + database.Database.Where(&TicketNamingScheme{Guild: guild}).Assign(&TicketNamingScheme{NamingScheme: string(scheme)}).FirstOrCreate(&TicketNamingScheme{}) +} diff --git a/public/templates/views/settings.tmpl b/public/templates/views/settings.tmpl index 4f26442..9ec5847 100644 --- a/public/templates/views/settings.tmpl +++ b/public/templates/views/settings.tmpl @@ -78,31 +78,18 @@ -
-

Default Panel Settings

+ +
+ +
- -
- -
- - -
- -
- - -
- -
- -
-
-
#
-
- -
-
+
+ +
@@ -157,7 +144,7 @@
- The ticketLimit you specified was invalid + The ticket limit you specified was invalid
{{end}}