diff options
Diffstat (limited to 'static/js')
-rw-r--r-- | static/js/controllers/base_controller.js | 3 | ||||
-rw-r--r-- | static/js/controllers/comments_controller.js | 8 | ||||
-rw-r--r-- | static/js/paginator.js | 15 |
3 files changed, 23 insertions, 3 deletions
diff --git a/static/js/controllers/base_controller.js b/static/js/controllers/base_controller.js index 6caa9dd..2ef359c 100644 --- a/static/js/controllers/base_controller.js +++ b/static/js/controllers/base_controller.js @@ -9,9 +9,8 @@ export class BaseController { this.parser = new DOMParser(); } - async submit(event, route) { + async submit(event, route, form = new FormData(event.target)) { event.preventDefault(); - const form = new FormData(event.target); try { const response = await fetch(route, { method: "POST", body: form }); diff --git a/static/js/controllers/comments_controller.js b/static/js/controllers/comments_controller.js index a21bd05..683f5ca 100644 --- a/static/js/controllers/comments_controller.js +++ b/static/js/controllers/comments_controller.js @@ -1,10 +1,12 @@ import { BaseController } from "./base_controller.js"; +import { Paginator } from "../paginator.js"; export class CommentsController extends BaseController { constructor(replies_controller) { super(); this.replies_controller = replies_controller; this.comments_node = document.getElementById("comments-thread"); + this.paginator = new Paginator(this.comments_server_host, "/api/comments", this.post); this.renderForm(); this.renderComments(); } @@ -28,6 +30,7 @@ export class CommentsController extends BaseController { if(comments != null) { this.comments_node.appendChild(comments); this.replies_controller.init(); + this.paginator.populatePageAnchors(); } }); } @@ -39,7 +42,10 @@ export class CommentsController extends BaseController { } async submit(event) { - super.submit(event, `${this.comments_server_host}/api/comments?path=${this.post}`); + var form = new FormData(event.target); + form.append("domain", `${window.location.protocol}//${window.location.host}`); + + super.submit(event, `${this.comments_server_host}/api/comments?path=${this.post}`, form); } } diff --git a/static/js/paginator.js b/static/js/paginator.js new file mode 100644 index 0000000..9a7ed65 --- /dev/null +++ b/static/js/paginator.js @@ -0,0 +1,15 @@ +export class Paginator { + constructor(host, context, path) { + this.endpoint = `${host}${context}?path=${path}`; + } + + populatePageAnchors() { + const pagination_widget = document.querySelector(".pagination"); + var anchors = pagination_widget.querySelectorAll('a'); + + for(let anchor of anchors) { + var page = /\d/.exec(anchor.id)[0]; + anchor.setAttribute("href", `${this.endpoint}&page=${page}`); + } + } +}
\ No newline at end of file |