summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app.py20
-rw-r--r--templates/index.html27
2 files changed, 41 insertions, 6 deletions
diff --git a/app.py b/app.py
index 502f3c2..54af5ba 100644
--- a/app.py
+++ b/app.py
@@ -2,6 +2,7 @@
import markdown
import hashlib
import os
+import re
from config import config
from flask import (
Flask,
@@ -158,9 +159,11 @@ class dbProxy(object):
ret_joke['mine'] = joke['user'] == user
# convert md->html if needed
if joke['format'] == 'markdown':
- ret_joke['text'] = Markup(markdown.markdown(joke['text'], extensions=['markdown.extensions.nl2br'], output_format="html5", safe_mode="remove")) # TODO safe_mode deprecated
- if joke['format'] == 'html':
+ ret_joke['html'] = Markup(markdown.markdown(joke['text'], extensions=['markdown.extensions.nl2br'], output_format="html5", safe_mode="remove")) # TODO safe_mode deprecated
ret_joke['text'] = joke['text']
+ if joke['format'] == 'html':
+ ret_joke['html'] = joke['text']
+ ret_joke['text'] = re.sub('<[^<]+?>', '', joke['text'])
ret_joke['reports'] = self.c.execute(votewhere + "joke=? AND type='report'", (joke['id'],)).fetchone()['COUNT(*)']
# actual scoring
@@ -225,6 +228,10 @@ class dbProxy(object):
self.c.execute("INSERT INTO " + self.prefix + "_jokes(text, format, user) VALUES(?, 'markdown', ?)", (text, user))
self.conn.commit()
+ def updateJoke(self, text, objectId):
+ self.c.execute("UPDATE " + self.prefix + "_jokes SET text=? WHERE id=?", (text, objectId))
+ self.conn.commit()
+
def removeJoke(self, objectId, user):
self.c.execute("INSERT INTO " + self.prefix + "_votes(joke, user, type) VALUES(?, ?, 'delete')", (objectId, user))
self.conn.commit()
@@ -298,6 +305,15 @@ def submit():
db().addJoke(text, userid())
return redirect('/page/' + page)
+@app.route('/edit', methods=['POST'])
+def edit():
+ text = request.form['text']
+ page = request.form['redirpage']
+ objectId = int(request.form['id'])
+ if objectId in db().getUserJokes(userid()):
+ db().updateJoke(text, objectId)
+ return redirect('/page/' + page)
+
@app.route('/upvote', methods=['POST'])
def upvote():
objectId = int(request.form['id'])
diff --git a/templates/index.html b/templates/index.html
index 1394f53..e49514a 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -76,17 +76,31 @@
<span class="right red-text">{{ joke.reports }}</span>
</button>
</form>
+ </div>
+ <div class="joke flow-text col s8 m10 {% if joke.reports>0 %}grey-text{% endif %}" style="line-height: 1.5">
+ {% if joke.mine %}
+ <form action="/edit" method="post">
+ <input type="hidden" name="id" value="{{ joke.id }}">
+ <input type="hidden" name="redirpage" value="{{ currentpage }}">
+ <button type="button" class="btn-floating right blue noteditor" onclick="openEditor(this)"><i class="material-icons">edit</i></button>
+ <div class="input-field hide editor">
+ <label for="text">Spruch bearbeiten</label>
+ <textarea class="materialize-textarea" name="text">{{ joke.text }}</textarea>
+ <button type="submit" class="btn-floating right blue"><i class="material-icons">done</i></button>
+ </div>
+ </form>
+ {% endif %}
+ <div class="textfield noteditor">
+ {{ joke.html|safe }}
+ </div>
{% if joke.mine %}
<form action="/delete" method="post">
<input type="hidden" name="id" value="{{ joke.id }}">
<input type="hidden" name="redirpage" value="{{ currentpage }}">
- <button class="deletebtn btn-flat" type="submit"><i class="material-icons">delete</i></button>
+ <button class="btn-floating right red noteditor" type="submit"><i class="material-icons">delete</i></button>
</form>
{% endif %}
</div>
- <div class="flow-text col s8 m10 {% if joke.reports>0 %}grey-text{% endif %}" style="line-height: 1.5">
- {{ joke.text|safe }}
- </div>
</li>
{% endfor %}
</ul>
@@ -119,6 +133,11 @@
$(document).ready(function() {
$('#main').smoothState({prefetch: true});
});
+ function openEditor(me) {
+ var joke = $(me).closest('.joke');
+ $('.editor', joke).removeClass('hide');
+ $('.noteditor', joke).addClass('hide');
+ }
</script>
</body>
</html>