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  }