blob: 0e35d44cb5c2acc9fc9ae2e25ed2bcd371fd80f9 [file] [log] [blame]
import '../web_modules/ContentTools/build/content-tools.min.js';
window.addEventListener('DOMContentLoaded', () => {
let editor = ContentTools.EditorApp.get();
editor.init('*[data-editable]', 'data-name');
let {pageTitle} = document.getElementById('wiki-page').dataset;
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 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;
}
if (status.hasOwnProperty("title")) {
pageTitle = status.title;
}
this.busy(false);
});
});