github.com/kotovmak/go-admin@v1.1.1/adm/plugin_template.go (about) 1 package main 2 3 var pluginTemplate = map[string]string{ 4 "main": `package {{.PluginName}} 5 6 import ( 7 "{{.ModulePath}}/controller" 8 "{{.ModulePath}}/guard" 9 language2 "{{.ModulePath}}/modules/language" 10 "github.com/kotovmak/go-admin/context" 11 "github.com/kotovmak/go-admin/modules/config" 12 "github.com/kotovmak/go-admin/modules/language" 13 "github.com/kotovmak/go-admin/modules/service" 14 "github.com/kotovmak/go-admin/modules/utils" 15 "github.com/kotovmak/go-admin/plugins" 16 form2 "github.com/kotovmak/go-admin/plugins/admin/modules/form" 17 "github.com/kotovmak/go-admin/plugins/admin/modules/table" 18 "github.com/kotovmak/go-admin/template/types" 19 ) 20 21 type {{.PluginTitle}} struct { 22 *plugins.Base 23 24 handler *controller.Handler 25 guard *guard.Guardian 26 27 // ... 28 } 29 30 func init() { 31 plugins.Add(&{{.PluginTitle}}{ 32 Base: &plugins.Base{PlugName: "{{.PluginName}}", URLPrefix: "{{.PluginName}}"}, 33 // .... 34 }) 35 } 36 37 func New{{.PluginTitle}}(/*...*/) *{{.PluginTitle}} { 38 return &{{.PluginTitle}}{ 39 Base: &plugins.Base{PlugName: "{{.PluginName}}", URLPrefix: "{{.PluginName}}"}, 40 // ... 41 } 42 } 43 44 func (plug *{{.PluginTitle}}) IsInstalled() bool { 45 // ... implement it 46 return true 47 } 48 49 func (plug *{{.PluginTitle}}) GetIndexURL() string { 50 return config.Url("/{{.PluginName}}/example?param=helloworld") 51 } 52 53 func (plug *{{.PluginTitle}}) InitPlugin(srv service.List) { 54 55 // DO NOT DELETE 56 plug.InitBase(srv, "{{.PluginName}}") 57 58 plug.handler = controller.NewHandler(/*...*/) 59 plug.guard = guard.New(/*...*/) 60 plug.App = plug.initRouter(srv) 61 plug.handler.HTML = plug.HTML 62 plug.handler.HTMLMenu = plug.HTMLMenu 63 64 language.Lang[language.CN].Combine(language2.CN) 65 language.Lang[language.EN].Combine(language2.EN) 66 67 plug.SetInfo(info) 68 } 69 70 var info = plugins.Info{ 71 Website: "", 72 Title: "{{.PluginTitle}}", 73 Description: "", 74 Version: "", 75 Author: "", 76 Url: "", 77 Cover: "", 78 Agreement: "", 79 Uuid: "", 80 Name: "", 81 ModulePath: "", 82 CreateDate: utils.ParseTime("2000-01-11"), 83 UpdateDate: utils.ParseTime("2000-01-11"), 84 } 85 86 func (plug *{{.PluginTitle}}) GetSettingPage() table.Generator { 87 return func(ctx *context.Context) ({{.PluginName}}Configuration table.Table) { 88 89 cfg := table.DefaultConfigWithDriver(config.GetDatabases().GetDefault().Driver) 90 91 if !plug.IsInstalled() { 92 cfg = cfg.SetOnlyNewForm() 93 } else { 94 cfg = cfg.SetOnlyUpdateForm() 95 } 96 97 {{.PluginName}}Configuration = table.NewDefaultTable(cfg) 98 99 formList := {{.PluginName}}Configuration.GetForm(). 100 AddXssJsFilter(). 101 HideBackButton(). 102 HideContinueNewCheckBox(). 103 HideResetButton() 104 105 // formList.AddField(...) 106 107 formList.SetInsertFn(func(values form2.Values) error { 108 // TODO: finish the installation 109 return nil 110 }) 111 112 formList.EnableAjaxData(types.AjaxData{ 113 SuccessTitle: language2.Get("install success"), 114 ErrorTitle: language2.Get("install fail"), 115 SuccessJumpURL: "...", 116 }).SetFormNewTitle(language2.GetHTML("{{.PluginName}} installation")). 117 SetTitle(language2.Get("{{.PluginName}} installation")). 118 SetFormNewBtnWord(language2.GetHTML("install")) 119 120 return 121 } 122 } 123 `, 124 "controller": `package controller 125 126 import ( 127 "github.com/kotovmak/go-admin/context" 128 "github.com/kotovmak/go-admin/template" 129 "github.com/kotovmak/go-admin/template/types" 130 ) 131 132 type Handler struct { 133 HTML func(ctx *context.Context, panel types.Panel, ops ...template.ExecuteOptions) 134 HTMLMenu func(ctx *context.Context, panel types.Panel, ops ...template.ExecuteOptions) 135 } 136 137 func NewHandler(/*...*/) *Handler { 138 return &Handler{ 139 // ... 140 } 141 } 142 143 func (h *Handler) Update(/*...*/) { 144 // ... 145 }`, 146 "controller_example": `package controller 147 148 import ( 149 "github.com/kotovmak/go-admin/context" 150 "github.com/kotovmak/go-admin/template/types" 151 "html/template" 152 "{{.ModulePath}}/guard" 153 ) 154 155 func (h *Handler) Example(ctx *context.Context) { 156 var param = guard.GetExampleParam(ctx) 157 h.HTML(ctx, types.Panel{ 158 Title: "Example", 159 Description: "example", 160 Content: template.HTML(param.Param), 161 }) 162 } 163 `, 164 "guard": `package guard 165 166 import ( 167 "github.com/kotovmak/go-admin/modules/db" 168 ) 169 170 type Guardian struct { 171 conn db.Connection 172 } 173 174 func New(/*...*/) *Guardian { 175 return &Guardian{ 176 // ... 177 } 178 } 179 180 func (g *Guardian) Update(/*...*/) { 181 // ... 182 }`, 183 "guard_example": `package guard 184 185 import ( 186 "github.com/kotovmak/go-admin/context" 187 ) 188 189 type ExampleParam struct { 190 Param string 191 } 192 193 func (g *Guardian) Example(ctx *context.Context) { 194 195 param := ctx.Query("param") 196 197 ctx.SetUserValue("example", &ExampleParam{ 198 Param: param, 199 }) 200 ctx.Next() 201 } 202 203 func GetExampleParam(ctx *context.Context) *ExampleParam { 204 return ctx.UserValue["example"].(*ExampleParam) 205 }`, 206 "makefile": `GOCMD = go 207 208 all: fmt 209 210 fmt: 211 GO111MODULE=off $(GOCMD) fmt ./... 212 213 test: 214 gotest -v ./tests`, 215 "router": `package {{.PluginName}} 216 217 import ( 218 "github.com/kotovmak/go-admin/context" 219 "github.com/kotovmak/go-admin/modules/auth" 220 "github.com/kotovmak/go-admin/modules/service" 221 ) 222 223 func (plug *{{.PluginTitle}}) initRouter(srv service.List) *context.App { 224 225 app := context.NewApp() 226 authRoute := app.Group("/", auth.Middleware(plug.Conn)) 227 228 authRoute.GET("/example", plug.guard.Example, plug.handler.Example) 229 230 return app 231 }`, 232 "language": `package language 233 234 import ( 235 "github.com/kotovmak/go-admin/modules/language" 236 "html/template" 237 ) 238 239 func Get(key string) string { 240 return language.GetWithScope(key, "{{.PluginName}}") 241 } 242 243 func GetHTML(key string) template.HTML { 244 return template.HTML(language.GetWithScope(key, "{{.PluginName}}")) 245 }`, 246 "language_cn": `package language 247 248 import "github.com/kotovmak/go-admin/modules/language" 249 250 var CN = language.LangSet{ 251 "{{.PluginName}}.aaa": "aaa", 252 }`, 253 "language_en": `package language 254 255 import "github.com/kotovmak/go-admin/modules/language" 256 257 var EN = language.LangSet{ 258 "{{.PluginName}}.aaa": "aaa", 259 }`, 260 }