forked from insionng/sdc
/
EditQuestionHandler.go
152 lines (117 loc) · 3.65 KB
/
EditQuestionHandler.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
package handler
import (
"fmt"
"github.com/astaxie/beego"
"github.com/cinience/sdc/helper"
"github.com/cinience/sdc/lib"
"github.com/cinience/sdc/model"
"html/template"
"strconv"
"strings"
"time"
)
type EditQuestionHandler struct {
lib.AuthHandler
}
func (self *EditQuestionHandler) Get() {
self.TplNames = "sdc/edit-question.html"
flash := beego.NewFlash()
qid, _ := self.GetInt64(":qid")
if qid_handler, err := model.GetQuestion(qid); err == nil && qid_handler != nil {
uid, _ := self.GetSession("userid").(int64)
role, _ := self.GetSession("userrole").(int64)
allow := bool(false)
if qid_handler.Uid == uid && qid_handler.Id == qid {
allow = true
} else if role < 0 {
allow = true
}
if allow {
self.Data["question"] = *qid_handler
self.Data["inode"], _ = model.GetNode(qid_handler.Nid)
} else {
//没有权限执行该操作则直接跳转到登录页面
self.Redirect("/user/signin/", 302)
}
} else {
flash.Error(fmt.Sprint(err))
flash.Store(&self.Controller)
return
}
}
func (self *EditQuestionHandler) Post() {
self.TplNames = "sdc/edit-question.html"
flash := beego.NewFlash()
tags := template.HTMLEscapeString(strings.TrimSpace(strings.ToLower(self.GetString("tags"))))
qid, _ := self.GetInt64(":qid")
if qid_handler, err := model.GetQuestion(qid); err == nil {
uid, _ := self.GetSession("userid").(int64)
role, _ := self.GetSession("userrole").(int64)
allow := bool(false)
if qid_handler.Uid == uid && qid_handler.Id == qid {
allow = true
} else if role < 0 {
allow = true
}
if allow {
self.Data["question"] = *qid_handler
self.Data["inode"], _ = model.GetNode(qid_handler.Nid)
if tags == "" {
flash.Error("尚未设置标签,请设定正确的标签!")
flash.Store(&self.Controller)
return
} else {
qid_title := template.HTMLEscapeString(strings.TrimSpace(self.GetString("title")))
qid_content := template.HTMLEscapeString(strings.TrimSpace(self.GetString("content")))
if qid_title != "" && qid_content != "" {
tags := template.HTMLEscapeString(strings.TrimSpace(strings.ToLower(self.GetString("tags"))))
if qs, err := model.GetQuestion(qid); qs != nil && err == nil {
qs.Title = qid_title
//删去用户没再使用的图片
helper.DelLostImages(qs.Content, qid_content)
qs.Content = qid_content
if s, e := helper.GetBannerThumbnail(qid_content); e == nil {
qs.Attachment = s
}
if thumbnails, thumbnailslarge, thumbnailsmedium, thumbnailssmall, e := helper.GetThumbnails(qid_content); e == nil {
qs.Thumbnails = thumbnails
qs.ThumbnailsLarge = thumbnailslarge
qs.ThumbnailsMedium = thumbnailsmedium
qs.ThumbnailsSmall = thumbnailssmall
}
/*
if cat, err := model.GetCategory(nd.Pid); err == nil {
qs.Category = cat.Title
}
*/
qs.Tags = tags
qs.Updated = time.Now()
if row, err := model.PutQuestion(qid, qs); row == 1 && err == nil {
model.SetRecordforImageOnEdit(qid, qs.Uid)
self.Redirect("/"+strconv.Itoa(int(qid))+"/", 302)
} else {
flash.Error("更新问题出现错误:", fmt.Sprint(err))
flash.Store(&self.Controller)
return
}
} else {
flash.Error("无法获取根本不存在的问题!")
flash.Store(&self.Controller)
return
}
} else {
flash.Error("问题标题或内容为空!")
flash.Store(&self.Controller)
return
}
}
} else {
//没有权限执行该操作则直接跳转到登录页面
self.Redirect("/user/signin/", 302)
}
} else {
flash.Error(fmt.Sprint(err))
flash.Store(&self.Controller)
return
}
}