Use before/after pagination on users page
This commit is contained in:
parent
50df5eefcc
commit
134f9e2df1
4 changed files with 88 additions and 60 deletions
|
@ -1,5 +1,6 @@
|
|||
class UserBlocksController < ApplicationController
|
||||
include UserMethods
|
||||
include PaginationMethods
|
||||
|
||||
layout "site"
|
||||
|
||||
|
@ -16,10 +17,10 @@ class UserBlocksController < ApplicationController
|
|||
|
||||
def index
|
||||
@params = params.permit
|
||||
@user_blocks_pages, @user_blocks = paginate(:user_blocks,
|
||||
:include => [:user, :creator, :revoker],
|
||||
:order => "user_blocks.ends_at DESC",
|
||||
:per_page => 20)
|
||||
|
||||
user_blocks = UserBlock.all
|
||||
|
||||
@user_blocks, @newer_user_blocks_id, @older_user_blocks_id = get_page_items(user_blocks, :includes => [:user, :creator, :revoker])
|
||||
end
|
||||
|
||||
def show
|
||||
|
@ -103,22 +104,20 @@ class UserBlocksController < ApplicationController
|
|||
# shows a list of all the blocks on the given user
|
||||
def blocks_on
|
||||
@params = params.permit(:display_name)
|
||||
@user_blocks_pages, @user_blocks = paginate(:user_blocks,
|
||||
:include => [:user, :creator, :revoker],
|
||||
:conditions => { :user_id => @user.id },
|
||||
:order => "user_blocks.ends_at DESC",
|
||||
:per_page => 20)
|
||||
|
||||
user_blocks = UserBlock.where(:user => @user)
|
||||
|
||||
@user_blocks, @newer_user_blocks_id, @older_user_blocks_id = get_page_items(user_blocks, :includes => [:user, :creator, :revoker])
|
||||
end
|
||||
|
||||
##
|
||||
# shows a list of all the blocks by the given user.
|
||||
def blocks_by
|
||||
@params = params.permit(:display_name)
|
||||
@user_blocks_pages, @user_blocks = paginate(:user_blocks,
|
||||
:include => [:user, :creator, :revoker],
|
||||
:conditions => { :creator_id => @user.id },
|
||||
:order => "user_blocks.ends_at DESC",
|
||||
:per_page => 20)
|
||||
|
||||
user_blocks = UserBlock.where(:creator => @user)
|
||||
|
||||
@user_blocks, @newer_user_blocks_id, @older_user_blocks_id = get_page_items(user_blocks, :includes => [:user, :creator, :revoker])
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
@ -20,20 +20,8 @@
|
|||
<%= render :partial => "block", :locals => { :show_revoke_link => show_revoke_link, :show_user_name => show_user_name, :show_creator_name => show_creator_name }, :collection => @user_blocks %>
|
||||
</table>
|
||||
|
||||
<nav class='secondary-actions'>
|
||||
<ul>
|
||||
<% if @user_blocks_pages.current_page.number > 1 -%>
|
||||
<li><%= link_to t(".previous"), @params.merge(:page => @user_blocks_pages.current_page.number - 1) %></li>
|
||||
<% else -%>
|
||||
<li><%= t(".previous") %></li>
|
||||
<% end -%>
|
||||
|
||||
<li><%= t(".showing_page", :page => @user_blocks_pages.current_page.number) %></li>
|
||||
|
||||
<% if @user_blocks_pages.current_page.number < @user_blocks_pages.page_count -%>
|
||||
<li><%= link_to t(".next"), @params.merge(:page => @user_blocks_pages.current_page.number + 1) %></li>
|
||||
<% else -%>
|
||||
<li><%= t(".next") %></li>
|
||||
<% end -%>
|
||||
</ul>
|
||||
</nav>
|
||||
<%= render "shared/pagination",
|
||||
:newer_key => "user_blocks.blocks.newer",
|
||||
:older_key => "user_blocks.blocks.older",
|
||||
:newer_id => @newer_user_blocks_id,
|
||||
:older_id => @older_user_blocks_id %>
|
||||
|
|
|
@ -2984,9 +2984,8 @@ en:
|
|||
reason: "Reason for block"
|
||||
status: "Status"
|
||||
revoker_name: "Revoked by"
|
||||
showing_page: "Page %{page}"
|
||||
next: "Next »"
|
||||
previous: "« Previous"
|
||||
older: "Older Blocks"
|
||||
newer: "Newer Blocks"
|
||||
user_mutes:
|
||||
index:
|
||||
title: "Muted Users"
|
||||
|
|
|
@ -93,19 +93,26 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest
|
|||
##
|
||||
# test the index action with multiple pages
|
||||
def test_index_paged
|
||||
create_list(:user_block, 50)
|
||||
user_blocks = create_list(:user_block, 50).reverse
|
||||
next_path = user_blocks_path
|
||||
|
||||
get user_blocks_path
|
||||
get next_path
|
||||
assert_response :success
|
||||
assert_select "table#block_list tbody", :count => 1 do
|
||||
assert_select "tr", :count => 20
|
||||
end
|
||||
check_user_blocks_table user_blocks[0...20]
|
||||
check_no_page_link "Newer Blocks"
|
||||
next_path = check_page_link "Older Blocks"
|
||||
|
||||
get user_blocks_path(:page => 2)
|
||||
get next_path
|
||||
assert_response :success
|
||||
assert_select "table#block_list tbody", :count => 1 do
|
||||
assert_select "tr", :count => 20
|
||||
end
|
||||
check_user_blocks_table user_blocks[20...40]
|
||||
check_page_link "Newer Blocks"
|
||||
next_path = check_page_link "Older Blocks"
|
||||
|
||||
get next_path
|
||||
assert_response :success
|
||||
check_user_blocks_table user_blocks[40...50]
|
||||
check_page_link "Newer Blocks"
|
||||
check_no_page_link "Older Blocks"
|
||||
end
|
||||
|
||||
##
|
||||
|
@ -531,19 +538,26 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest
|
|||
# test the blocks_on action with multiple pages
|
||||
def test_blocks_on_paged
|
||||
user = create(:user)
|
||||
create_list(:user_block, 50, :user => user)
|
||||
user_blocks = create_list(:user_block, 50, :user => user).reverse
|
||||
next_path = user_blocks_on_path(user)
|
||||
|
||||
get user_blocks_on_path(user)
|
||||
get next_path
|
||||
assert_response :success
|
||||
assert_select "table#block_list tbody", :count => 1 do
|
||||
assert_select "tr", :count => 20
|
||||
end
|
||||
check_user_blocks_table user_blocks[0...20]
|
||||
check_no_page_link "Newer Blocks"
|
||||
next_path = check_page_link "Older Blocks"
|
||||
|
||||
get user_blocks_on_path(user, :page => 2)
|
||||
get next_path
|
||||
assert_response :success
|
||||
assert_select "table#block_list tbody", :count => 1 do
|
||||
assert_select "tr", :count => 20
|
||||
end
|
||||
check_user_blocks_table user_blocks[20...40]
|
||||
check_page_link "Newer Blocks"
|
||||
next_path = check_page_link "Older Blocks"
|
||||
|
||||
get next_path
|
||||
assert_response :success
|
||||
check_user_blocks_table user_blocks[40...50]
|
||||
check_page_link "Newer Blocks"
|
||||
check_no_page_link "Older Blocks"
|
||||
end
|
||||
|
||||
##
|
||||
|
@ -592,18 +606,46 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest
|
|||
# test the blocks_by action with multiple pages
|
||||
def test_blocks_by_paged
|
||||
user = create(:moderator_user)
|
||||
create_list(:user_block, 50, :creator => user)
|
||||
user_blocks = create_list(:user_block, 50, :creator => user).reverse
|
||||
next_path = user_blocks_by_path(user)
|
||||
|
||||
get user_blocks_by_path(user)
|
||||
get next_path
|
||||
assert_response :success
|
||||
assert_select "table#block_list tbody", :count => 1 do
|
||||
assert_select "tr", :count => 20
|
||||
check_user_blocks_table user_blocks[0...20]
|
||||
check_no_page_link "Newer Blocks"
|
||||
next_path = check_page_link "Older Blocks"
|
||||
|
||||
get next_path
|
||||
assert_response :success
|
||||
check_user_blocks_table user_blocks[20...40]
|
||||
check_page_link "Newer Blocks"
|
||||
next_path = check_page_link "Older Blocks"
|
||||
|
||||
get next_path
|
||||
assert_response :success
|
||||
check_user_blocks_table user_blocks[40...50]
|
||||
check_page_link "Newer Blocks"
|
||||
check_no_page_link "Older Blocks"
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def check_user_blocks_table(user_blocks)
|
||||
assert_dom "table#block_list tbody tr" do |rows|
|
||||
assert_equal user_blocks.count, rows.count, "unexpected number of rows in user blocks table"
|
||||
rows.zip(user_blocks).map do |row, user_block|
|
||||
assert_dom row, "a[href='#{user_block_path user_block}']", 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
get user_blocks_by_path(user, :page => 2)
|
||||
assert_response :success
|
||||
assert_select "table#block_list tbody", :count => 1 do
|
||||
assert_select "tr", :count => 20
|
||||
def check_no_page_link(name)
|
||||
assert_select "a.page-link", { :text => /#{Regexp.quote(name)}/, :count => 0 }, "unexpected #{name} page link"
|
||||
end
|
||||
|
||||
def check_page_link(name)
|
||||
assert_select "a.page-link", { :text => /#{Regexp.quote(name)}/ }, "missing #{name} page link" do |buttons|
|
||||
return buttons.first.attributes["href"].value
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue