forked from jasder/forgeplus
76 lines
1.7 KiB
Ruby
76 lines
1.7 KiB
Ruby
class CommentsController < ApplicationController
|
|
before_action :find_hack
|
|
before_action :require_login
|
|
|
|
|
|
# 评论
|
|
def create
|
|
begin
|
|
@discuss = @hack.discusses.new(comment_params) # 管理员回复的能够显示
|
|
@discuss.hidden = false
|
|
@discuss.user_id = current_user.id
|
|
@discuss.save!
|
|
rescue Exception => e
|
|
uid_logger_error("create discuss failed : #{e.message}")
|
|
render_error("评论异常")
|
|
end
|
|
end
|
|
|
|
# 回复
|
|
def reply
|
|
begin
|
|
@discuss = @hack.discusses.new(reply_params)
|
|
@discuss.hidden = false
|
|
@discuss.user_id = current_user.id
|
|
@discuss.root_id = params[:comments][:parent_id]
|
|
@discuss.save!
|
|
rescue Exception => e
|
|
uid_logger_error("reply discuss failed : #{e.message}")
|
|
render_error("回复评论异常")
|
|
end
|
|
end
|
|
|
|
# 列表
|
|
def index
|
|
discusses =
|
|
if current_user.admin_or_business?
|
|
@hack.discusses.where(root_id: nil)
|
|
else
|
|
@hack.discusses.where(root_id: nil, hidden: false)
|
|
end
|
|
@discusses_count = discusses.count
|
|
@discusses= paginate discusses
|
|
end
|
|
|
|
# 删除
|
|
def destroy
|
|
@hack.discusses.find_by(id: params[:id]).destroy
|
|
render_ok
|
|
end
|
|
|
|
# 隐藏、取消隐藏
|
|
def hidden
|
|
if current_user.admin_or_business?
|
|
@discuss = @hack.discusses.where(id: params[:id]).first
|
|
@discuss.update_attribute(:hidden, params[:hidden].to_i == 1)
|
|
sucess_status
|
|
else
|
|
Educoder::TipException(403, "..")
|
|
end
|
|
end
|
|
|
|
|
|
private
|
|
def find_hack
|
|
@hack = Hack.find_by_identifier(params[:hack_identifier])
|
|
end
|
|
|
|
def comment_params
|
|
params.require(:comments).permit(:content)
|
|
end
|
|
|
|
def reply_params
|
|
params.require(:comments).permit(:content, :parent_id)
|
|
end
|
|
end
|