strip bbcode tags from ogdesc meta blocks for topics
add topic_ogdesc_assign hook initialise hooks after filling slices in bbcode init hoist poll input checks out of inner loops in CreateTopicSubmit shorten variable names and reduce boilerplate
This commit is contained in:
parent
75d1d6fcbe
commit
8ef9dc8353
|
@ -53,6 +53,10 @@ func AddHooks(add func(name, params, ret, htype string, multiHook, skip bool, de
|
||||||
}
|
}
|
||||||
//hookskip("forums_frow_assign","f *Forum")
|
//hookskip("forums_frow_assign","f *Forum")
|
||||||
hookskip("topic_create_frow_assign","f *Forum")
|
hookskip("topic_create_frow_assign","f *Forum")
|
||||||
|
hookss := func(name string) {
|
||||||
|
add(name,"d string","string","Sshooks",true,false,"","d")
|
||||||
|
}
|
||||||
|
hookss("topic_ogdesc_assign")
|
||||||
}
|
}
|
||||||
|
|
||||||
func Write(hookVars HookVars) {
|
func Write(hookVars HookVars) {
|
||||||
|
|
|
@ -128,6 +128,7 @@ var hookTable = &HookTable{
|
||||||
map[string][]func(string) string{
|
map[string][]func(string) string{
|
||||||
"preparse_preassign": nil,
|
"preparse_preassign": nil,
|
||||||
"parse_assign": nil,
|
"parse_assign": nil,
|
||||||
|
"topic_ogdesc_assign": nil,
|
||||||
},
|
},
|
||||||
nil,
|
nil,
|
||||||
//nil,
|
//nil,
|
||||||
|
|
|
@ -31,8 +31,6 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func InitBbcode(pl *c.Plugin) error {
|
func InitBbcode(pl *c.Plugin) error {
|
||||||
pl.AddHook("parse_assign", BbcodeFullParse)
|
|
||||||
|
|
||||||
bbcodeInvalidNumber = []byte("<red>[Invalid Number]</red>")
|
bbcodeInvalidNumber = []byte("<red>[Invalid Number]</red>")
|
||||||
bbcodeNoNegative = []byte("<red>[No Negative Numbers]</red>")
|
bbcodeNoNegative = []byte("<red>[No Negative Numbers]</red>")
|
||||||
bbcodeMissingTag = []byte("<red>[Missing Tag]</red>")
|
bbcodeMissingTag = []byte("<red>[Missing Tag]</red>")
|
||||||
|
@ -50,11 +48,23 @@ func InitBbcode(pl *c.Plugin) error {
|
||||||
bbcodeSpoiler = regexp.MustCompile(`\[spoiler\](.*)\[/spoiler\]`)
|
bbcodeSpoiler = regexp.MustCompile(`\[spoiler\](.*)\[/spoiler\]`)
|
||||||
|
|
||||||
bbcodeRandom = rand.New(rand.NewSource(time.Now().UnixNano()))
|
bbcodeRandom = rand.New(rand.NewSource(time.Now().UnixNano()))
|
||||||
|
|
||||||
|
pl.AddHook("parse_assign", BbcodeFullParse)
|
||||||
|
pl.AddHook("topic_ogdesc_assign", BbcodeStripTags)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func deactivateBbcode(pl *c.Plugin) {
|
func deactivateBbcode(pl *c.Plugin) {
|
||||||
pl.RemoveHook("parse_assign", BbcodeFullParse)
|
pl.RemoveHook("parse_assign", BbcodeFullParse)
|
||||||
|
pl.RemoveHook("topic_ogdesc_assign", BbcodeStripTags)
|
||||||
|
}
|
||||||
|
|
||||||
|
func BbcodeStripTags(msg string) string {
|
||||||
|
msg = bbcodeBold.ReplaceAllString(msg, "$1")
|
||||||
|
msg = bbcodeItalic.ReplaceAllString(msg, "$1")
|
||||||
|
msg = bbcodeUnderline.ReplaceAllString(msg, "$1")
|
||||||
|
msg = bbcodeStrike.ReplaceAllString(msg, "$1")
|
||||||
|
return msg
|
||||||
}
|
}
|
||||||
|
|
||||||
func BbcodeRegexParse(msg string) string {
|
func BbcodeRegexParse(msg string) string {
|
||||||
|
|
|
@ -29,16 +29,16 @@ func init() {
|
||||||
|
|
||||||
var maxAgeYear = "max-age=" + strconv.Itoa(int(c.Year))
|
var maxAgeYear = "max-age=" + strconv.Itoa(int(c.Year))
|
||||||
|
|
||||||
func ShowAttachment(w http.ResponseWriter, r *http.Request, user *c.User, filename string) c.RouteError {
|
func ShowAttachment(w http.ResponseWriter, r *http.Request, u *c.User, filename string) c.RouteError {
|
||||||
filename = c.Stripslashes(filename)
|
filename = c.Stripslashes(filename)
|
||||||
ext := filepath.Ext("./attachs/" + filename)
|
ext := filepath.Ext("./attachs/" + filename)
|
||||||
if !c.AllowedFileExts.Contains(strings.TrimPrefix(ext, ".")) {
|
if !c.AllowedFileExts.Contains(strings.TrimPrefix(ext, ".")) {
|
||||||
return c.LocalError("Bad extension", w, r, user)
|
return c.LocalError("Bad extension", w, r, u)
|
||||||
}
|
}
|
||||||
|
|
||||||
sid, err := strconv.Atoi(r.FormValue("sid"))
|
sid, err := strconv.Atoi(r.FormValue("sid"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.LocalError("The sid is not an integer", w, r, user)
|
return c.LocalError("The sid is not an integer", w, r, u)
|
||||||
}
|
}
|
||||||
sectionTable := r.FormValue("stype")
|
sectionTable := r.FormValue("stype")
|
||||||
|
|
||||||
|
@ -52,22 +52,22 @@ func ShowAttachment(w http.ResponseWriter, r *http.Request, user *c.User, filena
|
||||||
}
|
}
|
||||||
|
|
||||||
if sectionTable == "forums" {
|
if sectionTable == "forums" {
|
||||||
_, ferr := c.SimpleForumUserCheck(w, r, user, sid)
|
_, ferr := c.SimpleForumUserCheck(w, r, u, sid)
|
||||||
if ferr != nil {
|
if ferr != nil {
|
||||||
return ferr
|
return ferr
|
||||||
}
|
}
|
||||||
if !user.Perms.ViewTopic {
|
if !u.Perms.ViewTopic {
|
||||||
return c.NoPermissions(w, r, user)
|
return c.NoPermissions(w, r, u)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return c.LocalError("Unknown section", w, r, user)
|
return c.LocalError("Unknown section", w, r, u)
|
||||||
}
|
}
|
||||||
|
|
||||||
if originTable != "topics" && originTable != "replies" {
|
if originTable != "topics" && originTable != "replies" {
|
||||||
return c.LocalError("Unknown origin", w, r, user)
|
return c.LocalError("Unknown origin", w, r, u)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !user.Loggedin {
|
if !u.Loggedin {
|
||||||
w.Header().Set("Cache-Control", maxAgeYear)
|
w.Header().Set("Cache-Control", maxAgeYear)
|
||||||
} else {
|
} else {
|
||||||
guest := c.GuestUser
|
guest := c.GuestUser
|
||||||
|
|
|
@ -10,8 +10,8 @@ import (
|
||||||
c "github.com/Azareal/Gosora/common"
|
c "github.com/Azareal/Gosora/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Backups(w http.ResponseWriter, r *http.Request, user *c.User, backupURL string) c.RouteError {
|
func Backups(w http.ResponseWriter, r *http.Request, u *c.User, backupURL string) c.RouteError {
|
||||||
basePage, ferr := buildBasePage(w, r, user, "backups", "backups")
|
basePage, ferr := buildBasePage(w, r, u, "backups", "backups")
|
||||||
if ferr != nil {
|
if ferr != nil {
|
||||||
return ferr
|
return ferr
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ func Backups(w http.ResponseWriter, r *http.Request, user *c.User, backupURL str
|
||||||
}
|
}
|
||||||
// TODO: Fix the problem where non-existent files aren't greeted with custom 404s on ServeFile()'s side
|
// TODO: Fix the problem where non-existent files aren't greeted with custom 404s on ServeFile()'s side
|
||||||
http.ServeFile(w, r, "./backups/"+backupURL)
|
http.ServeFile(w, r, "./backups/"+backupURL)
|
||||||
err = c.AdminLogs.Create("download", 0, "backup", user.GetIP(), user.ID)
|
err = c.AdminLogs.Create("download", 0, "backup", u.GetIP(), u.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.InternalError(err, w, r)
|
return c.InternalError(err, w, r)
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,13 +10,13 @@ import (
|
||||||
p "github.com/Azareal/Gosora/common/phrases"
|
p "github.com/Azareal/Gosora/common/phrases"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Settings(w http.ResponseWriter, r *http.Request, user *c.User) c.RouteError {
|
func Settings(w http.ResponseWriter, r *http.Request, u *c.User) c.RouteError {
|
||||||
basePage, ferr := buildBasePage(w, r, user, "settings", "settings")
|
basePage, ferr := buildBasePage(w, r, u, "settings", "settings")
|
||||||
if ferr != nil {
|
if ferr != nil {
|
||||||
return ferr
|
return ferr
|
||||||
}
|
}
|
||||||
if !user.Perms.EditSettings {
|
if !u.Perms.EditSettings {
|
||||||
return c.NoPermissions(w, r, user)
|
return c.NoPermissions(w, r, u)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: What if the list gets too long? How should we structure this?
|
// TODO: What if the list gets too long? How should we structure this?
|
||||||
|
@ -35,7 +35,7 @@ func Settings(w http.ResponseWriter, r *http.Request, user *c.User) c.RouteError
|
||||||
labels := strings.Split(llist, ",")
|
labels := strings.Split(llist, ",")
|
||||||
conv, err := strconv.Atoi(s.Content)
|
conv, err := strconv.Atoi(s.Content)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.LocalError("The setting '"+s.Name+"' can't be converted to an integer", w, r, user)
|
return c.LocalError("The setting '"+s.Name+"' can't be converted to an integer", w, r, u)
|
||||||
}
|
}
|
||||||
s.Content = labels[conv-1]
|
s.Content = labels[conv-1]
|
||||||
// TODO: Localise this
|
// TODO: Localise this
|
||||||
|
|
|
@ -23,7 +23,7 @@ import (
|
||||||
"golang.org/x/image/tiff"
|
"golang.org/x/image/tiff"
|
||||||
|
|
||||||
c "github.com/Azareal/Gosora/common"
|
c "github.com/Azareal/Gosora/common"
|
||||||
"github.com/Azareal/Gosora/common/counters"
|
co "github.com/Azareal/Gosora/common/counters"
|
||||||
"github.com/Azareal/Gosora/common/phrases"
|
"github.com/Azareal/Gosora/common/phrases"
|
||||||
qgen "github.com/Azareal/Gosora/query_gen"
|
qgen "github.com/Azareal/Gosora/query_gen"
|
||||||
)
|
)
|
||||||
|
@ -44,11 +44,11 @@ func init() {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func ViewTopic(w http.ResponseWriter, r *http.Request, user *c.User, header *c.Header, urlBit string) c.RouteError {
|
func ViewTopic(w http.ResponseWriter, r *http.Request, user *c.User, h *c.Header, urlBit string) c.RouteError {
|
||||||
page, _ := strconv.Atoi(r.FormValue("page"))
|
page, _ := strconv.Atoi(r.FormValue("page"))
|
||||||
_, tid, err := ParseSEOURL(urlBit)
|
_, tid, err := ParseSEOURL(urlBit)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.SimpleError(phrases.GetErrorPhrase("url_id_must_be_integer"), w, r, header)
|
return c.SimpleError(phrases.GetErrorPhrase("url_id_must_be_integer"), w, r, h)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the topic...
|
// Get the topic...
|
||||||
|
@ -59,16 +59,16 @@ func ViewTopic(w http.ResponseWriter, r *http.Request, user *c.User, header *c.H
|
||||||
return c.InternalError(err, w, r)
|
return c.InternalError(err, w, r)
|
||||||
}
|
}
|
||||||
|
|
||||||
ferr := c.ForumUserCheck(header, w, r, user, topic.ParentID)
|
ferr := c.ForumUserCheck(h, w, r, user, topic.ParentID)
|
||||||
if ferr != nil {
|
if ferr != nil {
|
||||||
return ferr
|
return ferr
|
||||||
}
|
}
|
||||||
if !user.Perms.ViewTopic {
|
if !user.Perms.ViewTopic {
|
||||||
return c.NoPermissions(w, r, user)
|
return c.NoPermissions(w, r, user)
|
||||||
}
|
}
|
||||||
header.Title = topic.Title
|
h.Title = topic.Title
|
||||||
header.Path = topic.Link
|
h.Path = topic.Link
|
||||||
//header.Path = c.BuildTopicURL(c.NameToSlug(topic.Title), topic.ID)
|
//h.Path = c.BuildTopicURL(c.NameToSlug(topic.Title), topic.ID)
|
||||||
|
|
||||||
postGroup, err := c.Groups.Get(topic.Group)
|
postGroup, err := c.Groups.Get(topic.Group)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -78,10 +78,11 @@ func ViewTopic(w http.ResponseWriter, r *http.Request, user *c.User, header *c.H
|
||||||
topic.ContentLines = strings.Count(topic.Content, "\n")
|
topic.ContentLines = strings.Count(topic.Content, "\n")
|
||||||
if !user.Loggedin && user.LastAgent != c.SimpleBots[0] && user.LastAgent != c.SimpleBots[1] {
|
if !user.Loggedin && user.LastAgent != c.SimpleBots[0] && user.LastAgent != c.SimpleBots[1] {
|
||||||
if len(topic.Content) > 200 {
|
if len(topic.Content) > 200 {
|
||||||
header.OGDesc = topic.Content[:197] + "..."
|
h.OGDesc = topic.Content[:197] + "..."
|
||||||
} else {
|
} else {
|
||||||
header.OGDesc = topic.Content
|
h.OGDesc = topic.Content
|
||||||
}
|
}
|
||||||
|
h.OGDesc = c.H_topic_ogdesc_assign_hook(h.Hooks, h.OGDesc)
|
||||||
}
|
}
|
||||||
|
|
||||||
var parseSettings *c.ParseSettings
|
var parseSettings *c.ParseSettings
|
||||||
|
@ -143,7 +144,7 @@ func ViewTopic(w http.ResponseWriter, r *http.Request, user *c.User, header *c.H
|
||||||
// Calculate the offset
|
// Calculate the offset
|
||||||
offset, page, lastPage := c.PageOffset(topic.PostCount, page, c.Config.ItemsPerPage)
|
offset, page, lastPage := c.PageOffset(topic.PostCount, page, c.Config.ItemsPerPage)
|
||||||
pageList := c.Paginate(page, lastPage, 5)
|
pageList := c.Paginate(page, lastPage, 5)
|
||||||
tpage := c.TopicPage{header, nil, topic, forum, poll, c.Paginator{pageList, page, lastPage}}
|
tpage := c.TopicPage{h, nil, topic, forum, poll, c.Paginator{pageList, page, lastPage}}
|
||||||
|
|
||||||
// Get the replies if we have any...
|
// Get the replies if we have any...
|
||||||
if topic.PostCount > 0 {
|
if topic.PostCount > 0 {
|
||||||
|
@ -160,42 +161,42 @@ func ViewTopic(w http.ResponseWriter, r *http.Request, user *c.User, header *c.H
|
||||||
tpage.ItemList = rlist
|
tpage.ItemList = rlist
|
||||||
}
|
}
|
||||||
|
|
||||||
header.Zone = "view_topic"
|
h.Zone = "view_topic"
|
||||||
header.ZoneID = topic.ID
|
h.ZoneID = topic.ID
|
||||||
header.ZoneData = topic
|
h.ZoneData = topic
|
||||||
|
|
||||||
var rerr c.RouteError
|
var rerr c.RouteError
|
||||||
tmpl := forum.Tmpl
|
tmpl := forum.Tmpl
|
||||||
if r.FormValue("i") == "1" {
|
if r.FormValue("i") == "1" {
|
||||||
if tpage.Poll != nil {
|
if tpage.Poll != nil {
|
||||||
header.AddXRes("chartist/chartist.min.css", "chartist/chartist.min.js")
|
h.AddXRes("chartist/chartist.min.css", "chartist/chartist.min.js")
|
||||||
}
|
}
|
||||||
if tmpl == "" {
|
if tmpl == "" {
|
||||||
rerr = renderTemplate("topic_mini", w, r, header, tpage)
|
rerr = renderTemplate("topic_mini", w, r, h, tpage)
|
||||||
} else {
|
} else {
|
||||||
tmpl = "topic_mini" + tmpl
|
tmpl = "topic_mini" + tmpl
|
||||||
err = renderTemplate3(tmpl, tmpl, w, r, header, tpage)
|
err = renderTemplate3(tmpl, tmpl, w, r, h, tpage)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
rerr = renderTemplate("topic_mini", w, r, header, tpage)
|
rerr = renderTemplate("topic_mini", w, r, h, tpage)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if tpage.Poll != nil {
|
if tpage.Poll != nil {
|
||||||
header.AddSheet("chartist/chartist.min.css")
|
h.AddSheet("chartist/chartist.min.css")
|
||||||
header.AddScript("chartist/chartist.min.js")
|
h.AddScript("chartist/chartist.min.js")
|
||||||
}
|
}
|
||||||
if tmpl == "" {
|
if tmpl == "" {
|
||||||
rerr = renderTemplate("topic", w, r, header, tpage)
|
rerr = renderTemplate("topic", w, r, h, tpage)
|
||||||
} else {
|
} else {
|
||||||
tmpl = "topic_" + tmpl
|
tmpl = "topic_" + tmpl
|
||||||
err = renderTemplate3(tmpl, tmpl, w, r, header, tpage)
|
err = renderTemplate3(tmpl, tmpl, w, r, h, tpage)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
rerr = renderTemplate("topic", w, r, header, tpage)
|
rerr = renderTemplate("topic", w, r, h, tpage)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
counters.TopicViewCounter.Bump(topic.ID) // TODO: Move this into the router?
|
co.TopicViewCounter.Bump(topic.ID) // TODO: Move this into the router?
|
||||||
counters.ForumViewCounter.Bump(topic.ParentID)
|
co.ForumViewCounter.Bump(topic.ParentID)
|
||||||
return rerr
|
return rerr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -394,7 +395,6 @@ func CreateTopicSubmit(w http.ResponseWriter, r *http.Request, u *c.User) c.Rout
|
||||||
maxPollOptions := 10
|
maxPollOptions := 10
|
||||||
pollInputItems := make(map[int]string)
|
pollInputItems := make(map[int]string)
|
||||||
for key, values := range r.Form {
|
for key, values := range r.Form {
|
||||||
for _, value := range values {
|
|
||||||
if !strings.HasPrefix(key, "pollinputitem[") {
|
if !strings.HasPrefix(key, "pollinputitem[") {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -408,7 +408,7 @@ func CreateTopicSubmit(w http.ResponseWriter, r *http.Request, u *c.User) c.Rout
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.LocalError("Malformed pollinputitem", w, r, u)
|
return c.LocalError("Malformed pollinputitem", w, r, u)
|
||||||
}
|
}
|
||||||
|
for _, value := range values {
|
||||||
// If there are duplicates, then something has gone horribly wrong, so let's ignore them, this'll likely happen during an attack
|
// If there are duplicates, then something has gone horribly wrong, so let's ignore them, this'll likely happen during an attack
|
||||||
_, exists := pollInputItems[index]
|
_, exists := pollInputItems[index]
|
||||||
// TODO: Should we use SanitiseBody instead to keep the newlines?
|
// TODO: Should we use SanitiseBody instead to keep the newlines?
|
||||||
|
@ -440,7 +440,6 @@ func CreateTopicSubmit(w http.ResponseWriter, r *http.Request, u *c.User) c.Rout
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.InternalError(err, w, r)
|
return c.InternalError(err, w, r)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = u.IncreasePostStats(c.WordCount(content), true)
|
err = u.IncreasePostStats(c.WordCount(content), true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.InternalError(err, w, r)
|
return c.InternalError(err, w, r)
|
||||||
|
@ -454,8 +453,8 @@ func CreateTopicSubmit(w http.ResponseWriter, r *http.Request, u *c.User) c.Rout
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
counters.PostCounter.Bump()
|
co.PostCounter.Bump()
|
||||||
counters.TopicCounter.Bump()
|
co.TopicCounter.Bump()
|
||||||
// TODO: Pass more data to this hook?
|
// TODO: Pass more data to this hook?
|
||||||
skip, rerr := lite.Hooks.VhookSkippable("action_end_create_topic", tid, u)
|
skip, rerr := lite.Hooks.VhookSkippable("action_end_create_topic", tid, u)
|
||||||
if skip || rerr != nil {
|
if skip || rerr != nil {
|
||||||
|
@ -634,8 +633,8 @@ func EditTopicSubmit(w http.ResponseWriter, r *http.Request, user *c.User, stid
|
||||||
func DeleteTopicSubmit(w http.ResponseWriter, r *http.Request, user *c.User) c.RouteError {
|
func DeleteTopicSubmit(w http.ResponseWriter, r *http.Request, user *c.User) c.RouteError {
|
||||||
// TODO: Move this to some sort of middleware
|
// TODO: Move this to some sort of middleware
|
||||||
var tids []int
|
var tids []int
|
||||||
js := false
|
js := c.ReqIsJson(r)
|
||||||
if c.ReqIsJson(r) {
|
if js {
|
||||||
if r.Body == nil {
|
if r.Body == nil {
|
||||||
return c.PreErrorJS("No request body", w, r)
|
return c.PreErrorJS("No request body", w, r)
|
||||||
}
|
}
|
||||||
|
@ -643,7 +642,6 @@ func DeleteTopicSubmit(w http.ResponseWriter, r *http.Request, user *c.User) c.R
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.PreErrorJS("We weren't able to parse your data", w, r)
|
return c.PreErrorJS("We weren't able to parse your data", w, r)
|
||||||
}
|
}
|
||||||
js = true
|
|
||||||
} else {
|
} else {
|
||||||
tid, err := strconv.Atoi(r.URL.Path[len("/topic/delete/submit/"):])
|
tid, err := strconv.Atoi(r.URL.Path[len("/topic/delete/submit/"):])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -679,7 +677,6 @@ func DeleteTopicSubmit(w http.ResponseWriter, r *http.Request, user *c.User) c.R
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.InternalErrorJSQ(err, w, r, js)
|
return c.InternalErrorJSQ(err, w, r, js)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = c.ModLogs.Create("delete", tid, "topic", user.GetIP(), user.ID)
|
err = c.ModLogs.Create("delete", tid, "topic", user.GetIP(), user.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.InternalErrorJSQ(err, w, r, js)
|
return c.InternalErrorJSQ(err, w, r, js)
|
||||||
|
@ -714,12 +711,16 @@ func StickTopicSubmit(w http.ResponseWriter, r *http.Request, u *c.User, stid st
|
||||||
return topicActionPost(topic.Stick(), "stick", w, r, lite, topic, u)
|
return topicActionPost(topic.Stick(), "stick", w, r, lite, topic, u)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// mark
|
||||||
|
//
|
||||||
|
//
|
||||||
func topicActionPre(stid, action string, w http.ResponseWriter, r *http.Request, u *c.User) (*c.Topic, *c.HeaderLite, c.RouteError) {
|
func topicActionPre(stid, action string, w http.ResponseWriter, r *http.Request, u *c.User) (*c.Topic, *c.HeaderLite, c.RouteError) {
|
||||||
tid, err := strconv.Atoi(stid)
|
tid, err := strconv.Atoi(stid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, c.PreError(phrases.GetErrorPhrase("id_must_be_integer"), w, r)
|
return nil, nil, c.PreError(phrases.GetErrorPhrase("id_must_be_integer"), w, r)
|
||||||
}
|
}
|
||||||
|
|
||||||
t, err := c.Topics.Get(tid)
|
t, err := c.Topics.Get(tid)
|
||||||
if err == sql.ErrNoRows {
|
if err == sql.ErrNoRows {
|
||||||
return nil, nil, c.PreError("The topic you tried to "+action+" doesn't exist.", w, r)
|
return nil, nil, c.PreError("The topic you tried to "+action+" doesn't exist.", w, r)
|
||||||
|
@ -765,8 +766,8 @@ func UnstickTopicSubmit(w http.ResponseWriter, r *http.Request, u *c.User, stid
|
||||||
func LockTopicSubmit(w http.ResponseWriter, r *http.Request, user *c.User) c.RouteError {
|
func LockTopicSubmit(w http.ResponseWriter, r *http.Request, user *c.User) c.RouteError {
|
||||||
// TODO: Move this to some sort of middleware
|
// TODO: Move this to some sort of middleware
|
||||||
var tids []int
|
var tids []int
|
||||||
js := false
|
js := c.ReqIsJson(r)
|
||||||
if c.ReqIsJson(r) {
|
if js {
|
||||||
if r.Body == nil {
|
if r.Body == nil {
|
||||||
return c.PreErrorJS("No request body", w, r)
|
return c.PreErrorJS("No request body", w, r)
|
||||||
}
|
}
|
||||||
|
@ -774,7 +775,6 @@ func LockTopicSubmit(w http.ResponseWriter, r *http.Request, user *c.User) c.Rou
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.PreErrorJS("We weren't able to parse your data", w, r)
|
return c.PreErrorJS("We weren't able to parse your data", w, r)
|
||||||
}
|
}
|
||||||
js = true
|
|
||||||
} else {
|
} else {
|
||||||
tid, err := strconv.Atoi(r.URL.Path[len("/topic/lock/submit/"):])
|
tid, err := strconv.Atoi(r.URL.Path[len("/topic/lock/submit/"):])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -885,7 +885,6 @@ func MoveTopicSubmit(w http.ResponseWriter, r *http.Request, user *c.User, sfid
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.InternalErrorJS(err, w, r)
|
return c.InternalErrorJS(err, w, r)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ? - Is there a better way of doing this?
|
// ? - Is there a better way of doing this?
|
||||||
err = addTopicAction("move-"+strconv.Itoa(fid), topic, user)
|
err = addTopicAction("move-"+strconv.Itoa(fid), topic, user)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -920,7 +919,6 @@ func LikeTopicSubmit(w http.ResponseWriter, r *http.Request, user *c.User, stid
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.PreErrorJSQ(phrases.GetErrorPhrase("id_must_be_integer"), w, r, js)
|
return c.PreErrorJSQ(phrases.GetErrorPhrase("id_must_be_integer"), w, r, js)
|
||||||
}
|
}
|
||||||
|
|
||||||
topic, err := c.Topics.Get(tid)
|
topic, err := c.Topics.Get(tid)
|
||||||
if err == sql.ErrNoRows {
|
if err == sql.ErrNoRows {
|
||||||
return c.PreErrorJSQ("The requested topic doesn't exist.", w, r, js)
|
return c.PreErrorJSQ("The requested topic doesn't exist.", w, r, js)
|
||||||
|
|
Loading…
Reference in New Issue