|  | {@eu.mulk.mulkcms2.benki.wiki.WikiPageRevision page} | 
|  |  | 
|  | {#include base.html} | 
|  |  | 
|  | {#title}{page.title} — Benki Wiki{/title} | 
|  |  | 
|  | {#head} | 
|  | <link rel="stylesheet" type="text/css" href="/web_modules/ContentTools/build/content-tools.min.css" /> | 
|  | <script type="module" src="/web_modules/elix/define/ExpandablePanel.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"><div id="warning-text"></div></elix-expandable-panel> | 
|  | </header> | 
|  |  | 
|  | <main> | 
|  | <div data-editable data-name="wiki-content" id="wiki-content"> | 
|  | {#with page}{enrichedContent.raw}{/} | 
|  | </div> | 
|  | </main> | 
|  |  | 
|  | <hr> | 
|  |  | 
|  | <footer> | 
|  | <a href="/wiki/{page.title}/revisions">Page revisions</a> | 
|  | </footer> | 
|  | </article> | 
|  | {/body} | 
|  |  | 
|  | {/include} |