summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/controllers/replies_controller.py3
-rw-r--r--static/js/controllers/replies_controller.js19
-rw-r--r--templates/comments/index.jinja6
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>