Try to fix Hugo
Former-commit-id: 7c530392c2696d200147ea878e6da0321888a52b [formerly 24028571fda891d65ebacba15317ec1f15d348ec] [formerly 9e210d5046e518fe37991711f9412d3390f3fbfe [formerly d20079bc4e59599bc6eb502ee64b4bbe0ce6828a]] Former-commit-id: 39987e08efd3cb9af30043983f896bbea2299012 [formerly c1c6d86b39e23ccb6e9d9ffd10d88b8de7355e2a] Former-commit-id: e45d76537a24cf5dcd978e687ddc5819ab4a4e60
This commit is contained in:
1 parent
b2f6f95916
commit
de9cf466c7
6 files changed
+18
-63
No files matched your search
+8
-8
@@ -10,20 +10,14 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
rice "github.com/GeertJohan/go.rice"
|
||||
"github.com/hacdias/filemanager"
|
||||
"github.com/hacdias/varutils"
|
||||
"github.com/robfig/cron"
|
||||
)
|
||||
|
||||
var (
|
||||
ErrHugoNotFound = errors.New("It seems that tou don't have 'hugo' on your PATH")
|
||||
ErrUnsupportedFileType = errors.New("The type of the provided file isn't supported for this action")
|
||||
)
|
||||
|
||||
func RegisterHugo() {
|
||||
func init() {
|
||||
filemanager.RegisterPlugin("hugo", filemanager.Plugin{
|
||||
JavaScript: rice.MustFindBox("./assets/").MustString("hugo.js"),
|
||||
JavaScript: hugoJavaScript,
|
||||
CommandEvents: []string{"before_publish", "after_publish"},
|
||||
Permissions: []filemanager.Permission{
|
||||
{
|
||||
@@ -35,6 +29,11 @@ func RegisterHugo() {
|
||||
})
|
||||
}
|
||||
|
||||
var (
|
||||
ErrHugoNotFound = errors.New("It seems that tou don't have 'hugo' on your PATH")
|
||||
ErrUnsupportedFileType = errors.New("The type of the provided file isn't supported for this action")
|
||||
)
|
||||
|
||||
// Hugo is a hugo (https://gohugo.io) plugin.
|
||||
type Hugo struct {
|
||||
// Website root
|
||||
@@ -49,6 +48,7 @@ type Hugo struct {
|
||||
CleanPublic bool `name:"Clean Public"`
|
||||
}
|
||||
|
||||
// Find finds the hugo executable in the path.
|
||||
func (h *Hugo) Find() error {
|
||||
var err error
|
||||
if h.Exe, err = exec.LookPath("hugo"); err != nil {
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
'use strict';
|
||||
package plugins
|
||||
|
||||
const hugoJavaScript = `'use strict';
|
||||
|
||||
(function () {
|
||||
if (window.plugins === undefined || window.plugins === null) {
|
||||
@@ -10,8 +12,8 @@
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
let request = new window.XMLHttpRequest()
|
||||
request.open('POST', `${data.store.state.baseURL}/api/hugo${url}`, true)
|
||||
request.setRequestHeader('Authorization', `Bearer ${data.store.state.jwt}`)
|
||||
request.open('POST', data.store.state.baseURL + "/api/hugo" + url, true)
|
||||
request.setRequestHeader('Authorization', "Bearer " + data.store.state.jwt)
|
||||
request.setRequestHeader('Regenerate', 'true')
|
||||
|
||||
request.onload = () => {
|
||||
@@ -32,8 +34,8 @@
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
let request = new window.XMLHttpRequest()
|
||||
request.open('POST', `${data.store.state.baseURL}/api/hugo${url}`, true)
|
||||
request.setRequestHeader('Authorization', `Bearer ${data.store.state.jwt}`)
|
||||
request.open('POST', data.store.state.baseURL + "/api/hugo" + url, true)
|
||||
request.setRequestHeader('Authorization',"Bearer " + data.store.state.jwt)
|
||||
request.setRequestHeader('Archetype', encodeURIComponent(type))
|
||||
|
||||
request.onload = () => {
|
||||
@@ -54,8 +56,8 @@
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
let request = new window.XMLHttpRequest()
|
||||
request.open('POST', `${data.store.state.baseURL}/api/hugo${file}`, true)
|
||||
request.setRequestHeader('Authorization', `Bearer ${data.store.state.jwt}`)
|
||||
request.open('POST', data.store.state.baseURL + "/api/hugo" + file, true)
|
||||
request.setRequestHeader('Authorization', "Bearer " + data.store.state.jwt)
|
||||
request.setRequestHeader('Schedule', date)
|
||||
|
||||
request.onload = () => {
|
||||
@@ -222,4 +224,4 @@
|
||||
}
|
||||
]
|
||||
})
|
||||
})()
|
||||
})()`
|
||||
@@ -1,41 +0,0 @@
|
||||
package plugins
|
||||
|
||||
import (
|
||||
"github.com/GeertJohan/go.rice/embedded"
|
||||
"time"
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
||||
// define files
|
||||
file2 := &embedded.EmbeddedFile{
|
||||
Filename: `hugo.js`,
|
||||
FileModTime: time.Unix(1501319450, 0),
|
||||
Content: string("'use strict';\n\n(function () {\n if (window.plugins === undefined || window.plugins === null) {\n window.plugins = []\n }\n\n let regenerate = function (data, url) {\n url = data.api.removePrefix(url)\n\n return new Promise((resolve, reject) => {\n let request = new window.XMLHttpRequest()\n request.open('POST', `${data.store.state.baseURL}/api/hugo${url}`, true)\n request.setRequestHeader('Authorization', `Bearer ${data.store.state.jwt}`)\n request.setRequestHeader('Regenerate', 'true')\n\n request.onload = () => {\n if (request.status === 200) {\n resolve()\n } else {\n reject(request.responseText)\n }\n }\n\n request.onerror = (error) => reject(error)\n request.send()\n })\n }\n\n let newArchetype = function (data, url, type) {\n url = data.api.removePrefix(url)\n\n return new Promise((resolve, reject) => {\n let request = new window.XMLHttpRequest()\n request.open('POST', `${data.store.state.baseURL}/api/hugo${url}`, true)\n request.setRequestHeader('Authorization', `Bearer ${data.store.state.jwt}`)\n request.setRequestHeader('Archetype', encodeURIComponent(type))\n\n request.onload = () => {\n if (request.status === 200) {\n resolve(request.getResponseHeader('Location'))\n } else {\n reject(request.responseText)\n }\n }\n\n request.onerror = (error) => reject(error)\n request.send()\n })\n }\n\n let schedule = function (data, file, date) {\n file = data.api.removePrefix(file)\n\n return new Promise((resolve, reject) => {\n let request = new window.XMLHttpRequest()\n request.open('POST', `${data.store.state.baseURL}/api/hugo${file}`, true)\n request.setRequestHeader('Authorization', `Bearer ${data.store.state.jwt}`)\n request.setRequestHeader('Schedule', date)\n\n request.onload = () => {\n if (request.status === 200) {\n resolve(request.getResponseHeader('Location'))\n } else {\n reject(request.responseText)\n }\n }\n\n request.onerror = (error) => reject(error)\n request.send()\n })\n }\n\n window.plugins.push({\n name: 'hugo',\n credits: 'With a flavour of <a rel=\"noopener noreferrer\" href=\"https://github.com/hacdias/caddy-hugo\">Hugo</a>.',\n header: {\n visible: [\n {\n if: function (data, route) {\n return (data.store.state.req.kind === 'editor' &&\n !data.store.state.loading &&\n data.store.state.user.allowEdit &\n data.store.state.user.permissions.allowPublish)\n },\n click: function (event, data, route) {\n event.preventDefault()\n document.getElementById('save-button').click()\n // TODO: wait for save to finish?\n data.buttons.loading('publish')\n\n regenerate(data, route.path)\n .then(() => {\n data.buttons.done('publish')\n data.store.commit('showSuccess', 'Post published!')\n data.store.commit('setReload', true)\n })\n .catch((error) => {\n data.buttons.done('publish')\n data.store.commit('showError', error)\n })\n },\n id: 'publish-button',\n icon: 'send',\n name: 'Publish'\n }\n ],\n hidden: [\n {\n if: function (data, route) {\n return (data.store.state.req.kind === 'editor' &&\n !data.store.state.loading &&\n data.store.state.req.metadata !== undefined &&\n data.store.state.req.metadata !== null &&\n data.store.state.user.permissions.allowPublish)\n },\n click: function (event, data, route) {\n document.getElementById('save-button').click()\n data.store.commit('showHover', 'schedule')\n },\n id: 'schedule-button',\n icon: 'alarm',\n name: 'Schedule'\n }\n ]\n },\n sidebar: [\n {\n click: function (event, data, route) {\n data.router.push({ path: '/files/settings' })\n },\n icon: 'settings',\n name: 'Hugo Settings'\n },\n {\n click: function (event, data, route) {\n data.store.commit('showHover', 'new-archetype')\n },\n if: function (data, route) {\n return data.store.state.user.allowNew\n },\n icon: 'merge_type',\n name: 'Hugo New'\n } /* ,\n {\n click: function (event, data, route) {\n console.log('evt')\n },\n icon: 'remove_red_eye',\n name: 'Preview'\n } */\n ],\n prompts: [\n {\n name: 'new-archetype',\n title: 'New file',\n description: 'Create a new post based on an archetype. Your file will beLine truncated
|
||||
}
|
||||
|
||||
// define dirs
|
||||
dir1 := &embedded.EmbeddedDir{
|
||||
Filename: ``,
|
||||
DirModTime: time.Unix(1501318911, 0),
|
||||
ChildFiles: []*embedded.EmbeddedFile{
|
||||
file2, // hugo.js
|
||||
|
||||
},
|
||||
}
|
||||
|
||||
// link ChildDirs
|
||||
dir1.ChildDirs = []*embedded.EmbeddedDir{}
|
||||
|
||||
// register embeddedBox
|
||||
embedded.RegisterEmbeddedBox(`./assets/`, &embedded.EmbeddedBox{
|
||||
Name: `./assets/`,
|
||||
Time: time.Unix(1501318911, 0),
|
||||
Dirs: map[string]*embedded.EmbeddedDir{
|
||||
"": dir1,
|
||||
},
|
||||
Files: map[string]*embedded.EmbeddedFile{
|
||||
"hugo.js": file2,
|
||||
},
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user