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() {
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() {
$("#approve-all-button").click(function(e) {
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
def create
cookies[:moderated] = Time.now.to_i
@post = ::Post.find(params[:post_id])
if @post.is_deleted? || @post.is_flagged? || @post.is_pending?
@post.approve!

View File

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

View File

@@ -5,6 +5,8 @@ module Moderator
before_filter :post_approvers_only
def show
cookies[:moderated] = Time.now.to_i
if params[:per_page]
cookies.permanent["mq_per_page"] = params[:per_page]
end
@@ -16,8 +18,22 @@ module Moderator
respond_with(@posts)
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
def get_posts
end
def per_page
cookies["mq_per_page"] || params[:per_page] || 25
end

View File

@@ -27,6 +27,12 @@ class PostsController < ApplicationController
end
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_flag = PostFlag.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();
Danbooru.notice("Post was approved");
Danbooru.ModQueue.increment_processed();
<% end %>

View File

@@ -12,4 +12,6 @@ $("#pending-approval-notice").hide();
$("#c-moderator-post-queues #post-<%= @post.id %>").remove();
Danbooru.notice("Post was hidden");
Danbooru.ModQueue.increment_processed();
<% 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]
resource :tag, :only => [:edit, :update]
namespace :post do
resource :queue, :only => [:show]
resource :queue, :only => [:show] do
member do
get :random
end
end
resource :approval, :only => [:create]
resource :disapproval, :only => [:create]
resources :posts, :only => [:delete, :undelete, :expunge, :confirm_delete] do