mirror of
https://github.com/ENSL/ensl.org.git
synced 2024-11-15 09:21:25 +00:00
72 lines
1.5 KiB
Ruby
72 lines
1.5 KiB
Ruby
class PostsController < ApplicationController
|
|
before_filter :get_post, except: [:new, :create]
|
|
respond_to :html, :js
|
|
layout 'forums'
|
|
|
|
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
|
|
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 }
|
|
format.html { return_to }
|
|
else
|
|
format.html { render :new }
|
|
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
|