diff --git a/app/javascript/src/javascripts/autocomplete.js.erb b/app/javascript/src/javascripts/autocomplete.js.erb index 8375e2940..767955f2c 100644 --- a/app/javascript/src/javascripts/autocomplete.js.erb +++ b/app/javascript/src/javascripts/autocomplete.js.erb @@ -118,6 +118,7 @@ Autocomplete.initialize_tag_autocomplete = function() { case "parent": case "filetype": case "disapproval": + case "embedded": results = Autocomplete.static_metatag_source(term, metatag); break; case "user": @@ -272,6 +273,9 @@ Autocomplete.static_metatags = { locked: [ "rating", "note", "status" ], + embedded: [ + "true", "false" + ], child: [ "any", "none" ], diff --git a/app/logical/danbooru/has_bit_flags.rb b/app/logical/danbooru/has_bit_flags.rb index b130e1cc6..a8330f330 100644 --- a/app/logical/danbooru/has_bit_flags.rb +++ b/app/logical/danbooru/has_bit_flags.rb @@ -32,7 +32,7 @@ module Danbooru bits = attributes.length bit_index = bits - attributes.index(flag.to_s) - 1 - where(sanitize_sql(["get_bit(bit_prefs::bit(?), ?) = ?", bits, bit_index, value])) + where(sanitize_sql(["get_bit(#{field}::bit(?), ?) = ?", bits, bit_index, value])) end end end diff --git a/app/logical/post_query_builder.rb b/app/logical/post_query_builder.rb index 9ca5153c9..8a3ba0c58 100644 --- a/app/logical/post_query_builder.rb +++ b/app/logical/post_query_builder.rb @@ -440,6 +440,12 @@ class PostQueryBuilder relation = relation.where("posts.is_status_locked = FALSE") end + if q[:embedded] == "true" + relation = relation.bit_flags_match(:has_embedded_notes, true) + elsif q[:embedded] == "false" + relation = relation.bit_flags_match(:has_embedded_notes, false) + end + relation = add_tag_string_search_relation(q[:tags], relation) if q[:ordpool].present? diff --git a/app/models/tag.rb b/app/models/tag.rb index 1e872b590..d1637db2d 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -17,7 +17,7 @@ class Tag < ApplicationRecord -locked locked width height mpixels ratio score favcount filesize source -source id -id date age order limit -status status tagcount parent -parent child pixiv_id pixiv search upvote downvote filetype -filetype flagger - -flagger appealer -appealer disapproval -disapproval + -flagger appealer -appealer disapproval -disapproval embedded ] + TagCategory.short_name_list.map {|x| "#{x}tags"} + COUNT_METATAGS + COUNT_METATAG_SYNONYMS SUBQUERY_METATAGS = %w[commenter comm noter noteupdater artcomm flagger -flagger appealer -appealer] @@ -739,6 +739,9 @@ class Tag < ApplicationRecord when "status" q[:status] = g2.downcase + when "embedded" + q[:embedded] = g2.downcase + when "filetype" q[:filetype] = g2.downcase