github.com/kotovmak/go-admin@v1.1.1/plugins/admin/controller/api_detail.go (about) 1 package controller 2 3 import ( 4 "fmt" 5 6 "github.com/kotovmak/go-admin/context" 7 "github.com/kotovmak/go-admin/modules/auth" 8 "github.com/kotovmak/go-admin/modules/language" 9 "github.com/kotovmak/go-admin/plugins/admin/modules" 10 "github.com/kotovmak/go-admin/plugins/admin/modules/constant" 11 "github.com/kotovmak/go-admin/plugins/admin/modules/parameter" 12 "github.com/kotovmak/go-admin/plugins/admin/modules/response" 13 "github.com/kotovmak/go-admin/template/types" 14 "github.com/kotovmak/go-admin/template/types/form" 15 ) 16 17 func (h *Handler) ApiDetail(ctx *context.Context) { 18 prefix := ctx.Query(constant.PrefixKey) 19 id := ctx.Query(constant.DetailPKKey) 20 panel := h.table(prefix, ctx) 21 user := auth.Auth(ctx) 22 23 newPanel := panel.Copy() 24 25 formModel := newPanel.GetForm() 26 27 var fieldList types.FieldList 28 29 if len(panel.GetDetail().FieldList) == 0 { 30 fieldList = panel.GetInfo().FieldList 31 } else { 32 fieldList = panel.GetDetail().FieldList 33 } 34 35 formModel.FieldList = make([]types.FormField, len(fieldList)) 36 37 for i, field := range fieldList { 38 formModel.FieldList[i] = types.FormField{ 39 Field: field.Field, 40 FieldClass: field.Field, 41 TypeName: field.TypeName, 42 Head: field.Head, 43 Hide: field.Hide, 44 Joins: field.Joins, 45 FormType: form.Default, 46 FieldDisplay: field.FieldDisplay, 47 } 48 } 49 50 param := parameter.GetParam(ctx.Request.URL, 51 panel.GetInfo().DefaultPageSize, 52 panel.GetInfo().SortField, 53 panel.GetInfo().GetSort()) 54 55 paramStr := param.DeleteDetailPk().GetRouteParamStr() 56 57 editUrl := modules.AorEmpty(!panel.GetInfo().IsHideEditButton, h.routePathWithPrefix("show_edit", prefix)+paramStr+ 58 "&"+constant.EditPKKey+"="+ctx.Query(constant.DetailPKKey)) 59 deleteUrl := modules.AorEmpty(!panel.GetInfo().IsHideDeleteButton, h.routePathWithPrefix("delete", prefix)+paramStr) 60 infoUrl := h.routePathWithPrefix("info", prefix) + paramStr 61 62 editUrl = user.GetCheckPermissionByUrlMethod(editUrl, h.route("show_edit").Method()) 63 deleteUrl = user.GetCheckPermissionByUrlMethod(deleteUrl, h.route("delete").Method()) 64 65 deleteJs := "" 66 67 if deleteUrl != "" { 68 deleteJs = fmt.Sprintf(`<script> 69 function DeletePost(id) { 70 swal({ 71 title: '%s', 72 type: "warning", 73 showCancelButton: true, 74 confirmButtonColor: "#DD6B55", 75 confirmButtonText: '%s', 76 closeOnConfirm: false, 77 cancelButtonText: '%s', 78 }, 79 function () { 80 $.ajax({ 81 method: 'post', 82 url: '%s', 83 data: { 84 id: id 85 }, 86 success: function (data) { 87 if (typeof (data) === "string") { 88 data = JSON.parse(data); 89 } 90 if (data.code === 200) { 91 location.href = '%s' 92 } else { 93 swal(data.msg, '', 'error'); 94 } 95 } 96 }); 97 }); 98 } 99 100 $('.delete-btn').on('click', function (event) { 101 DeletePost('%s') 102 }); 103 104 </script>`, language.Get("are you sure to delete"), language.Get("yes"), language.Get("cancel"), deleteUrl, infoUrl, id) 105 } 106 107 desc := panel.GetDetail().Description 108 109 if desc == "" { 110 desc = panel.GetInfo().Description + language.Get("Detail") 111 } 112 113 formInfo, err := newPanel.GetDataWithId(param.WithPKs(id)) 114 115 if err != nil { 116 response.Error(ctx, err.Error()) 117 return 118 } 119 120 response.OkWithData(ctx, map[string]interface{}{ 121 "panel": formInfo, 122 "previous": infoUrl, 123 "footer": deleteJs, 124 "prefix": h.config.PrefixFixSlash(), 125 }) 126 }