Merge pull request #3238 from evazion/fix-1156
Fix #1156: Allow sequential search navigator to work without a search.
This commit is contained in:
@@ -1,25 +1,20 @@
|
||||
class PostSearchContext
|
||||
attr_reader :params, :post_id
|
||||
extend Memoist
|
||||
attr_reader :id, :seq, :tags
|
||||
|
||||
def initialize(params)
|
||||
@params = params
|
||||
raise unless params[:seq].present?
|
||||
raise unless params[:id].present?
|
||||
|
||||
@post_id = find_post_id
|
||||
@id = params[:id].to_i
|
||||
@seq = params[:seq]
|
||||
@tags = params[:tags].presence || "status:any"
|
||||
end
|
||||
|
||||
def find_post_id
|
||||
if params[:seq] == "prev"
|
||||
post = Post.tag_match(params[:tags]).where("posts.id > ?", params[:id].to_i).reorder("posts.id asc").first
|
||||
def post_id
|
||||
if seq == "prev"
|
||||
Post.tag_match(tags).where("posts.id > ?", id).reorder("posts.id asc").first.try(:id)
|
||||
else
|
||||
post = Post.tag_match(params[:tags]).where("posts.id < ?", params[:id].to_i).reorder("posts.id desc").first
|
||||
end
|
||||
|
||||
if post
|
||||
post.id
|
||||
else
|
||||
nil
|
||||
Post.tag_match(tags).where("posts.id < ?", id).reorder("posts.id desc").first.try(:id)
|
||||
end
|
||||
end
|
||||
|
||||
memoize :post_id
|
||||
end
|
||||
|
||||
@@ -189,7 +189,11 @@ class PostPresenter < Presenter
|
||||
end
|
||||
|
||||
def has_nav_links?(template)
|
||||
(CurrentUser.user.enable_sequential_post_navigation && template.params[:tags].present? && template.params[:tags] !~ /(?:^|\s)(?:order|ordfav|ordpool):/) || @post.pools.undeleted.any? || @post.favorite_groups(active_id=template.params[:favgroup_id]).any?
|
||||
has_sequential_navigation?(template) || @post.pools.undeleted.any? || @post.favorite_groups(active_id=template.params[:favgroup_id]).any?
|
||||
end
|
||||
|
||||
def has_sequential_navigation?(template)
|
||||
CurrentUser.user.enable_sequential_post_navigation && template.params[:tags] !~ /(?:^|\s)(?:order|ordfav|ordpool):/i
|
||||
end
|
||||
|
||||
def post_footer_for_pool_html(template)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<% if (position == "bottom" && CurrentUser.user.new_post_navigation_layout) || (position == "top" && !CurrentUser.user.new_post_navigation_layout) %>
|
||||
<div id="nav-links" class="ui-corner-all nav-notice">
|
||||
<% if CurrentUser.user.enable_sequential_post_navigation && params[:tags].present? && params[:tags] !~ /(?:^|\s)(?:order|ordfav|ordpool):/ %>
|
||||
<% if post.presenter.has_sequential_navigation?(self) %>
|
||||
<%= render "posts/partials/show/search_seq", :post => post %>
|
||||
<% end %>
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<ul>
|
||||
<li class="active">
|
||||
<%= link_to "‹ prev".html_safe, show_seq_post_path(post, :tags => params[:tags], :seq => "prev"), :rel => "prev nofollow", :class => "prev" %>
|
||||
<span class="search-name">Search: <%= params[:tags] %></span>
|
||||
<span class="search-name">Search: <%= params[:tags].presence || "status:any" %></span>
|
||||
<%= link_to "next ›".html_safe, show_seq_post_path(post, :tags => params[:tags], :seq => "next"), :rel => "next nofollow", :class => "next" %>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
Reference in New Issue
Block a user