ticket naming scheme
This commit is contained in:
parent
6fe3867434
commit
323a378315
@ -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")
|
||||
|
@ -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")
|
||||
|
37
database/table/namingscheme.go
Normal file
37
database/table/namingscheme.go
Normal file
@ -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{})
|
||||
}
|
@ -78,31 +78,18 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<h4>Default Panel Settings</h4>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-3 pr-1">
|
||||
<label>Panel Title</label>
|
||||
<input name="paneltitle" type="text" class="form-control" placeholder="Open A Ticket" value="{{.paneltitle}}">
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 pr-1">
|
||||
<label>Panel Content</label>
|
||||
<input name="panelcontent" type="text" class="form-control" placeholder="React with :envelope_with_arrow: to open a ticket" value="{{.panelcontent}}">
|
||||
</div>
|
||||
|
||||
<div class="col-md-3 pr-1">
|
||||
<label>Panel Colour (Hex)</label>
|
||||
<div class="input-group mb-3">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text">#</div>
|
||||
</div>
|
||||
<input name="panelcolour" type="text" class="form-control" placeholder="23A31A" value="{{.panelcolour}}">
|
||||
</div>
|
||||
<label>Ticket Naming Scheme</label>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="namingscheme" id="naming-by-id" value="id" {{if eq .namingScheme "id"}}checked{{end}}>
|
||||
<label class="form-check-label" for="naming-by-id">
|
||||
Ticket ID
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="namingscheme" id="naming-by-username" value="username" {{if eq .namingScheme "username"}}checked{{end}}>
|
||||
<label class="form-check-label" for="naming-by-username">
|
||||
Username
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<input name="csrf" type="hidden" value="{{.csrf}}">
|
||||
@ -157,7 +144,7 @@
|
||||
</button>
|
||||
</div>
|
||||
<div class="toast-body">
|
||||
The ticketLimit you specified was invalid
|
||||
The ticket limit you specified was invalid
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user