improved ui for saved searches #2523
This commit is contained in:
@@ -524,23 +524,47 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
Danbooru.Post.initialize_saved_searches = function() {
|
Danbooru.Post.initialize_saved_searches = function() {
|
||||||
|
$("#saved_search_category").autocomplete({
|
||||||
|
minLength: 1,
|
||||||
|
source: function(req, resp) {
|
||||||
|
$.ajax({
|
||||||
|
url: "/saved_searches/categories.json",
|
||||||
|
method: "get",
|
||||||
|
success: function(data) {
|
||||||
|
resp($.map(data, function(saved_search) {
|
||||||
|
return {
|
||||||
|
label: saved_search.category,
|
||||||
|
value: saved_search.category
|
||||||
|
};
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#save-search-dialog").dialog({
|
||||||
|
width: 500,
|
||||||
|
modal: true,
|
||||||
|
autoOpen: false,
|
||||||
|
buttons: {
|
||||||
|
"Submit": function() {
|
||||||
|
$("#save-search-dialog form").submit();
|
||||||
|
$(this).dialog("close");
|
||||||
|
},
|
||||||
|
"Cancel": function() {
|
||||||
|
$(this).dialog("close");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$("#save-search").click(function() {
|
$("#save-search").click(function() {
|
||||||
if (Danbooru.meta("disable-categorized-saved-searches") === "false") {
|
if (Danbooru.meta("disable-categorized-saved-searches") === "false") {
|
||||||
var input = window.prompt("Category for this saved search (optional):");
|
$("#save-search-dialog").dialog("open");
|
||||||
if (input !== null) {
|
|
||||||
$.post(
|
|
||||||
"/saved_searches.js",
|
|
||||||
{
|
|
||||||
"tags": $("#tags").attr("value"),
|
|
||||||
"category": input
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
$.post(
|
$.post(
|
||||||
"/saved_searches.js",
|
"/saved_searches.js",
|
||||||
{
|
{
|
||||||
"tags": $("#tags").attr("value")
|
"saved_search_tags": $("#tags").attr("value")
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,9 @@ class SavedSearchesController < ApplicationController
|
|||||||
respond_to :html, :xml, :json, :js
|
respond_to :html, :xml, :json, :js
|
||||||
|
|
||||||
def index
|
def index
|
||||||
SavedSearch.delay(:queue => "default").refresh_listbooru(CurrentUser.id)
|
if Danbooru.config.listbooru_server
|
||||||
|
SavedSearch.delay(:queue => "default").refresh_listbooru(CurrentUser.id)
|
||||||
|
end
|
||||||
|
|
||||||
@saved_searches = saved_searches.order("tag_query")
|
@saved_searches = saved_searches.order("tag_query")
|
||||||
@categories = @saved_searches.group_by{|saved_search| saved_search.category.to_s}
|
@categories = @saved_searches.group_by{|saved_search| saved_search.category.to_s}
|
||||||
@@ -16,8 +18,18 @@ class SavedSearchesController < ApplicationController
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def categories
|
||||||
|
@categories = saved_searches.select(:category).distinct
|
||||||
|
respond_with(@categories)
|
||||||
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
@saved_search = saved_searches.create(:tag_query => params[:tags], :category => params[:category])
|
@saved_search = saved_searches.create(:tag_query => params[:saved_search_tags], :category => params[:saved_search_category])
|
||||||
|
|
||||||
|
if params[:saved_search_disable_categories]
|
||||||
|
CurrentUser.disable_categorized_saved_searches = true
|
||||||
|
CurrentUser.save
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
|
|||||||
@@ -1,3 +1,17 @@
|
|||||||
<% if CurrentUser.show_saved_searches? %>
|
<% if CurrentUser.show_saved_searches? %>
|
||||||
<%= button_tag "Save search", :id => "save-search" %>
|
<%= button_tag "Save search", :id => "save-search" %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
|
<div id="save-search-dialog" title="Save Search" style="display: none;">
|
||||||
|
<%= form_tag(saved_searches_path, :class => "simple_form", :remote => true) do %>
|
||||||
|
<%= hidden_field_tag "saved_search_tags", params[:tags] %>
|
||||||
|
|
||||||
|
<div class="input">
|
||||||
|
<label>
|
||||||
|
<%= text_field_tag "saved_search_category", "", :placeholder => "Category" %>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p><label><%= check_box_tag "saved_search_disable_categories" %> Disable categorization</label></p>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
|||||||
@@ -2,6 +2,4 @@
|
|||||||
Danbooru.error("<%= j @saved_search.errors.full_messages.join(', ') %>");
|
Danbooru.error("<%= j @saved_search.errors.full_messages.join(', ') %>");
|
||||||
<% else %>
|
<% else %>
|
||||||
Danbooru.notice("Search '<%= j @saved_search.tag_query %>' was saved");
|
Danbooru.notice("Search '<%= j @saved_search.tag_query %>' was saved");
|
||||||
$("#saved-searches-nav").html("<%= j render('saved_searches/interface', :saved_searches => CurrentUser.user.saved_searches) %>");
|
|
||||||
Danbooru.Post.initialize_saved_searches();
|
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -222,7 +222,11 @@ Rails.application.routes.draw do
|
|||||||
get "reports/user_promotions" => "reports#user_promotions"
|
get "reports/user_promotions" => "reports#user_promotions"
|
||||||
get "reports/janitor_trials" => "reports#janitor_trials"
|
get "reports/janitor_trials" => "reports#janitor_trials"
|
||||||
get "reports/contributors" => "reports#contributors"
|
get "reports/contributors" => "reports#contributors"
|
||||||
resources :saved_searches, :only => [:index, :create, :destroy]
|
resources :saved_searches, :only => [:index, :create, :destroy] do
|
||||||
|
collection do
|
||||||
|
get :categories
|
||||||
|
end
|
||||||
|
end
|
||||||
resource :session do
|
resource :session do
|
||||||
collection do
|
collection do
|
||||||
get :sign_out
|
get :sign_out
|
||||||
|
|||||||
Reference in New Issue
Block a user