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})}
|
return {redirect_to = self:url_for("topic", {slug = self.params.slug})}
|
||||||
end)
|
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
|
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 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" %>">
|
<input class="warn" type="submit" id="lock" value="<%= is_locked and "Unlock topic" or "Lock topic" %>">
|
||||||
</form>
|
</form>
|
||||||
|
<button type="button" class="critical" id="topic-delete-dialog-open">Delete</button>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
@ -70,3 +71,15 @@
|
|||||||
<nav id="bottomnav">
|
<nav id="bottomnav">
|
||||||
<% render("views.common.pagination", {page_count = pages, current_page = page}) %>
|
<% render("views.common.pagination", {page_count = pages, current_page = page}) %>
|
||||||
</nav>
|
</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 %>
|
<% end %>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
|
<% if infobox then %>
|
||||||
|
<% render("views.common.infobox", infobox) %>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
<% if #topic_list == 0 then %>
|
<% if #topic_list == 0 then %>
|
||||||
<p>There are no topics.</p>
|
<p>There are no topics.</p>
|
||||||
<% else %>
|
<% else %>
|
||||||
|
Loading…
Reference in New Issue
Block a user