diff options
Diffstat (limited to 'src')
5 files changed, 60 insertions, 56 deletions
diff --git a/src/main/resources/META-INF/resources/cms2/base.css b/src/main/resources/META-INF/resources/cms2/base.css index 14d4f7a..0cec83c 100644 --- a/src/main/resources/META-INF/resources/cms2/base.css +++ b/src/main/resources/META-INF/resources/cms2/base.css @@ -11,8 +11,11 @@ /* Sanitize.css */ @import "../web_modules/sanitize.css/forms.css"; @import "../web_modules/sanitize.css/typography.css"; -/* */ +/* Content Tools */ +@import "../web_modules/ContentTools/build/content-tools.min.css"; + +/* Fonts */ @import "./fonts/fira.css"; @import "./fonts/firacode.css"; @import "./fonts/iosevka.css"; diff --git a/src/main/resources/META-INF/resources/lib.js b/src/main/resources/META-INF/resources/lib.js index 7a59751..f64586d 100644 --- a/src/main/resources/META-INF/resources/lib.js +++ b/src/main/resources/META-INF/resources/lib.js @@ -4,6 +4,7 @@ import './lazychat/MlkLazychatSubmissionForm.js'; import './lazychat/newLazychatMessage.js'; import './posts/commentBox.js'; import './posts/postList.js'; +import './wiki/wikiPage.js'; import './web_modules/elix/define/Button.js'; import './web_modules/elix/define/ExpandablePanel.js'; diff --git a/src/main/resources/META-INF/resources/package.json b/src/main/resources/META-INF/resources/package.json index e64f3a4..21ce087 100644 --- a/src/main/resources/META-INF/resources/package.json +++ b/src/main/resources/META-INF/resources/package.json @@ -27,8 +27,8 @@ "snowpack": { "plugins": [], "install": [ - "ContentTools", "ContentTools/build/content-tools.min.css", + "ContentTools/build/content-tools.min.js", "ContentTools/build/images/*", "bosonic", "elix/define/*.js", diff --git a/src/main/resources/META-INF/resources/wiki/wikiPage.js b/src/main/resources/META-INF/resources/wiki/wikiPage.js new file mode 100644 index 0000000..9f96732 --- /dev/null +++ b/src/main/resources/META-INF/resources/wiki/wikiPage.js @@ -0,0 +1,53 @@ +import '../web_modules/ContentTools/build/content-tools.min.js'; + +window.addEventListener('DOMContentLoaded', () => { + let editor = ContentTools.EditorApp.get(); + editor.init('*[data-editable]', 'data-name'); + + editor.addEventListener('saved', async function (ev) { + document.getElementById("warning-panel").close(); + + let {regions} = ev.detail(); + if (Object.getOwnPropertyNames(regions).length === 0) { + // Nothing changed. + return; + } + + this.busy(true); + + let requestParams = new URLSearchParams(); + for (let name of Object.getOwnPropertyNames(regions)) { + requestParams.append(name, regions[name]); + } + + let {pageTitle} = document.getElementById('wiki-page').dataset; + + let response = await fetch(`/wiki/${pageTitle}`, { + method: 'POST', + body: requestParams + }); + + if (!response.ok) { + document.getElementById("warning-panel").open(); + document.getElementById("warning-text").innerText = `Failed to save page: ${response.statusText}`; + this.busy(false); + +return; + } + + let status = await response.json(); + if (status.status !== "ok") { + document.getElementById("warning-panel").open(); + document.getElementById("warning-text").innerText = `Failed to save page: ${JSON.stringify(status)}`; + this.busy(false); + +return; + } + + if (status.hasOwnProperty("content")) { + document.getElementById("wiki-content").innerHTML = status.content; + } + + this.busy(false); + }); +}); diff --git a/src/main/resources/templates/benki/wiki/wikiPage.html b/src/main/resources/templates/benki/wiki/wikiPage.html index 63d9950..b456475 100644 --- a/src/main/resources/templates/benki/wiki/wikiPage.html +++ b/src/main/resources/templates/benki/wiki/wikiPage.html @@ -7,7 +7,6 @@ {#nav}{#navbar siteSection="Wiki" /} {#head} -<link rel="stylesheet" type="text/css" href="/web_modules/ContentTools/build/content-tools.min.css" /> <script type="module" src="/lib.js" defer></script> <style type="text/css"> @@ -16,62 +15,10 @@ font-style: italic; } </style> - -<script type="module" defer> - import ContentTools from "/web_modules/ContentTools.js"; - - window.addEventListener('DOMContentLoaded', function() { - let editor = ContentTools.EditorApp.get(); - editor.init('*[data-editable]', 'data-name'); - - editor.addEventListener('saved', async function (ev) { - document.getElementById("warning-panel").close(); - - let regions = ev.detail().regions; - if (Object.getOwnPropertyNames(regions).length === 0) { - // Nothing changed. - return; - } - - this.busy(true); - - let requestParams = new URLSearchParams(); - for (let name of Object.getOwnPropertyNames(regions)) { - requestParams.append(name, regions[name]); - } - - let response = await fetch("/wiki/{page.title}", { - method: 'POST', - body: requestParams - }); - - if (!response.ok) { - document.getElementById("warning-panel").open(); - document.getElementById("warning-text").innerText = "Failed to save page: " + response.statusText; - this.busy(false); - return; - } - - let status = await response.json(); - if (status.status !== "ok") { - document.getElementById("warning-panel").open(); - document.getElementById("warning-text").innerText = "Failed to save page: " + JSON.stringify(status); - this.busy(false); - return; - } - - if (status.hasOwnProperty("content")) { - document.getElementById("wiki-content").innerHTML = status.content; - } - - this.busy(false); - }); - }); -</script> {/head} {#body} -<article id="wiki-page"> +<article id="wiki-page" data-page-title="{page.title}"> <header> <div data-editable data-name="wiki-title"> <h1>{page.title}</h1> |