support new listbooru changes #2523

This commit is contained in:
r888888888
2015-11-03 16:49:43 -08:00
parent faa41d6181
commit 6514265ca7
7 changed files with 32 additions and 19 deletions

View File

@@ -523,10 +523,15 @@
Danbooru.Post.initialize_saved_searches = function() {
$("#save-search").click(function() {
var input = null;
if (Danbooru.meta("enable-categorized-saved-searches") === "true") {
input = window.prompt("Category for this saved search (optional):");
}
$.post(
"/saved_searches.js",
{
"tags": $("#tags").attr("value")
"tags": $("#tags").attr("value"),
"category": input
}
);
});

View File

@@ -237,6 +237,10 @@ class AnonymousUser
false
end
def enable_categorized_saved_searches?
false
end
%w(member banned gold builder platinum janitor moderator admin).each do |name|
define_method("is_#{name}?") do
false

View File

@@ -3,24 +3,30 @@ class SavedSearch < ActiveRecord::Base
extend ActiveSupport::Concern
module ClassMethods
def refresh_listbooru(user_id)
def refresh_listbooru(user_id, name)
return unless Danbooru.config.listbooru_auth_key
uri = URI.parse("#{Danbooru.config.listbooru_server}/users/#{user_id}")
params = {
:user_id => user_id,
:name => name,
:key => Danbooru.config.listbooru_auth_key
}
uri = URI.parse("#{Danbooru.config.listbooru_server}/users")
uri.query = URI.encode_www_form(params)
Net::HTTP.get_response(uri)
end
def update_listbooru_on_create(user_id, query)
def update_listbooru_on_create(user_id, name, 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})
Net::HTTP.post_form(uri, {"user_id" => user_id, "name" => name.try(:downcase), "query" => query, "key" => Danbooru.config.listbooru_auth_key})
end
def update_listbooru_on_destroy(user_id, query)
def update_listbooru_on_destroy(user_id, name, 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)
req.set_form_data("user_id" => user_id, "name" => name.try(:downcase), "query" => query, "key" => Danbooru.config.listbooru_auth_key)
http.request(req)
end
end
@@ -28,12 +34,12 @@ class SavedSearch < ActiveRecord::Base
def update_listbooru_on_create
return unless Danbooru.config.listbooru_auth_key
SavedSearch.delay(:queue => "default").update_listbooru_on_create(user_id, tag_query)
SavedSearch.delay(:queue => "default").update_listbooru_on_create(user_id, category, 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)
SavedSearch.delay(:queue => "default").update_listbooru_on_destroy(user_id, category, tag_query)
end
end

View File

@@ -32,13 +32,14 @@ class User < ActiveRecord::Base
has_saved_searches
can_approve_posts
can_upload_free
enable_categorized_saved_searches
)
include Danbooru::HasBitFlags
has_bit_flags BOOLEAN_ATTRIBUTES, :field => "bit_prefs"
attr_accessor :password, :old_password
attr_accessible :dmail_filter_attributes, :enable_privacy_mode, :enable_post_navigation, :new_post_navigation_layout, :password, :old_password, :password_confirmation, :password_hash, :email, :last_logged_in_at, :last_forum_read_at, :has_mail, :receive_email_notifications, :comment_threshold, :always_resize_images, :favorite_tags, :blacklisted_tags, :name, :ip_addr, :time_zone, :default_image_size, :enable_sequential_post_navigation, :per_page, :hide_deleted_posts, :style_usernames, :enable_auto_complete, :custom_style, :show_deleted_children, :as => [:moderator, :janitor, :gold, :member, :anonymous, :default, :builder, :admin]
attr_accessible :dmail_filter_attributes, :enable_privacy_mode, :enable_post_navigation, :new_post_navigation_layout, :password, :old_password, :password_confirmation, :password_hash, :email, :last_logged_in_at, :last_forum_read_at, :has_mail, :receive_email_notifications, :comment_threshold, :always_resize_images, :favorite_tags, :blacklisted_tags, :name, :ip_addr, :time_zone, :default_image_size, :enable_sequential_post_navigation, :per_page, :hide_deleted_posts, :style_usernames, :enable_auto_complete, :custom_style, :show_deleted_children, :enable_categorized_saved_searches, :as => [:moderator, :janitor, :gold, :member, :anonymous, :default, :builder, :admin]
attr_accessible :level, :as => :admin
validates_length_of :name, :within => 2..100, :on => :create
validates_format_of :name, :with => /\A[^\s:]+\Z/, :on => :create, :message => "cannot have whitespace or colons"

View File

@@ -22,6 +22,7 @@
<meta name="style-usernames" content="<%= CurrentUser.user.style_usernames? %>">
<meta name="mobile-mode" content="<%= CurrentUser.mobile_mode? %>">
<meta name="last-forum-read-at" content="<%= CurrentUser.user.last_forum_read_at %>">
<meta name="enable-categorized-saved-searches" content="<%= CurrentUser.enable_categorized_saved_searches? %>">
<%= auto_discovery_link_tag :atom, posts_path(:format => "atom", :tags => params[:tags]) %>
<%= stylesheet_link_tag "application", :media => "screen" %>
<% if CurrentUser.user.custom_style.present? %>

View File

@@ -1,9 +1,3 @@
<% if CurrentUser.user.show_saved_searches? %>
<% if CurrentUser.user.has_saved_searches? && saved_searches.tagged(params[:tags]) %>
<%= button_to "Remove this saved search", saved_search_path(saved_searches.tagged(params[:tags]), :tags => params[:tags]), :remote => true, :method => :delete %>
<% elsif CurrentUser.user.is_member? %>
<%= button_tag "Save this search", :id => "save-search" %>
<% end %>
<% end %>
<% if CurrentUser.show_saved_searches? %>
<%= button_tag "Save search", :id => "save-search" %>
<% end %>

View File

@@ -68,6 +68,8 @@
<%= f.input :enable_auto_complete, :as => :select, :collection => [["Yes", "true"], ["No", "false"]], :include_blank => false %>
<%= f.input :enable_categorized_saved_searches, :as => :select, :collection => [["No", "false"], ["Yes", "true"]], :include_blank => false %>
<div class="input text optional field_with_hint">
<label class="text optional" for="user_favorite_tags">Frequent tags</label>
<textarea id="user_favorite_tags" class="text optional" rows="5" name="user[favorite_tags]" cols="40"><%= raw @user.favorite_tags %></textarea>