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  }