diff options
Diffstat (limited to 'app/helpers/refinery/blog')
-rw-r--r-- | app/helpers/refinery/blog/controller_helper.rb | 30 | ||||
-rw-r--r-- | app/helpers/refinery/blog/posts_helper.rb | 51 |
2 files changed, 81 insertions, 0 deletions
diff --git a/app/helpers/refinery/blog/controller_helper.rb b/app/helpers/refinery/blog/controller_helper.rb new file mode 100644 index 0000000..035275c --- /dev/null +++ b/app/helpers/refinery/blog/controller_helper.rb @@ -0,0 +1,30 @@ +module Refinery + module Blog + module ControllerHelper + + protected + + def find_blog_post + unless (@blog_post = Refinery::Blog::Post.find(params[:id])).try(:live?) + if refinery_user? and current_refinery_user.authorized_plugins.include?("refinerycms_blog") + @blog_post = Refinery::Blog::Post.find(params[:id]) + else + error_404 + end + end + end + + def find_all_blog_posts + @blog_posts = Refinery::Blog::Post.live.includes(:comments, :categories).page(params[:page]) + end + + def find_tags + @tags = Refinery::Blog::Post.tag_counts_on(:tags) + end + + def find_all_blog_categories + @blog_categories = Refinery::Blog::Category.all + end + end + end +end diff --git a/app/helpers/refinery/blog/posts_helper.rb b/app/helpers/refinery/blog/posts_helper.rb new file mode 100644 index 0000000..418f360 --- /dev/null +++ b/app/helpers/refinery/blog/posts_helper.rb @@ -0,0 +1,51 @@ +module Refinery + module Blog + module PostsHelper + def blog_archive_widget + posts = Refinery::Blog::Post.select('published_at').all_previous + return nil if posts.blank? + + render :partial => "/refinery/blog/widgets/blog_archive", :locals => { :posts => posts } + end + alias_method :blog_archive_list, :blog_archive_widget + + def next_or_previous?(post) + post.next.present? or post.prev.present? + end + + def blog_post_teaser_enabled? + Refinery::Blog::Post.teasers_enabled? + end + + def blog_post_teaser(post) + if post.respond_to?(:custom_teaser) && post.custom_teaser.present? + post.custom_teaser.html_safe + else + truncate(post.body, { + :length => Refinery::Setting.find_or_set(:blog_post_teaser_length, 250), + :preserve_html_tags => true + }).html_safe + end + end + + def archive_link(post) + if post.published_at >= Time.now.end_of_year.advance(:years => -3) + post_date = post.published_at.strftime('%m/%Y') + year = post_date.split('/')[1] + month = post_date.split('/')[0] + count = Blog::Post.by_archive(Time.parse(post_date)).size + text = t("date.month_names")[month.to_i] + " #{year} (#{count})" + + link_to(text, main_app.archive_blog_posts_path(:year => year, :month => month)) + else + post_date = post.published_at.strftime('01/%Y') + year = post_date.split('/')[1] + count = Refinery::Blog::Post.by_year(Time.parse(post_date)).size + text = "#{year} (#{count})" + + link_to(text, main_app.archive_blog_posts_path(:year => year)) + end + end + end + end +end
\ No newline at end of file |