From 99998561b68cde70334d919f1eee430dd646b897 Mon Sep 17 00:00:00 2001 From: Toks Date: Sun, 9 Jun 2013 10:12:33 -0400 Subject: [PATCH 1/3] remove now-unnecessary post count --- app/controllers/posts_controller.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb index 5ac7ba684..7c40b4571 100644 --- a/app/controllers/posts_controller.rb +++ b/app/controllers/posts_controller.rb @@ -14,9 +14,7 @@ class PostsController < ApplicationController respond_with(@posts) do |format| format.atom format.xml do - render :xml => @posts.to_xml(:root => "posts") {|builder| - builder.tag!("total-count", @posts.total_count) - } + render :xml => @posts.to_xml(:root => "posts") end end end From 2d0c3d16a355ccd27e19ceb8770dcf3962c8c05b Mon Sep 17 00:00:00 2001 From: Toks Date: Sun, 9 Jun 2013 11:40:34 -0400 Subject: [PATCH 2/3] fix #1724 for posts --- app/controllers/post_versions_controller.rb | 8 ++++++ app/models/post_version.rb | 27 +++++++++++++++++++++ app/views/post_versions/_listing.html.erb | 3 +++ app/views/post_versions/undo.js.erb | 1 + config/routes.rb | 3 +++ 5 files changed, 42 insertions(+) create mode 100644 app/views/post_versions/undo.js.erb diff --git a/app/controllers/post_versions_controller.rb b/app/controllers/post_versions_controller.rb index 89a606214..ddf634239 100644 --- a/app/controllers/post_versions_controller.rb +++ b/app/controllers/post_versions_controller.rb @@ -13,4 +13,12 @@ class PostVersionsController < ApplicationController def search end + + def undo + @post_version = PostVersion.find(params[:id]) + @post_version.undo! + respond_with(@post_version) do |format| + format.js + end + end end diff --git a/app/models/post_version.rb b/app/models/post_version.rb index 1af723881..017a5a348 100644 --- a/app/models/post_version.rb +++ b/app/models/post_version.rb @@ -112,4 +112,31 @@ class PostVersion < ActiveRecord::Base def truncated_source source.gsub(/^http:\/\//, "").sub(/\/.+/, "") end + + def undo + changes = diff(previous) + added = changes[:added_tags] - changes[:obsolete_added_tags] + removed = changes[:removed_tags] - changes[:obsolete_removed_tags] + + added.each do |tag| + if tag =~ /^source:/ + post.source = "" + else + escaped_tag = Regexp.escape(tag) + post.tag_string = post.tag_string.sub(/(?:\A| )#{escaped_tag}(?:\Z| )/, " ").strip + end + end + removed.each do |tag| + if tag =~ /^source:(.+)$/ + post.source = $1 + else + post.tag_string = "#{post.tag_string} #{tag}".strip + end + end + end + + def undo! + undo + post.save! + end end diff --git a/app/views/post_versions/_listing.html.erb b/app/views/post_versions/_listing.html.erb index e716a6626..fbb61dc26 100644 --- a/app/views/post_versions/_listing.html.erb +++ b/app/views/post_versions/_listing.html.erb @@ -36,6 +36,9 @@ <%= post_version_diff(post_version) %> <% if CurrentUser.is_member? %> + <% if post_version.id != post_version.post.versions.first.id %> + <%= link_to "Undo", undo_post_version_path(post_version), :method => :put, :remote => true %> | + <% end %> <%= link_to "Revert to", revert_post_path(post_version.post_id, :version_id => post_version.id), :method => :put, :remote => true %> <% end %> diff --git a/app/views/post_versions/undo.js.erb b/app/views/post_versions/undo.js.erb new file mode 100644 index 000000000..bcebe9d37 --- /dev/null +++ b/app/views/post_versions/undo.js.erb @@ -0,0 +1 @@ +location.reload(); \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 8886f94b2..1a8d1a1ca 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -159,6 +159,9 @@ Danbooru::Application.routes.draw do resources :post_appeals resources :post_flags resources :post_versions, :only => [:index, :search] do + member do + put :undo + end collection do get :search end From 6baff757f653c2dbf7d1857431078a756aa93145 Mon Sep 17 00:00:00 2001 From: Toks Date: Mon, 10 Jun 2013 11:22:42 -0400 Subject: [PATCH 3/3] remove old #nav-help reference --- app/assets/stylesheets/specific/posts.css.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/stylesheets/specific/posts.css.scss b/app/assets/stylesheets/specific/posts.css.scss index 63a9f6f63..900b79f8f 100644 --- a/app/assets/stylesheets/specific/posts.css.scss +++ b/app/assets/stylesheets/specific/posts.css.scss @@ -243,7 +243,7 @@ div#c-posts { margin-top: 0.5em; } - #pool-nav, #search-seq-nav, #nav-help { + #pool-nav, #search-seq-nav { li { position: relative; text-align: center;