refinerycms-blog/app/controllers/refinery/blog/posts_controller.rb
Jamie Winsor 6212e60f9e index action of blog post controller now caches and sweeps on changes
fix various views which were broken and untested with rails-3-1 upgrade
add request spec tests for admin blog comments
Factory is now FactoryGirl
Fix multiple issues around listing unmoderated comments
use cleaner definitions to set per_page willpaginate attribute on models
update all paginate calls to use new arel representation
reorganize filter sections to be located at top of controller
modify uncategorized class method to activerecord scope and perform a left outer join instead of iterate through an array to find uncategorized posts
move request specs into their proper places
update guardfile to ensure that request specs get run when their respective controllers are modified
Fix show action for AdminBlogComments and added test
Fix redirection link after approving or rejecting a comment
2011-09-03 21:55:30 -07:00

98 lines
3.2 KiB
Ruby

module Refinery
module Blog
class PostsController < BlogController
caches_page :index
# cache_sweeper Refinery::BlogSweeper, :only => [:comment]
before_filter :find_all_blog_posts, :except => [:archive]
before_filter :find_blog_post, :only => [:show, :comment, :update_nav]
before_filter :find_tags
respond_to :html, :js, :rss
def index
# Rss feeders are greedy. Let's give them every blog post instead of paginating.
(@blog_posts = Refinery::BlogPost.live.includes(:comments, :categories).all) if request.format.rss?
respond_with (@blog_posts) do |format|
format.html
format.rss
end
end
def show
@blog_comment = Refinery::BlogComment.new
respond_with (@blog_post) do |format|
format.html { present(@blog_post) }
format.js { render :partial => 'post', :layout => false }
end
end
def comment
if (@blog_comment = @blog_post.comments.create(params[:blog_comment])).valid?
if Refinery::BlogComment::Moderation.enabled? or @blog_comment.ham?
begin
Refinery::Blog::CommentMailer.notification(@blog_comment, request).deliver
rescue
logger.warn "There was an error delivering a blog comment notification.\n#{$!}\n"
end
end
if Refinery::BlogComment::Moderation.enabled?
flash[:notice] = t('thank_you_moderated', :scope => 'blog.posts.comments')
redirect_to main_app.blog_post_url(params[:id])
else
flash[:notice] = t('thank_you', :scope => 'blog.posts.comments')
redirect_to main_app.blog_post_url(params[:id],
:anchor => "comment-#{@blog_comment.to_param}")
end
else
render :action => 'show'
end
end
def archive
if params[:month].present?
date = "#{params[:month]}/#{params[:year]}"
@archive_date = Time.parse(date)
@date_title = @archive_date.strftime('%B %Y')
@blog_posts = Refinery::BlogPost.live.by_archive(@archive_date).page(params[:page])
else
date = "01/#{params[:year]}"
@archive_date = Time.parse(date)
@date_title = @archive_date.strftime('%Y')
@blog_posts = Refinery::BlogPost.live.by_year(@archive_date).page(params[:page])
end
respond_with (@blog_posts)
end
def tagged
@tag = ActsAsTaggableOn::Tag.find(params[:tag_id])
@tag_name = @tag.name
@blog_posts = Refinery::BlogPost.tagged_with(@tag_name).page(params[:page])
end
protected
def find_blog_post
unless (@blog_post = Refinery::BlogPost.find(params[:id])).try(:live?)
if refinery_user? and current_user.authorized_plugins.include?("refinerycms_blog")
@blog_post = Refinery::BlogPost.find(params[:id])
else
error_404
end
end
end
def find_all_blog_posts
@blog_posts = Refinery::BlogPost.live.includes(:comments, :categories).page(params[:page])
end
def find_tags
@tags = Refinery::BlogPost.tag_counts_on(:tags)
end
end
end
end