diff --git a/aitestory.json b/aitestory.json index 8469a1d..97ab376 100644 --- a/aitestory.json +++ b/aitestory.json @@ -12,7 +12,7 @@ "server": { "host": "0.0.0.0", "port": 8000, - "ui": "./ui/" + "debug": true }, "wiki": { @@ -21,6 +21,11 @@ "password": "" }, + "directories": { + "ui": "./ui/", + "templates": "./view/templates" + }, + "test": { "enabled": true, "username": "AiteBot@AiteStory", diff --git a/debug b/debug deleted file mode 100755 index f54cab3..0000000 Binary files a/debug and /dev/null differ diff --git a/main.go b/main.go index f3fe7ed..f309436 100644 --- a/main.go +++ b/main.go @@ -11,7 +11,7 @@ func main() { router.Mount("/user", &controllers.UserController) router.Mount("/", &controllers.ListController) - router.Static("/ui/", server.Main.Config.Server.UI) + router.Static("/ui/", server.Main.Config.Directories.UI) server.Main.Start() } diff --git a/server/config.go b/server/config.go index 030957b..c8a581f 100644 --- a/server/config.go +++ b/server/config.go @@ -20,11 +20,16 @@ type Config struct { } `json:"db"` Server struct { - Host string `json:"host"` - Port int `json:"port"` - UI string `json:"ui"` + Host string `json:"host"` + Port int `json:"port"` + Debug bool `json:"debug"` } `json:"server"` + Directories struct { + UI string `json:"ui"` + Templates string `json:"templates"` + } `json:"directories"` + Wiki struct { URL string `json:"url"` Username string `json:"username"` diff --git a/view/renderer.go b/view/renderer.go index 15fc60f..cadd975 100644 --- a/view/renderer.go +++ b/view/renderer.go @@ -9,17 +9,19 @@ import ( "os" "path" + "git.aiterp.net/AiteRP/aitestory/server" "git.aiterp.net/gisle/wrouter/response" ) var wd, _ = os.Getwd() -var rootPath = path.Join(wd, "./view/templates/") var cache = make(map[string]*template.Template) var argsCache = make(map[string][]string) // Register registers a template and compiles it for rendering. This should be done // in the beginning since an error will terminate the server func Register(name string, base string, fragments ...string) { + rootPath := server.Main.Config.Directories.Templates + for i, fragment := range fragments { fragments[i] = path.Join(rootPath, fragment+".tmpl") } @@ -38,16 +40,23 @@ func Register(name string, base string, fragments ...string) { // view model. The view model is expected to be the correct model from the viewmodel // package func Render(w http.ResponseWriter, name string, status int, viewModel interface{}) { - tmpl, ok := cache[name] - if !ok { - response.Text(w, 500, "Template not found: "+name) - return - } + var tmpl *template.Template + var err error - tmpl, err := template.New(name).ParseFiles(argsCache[name]...) - if err != nil { - response.Text(w, 500, "Failed to run template "+name+": "+err.Error()) - return + if server.Main.Config.Server.Debug { + tmpl, err = template.New(name).ParseFiles(argsCache[name]...) + if err != nil { + response.Text(w, 500, "Failed to run template "+name+": "+err.Error()) + return + } + } else { + var ok bool + + tmpl, ok = cache[name] + if !ok { + response.Text(w, 500, "Template not found: "+name) + return + } } w.WriteHeader(status)