summaryrefslogtreecommitdiffstats
path: root/utils
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2016-02-08 07:26:10 -0500
committerChristopher Speller <crspeller@gmail.com>2016-03-14 00:38:25 -0400
commitd7cdcf082fab6c0cb7c2fe4bed821bd1a8000e69 (patch)
tree49a0de30cdc2ac461e72a242ae9a5593fcd6c8b9 /utils
parent08f0800adef926e8b69ebea70e4995b89f5c3f3c (diff)
downloadchat-d7cdcf082fab6c0cb7c2fe4bed821bd1a8000e69.tar.gz
chat-d7cdcf082fab6c0cb7c2fe4bed821bd1a8000e69.tar.bz2
chat-d7cdcf082fab6c0cb7c2fe4bed821bd1a8000e69.zip
Convering client to react-router.
Diffstat (limited to 'utils')
-rw-r--r--utils/html.go97
-rw-r--r--utils/license.go2
2 files changed, 98 insertions, 1 deletions
diff --git a/utils/html.go b/utils/html.go
new file mode 100644
index 000000000..4203160d5
--- /dev/null
+++ b/utils/html.go
@@ -0,0 +1,97 @@
+// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package utils
+
+import (
+ "bytes"
+ "html/template"
+ "net/http"
+
+ l4g "github.com/alecthomas/log4go"
+ "gopkg.in/fsnotify.v1"
+)
+
+// Global storage for templates
+var htmlTemplates *template.Template
+
+type HTMLTemplate struct {
+ TemplateName string
+ Props map[string]string
+ Html map[string]template.HTML
+ Locale string
+}
+
+func InitHTML() {
+ templatesDir := FindDir("templates")
+ l4g.Debug(T("api.api.init.parsing_templates.debug"), templatesDir)
+ var err error
+ if htmlTemplates, err = template.ParseGlob(templatesDir + "*.html"); err != nil {
+ l4g.Error(T("api.api.init.parsing_templates.error"), err)
+ }
+
+ // Watch the templates folder for changes.
+ watcher, err := fsnotify.NewWatcher()
+ if err != nil {
+ l4g.Error(T("web.create_dir.error"), err)
+ }
+
+ go func() {
+ for {
+ select {
+ case event := <-watcher.Events:
+ if event.Op&fsnotify.Write == fsnotify.Write {
+ l4g.Info(T("web.reparse_templates.info"), event.Name)
+ if htmlTemplates, err = template.ParseGlob(templatesDir + "*.html"); err != nil {
+ l4g.Error(T("web.parsing_templates.error"), err)
+ }
+ }
+ case err := <-watcher.Errors:
+ l4g.Error(T("web.dir_fail.error"), err)
+ }
+ }
+ }()
+
+ err = watcher.Add(templatesDir)
+ if err != nil {
+ l4g.Error(T("web.watcher_fail.error"), err)
+ }
+}
+
+func NewHTMLTemplate(templateName string, locale string) *HTMLTemplate {
+ return &HTMLTemplate{
+ TemplateName: templateName,
+ Props: make(map[string]string),
+ Html: make(map[string]template.HTML),
+ Locale: locale,
+ }
+}
+
+func (t *HTMLTemplate) addDefaultProps() {
+ T := GetUserTranslations(t.Locale)
+ t.Props["Footer"] = T("api.templates.email_footer")
+ t.Html["EmailInfo"] = template.HTML(T("api.templates.email_info",
+ map[string]interface{}{"SupportEmail": Cfg.SupportSettings.SupportEmail, "SiteName": Cfg.TeamSettings.SiteName}))
+}
+
+func (t *HTMLTemplate) Render() string {
+ t.addDefaultProps()
+
+ var text bytes.Buffer
+
+ if err := htmlTemplates.ExecuteTemplate(&text, t.TemplateName, t); err != nil {
+ l4g.Error(T("api.api.render.error"), t.TemplateName, err)
+ }
+
+ return text.String()
+}
+
+func (t *HTMLTemplate) RenderToWriter(w http.ResponseWriter) error {
+ t.addDefaultProps()
+
+ if err := htmlTemplates.ExecuteTemplate(w, t.TemplateName, t); err != nil {
+ l4g.Error(T("api.api.render.error"), t.TemplateName, err)
+ return err
+ }
+ return nil
+}
diff --git a/utils/license.go b/utils/license.go
index 5c975aec2..b1f15ad92 100644
--- a/utils/license.go
+++ b/utils/license.go
@@ -20,7 +20,7 @@ import (
var IsLicensed bool = false
var License *model.License = &model.License{}
-var ClientLicense map[string]string = make(map[string]string)
+var ClientLicense map[string]string = map[string]string{"IsLicensed": "false"}
var publicKey []byte = []byte(`-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyZmShlU8Z8HdG0IWSZ8r