Noosfero/noosfero

View on GitHub
plugins/profile_members_headlines/lib/profile_members_headlines_block.rb

Summary

Maintainability
A
0 mins
Test Coverage
class ProfileMembersHeadlinesBlock < Block
  settings_items :interval, type: "integer", default: 10
  settings_items :limit, type: "integer", default: 10
  settings_items :navigation, type: "boolean", default: true
  settings_items :filtered_roles, type: Array, default: []

  attr_accessible :interval, :limit, :navigation, :filtered_roles

  def self.description
    _("Display headlines from members of a community")
  end

  def help
    _("This block displays one post from members of a community.")
  end

  include Noosfero::Plugin::HotSpot

  def default_title
    _("Profile members headlines")
  end

  def filtered_roles=(array)
    self.settings[:filtered_roles] = array.map(&:to_i).select { |r| !r.to_i.zero? }
  end

  def authors_list(user)
    result = owner
             .members_by_role(filtered_roles)
             .accessible_to(user)
             .includes([:image, :domains, :preferred_domain, :environment]).order("updated_at DESC")
             .limit(limit * 5)

    result.select { |p| p.has_headline? }.slice(0..limit - 1)
  end
end