allow users to lock and sticky threads
This commit is contained in:
parent
95e4384f22
commit
5e7dec08b9
@ -135,4 +135,38 @@ app:post("thread", "/:slug", function(self)
|
|||||||
return {redirect_to = self:url_for("thread", {slug = thread.slug}, {page = last_page}) .. "#latest-post"}
|
return {redirect_to = self:url_for("thread", {slug = thread.slug}, {page = last_page}) .. "#latest-post"}
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
app:post("thread_lock", "/:slug/lock", function(self)
|
||||||
|
local user = util.get_logged_in_user(self)
|
||||||
|
if not user then
|
||||||
|
return {redirect_to = self:url_for("thread", {slug = self.params.slug})}
|
||||||
|
end
|
||||||
|
local thread = Threads:find({slug = self.params.slug})
|
||||||
|
if not ((thread.user_id == user.id) or user:is_mod()) then
|
||||||
|
return {redirect_to = self:url_for("thread", {slug = self.params.slug})}
|
||||||
|
end
|
||||||
|
local target_op = util.form_bool_to_sqlite(self.params.target_op)
|
||||||
|
thread:update({
|
||||||
|
is_locked = target_op,
|
||||||
|
})
|
||||||
|
return {redirect_to = self:url_for("thread", {slug = self.params.slug})}
|
||||||
|
end)
|
||||||
|
|
||||||
|
app:post("thread_sticky", "/:slug/sticky", function(self)
|
||||||
|
local user = util.get_logged_in_user(self)
|
||||||
|
if not user then
|
||||||
|
return {redirect_to = self:url_for("thread", {slug = self.params.slug})}
|
||||||
|
end
|
||||||
|
|
||||||
|
if not user:is_mod() then
|
||||||
|
return {redirect_to = self:url_for("thread", {slug = self.params.slug})}
|
||||||
|
end
|
||||||
|
|
||||||
|
local thread = Threads:find({slug = self.params.slug})
|
||||||
|
local target_op = util.form_bool_to_sqlite(self.params.target_op)
|
||||||
|
thread:update({
|
||||||
|
is_stickied = target_op,
|
||||||
|
})
|
||||||
|
return {redirect_to = self:url_for("thread", {slug = self.params.slug})}
|
||||||
|
end)
|
||||||
|
|
||||||
return app
|
return app
|
||||||
|
7
util.lua
7
util.lua
@ -137,12 +137,7 @@ function util.bton(b)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function util.stob(s)
|
function util.stob(s)
|
||||||
if s == "true" then
|
return s == "true"
|
||||||
return true
|
|
||||||
end
|
|
||||||
if s == "false" then
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function util.form_bool_to_sqlite(s)
|
function util.form_bool_to_sqlite(s)
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
<%
|
<%
|
||||||
local is_locked = ntob(thread.is_locked)
|
local is_locked = ntob(thread.is_locked)
|
||||||
|
local is_stickied = ntob(thread.is_stickied)
|
||||||
local can_post = (not is_locked and not me:is_guest()) or me:is_mod()
|
local can_post = (not is_locked and not me:is_guest()) or me:is_mod()
|
||||||
|
local can_lock = me.id == thread.user_id or me:is_mod()
|
||||||
%>
|
%>
|
||||||
<% if infobox then %>
|
<% if infobox then %>
|
||||||
<% render("views.common.infobox", infobox) %>
|
<% render("views.common.infobox", infobox) %>
|
||||||
@ -8,7 +10,24 @@
|
|||||||
<main>
|
<main>
|
||||||
<nav class="darkbg">
|
<nav class="darkbg">
|
||||||
<h1 class="thread-title"><%= thread.title %></h1>
|
<h1 class="thread-title"><%= thread.title %></h1>
|
||||||
<span>Posted in <a href="<%= url_for("topic", {slug = topic.slug}) %>"><%= topic.name %></a></span>
|
<span>Posted in <a href="<%= url_for("topic", {slug = topic.slug}) %>"><%= topic.name %></a>
|
||||||
|
<% if is_stickied then %> • <i>stickied, so it's probably important</i>
|
||||||
|
<% end %>
|
||||||
|
</span>
|
||||||
|
<% if can_lock then %>
|
||||||
|
<div>
|
||||||
|
<form class="modform" action="<%= url_for("thread_lock", {slug = thread.slug}) %>" method="post">
|
||||||
|
<input type=hidden value="<%= not is_locked %>" name="target_op">
|
||||||
|
<input class="warn" type="submit" value="<%= is_locked and "Unlock thread" or "Lock thread" %>">
|
||||||
|
</form>
|
||||||
|
<% if me:is_mod() then %>
|
||||||
|
<form class="modform" action="<%= url_for("thread_sticky", {slug = thread.slug}) %>" method="post">
|
||||||
|
<input type=hidden value="<%= not is_stickied %>" name="target_op">
|
||||||
|
<input class="warn" type="submit" value="<%= is_stickied and "Unsticky thread" or "Sticky thread" %>">
|
||||||
|
</form>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
</nav>
|
</nav>
|
||||||
<% for i, post in ipairs(posts) do %>
|
<% for i, post in ipairs(posts) do %>
|
||||||
<% render("views.threads.post", {post = post, render_sig = true, is_latest = i == #posts}) %>
|
<% render("views.threads.post", {post = post, render_sig = true, is_latest = i == #posts}) %>
|
||||||
|
Loading…
Reference in New Issue
Block a user