From f374eec4a1573e0cebb4a3cd693ed95ce970e596 Mon Sep 17 00:00:00 2001 From: r888888888 Date: Tue, 14 Feb 2017 16:03:19 -0800 Subject: [PATCH] fixes #2869: Add way to differentiate Pool Descriptions from Pool History --- app/controllers/pool_versions_controller.rb | 10 ++++++++++ app/helpers/pool_versions_helper.rb | 13 +++++-------- app/logical/user_promotion.rb | 4 ++-- app/models/pool_archive.rb | 18 ++++++++++++++++++ app/views/pool_versions/diff.html.erb | 19 +++++++++++++++++++ app/views/pool_versions/index.html.erb | 2 ++ config/routes.rb | 6 +++++- 7 files changed, 61 insertions(+), 11 deletions(-) create mode 100644 app/views/pool_versions/diff.html.erb diff --git a/app/controllers/pool_versions_controller.rb b/app/controllers/pool_versions_controller.rb index 5ab18aa7a..ca5d44dd4 100644 --- a/app/controllers/pool_versions_controller.rb +++ b/app/controllers/pool_versions_controller.rb @@ -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 diff --git a/app/helpers/pool_versions_helper.rb b/app/helpers/pool_versions_helper.rb index 8c25df57d..05898ca02 100644 --- a/app/helpers/pool_versions_helper.rb +++ b/app/helpers/pool_versions_helper.rb @@ -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| '' + post_id.to_s + '' end.join(" ") html << " " - html << pool_version.removed_post_ids.map do |post_id| + html << diff[:removed_post_ids].map do |post_id| '' + post_id.to_s + '' end.join(" ") - if pool_version.description_changed? - html << 'desc:' + h(pool_version.description) + ' ' - html << 'desc:' + h(pool_version.previous.description) + ' ' - end - return html.html_safe end end diff --git a/app/logical/user_promotion.rb b/app/logical/user_promotion.rb index bc3283256..69e2a8edb 100644 --- a/app/logical/user_promotion.rb +++ b/app/logical/user_promotion.rb @@ -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 diff --git a/app/models/pool_archive.rb b/app/models/pool_archive.rb index ff38de4f9..e050e097d 100644 --- a/app/models/pool_archive.rb +++ b/app/models/pool_archive.rb @@ -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 diff --git a/app/views/pool_versions/diff.html.erb b/app/views/pool_versions/diff.html.erb new file mode 100644 index 000000000..c0ab1e2ee --- /dev/null +++ b/app/views/pool_versions/diff.html.erb @@ -0,0 +1,19 @@ +
+
+

Pool Version Comparison: <%= @pool_version.name %>

+ +
    +
  • Posts: <%= pool_version_diff(@pool_version, @other_version) %>
  • + <% if @other_version %> +
  • Old Desc: <%= @other_version.description %>
  • + <% end %> +
  • New Desc: <%= @pool_version.description %>
  • +
+
+
+ +<%= render "pools/secondary_links" %> + +<% content_for(:page_title) do %> + Pool Version Comparison - <%= @pool_version.name %> - <%= Danbooru.config.app_name %> +<% end %> diff --git a/app/views/pool_versions/index.html.erb b/app/views/pool_versions/index.html.erb index f7c0ecc37..ddca76a92 100644 --- a/app/views/pool_versions/index.html.erb +++ b/app/views/pool_versions/index.html.erb @@ -8,6 +8,7 @@ Pool Post Count Changes + Desc Chg Updater <% if CurrentUser.is_moderator? %> IP Address @@ -24,6 +25,7 @@ <%= link_to pool_version.pretty_name, pool_path(pool_version.pool_id), :class => "pool-category-#{pool_version.pool.category}" %> <%= link_to pool_version.post_ids.size, pool_versions_path(:search => {:pool_id => pool_version.pool_id}) %> <%= pool_version_diff(pool_version) %> + <%= link_to_if pool_version.description_changed, pool_version.description_changed, diff_pool_version_path(pool_version.id) %> <%= link_to_user pool_version.updater %> <% if CurrentUser.is_moderator? %> diff --git a/config/routes.rb b/config/routes.rb index 387f0b572..cae450c4a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -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