diff --git a/assets/templates/frontmatter.tmpl b/assets/templates/frontmatter.tmpl
index f00f6af5..e37f9244 100644
--- a/assets/templates/frontmatter.tmpl
+++ b/assets/templates/frontmatter.tmpl
@@ -1,23 +1,19 @@
-{{ define "frontmatter" }}
+{{ define "options" }}
{{ range $key, $value := . }}
{{ if or (eq $value.Type "object") (eq $value.Type "array") }}
{{ else }}
{{ if not (eq $value.Parent.Type "array") }}
-
-
-
+
{{ end }}
@@ -36,7 +32,7 @@
{{ if not (eq $value.Parent.Type "array") }}
{{ end }}
{{ if eq $value.Parent.Type "array" }}
-
+
{{ end }}
{{ end }}
diff --git a/get.go b/get.go
index 36bb381f..44c8f55e 100644
--- a/get.go
+++ b/get.go
@@ -19,6 +19,7 @@ type editor struct {
IsPost bool
Mode string
Content string
+ BaseURL string
FrontMatter interface{}
}
@@ -54,6 +55,7 @@ func (h Hugo) GET(w http.ResponseWriter, r *http.Request, filename string) (int,
data.Mode = strings.TrimPrefix(filepath.Ext(filename), ".")
data.Name = strings.Replace(filename, h.Config.Root, "", 1)
data.IsPost = false
+ data.BaseURL = h.Config.BaseURL
data.Mode = sanitizeMode(data.Mode)
var parserPage parser.Page
diff --git a/hugo.go b/hugo.go
index d6411fbc..d282973c 100644
--- a/hugo.go
+++ b/hugo.go
@@ -7,6 +7,7 @@
package hugo
import (
+ "mime"
"net/http"
"os"
"path/filepath"
@@ -16,6 +17,9 @@ import (
"github.com/mholt/caddy/caddyhttp/httpserver"
)
+// AssetsURL is the base url of the assets
+const AssetsURL = "/_hugointernal"
+
// Hugo contais the next middleware to be run and the configuration
// of the current one.
type Hugo struct {
@@ -29,6 +33,11 @@ type Hugo struct {
func (h Hugo) ServeHTTP(w http.ResponseWriter, r *http.Request) (int, error) {
// Check if the current request if for this plugin
if httpserver.Path(r.URL.Path).Matches(h.Config.BaseURL) {
+ // Check if we are asking for the assets
+ if httpserver.Path(r.URL.Path).Matches(h.Config.BaseURL + AssetsURL) {
+ return h.ServeAssets(w, r)
+ }
+
// If the url matches exactly with /{admin}/settings/, redirect
// to the page of the configuration file
if r.URL.Path == h.Config.BaseURL+"/settings/" {
@@ -114,3 +123,23 @@ func (h Hugo) ShouldHandle(r *http.Request) bool {
return false
}
+
+// ServeAssets provides the needed assets for the front-end
+func (h Hugo) ServeAssets(w http.ResponseWriter, r *http.Request) (int, error) {
+ // gets the filename to be used with Assets function
+ filename := strings.Replace(r.URL.Path, h.Config.BaseURL+AssetsURL, "public", 1)
+ file, err := Asset(filename)
+ if err != nil {
+ return http.StatusNotFound, nil
+ }
+
+ // Get the file extension and its mimetype
+ extension := filepath.Ext(filename)
+ mediatype := mime.TypeByExtension(extension)
+
+ // Write the header with the Content-Type and write the file
+ // content to the buffer
+ w.Header().Set("Content-Type", mediatype)
+ w.Write(file)
+ return 200, nil
+}