From 70fef49e817d926dd34f3ca240c2fcb61a91db40 Mon Sep 17 00:00:00 2001 From: r888888888 Date: Sun, 11 Sep 2016 01:37:10 -0700 Subject: [PATCH] add saved search category change ui --- ...aved_search_category_changes_controller.rb | 14 +++++++++++ app/models/saved_search.rb | 25 +++++++++++++++++-- .../new.html.erb | 25 +++++++++++++++++++ app/views/saved_searches/index.html.erb | 5 ++-- config/routes.rb | 1 + 5 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 app/controllers/saved_search_category_changes_controller.rb create mode 100644 app/views/saved_search_category_changes/new.html.erb diff --git a/app/controllers/saved_search_category_changes_controller.rb b/app/controllers/saved_search_category_changes_controller.rb new file mode 100644 index 000000000..0c97caa02 --- /dev/null +++ b/app/controllers/saved_search_category_changes_controller.rb @@ -0,0 +1,14 @@ +class SavedSearchCategoryChangesController < ApplicationController + before_filter :member_only + respond_to :html + + def new + @category = params[:old] + end + + def create + SavedSearch.rename(CurrentUser.user.id, params[:old], params[:new]) + flash[:notice] = "Saved searches will be renamed" + redirect_to saved_searches_path + end +end diff --git a/app/models/saved_search.rb b/app/models/saved_search.rb index 7de5f743f..ef45effe7 100644 --- a/app/models/saved_search.rb +++ b/app/models/saved_search.rb @@ -30,6 +30,15 @@ class SavedSearch < ActiveRecord::Base true end + + def rename_listbooru(user_id, old_category, new_category) + return false unless Danbooru.config.listbooru_enabled? + + sqs = SqsService.new(Danbooru.config.aws_sqs_queue_url) + sqs.send_message("rename\n#{user_id}\n#{old_category}\n#{new_category}\n") + + true + end end def update_listbooru_on_create @@ -71,13 +80,25 @@ class SavedSearch < ActiveRecord::Base before_validation :normalize def self.tagged(tags) - where(:tag_query => SavedSearch.normalize(tags)).first + where(:tag_query => normalize(tags)).first end def self.normalize(tag_query) Tag.scan_query(tag_query).join(" ") end + def self.normalize_category(category) + category.to_s.strip.gsub(/\s+/, "_").downcase + end + + def self.rename(user_id, old_category, new_category) + user = User.find(user_id) + old_category = normalize_category(old_category) + new_category = normalize_category(new_category) + user.saved_searches.where(category: old_category).update_all(category: new_category) + rename_listbooru(user_id, old_category, new_category) + end + def self.post_ids(user_id, name = nil) return [] unless Danbooru.config.listbooru_enabled? @@ -110,7 +131,7 @@ class SavedSearch < ActiveRecord::Base end def normalize - self.category = category.strip.gsub(/\s+/, "_").downcase if category + self.category = SavedSearch.normalize_category(category) if category self.tag_query = SavedSearch.normalize(tag_query) end diff --git a/app/views/saved_search_category_changes/new.html.erb b/app/views/saved_search_category_changes/new.html.erb new file mode 100644 index 000000000..a18edda63 --- /dev/null +++ b/app/views/saved_search_category_changes/new.html.erb @@ -0,0 +1,25 @@ +
+
+

Change Category

+ + <%= form_tag(saved_search_category_change_path, :class => "simple_form") do %> +
+ + <%= text_field_tag "old", params[:old] %> +
+ +
+ + <%= text_field_tag "new" %> +
+ + <%= submit_tag %> + <% end %> +
+
+ +<%= render "saved_searches/secondary_links" %> + +<% content_for(:page_title) do %> + Edit Category - <%= Danbooru.config.app_name %> +<% end %> diff --git a/app/views/saved_searches/index.html.erb b/app/views/saved_searches/index.html.erb index 2fb2e628b..b09bb8e34 100644 --- a/app/views/saved_searches/index.html.erb +++ b/app/views/saved_searches/index.html.erb @@ -6,6 +6,7 @@

<% if category.present? %> <%= link_to_if SavedSearch.posts_search_available?, category.tr("_", " "), posts_path(:tags => "search:#{category}") %> + (<%= link_to "rename", new_saved_search_category_change_path(:old => category) %>) <% else %> <%= link_to_if SavedSearch.posts_search_available?, SavedSearch::UNCATEGORIZED_NAME, posts_path(:tags => "search:all") %> <% end %> @@ -13,8 +14,8 @@ - - + + diff --git a/config/routes.rb b/config/routes.rb index 983103107..5a77fa5e2 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -236,6 +236,7 @@ Rails.application.routes.draw do get :categories end end + resource :saved_search_category_change, :only => [:new, :create] resource :session do collection do get :sign_out
TagsTags