browse_controller.rb 1.99 KB
class BrowseController < PublicController

  no_design_blocks

  FILTERS = %w(
    more_recent
    more_active
    more_popular
    more_comments
    more_views
  )

  def per_page
    27
  end

  def people
    @filter = filter
    @title = self.filter_description(params[:action] + '_' + @filter )

    @results = @environment.people.visible.send(@filter)

    if !params[:query].blank?
      @results = @results.find_by_contents(params[:query])
    end
    @results = @results.compact.paginate(:per_page => per_page, :page => params[:page])
  end

  def communities
    @filter = filter
    @title = self.filter_description(params[:action] + '_' + @filter )

    @results = @environment.communities.visible.send(@filter)

    if !params[:query].blank?
      @results = @results.find_by_contents(params[:query])
    end
    @results = @results.compact.paginate(:per_page => per_page, :page => params[:page])
  end

  def contents
    @filter = filter
    @title = self.filter_description(params[:action] + '_' + @filter )

    @results = @environment.articles.published.text_articles.send(@filter)

    if !params[:query].blank?
      @results = @results.find_by_contents(params[:query])
    end
    @results = @results.compact.paginate(:per_page => per_page, :page => params[:page])
  end

  protected

  def filter
    if FILTERS.include?(params[:filter])
      params[:filter]
    else
      'more_recent'
    end
  end

  def filter_description(str)
    {
      'people_more_recent' => _('More recent people'),
      'people_more_active' => _('More active people'),
      'people_more_popular' => _('More popular people'),
      'communities_more_recent' => _('More recent communities'),  
      'communities_more_active' => _('More active communities'),  
      'communities_more_popular' => _('More popular communities'),
      'contents_more_recent' => _('More recent contents'),
      'contents_more_views' => _('Most viewed contents'),
      'contents_more_comments' => _('Most commented contents'),
    }[str] || str
  end

end