From 68a711c63f18316229dc5422e2404c05720735d1 Mon Sep 17 00:00:00 2001 From: albert Date: Sun, 17 Mar 2013 21:54:28 -0400 Subject: [PATCH] fixes #905, as well as fix for pool nav --- app/controllers/pool_elements_controller.rb | 4 ++++ app/presenters/post_presenter.rb | 17 ++++++----------- app/views/pool_elements/_new.html.erb | 4 ++-- app/views/pool_elements/all_select.js.erb | 2 ++ config/routes.rb | 6 +++++- 5 files changed, 19 insertions(+), 14 deletions(-) create mode 100644 app/views/pool_elements/all_select.js.erb diff --git a/app/controllers/pool_elements_controller.rb b/app/controllers/pool_elements_controller.rb index f8742e0e7..bb432fd9a 100644 --- a/app/controllers/pool_elements_controller.rb +++ b/app/controllers/pool_elements_controller.rb @@ -21,6 +21,10 @@ class PoolElementsController < ApplicationController respond_with(@pool, :location => post_path(@post)) end + def all_select + @pools = Pool.active.all + end + private def append_pool_to_session(pool) recent_pool_ids = session[:recent_pool_ids].to_s.scan(/\d+/) diff --git a/app/presenters/post_presenter.rb b/app/presenters/post_presenter.rb index 932a0fecf..550e8f2fb 100644 --- a/app/presenters/post_presenter.rb +++ b/app/presenters/post_presenter.rb @@ -106,19 +106,19 @@ class PostPresenter < Presenter if template.params[:pool_id].present? pool = Pool.where(:id => template.params[:pool_id]).first return if pool.nil? - html = pool_link_html(html, template, pool, :include_rel => true) + html += pool_link_html(template, pool, :include_rel => true) @post.pools.active.where("id <> ?", template.params[:pool_id]).each do |other_pool| - html = pool_link_html(html, template, other_pool) + html += pool_link_html(template, other_pool) end else first = true @post.pools.active.each do |pool| if first && template.params[:tags].blank? - html = pool_link_html(html, template, pool, :include_rel => true) + html += pool_link_html(template, pool, :include_rel => true) first = false else - html = pool_link_html(html, template, pool) + html += pool_link_html(template, pool) end end end @@ -127,7 +127,7 @@ class PostPresenter < Presenter html.join("\n").html_safe end - def pool_link_html(html, template, pool, options = {}) + def pool_link_html(template, pool, options = {}) pool_html = ["
  • "] match_found = false @@ -160,11 +160,6 @@ class PostPresenter < Presenter end pool_html << "
  • " - - if match_found - html += pool_html - end - - html + pool_html end end diff --git a/app/views/pool_elements/_new.html.erb b/app/views/pool_elements/_new.html.erb index 95db9333e..d9300b9e8 100644 --- a/app/views/pool_elements/_new.html.erb +++ b/app/views/pool_elements/_new.html.erb @@ -5,8 +5,8 @@
    - <%= text_field_tag "pool_name", "", :size => 20 %> - Type the first two characters of a pool name + <%= text_field_tag "pool_name", "", :size => 20 %> + Search for a pool containing (<%= link_to "see full list", all_select_pool_element_path, :remote => true %>)
    diff --git a/app/views/pool_elements/all_select.js.erb b/app/views/pool_elements/all_select.js.erb new file mode 100644 index 000000000..4c0232744 --- /dev/null +++ b/app/views/pool_elements/all_select.js.erb @@ -0,0 +1,2 @@ +$("#pool-name-container").html(<%= raw select_tag("pool_id", options_for_select(@pools.map {|x| [x.name, x.id]})).to_json %>); +$("#pool-name-hint").hide(); diff --git a/config/routes.rb b/config/routes.rb index dd0ddf02d..8cc610216 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -128,7 +128,11 @@ Danbooru::Application.routes.draw do end resource :order, :only => [:edit, :update], :controller => "PoolOrders" end - resource :pool_element, :only => [:create, :destroy] + resource :pool_element, :only => [:create, :destroy] do + collection do + get :all_select + end + end resources :pool_versions, :only => [:index] resources :posts do resources :votes, :controller => "post_votes", :only => [:create, :destroy]