From 5de709fda73f96869b332d066ef0ade7262692c7 Mon Sep 17 00:00:00 2001 From: Mark Seymour Date: Tue, 27 Oct 2015 21:22:37 -0300 Subject: [PATCH 1/3] Add meta viewport tag to all layouts --- app/views/layouts/blank.html.erb | 1 + app/views/layouts/default.html.erb | 1 + app/views/layouts/mobile.html.erb | 1 + 3 files changed, 3 insertions(+) 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 @@ <%= yield :page_title %> + <%= csrf_meta_tag %> diff --git a/app/views/layouts/default.html.erb b/app/views/layouts/default.html.erb index 2793d4c56..5bc4a5d48 100644 --- a/app/views/layouts/default.html.erb +++ b/app/views/layouts/default.html.erb @@ -2,6 +2,7 @@ <%= yield :page_title %> + <%= csrf_meta_tag %> diff --git a/app/views/layouts/mobile.html.erb b/app/views/layouts/mobile.html.erb index 09c50688e..f3296bfb7 100644 --- a/app/views/layouts/mobile.html.erb +++ b/app/views/layouts/mobile.html.erb @@ -2,6 +2,7 @@ <%= yield :page_title %> + <%= csrf_meta_tag %> <%= stylesheet_link_tag "mobile", :media => "screen" %> From fafb8810800977646f3c8866e5adeccf96ca7d3b Mon Sep 17 00:00:00 2001 From: r888888888 Date: Tue, 27 Oct 2015 17:45:32 -0700 Subject: [PATCH 2/3] remove support for listbooru for tag subscriptions, enable for saved searches #2523 --- app/assets/javascripts/posts.js | 16 ++++----- app/models/saved_search.rb | 48 +++++++++++++++++-------- app/models/tag_subscription.rb | 23 ------------ app/views/saved_searches/index.html.erb | 1 - 4 files changed, 39 insertions(+), 49 deletions(-) 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/models/saved_search.rb b/app/models/saved_search.rb index f603054ec..1c9163c1f 100644 --- a/app/models/saved_search.rb +++ b/app/models/saved_search.rb @@ -1,11 +1,43 @@ class SavedSearch < ActiveRecord::Base + module ListbooruMethods + extend ActiveSupport::Concern + + module ClassMethods + def update_listbooru_on_create(user_id, query) + 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) + 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 +72,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/saved_searches/index.html.erb b/app/views/saved_searches/index.html.erb index 855eb5b70..48b04ae70 100644 --- a/app/views/saved_searches/index.html.erb +++ b/app/views/saved_searches/index.html.erb @@ -17,7 +17,6 @@ <%= link_to saved_search.tag_query, posts_path(:tags => saved_search.tag_query) %> - <%= link_to "edit", edit_saved_search_path(saved_search) %> | <%= link_to "delete", saved_search_path(saved_search), :method => :delete, :remote => true %> From 98dfae2c7ffb1eb3ceb512483a3d69aa50d011cd Mon Sep 17 00:00:00 2001 From: r888888888 Date: Tue, 27 Oct 2015 18:01:35 -0700 Subject: [PATCH 3/3] ping listbooru when scanning saved searches #2523 --- app/controllers/saved_searches_controller.rb | 14 +++----------- app/models/saved_search.rb | 8 ++++++++ config/routes.rb | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) 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 1c9163c1f..6ef423e7a 100644 --- a/app/models/saved_search.rb +++ b/app/models/saved_search.rb @@ -3,12 +3,20 @@ class SavedSearch < ActiveRecord::Base 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") diff --git a/config/routes.rb b/config/routes.rb index 45d4de9cd..f980874f7 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -222,7 +222,7 @@ Rails.application.routes.draw do get "reports/user_promotions" => "reports#user_promotions" get "reports/janitor_trials" => "reports#janitor_trials" get "reports/contributors" => "reports#contributors" - resources :saved_searches + resources :saved_searches, :only => [:index, :create, :destroy] resource :session do collection do get :sign_out