summaryrefslogtreecommitdiff
path: root/src/main/resources/META-INF
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <code@mail.matthias.benkard.de>2022-11-01 10:38:20 +0100
committerMatthias Andreas Benkard <code@mail.matthias.benkard.de>2022-11-01 10:38:20 +0100
commit2137b35a465ae9f830519c5a8bd49cb388fd552d (patch)
tree6c546094da1797adb52dfe60fe2af08a3d384d24 /src/main/resources/META-INF
parente59db840207551430ac9f12be6ee4aa2a594fe66 (diff)
Wiki: Rebundle Content Tools.
Content Tools was previously wrapped into an ECMAScript module through the use of Snowpack. This mechanism broke some time ago, making the wiki uneditable. Content Tools is now imported as is, which simplifies its packaging and restores it to a working state. Change-Id: I49d2d625bc955a260a63c47bcaceb23b61366123
Diffstat (limited to 'src/main/resources/META-INF')
-rw-r--r--src/main/resources/META-INF/resources/cms2/base.css5
-rw-r--r--src/main/resources/META-INF/resources/lib.js1
-rw-r--r--src/main/resources/META-INF/resources/package.json2
-rw-r--r--src/main/resources/META-INF/resources/wiki/wikiPage.js53
4 files changed, 59 insertions, 2 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);
+ });
+});