updates
parent
b81ec9ecdf
commit
886f396d8f
|
@ -0,0 +1,7 @@
|
|||
"use strict";
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function(event) {
|
||||
//alert("hugo is working");
|
||||
|
||||
return false;
|
||||
});
|
|
@ -1,4 +1,7 @@
|
|||
{{ define "content" }}
|
||||
<link rel="stylesheet" href="{{ .BaseURL }}/_hugointernal/css/styles.css">
|
||||
<script src="{{ .BaseURL }}/_hugointernal/js/application.js"></script>
|
||||
|
||||
<div class="editor container {{ .Class }}">
|
||||
{{ if eq .Class "complete" }}
|
||||
<h1><textarea id="site-title">{{ .Name }}</textarea></h1>
|
||||
|
@ -11,7 +14,7 @@
|
|||
|
||||
{{ if eq .Class "frontmatter-only" }}
|
||||
<div class="frontmatter blocks">
|
||||
{{ template "frontmatter" .FrontMatter }}
|
||||
{{ template "options" .FrontMatter }}
|
||||
<p class="actions">
|
||||
<button class="add">Add field</button>
|
||||
</p>
|
||||
|
@ -24,7 +27,7 @@
|
|||
{{ else }}
|
||||
<div class="frontmatter">
|
||||
<div class="blocks">
|
||||
{{ template "frontmatter" .FrontMatter }}
|
||||
{{ template "options" .FrontMatter}}
|
||||
</div>
|
||||
|
||||
<p class="actions">
|
||||
|
|
|
@ -1,23 +1,19 @@
|
|||
{{ define "frontmatter" }}
|
||||
{{ define "options" }}
|
||||
{{ range $key, $value := . }}
|
||||
|
||||
{{ if or (eq $value.Type "object") (eq $value.Type "array") }}
|
||||
<fieldset id="{{ $value.Name }}" data-type="{{ $value.Type }}">
|
||||
<h3>{{ SplitCapitalize $value.Title }}</h3>
|
||||
<span class="actions">
|
||||
<button class="add">+</button>
|
||||
<button class="delete">−</button>
|
||||
</span>
|
||||
{{ template "frontmatter" $value.Content }}
|
||||
<button class="add">+</button>
|
||||
<button class="delete" data-delete="{{ $value.Name }}">−</button>
|
||||
{{ template "options" $value.Content }}
|
||||
</fieldset>
|
||||
{{ else }}
|
||||
|
||||
{{ if not (eq $value.Parent.Type "array") }}
|
||||
<div class="block" id="block-{{ $value.Name }}" data-content="{{ $value.Name }}">
|
||||
<label for="{{ $value.Name }}">{{ SplitCapitalize $value.Title }}</label>
|
||||
<span class="actions">
|
||||
<button class="delete">−</button>
|
||||
</span>
|
||||
<button class="delete" data-delete="block-{{ $value.Name }}">−</button>
|
||||
|
||||
{{ end }}
|
||||
|
||||
|
@ -36,7 +32,7 @@
|
|||
{{ if not (eq $value.Parent.Type "array") }}</div>{{ end }}
|
||||
|
||||
{{ if eq $value.Parent.Type "array" }}
|
||||
<span class="actions"><button class="delete">−</button></span></div>
|
||||
<button class="delete" data-delete="{{ $value.Name }}">−</button></div>
|
||||
{{ end }}
|
||||
|
||||
{{ end }}
|
||||
|
|
2
get.go
2
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
|
||||
|
|
29
hugo.go
29
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
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue