diff --git a/amanuensis/resources/editor.js b/amanuensis/resources/editor.js
index a8c77fa..87d4cc9 100644
--- a/amanuensis/resources/editor.js
+++ b/amanuensis/resources/editor.js
@@ -12,8 +12,9 @@ function ifNoFurtherChanges(callback, timeout=2000) {
}, timeout);
}
-// Initialize editor
+// Read data out of params and initialize editor
window.onload = function() {
+ // Kill noscript message first
document.getElementById("preview").innerHTML = "
";
if (params.article != null) {
@@ -24,7 +25,7 @@ window.onload = function() {
onContentChange(0);
};
-function getArticleObj() {
+function buildArticleObject() {
var title = document.getElementById("editor-title").value;
var contents = document.getElementById("editor-content").value;
return {
@@ -45,19 +46,21 @@ function update(article) {
req.responseType = "json";
req.onreadystatechange = function () {
if (req.readyState == 4 && req.status == 200) {
- // params.article = article;
+ params.article = req.response.article;
+
var title = document.getElementById("editor-title").value;
- var previewHtml = "" + title + "
\n" + req.response.rendered
+ var previewHtml = "" + title + "
\n" + req.response.info.rendered;
document.getElementById("preview").innerHTML = previewHtml;
- document.getElementById("preview-control").innerHTML = req.response.word_count;
+ document.getElementById("preview-control").innerHTML = req.response.info.word_count;
}
};
- req.send(JSON.stringify(article));
+ var payload = { article: article };
+ req.send(JSON.stringify(payload));
}
function onContentChange(timeout=2000) {
ifNoFurtherChanges(() => {
- var article = getArticleObj();
+ var article = buildArticleObject();
update(article);
}, timeout);
}
diff --git a/amanuensis/server/lexicon.py b/amanuensis/server/lexicon.py
index f902071..ec5710d 100644
--- a/amanuensis/server/lexicon.py
+++ b/amanuensis/server/lexicon.py
@@ -1,4 +1,5 @@
import json
+import uuid
from flask import (
Blueprint, render_template, url_for, redirect, g, flash, request, Markup)
@@ -210,9 +211,10 @@ def get_bp():
@lexicon_param
@player_required
def editor_new(name):
- import uuid
new_aid = uuid.uuid4().hex
+ # TODO harden this
cid = request.args.get("cid")
+ character = g.lexicon.character.get(cid)
article = {
"version": "0",
"aid": new_aid,
@@ -224,7 +226,7 @@ def get_bp():
"ready": False,
"approved": False
},
- "contents": ""
+ "contents": f"\n\n{character.signature}",
}
filename = f"{cid}.{new_aid}"
with g.lexicon.ctx.draft.new(filename) as j:
@@ -235,7 +237,7 @@ def get_bp():
@lexicon_param
@player_required
def editor_update(name):
- article = request.json
+ article = request.json['article']
# TODO verification
parsed_draft = parse_raw_markdown(article['contents'])
rendered_html = parsed_draft.render(PreviewHtmlRenderer())
@@ -247,8 +249,11 @@ def get_bp():
# TODO return more info
return {
- 'rendered': rendered_html,
- 'word_count': features.word_count,
+ 'article': article,
+ 'info': {
+ 'rendered': rendered_html,
+ 'word_count': features.word_count,
+ }
}
return bp