fixes #2869: Add way to differentiate Pool Descriptions from Pool History

This commit is contained in:
r888888888
2017-02-14 16:03:19 -08:00
parent aa41c41572
commit f374eec4a1
7 changed files with 61 additions and 11 deletions

View File

@@ -15,6 +15,16 @@ class PoolVersionsController < ApplicationController
end
end
def diff
@pool_version = PoolArchive.find(params[:id])
if params[:other_id]
@other_version = PoolArchive.find(params[:other_id])
else
@other_version = @pool_version.previous
end
end
private
def check_availabililty

View File

@@ -1,22 +1,19 @@
module PoolVersionsHelper
def pool_version_diff(pool_version)
def pool_version_diff(pool_version, previous = nil, options = {})
html = ""
html << pool_version.added_post_ids.map do |post_id|
diff = pool_version.build_diff(previous)
html << diff[:added_post_ids].map do |post_id|
'<ins><a href="/posts/' + post_id.to_s + '">' + post_id.to_s + '</a></ins>'
end.join(" ")
html << " "
html << pool_version.removed_post_ids.map do |post_id|
html << diff[:removed_post_ids].map do |post_id|
'<del><a href="/posts/' + post_id.to_s + '">' + post_id.to_s + '</a></del>'
end.join(" ")
if pool_version.description_changed?
html << '<ins>desc:' + h(pool_version.description) + '</ins> '
html << '<del>desc:' + h(pool_version.previous.description) + '</del> '
end
return html.html_safe
end
end

View File

@@ -31,11 +31,11 @@ private
def create_mod_actions
if old_can_approve_posts != user.can_approve_posts?
ModAction.log("#{promoter.name} changed approval privileges for #{user.name} from #{old_can_approve_posts} to [b]#{user.can_approve_posts?}[/b]")
ModAction.log("\"#{promoter.name}\":/users/#{promoter.id} changed approval privileges for \"#{user.name}\":/users/#{user.id} from #{old_can_approve_posts} to [b]#{user.can_approve_posts?}[/b]")
end
if old_can_upload_free != user.can_upload_free?
ModAction.log("#{promoter.name} changed unlimited upload privileges for #{user.name} from #{old_can_upload_free} to [b]#{user.can_upload_free?}[/b]")
ModAction.log("\"#{promoter.name}\":/users/#{promoter.id} changed unlimited upload privileges for \"#{user.name}\":/users/#{user.id} from #{old_can_upload_free} to [b]#{user.can_upload_free?}[/b]")
end
end

View File

@@ -62,6 +62,24 @@ class PoolArchive < ActiveRecord::Base
sqs_service.send_message(msg)
end
def build_diff(other = nil)
diff = {}
prev = previous
if prev.nil?
diff[:added_post_ids] = added_post_ids
diff[:removed_post_ids] = removed_post_ids
diff[:added_desc] = description
else
diff[:added_post_ids] = post_ids - prev.post_ids
diff[:removed_post_ids] = prev.post_ids - post_ids
diff[:added_desc] = description
diff[:removed_desc] = prev.description
end
diff
end
def previous
PoolArchive.where("pool_id = ? and version < ?", pool_id, version).order("version desc").first
end

View File

@@ -0,0 +1,19 @@
<div id="c-pools">
<div id="a-diff">
<h1>Pool Version Comparison: <%= @pool_version.name %></h1>
<ul>
<li><strong>Posts</strong>: <%= pool_version_diff(@pool_version, @other_version) %></li>
<% if @other_version %>
<li><strong>Old Desc</strong>: <%= @other_version.description %></li>
<% end %>
<li><strong>New Desc</strong>: <%= @pool_version.description %></li>
</ul>
</div>
</div>
<%= render "pools/secondary_links" %>
<% content_for(:page_title) do %>
Pool Version Comparison - <%= @pool_version.name %> - <%= Danbooru.config.app_name %>
<% end %>

View File

@@ -8,6 +8,7 @@
<th>Pool</th>
<th>Post Count</th>
<th>Changes</th>
<th>Desc Chg</th>
<th>Updater</th>
<% if CurrentUser.is_moderator? %>
<th>IP Address</th>
@@ -24,6 +25,7 @@
<td><%= link_to pool_version.pretty_name, pool_path(pool_version.pool_id), :class => "pool-category-#{pool_version.pool.category}" %></td>
<td><%= link_to pool_version.post_ids.size, pool_versions_path(:search => {:pool_id => pool_version.pool_id}) %></td>
<td><%= pool_version_diff(pool_version) %></td>
<td><%= link_to_if pool_version.description_changed, pool_version.description_changed, diff_pool_version_path(pool_version.id) %></td>
<td><%= link_to_user pool_version.updater %></td>
<% if CurrentUser.is_moderator? %>
<td>

View File

@@ -187,7 +187,11 @@ Rails.application.routes.draw do
get :all_select
end
end
resources :pool_versions, :only => [:index]
resources :pool_versions, :only => [:index] do
member do
get :diff
end
end
resources :posts do
resources :events, :only => [:index], :controller => "post_events"
resource :artist_commentary, :only => [:index, :show] do