ensl.org/app/controllers/posts_controller.rb
2014-03-31 22:37:38 +01:00

72 lines
1.5 KiB
Ruby

class PostsController < ApplicationController
before_filter :get_post, except: [:new, :create]
respond_to :html, :js
def quote
raise AccessError unless @post.can_show? cuser
end
def new
@post = Post.new
@post.topic = Topic.find(params[:id])
raise AccessError unless @post.can_create? cuser
render layout: 'forums'
end
def edit
raise AccessError unless @post.can_update? cuser
render layout: 'forums'
end
def create
@post = Post.new(params[:post])
@post.user = cuser
raise AccessError unless @post.can_create? cuser
respond_to do |format|
if @post.save
flash[:notice] = t(:posts_create)
format.js { render }
else
flash[:error] = t(:posts_invalid) + @post.errors.full_messages.to_s
format.html { return_to }
end
end
end
def update
raise AccessError unless @post.can_update? cuser, params[:post]
if @post.update_attributes(params[:post])
flash[:notice] = t(:posts_update)
redirect_to @post.topic
else
render :edit
end
end
def trash
raise AccessError unless @post.can_destroy? cuser
@post.trash
if Topic.exists? @post.topic
redirect_to @post.topic
else
redirect_to @post.topic.forum
end
end
def destroy
raise AccessError unless @post.can_destroy? cuser
@post.destroy
if Topic.exists? @post.topic
redirect_to @post.topic
else
redirect_to @post.topic.forum
end
end
private
def get_post
@post = Post.find(params[:id])
end
end