From a586916cb35999ab63aa72acce3024efa7f5fd24 Mon Sep 17 00:00:00 2001 From: evazion Date: Sun, 18 Aug 2019 16:54:13 -0500 Subject: [PATCH] /wiki_page_versions: various usability improvements. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changes to the /wiki_page_versions global listing: * Add "diff" links that show you what changed in the given edit. * Add "?" links that take you to the current version of the wiki. * Add "»" links next to wiki page titles that take you to the wiki's full edit history. * Add "»" links next to usernames that take you to the user's full edit history. * Add a "Status" column that shows whether the wiki page was created, deleted, undeleted, or renamed. * Link to /wiki_page_versions in sidebar, not /wiki_pages?order=time. --- app/helpers/wiki_page_versions_helper.rb | 13 ++++++++ app/models/wiki_page_version.rb | 3 -- .../_global_listing.html.erb | 32 +++++++++---------- .../wiki_page_versions/_page_listing.html.erb | 26 ++++++--------- app/views/wiki_page_versions/index.html.erb | 2 +- app/views/wiki_pages/_recent_changes.html.erb | 2 +- 6 files changed, 39 insertions(+), 39 deletions(-) diff --git a/app/helpers/wiki_page_versions_helper.rb b/app/helpers/wiki_page_versions_helper.rb index f23886c82..44b1b3ba6 100644 --- a/app/helpers/wiki_page_versions_helper.rb +++ b/app/helpers/wiki_page_versions_helper.rb @@ -1,4 +1,17 @@ module WikiPageVersionsHelper + def wiki_page_version_status_diff(wiki_page_version) + cur = wiki_page_version + prev = wiki_page_version.previous + + return "New" if prev.blank? + + status = [] + status += ["Renamed"] if cur.title != prev.title + status += ["Deleted"] if cur.is_deleted? && !prev.is_deleted? + status += ["Undeleted"] if !cur.is_deleted? && prev.is_deleted? + status.join(" ") + end + def wiki_page_diff(thispage, otherpage) pattern = Regexp.new('(?:<.+?>)|(?:\w+)|(?:[ \t]+)|(?:\r?\n)|(?:.+?)') other_names_pattern = Regexp.new('\S+|\s+') diff --git a/app/models/wiki_page_version.rb b/app/models/wiki_page_version.rb index 1f39a5467..aa86a4206 100644 --- a/app/models/wiki_page_version.rb +++ b/app/models/wiki_page_version.rb @@ -5,8 +5,6 @@ class WikiPageVersion < ApplicationRecord belongs_to :artist, optional: true delegate :visible?, :to => :wiki_page - extend Memoist - module SearchMethods def for_user(user_id) where("updater_id = ?", user_id) @@ -41,7 +39,6 @@ class WikiPageVersion < ApplicationRecord def previous WikiPageVersion.where("wiki_page_id = ? and id < ?", wiki_page_id, id).order("id desc").first end - memoize :previous def category_name Tag.category_for(title) diff --git a/app/views/wiki_page_versions/_global_listing.html.erb b/app/views/wiki_page_versions/_global_listing.html.erb index 884868429..03fbbf14a 100644 --- a/app/views/wiki_page_versions/_global_listing.html.erb +++ b/app/views/wiki_page_versions/_global_listing.html.erb @@ -2,34 +2,32 @@ + - - - <% if CurrentUser.is_moderator? %> - - <% end %> + <% @wiki_page_versions.each do |wiki_page_version| %> - - - - <% if CurrentUser.is_moderator? %> - - <% end %> + + <% end %> diff --git a/app/views/wiki_page_versions/_page_listing.html.erb b/app/views/wiki_page_versions/_page_listing.html.erb index 332286a81..5d6cabe85 100644 --- a/app/views/wiki_page_versions/_page_listing.html.erb +++ b/app/views/wiki_page_versions/_page_listing.html.erb @@ -6,13 +6,8 @@ - - - - <% if CurrentUser.is_moderator? %> - - <% end %> + @@ -30,21 +25,18 @@ - - - <% if CurrentUser.is_moderator? %> - - <% end %> + <% end %> diff --git a/app/views/wiki_page_versions/index.html.erb b/app/views/wiki_page_versions/index.html.erb index f28821b7a..06e7f9fe2 100644 --- a/app/views/wiki_page_versions/index.html.erb +++ b/app/views/wiki_page_versions/index.html.erb @@ -3,7 +3,7 @@ <%= render "wiki_pages/sidebar" %>
-

Wiki Pages

+

Wiki Page History

<% if params.dig(:search, :wiki_page_id).present? %> <%= render "page_listing" %> diff --git a/app/views/wiki_pages/_recent_changes.html.erb b/app/views/wiki_pages/_recent_changes.html.erb index 02868a9ad..74312bcac 100644 --- a/app/views/wiki_pages/_recent_changes.html.erb +++ b/app/views/wiki_pages/_recent_changes.html.erb @@ -1,5 +1,5 @@
-

Recent Changes (<%= link_to "all", wiki_pages_path(:order => "time") %>)

+

Recent Changes (<%= link_to "all", wiki_page_versions_path %>)

    <% WikiPage.recent.each do |page| %>
  • <%= link_to page.pretty_title, wiki_page_path(page) %>
TitleDelIP AddressStatus Last edited
- <%= link_to wiki_page_version.title, wiki_page_version_path(wiki_page_version) %> + + <%= 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) %> <%= wiki_page_version.is_deleted? ? "Y" : "" %><%= link_to "wiki", wiki_page_path(wiki_page_version.wiki_page_id) %> - <%= link_to_ip wiki_page_version.updater_ip_addr %> - + <%= 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_page_version_status_diff(wiki_page_version) %> <%= compact_time(wiki_page_version.updated_at) %> - <% if wiki_page_version.updater %> - by - <%= link_to_user wiki_page_version.updater %> + by + <%= link_to_user wiki_page_version.updater %> + <% if CurrentUser.is_moderator? %> + (<%= link_to_ip wiki_page_version.updater_ip_addr %>) <% end %> + <%= link_to "»", wiki_page_versions_path(search: { updater_id: wiki_page_version.updater.id }) %>
TitleDelIP AddressStatus Last edited
<%= radio_button_tag "otherpage", wiki_page_version.id, (i == 0) %> - <%= link_to wiki_page_version.title, wiki_page_version_path(wiki_page_version) %> + <%= link_to "?", wiki_page_path(wiki_page_version.wiki_page_id) %> + <%= link_to wiki_page_version.title, wiki_page_version %> <%= wiki_page_version.is_deleted? ? "Y" : "" %><%= link_to "wiki", wiki_page_path(wiki_page_version.wiki_page_id) %> - <%= link_to_ip wiki_page_version.updater_ip_addr %> - <%= wiki_page_version_status_diff(wiki_page_version) %> <%= compact_time(wiki_page_version.updated_at) %> - <% if wiki_page_version.updater %> - by - <%= link_to_user wiki_page_version.updater %> + by + <%= link_to_user wiki_page_version.updater %> + <% if CurrentUser.is_moderator? %> + (<%= link_to_ip wiki_page_version.updater_ip_addr %>) <% end %> + <%= link_to "»", wiki_page_versions_path(search: { updater_id: wiki_page_version.updater.id }) %>