You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.5 KiB
JavaScript
79 lines
2.5 KiB
JavaScript
function captureFrontMatterAndMarkdown() {
|
|
const formData = new FormData(document.querySelector("form"))
|
|
|
|
var formDataJSON = {};
|
|
formData.forEach((value, key) => {
|
|
if(key.endsWith('[]')){
|
|
let kie = key.slice(0, -2);
|
|
(kie in formDataJSON) || (formDataJSON[kie] = [])
|
|
formDataJSON[kie].push(value);
|
|
} else if (key.endsWith('[j]')) {
|
|
let kie = key.slice(0, -3);
|
|
(kie in formDataJSON) || (formDataJSON[kie] = [])
|
|
let vA = JSON.parse(value)
|
|
if (Array.isArray(vA)) {
|
|
vA.forEach(v => formDataJSON[kie].push(v))
|
|
}
|
|
} else if (['draft', 'iscjklanguage'].includes(key) && value!="true") {
|
|
return
|
|
} else if (key == "relpath"){
|
|
filepath = `${location.pathname.split('/public')[0]}/content/${value}`;
|
|
gitpath = `${location.pathname.split('/public')[0]}`;
|
|
} else if (key == "relpermalink" ){
|
|
publishpath = `${location.pathname.split('/public')[0]}/public${value}index.html`;
|
|
} else if (["protocol", "offline", "ignore"].includes(key)) {
|
|
return
|
|
} else if (key.startsWith("notsand")) {
|
|
if (key.startsWith("notsandkey")) {
|
|
let id = key.split("_")[1]
|
|
let vA = [];
|
|
if (formData.get(`notsandvalue_${id}`).startsWith("[")) {
|
|
vA = JSON.parse(formData.get(`notsandvalue_${id}`))
|
|
}
|
|
if (Array.isArray(vA) && vA.length != 0) {
|
|
(value in formDataJSON) || (formDataJSON[value] = [])
|
|
vA.forEach(v => formDataJSON[value].push(v))
|
|
} else {
|
|
formDataJSON[value] = formData.get(`notsandvalue_${id}`)
|
|
}
|
|
}
|
|
} else {
|
|
formDataJSON[key] = value
|
|
}
|
|
});
|
|
|
|
let abstract = document.getElementById('pageabstract')
|
|
if (abstract) {
|
|
formDataJSON['abstract'] = abstract.value
|
|
}
|
|
|
|
const content = document.getElementById('pagecontent').value
|
|
let publish = formData.get("publish") == "on" ? true : false
|
|
let offline = formData.get("offline") == "on" ? true : false
|
|
let ret = {
|
|
"hugofrontmatter": JSON.stringify(formDataJSON),
|
|
"hugocontent": content,
|
|
"filepath": filepath,
|
|
"gitpath": gitpath,
|
|
"publishpath": publishpath,
|
|
"publish": publish,
|
|
"offline": offline,
|
|
"protocol": document.location.protocol.substr(0,4)
|
|
}
|
|
return ret
|
|
}
|
|
|
|
let sb = document.getElementById('sandpointsButton')
|
|
if (sb) {
|
|
sb.addEventListener(
|
|
"click", (e)=> {
|
|
e.preventDefault()
|
|
pageDict = captureFrontMatterAndMarkdown()
|
|
chrome.runtime.sendMessage(pageDict)
|
|
});
|
|
}
|
|
|
|
chrome.runtime.onMessage.addListener((m, n)=> {
|
|
window.location.replace(m.msg)
|
|
})
|