-
Notifications
You must be signed in to change notification settings - Fork 1
/
ad_position.go
119 lines (109 loc) · 3.28 KB
/
ad_position.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
package advert
import (
"github.com/webx-top/db"
"github.com/webx-top/echo"
"github.com/admpub/nging/v5/application/handler"
modelAdvert "github.com/admpub/webx/application/model/official/advert"
)
func PositionIndex(ctx echo.Context) error {
q := ctx.Form(`q`)
contype := ctx.Form(`contype`)
m := modelAdvert.NewAdPosition(ctx)
cond := []db.Compound{}
if len(contype) > 0 {
cond = append(cond, db.Cond{`contype`: contype})
}
if len(q) > 0 {
cond = append(cond, db.Cond{`name`: db.Like(`%` + q + `%`)})
}
ctx.Request().Form().Set(`pageSize`, `10`)
list := []*modelAdvert.PositionWithRendered{}
_, err := handler.PagingWithLister(ctx, handler.NewLister(m, &list, func(r db.Result) db.Result {
return r.OrderBy(`-id`)
}, db.And(cond...)))
for _, row := range list {
row.Rendered = modelAdvert.Render(row)
}
ctx.Set(`listData`, list)
return ctx.Render(`official/advert/position_index`, handler.Err(ctx, err))
}
func PositionAdd(ctx echo.Context) error {
m := modelAdvert.NewAdPosition(ctx)
var err error
if ctx.IsPost() {
err = ctx.MustBind(m.OfficialAdPosition, echo.ExcludeFieldName(`updated`, `created`))
if err == nil {
_, err = m.Add()
}
if err == nil {
handler.SendOk(ctx, ctx.T(`操作成功`))
return ctx.Redirect(handler.URLFor(`/official/advert/position_index`))
}
} else {
id := ctx.Formx(`copyId`).Uint64()
if id > 0 {
err = m.Get(nil, `id`, id)
if err == nil {
echo.StructToForm(ctx, m.OfficialAdPosition, ``, echo.LowerCaseFirstLetter)
ctx.Request().Form().Set(`id`, `0`)
}
}
}
ctx.Set(`activeURL`, `/official/advert/position_index`)
ctx.Set(`isEdit`, false)
setPositionFormData(ctx)
return ctx.Render(`official/advert/position_edit`, handler.Err(ctx, err))
}
func setPositionFormData(ctx echo.Context) {
ctx.Set(`contypes`, modelAdvert.Contype.Slice())
}
func PositionEdit(ctx echo.Context) error {
var err error
id := ctx.Formx(`id`).Uint64()
m := modelAdvert.NewAdPosition(ctx)
err = m.Get(nil, db.Cond{`id`: id})
if err != nil {
return err
}
if ctx.IsPost() {
err = ctx.MustBind(m.OfficialAdPosition, echo.ExcludeFieldName(`updated`, `created`))
if err == nil {
m.Id = id
err = m.Edit(nil, db.Cond{`id`: id})
if err == nil {
handler.SendOk(ctx, ctx.T(`操作成功`))
return ctx.Redirect(handler.URLFor(`/official/advert/position_index`))
}
}
} else if ctx.IsAjax() {
disabled := ctx.Query(`disabled`)
if len(disabled) > 0 {
m.Disabled = disabled
data := ctx.Data()
err = m.UpdateField(nil, `disabled`, disabled, db.Cond{`id`: id})
if err != nil {
data.SetError(err)
return ctx.JSON(data)
}
data.SetInfo(ctx.T(`操作成功`))
return ctx.JSON(data)
}
} else if err == nil {
echo.StructToForm(ctx, m.OfficialAdPosition, ``, echo.LowerCaseFirstLetter)
}
ctx.Set(`activeURL`, `/official/advert/position_index`)
ctx.Set(`isEdit`, true)
setPositionFormData(ctx)
return ctx.Render(`official/advert/position_edit`, handler.Err(ctx, err))
}
func PositionDelete(ctx echo.Context) error {
id := ctx.Formx(`id`).Uint64()
m := modelAdvert.NewAdPosition(ctx)
err := m.Delete(nil, db.Cond{`id`: id})
if err == nil {
handler.SendOk(ctx, ctx.T(`操作成功`))
} else {
handler.SendFail(ctx, err.Error())
}
return ctx.Redirect(handler.URLFor(`/official/advert/position_index`))
}