diff options
author | Thomas Boerger <thomas@webhippie.de> | 2016-12-06 18:58:31 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-06 18:58:31 +0100 |
commit | 83ed234472c85057100db5cc537049812c3a288c (patch) | |
tree | d6bb6623eb36dce5586c6f43495d99bb94b35827 /modules | |
parent | 1b5b297c398a547b506029ac5a527ba9a5891ffb (diff) | |
download | gitea-83ed234472c85057100db5cc537049812c3a288c.tar.gz gitea-83ed234472c85057100db5cc537049812c3a288c.zip |
Integrate templates into bindata optionally (#314)
Integrated optional bindata for the templates
Diffstat (limited to 'modules')
-rw-r--r-- | modules/highlight/highlight.go (renamed from modules/template/highlight/highlight.go) | 0 | ||||
-rw-r--r-- | modules/public/public.go | 2 | ||||
-rw-r--r-- | modules/public/static.go | 2 | ||||
-rw-r--r-- | modules/templates/dynamic.go | 103 | ||||
-rw-r--r-- | modules/templates/helper.go (renamed from modules/template/template.go) | 2 | ||||
-rw-r--r-- | modules/templates/static.go | 109 | ||||
-rw-r--r-- | modules/templates/templates.go | 10 |
7 files changed, 226 insertions, 2 deletions
diff --git a/modules/template/highlight/highlight.go b/modules/highlight/highlight.go index 39b5d6d153..39b5d6d153 100644 --- a/modules/template/highlight/highlight.go +++ b/modules/highlight/highlight.go diff --git a/modules/public/public.go b/modules/public/public.go index 261ed88874..9c9e9d533d 100644 --- a/modules/public/public.go +++ b/modules/public/public.go @@ -6,6 +6,8 @@ package public //go:generate go-bindata -tags "bindata" -ignore "\\.go|\\.less" -pkg "public" -o "bindata.go" ../../public/... //go:generate go fmt bindata.go +//go:generate sed -i.bak s/..\/..\/public\/// bindata.go +//go:generate rm -f bindata.go.bak // Options represents the available options to configure the macaron handler. type Options struct { diff --git a/modules/public/static.go b/modules/public/static.go index 8184bc2149..f68400d329 100644 --- a/modules/public/static.go +++ b/modules/public/static.go @@ -22,7 +22,7 @@ func Static(opts *Options) macaron.Handler { AssetDir: AssetDir, AssetInfo: AssetInfo, AssetNames: AssetNames, - Prefix: "../../public", + Prefix: "", }), }, ) diff --git a/modules/templates/dynamic.go b/modules/templates/dynamic.go new file mode 100644 index 0000000000..c127b69470 --- /dev/null +++ b/modules/templates/dynamic.go @@ -0,0 +1,103 @@ +// +build !bindata + +// Copyright 2016 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package templates + +import ( + "html/template" + "io/ioutil" + "path" + "strings" + + "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/setting" + "github.com/Unknwon/com" + "gopkg.in/macaron.v1" +) + +var ( + templates = template.New("") +) + +// Renderer implements the macaron handler for serving the templates. +func Renderer() macaron.Handler { + return macaron.Renderer(macaron.RenderOptions{ + Funcs: NewFuncMap(), + Directory: path.Join(setting.StaticRootPath, "templates"), + AppendDirectories: []string{ + path.Join(setting.CustomPath, "templates"), + }, + }) +} + +// Mailer provides the templates required for sending notification mails. +func Mailer() *template.Template { + for _, funcs := range NewFuncMap() { + templates.Funcs(funcs) + } + + staticDir := path.Join(setting.StaticRootPath, "templates", "mail") + + if com.IsDir(staticDir) { + files, err := com.StatDir(staticDir) + + if err != nil { + log.Warn("Failed to read %s templates dir. %v", staticDir, err) + } else { + for _, filePath := range files { + if !strings.HasSuffix(filePath, ".tmpl") { + continue + } + + content, err := ioutil.ReadFile(path.Join(staticDir, filePath)) + + if err != nil { + log.Warn("Failed to read static %s template. %v", filePath, err) + continue + } + + templates.New( + strings.TrimSuffix( + filePath, + ".tmpl", + ), + ).Parse(string(content)) + } + } + } + + customDir := path.Join(setting.CustomPath, "templates", "mail") + + if com.IsDir(customDir) { + files, err := com.StatDir(customDir) + + if err != nil { + log.Warn("Failed to read %s templates dir. %v", customDir, err) + } else { + for _, filePath := range files { + if !strings.HasSuffix(filePath, ".tmpl") { + continue + } + + content, err := ioutil.ReadFile(path.Join(customDir, filePath)) + + if err != nil { + log.Warn("Failed to read custom %s template. %v", filePath, err) + continue + } + + templates.New( + strings.TrimSuffix( + filePath, + ".tmpl", + ), + ).Parse(string(content)) + } + } + } + + return templates +} diff --git a/modules/template/template.go b/modules/templates/helper.go index 65d78c2f6e..c256455399 100644 --- a/modules/template/template.go +++ b/modules/templates/helper.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. -package template +package templates import ( "container/list" diff --git a/modules/templates/static.go b/modules/templates/static.go new file mode 100644 index 0000000000..5c9903cde6 --- /dev/null +++ b/modules/templates/static.go @@ -0,0 +1,109 @@ +// +build bindata + +// Copyright 2016 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package templates + +import ( + "html/template" + "io/ioutil" + "path" + "strings" + + "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/setting" + "github.com/Unknwon/com" + "github.com/go-macaron/bindata" + "gopkg.in/macaron.v1" +) + +var ( + templates = template.New("") +) + +// Renderer implements the macaron handler for serving the templates. +func Renderer() macaron.Handler { + return macaron.Renderer(macaron.RenderOptions{ + Funcs: NewFuncMap(), + AppendDirectories: []string{ + path.Join(setting.CustomPath, "templates"), + }, + TemplateFileSystem: bindata.Templates( + bindata.Options{ + Asset: Asset, + AssetDir: AssetDir, + AssetInfo: AssetInfo, + AssetNames: AssetNames, + Prefix: "", + }, + ), + }) +} + +// Mailer provides the templates required for sending notification mails. +func Mailer() *template.Template { + for _, funcs := range NewFuncMap() { + templates.Funcs(funcs) + } + + for _, assetPath := range AssetNames() { + if !strings.HasPrefix(assetPath, "mail/") { + continue + } + + if !strings.HasSuffix(assetPath, ".tmpl") { + continue + } + + content, err := Asset(assetPath) + + if err != nil { + log.Warn("Failed to read embedded %s template. %v", assetPath, err) + continue + } + + templates.New( + strings.TrimPrefix( + strings.TrimSuffix( + assetPath, + ".tmpl", + ), + "mail/", + ), + ).Parse(string(content)) + } + + customDir := path.Join(setting.CustomPath, "templates", "mail") + + if com.IsDir(customDir) { + files, err := com.StatDir(customDir) + + if err != nil { + log.Warn("Failed to read %s templates dir. %v", customDir, err) + } else { + for _, filePath := range files { + if !strings.HasSuffix(filePath, ".tmpl") { + continue + } + + content, err := ioutil.ReadFile(path.Join(customDir, filePath)) + + if err != nil { + log.Warn("Failed to read custom %s template. %v", filePath, err) + continue + } + + templates.New( + strings.TrimSuffix( + filePath, + ".tmpl", + ), + ).Parse(string(content)) + } + } + } + + return templates +} diff --git a/modules/templates/templates.go b/modules/templates/templates.go new file mode 100644 index 0000000000..91c8db5228 --- /dev/null +++ b/modules/templates/templates.go @@ -0,0 +1,10 @@ +// Copyright 2016 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package templates + +//go:generate go-bindata -tags "bindata" -ignore "\\.go" -pkg "templates" -o "bindata.go" ../../templates/... +//go:generate go fmt bindata.go +//go:generate sed -i.bak s/..\/..\/templates\/// bindata.go +//go:generate rm -f bindata.go.bak |