discourse/app/controllers/directory_items_controller.rb
Robin Ward 7ef306cd3b A bunch of tweaks to the Users directory
- Move user directory from `/directory` to `/users/`
- Defaults to 'weekly' time period
- Don't include deleted topics/posts in the results
- Move heart icon to header instead of on each row
- "Users" instead of "Users found"
2015-03-19 12:29:38 -04:00

36 lines
1.2 KiB
Ruby

class DirectoryItemsController < ApplicationController
PAGE_SIZE = 50
def index
period = params.require(:period)
period_type = DirectoryItem.period_types[period.to_sym]
raise Discourse::InvalidAccess.new(:period_type) unless period_type
result = DirectoryItem.where(period_type: period_type).includes(:user)
order = params[:order] || DirectoryItem.headings.first
if DirectoryItem.headings.include?(order.to_sym)
dir = params[:asc] ? 'ASC' : 'DESC'
result = result.order("directory_items.#{order} #{dir}")
end
if period_type == DirectoryItem.period_types[:all]
result = result.includes(:user_stat)
end
page = params[:page].to_i
result = result.order('users.username')
result_count = result.dup.count
result = result.limit(PAGE_SIZE).offset(PAGE_SIZE * page)
serialized = serialize_data(result, DirectoryItemSerializer)
more_params = params.slice(:period, :order, :asc)
more_params[:page] = page + 1
render_json_dump directory_items: serialized,
total_rows_directory_items: result_count,
load_more_directory_items: directory_items_path(more_params)
end
end