mirror of
https://github.com/kaminari/kaminari.git
synced 2022-11-09 13:44:37 -05:00
Merge branch 'master' of https://github.com/joe1chen/kaminari into joe1chen-master
Conflicts: spec/helpers/action_view_extension_spec.rb
This commit is contained in:
commit
e67057eed3
2 changed files with 77 additions and 1 deletions
|
@ -105,5 +105,45 @@ module Kaminari
|
||||||
t('helpers.page_entries_info.more_pages.display_entries', :entry_name => entry_name, :first => first, :last => last, :total => collection.total_count)
|
t('helpers.page_entries_info.more_pages.display_entries', :entry_name => entry_name, :first => first, :last => last, :total => collection.total_count)
|
||||||
end.html_safe
|
end.html_safe
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Renders rel="next" and rel="prev" links to be used in the head.
|
||||||
|
#
|
||||||
|
# ==== Examples
|
||||||
|
# Basic usage:
|
||||||
|
#
|
||||||
|
# In head:
|
||||||
|
# <head>
|
||||||
|
# <title>My Website</title>
|
||||||
|
# <%= yield :head %>
|
||||||
|
# </head>
|
||||||
|
#
|
||||||
|
# Somewhere in body:
|
||||||
|
# <% content_for :head do %>
|
||||||
|
# <%= rel_next_prev_link_tags @items %>
|
||||||
|
# <% end %>
|
||||||
|
#
|
||||||
|
# #-> <link rel="next" href="/items/page/3" /><link rel="prev" href="/items/page/1" />
|
||||||
|
#
|
||||||
|
def rel_next_prev_link_tags(scope, options = {})
|
||||||
|
params = options.delete(:params) || {}
|
||||||
|
param_name = options.delete(:param_name) || Kaminari.config.param_name
|
||||||
|
|
||||||
|
output = ""
|
||||||
|
|
||||||
|
if !scope.first_page? && !scope.last_page?
|
||||||
|
# If not first and not last, then output both links.
|
||||||
|
output << '<link rel="next" href="' + url_for(params.merge(param_name => (scope.current_page + 1))) + '"/>'
|
||||||
|
output << '<link rel="prev" href="' + url_for(params.merge(param_name => (scope.current_page - 1))) + '"/>'
|
||||||
|
elsif scope.first_page?
|
||||||
|
# If first page, add next link unless last page.
|
||||||
|
output << '<link rel="next" href="' + url_for(params.merge(param_name => (scope.current_page + 1))) + '"/>' unless scope.last_page?
|
||||||
|
else
|
||||||
|
# If last page, add prev link unless first page.
|
||||||
|
output << '<link rel="prev" href="' + url_for(params.merge(param_name => (scope.current_page - 1))) + '"/>' unless scope.first_page?
|
||||||
|
end
|
||||||
|
|
||||||
|
output.html_safe
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -210,4 +210,40 @@ describe 'Kaminari::ActionViewExtension' do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#rel_next_prev_link_tags' do
|
||||||
|
before do
|
||||||
|
75.times {|i| User.create! :name => "user#{i}"}
|
||||||
|
end
|
||||||
|
context 'the first page' do
|
||||||
|
before do
|
||||||
|
@users = User.page(1).per(25)
|
||||||
|
end
|
||||||
|
|
||||||
|
subject { helper.rel_next_prev_link_tags @users, :params => {:controller => 'users', :action => 'index'} }
|
||||||
|
it { should be_a String }
|
||||||
|
it { should match /rel="next"/ }
|
||||||
|
it { should_not match /rel="prev"/ }
|
||||||
|
end
|
||||||
|
context 'the middle page' do
|
||||||
|
before do
|
||||||
|
@users = User.page(2).per(25)
|
||||||
|
end
|
||||||
|
|
||||||
|
subject { helper.rel_next_prev_link_tags @users, :params => {:controller => 'users', :action => 'index'} }
|
||||||
|
it { should be_a String }
|
||||||
|
it { should match /rel="next"/ }
|
||||||
|
it { should match /rel="prev"/ }
|
||||||
|
end
|
||||||
|
context 'the last page' do
|
||||||
|
before do
|
||||||
|
@users = User.page(3).per(25)
|
||||||
|
end
|
||||||
|
|
||||||
|
subject { helper.rel_next_prev_link_tags @users, :params => {:controller => 'users', :action => 'index'} }
|
||||||
|
it { should be_a String }
|
||||||
|
it { should_not match /rel="next"/ }
|
||||||
|
it { should match /rel="prev"/ }
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
Loading…
Reference in a new issue