1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
class ForumthreadsController < ApplicationController
before_filter :check_permission, only: [:show, :edit, :update, :destroy]
def index
params[:forum] = nil if params[:forum] && !Forum.find_by(id: params[:forum])
params.delete_if{|k,v| v.blank?}
@threads = Forumthread.filter(current_user, params[:title].try(:slice, 0..255), params[:content].try(:slice, 0..255), params[:reply].try(:slice, 0..255), params[:label], User.find_by(ign: params[:author].to_s.strip) || params[:author], params[:query].try(:slice, 0..255), Forum.find_by(id: params[:forum]))
.page(params[:page]).per(30)
end
def show
if params[:reverse] == "true"
@replies = @thread.replies.reverse_order.page(params[:page])
else
@replies = @thread.replies.page(params[:page])
end
end
def edit
unless mod? || @thread.author.is?(current_user)
flash[:alert] = "You are not allowed to edit this thread!"
redirect_to @thread
end
end
def new
@thread = Forumthread.new(forum: Forum.find(params[:forum]))
unless @thread.forum.can_write?(current_user)
flash[:alert] = "You are not allowed to write in this forum"
redirect_to forums_path
end
end
def create
@thread = Forumthread.new(mod? ? thread_params([:sticky, :locked, :forum_id, :label_id]) : thread_params([:forum_id, :label_id]))
if @thread.forum.can_write?(current_user)
@thread.user_author = current_user
if @thread.save
@thread.send_new_mention_mail
flash[:notice] = "Thread created!"
redirect_to forumthread_path( @thread)
return
else
flash[:alert] = "Something went wrong while creating your thread."
render action: "new"
return
end
else
flash[:alert] = "You are not allowed to create a thread here!"
redirect_to @thread.forum
end
end
def update
if mod? || @thread.author.is?(current_user)
@thread.user_editor = current_user
@thread.attributes = (mod? ? thread_params([:sticky, :locked, :forum_id, :label_id]) : thread_params)
old_content = @thread.content_was
if @thread.save
@thread.send_new_mention_mail(old_content)
redirect_to @thread, notice: 'Post has been updated.'
else
flash[:alert] = "There was a problem while updating the post"
render action: "edit"
end
else
flash[:alert] = "You are not allowed to edit this thread!"
redirect_to @thread
end
end
def destroy
if mod? || @thread.author.is?(current_user)
if @thread.destroy
flash[:notice] = "Thread deleted!"
else
flash[:alert] = "There was a problem while deleting this thread"
end
else
flash[:alert] = "You are not allowed to delete this thread"
end
redirect_to @thread.forum
end
def search
end
private
def check_permission
@thread = Forumthread.find(params[:id])
unless @thread.can_read?(current_user)
flash[:alert] = "You are not allowed to view this thread"
redirect_to forums_path
end
end
def thread_params(add = [])
a = [:title, :content]
a << :label_id if @thread && !@thread.locked?
a += add
params.require(:forumthread).permit(a)
end
end
|