From e23ee170f5c5ebeeb516be269017037a17be0561 Mon Sep 17 00:00:00 2001 From: BrokenEagle Date: Tue, 17 Mar 2020 07:23:42 +0000 Subject: [PATCH] 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) %>