Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
3.1 KiB
133 lines
3.1 KiB
// +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("") |
|
) |
|
|
|
// HTMLRenderer implements the macaron handler for serving HTML templates. |
|
func HTMLRenderer() macaron.Handler { |
|
return macaron.Renderer(macaron.RenderOptions{ |
|
Funcs: NewFuncMap(), |
|
Directory: path.Join(setting.StaticRootPath, "templates"), |
|
AppendDirectories: []string{ |
|
path.Join(setting.CustomPath, "templates"), |
|
}, |
|
}) |
|
} |
|
|
|
// JSONRenderer implements the macaron handler for serving JSON templates. |
|
func JSONRenderer() macaron.Handler { |
|
return macaron.Renderer(macaron.RenderOptions{ |
|
Funcs: NewFuncMap(), |
|
Directory: path.Join(setting.StaticRootPath, "templates"), |
|
AppendDirectories: []string{ |
|
path.Join(setting.CustomPath, "templates"), |
|
}, |
|
HTMLContentType: "application/json", |
|
}) |
|
} |
|
|
|
// JSRenderer implements the macaron handler for serving JS templates. |
|
func JSRenderer() macaron.Handler { |
|
return macaron.Renderer(macaron.RenderOptions{ |
|
Funcs: NewFuncMap(), |
|
Directory: path.Join(setting.StaticRootPath, "templates"), |
|
AppendDirectories: []string{ |
|
path.Join(setting.CustomPath, "templates"), |
|
}, |
|
HTMLContentType: "application/javascript", |
|
}) |
|
} |
|
|
|
// 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 |
|
} |
|
|
|
_, err = templates.New( |
|
strings.TrimSuffix( |
|
filePath, |
|
".tmpl", |
|
), |
|
).Parse(string(content)) |
|
if err != nil { |
|
log.Warn("Failed to parse template %v", err) |
|
} |
|
} |
|
} |
|
} |
|
|
|
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 |
|
} |
|
|
|
_, err = templates.New( |
|
strings.TrimSuffix( |
|
filePath, |
|
".tmpl", |
|
), |
|
).Parse(string(content)) |
|
if err != nil { |
|
log.Warn("Failed to parse template %v", err) |
|
} |
|
} |
|
} |
|
} |
|
|
|
return templates |
|
}
|
|
|