Frontend
In pages where you want comments, a little work is required.
New comment form
A minimal comment form should look like this:
<form id="newCommentForm" action="/OWN-COMMENTS-API-PREFIX/comments/form" method="POST">
<input type="text" name="author_name" id="commenterName" placeholder="Your name" required="" />
<textarea id="commentBody" name="text" placeholder="Your comment" required=""></textarea>
<button id="commentSubmit">
Add your comment
</button>
</form>
This will allow posting new comments, even without JS enabled.
If you decide to include the JS frontend, this newCommentForm
will be modified in order to
use XHR calls instead of plain old form data over HTTP POST.
Templates
The HTML must include two templates that the backend will use.
Have a look at the example in the repo
Individual comment
This template must be ID’ed as commentTemplate
have elements with the IDs and types listed in
this file
Import
Pack the minified release from npm with your website.
Import OwnComments from comments.js and instantiate an instance using the backend URL as a parameter. Example:
Making the instance available as an attribute of window
will make it possible to switch
to admin mode by opening the JS console and using comments.godMode(adminUserName, adminPassword)
Behaviour
In individual comments, the edit
and admin
will be hidden (and not usable) by default.
When posting a comment, the API gives an update key that will be stored to the browser’s
localStorage
.
When rendering a comment, if the corresponding update key is found in the browser’s localStorage
,
the edit
HTML element will be displayed, with the correct hooks including this update key.
Administration
If you want to be able to moderate the comments from the page itself, make the OwnComments
instance available globally by using window.comments = yourOwnCommentInstance
.
In the JS console of your browser, type comments.godMode(yourAdminUserName, yourAdminPassword)
.
You can now (un)approve, delete, purge or edit comments.
Note
Alternatively, or if you want to roll your own frontend, you could use the REST endpoints with CURL, use a graphical tool like SQLite browser, or something different. Be weird, do it in a fun way!
Comment Thread
This template must have a commentThreadTemplate ID and it must contain 2 HTML elements that the JS script will use.
an arbitrary HTML element whose ID is
commentNumber
: itstextContent
will be replaced by a count, e.g. “0 comments” or “42 comments”a
div id="comments"
where individual comments will be appended as children