From a95e57d93864a549e1366d98ac276e466e951bcf Mon Sep 17 00:00:00 2001 From: BrokenEagle Date: Tue, 17 Mar 2020 05:23:51 +0000 Subject: [PATCH 1/3] Move more logic to the helper modules - Diff view changes -- Only show pool description changes in diff view -- Conditionally render diff link when applicable values are changed -- Conditionally show diff view sections when values are changed - Show renames on index view -- There is plenty of space -- This wasn't shown at all for wikis -- Having to navigate to an alternate page is unwieldy for pools - Show "posts" as a status on pools -- This is so all changes among versions are quantified as a status - Standardize diff/index titles --- app/helpers/application_helper.rb | 5 +++ app/helpers/artist_versions_helper.rb | 20 +++++++++ app/helpers/pool_versions_helper.rb | 31 ++++++++++++++ app/helpers/post_versions_helper.rb | 41 ++++++++++++++++--- app/helpers/wiki_page_versions_helper.rb | 21 +++++++++- app/models/pool_version.rb | 26 +++--------- app/models/post_version.rb | 34 --------------- .../artist_commentary_versions/index.html.erb | 2 +- app/views/artist_versions/_listing.html.erb | 9 ++-- app/views/note_versions/index.html.erb | 2 +- app/views/pool_versions/_listing.html.erb | 7 ++-- app/views/pool_versions/diff.html.erb | 32 ++++----------- app/views/post_versions/index.html.erb | 4 +- .../wiki_page_versions/_listing.html.erb | 5 ++- app/views/wiki_page_versions/diff.html.erb | 18 +++++--- 15 files changed, 152 insertions(+), 105 deletions(-) create mode 100644 app/helpers/pool_versions_helper.rb diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 8a5af6ace..0548842b6 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -10,6 +10,11 @@ module ApplicationHelper render "diff_list", diff: diff, ul_class: ul_class, li_class: li_class end + def diff_name_html(this_name, prev_name) + pattern = Regexp.new('.') + DiffBuilder.new(this_name, prev_name, pattern).build + end + def diff_body_html(record, previous, field) return h(record[field]).gsub(/\r?\n/, '
').html_safe if previous.blank? diff --git a/app/helpers/artist_versions_helper.rb b/app/helpers/artist_versions_helper.rb index 1f55b471e..b9cf1269e 100644 --- a/app/helpers/artist_versions_helper.rb +++ b/app/helpers/artist_versions_helper.rb @@ -14,4 +14,24 @@ module ArtistVersionsHelper diff_list_html(new_urls, old_urls, latest_urls) end + + def artist_version_name_diff(artist_version) + previous = artist_version.previous + if previous.present? && (artist_version.name != previous.name) + name_diff = diff_name_html(artist_version.name, previous.name) + %(

Rename:
 #{name_diff}

).html_safe + else + "" + end + end + + def artist_version_group_name_diff(artist_version) + previous = artist_version.previous + if artist_version.group_name.present? || (previous.present? && previous.group_name.present?) + group_name_diff = diff_name_html(artist_version.group_name, previous.group_name) + %(Group:
 #{group_name_diff}

).html_safe + else + "" + end + end end diff --git a/app/helpers/pool_versions_helper.rb b/app/helpers/pool_versions_helper.rb new file mode 100644 index 000000000..c12e56a2c --- /dev/null +++ b/app/helpers/pool_versions_helper.rb @@ -0,0 +1,31 @@ +module PoolVersionsHelper + def pool_version_show_diff(pool_version) + previous = pool_version.previous + previous.present? && pool_version.description != previous.description + end + + def pool_version_name_diff(pool_version) + previous = pool_version.previous + if previous.present? && (pool_version.name != previous.name) + name_diff = diff_name_html(pool_version.pretty_name, previous.pretty_name) + %(

Rename:
 #{name_diff}

).html_safe + else + "" + end + end + + def pool_version_post_diff(pool_version) + previous = pool_version.previous + diff = {} + + if previous.present? + diff[:added_post_ids] = pool_version.post_ids - previous.post_ids + diff[:removed_post_ids] = previous.post_ids - pool_version.post_ids + else + diff[:added_post_ids] = pool_version.added_post_ids + diff[:removed_post_ids] = pool_version.removed_post_ids + end + + render "pool_versions/diff", diff: diff + end +end diff --git a/app/helpers/post_versions_helper.rb b/app/helpers/post_versions_helper.rb index 062deebf4..c2994004d 100644 --- a/app/helpers/post_versions_helper.rb +++ b/app/helpers/post_versions_helper.rb @@ -1,19 +1,48 @@ module PostVersionsHelper def post_version_diff(post_version) - diff = post_version.diff(post_version.previous) + previous = post_version.previous + post = post_version.post + + if post.nil? + latest_tags = post_version.tag_array + else + latest_tags = post.tag_array + latest_tags << "rating:#{post.rating}" if post.rating.present? + latest_tags << "parent:#{post.parent_id}" if post.parent_id.present? + latest_tags << "source:#{post.source}" if post.source.present? + end + + new_tags = post_version.tag_array + new_tags << "rating:#{post_version.rating}" if post_version.rating.present? + new_tags << "parent:#{post_version.parent_id}" if post_version.parent_id.present? + new_tags << "source:#{post_version.source}" if post_version.source.present? + + old_tags = previous.present? ? previous.tag_array : [] + if previous.present? + old_tags << "rating:#{previous.rating}" if previous.rating.present? + old_tags << "parent:#{previous.parent_id}" if previous.parent_id.present? + old_tags << "source:#{previous.source}" if previous.source.present? + end + + added_tags = new_tags - old_tags + removed_tags = old_tags - new_tags + obsolete_added_tags = added_tags - latest_tags, + obsolete_removed_tags = removed_tags & latest_tags, + unchanged_tags = new_tags & old_tags + html = '' - diff[:added_tags].each do |tag| - prefix = diff[:obsolete_added_tags].include?(tag) ? '+' : '+' + added_tags.each do |tag| + prefix = obsolete_added_tags.include?(tag) ? '+' : '+' html << prefix + link_to(wordbreakify(tag), posts_path(:tags => tag)) + '' html << " " end - diff[:removed_tags].each do |tag| - prefix = diff[:obsolete_removed_tags].include?(tag) ? '-' : '-' + removed_tags.each do |tag| + prefix = obsolete_removed_tags.include?(tag) ? '-' : '-' html << prefix + link_to(wordbreakify(tag), posts_path(:tags => tag)) + '' html << " " end - diff[:unchanged_tags].each do |tag| + unchanged_tags.each do |tag| html << '' + link_to(wordbreakify(tag), posts_path(:tags => tag)) + '' html << " " end diff --git a/app/helpers/wiki_page_versions_helper.rb b/app/helpers/wiki_page_versions_helper.rb index 0dd614045..6c8fb9b39 100644 --- a/app/helpers/wiki_page_versions_helper.rb +++ b/app/helpers/wiki_page_versions_helper.rb @@ -1,9 +1,28 @@ module WikiPageVersionsHelper - def wiki_other_names_diff(new_version, old_version) + def wiki_version_show_diff(wiki_page_version) + previous = wiki_page_version.previous + previous.present? && ((wiki_page_version.body != previous.body) || wiki_page_version.other_names_changed) + end + + def wiki_version_show_other_names(new_version, old_version) + ((new_version.other_names - old_version.other_names) | (old_version.other_names - new_version.other_names)).length > 0 + end + + def wiki_version_other_names_diff(new_version, old_version) new_names = new_version.other_names old_names = old_version.other_names latest_names = new_version.wiki_page.other_names diff_list_html(new_names, old_names, latest_names, ul_class: ["wiki-other-names-diff-list list-inline"], li_class: ["wiki-other-name"]) end + + def wiki_version_title_diff(wiki_page_version) + previous = wiki_page_version.previous + if previous.present? && (wiki_page_version.title != previous.title) + name_diff = diff_name_html(wiki_page_version.title, previous.title) + %((Rename: #{name_diff})).html_safe + else + "" + end + end end diff --git a/app/models/pool_version.rb b/app/models/pool_version.rb index 5e9f18342..b8e0e64d0 100644 --- a/app/models/pool_version.rb +++ b/app/models/pool_version.rb @@ -89,23 +89,6 @@ class PoolVersion < ApplicationRecord normalize_name(name).mb_chars.downcase end - def build_diff(other = previous) - diff = {} - - if other.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 - other.post_ids - diff[:removed_post_ids] = other.post_ids - post_ids - diff[:added_desc] = description - diff[:removed_desc] = other.description - end - - diff - end - def previous @previous ||= begin PoolVersion.where("pool_id = ? and version < ?", pool_id, version).order("version desc").limit(1).to_a @@ -115,6 +98,7 @@ class PoolVersion < ApplicationRecord def self.status_fields { + posts_changed: "Posts", name: "Renamed", description: "Description", was_deleted: "Deleted", @@ -124,6 +108,10 @@ class PoolVersion < ApplicationRecord } end + def posts_changed + ((post_ids - previous.post_ids) | (previous.post_ids - post_ids)).length > 0 + end + def was_deleted is_deleted && !previous.is_deleted end @@ -140,10 +128,6 @@ class PoolVersion < ApplicationRecord !is_active && previous.is_active end - def text_field_changed - previous.present? && (name_changed || description_changed) - end - def pretty_name name.tr("_", " ") end diff --git a/app/models/post_version.rb b/app/models/post_version.rb index fe73e2641..869fa2140 100644 --- a/app/models/post_version.rb +++ b/app/models/post_version.rb @@ -112,40 +112,6 @@ class PostVersion < ApplicationRecord } end - def diff(version = nil) - if post.nil? - latest_tags = tag_array - else - latest_tags = post.tag_array - latest_tags << "rating:#{post.rating}" if post.rating.present? - latest_tags << "parent:#{post.parent_id}" if post.parent_id.present? - latest_tags << "source:#{post.source}" if post.source.present? - end - - new_tags = tag_array - new_tags << "rating:#{rating}" if rating.present? - new_tags << "parent:#{parent_id}" if parent_id.present? - new_tags << "source:#{source}" if source.present? - - old_tags = version.present? ? version.tag_array : [] - if version.present? - old_tags << "rating:#{version.rating}" if version.rating.present? - old_tags << "parent:#{version.parent_id}" if version.parent_id.present? - old_tags << "source:#{version.source}" if version.source.present? - end - - added_tags = new_tags - old_tags - removed_tags = old_tags - new_tags - - return { - :added_tags => added_tags, - :removed_tags => removed_tags, - :obsolete_added_tags => added_tags - latest_tags, - :obsolete_removed_tags => removed_tags & latest_tags, - :unchanged_tags => new_tags & old_tags - } - end - def changes delta = { :added_tags => added_tags, diff --git a/app/views/artist_commentary_versions/index.html.erb b/app/views/artist_commentary_versions/index.html.erb index 573722507..fac35c5af 100644 --- a/app/views/artist_commentary_versions/index.html.erb +++ b/app/views/artist_commentary_versions/index.html.erb @@ -1,6 +1,6 @@
-

Artist Commentary Changes

+

Artist Commentary History

<%= render "posts/partials/common/inline_blacklist" %> diff --git a/app/views/artist_versions/_listing.html.erb b/app/views/artist_versions/_listing.html.erb index 5051698cd..e473de899 100644 --- a/app/views/artist_versions/_listing.html.erb +++ b/app/views/artist_versions/_listing.html.erb @@ -1,14 +1,13 @@
<%= table_for @artist_versions, {class: "striped autofit", width: "100%"} do |t| %> - <% t.column "Name" do |artist_version| %> + <% t.column "Name", td: {class: "diff-body"} do |artist_version| %> <%= link_to artist_version.name, artist_path(artist_version.artist_id) %> <%= link_to "»", artist_versions_path(search: {artist_id: artist_version.artist_id}, anchor: "artist-version-#{artist_version.id}") %> + <%= artist_version_name_diff(artist_version) %> <% end %> - <% t.column "Other Names" do |artist_version| %> - <% if artist_version.group_name.present? %> -

Group:
 <%= artist_version.group_name %>

- <% end %> + <% t.column "Other Names", td: {class: "diff-body"} do |artist_version| %> + <%= artist_version_group_name_diff(artist_version) %> <%= artist_version_other_names_diff(artist_version) %> <% end %> <% t.column "URLs", td: {class: "col-expand"} do |artist_version| %> diff --git a/app/views/note_versions/index.html.erb b/app/views/note_versions/index.html.erb index 674379814..c0e9b62fe 100644 --- a/app/views/note_versions/index.html.erb +++ b/app/views/note_versions/index.html.erb @@ -1,6 +1,6 @@
-

Note Changes

+

Note History

<%= render "listing" %> diff --git a/app/views/pool_versions/_listing.html.erb b/app/views/pool_versions/_listing.html.erb index e0102d63d..382814f3e 100644 --- a/app/views/pool_versions/_listing.html.erb +++ b/app/views/pool_versions/_listing.html.erb @@ -2,14 +2,15 @@ <%= table_for @pool_versions, {class: "striped autofit", width: "100%"} do |t| %> <% t.column column: "diff", width: "3%" do |pool_version| %> - <%= link_to_if pool_version.text_field_changed, "diff", diff_pool_version_path(pool_version.id) %> + <%= link_to_if pool_version_show_diff(pool_version), "diff", diff_pool_version_path(pool_version.id) %> <% end %> - <% t.column "Pool" do |pool_version| %> + <% t.column "Pool", td: {class: "diff-body"} do |pool_version| %> <%= link_to pool_version.pretty_name, pool_path(pool_version.pool_id), class: "pool-category-#{pool_version.pool.category}" %> <%= link_to "»", pool_versions_path(search: { pool_id: pool_version.pool_id }, anchor: "pool-version-#{pool_version.id}"), class: "pool-category-#{pool_version.pool.category}" %> + <%= pool_version_name_diff(pool_version) %> <% end %> <% t.column "Post Changes", td: { class: "col-expand" } do |pool_version| %> - <%= render "pool_versions/diff", diff: pool_version.build_diff %> + <%= pool_version_post_diff(pool_version) %> <% end %> <% t.column "Post Count" do |pool_version| %> <%= link_to pool_version.post_ids.size, pool_versions_path(search: { pool_id: pool_version.pool_id }) %> diff --git a/app/views/pool_versions/diff.html.erb b/app/views/pool_versions/diff.html.erb index 4d89b4707..0f0be8b1f 100644 --- a/app/views/pool_versions/diff.html.erb +++ b/app/views/pool_versions/diff.html.erb @@ -3,34 +3,18 @@
-

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

+

Pool Version Comparison: <%= link_to @pool_version.pretty_name, pool_versions_path(search: { pool_id: @pool_version.pool_id }, anchor: "pool-version-#{@pool_version.id}"), class: "pool-category-#{@pool_version.pool.category}" %>

<% if @other_version.present? %>

Showing differences between <%= compact_time @pool_version.updated_at %> (<%= link_to_user @pool_version.updater %>) and <%= compact_time @other_version.updated_at %> (<%= link_to_user @other_version.updater %>)

-
-

Name:

-

- <% if @pool_version.name != @other_version.name %> - <%= @other_version.name %> -> <%= @pool_version.name %> - <% else %> - <%= @pool_version.name %> - <% end %> -

-
-
-

Posts:

-

<%= render "pool_versions/diff", diff: @pool_version.build_diff(@other_version) %>

-
-
-

Description:

-

- <% if @pool_version.description != @other_version.description %> + + <% if @pool_version.description != @other_version.description %> +

<%= diff_body_html(@pool_version, @other_version, :description) %> - <% else %> - Unchanged. - <% end %> -

-
+
+ <% else %> +

No changes to description.

+ <% end %> <% end %>
diff --git a/app/views/post_versions/index.html.erb b/app/views/post_versions/index.html.erb index bba7d89ae..9fbe4a28d 100644 --- a/app/views/post_versions/index.html.erb +++ b/app/views/post_versions/index.html.erb @@ -1,9 +1,9 @@
<% if listing_type(:post_id) == :revert && @post_versions.present? %> -

Tag History: <%= link_to "Post ##{params.dig(:search, :post_id)}", @post_versions[0].post %>

+

Post History: <%= link_to "Post ##{params.dig(:search, :post_id)}", @post_versions[0].post %>

<% else %> -

Tag History

+

Post History

<% end %> <%= search_form_for(post_versions_path, classes: "inline-form") do |f| %> diff --git a/app/views/wiki_page_versions/_listing.html.erb b/app/views/wiki_page_versions/_listing.html.erb index 21998b425..36469aca0 100644 --- a/app/views/wiki_page_versions/_listing.html.erb +++ b/app/views/wiki_page_versions/_listing.html.erb @@ -2,7 +2,7 @@ <%= form_tag(diff_wiki_page_versions_path, :method => :get) do %> <%= table_for @wiki_page_versions.includes(:updater, :tag), width: "100%" do |t| %> <% t.column column: "diff", width: "3%" do |wiki_page_version, i| %> - <%= link_to_if wiki_page_version.previous.present?, "diff", diff_wiki_page_versions_path(otherpage: wiki_page_version.previous.try(:id), thispage: wiki_page_version.id) %> + <%= link_to_if wiki_version_show_diff(wiki_page_version), "diff", diff_wiki_page_versions_path(otherpage: wiki_page_version.previous.try(:id), thispage: wiki_page_version.id) %> <% end %> <% if listing_type(:wiki_page_id, member_check: false, types: [:page, :global]) == :page %> @@ -14,12 +14,13 @@ <% end %> <% end %> - <% t.column "Title" do |wiki_page_version| %> + <% t.column "Title", td: {class: "diff-body"} do |wiki_page_version| %> <%= link_to "?", wiki_page_path(wiki_page_version.wiki_page_id) %> <%= link_to wiki_page_version.title, wiki_page_version %> <%= link_to "»", wiki_page_versions_path(search: { wiki_page_id: wiki_page_version.wiki_page_id }) %> + <%= wiki_version_title_diff(wiki_page_version) %> <% end %> <% t.column "Changes", width: "5%" do |wiki_page_version| %> <%= status_diff_html(wiki_page_version) %> diff --git a/app/views/wiki_page_versions/diff.html.erb b/app/views/wiki_page_versions/diff.html.erb index 5f749c1f8..e38bedb5b 100644 --- a/app/views/wiki_page_versions/diff.html.erb +++ b/app/views/wiki_page_versions/diff.html.erb @@ -4,13 +4,21 @@ <%= render "wiki_pages/sidebar" %> <% content_for(:content) do %> -

Wiki Page: <%= @thispage.title %>

+

Wiki Page Version Comparison: <%= link_to @thispage.title, wiki_page_versions_path(search: { wiki_page_id: @thispage.wiki_page_id }, anchor: "wiki-page-version-#{@thispage.id}"), class: "tag-type-#{@thispage.wiki_page.category_name}" %>

Showing differences between <%= compact_time @thispage.updated_at %> (<%= link_to_user @thispage.updater %>) and <%= compact_time @otherpage.updated_at %> (<%= link_to_user @otherpage.updater %>)

- <%= wiki_other_names_diff(@thispage, @otherpage) %> + <% if wiki_version_show_other_names(@thispage, @otherpage) %> +

<%= wiki_version_other_names_diff(@thispage, @otherpage) %>

+ <% else %> +

No changes to other names.

+ <% end %> -
- <%= diff_body_html(@thispage, @otherpage, :body) %> -
+ <% if @thispage.body != @otherpage.body %> +
+ <%= diff_body_html(@thispage, @otherpage, :body) %> +
+ <% else %> +

No changes to body.

+ <% end %> <% end %> From e23ee170f5c5ebeeb516be269017037a17be0561 Mon Sep 17 00:00:00 2001 From: BrokenEagle Date: Tue, 17 Mar 2020 07:23:42 +0000 Subject: [PATCH 2/3] Add alternate comparison types to versions - The types are: -- Previous: The default and the previously used type -- Subsequent: Compares against the next version -- Current: Compares against the current version - Allow switching between comparison types in index and diff views -- Have links vary depending upon current comparison type --- app/controllers/application_controller.rb | 4 ++ .../artist_commentary_versions_controller.rb | 1 + app/controllers/artist_versions_controller.rb | 1 + app/controllers/note_versions_controller.rb | 1 + app/controllers/pool_versions_controller.rb | 4 +- app/controllers/post_versions_controller.rb | 1 + .../wiki_page_versions_controller.rb | 24 ++++--- app/helpers/application_helper.rb | 46 +++++++++---- .../artist_commentary_versions_helper.rb | 10 +++ app/helpers/artist_versions_helper.rb | 65 ++++++++++++++----- app/helpers/note_versions_helper.rb | 29 ++++++--- app/helpers/pool_versions_helper.rb | 35 ++++++---- app/helpers/post_versions_helper.rb | 55 +++++++--------- app/helpers/wiki_page_versions_helper.rb | 31 +++++---- app/javascript/src/styles/base/040_colors.css | 4 -- app/javascript/src/styles/common/diffs.scss | 16 ----- .../src/styles/common/versions.scss | 14 +++- .../styles/specific/wiki_page_versions.scss | 4 -- app/logical/set_diff.rb | 14 ++-- app/models/artist_commentary_version.rb | 14 ++++ app/models/artist_version.rb | 60 +++++++++++++---- app/models/note_version.rb | 44 ++++++++++--- app/models/pool_version.rb | 55 +++++++++++++--- app/models/post_version.rb | 14 ++++ app/models/wiki_page_version.rb | 37 +++++++++-- app/views/application/_diff_list.html.erb | 4 +- .../_listing.html.erb | 10 +-- .../artist_commentary_versions/index.html.erb | 2 + app/views/artist_versions/_listing.html.erb | 10 +-- app/views/artist_versions/index.html.erb | 2 + app/views/note_versions/_listing.html.erb | 8 +-- app/views/note_versions/index.html.erb | 2 + app/views/pool_versions/_listing.html.erb | 8 +-- app/views/pool_versions/diff.html.erb | 22 +++++-- app/views/pool_versions/index.html.erb | 2 + app/views/post_versions/_listing.html.erb | 4 +- app/views/post_versions/index.html.erb | 2 + app/views/versions/_types.html.erb | 6 ++ .../wiki_page_versions/_listing.html.erb | 6 +- app/views/wiki_page_versions/diff.html.erb | 36 ++++++---- app/views/wiki_page_versions/index.html.erb | 2 + 41 files changed, 488 insertions(+), 221 deletions(-) create mode 100644 app/helpers/artist_commentary_versions_helper.rb create mode 100644 app/views/versions/_types.html.erb diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index a68e056f2..d79308cab 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -39,6 +39,10 @@ class ApplicationController < ActionController::Base super end + def set_version_comparison + params[:type] = %w[previous subsequent current].include?(params[:type]) ? params[:type] : "previous" + end + def model_name controller_name.classify end diff --git a/app/controllers/artist_commentary_versions_controller.rb b/app/controllers/artist_commentary_versions_controller.rb index cee5140c2..49a497a4f 100644 --- a/app/controllers/artist_commentary_versions_controller.rb +++ b/app/controllers/artist_commentary_versions_controller.rb @@ -2,6 +2,7 @@ class ArtistCommentaryVersionsController < ApplicationController respond_to :html, :xml, :json def index + set_version_comparison @commentary_versions = ArtistCommentaryVersion.paginated_search(params) @commentary_versions = @commentary_versions.includes(:updater, post: :uploader) if request.format.html? diff --git a/app/controllers/artist_versions_controller.rb b/app/controllers/artist_versions_controller.rb index 54262e560..1c2efa6c9 100644 --- a/app/controllers/artist_versions_controller.rb +++ b/app/controllers/artist_versions_controller.rb @@ -2,6 +2,7 @@ class ArtistVersionsController < ApplicationController respond_to :html, :xml, :json def index + set_version_comparison @artist_versions = ArtistVersion.paginated_search(params) @artist_versions = @artist_versions.includes(:updater, artist: :urls) if request.format.html? diff --git a/app/controllers/note_versions_controller.rb b/app/controllers/note_versions_controller.rb index a5b224d8d..b217925f6 100644 --- a/app/controllers/note_versions_controller.rb +++ b/app/controllers/note_versions_controller.rb @@ -2,6 +2,7 @@ class NoteVersionsController < ApplicationController respond_to :html, :xml, :json def index + set_version_comparison @note_versions = NoteVersion.paginated_search(params) @note_versions = @note_versions.includes(:updater) if request.format.html? diff --git a/app/controllers/pool_versions_controller.rb b/app/controllers/pool_versions_controller.rb index f4bc9967f..13a68bd79 100644 --- a/app/controllers/pool_versions_controller.rb +++ b/app/controllers/pool_versions_controller.rb @@ -4,6 +4,7 @@ class PoolVersionsController < ApplicationController around_action :set_timeout def index + set_version_comparison @pool_versions = PoolVersion.paginated_search(params) @pool_versions = @pool_versions.includes(:updater, :pool) if request.format.html? @@ -19,7 +20,8 @@ class PoolVersionsController < ApplicationController if params[:other_id] @other_version = PoolVersion.find(params[:other_id]) else - @other_version = @pool_version.previous + set_version_comparison + @other_version = @pool_version.send(params[:type]) end end diff --git a/app/controllers/post_versions_controller.rb b/app/controllers/post_versions_controller.rb index 278ab643a..71d3e77cc 100644 --- a/app/controllers/post_versions_controller.rb +++ b/app/controllers/post_versions_controller.rb @@ -6,6 +6,7 @@ class PostVersionsController < ApplicationController respond_to :js, only: [:undo] def index + set_version_comparison @post_versions = PostVersion.paginated_search(params) if request.format.html? diff --git a/app/controllers/wiki_page_versions_controller.rb b/app/controllers/wiki_page_versions_controller.rb index 7293f72a9..ac9873514 100644 --- a/app/controllers/wiki_page_versions_controller.rb +++ b/app/controllers/wiki_page_versions_controller.rb @@ -3,6 +3,7 @@ class WikiPageVersionsController < ApplicationController layout "sidebar" def index + set_version_comparison @wiki_page_versions = WikiPageVersion.paginated_search(params) @wiki_page_versions = @wiki_page_versions.includes(:updater) if request.format.html? @@ -16,15 +17,20 @@ class WikiPageVersionsController < ApplicationController def diff if params[:thispage].blank? || params[:otherpage].blank? - redirect_back fallback_location: wiki_pages_path, notice: "You must select two versions to diff" - return - end - - @thispage = WikiPageVersion.find(params[:thispage]) - @otherpage = WikiPageVersion.find(params[:otherpage]) - - if @thispage.id < @otherpage.id - @thispage, @otherpage = @otherpage, @thispage + page_id = params[:thispage] || params[:otherpage] + if page_id.blank? + redirect_back fallback_location: wiki_pages_path, notice: "You must select at least one version to diff" + return + end + set_version_comparison + @thispage = WikiPageVersion.find(page_id) + @otherpage = @thispage.send(params[:type]) + else + @thispage = WikiPageVersion.find(params[:thispage]) + @otherpage = WikiPageVersion.find(params[:otherpage]) + if @thispage.id < @otherpage.id + @thispage, @otherpage = @otherpage, @thispage + end end respond_with([@thispage, @otherpage]) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 0548842b6..dc1080b8a 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -5,37 +5,45 @@ module ApplicationHelper (fields.reduce(false) { |acc, field| acc || params.dig(:search, field).present? } && (!member_check || CurrentUser.is_member?) ? types[0] : types[1]) end - def diff_list_html(new, old, latest, ul_class: ["diff-list"], li_class: []) - diff = SetDiff.new(new, old, latest) + def diff_list_html(this_list, other_list, ul_class: ["diff-list"], li_class: []) + diff = SetDiff.new(this_list, other_list) render "diff_list", diff: diff, ul_class: ul_class, li_class: li_class end - def diff_name_html(this_name, prev_name) + def diff_name_html(this_name, other_name) pattern = Regexp.new('.') - DiffBuilder.new(this_name, prev_name, pattern).build + DiffBuilder.new(this_name, other_name, pattern).build end - def diff_body_html(record, previous, field) - return h(record[field]).gsub(/\r?\n/, '
').html_safe if previous.blank? + def diff_body_html(record, other, field) + if record.blank? || other.blank? + diff_record = other.presence || record + return h(diff_record[field]).gsub(/\r?\n/, '
').html_safe + end pattern = Regexp.new('(?:<.+?>)|(?:\w+)|(?:[ \t]+)|(?:\r?\n)|(?:.+?)') - DiffBuilder.new(record[field], previous[field], pattern).build + DiffBuilder.new(record[field], other[field], pattern).build end - def status_diff_html(record) - previous = record.previous + def status_diff_html(record, type) + other = record.send(type) - return "New" if previous.blank? + if other.blank? + return type == "previous" ? "New" : "" + end statuses = [] record.class.status_fields.each do |field, status| if record.has_attribute?(field) - statuses += [status] if record[field] != previous[field] + statuses += [status] if record[field] != other[field] else - statuses += [status] if record.send(field) + statuses += [status] if record.send(field, type) end end - statuses.join("
").html_safe + + altered = record.updater_id != other.updater_id + + %(
#{statuses.join("
")}
).html_safe end def wordbreakify(string) @@ -44,6 +52,18 @@ module ApplicationHelper raw(wordbreaked_string) end + def version_type_links(params) + html = [] + %w[previous subsequent current].each do |type| + if type == params[:type] + html << %(#{type}) + else + html << tag.li(link_to(type, params.except(:controller, :action).merge(type: type).permit!)) + end + end + html.join(" | ").html_safe + end + def nav_link_to(text, url, **options) klass = options.delete(:class) diff --git a/app/helpers/artist_commentary_versions_helper.rb b/app/helpers/artist_commentary_versions_helper.rb new file mode 100644 index 000000000..30d05befc --- /dev/null +++ b/app/helpers/artist_commentary_versions_helper.rb @@ -0,0 +1,10 @@ +module ArtistCommentaryVersionsHelper + def commentary_version_field_diff(commentary_version, type, field) + other = commentary_version.send(params[:type]) + if type == "previous" + diff_body_html(commentary_version, other, field) + else + diff_body_html(other, commentary_version, field) + end + end +end diff --git a/app/helpers/artist_versions_helper.rb b/app/helpers/artist_versions_helper.rb index b9cf1269e..3e5a366f6 100644 --- a/app/helpers/artist_versions_helper.rb +++ b/app/helpers/artist_versions_helper.rb @@ -1,34 +1,63 @@ module ArtistVersionsHelper - def artist_version_other_names_diff(artist_version) - new_names = artist_version.other_names - old_names = artist_version.previous.try(:other_names) - latest_names = artist_version.artist.other_names + def artist_version_other_names_diff(artist_version, type) + other = artist_version.send(type) + this_names = artist_version.other_names + if other.present? + other_names = other.other_names + elsif type == "subsequent" + other_names = this_names + else + other_names = [] + end - diff_list_html(new_names, old_names, latest_names) + if type == "previous" + diff_list_html(this_names, other_names) + else + diff_list_html(other_names, this_names) + end end - def artist_version_urls_diff(artist_version) - new_urls = artist_version.urls - old_urls = artist_version.previous.try(:urls) - latest_urls = artist_version.artist.urls.map(&:to_s) + def artist_version_urls_diff(artist_version, type) + other = artist_version.send(type) + this_urls = artist_version.urls + if other.present? + other_urls = other.urls + elsif type == "subsequent" + other_urls = this_urls + else + other_urls = [] + end - diff_list_html(new_urls, old_urls, latest_urls) + if type == "previous" + diff_list_html(this_urls, other_urls) + else + diff_list_html(other_urls, this_urls) + end end - def artist_version_name_diff(artist_version) - previous = artist_version.previous - if previous.present? && (artist_version.name != previous.name) - name_diff = diff_name_html(artist_version.name, previous.name) + def artist_version_name_diff(artist_version, type) + other = artist_version.send(type) + if other.present? && (artist_version.name != other.name) + if type == "previous" + name_diff = diff_name_html(artist_version.name, other.name) + else + name_diff = diff_name_html(other.name, artist_version.name) + end %(

Rename:
 #{name_diff}

).html_safe else "" end end - def artist_version_group_name_diff(artist_version) - previous = artist_version.previous - if artist_version.group_name.present? || (previous.present? && previous.group_name.present?) - group_name_diff = diff_name_html(artist_version.group_name, previous.group_name) + def artist_version_group_name_diff(artist_version, type) + other = artist_version.send(type) + if artist_version.group_name.present? || (other.present? && other.group_name.present?) + other_group_name = (other.present? ? other.group_name : artist_version.group_name) + if type == "previous" + group_name_diff = diff_name_html(artist_version.group_name, other_group_name) + else + group_name_diff = diff_name_html(other_group_name, artist_version.group_name) + end %(Group:
 #{group_name_diff}

).html_safe else "" diff --git a/app/helpers/note_versions_helper.rb b/app/helpers/note_versions_helper.rb index f2fc16377..e3a29b1fa 100644 --- a/app/helpers/note_versions_helper.rb +++ b/app/helpers/note_versions_helper.rb @@ -1,23 +1,36 @@ module NoteVersionsHelper - def note_version_position_diff(note_version) - previous = note_version.previous + def note_version_position_diff(note_version, type) + other = note_version.send(type) html = "#{note_version.x},#{note_version.y}" - if previous.nil? || (note_version.x == previous.x && note_version.y == previous.y) + if other.nil? || (note_version.x == other.x && note_version.y == other.y) html + elsif type == "previous" + "#{other.x},#{other.y} -> " + html else - "#{previous.x},#{previous.y} -> " + html + html + " -> #{other.x},#{other.y}" end end - def note_version_size_diff(note_version) - previous = note_version.previous + def note_version_size_diff(note_version, type) + other = note_version.send(type) html = "#{note_version.width}x#{note_version.height}" - if previous.nil? || (note_version.width == previous.width && note_version.height == previous.height) + if other.nil? || (note_version.width == other.width && note_version.height == other.height) html + elsif type == "previous" + "#{other.width}x#{other.height} -> " + html else - "#{previous.width}x#{previous.height} -> " + html + html + " -> #{other.width}x#{other.height}" + end + end + + def note_version_body_diff(note_version, type) + other = note_version.send(params[:type]) + if type == "previous" + diff_body_html(note_version, other, :body) + else + diff_body_html(other, note_version, :body) end end end diff --git a/app/helpers/pool_versions_helper.rb b/app/helpers/pool_versions_helper.rb index c12e56a2c..71cf87c7f 100644 --- a/app/helpers/pool_versions_helper.rb +++ b/app/helpers/pool_versions_helper.rb @@ -1,29 +1,38 @@ module PoolVersionsHelper - def pool_version_show_diff(pool_version) - previous = pool_version.previous - previous.present? && pool_version.description != previous.description + def pool_version_show_diff(pool_version, type) + other = pool_version.send(type) + other.present? && pool_version.description != other.description end - def pool_version_name_diff(pool_version) - previous = pool_version.previous - if previous.present? && (pool_version.name != previous.name) - name_diff = diff_name_html(pool_version.pretty_name, previous.pretty_name) + def pool_version_name_diff(pool_version, type) + other = pool_version.send(type) + if other.present? && (pool_version.name != other.name) + if type == "previous" + name_diff = diff_name_html(pool_version.name, other.name) + else + name_diff = diff_name_html(other.name, pool_version.name) + end %(

Rename:
 #{name_diff}

).html_safe else "" end end - def pool_version_post_diff(pool_version) - previous = pool_version.previous + def pool_version_post_diff(pool_version, type) + other = pool_version.send(type) diff = {} - if previous.present? - diff[:added_post_ids] = pool_version.post_ids - previous.post_ids - diff[:removed_post_ids] = previous.post_ids - pool_version.post_ids - else + if other.present? && type == "previous" + diff[:added_post_ids] = pool_version.post_ids - other.post_ids + diff[:removed_post_ids] = other.post_ids - pool_version.post_ids + elsif other.present? + diff[:added_post_ids] = other.post_ids - pool_version.post_ids + diff[:removed_post_ids] = pool_version.post_ids - other.post_ids + elsif type == "previous" diff[:added_post_ids] = pool_version.added_post_ids diff[:removed_post_ids] = pool_version.removed_post_ids + else + return "" end render "pool_versions/diff", diff: diff diff --git a/app/helpers/post_versions_helper.rb b/app/helpers/post_versions_helper.rb index c2994004d..a4d8f1144 100644 --- a/app/helpers/post_versions_helper.rb +++ b/app/helpers/post_versions_helper.rb @@ -1,45 +1,38 @@ module PostVersionsHelper - def post_version_diff(post_version) - previous = post_version.previous - post = post_version.post + def post_version_diff(post_version, type) + other = post_version.send(type) - if post.nil? - latest_tags = post_version.tag_array + this_tags = post_version.tag_array + this_tags << "rating:#{post_version.rating}" if post_version.rating.present? + this_tags << "parent:#{post_version.parent_id}" if post_version.parent_id.present? + this_tags << "source:#{post_version.source}" if post_version.source.present? + + other_tags = other.present? ? other.tag_array : [] + if other.present? + other_tags << "rating:#{other.rating}" if other.rating.present? + other_tags << "parent:#{other.parent_id}" if other.parent_id.present? + other_tags << "source:#{other.source}" if other.source.present? + elsif type == "subsequent" + other_tags = this_tags + end + + if type == "previous" + added_tags = this_tags - other_tags + removed_tags = other_tags - this_tags else - latest_tags = post.tag_array - latest_tags << "rating:#{post.rating}" if post.rating.present? - latest_tags << "parent:#{post.parent_id}" if post.parent_id.present? - latest_tags << "source:#{post.source}" if post.source.present? + added_tags = other_tags - this_tags + removed_tags = this_tags - other_tags end - - new_tags = post_version.tag_array - new_tags << "rating:#{post_version.rating}" if post_version.rating.present? - new_tags << "parent:#{post_version.parent_id}" if post_version.parent_id.present? - new_tags << "source:#{post_version.source}" if post_version.source.present? - - old_tags = previous.present? ? previous.tag_array : [] - if previous.present? - old_tags << "rating:#{previous.rating}" if previous.rating.present? - old_tags << "parent:#{previous.parent_id}" if previous.parent_id.present? - old_tags << "source:#{previous.source}" if previous.source.present? - end - - added_tags = new_tags - old_tags - removed_tags = old_tags - new_tags - obsolete_added_tags = added_tags - latest_tags, - obsolete_removed_tags = removed_tags & latest_tags, - unchanged_tags = new_tags & old_tags + unchanged_tags = this_tags & other_tags html = '' added_tags.each do |tag| - prefix = obsolete_added_tags.include?(tag) ? '+' : '+' - html << prefix + link_to(wordbreakify(tag), posts_path(:tags => tag)) + '' + html << '+' + link_to(wordbreakify(tag), posts_path(:tags => tag)) + '' html << " " end removed_tags.each do |tag| - prefix = obsolete_removed_tags.include?(tag) ? '-' : '-' - html << prefix + link_to(wordbreakify(tag), posts_path(:tags => tag)) + '' + html << '-' + link_to(wordbreakify(tag), posts_path(:tags => tag)) + '' html << " " end unchanged_tags.each do |tag| diff --git a/app/helpers/wiki_page_versions_helper.rb b/app/helpers/wiki_page_versions_helper.rb index 6c8fb9b39..11123d929 100644 --- a/app/helpers/wiki_page_versions_helper.rb +++ b/app/helpers/wiki_page_versions_helper.rb @@ -1,25 +1,28 @@ module WikiPageVersionsHelper - def wiki_version_show_diff(wiki_page_version) - previous = wiki_page_version.previous - previous.present? && ((wiki_page_version.body != previous.body) || wiki_page_version.other_names_changed) + def wiki_version_show_diff(wiki_page_version, type) + other = wiki_page_version.send(type) + other.present? && ((wiki_page_version.body != other.body) || wiki_page_version.other_names_changed(type)) end - def wiki_version_show_other_names(new_version, old_version) - ((new_version.other_names - old_version.other_names) | (old_version.other_names - new_version.other_names)).length > 0 + def wiki_version_show_other_names(this_version, other_version) + ((this_version.other_names - other_version.other_names) | (other_version.other_names - this_version.other_names)).length.positive? end - def wiki_version_other_names_diff(new_version, old_version) - new_names = new_version.other_names - old_names = old_version.other_names - latest_names = new_version.wiki_page.other_names + def wiki_version_other_names_diff(this_version, other_version) + this_names = this_version.other_names + other_names = other_version.other_names - diff_list_html(new_names, old_names, latest_names, ul_class: ["wiki-other-names-diff-list list-inline"], li_class: ["wiki-other-name"]) + diff_list_html(this_names, other_names, ul_class: ["wiki-other-names-diff-list list-inline"], li_class: ["wiki-other-name"]) end - def wiki_version_title_diff(wiki_page_version) - previous = wiki_page_version.previous - if previous.present? && (wiki_page_version.title != previous.title) - name_diff = diff_name_html(wiki_page_version.title, previous.title) + def wiki_version_title_diff(wiki_page_version, type) + other = wiki_page_version.send(type) + if other.present? && (wiki_page_version.title != other.title) + if type == "previous" + name_diff = diff_name_html(wiki_page_version.title, other.title) + else + name_diff = diff_name_html(other.title, wiki_page_version.title) + end %((Rename: #{name_diff})).html_safe else "" diff --git a/app/javascript/src/styles/base/040_colors.css b/app/javascript/src/styles/base/040_colors.css index 128496624..3bed50f20 100644 --- a/app/javascript/src/styles/base/040_colors.css +++ b/app/javascript/src/styles/base/040_colors.css @@ -88,8 +88,6 @@ --diff-list-added-color: green; --diff-list-removed-color: red; - --diff-list-obsolete-added-color: darkGreen; - --diff-list-obsolete-removed-color: darkRed; --wiki-page-versions-diff-del-background: #FCC; --wiki-page-versions-diff-ins-background: #CFC; @@ -301,8 +299,6 @@ body[data-current-user-theme="dark"] { --diff-list-added-color: var(--green-1); --diff-list-removed-color: var(--red-1); - --diff-list-obsolete-added-color: var(--green-3); - --diff-list-obsolete-removed-color: var(--red-3); --dtext-blockquote-background: var(--grey-3); --dtext-blockquote-border: 1px solid var(--grey-4); diff --git a/app/javascript/src/styles/common/diffs.scss b/app/javascript/src/styles/common/diffs.scss index f126b2e6d..e8d7c9a61 100644 --- a/app/javascript/src/styles/common/diffs.scss +++ b/app/javascript/src/styles/common/diffs.scss @@ -5,20 +5,12 @@ margin-right: 0.5em; } - .added.obsolete, .added.obsolete a { - color: var(--diff-list-obsolete-added-color); - } - .removed, .removed a { color: var(--diff-list-removed-color); text-decoration: line-through; margin-right: 0.5em; } - .removed.obsolete, .removed.obsolete a { - color: var(--diff-list-obsolete-removed-color); - } - ins, ins a { color: var(--diff-list-added-color); text-decoration: none; @@ -30,14 +22,6 @@ text-decoration: line-through; margin-right: 0.5em; } - - ins.obsolete, ins.obsolete a { - color: var(--diff-list-obsolete-added-color); - } - - del.obsolete, del.obsolete a { - color: var(--diff-list-obsolete-removed-color); - } } .diff-body { diff --git a/app/javascript/src/styles/common/versions.scss b/app/javascript/src/styles/common/versions.scss index 5913cc2b1..5f37cf45e 100644 --- a/app/javascript/src/styles/common/versions.scss +++ b/app/javascript/src/styles/common/versions.scss @@ -3,7 +3,7 @@ body.a-index { display: flex; table.striped { - flex: 1; + flex: 1; } } @@ -11,3 +11,15 @@ body.a-index { margin-top: 2em; } } + +div#version-comparisons { + margin-bottom: 1em; + + span { + font-weight: bold; + } + + ul#version-comparisons-list, ul#version-comparisons-list li { + display: inline; + } +} diff --git a/app/javascript/src/styles/specific/wiki_page_versions.scss b/app/javascript/src/styles/specific/wiki_page_versions.scss index c83da2c0f..15f895024 100644 --- a/app/javascript/src/styles/specific/wiki_page_versions.scss +++ b/app/javascript/src/styles/specific/wiki_page_versions.scss @@ -9,10 +9,6 @@ div#c-wiki-page-versions { background: var(--wiki-page-versions-diff-ins-background); text-decoration: none; } - - ul.wiki-other-names-diff-list li.obsolete { - text-decoration: dotted underline; - } } #a-index { diff --git a/app/logical/set_diff.rb b/app/logical/set_diff.rb index 3bc4b288e..8688b1f05 100644 --- a/app/logical/set_diff.rb +++ b/app/logical/set_diff.rb @@ -1,14 +1,12 @@ class SetDiff - attr_reader :additions, :removals, :added, :removed, :obsolete_added, :obsolete_removed, :changed, :unchanged + attr_reader :additions, :removals, :added, :removed, :changed, :unchanged - def initialize(new, old, latest) - new, old, latest = new.to_a, old.to_a, latest.to_a + def initialize(this_list, other_list) + this, other = this_list.to_a, other_list.to_a - @additions = new - old - @removals = old - new - @unchanged = new & old - @obsolete_added = additions - latest - @obsolete_removed = removals & latest + @additions = this - other + @removals = other - this + @unchanged = this & other @added, @removed, @changed = changes(additions, removals) end diff --git a/app/models/artist_commentary_version.rb b/app/models/artist_commentary_version.rb index 1fab760bb..d052810e8 100644 --- a/app/models/artist_commentary_version.rb +++ b/app/models/artist_commentary_version.rb @@ -15,6 +15,20 @@ class ArtistCommentaryVersion < ApplicationRecord @previous.first end + def subsequent + @subsequent ||= begin + ArtistCommentaryVersion.where("post_id = ? and updated_at > ?", post_id, updated_at).order("updated_at asc").limit(1).to_a + end + @subsequent.first + end + + def current + @current ||= begin + ArtistCommentaryVersion.where("post_id = ?", post_id).order("updated_at desc").limit(1).to_a + end + @current.first + end + def self.status_fields { original_title: "OrigTitle", diff --git a/app/models/artist_version.rb b/app/models/artist_version.rb index 411f1436f..bcd08fa2b 100644 --- a/app/models/artist_version.rb +++ b/app/models/artist_version.rb @@ -30,6 +30,20 @@ class ArtistVersion < ApplicationRecord @previous.first end + def subsequent + @subsequent ||= begin + ArtistVersion.where("artist_id = ? and created_at > ?", artist_id, created_at).order("created_at asc").limit(1).to_a + end + @subsequent.first + end + + def current + @previous ||= begin + ArtistVersion.where("artist_id = ?", artist_id).order("created_at desc").limit(1).to_a + end + @previous.first + end + def self.status_fields { name: "Renamed", @@ -43,28 +57,50 @@ class ArtistVersion < ApplicationRecord } end - def other_names_changed - ((other_names - previous.other_names) | (previous.other_names - other_names)).length > 0 + def other_names_changed(type) + other = self.send(type) + ((other_names - other.other_names) | (other.other_names - other_names)).length.positive? end - def urls_changed - ((urls - previous.urls) | (previous.urls - urls)).length > 0 + def urls_changed(type) + other = self.send(type) + ((urls - other.urls) | (other.urls - urls)).length.positive? end - def was_deleted - is_deleted && !previous.is_deleted + def was_deleted(type) + other = self.send(type) + if type == "previous" + is_deleted && !other.is_deleted + else + !is_deleted && other.is_deleted + end end - def was_undeleted - !is_deleted && previous.is_deleted + def was_undeleted(type) + other = self.send(type) + if type == "previous" + !is_deleted && other.is_deleted + else + is_deleted && !other.is_deleted + end end - def was_banned - is_banned && !previous.is_banned + def was_banned(type) + other = self.send(type) + if type == "previous" + is_banned && !other.is_banned + else + !is_banned && other.is_banned + end end - def was_unbanned - !is_banned && previous.is_banned + def was_unbanned(type) + other = self.send(type) + if type == "previous" + !is_banned && other.is_banned + else + is_banned && !other.is_banned + end end def self.available_includes diff --git a/app/models/note_version.rb b/app/models/note_version.rb index 5d1f19f6c..d8655f995 100644 --- a/app/models/note_version.rb +++ b/app/models/note_version.rb @@ -14,11 +14,25 @@ class NoteVersion < ApplicationRecord def previous @previous ||= begin - NoteVersion.where("note_id = ? and updated_at < ?", note_id, updated_at).order("updated_at desc").limit(1).to_a + NoteVersion.where("note_id = ? and version < ?", note_id, version).order("updated_at desc").limit(1).to_a end @previous.first end + def subsequent + @subsequent ||= begin + NoteVersion.where("note_id = ? and version > ?", note_id, version).order("updated_at asc").limit(1).to_a + end + @subsequent.first + end + + def current + @current ||= begin + NoteVersion.where("note_id = ?", note_id).order("updated_at desc").limit(1).to_a + end + @current.first + end + def self.status_fields { body: "Body", @@ -29,20 +43,32 @@ class NoteVersion < ApplicationRecord } end - def was_moved - x != previous.x || y != previous.y + def was_moved(type) + other = self.send(type) + x != other.x || y != other.y end - def was_resized - width != previous.width || height != previous.height + def was_resized(type) + other = self.send(type) + width != other.width || height != other.height end - def was_deleted - !is_active && previous.is_active + def was_deleted(type) + other = self.send(type) + if type == "previous" + !is_active && other.is_active + else + is_active && !other.is_active + end end - def was_undeleted - is_active && !previous.is_active + def was_undeleted(type) + other = self.send(type) + if type == "previous" + is_active && !other.is_active + else + !is_active && other.is_active + end end def self.available_includes diff --git a/app/models/pool_version.rb b/app/models/pool_version.rb index b8e0e64d0..598c03108 100644 --- a/app/models/pool_version.rb +++ b/app/models/pool_version.rb @@ -96,6 +96,20 @@ class PoolVersion < ApplicationRecord @previous.first end + def subsequent + @subsequent ||= begin + PoolVersion.where("pool_id = ? and version > ?", pool_id, version).order("version asc").limit(1).to_a + end + @subsequent.first + end + + def current + @current ||= begin + PoolVersion.where("pool_id = ?", pool_id).order("version desc").limit(1).to_a + end + @current.first + end + def self.status_fields { posts_changed: "Posts", @@ -108,24 +122,45 @@ class PoolVersion < ApplicationRecord } end - def posts_changed - ((post_ids - previous.post_ids) | (previous.post_ids - post_ids)).length > 0 + def posts_changed(type) + other = self.send(type) + ((post_ids - other.post_ids) | (other.post_ids - post_ids)).length.positive? end - def was_deleted - is_deleted && !previous.is_deleted + def was_deleted(type) + other = self.send(type) + if type == "previous" + is_deleted && !other.is_deleted + else + !is_deleted && other.is_deleted + end end - def was_undeleted - !is_deleted && previous.is_deleted + def was_undeleted(type) + other = self.send(type) + if type == "previous" + !is_deleted && other.is_deleted + else + is_deleted && !other.is_deleted + end end - def was_activated - is_active && !previous.is_active + def was_activated(type) + other = self.send(type) + if type == "previous" + is_active && !other.is_active + else + !is_active && other.is_active + end end - def was_deactivated - !is_active && previous.is_active + def was_deactivated(type) + other = self.send(type) + if type == "previous" + !is_active && other.is_active + else + is_active && !other.is_active + end end def pretty_name diff --git a/app/models/post_version.rb b/app/models/post_version.rb index 869fa2140..8eb82f5c3 100644 --- a/app/models/post_version.rb +++ b/app/models/post_version.rb @@ -99,6 +99,20 @@ class PostVersion < ApplicationRecord @previous.first end + def subsequent + @subsequent ||= begin + PostVersion.where("post_id = ? and version > ?", post_id, version).order("version asc").limit(1).to_a + end + @subsequent.first + end + + def current + @current ||= begin + PostVersion.where("post_id = ?", post_id).order("version desc").limit(1).to_a + end + @current.first + end + def visible? post&.visible? end diff --git a/app/models/wiki_page_version.rb b/app/models/wiki_page_version.rb index f80522ebe..4830b83fd 100644 --- a/app/models/wiki_page_version.rb +++ b/app/models/wiki_page_version.rb @@ -30,6 +30,20 @@ class WikiPageVersion < ApplicationRecord @previous.first end + def subsequent + @subsequent ||= begin + WikiPageVersion.where("wiki_page_id = ? and id > ?", wiki_page_id, id).order("id asc").limit(1).to_a + end + @subsequent.first + end + + def current + @current ||= begin + WikiPageVersion.where("wiki_page_id = ?", wiki_page_id).order("id desc").limit(1).to_a + end + @current.first + end + def self.status_fields { body: "Body", @@ -40,16 +54,27 @@ class WikiPageVersion < ApplicationRecord } end - def other_names_changed - ((other_names - previous.other_names) | (previous.other_names - other_names)).length > 0 + def other_names_changed(type) + other = self.send(type) + ((other_names - other.other_names) | (other.other_names - other_names)).length.positive? end - def was_deleted - is_deleted && !previous.is_deleted + def was_deleted(type) + other = self.send(type) + if type == "previous" + is_deleted && !other.is_deleted + else + !is_deleted && other.is_deleted + end end - def was_undeleted - !is_deleted && previous.is_deleted + def was_undeleted(type) + other = self.send(type) + if type == "previous" + !is_deleted && other.is_deleted + else + is_deleted && !other.is_deleted + end end def self.available_includes diff --git a/app/views/application/_diff_list.html.erb b/app/views/application/_diff_list.html.erb index de5b7f510..d15654a03 100644 --- a/app/views/application/_diff_list.html.erb +++ b/app/views/application/_diff_list.html.erb @@ -2,11 +2,11 @@ <%= tag.ul class: [*ul_class] do %> <% diff.added.each do |item| %> - <%= tag.li item, class: ["added", ("obsolete" if item.in?(diff.obsolete_added)), *li_class] %> + <%= tag.li item, class: ["added", *li_class] %> <% end %> <% diff.removed.each do |item| %> - <%= tag.li item, class: ["removed", ("obsolete" if item.in?(diff.obsolete_removed)), *li_class] %> + <%= tag.li item, class: ["removed", *li_class] %> <% end %> <% diff.changed.each do |old, new| %> diff --git a/app/views/artist_commentary_versions/_listing.html.erb b/app/views/artist_commentary_versions/_listing.html.erb index add68d998..ee29ae0d9 100644 --- a/app/views/artist_commentary_versions/_listing.html.erb +++ b/app/views/artist_commentary_versions/_listing.html.erb @@ -19,13 +19,13 @@ <% if !commentary_version.unchanged_empty?(:original_title) %> Title:
- <%= diff_body_html(commentary_version, commentary_version.previous, :original_title) %> + <%= commentary_version_field_diff(commentary_version, params[:type], :original_title) %>
<% end %> <% if !commentary_version.unchanged_empty?(:original_description) %> Description:
- <%= diff_body_html(commentary_version, commentary_version.previous, :original_description) %> + <%= commentary_version_field_diff(commentary_version, params[:type], :original_description) %>
<% end %> <% end %> @@ -33,18 +33,18 @@ <% if !commentary_version.unchanged_empty?(:translated_title) %> Title:
- <%= diff_body_html(commentary_version, commentary_version.previous, :translated_title) %> + <%= commentary_version_field_diff(commentary_version, params[:type], :translated_title) %>
<% end %> <% if !commentary_version.unchanged_empty?(:translated_description) %> Description:
- <%= diff_body_html(commentary_version, commentary_version.previous, :translated_description) %> + <%= commentary_version_field_diff(commentary_version, params[:type], :translated_description) %>
<% end %> <% end %> <% t.column "Changes", width: "3%" do |commentary_version| %> - <%= status_diff_html(commentary_version) %> + <%= status_diff_html(commentary_version, params[:type]) %> <% end %> <% t.column "Updated", width: "10%" do |commentary_version| %>
diff --git a/app/views/artist_commentary_versions/index.html.erb b/app/views/artist_commentary_versions/index.html.erb index fac35c5af..986c13532 100644 --- a/app/views/artist_commentary_versions/index.html.erb +++ b/app/views/artist_commentary_versions/index.html.erb @@ -2,6 +2,8 @@

Artist Commentary History

+ <%= render "versions/types" %> + <%= render "posts/partials/common/inline_blacklist" %> <%= render "listing" %> diff --git a/app/views/artist_versions/_listing.html.erb b/app/views/artist_versions/_listing.html.erb index e473de899..49b081733 100644 --- a/app/views/artist_versions/_listing.html.erb +++ b/app/views/artist_versions/_listing.html.erb @@ -4,17 +4,17 @@ <% t.column "Name", td: {class: "diff-body"} do |artist_version| %> <%= link_to artist_version.name, artist_path(artist_version.artist_id) %> <%= link_to "»", artist_versions_path(search: {artist_id: artist_version.artist_id}, anchor: "artist-version-#{artist_version.id}") %> - <%= artist_version_name_diff(artist_version) %> + <%= artist_version_name_diff(artist_version, params[:type]) %> <% end %> <% t.column "Other Names", td: {class: "diff-body"} do |artist_version| %> - <%= artist_version_group_name_diff(artist_version) %> - <%= artist_version_other_names_diff(artist_version) %> + <%= artist_version_group_name_diff(artist_version, params[:type]) %> + <%= artist_version_other_names_diff(artist_version, params[:type]) %> <% end %> <% t.column "URLs", td: {class: "col-expand"} do |artist_version| %> - <%= artist_version_urls_diff(artist_version) %> + <%= artist_version_urls_diff(artist_version, params[:type]) %> <% end %> <% t.column "Changes" do |artist_version| %> - <%= status_diff_html(artist_version) %> + <%= status_diff_html(artist_version, params[:type]) %> <% end %> <% t.column "Updated" do |artist_version| %> <%= link_to_user artist_version.updater %> diff --git a/app/views/artist_versions/index.html.erb b/app/views/artist_versions/index.html.erb index 61eddc430..9c4d4fe06 100644 --- a/app/views/artist_versions/index.html.erb +++ b/app/views/artist_versions/index.html.erb @@ -2,6 +2,8 @@

Artist History

+ <%= render "versions/types" %> + <%= render "listing" %> <%= numbered_paginator(@artist_versions, :search_count => params[:search]) %> diff --git a/app/views/note_versions/_listing.html.erb b/app/views/note_versions/_listing.html.erb index 8449b678d..2bd4e0943 100644 --- a/app/views/note_versions/_listing.html.erb +++ b/app/views/note_versions/_listing.html.erb @@ -14,16 +14,16 @@ <% end %> <% end %> <% t.column "Body", td: {class: "col-expand diff-body"} do |note_version| %> - <%= diff_body_html(note_version, note_version.previous, :body) %> + <%= note_version_body_diff(note_version, params[:type]) %> <% end %> <% t.column "Position (X,Y)", width: "5%", column: "position" do |note_version| %> - <%= note_version_position_diff(note_version) %> + <%= note_version_position_diff(note_version, params[:type]) %> <% end %> <% t.column "Size (WxH)", width: "5%", column: "size" do |note_version| %> - <%= note_version_size_diff(note_version) %> + <%= note_version_size_diff(note_version, params[:type]) %> <% end %> <% t.column "Changes", width: "3%" do |note_version| %> - <%= status_diff_html(note_version) %> + <%= status_diff_html(note_version, params[:type]) %> <% end %> <% t.column "Updated", width: "10%" do |note_version| %>
diff --git a/app/views/note_versions/index.html.erb b/app/views/note_versions/index.html.erb index c0e9b62fe..5dc24c69e 100644 --- a/app/views/note_versions/index.html.erb +++ b/app/views/note_versions/index.html.erb @@ -2,6 +2,8 @@

Note History

+ <%= render "versions/types" %> + <%= render "listing" %> <%= numbered_paginator(@note_versions) %> diff --git a/app/views/pool_versions/_listing.html.erb b/app/views/pool_versions/_listing.html.erb index 382814f3e..bf663495a 100644 --- a/app/views/pool_versions/_listing.html.erb +++ b/app/views/pool_versions/_listing.html.erb @@ -2,21 +2,21 @@ <%= table_for @pool_versions, {class: "striped autofit", width: "100%"} do |t| %> <% t.column column: "diff", width: "3%" do |pool_version| %> - <%= link_to_if pool_version_show_diff(pool_version), "diff", diff_pool_version_path(pool_version.id) %> + <%= link_to_if pool_version_show_diff(pool_version, params[:type]), "diff", diff_pool_version_path(pool_version.id) %> <% end %> <% t.column "Pool", td: {class: "diff-body"} do |pool_version| %> <%= link_to pool_version.pretty_name, pool_path(pool_version.pool_id), class: "pool-category-#{pool_version.pool.category}" %> <%= link_to "»", pool_versions_path(search: { pool_id: pool_version.pool_id }, anchor: "pool-version-#{pool_version.id}"), class: "pool-category-#{pool_version.pool.category}" %> - <%= pool_version_name_diff(pool_version) %> + <%= pool_version_name_diff(pool_version, params[:type]) %> <% end %> <% t.column "Post Changes", td: { class: "col-expand" } do |pool_version| %> - <%= pool_version_post_diff(pool_version) %> + <%= pool_version_post_diff(pool_version, params[:type]) %> <% end %> <% t.column "Post Count" do |pool_version| %> <%= link_to pool_version.post_ids.size, pool_versions_path(search: { pool_id: pool_version.pool_id }) %> <% end %> <% t.column "Changes", td: {class: "col-expand"} do |pool_version| %> - <%= status_diff_html(pool_version) %> + <%= status_diff_html(pool_version, params[:type]) %> <% end %> <% t.column "Updated", width: "10%" do |pool_version| %>
diff --git a/app/views/pool_versions/diff.html.erb b/app/views/pool_versions/diff.html.erb index 0f0be8b1f..8cd58174b 100644 --- a/app/views/pool_versions/diff.html.erb +++ b/app/views/pool_versions/diff.html.erb @@ -3,18 +3,26 @@
-

Pool Version Comparison: <%= link_to @pool_version.pretty_name, pool_versions_path(search: { pool_id: @pool_version.pool_id }, anchor: "pool-version-#{@pool_version.id}"), class: "pool-category-#{@pool_version.pool.category}" %>

+

Pool Version Comparison: <%= link_to @pool_version.pretty_name, pool_versions_path(search: { pool_id: @pool_version.pool_id }, type: params[:type], anchor: "pool-version-#{@pool_version.id}"), class: "pool-category-#{@pool_version.pool.category}" %>

+ + <%= render "versions/types" %> <% if @other_version.present? %> -

Showing differences between <%= compact_time @pool_version.updated_at %> (<%= link_to_user @pool_version.updater %>) and <%= compact_time @other_version.updated_at %> (<%= link_to_user @other_version.updater %>)

+ <% if @pool_version.id != @other_version.id %> +

Showing differences between <%= compact_time @pool_version.updated_at %> (<%= link_to_user @pool_version.updater %>) and <%= compact_time @other_version.updated_at %> (<%= link_to_user @other_version.updater %>)

- <% if @pool_version.description != @other_version.description %> -
- <%= diff_body_html(@pool_version, @other_version, :description) %> -
+ <% if @pool_version.description != @other_version.description %> +
+ <%= diff_body_html(@pool_version, @other_version, :description) %> +
+ <% else %> +

No changes to description.

+ <% end %> <% else %> -

No changes to description.

+

Version is latest!

<% end %> + <% else %> +

No versions to compare!

<% end %>
diff --git a/app/views/pool_versions/index.html.erb b/app/views/pool_versions/index.html.erb index ceba9f95c..8bc6e7459 100644 --- a/app/views/pool_versions/index.html.erb +++ b/app/views/pool_versions/index.html.erb @@ -2,6 +2,8 @@

Pool History

+ <%= render "versions/types" %> + <%= render "listing" %> <%= numbered_paginator(@pool_versions) %> diff --git a/app/views/post_versions/_listing.html.erb b/app/views/post_versions/_listing.html.erb index 238e02903..8c8c51780 100644 --- a/app/views/post_versions/_listing.html.erb +++ b/app/views/post_versions/_listing.html.erb @@ -18,10 +18,10 @@ <%= link_to "#{post_version.post_id}.#{post_version.version}", post_versions_path(search: { post_id: post_version.post_id }, anchor: "post-version-#{post_version.id}") %> <% end %> <% t.column "Tags", td: {class: "col-expand"} do |post_version| %> - <%= post_version_diff(post_version) %> + <%= post_version_diff(post_version, params[:type]) %> <% end %> <% t.column "Changes" do |post_version| %> - <%= status_diff_html(post_version) %> + <%= status_diff_html(post_version, params[:type]) %> <% end %> <% t.column "Updated" do |post_version| %> <%= link_to_user post_version.updater %> diff --git a/app/views/post_versions/index.html.erb b/app/views/post_versions/index.html.erb index 9fbe4a28d..826f702ee 100644 --- a/app/views/post_versions/index.html.erb +++ b/app/views/post_versions/index.html.erb @@ -6,6 +6,8 @@

Post History

<% end %> + <%= render "versions/types" %> + <%= search_form_for(post_versions_path, classes: "inline-form") do |f| %> <%= f.input :post_id, label: "Post", input_html: { value: params.dig(:search, :post_id) } %> <%= f.input :updater_name, label: "Updater", input_html: { "data-autocomplete": "user", value: params.dig(:search, :updater_name) } %> diff --git a/app/views/versions/_types.html.erb b/app/views/versions/_types.html.erb new file mode 100644 index 000000000..1c1e2c4fd --- /dev/null +++ b/app/views/versions/_types.html.erb @@ -0,0 +1,6 @@ +
+ Version comparison: +
    + <%= version_type_links(params) %> +
+
diff --git a/app/views/wiki_page_versions/_listing.html.erb b/app/views/wiki_page_versions/_listing.html.erb index 36469aca0..c60f7cb2c 100644 --- a/app/views/wiki_page_versions/_listing.html.erb +++ b/app/views/wiki_page_versions/_listing.html.erb @@ -2,7 +2,7 @@ <%= form_tag(diff_wiki_page_versions_path, :method => :get) do %> <%= table_for @wiki_page_versions.includes(:updater, :tag), width: "100%" do |t| %> <% t.column column: "diff", width: "3%" do |wiki_page_version, i| %> - <%= link_to_if wiki_version_show_diff(wiki_page_version), "diff", diff_wiki_page_versions_path(otherpage: wiki_page_version.previous.try(:id), thispage: wiki_page_version.id) %> + <%= link_to_if wiki_version_show_diff(wiki_page_version, params[:type]), "diff", diff_wiki_page_versions_path(thispage: wiki_page_version.id, type: params[:type]) %> <% end %> <% if listing_type(:wiki_page_id, member_check: false, types: [:page, :global]) == :page %> @@ -20,10 +20,10 @@ <%= link_to wiki_page_version.title, wiki_page_version %> <%= link_to "»", wiki_page_versions_path(search: { wiki_page_id: wiki_page_version.wiki_page_id }) %> - <%= wiki_version_title_diff(wiki_page_version) %> + <%= wiki_version_title_diff(wiki_page_version, params[:type]) %> <% end %> <% t.column "Changes", width: "5%" do |wiki_page_version| %> - <%= status_diff_html(wiki_page_version) %> + <%= status_diff_html(wiki_page_version, params[:type]) %> <% end %> <% t.column "Updated", width: "26%" do |wiki_page_version| %> <%= compact_time(wiki_page_version.updated_at) %> diff --git a/app/views/wiki_page_versions/diff.html.erb b/app/views/wiki_page_versions/diff.html.erb index e38bedb5b..c7e063eff 100644 --- a/app/views/wiki_page_versions/diff.html.erb +++ b/app/views/wiki_page_versions/diff.html.erb @@ -4,21 +4,33 @@ <%= render "wiki_pages/sidebar" %> <% content_for(:content) do %> -

Wiki Page Version Comparison: <%= link_to @thispage.title, wiki_page_versions_path(search: { wiki_page_id: @thispage.wiki_page_id }, anchor: "wiki-page-version-#{@thispage.id}"), class: "tag-type-#{@thispage.wiki_page.category_name}" %>

+

Wiki Page Version Comparison: <%= link_to @thispage.title, wiki_page_versions_path(search: { wiki_page_id: @thispage.wiki_page_id }, type: params[:type], anchor: "wiki-page-version-#{@thispage.id}"), class: "tag-type-#{@thispage.wiki_page.category_name}" %>

-

Showing differences between <%= compact_time @thispage.updated_at %> (<%= link_to_user @thispage.updater %>) and <%= compact_time @otherpage.updated_at %> (<%= link_to_user @otherpage.updater %>)

- - <% if wiki_version_show_other_names(@thispage, @otherpage) %> -

<%= wiki_version_other_names_diff(@thispage, @otherpage) %>

- <% else %> -

No changes to other names.

+ <% if params[:type].present? %> + <%= render "versions/types" %> <% end %> - <% if @thispage.body != @otherpage.body %> -
- <%= diff_body_html(@thispage, @otherpage, :body) %> -
+ <% if @otherpage.present? %> + <% if @thispage.id != @otherpage.id %> +

Showing differences between <%= compact_time @thispage.updated_at %> (<%= link_to_user @thispage.updater %>) and <%= compact_time @otherpage.updated_at %> (<%= link_to_user @otherpage.updater %>)

+ + <% if wiki_version_show_other_names(@thispage, @otherpage) %> +

<%= wiki_version_other_names_diff(@thispage, @otherpage) %>

+ <% else %> +

No changes to other names.

+ <% end %> + + <% if @thispage.body != @otherpage.body %> +
+ <%= diff_body_html(@thispage, @otherpage, :body) %> +
+ <% else %> +

No changes to body.

+ <% end %> + <% else %> +

Version is latest!

+ <% end %> <% else %> -

No changes to body.

+

No versions to compare!

<% end %> <% end %> diff --git a/app/views/wiki_page_versions/index.html.erb b/app/views/wiki_page_versions/index.html.erb index 33613d14f..382ecf479 100644 --- a/app/views/wiki_page_versions/index.html.erb +++ b/app/views/wiki_page_versions/index.html.erb @@ -3,6 +3,8 @@ <% content_for(:content) do %>

Wiki Page History

+ <%= render "versions/types" %> + <%= render "listing" %> <%= numbered_paginator(@wiki_page_versions) %> From 429667e6644d259d9f51964d4ec847c2e58d9fb8 Mon Sep 17 00:00:00 2001 From: BrokenEagle Date: Tue, 17 Mar 2020 17:05:26 +0000 Subject: [PATCH 3/3] Remove upload tags report - Use the current comparison type for post versions instead - Also add the note versions as a report - No other versions are meaningful as reports since it is expected for them to be modified by other users, or they don't have version numbers as is the case with artist commentaries --- app/controllers/reports_controller.rb | 9 ----- app/logical/reports/upload_tags.rb | 51 --------------------------- app/views/users/_statistics.html.erb | 7 ++-- config/routes.rb | 2 -- 4 files changed, 5 insertions(+), 64 deletions(-) delete mode 100644 app/controllers/reports_controller.rb delete mode 100644 app/logical/reports/upload_tags.rb diff --git a/app/controllers/reports_controller.rb b/app/controllers/reports_controller.rb deleted file mode 100644 index cf8b4f65c..000000000 --- a/app/controllers/reports_controller.rb +++ /dev/null @@ -1,9 +0,0 @@ -class ReportsController < ApplicationController - respond_to :html, :xml, :json - - def upload_tags - @user = User.find(params[:user_id]) - @upload_reports = Reports::UploadTags.includes(versions: { post: :versions }).for_user(params[:user_id]).order("id desc").paginate(params[:page], :limit => params[:limit]) - respond_with(@upload_reports) - end -end diff --git a/app/logical/reports/upload_tags.rb b/app/logical/reports/upload_tags.rb deleted file mode 100644 index d49996079..000000000 --- a/app/logical/reports/upload_tags.rb +++ /dev/null @@ -1,51 +0,0 @@ -module Reports - class UploadTags < ::Post - def readonly? - true - end - - def api_attributes - [:id, :uploader_id, :uploader_tags, :added_tags, :removed_tags] - end - - def uploader_tags_array - @uploader_tags ||= begin - uploader_versions = versions.where(updater_id: uploader_id) - tags = [] - uploader_versions.each do |version| - tags += version.changes[:added_tags] - tags -= version.changes[:removed_tags] - end - tags.uniq.sort - end - end - - def current_tags_array - latest_tags = tag_array - latest_tags << "rating:#{rating}" if rating.present? - latest_tags << "parent:#{parent_id}" if parent_id.present? - latest_tags << "source:#{source}" if source.present? - latest_tags - end - - def added_tags_array - current_tags_array - uploader_tags_array - end - - def removed_tags_array - uploader_tags_array - current_tags_array - end - - def uploader_tags - uploader_tags_array.join(' ') - end - - def added_tags - added_tags_array.join(' ') - end - - def removed_tags - removed_tags_array.join(' ') - end - end -end diff --git a/app/views/users/_statistics.html.erb b/app/views/users/_statistics.html.erb index 987cf1c3b..da98d877d 100644 --- a/app/views/users/_statistics.html.erb +++ b/app/views/users/_statistics.html.erb @@ -73,7 +73,7 @@ <%= presenter.upload_count(self) %> <% if presenter.has_uploads? %> - (<%= link_to "tag changes report", reports_upload_tags_path(user_id: user.id) %>) + (<%= link_to "tag changes report", post_versions_path(search: { updater_id: user.id, version: 1 }, type: "current") %>) <% end %> <% if CurrentUser.is_moderator? %> [<%= link_to "sample", posts_path(:tags => "user:#{user.name} order:random limit:300") %>] @@ -130,7 +130,10 @@ Note Changes - <%= presenter.note_version_count(self) %> in <%= presenter.noted_posts_count(self) %> posts + + <%= presenter.note_version_count(self) %> in <%= presenter.noted_posts_count(self) %> posts + (<%= link_to "note changes report", note_versions_path(search: { updater_id: user.id, version: 1 }, type: "current") %>) + diff --git a/config/routes.rb b/config/routes.rb index 8c6e9a25c..69f9134f2 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -216,8 +216,6 @@ Rails.application.routes.draw do end resources :artist_commentary_versions, :only => [:index, :show] resource :related_tag, :only => [:show, :update] - get "reports/uploads" => "reports#uploads" - get "reports/upload_tags" => "reports#upload_tags" resources :recommended_posts, only: [:index] resources :robots, only: [:index] resources :saved_searches, :except => [:show] do