A webmail client. Forked from https://git.sr.ht/~migadu/alps
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 

47 líneas
948 B

  1. package koushin
  2. import (
  3. "html/template"
  4. "io"
  5. "net/url"
  6. "github.com/labstack/echo/v4"
  7. )
  8. type tmpl struct {
  9. // TODO: add support for multiple themes
  10. t *template.Template
  11. }
  12. func (t *tmpl) Render(w io.Writer, name string, data interface{}, c echo.Context) error {
  13. return t.t.ExecuteTemplate(w, name, data)
  14. }
  15. func loadTemplates(logger echo.Logger, themeName string) (*tmpl, error) {
  16. base, err := template.New("").Funcs(template.FuncMap{
  17. "tuple": func(values ...interface{}) []interface{} {
  18. return values
  19. },
  20. "pathescape": func(s string) string {
  21. return url.PathEscape(s)
  22. },
  23. }).ParseGlob("public/*.html")
  24. if err != nil {
  25. return nil, err
  26. }
  27. theme, err := base.Clone()
  28. if err != nil {
  29. return nil, err
  30. }
  31. if themeName != "" {
  32. logger.Printf("Loading theme \"%s\"", themeName)
  33. if _, err := theme.ParseGlob("public/themes/" + themeName + "/*.html"); err != nil {
  34. return nil, err
  35. }
  36. }
  37. return &tmpl{theme}, err
  38. }