-
Notifications
You must be signed in to change notification settings - Fork 59
/
setting_handler.go
112 lines (97 loc) · 2.18 KB
/
setting_handler.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
package uadmin
import (
"net/http"
"strings"
)
func settingsHandler(w http.ResponseWriter, r *http.Request, session *Session) {
r.ParseMultipartForm(32 << 20)
type SCat struct {
ID uint
Name string
Icon string
Settings []Setting
}
type Context struct {
User string
SiteName string
Language Language
RootURL string
SCat []SCat
Logo string
FavIcon string
}
tMap := map[DataType]string{
DataType(0).File(): cFILE,
DataType(0).Image(): cIMAGE,
}
if session == nil {
pageErrorHandler(w, r, session)
return
}
// Check if the user has permission to settings models
perm := session.User.GetAccess("setting")
if !perm.Read {
pageErrorHandler(w, r, session)
return
}
settings := []Setting{}
All(&settings)
if r.Method == cPOST {
if !perm.Edit {
pageErrorHandler(w, r, session)
return
}
//var tempSet Setting
tx := db.Begin()
for _, s := range settings {
v, ok := r.Form[s.Code]
if s.DataType == s.DataType.Image() || s.DataType == s.DataType.File() {
sParts := strings.SplitN(s.Code, ".", 2)
// Process Files and Images
_, _, err := r.FormFile(s.Code)
if err != nil {
continue
}
schema, _ := getSchema(s)
schema.FieldByName(sParts[1])
f := F{Name: s.Code, Type: tMap[s.DataType], UploadTo: "/static/settings/"}
val := processUpload(r, &f, "setting", session, &schema)
if val == "" {
continue
}
s.ParseFormValue([]string{val})
} else if s.DataType == s.DataType.Boolean() {
if ok {
s.Value = "1"
} else {
s.Value = "0"
}
} else {
s.ParseFormValue(v)
}
s.ApplyValue()
tx.Save(&s)
}
tx.Commit()
}
c := Context{}
c.RootURL = RootURL
c.Language = getLanguage(r)
c.SiteName = SiteName
c.User = session.User.Username
c.SCat = []SCat{}
c.Logo = Logo
c.FavIcon = FavIcon
catList := []SettingCategory{}
All(&catList)
for _, cat := range catList {
c.SCat = append(c.SCat, SCat{
ID: cat.ID,
Name: cat.Name,
Icon: cat.Icon,
Settings: []Setting{},
})
Filter(&c.SCat[len(c.SCat)-1].Settings, "category_id = ?", cat.ID)
}
RenderHTML(w, r, "./templates/uadmin/"+Theme+"/setting.html", c)
}