From 89432b7ac1bcb4ebaf9f674a22ce2d9ec9a47174 Mon Sep 17 00:00:00 2001 From: Kyle Drake Date: Tue, 23 Sep 2025 20:17:04 -0500 Subject: [PATCH] needs_moderation flag --- app/admin.rb | 18 ++++++++++++++++++ app/browse.rb | 6 ++++++ migrations/133_sites_needs_moderation.rb | 9 +++++++++ views/browse.erb | 11 +++++++++++ 4 files changed, 44 insertions(+) create mode 100644 migrations/133_sites_needs_moderation.rb diff --git a/app/admin.rb b/app/admin.rb index adefa97d..f2f6380d 100644 --- a/app/admin.rb +++ b/app/admin.rb @@ -338,6 +338,24 @@ post '/admin/unmark_nsfw' do redirect request.referrer end +post '/admin/mark_moderated' do + require_admin + + not_found if params[:site_id].blank? + site = Site[params[:site_id]] + not_found if site.nil? + + site_ids = Site.select(:id).where(needs_moderation: true, site_changed: true).exclude(is_deleted: true).where{created_at >= site.created_at}.all.collect {|s| s.id} + + DB[:sites].where(id: site_ids).update(needs_moderation: false) + + uri = Addressable::URI.parse request.referer + query = Rack::Utils.parse_query uri.query + query.delete 'page' + uri.query = query.empty? ? nil : Rack::Utils.build_query(query) + redirect uri.to_s +end + post '/admin/feature' do require_admin site = Site[username: params[:username]] diff --git a/app/browse.rb b/app/browse.rb index d920f3a2..c21fd311 100644 --- a/app/browse.rb +++ b/app/browse.rb @@ -80,6 +80,10 @@ def browse_sites_dataset ds = ds.where{views > Site::BROWSE_MINIMUM_VIEWS} unless current_site && current_site.is_admin ds = ds.exclude site_updated_at: nil ds = ds.order :created_at.desc, :views.desc + when 'moderation' + not_found unless current_site && current_site.is_admin + ds = ds.where(needs_moderation: true, site_changed: true) + ds = ds.order :created_at.desc when 'oldest' ds = ds.where{score > 0.4} unless params[:tag] ds = ds.exclude site_updated_at: nil @@ -105,6 +109,8 @@ def browse_sites_dataset ds = ds.inner_join :blocks, :site_id => :id ds = ds.group :sites__id ds = ds.order :total.desc + else + not_found end ds = ds.where ['sites.is_nsfw = ?', (params[:is_nsfw] == 'true' ? true : false)] diff --git a/migrations/133_sites_needs_moderation.rb b/migrations/133_sites_needs_moderation.rb new file mode 100644 index 00000000..760dfd07 --- /dev/null +++ b/migrations/133_sites_needs_moderation.rb @@ -0,0 +1,9 @@ +Sequel.migration do + up { + DB.add_column :sites, :needs_moderation, :boolean, default: true + } + + down { + DB.drop_column :sites, :needs_moderation + } +end \ No newline at end of file diff --git a/views/browse.erb b/views/browse.erb index 2a736c1c..1a7ad5b0 100644 --- a/views/browse.erb +++ b/views/browse.erb @@ -26,6 +26,9 @@ <% end %> + <% if current_site && current_site.is_admin %> + + <% end %> @@ -117,6 +120,14 @@ + + <% if params[:sort_by] == 'moderation' %> +
+ <%== csrf_token_input_html %> + + +
+ <% end %> <% if params[:sort_by] == 'blocks' %>