diff options
| -rw-r--r-- | app.py | 20 | ||||
| -rw-r--r-- | templates/index.html | 27 |
2 files changed, 41 insertions, 6 deletions
@@ -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> |
