diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 42068c043..a1139ca99 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -303,7 +303,7 @@ module ApplicationHelper id name level level_string theme always_resize_images can_upload_free can_approve_posts disable_categorized_saved_searches disable_mobile_gestures disable_post_tooltips enable_safe_mode - show_deleted_children style_usernames + show_deleted_posts show_deleted_children style_usernames default_image_size ] + User::Roles.map { |role| :"is_#{role}?" } diff --git a/app/logical/post_sets/post.rb b/app/logical/post_sets/post.rb index 0a6efd87c..5f9bcdf5c 100644 --- a/app/logical/post_sets/post.rb +++ b/app/logical/post_sets/post.rb @@ -12,11 +12,12 @@ module PostSets MAX_SIDEBAR_TAGS = 25 MAX_WILDCARD_TAGS = PostQueryBuilder::MAX_WILDCARD_TAGS - attr_reader :page, :format, :tag_string, :query, :post_query, :normalized_query, :show_votes + attr_reader :current_user, :page, :format, :tag_string, :query, :post_query, :normalized_query, :show_votes delegate :tag, to: :post_query alias_method :show_votes?, :show_votes def initialize(tags, page = 1, per_page = nil, user: CurrentUser.user, format: "html", show_votes: false) + @current_user = user @query = PostQueryBuilder.new(tags, user, tag_limit: user.tag_query_limit, safe_mode: CurrentUser.safe_mode?) @post_query = PostQuery.normalize(tags, current_user: user, tag_limit: user.tag_query_limit, safe_mode: CurrentUser.safe_mode?) @normalized_query = post_query.with_implicit_metatags @@ -134,6 +135,10 @@ module PostSets end def show_deleted? + current_user.show_deleted_posts? || has_status_metatag? + end + + def has_status_metatag? post_query.select_metatags("status").any? do |metatag| metatag.value.downcase.in?(%w[all any active unmoderated modqueue deleted appealed]) end diff --git a/app/models/user.rb b/app/models/user.rb index 0bbd3a6c0..d2c41cfc1 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -65,6 +65,7 @@ class User < ApplicationRecord no_feedback requires_verification is_verified + show_deleted_posts ] DEFAULT_BLACKLIST = ["guro", "scat", "furry -rating:s"].join("\n") diff --git a/app/policies/user_policy.rb b/app/policies/user_policy.rb index 55a13c540..f840dd50a 100644 --- a/app/policies/user_policy.rb +++ b/app/policies/user_policy.rb @@ -47,7 +47,7 @@ class UserPolicy < ApplicationPolicy blacklisted_tags time_zone per_page custom_style theme receive_email_notifications always_resize_images new_post_navigation_layout enable_private_favorites - style_usernames show_deleted_children + style_usernames show_deleted_posts show_deleted_children disable_categorized_saved_searches disable_tagged_filenames disable_mobile_gestures enable_safe_mode enable_desktop_mode disable_post_tooltips diff --git a/app/views/users/edit.html.erb b/app/views/users/edit.html.erb index 00b3aeaaf..351ba0a2b 100644 --- a/app/views/users/edit.html.erb +++ b/app/views/users/edit.html.erb @@ -60,6 +60,7 @@ <%= f.input :style_usernames, :as => :select, :label => "Colored usernames", :hint => "Color users according to their user level", :include_blank => false, :collection => [["Yes", "true"], ["No", "false"]] %> <%= f.input :new_post_navigation_layout, :as => :select, :label => "Navigation bar position", :include_blank => false, :collection => [["Below", "true"], ["Above", "false"]], :hint => "When browsing pools or posts, place navigation links above or below the image" %> + <%= f.input :show_deleted_posts, as: :select, hint: "Show deleted posts in searches", collection: [["No", "false"], ["Yes", "true"]], include_blank: false %> <%= f.input :show_deleted_children, :as => :select, :label => "Show deleted children", :hint => "Show thumbnail borders on parent posts even if the children are deleted", :include_blank => false, :collection => [["Yes", "true"], ["No", "false"]] %> <%= f.input :disable_categorized_saved_searches, :hint => "Don't show dialog box when creating a new saved search", :as => :select, :collection => [["No", "false"], ["Yes", "true"]], :include_blank => false %> <% if policy(@user).can_enable_private_favorites? %>