64 lines
2.3 KiB
Ruby
64 lines
2.3 KiB
Ruby
module SearchHelper
|
|
|
|
# modified from mislav-will_paginate-2.3.2/lib/will_paginate/view_helpers.rb
|
|
def search_header(collection, search, item_name, parent=nil)
|
|
header = []
|
|
if !collection.respond_to?(:total_pages)
|
|
header << ts("Recent #{item_name.pluralize}")
|
|
elsif collection.total_pages < 2
|
|
header << pluralize(collection.total_entries, item_name)
|
|
else
|
|
total_entries = collection.total_entries
|
|
total_entries = collection.unlimited_total_entries if collection.respond_to?(:unlimited_total_entries)
|
|
header << ts(" %{start_number} - %{end_number} of %{total} %{things}",
|
|
start_number: number_with_delimiter(collection.offset + 1),
|
|
end_number: number_with_delimiter(collection.offset + collection.length),
|
|
total: number_with_delimiter(total_entries),
|
|
things: item_name.pluralize)
|
|
end
|
|
header << ts("found") if search.present? && search.query.present?
|
|
|
|
case parent
|
|
when Collection
|
|
header << ts("in %{collection_link}", collection_link: link_to(parent.title, parent))
|
|
when Pseud
|
|
header << ts("by %{byline}", byline: parent.byline)
|
|
when User
|
|
header << ts("by %{username}", username: parent.login)
|
|
when Language
|
|
header << ts("in %{language}", language: parent.name)
|
|
end
|
|
|
|
header << ts("in %{tag_link}", tag_link: link_to_tag_with_text(parent, parent.name)) if parent.is_a?(Tag)
|
|
# The @fandom version is used when following a fandom link from a user's dashboard, which
|
|
# which will take you to a URL like /users/username/works?fandom_id=123.
|
|
header << ts("in %{fandom_link}", fandom_link: link_to_tag(@fandom)) if @fandom.present?
|
|
header.join(" ").html_safe
|
|
end
|
|
|
|
def search_results_found(results)
|
|
ts("%{count} Found", count: number_with_delimiter(results.unlimited_total_entries))
|
|
end
|
|
|
|
def random_search_tip
|
|
ArchiveConfig.SEARCH_TIPS[rand(ArchiveConfig.SEARCH_TIPS.size)]
|
|
end
|
|
|
|
def works_original_path
|
|
url_for(
|
|
controller: :works,
|
|
action: :index,
|
|
only_path: true,
|
|
**params.slice(:tag_id, :fandom_id, :collection_id, :pseud_id, :user_id).permit!
|
|
)
|
|
end
|
|
|
|
def bookmarks_original_path
|
|
url_for(
|
|
controller: :bookmarks,
|
|
action: :index,
|
|
only_path: true,
|
|
**params.slice(:tag_id, :collection_id, :pseud_id, :user_id).permit!
|
|
)
|
|
end
|
|
end
|