modqueue: add order options; change default order to newest first.

* Add options for changing the order of the modqueue (newest first,
  oldest first, highest scoring first, lowest scoring first).

* Change the default order from oldest posts first to most recently
  flagged or uploaded posts first.

* Add an order:modqueue metatag to order by most recently flagged or
  uploaded in standard searches.
This commit is contained in:
evazion
2020-03-03 00:52:18 -06:00
parent 9ddf408ec5
commit 04b69954eb
6 changed files with 51 additions and 13 deletions

View File

@@ -11,7 +11,7 @@ class ApplicationRecord < ActiveRecord::Base
extending(PaginationExtension).paginate(*args, **options)
end
def paginated_search(params, defaults: {}, count_pages: params[:search].present?)
def paginated_search(params, count_pages: params[:search].present?, **defaults)
search_params = params.fetch(:search, {}).permit!
search_params = defaults.merge(search_params).with_indifferent_access

View File

@@ -1546,6 +1546,30 @@ class Post < ApplicationRecord
def tag_match(query)
PostQueryBuilder.new(query).build
end
def search(params)
q = super
q = q.search_attributes(params,
:approver, :uploader, :rating, :source, :pixiv_id, :fav_count, :score, :up_score,
:down_score, :md5, :file_ext, :file_size, :image_width, :image_height, :tag_count,
:parent, :has_children, :has_active_children, :is_note_locked, :is_rating_locked,
:is_status_locked, :is_pending, :is_flagged, :is_deleted, :is_banned,
:last_comment_bumped_at, :last_commented_at, :last_noted_at
)
if params[:tags].present?
q = q.tag_match(params[:tags])
end
if params[:order].present?
q = PostQueryBuilder.search_order(q, params[:order])
else
q = q.apply_default_order(params)
end
q
end
end
module PixivMethods

View File

@@ -38,6 +38,7 @@ class Tag < ApplicationRecord
tagcount tagcount_asc
rank
curated
modqueue
random
custom
] +