Merge pull request #3238 from evazion/fix-1156

Fix #1156: Allow sequential search navigator to work without a search.
This commit is contained in:
Albert Yi
2017-07-26 17:08:29 -07:00
committed by GitHub
4 changed files with 18 additions and 19 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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 %>

View File

@@ -2,7 +2,7 @@
<ul>
<li class="active">
<%= link_to "&lsaquo;&thinsp;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&thinsp;&rsaquo;".html_safe, show_seq_post_path(post, :tags => params[:tags], :seq => "next"), :rel => "next nofollow", :class => "next" %>
</li>
</ul>