From 6428aaf155935107de0413606e32b3dec1943cad Mon Sep 17 00:00:00 2001 From: Nicolas Bally Date: Mon, 6 Jun 2016 00:01:46 +0200 Subject: [PATCH] suite --- app/controllers/public/needs_controller.rb | 4 ++-- app/models/need_category.rb | 9 ++++++--- app/views/public/needs/index.html.haml | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/app/controllers/public/needs_controller.rb b/app/controllers/public/needs_controller.rb index 58785f2..330f239 100755 --- a/app/controllers/public/needs_controller.rb +++ b/app/controllers/public/needs_controller.rb @@ -13,7 +13,7 @@ class Public::NeedsController < ApplicationController # Get only public needs @needs = Need.shared - #@needs = @needs.domain_in(current_customer.domain_ids) + @needs = @needs.domain_in(current_customer.domain_ids) # filters default value params[:o] ||= 'created-desc' @@ -168,7 +168,7 @@ class Public::NeedsController < ApplicationController private def build_category_tree - @tree = NeedCategory::create_tree + @tree = NeedCategory::create_tree(NeedCategory.domain_in(current_customer.domain_ids)) end def need_params diff --git a/app/models/need_category.rb b/app/models/need_category.rb index c63825d..4b2473d 100755 --- a/app/models/need_category.rb +++ b/app/models/need_category.rb @@ -13,6 +13,9 @@ class NeedCategory < ActiveRecord::Base has_many :categories, class_name: "NeedCategory", foreign_key: :parent_id, dependent: :destroy validates :name, :presence => true, length: {within: 1..64} + scope :domain_in, -> (domain_ids) { + joins(:domains).where('domains.id IN(?)', domain_ids) + } def level=(level) @level = level @@ -24,11 +27,11 @@ class NeedCategory < ActiveRecord::Base ancestors end - def self.create_tree + def self.create_tree(top_level_categories=false) collection = [] level = 0 - top_level_categories = NeedCategory.order(name: :asc).top - + top_level_categories = NeedCategory if !top_level_categories + top_level_categories = top_level_categories.order(name: :asc).top self.populate_collection(collection, top_level_categories, level) collection end diff --git a/app/views/public/needs/index.html.haml b/app/views/public/needs/index.html.haml index 2b694e1..923e949 100755 --- a/app/views/public/needs/index.html.haml +++ b/app/views/public/needs/index.html.haml @@ -24,7 +24,7 @@ = f.input :r, as: :result, selected: params[:r], input_html: {:name => 'r' }, label: 'Résultats par page', :include_blank => false , :as => :select, :collection => [6,12,24,48] .clear = f.inputs do - = f.input :c, as: :category, selected: params[:c], input_html: {:name => 'c' }, label: 'Filtrer par catégorie', :include_blank => "Toute catégorie" , :as => :select, :collection => @tree.map{|c| [(c.level > 0 ? ('   ' * (c.level - 1)) + "|- ": "").html_safe + c.name, c.id]} + = f.input :c, as: :category, selected: params[:c], input_html: {:name => 'c' }, label: 'Filtrer par catégorie', :include_blank => "Toute catégorie" , :as => :select, :collection => @tree.map{|c| [((c.level > 0 ? ('   ' * (c.level - 1)) + "|- ": "").html_safe + c.name if true), c.id]} .clear = f.inputs do = f.input :s, as: :state, selected: params[:s], input_html: {:name => 's' }, label: 'Filter par état', :include_blank => "Tous les états" , :as => :select, :collection => [["En sondage","verified"],["En négociation","negociating"],["Négocié","negociated"]]