github.com/kotovmak/go-admin@v1.1.1/template/components/composer.go (about) 1 package components 2 3 import ( 4 "bytes" 5 "html/template" 6 7 "github.com/kotovmak/go-admin/modules/config" 8 "github.com/kotovmak/go-admin/modules/logger" 9 "github.com/kotovmak/go-admin/modules/utils" 10 template2 "github.com/kotovmak/go-admin/template" 11 ) 12 13 func ComposeHtml(temList map[string]string, separation bool, compo interface{}, templateName ...string) template.HTML { 14 15 tmplName := "" 16 if len(templateName) > 0 { 17 tmplName = templateName[0] + " " 18 } 19 20 var ( 21 tmpl *template.Template 22 err error 23 ) 24 25 if separation { 26 files := make([]string, 0) 27 root := config.GetAssetRootPath() + "pages/" 28 for _, v := range templateName { 29 files = append(files, root+temList["components/"+v]+".tmpl") 30 } 31 tmpl, err = template.New("comp").Funcs(template2.DefaultFuncMap).ParseFiles(files...) 32 } else { 33 var text = "" 34 for _, v := range templateName { 35 text += temList["components/"+v] 36 } 37 tmpl, err = template.New("comp").Funcs(template2.DefaultFuncMap).Parse(text) 38 } 39 40 if err != nil { 41 logger.Panic(tmplName + "ComposeHtml Error:" + err.Error()) 42 return "" 43 } 44 buf := new(bytes.Buffer) 45 46 defineName := utils.ReplaceAll(templateName[0], "table/", "", "form/", "") 47 48 err = tmpl.ExecuteTemplate(buf, defineName, compo) 49 if err != nil { 50 logger.Error(tmplName+" ComposeHtml Error:", err) 51 } 52 return template.HTML(buf.String()) 53 }