blob: 63d99501a0b060f0fd59878d75e1b3b9dcb098cb [file] [log] [blame]
{#include base.html}
{#title}{page.title} — Benki Wiki{/title}
{#siteSection}Wiki{/siteSection}
{#wikiClass}this-page{/wikiClass}
{#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">
#warning-panel {
background-color: lightcoral;
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">
<header>
<div data-editable data-name="wiki-title">
<h1>{page.title}</h1>
</div>
<elix-expandable-panel id="warning-panel" role="alert"><div id="warning-text"></div></elix-expandable-panel>
</header>
<section id="wiki-page-content">
<div data-editable data-name="wiki-content" id="wiki-content">
{page.enrichedContent.raw}
</div>
</section>
<hr>
<footer>
<a href="/wiki/{page.title}/revisions">Page revisions</a>
</footer>
</article>
{/body}
{/include}