Skip to content

Instantly share code, notes, and snippets.

@brunoandradd
Created October 3, 2012 15:01
Show Gist options
  • Select an option

  • Save brunoandradd/3827408 to your computer and use it in GitHub Desktop.

Select an option

Save brunoandradd/3827408 to your computer and use it in GitHub Desktop.
Gist refactory
#pseudo codigo em topic_manager
def add_post(forem_user,post_attributes)
@post = @topic.posts.build(post_attributes)
@post.user = forem_user
@post.save
end
class PostsController < Forem::ApplicationController
before_filter :authenticate_forem_user
before_filter :find_topic
before_filter :block_spammers, :only => [:new, :create]
before_filter :check_topic_locked
def create
authorize! :reply, @topic
@topic_manager = TopicManager.new(@topic)
if @topic_manager.add_post(forem_user,params[:post])
flash[:notice] = t("forem.post.created")
redirect_to forum_topic_url(@topic.forum, @topic, :page => last_page)
else
params[:reply_to_id] = params[:post][:reply_to_id]
flash.now.alert = t("forem.post.not_created")
render :action => "new"
end
end
end
private
def check_topic_locked
if @topic.locked?
flash.alert = t("forem.post.not_created_topic_locked")
redirect_to [@topic.forum, @topic]
end
end
def find_topic
@topic = Forem::Topic.find(params[:topic_id])
end
def block_spammers
if forem_user.forem_state == "spam"
flash[:alert] = t('forem.general.flagged_for_spam') + ' ' +
t('forem.general.cannot_create_post')
redirect_to :back
end
end
def last_page
(@topic.posts.count.to_f / Forem.per_page.to_f).ceil
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment