diff --git a/app/assets/javascripts/posts.js b/app/assets/javascripts/posts.js index 0102ee093..4cc773931 100644 --- a/app/assets/javascripts/posts.js +++ b/app/assets/javascripts/posts.js @@ -523,16 +523,12 @@ Danbooru.Post.initialize_saved_searches = function() { $("#save-search").click(function() { - var input = window.prompt("Category for this saved search (optional):"); - if (input !== null) { - $.post( - "/saved_searches.js", - { - "tags": $("#tags").attr("value"), - "category": input - } - ); - } + $.post( + "/saved_searches.js", + { + "tags": $("#tags").attr("value") + } + ); }); } })(); diff --git a/app/controllers/saved_searches_controller.rb b/app/controllers/saved_searches_controller.rb index 92b94a8eb..9088f140f 100644 --- a/app/controllers/saved_searches_controller.rb +++ b/app/controllers/saved_searches_controller.rb @@ -1,7 +1,10 @@ class SavedSearchesController < ApplicationController + before_filter :member_only respond_to :html, :xml, :json, :js def index + SavedSearch.delay(:queue => "default").refresh_listbooru(CurrentUser.id) + @saved_searches = saved_searches.order("tag_query") @categories = @saved_searches.group_by{|saved_search| saved_search.category.to_s} @categories = @categories.sort_by{|category, saved_searches| category.to_s} @@ -22,17 +25,6 @@ class SavedSearchesController < ApplicationController @saved_search.destroy end - def edit - @saved_search = saved_searches.find(params[:id]) - end - - def update - @saved_search = saved_searches.find(params[:id]) - @saved_search.update_attributes(params[:saved_search]) - flash[:notice] = "Saved search updated" - respond_with(@saved_search, :location => saved_searches_path) - end - private def saved_searches diff --git a/app/models/saved_search.rb b/app/models/saved_search.rb index f603054ec..6ef423e7a 100644 --- a/app/models/saved_search.rb +++ b/app/models/saved_search.rb @@ -1,11 +1,51 @@ class SavedSearch < ActiveRecord::Base + module ListbooruMethods + extend ActiveSupport::Concern + + module ClassMethods + def refresh_listbooru(user_id) + return unless Danbooru.config.listbooru_auth_key + uri = URI.parse("#{Danbooru.config.listbooru_server}/users/#{user_id}") + Net::HTTP.get_response(uri) + end + + def update_listbooru_on_create(user_id, query) + return unless Danbooru.config.listbooru_auth_key + uri = URI.parse("#{Danbooru.config.listbooru_server}/searches") + Net::HTTP.post_form(uri, {"user_id" => user_id, "query" => query, "key" => Danbooru.config.listbooru_auth_key}) + end + + def update_listbooru_on_destroy(user_id, query) + return unless Danbooru.config.listbooru_auth_key + uri = URI.parse("#{Danbooru.config.listbooru_server}/searches") + Net::HTTP.start(uri.host, uri.port) do |http| + req = Net::HTTP::Delete.new("/searches") + req.set_form_data("user_id" => user_id, "query" => query, "key" => Danbooru.config.listbooru_auth_key) + http.request(req) + end + end + end + + def update_listbooru_on_create + return unless Danbooru.config.listbooru_auth_key + SavedSearch.delay(:queue => "default").update_listbooru_on_create(user_id, tag_query) + end + + def update_listbooru_on_destroy + return unless Danbooru.config.listbooru_auth_key + SavedSearch.delay(:queue => "default").update_listbooru_on_destroy(user_id, tag_query) + end + end + + include ListbooruMethods + belongs_to :user validates :tag_query, :presence => true validate :validate_count attr_accessible :tag_query, :category before_create :update_user_on_create after_destroy :update_user_on_destroy - before_create :update_listbooru_on_create + after_create :update_listbooru_on_create after_destroy :update_listbooru_on_destroy validates_uniqueness_of :tag_query, :scope => :user_id before_validation :normalize @@ -40,18 +80,4 @@ class SavedSearch < ActiveRecord::Base end end - def update_listbooru_on_create - return unless Danbooru.config.listbooru_auth_key - Net::HTTP.post_form(Danbooru.config.listbooru_server, {"user_id" => user_id, "query" => tag_query, "key" => Danbooru.config.listbooru_auth_key, "name" => "saved"}) - end - - def update_listbooru_on_destroy - return unless Danbooru.config.listbooru_auth_key - uri = URI.parse(Danbooru.config.listbooru_server) - Net::HTTP.start(uri.host, uri.port) do |http| - req = Net::HTTP::Delete.new("/searches") - req.set_form_data("user_id" => user_id, "query" => tag_query, "key" => Danbooru.config.listbooru_auth_key, "name" => "saved") - http.request(req) - end - end end diff --git a/app/models/tag_subscription.rb b/app/models/tag_subscription.rb index 465786d7c..76f81837d 100644 --- a/app/models/tag_subscription.rb +++ b/app/models/tag_subscription.rb @@ -4,9 +4,6 @@ class TagSubscription < ActiveRecord::Base before_validation :initialize_post_ids, :on => :create before_save :normalize_name before_save :limit_tag_count - before_create :update_listbooru_on_create - before_update :update_listbooru_on_update - after_destroy :update_listbooru_on_destroy attr_accessible :name, :tag_query, :post_ids, :is_public, :is_visible_on_profile validates_presence_of :name, :tag_query, :creator_id validate :validate_number_of_queries @@ -78,26 +75,6 @@ class TagSubscription < ActiveRecord::Base post_ids.split(/,/) end - def update_listbooru_on_create - return unless Danbooru.config.listbooru_auth_key - Net::HTTP.post_form(Danbooru.config.listbooru_server, {"user_id" => user_id, "query" => tag_query, "name" => "sub:#{id}", "key" => Danbooru.config.listbooru_auth_key}) - end - - def update_listbooru_on_update - update_listbooru_on_destroy - update_listbooru_on_create - end - - def update_listbooru_on_destroy - return unless Danbooru.config.listbooru_auth_key - uri = URI.parse(Danbooru.config.listbooru_server) - Net::HTTP.start(uri.host, uri.port) do |http| - req = Net::HTTP::Delete.new("/searches") - req.set_form_data("user_id" => user_id, "query" => tag_query, "key" => Danbooru.config.listbooru_auth_key, "name" => "sub:#{id}") - http.request(req) - end - end - module SearchMethods def visible_to(user) where("(is_public = TRUE OR creator_id = ? OR ?)", user.id, user.is_moderator?) diff --git a/app/views/layouts/blank.html.erb b/app/views/layouts/blank.html.erb index c7dcf2595..e51d98a91 100644 --- a/app/views/layouts/blank.html.erb +++ b/app/views/layouts/blank.html.erb @@ -2,6 +2,7 @@