github.com/kotovmak/go-admin@v1.1.1/plugins/admin/controller/api_update.go (about) 1 package controller 2 3 import ( 4 "net/url" 5 6 "github.com/kotovmak/go-admin/context" 7 "github.com/kotovmak/go-admin/modules/auth" 8 "github.com/kotovmak/go-admin/modules/file" 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/guard" 12 "github.com/kotovmak/go-admin/plugins/admin/modules/response" 13 "github.com/kotovmak/go-admin/template/types/form" 14 ) 15 16 func (h *Handler) ApiUpdate(ctx *context.Context) { 17 param := guard.GetEditFormParam(ctx) 18 19 if len(param.MultiForm.File) > 0 { 20 err := file.GetFileEngine(h.config.FileUploadEngine.Name).Upload(param.MultiForm) 21 if err != nil { 22 response.Error(ctx, err.Error()) 23 return 24 } 25 } 26 27 for i := 0; i < len(param.Panel.GetForm().FieldList); i++ { 28 if param.Panel.GetForm().FieldList[i].FormType == form.File && 29 len(param.MultiForm.File[param.Panel.GetForm().FieldList[i].Field]) == 0 && 30 param.MultiForm.Value[param.Panel.GetForm().FieldList[i].Field+"__delete_flag"][0] != "1" { 31 delete(param.MultiForm.Value, param.Panel.GetForm().FieldList[i].Field) 32 } 33 } 34 35 err := param.Panel.UpdateData(param.Value()) 36 if err != nil { 37 response.Error(ctx, err.Error()) 38 return 39 } 40 41 response.Ok(ctx) 42 } 43 44 func (h *Handler) ApiUpdateForm(ctx *context.Context) { 45 params := guard.GetShowFormParam(ctx) 46 47 prefix, param := params.Prefix, params.Param 48 49 panel := h.table(prefix, ctx) 50 51 user := auth.Auth(ctx) 52 53 paramStr := param.GetRouteParamStr() 54 55 newUrl := modules.AorEmpty(panel.GetCanAdd(), h.routePathWithPrefix("api_show_new", prefix)+paramStr) 56 footerKind := "edit" 57 if newUrl == "" || !user.CheckPermissionByUrlMethod(newUrl, h.route("api_show_new").Method(), url.Values{}) { 58 footerKind = "edit_only" 59 } 60 61 formInfo, err := panel.GetDataWithId(param) 62 63 if err != nil { 64 response.Error(ctx, err.Error()) 65 return 66 } 67 68 infoUrl := h.routePathWithPrefix("api_info", prefix) + param.DeleteField(constant.EditPKKey).GetRouteParamStr() 69 editUrl := h.routePathWithPrefix("api_edit", prefix) 70 71 f := panel.GetForm() 72 73 response.OkWithData(ctx, map[string]interface{}{ 74 "panel": formInfo, 75 "urls": map[string]string{ 76 "info": infoUrl, 77 "edit": editUrl, 78 }, 79 "pk": panel.GetPrimaryKey().Name, 80 "header": f.HeaderHtml, 81 "footer": f.FooterHtml, 82 "prefix": h.config.PrefixFixSlash(), 83 "token": h.authSrv().AddToken(), 84 "operation_footer": formFooter(footerKind, f.IsHideContinueEditCheckBox, f.IsHideContinueNewCheckBox, 85 f.IsHideResetButton, f.FormEditBtnWord), 86 }) 87 }