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  }