diff options
-rw-r--r-- | src/controllers/replies_controller.py | 3 | ||||
-rw-r--r-- | static/js/controllers/replies_controller.js | 19 | ||||
-rw-r--r-- | templates/comments/index.jinja | 6 |
3 files changed, 20 insertions, 8 deletions
diff --git a/src/controllers/replies_controller.py b/src/controllers/replies_controller.py index 6713e26..467c5f5 100644 --- a/src/controllers/replies_controller.py +++ b/src/controllers/replies_controller.py @@ -24,10 +24,11 @@ def new(): @replies_blueprint.post('/api/comments/<int:comment_id>/replies') def create(comment_id): + comment = db.get_or_404(Comment, comment_id) service = CreateReplyService(request.form, comment_id) status_code = service.call() if status_code != 200: abort(status_code) - return render_template('comments/index.jinja', page=comments_query.replies_of(comment_id)) + return render_template('replies/index.jinja', page=comments_query.replies_of(comment_id), comment=comment) diff --git a/static/js/controllers/replies_controller.js b/static/js/controllers/replies_controller.js index e76179d..119062c 100644 --- a/static/js/controllers/replies_controller.js +++ b/static/js/controllers/replies_controller.js @@ -23,10 +23,8 @@ export class RepliesController extends BaseController { listenButtons(class_name, func) { const buttons = document.getElementsByClassName(class_name); - if (buttons) { - for (let button of buttons) - button.addEventListener("click", func); - } + for (let button of buttons) + button.addEventListener("click", func); } showReplyForm(event) { @@ -44,7 +42,7 @@ export class RepliesController extends BaseController { renderReplies(event) { /* The div to contain the comment's replies. From the element id we can get the comment's id. */ - const comment_replies_section = event.target.parentElement.parentElement.parentElement; + const comment_replies_section = event.target.parentElement.parentElement.querySelector(".comment-replies"); const present_replies = comment_replies_section.querySelector(".replies-section"); this.setCommentId(comment_replies_section); @@ -62,6 +60,17 @@ export class RepliesController extends BaseController { }); } + renderSubmitResponse(response_document) { + const comment = document.getElementById(`comment-${this.comment_id}`); + const present_replies = comment.querySelector(".replies-section"); + const new_comment_replies = this.htmlFromResponse(response_document).getElementById(`replies-section-${this.comment_id}`) + + if(present_replies != null) + present_replies.replaceWith(new_comment_replies); + else + comment.appendChild(new_comment_replies); + } + setCommentId(replies_section) { this.comment_id = /\d/.exec(replies_section.id)[0]; } diff --git a/templates/comments/index.jinja b/templates/comments/index.jinja index ebf1e4e..25eb22e 100644 --- a/templates/comments/index.jinja +++ b/templates/comments/index.jinja @@ -20,10 +20,12 @@ </textarea> <section class="replies-thread"> <div class="reply-tag"> - <input class="replies-button" type="button" value="Replies" /> + {% if comment.replies %} + <input class="replies-button" type="button" value="Replies" /> + {% endif %} <input class="new-reply-button" type="button" value="New Reply" /> </div> - <div id="comment-replies-{{ comment.id }}"> + <div id="comment-replies-{{ comment.id }}" class="comment-replies"> </div> </section> </div> |