forked from GoAdminGroup/go-admin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
api_detail.go
126 lines (104 loc) · 3.22 KB
/
api_detail.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
package controller
import (
"fmt"
"github.com/plumk97/go-admin/context"
"github.com/plumk97/go-admin/modules/auth"
"github.com/plumk97/go-admin/modules/language"
"github.com/plumk97/go-admin/plugins/admin/modules"
"github.com/plumk97/go-admin/plugins/admin/modules/constant"
"github.com/plumk97/go-admin/plugins/admin/modules/parameter"
"github.com/plumk97/go-admin/plugins/admin/modules/response"
"github.com/plumk97/go-admin/template/types"
"github.com/plumk97/go-admin/template/types/form"
)
func (h *Handler) ApiDetail(ctx *context.Context) {
prefix := ctx.Query(constant.PrefixKey)
id := ctx.Query(constant.DetailPKKey)
panel := h.table(prefix, ctx)
user := auth.Auth(ctx)
newPanel := panel.Copy()
formModel := newPanel.GetForm()
var fieldList types.FieldList
if len(panel.GetDetail().FieldList) == 0 {
fieldList = panel.GetInfo().FieldList
} else {
fieldList = panel.GetDetail().FieldList
}
formModel.FieldList = make([]types.FormField, len(fieldList))
for i, field := range fieldList {
formModel.FieldList[i] = types.FormField{
Field: field.Field,
FieldClass: field.Field,
TypeName: field.TypeName,
Head: field.Head,
Hide: field.Hide,
Joins: field.Joins,
FormType: form.Default,
FieldDisplay: field.FieldDisplay,
}
}
param := parameter.GetParam(ctx.Request.URL,
panel.GetInfo().DefaultPageSize,
panel.GetInfo().SortField,
panel.GetInfo().GetSort())
paramStr := param.DeleteDetailPk().GetRouteParamStr()
editUrl := modules.AorEmpty(!panel.GetInfo().IsHideEditButton, h.routePathWithPrefix("show_edit", prefix)+paramStr+
"&"+constant.EditPKKey+"="+ctx.Query(constant.DetailPKKey))
deleteUrl := modules.AorEmpty(!panel.GetInfo().IsHideDeleteButton, h.routePathWithPrefix("delete", prefix)+paramStr)
infoUrl := h.routePathWithPrefix("info", prefix) + paramStr
editUrl = user.GetCheckPermissionByUrlMethod(editUrl, h.route("show_edit").Method())
deleteUrl = user.GetCheckPermissionByUrlMethod(deleteUrl, h.route("delete").Method())
deleteJs := ""
if deleteUrl != "" {
deleteJs = fmt.Sprintf(`<script>
function DeletePost(id) {
swal({
title: '%s',
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: '%s',
closeOnConfirm: false,
cancelButtonText: '%s',
},
function () {
$.ajax({
method: 'post',
url: '%s',
data: {
id: id
},
success: function (data) {
if (typeof (data) === "string") {
data = JSON.parse(data);
}
if (data.code === 200) {
location.href = '%s'
} else {
swal(data.msg, '', 'error');
}
}
});
});
}
$('.delete-btn').on('click', function (event) {
DeletePost('%s')
});
</script>`, language.Get("are you sure to delete"), language.Get("yes"), language.Get("cancel"), deleteUrl, infoUrl, id)
}
desc := panel.GetDetail().Description
if desc == "" {
desc = panel.GetInfo().Description + language.Get("Detail")
}
formInfo, err := newPanel.GetDataWithId(param.WithPKs(id))
if err != nil {
response.Error(ctx, err.Error())
return
}
response.OkWithData(ctx, map[string]interface{}{
"panel": formInfo,
"previous": infoUrl,
"footer": deleteJs,
"prefix": h.config.PrefixFixSlash(),
})
}