mirror of
https://github.com/discourse/discourse.git
synced 2025-05-23 19:41:18 +08:00
Can edit deleted posts.
This commit is contained in:
@ -64,7 +64,7 @@ class PostsController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def show
|
def show
|
||||||
@post = Post.where(id: params[:id]).first
|
@post = find_post_from_params
|
||||||
guardian.ensure_can_see!(@post)
|
guardian.ensure_can_see!(@post)
|
||||||
|
|
||||||
@post.revert_to(params[:version].to_i) if params[:version].present?
|
@post.revert_to(params[:version].to_i) if params[:version].present?
|
||||||
@ -74,14 +74,14 @@ class PostsController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
post = Post.where(id: params[:id]).first
|
post = find_post_from_params
|
||||||
guardian.ensure_can_delete!(post)
|
guardian.ensure_can_delete!(post)
|
||||||
post.delete_by(current_user)
|
post.delete_by(current_user)
|
||||||
render nothing: true
|
render nothing: true
|
||||||
end
|
end
|
||||||
|
|
||||||
def recover
|
def recover
|
||||||
post = Post.with_deleted.where(id: params[:post_id]).first
|
post = find_post_from_params
|
||||||
guardian.ensure_can_recover_post!(post)
|
guardian.ensure_can_recover_post!(post)
|
||||||
post.recover
|
post.recover
|
||||||
render nothing: true
|
render nothing: true
|
||||||
@ -108,7 +108,7 @@ class PostsController < ApplicationController
|
|||||||
|
|
||||||
# Retrieves a list of versions and who made them for a post
|
# Retrieves a list of versions and who made them for a post
|
||||||
def versions
|
def versions
|
||||||
post = Post.where(id: params[:post_id]).first
|
post = find_post_from_params
|
||||||
guardian.ensure_can_see!(post)
|
guardian.ensure_can_see!(post)
|
||||||
|
|
||||||
render_serialized(post.all_versions, VersionSerializer)
|
render_serialized(post.all_versions, VersionSerializer)
|
||||||
@ -116,14 +116,14 @@ class PostsController < ApplicationController
|
|||||||
|
|
||||||
# Direct replies to this post
|
# Direct replies to this post
|
||||||
def replies
|
def replies
|
||||||
post = Post.where(id: params[:post_id]).first
|
post = find_post_from_params
|
||||||
guardian.ensure_can_see!(post)
|
guardian.ensure_can_see!(post)
|
||||||
render_serialized(post.replies, PostSerializer)
|
render_serialized(post.replies, PostSerializer)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def bookmark
|
def bookmark
|
||||||
post = Post.where(id: params[:post_id]).first
|
post = find_post_from_params
|
||||||
guardian.ensure_can_see!(post)
|
guardian.ensure_can_see!(post)
|
||||||
if current_user
|
if current_user
|
||||||
if params[:bookmarked] == "true"
|
if params[:bookmarked] == "true"
|
||||||
@ -135,4 +135,15 @@ class PostsController < ApplicationController
|
|||||||
render :nothing => true
|
render :nothing => true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
protected
|
||||||
|
|
||||||
|
def find_post_from_params
|
||||||
|
finder = Post.where(id: params[:id] || params[:post_id])
|
||||||
|
|
||||||
|
# Include deleted posts if the user is a moderator
|
||||||
|
finder = finder.with_deleted if current_user.try(:has_trust_level?, :moderator)
|
||||||
|
|
||||||
|
finder.first
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -18,6 +18,31 @@ describe PostsController do
|
|||||||
response.should be_success
|
response.should be_success
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "deleted post" do
|
||||||
|
|
||||||
|
before do
|
||||||
|
post.destroy
|
||||||
|
end
|
||||||
|
|
||||||
|
it "can't find deleted posts as an anonymous user" do
|
||||||
|
xhr :get, :show, id: post.id
|
||||||
|
response.should be_forbidden
|
||||||
|
end
|
||||||
|
|
||||||
|
it "can't find deleted posts as a regular user" do
|
||||||
|
log_in(:user)
|
||||||
|
xhr :get, :show, id: post.id
|
||||||
|
response.should be_forbidden
|
||||||
|
end
|
||||||
|
|
||||||
|
it "can find posts as a moderator" do
|
||||||
|
log_in(:moderator)
|
||||||
|
xhr :get, :show, id: post.id
|
||||||
|
response.should be_success
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'versions' do
|
describe 'versions' do
|
||||||
|
Reference in New Issue
Block a user