fixes #2650: Add random mode to mod queue

This commit is contained in:
r888888888
2016-09-08 15:52:48 -07:00
parent d1674e4cbb
commit de34c7fca3
9 changed files with 115 additions and 1 deletions

View File

@@ -1,6 +1,18 @@
(function() { (function() {
Danbooru.ModQueue = {}; Danbooru.ModQueue = {};
Danbooru.ModQueue.processed = 0;
Danbooru.ModQueue.increment_processed = function() {
if (Danbooru.meta("random-mode") === "1") {
Danbooru.ModQueue.processed += 1;
if (Danbooru.ModQueue.processed === 5) {
window.location = Danbooru.meta("return-to");
}
}
}
Danbooru.ModQueue.initialize_approve_all_button = function() { Danbooru.ModQueue.initialize_approve_all_button = function() {
$("#approve-all-button").click(function(e) { $("#approve-all-button").click(function(e) {
if (!confirm("Are you sure you want to approve every post on this page?")) { if (!confirm("Are you sure you want to approve every post on this page?")) {

View File

@@ -4,6 +4,7 @@ module Moderator
before_filter :post_approvers_only before_filter :post_approvers_only
def create def create
cookies[:moderated] = Time.now.to_i
@post = ::Post.find(params[:post_id]) @post = ::Post.find(params[:post_id])
if @post.is_deleted? || @post.is_flagged? || @post.is_pending? if @post.is_deleted? || @post.is_flagged? || @post.is_pending?
@post.approve! @post.approve!

View File

@@ -4,6 +4,7 @@ module Moderator
before_filter :post_approvers_only before_filter :post_approvers_only
def create def create
cookies[:moderated] = Time.now.to_i
@post = ::Post.find(params[:post_id]) @post = ::Post.find(params[:post_id])
@post_disapproval = PostDisapproval.create(:post => @post, :user => CurrentUser.user, :reason => params[:reason] || "disinterest", :message => params[:message]) @post_disapproval = PostDisapproval.create(:post => @post, :user => CurrentUser.user, :reason => params[:reason] || "disinterest", :message => params[:message])
end end

View File

@@ -5,6 +5,8 @@ module Moderator
before_filter :post_approvers_only before_filter :post_approvers_only
def show def show
cookies[:moderated] = Time.now.to_i
if params[:per_page] if params[:per_page]
cookies.permanent["mq_per_page"] = params[:per_page] cookies.permanent["mq_per_page"] = params[:per_page]
end end
@@ -16,8 +18,22 @@ module Moderator
respond_with(@posts) respond_with(@posts)
end end
def random
cookies[:moderated] = Time.now.to_i
::Post.without_timeout do
@posts = ::Post.order("posts.id asc").pending_or_flagged.available_for_moderation(false).reorder("random()").limit(5)
@posts.each # hack to force rails to eager load
end
respond_with(@posts)
end
protected protected
def get_posts
end
def per_page def per_page
cookies["mq_per_page"] || params[:per_page] || 25 cookies["mq_per_page"] || params[:per_page] || 25
end end

View File

@@ -27,6 +27,12 @@ class PostsController < ApplicationController
end end
def show def show
if CurrentUser.is_janitor? && (cookies[:moderated].blank? || Time.at(cookies[:moderated].to_i) < 1.day.ago)
flash[:notice] = "You haven't moderated any posts recently. Consider checking the queue."
#redirect_to(random_moderator_post_queue_path(:return_to => request.original_url))
#return
end
@post = Post.find(params[:id]) @post = Post.find(params[:id])
@post_flag = PostFlag.new(:post_id => @post.id) @post_flag = PostFlag.new(:post_id => @post.id)
@post_appeal = PostAppeal.new(:post_id => @post.id) @post_appeal = PostAppeal.new(:post_id => @post.id)

View File

@@ -13,4 +13,6 @@ $("#pending-approval-notice").hide();
$("#c-moderator-post-queues #post-<%= @post.id %>").hide(); $("#c-moderator-post-queues #post-<%= @post.id %>").hide();
Danbooru.notice("Post was approved"); Danbooru.notice("Post was approved");
Danbooru.ModQueue.increment_processed();
<% end %> <% end %>

View File

@@ -12,4 +12,6 @@ $("#pending-approval-notice").hide();
$("#c-moderator-post-queues #post-<%= @post.id %>").remove(); $("#c-moderator-post-queues #post-<%= @post.id %>").remove();
Danbooru.notice("Post was hidden"); Danbooru.notice("Post was hidden");
Danbooru.ModQueue.increment_processed();
<% end %> <% end %>

View File

@@ -0,0 +1,70 @@
<div id="c-moderator-post-queues">
<div id="a-show">
<div>
<h1>Moderation Queue</h1>
<div id="moderation-guideline">
<p>Here are five random posts that are up for moderation. See if any of them are worth approving. Once you finish processing all of them you will be taken to the previous URL (<%= params[:return_to] %>).</p>
<h1>Deletion Guidelines</h1>
<p>
As a general rule, you should only approve of posts that you personally like. Posts that are not approved in three days will be automatically deleted. Posts with score -3 or lower are marked red. Posts with score 3 or higher are marked green. Posts with the duplicate tag are marked in yellow.
</p>
</div>
<% @posts.each do |post| %>
<div id="post-<%= post.id %>" class="post mod-queue-preview <%= PostPresenter.preview_class(post) %>" <%= PostPresenter.data_attributes(post) %> data-has-dup="<%= post.has_dup_tag? %>">
<aside>
<%= link_to(image_tag(post.preview_file_url), post_path(post), :target => "_blank") %>
</aside>
<section>
<ul>
<li>
<h2>
<%= link_to "Approve", moderator_post_approval_path(:post_id => post.id), :remote => true, :method => :post, :class => "approve-link" %>
| <%= link_to "Breaks Rules", moderator_post_disapproval_path(:post_id => post.id, :reason => "breaks_rules"), :remote => true, :method => :post, :class => "disapprove-link" %>
| <%= link_to "Poor Quality", moderator_post_disapproval_path(:post_id => post.id, :reason => "poor_quality"), :remote => true, :method => :post, :class => "disapprove-link" %>
| <%= link_to "No Interest", moderator_post_disapproval_path(:post_id => post.id, :reason => "disinterest"), :remote => true, :method => :post, :class => "disapprove-link" %>
| <%= link_to "Detailed Rejection", "#", "data-post-id" => post.id, :class => "detailed-rejection-link" %>
</h2>
</li>
<li><strong>Rating</strong>: <%= post.pretty_rating %></li>
<li><strong>Score</strong>: <%= post.score %></li>
<li>
<strong>Size:</strong>
<%= number_to_human_size(post.file_size) %>
<% if post.has_dimensions? %>
(<%= post.image_width %>x<%= post.image_height %>)
<% end %>
</li>
<li><strong>Uploader</strong>: <%= link_to_user(post.uploader) %> <%= time_ago_in_words_tagged(post.created_at) %></li>
<% if post.is_flagged? %>
<li><strong>Flagged</strong>: <%= post_flag_reasons(post) %></li>
<% end %>
<% if (post.is_flagged? || post.is_deleted?) && post.appeals.any? %>
<li><strong>Appeals</strong>: <%= post_appeal_reasons(post) %></li>
<% end %>
<li>
<strong>Hidden</strong>: <%= render "post_disapprovals/compact_counts", :disapprovals => post.disapprovals, :post => post %>
</li>
<li><strong>Tags</strong>: <%= post.tag_string %></li>
</ul>
</section>
</div>
<% end %>
</div>
</div>
</div>
<%= render "post_disapprovals/detailed_rejection_dialog" %>
<%= render "posts/partials/common/secondary_links" %>
<% content_for(:page_title) do %>
Mod Queue - <%= Danbooru.config.app_name %>
<% end %>
<% content_for(:html_header) do %>
<meta name="random-mode" content="1">
<meta name="return-to" content="<%= params[:return_to] %>">
<% end %>

View File

@@ -17,7 +17,11 @@ Rails.application.routes.draw do
resources :invitations, :only => [:new, :create, :index] resources :invitations, :only => [:new, :create, :index]
resource :tag, :only => [:edit, :update] resource :tag, :only => [:edit, :update]
namespace :post do namespace :post do
resource :queue, :only => [:show] resource :queue, :only => [:show] do
member do
get :random
end
end
resource :approval, :only => [:create] resource :approval, :only => [:create]
resource :disapproval, :only => [:create] resource :disapproval, :only => [:create]
resources :posts, :only => [:delete, :undelete, :expunge, :confirm_delete] do resources :posts, :only => [:delete, :undelete, :expunge, :confirm_delete] do