allow mods to delete topics
This commit is contained in:
parent
5e7dec08b9
commit
025b3063a6
@ -194,4 +194,20 @@ app:post("topic_edit", "/:slug/edit", function(self)
|
||||
return {redirect_to = self:url_for("topic", {slug = self.params.slug})}
|
||||
end)
|
||||
|
||||
app:post("topic_delete", "/:slug/delete", function(self)
|
||||
local user = util.get_logged_in_user(self)
|
||||
if not user then
|
||||
return {redirect_to = self:url_for("topic", {slug = self.params.slug})}
|
||||
end
|
||||
|
||||
if not user:is_mod() then
|
||||
return {redirect_to = self:url_for("topic", {slug = self.params.slug})}
|
||||
end
|
||||
|
||||
local topic = Topics:find({slug = self.params.slug})
|
||||
topic:delete()
|
||||
util.inject_infobox(self, "Topic deleted.")
|
||||
return {redirect_to = self:url_for("all_topics")}
|
||||
end)
|
||||
|
||||
return app
|
||||
|
16
js/topic.js
Normal file
16
js/topic.js
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
const deleteDialog = document.getElementById("delete-dialog");
|
||||
const deleteDialogOpenButton = document.getElementById("topic-delete-dialog-open");
|
||||
deleteDialogOpenButton.addEventListener("click", (e) => {
|
||||
deleteDialog.showModal();
|
||||
});
|
||||
const deleteDialogCloseButton = document.getElementById("topic-delete-dialog-close");
|
||||
deleteDialogCloseButton.addEventListener("click", (e) => {
|
||||
deleteDialog.close();
|
||||
})
|
||||
deleteDialog.addEventListener("click", (e) => {
|
||||
if (e.target === deleteDialog) {
|
||||
deleteDialog.close();
|
||||
}
|
||||
})
|
||||
}
|
@ -21,6 +21,7 @@
|
||||
<input type="hidden" name="is_locked" value="<%= not is_locked %>">
|
||||
<input class="warn" type="submit" id="lock" value="<%= is_locked and "Unlock topic" or "Lock topic" %>">
|
||||
</form>
|
||||
<button type="button" class="critical" id="topic-delete-dialog-open">Delete</button>
|
||||
<% end %>
|
||||
</div>
|
||||
</nav>
|
||||
@ -70,3 +71,15 @@
|
||||
<nav id="bottomnav">
|
||||
<% render("views.common.pagination", {page_count = pages, current_page = page}) %>
|
||||
</nav>
|
||||
<dialog id="delete-dialog">
|
||||
<div class=delete-dialog-inner>
|
||||
Are you sure you want to delete this topic?
|
||||
<span>
|
||||
<button id=topic-delete-dialog-close>Cancel</button>
|
||||
<button class="critical" form=topic-delete-form>Delete</button>
|
||||
<form id="topic-delete-form" method="post" action="<%= url_for("topic_delete", {slug = topic.slug}) %>"></form>
|
||||
</span>
|
||||
</div>
|
||||
</dialog>
|
||||
|
||||
<script src="/static/js/topic.js"></script>
|
||||
|
@ -6,6 +6,10 @@
|
||||
<% end %>
|
||||
</nav>
|
||||
|
||||
<% if infobox then %>
|
||||
<% render("views.common.infobox", infobox) %>
|
||||
<% end %>
|
||||
|
||||
<% if #topic_list == 0 then %>
|
||||
<p>There are no topics.</p>
|
||||
<% else %>
|
||||
|
Loading…
Reference in New Issue
Block a user