|
|
@@ -0,0 +1,86 @@ |
|
|
|
package view |
|
|
|
|
|
|
|
import ( |
|
|
|
"html/template" |
|
|
|
"net/http" |
|
|
|
"log" |
|
|
|
) |
|
|
|
|
|
|
|
var ( |
|
|
|
available = true |
|
|
|
matrix = "zgvhdgh0b3nwawv6" |
|
|
|
) |
|
|
|
|
|
|
|
type Page struct { |
|
|
|
tpl *template.Template |
|
|
|
Title string |
|
|
|
Name string |
|
|
|
Matrix string |
|
|
|
Available bool |
|
|
|
} |
|
|
|
|
|
|
|
var titles = map[string]string { |
|
|
|
"home": "Home", |
|
|
|
"services": "Services", |
|
|
|
"contact": "Contact", |
|
|
|
"web": "Web Development", |
|
|
|
"projects": "Projects", |
|
|
|
"about": "About", |
|
|
|
} |
|
|
|
|
|
|
|
var paths = map[string]string { |
|
|
|
"home": "view/home.tpl", |
|
|
|
"services": "view/services.tpl", |
|
|
|
"contact": "view/contact.tpl", |
|
|
|
"web": "view/web.tpl", |
|
|
|
"projects": "view/projects.tpl", |
|
|
|
"about": "view/about.tpl", |
|
|
|
} |
|
|
|
|
|
|
|
var pages = map[string]Page { |
|
|
|
"home": cache("home"), |
|
|
|
"services": cache("services"), |
|
|
|
"contact": cache("contact"), |
|
|
|
"web": cache("web"), |
|
|
|
"projects": cache("projects"), |
|
|
|
"about": cache("about"), |
|
|
|
} |
|
|
|
|
|
|
|
func parse(path string) *template.Template { |
|
|
|
var paths = []string{"view/master.tpl", path} |
|
|
|
tpl, err := template.ParseFiles(paths...) |
|
|
|
if err != nil { |
|
|
|
log.Print(err, "| Could not parse:", path) |
|
|
|
} |
|
|
|
return tpl |
|
|
|
} |
|
|
|
|
|
|
|
func Create(name string) Page { |
|
|
|
tpl := parse(paths[name]) |
|
|
|
title := titles[name] |
|
|
|
return Page{tpl: tpl, |
|
|
|
Title: title, |
|
|
|
Name: name, |
|
|
|
Matrix: matrix, |
|
|
|
Available: available} |
|
|
|
} |
|
|
|
|
|
|
|
func cache(name string) Page { |
|
|
|
var p = []string{"view/master.tpl", paths[name]} |
|
|
|
tpl := template.Must(template.ParseFiles(p...)) |
|
|
|
return Page{tpl: tpl, |
|
|
|
Title: titles[name], |
|
|
|
Name: name, |
|
|
|
Matrix: matrix, |
|
|
|
Available: available} |
|
|
|
} |
|
|
|
|
|
|
|
func Get(name string) Page { |
|
|
|
return pages[name] |
|
|
|
} |
|
|
|
func (page Page) Render(w http.ResponseWriter) { |
|
|
|
err := page.tpl.Execute(w, page) |
|
|
|
if err != nil { |
|
|
|
log.Print(err) |
|
|
|
} |
|
|
|
} |