From b9693827c3e1d1998d306ffef6d2fe380e84e2b4 Mon Sep 17 00:00:00 2001 From: evazion Date: Thu, 30 Mar 2017 13:14:57 -0500 Subject: [PATCH] /wiki_pages: sort autocomplete by post count. * Add search[order]=post_count param to /wiki_pages. * Make autocomplete do a prefix match ordered by post count, so that it works the same way that tag autocomplete does elsewhere. --- app/assets/javascripts/wiki_pages.js | 3 ++- app/controllers/wiki_pages_controller.rb | 2 +- app/models/wiki_page.rb | 9 +++++++-- app/views/wiki_pages/search.html.erb | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/assets/javascripts/wiki_pages.js b/app/assets/javascripts/wiki_pages.js index 9446d4efd..81c81a1dc 100644 --- a/app/assets/javascripts/wiki_pages.js +++ b/app/assets/javascripts/wiki_pages.js @@ -20,8 +20,9 @@ $.ajax({ url: "/wiki_pages.json", data: { - "search[title]": "*" + req.term + "*", + "search[title]": req.term + "*", "search[hide_deleted]": "Yes", + "search[order]": "post_count", "limit": 10 }, method: "get", diff --git a/app/controllers/wiki_pages_controller.rb b/app/controllers/wiki_pages_controller.rb index abcbe42c2..213aefb29 100644 --- a/app/controllers/wiki_pages_controller.rb +++ b/app/controllers/wiki_pages_controller.rb @@ -15,7 +15,7 @@ class WikiPagesController < ApplicationController end def index - @wiki_pages = WikiPage.search(params[:search]).order("updated_at desc").paginate(params[:page], :limit => params[:limit], :search_count => params[:search]) + @wiki_pages = WikiPage.search(params[:search]).paginate(params[:page], :limit => params[:limit], :search_count => params[:search]) respond_with(@wiki_pages) do |format| format.html do if params[:page].nil? || params[:page].to_i == 1 diff --git a/app/models/wiki_page.rb b/app/models/wiki_page.rb index d31b7fb20..f2edc433e 100644 --- a/app/models/wiki_page.rb +++ b/app/models/wiki_page.rb @@ -79,10 +79,15 @@ class WikiPage < ActiveRecord::Base end params[:order] ||= params.delete(:sort) - if params[:order] == "time" || params[:order] == "Date" + case params[:order] + when "time" q = q.order("updated_at desc") - elsif params[:order] == "title" || params[:order] == "Name" + when "title" q = q.order("title") + when "post_count" + q = q.joins(:tag).order("tags.post_count desc") + else + q = q.order("updated_at desc") end q diff --git a/app/views/wiki_pages/search.html.erb b/app/views/wiki_pages/search.html.erb index fb312f803..9e7555e85 100644 --- a/app/views/wiki_pages/search.html.erb +++ b/app/views/wiki_pages/search.html.erb @@ -13,7 +13,7 @@
- <%= select "search", "order", ["Name", "Date"] %> + <%= select "search", "order", [%w[Name title], %w[Date time], %w[Posts post_count]] %>