class BlogArchivesBlock < Block include ActionView::Helpers::TagHelper include ActionView::Helpers::UrlHelper include ActionView::Helpers include Rails.application.routes.url_helpers include ActionView::Helpers::AssetTagHelper include DatesHelper def self.description _('Blog posts') end def default_title _('Blog posts') end settings_items :blog_id, Integer def blog blog_id && owner.blogs.exists?(blog_id) ? owner.blogs.find(blog_id) : owner.blog end def visible_posts(person) #FIXME Performance issues with display_to. Must convert it to a scope. # Checkout this page for further information: http://noosfero.org/Development/ActionItem2705 blog.posts.published.native_translations #.select {|post| post.display_to?(person)} end def content(args={}) owner_blog = self.blog return nil unless owner_blog results = '' posts = visible_posts(args[:person]) posts.except(:order).count(:all, :group => 'EXTRACT(YEAR FROM published_at)').sort_by {|year, count| -year.to_i}.each do |year, count| results << content_tag('li', content_tag('strong', "#{year} (#{count})")) results << "" end block_title(title) + content_tag('ul', results, :class => 'blog-archives') + content_tag('div', link_to(_('Subscribe RSS Feed'), owner_blog.feed.url), :class => 'subscribe-feed') end def self.expire_on { :profile => [:article], :environment => [:article] } end end