Don't serve null
This commit is contained in:
parent
57df266bc5
commit
d6951e89ad
@ -1,23 +1,18 @@
|
|||||||
package api
|
package api
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
|
||||||
"github.com/TicketsBot/GoPanel/rpc/cache"
|
"github.com/TicketsBot/GoPanel/rpc/cache"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
|
"github.com/rxdn/gdl/objects/channel"
|
||||||
)
|
)
|
||||||
|
|
||||||
func ChannelsHandler(ctx *gin.Context) {
|
func ChannelsHandler(ctx *gin.Context) {
|
||||||
guildId := ctx.Keys["guildid"].(uint64)
|
guildId := ctx.Keys["guildid"].(uint64)
|
||||||
|
|
||||||
channels := cache.Instance.GetGuildChannels(guildId)
|
channels := cache.Instance.GetGuildChannels(guildId)
|
||||||
encoded, err := json.Marshal(channels)
|
if channels == nil {
|
||||||
if err != nil {
|
channels = make([]channel.Channel, 0) // don't serve null
|
||||||
ctx.JSON(500, gin.H{
|
|
||||||
"success": true,
|
|
||||||
"error": err.Error(),
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx.Data(200, gin.MIMEJSON, encoded)
|
ctx.JSON(200, channels)
|
||||||
}
|
}
|
||||||
|
@ -73,6 +73,7 @@ func StartServer() {
|
|||||||
authenticateGuildSupport.GET("/manage/:id/blacklist", manage.BlacklistHandler)
|
authenticateGuildSupport.GET("/manage/:id/blacklist", manage.BlacklistHandler)
|
||||||
authenticateGuildAdmin.GET("/manage/:id/panels", manage.PanelHandler)
|
authenticateGuildAdmin.GET("/manage/:id/panels", manage.PanelHandler)
|
||||||
authenticateGuildSupport.GET("/manage/:id/tags", manage.TagsHandler)
|
authenticateGuildSupport.GET("/manage/:id/tags", manage.TagsHandler)
|
||||||
|
authenticateGuildSupport.GET("/manage/:id/teams", serveTemplate("manage/teams"))
|
||||||
|
|
||||||
authenticateGuildSupport.GET("/manage/:id/tickets", manage.TicketListHandler)
|
authenticateGuildSupport.GET("/manage/:id/tickets", manage.TicketListHandler)
|
||||||
authenticateGuildSupport.GET("/manage/:id/tickets/view/:ticketId", manage.TicketViewHandler)
|
authenticateGuildSupport.GET("/manage/:id/tickets/view/:ticketId", manage.TicketViewHandler)
|
||||||
@ -151,6 +152,20 @@ func StartServer() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func serveTemplate(templateName string) func(*gin.Context) {
|
||||||
|
return func(ctx *gin.Context) {
|
||||||
|
store := sessions.Default(ctx)
|
||||||
|
guildId := ctx.Keys["guildid"].(uint64)
|
||||||
|
|
||||||
|
ctx.HTML(200, templateName, gin.H{
|
||||||
|
"name": store.Get("name").(string),
|
||||||
|
"guildId": guildId,
|
||||||
|
"avatar": store.Get("avatar").(string),
|
||||||
|
"baseUrl": config.Conf.Server.BaseUrl,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func createRenderer() multitemplate.Renderer {
|
func createRenderer() multitemplate.Renderer {
|
||||||
r := multitemplate.NewRenderer()
|
r := multitemplate.NewRenderer()
|
||||||
|
|
||||||
@ -165,6 +180,7 @@ func createRenderer() multitemplate.Renderer {
|
|||||||
r = addManageTemplate(r, "ticketview")
|
r = addManageTemplate(r, "ticketview")
|
||||||
r = addManageTemplate(r, "panels", "./public/templates/includes/substitutionmodal.tmpl", "./public/templates/includes/paneleditmodal.tmpl", "./public/templates/includes/multipaneleditmodal.tmpl")
|
r = addManageTemplate(r, "panels", "./public/templates/includes/substitutionmodal.tmpl", "./public/templates/includes/paneleditmodal.tmpl", "./public/templates/includes/multipaneleditmodal.tmpl")
|
||||||
r = addManageTemplate(r, "tags")
|
r = addManageTemplate(r, "tags")
|
||||||
|
r = addManageTemplate(r, "teams")
|
||||||
|
|
||||||
r = addErrorTemplate(r)
|
r = addErrorTemplate(r)
|
||||||
|
|
||||||
|
2
go.mod
2
go.mod
@ -6,7 +6,7 @@ require (
|
|||||||
github.com/BurntSushi/toml v0.3.1
|
github.com/BurntSushi/toml v0.3.1
|
||||||
github.com/TicketsBot/archiverclient v0.0.0-20200704164621-09d42dd941e0
|
github.com/TicketsBot/archiverclient v0.0.0-20200704164621-09d42dd941e0
|
||||||
github.com/TicketsBot/common v0.0.0-20210118172556-0b20b84f7df4
|
github.com/TicketsBot/common v0.0.0-20210118172556-0b20b84f7df4
|
||||||
github.com/TicketsBot/database v0.0.0-20210106171550-992a749cd82a
|
github.com/TicketsBot/database v0.0.0-20210215164209-6ec5ebcbc399
|
||||||
github.com/TicketsBot/worker v0.0.0-20210207182653-fabef254ea30
|
github.com/TicketsBot/worker v0.0.0-20210207182653-fabef254ea30
|
||||||
github.com/apex/log v1.1.2
|
github.com/apex/log v1.1.2
|
||||||
github.com/boj/redistore v0.0.0-20180917114910-cd5dcc76aeff // indirect
|
github.com/boj/redistore v0.0.0-20180917114910-cd5dcc76aeff // indirect
|
||||||
|
@ -327,3 +327,60 @@ html > ::-webkit-scrollbar {
|
|||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.tcontent-container {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.team-card-container {
|
||||||
|
display: flex;
|
||||||
|
margin-top: 4%;
|
||||||
|
height: 50%;
|
||||||
|
width: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tcard {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-evenly;
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
background-color: #272727 !important;
|
||||||
|
border-radius: 5px;
|
||||||
|
box-shadow: 0 4px 4px rgba(0, 0, 0, 0.25);
|
||||||
|
}
|
||||||
|
|
||||||
|
.tcard-title {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
border-bottom: 1px solid rgba(0,0,0,.125);
|
||||||
|
}
|
||||||
|
|
||||||
|
.tcard-title > span {
|
||||||
|
color: white;
|
||||||
|
font-size: 32px;
|
||||||
|
font-weight: bold;
|
||||||
|
margin: 2% 0 2% 2%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tcard-body {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
margin: 2%;
|
||||||
|
flex: 1;
|
||||||
|
width: 100%;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flex-center {
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
@ -7,15 +7,18 @@
|
|||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="/manage/{{.guildId}}/logs"><i class="fas fa-copy icon"></i>Transcripts</a>
|
<a class="nav-link" href="/manage/{{.guildId}}/logs"><i class="fas fa-copy icon"></i>Transcripts</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="/manage/{{.guildId}}/panels"><i class="fas fa-mouse-pointer icon"></i>Reaction Panels</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="/manage/{{.guildId}}/teams"><i class="fas fa-users icon"></i>Teams</a>
|
||||||
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="/manage/{{.guildId}}/blacklist"><i class="fas fa-ban icon"></i>Blacklist</a>
|
<a class="nav-link" href="/manage/{{.guildId}}/blacklist"><i class="fas fa-ban icon"></i>Blacklist</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="/manage/{{.guildId}}/tickets"><i class="fas fa-ticket-alt icon"></i>Ticket List</a>
|
<a class="nav-link" href="/manage/{{.guildId}}/tickets"><i class="fas fa-ticket-alt icon"></i>Ticket List</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
|
||||||
<a class="nav-link" href="/manage/{{.guildId}}/panels"><i class="fas fa-mouse-pointer icon"></i>Reaction Panels</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="/manage/{{.guildId}}/tags"><i class="fas fa-tags icon"></i>Tags</a>
|
<a class="nav-link" href="/manage/{{.guildId}}/tags"><i class="fas fa-tags icon"></i>Tags</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -67,16 +67,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-2 px-1">
|
|
||||||
<div class="form-group">
|
|
||||||
<label>Enable modmail</label>
|
|
||||||
<div class="form-check">
|
|
||||||
<input class="form-check-input" type="checkbox" value="on"
|
|
||||||
id="enable_modmail" style="width:30px;height:30px;">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -340,7 +330,6 @@
|
|||||||
document.getElementById("ping_everyone").checked = settings.ping_everyone;
|
document.getElementById("ping_everyone").checked = settings.ping_everyone;
|
||||||
document.getElementById("users_can_close").checked = settings.users_can_close;
|
document.getElementById("users_can_close").checked = settings.users_can_close;
|
||||||
document.getElementById("close_confirmation").checked = settings.close_confirmation;
|
document.getElementById("close_confirmation").checked = settings.close_confirmation;
|
||||||
document.getElementById("enable_modmail").checked = settings.modmail_enabled;
|
|
||||||
|
|
||||||
if (settings.naming_scheme === "username") {
|
if (settings.naming_scheme === "username") {
|
||||||
document.getElementById("naming-by-username").checked = true;
|
document.getElementById("naming-by-username").checked = true;
|
||||||
@ -459,8 +448,7 @@
|
|||||||
'close_confirmation': document.getElementById("close_confirmation").checked,
|
'close_confirmation': document.getElementById("close_confirmation").checked,
|
||||||
'naming_scheme': document.querySelector('input[name="namingscheme"]:checked').value,
|
'naming_scheme': document.querySelector('input[name="namingscheme"]:checked').value,
|
||||||
'archive_channel': document.getElementById('archive_channel').options[document.getElementById('archive_channel').selectedIndex].value,
|
'archive_channel': document.getElementById('archive_channel').options[document.getElementById('archive_channel').selectedIndex].value,
|
||||||
'category': document.getElementById('category').options[document.getElementById('category').selectedIndex].value,
|
'category': document.getElementById('category').options[document.getElementById('category').selectedIndex].value
|
||||||
'modmail_enabled': document.getElementById('enable_modmail').checked
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const res = await axios.post('/api/{{.guildId}}/settings', data);
|
const res = await axios.post('/api/{{.guildId}}/settings', data);
|
||||||
|
19
public/templates/views/teams.tmpl
Normal file
19
public/templates/views/teams.tmpl
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{{define "content"}}
|
||||||
|
<div class="tcontent-container">
|
||||||
|
<div class="team-card-container">
|
||||||
|
<div class="tcard">
|
||||||
|
<div class="tcard-title">
|
||||||
|
<span>Support Teams</span>
|
||||||
|
</div>
|
||||||
|
<div class="tcard-body">
|
||||||
|
<div class="flex-center">
|
||||||
|
<label for="team-selection">Select a team</label>
|
||||||
|
<select name="team-selection" style="width: 100%">
|
||||||
|
<option value="default">Default</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{end}}
|
Loading…
x
Reference in New Issue
Block a user