-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update dependencies, start work on editor, add hidden admin page
- Loading branch information
octospacc
committed
Oct 21, 2024
1 parent
33a9cdb
commit 700d4c8
Showing
13 changed files
with
314 additions
and
91 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
#!/bin/sh | ||
. "$(dirname "$(realpath "$0")")/Lib/Globals.sh" | ||
cd "${swd}/.." | ||
|
||
alias asroot="" | ||
if [ "$(whoami)" != root ] && [ "$(uname -o)" != Android ] | ||
then alias asroot=sudo | ||
fi | ||
|
||
hugoexternal=true | ||
if [ -n "$(which apt)" ] | ||
then | ||
asroot apt update | ||
asroot apt install -y python3 nodejs findutils git wget tar gzip p7zip-full #zip | ||
if [ "$(uname -o)" != Android ] | ||
then asroot apt install -y npm | ||
else | ||
asroot apt install -y hugo | ||
hugoexternal=false | ||
fi | ||
elif [ -n "$(which apk)" ] | ||
then | ||
asroot apk update | ||
asroot apk add hugo python3 py3-pip nodejs npm findutils git wget tar gzip 7zip #zip | ||
hugoexternal=false | ||
fi | ||
|
||
if [ "${hugoexternal}" = true ] | ||
then | ||
exehome="$([ -n "${XDG_DATA_HOME}" ] \ | ||
&& echo "${XDG_DATA_HOME}" \ | ||
|| echo "${HOME}/.local" \ | ||
)/bin" | ||
exedepot="${exehome}/hugo.tmp" | ||
exearchive="${exedepot}/hugo_extended.tar.gz" | ||
|
||
sysarch="$(uname -m)" | ||
if [ "${sysarch}" = x86_64 ] | ||
then sysarch=amd64 | ||
elif [ "${sysarch}" = aarch64 ] | ||
then sysarch=arm64 | ||
fi | ||
|
||
mkdir -p "${exedepot}" | ||
wget -O "${exearchive}" "https://github.com/gohugoio/hugo/releases/download/v${HugoVersion}/hugo_extended_${HugoVersion}_linux-${sysarch}.tar.gz" | ||
tar xvf "${exearchive}" --directory "${exedepot}" | ||
mv "${exedepot}/hugo" "${exehome}/hugo" | ||
chmod +x "${exehome}/hugo" | ||
rm -rf "${exedepot}" | ||
|
||
if [ -z "$(which hugo)" ] | ||
then | ||
BinaryPath='PATH="${PATH}:'"${BinaryHome}"'"' | ||
eval "${BinaryPath}" | ||
echo >> ~/.profile | ||
echo "${BinaryPath}" >> ~/.profile | ||
fi | ||
fi | ||
|
||
cd ./Scripts | ||
PIP_BREAK_SYSTEM_PACKAGES=1 "${Python3}" -m pip install -U -r ./requirements.txt | ||
#npm install | ||
|
||
cd ./Lib | ||
wget -O ./translate-shell.bash https://git.io/trans | ||
|
||
cd "${owd}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
#!/bin/sh | ||
. "$(dirname "$(realpath "$0")")/Lib/Globals.sh" | ||
cd "${swd}/.." | ||
|
||
cd ./static/lib | ||
wget --continue "https://spaccinc.gitlab.io/SpaccDotWeb/SpaccDotWeb.Alt.min.js" | ||
wget --continue "https://uicdn.toast.com/editor/latest/toastui-editor-all.min.js" | ||
wget --continue "https://uicdn.toast.com/editor/latest/toastui-editor.min.css" | ||
|
||
cd "${owd}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
+++ | ||
Hidden = true | ||
+++ | ||
<form> | ||
<p><label>Git Instance: <input type="url" name="instance"/></label></p> | ||
<p><label>Repository: <input type="text" name="repo"/></label></p> | ||
<p><label>Branch: <input type="text" name="branch"/></label></p> | ||
<p><label>Access Token: <input type="password" name="token"/></label></p> | ||
</form> | ||
<style> form > p > label > input { float: right; } </style> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,21 +1,23 @@ | ||
{{- $index := slice -}} | ||
{{- $pages := .Site.Pages -}} | ||
{{- range $pages -}} | ||
{{- $section := .Site.GetPage "section" .Section -}} | ||
{{- $page := (dict | ||
"title" (.Title | emojify | safeJS) | ||
"section" ($section.Title | emojify | safeJS) | ||
"summary" (.Summary | safeJS) | ||
"content" (.Plain | safeJS) | ||
"permalink" .RelPermalink | ||
"externalUrl" .Params.externalUrl | ||
"type" .Type | ||
) -}} | ||
{{- if .Date -}} | ||
{{- $page = (merge $page (dict | ||
"date" (.Date | time.Format (.Site.Language.Params.dateFormat | default ":date_long")) | ||
)) -}} | ||
{{- if not .Params.Hidden -}} | ||
{{- $section := .Site.GetPage "section" .Section -}} | ||
{{- $page := (dict | ||
"title" (.Title | emojify | safeJS) | ||
"section" ($section.Title | emojify | safeJS) | ||
"summary" (.Summary | safeJS) | ||
"content" (.Plain | safeJS) | ||
"permalink" .RelPermalink | ||
"externalUrl" .Params.externalUrl | ||
"type" .Type | ||
) -}} | ||
{{- if .Date -}} | ||
{{- $page = (merge $page (dict | ||
"date" (.Date | time.Format (.Site.Language.Params.dateFormat | default ":date_long")) | ||
)) -}} | ||
{{- end -}} | ||
{{- $index = $index | append $page -}} | ||
{{- end -}} | ||
{{- $index = $index | append $page -}} | ||
{{- end -}} | ||
window.SiteSearchIndex={{- $index | jsonify -}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,177 @@ | ||
(function(){ | ||
|
||
const editorId = '--markdown-editor'; | ||
const resetFileMessage = 'Reset File to Latest from Git'; | ||
const gitPushMessage = 'Commit and Push changes to Git'; | ||
|
||
// TODO configure this and access token via HTML form | ||
const G = { | ||
instance: 'https://gitlab.com', | ||
repo: 'octtspacc/sitoctt', | ||
branch: 'sitoctt-next', | ||
}; | ||
|
||
const editorData = { | ||
currentFilePath: `content/${document.documentElement.lang}/${document.documentElement.dataset.sourceFilePath}`, | ||
}; | ||
let editorHandler; | ||
|
||
const gitReadFile = async (filePath) => (await (await fetch(`${G.instance}/api/v4/projects/${encodeURIComponent(G.repo)}/repository/files/${encodeURIComponent(filePath)}/raw?ref=${G.branch}`)).text()); | ||
|
||
const gitPushFile = (filePath, fileContent) => null; // TODO | ||
|
||
const readPageFile = async (filePath) => { // TODO read cached file in localStorage, but not when a newer one is on git | ||
//if (!filePath) { | ||
// return ''; | ||
//} | ||
return await gitReadFile(filePath); | ||
}; | ||
|
||
const cachePageFile = async (filePath, fileContent) => null; // TODO write to localStorage, trigger on any text input | ||
|
||
const displayCurrentFile = () => document.querySelector('#--editor-buttons').querySelector('span').innerHTML = `(<code>${editorData.currentFilePath}</code>)`; | ||
|
||
editorData.close = () => { | ||
const editorEl = document.querySelector(`#${editorId}`); | ||
editorEl.hidden = true; | ||
editorEl.style.display = 'none'; | ||
document.body.style.overflow = null; | ||
}; | ||
|
||
editorData.setup = async (/*filePath*/) => { | ||
if (editorHandler) { | ||
return; | ||
} | ||
|
||
document.head.appendChild(Object.assign(document.createElement('style'), { innerHTML: ` | ||
#${editorId} { | ||
position: fixed; | ||
top: 0; | ||
bottom: 0; | ||
left: 0; | ||
right: 0; | ||
width: 100%; | ||
z-index: 9; | ||
background-color: rgba(255, 255, 255, 0.5); | ||
} | ||
#${editorId} .toastui-editor-defaultUI { | ||
width: 95%; | ||
height: 95%; | ||
top: 2.5%; | ||
bottom: 2.5%; | ||
left: 2.5%; | ||
right: 2.5%; | ||
background-color: ghostwhite; | ||
} | ||
#${editorId} .toastui-editor-main-container, | ||
#${editorId} .ProseMirror { | ||
height: 100%; | ||
font-size: 16px; | ||
} | ||
/* quick fix for showing all buttons on mobile */ | ||
#${editorId} .toastui-editor-dropdown-toolbar { | ||
display: table; | ||
} | ||
#${editorId} .toastui-editor-toolbar-divider { | ||
display: none; | ||
} | ||
` })); | ||
|
||
document.head.appendChild(Object.assign(document.createElement('link'), { | ||
rel: "stylesheet", href: "/lib/toastui-editor.min.css", | ||
})); | ||
|
||
document.body.appendChild(Object.assign(document.createElement('div'), { | ||
id: editorId, hidden: true, style: "display: none;", | ||
})); | ||
|
||
await SpaccDotWeb.requireScript('/lib/toastui-editor-all.min.js'); | ||
|
||
editorHandler = new toastui.Editor({ | ||
el: document.querySelector(`#${editorId}`), | ||
height: '100%', | ||
previewStyle: 'tab', | ||
hideModeSwitch: true, | ||
usageStatistics: false, | ||
initialValue: (await readPageFile(editorData.currentFilePath)), | ||
}); | ||
|
||
editorHandler.addCommand('markdown', 'closeEditor', editorData.close); | ||
|
||
editorHandler.addCommand('markdown', 'resetFile', (() => { // TODO re-pull page source from git | ||
if (confirm(`${resetFileMessage}?`)) { | ||
gitReadFile(editorData.currentFilePath); | ||
} | ||
})); | ||
|
||
editorHandler.addCommand('markdown', 'gitPush', (() => { | ||
if (confirm(`${gitPushMessage}?`)) { | ||
gitPushFile(editorData.currentFilePath); | ||
} | ||
})); | ||
|
||
editorHandler.insertToolbarItem({ groupIndex: 6 }, { | ||
tooltip: gitPushMessage, | ||
command: 'gitPush', | ||
text: '@', | ||
className: 'toastui-editor-toolbar-icons', | ||
style: { backgroundImage: 'none' }, | ||
}); | ||
|
||
/* editorHandler.insertToolbarItem({ groupIndex: 6 }, { // TODO | ||
tooltip: resetFileMessage, | ||
command: 'resetFile', | ||
text: '#', | ||
className: 'toastui-editor-toolbar-icons', | ||
style: { backgroundImage: 'none' }, | ||
}); */ | ||
|
||
editorHandler.insertToolbarItem({ groupIndex: 6 }, { | ||
tooltip: "Close the Editor", | ||
command: 'closeEditor', | ||
text: 'X', | ||
className: 'toastui-editor-toolbar-icons', | ||
style: { backgroundImage: 'none' }, | ||
}); | ||
|
||
editorData.setupButtons(); | ||
|
||
editorData.setup = Void; | ||
}; | ||
|
||
editorData.setupButtons = () => { | ||
const buttonsEl = document.querySelector('#--editor-buttons'); | ||
displayCurrentFile(); | ||
buttonsEl.querySelector('[name="this"]').onclick = editorData.open; | ||
buttonsEl.querySelector('[name="custom"]').onclick = (async () => { | ||
const filePath = prompt(`Path of custom File?`); | ||
if (filePath) { | ||
await editorData.setup(/*filePath*/); | ||
const fileContent = await readPageFile(editorData.currentFilePath = filePath); | ||
displayCurrentFile(); | ||
editorHandler.setMarkdown(fileContent); | ||
await editorData.open(); | ||
} | ||
}); | ||
buttonsEl.style.display = null; | ||
delete editorData.setupButtons; | ||
}; | ||
|
||
editorData.open = async () => { | ||
await editorData.setup(/*filePath*/); | ||
const editorEl = document.querySelector(`#${editorId}`); | ||
editorEl.style.display = 'block'; | ||
editorEl.hidden = false; | ||
document.body.style.overflow = 'hidden'; | ||
}; | ||
|
||
window.sitoctt.markdownEditor = editorData; | ||
|
||
if (false) { // TODO show edit page button and presetup editor if localStorage contains token | ||
window.addEventListener('load', editorData.setup); | ||
} | ||
|
||
})(); |
Oops, something went wrong.