diff --git a/src/noosfero-spb/software_communities/lib/ext/category.rb b/src/noosfero-spb/software_communities/lib/ext/category.rb index 0c3008c..e57b094 100644 --- a/src/noosfero-spb/software_communities/lib/ext/category.rb +++ b/src/noosfero-spb/software_communities/lib/ext/category.rb @@ -28,8 +28,7 @@ class Category } def software_infos - software_list = self.communities - software_list.collect { |x| software_list.delete(x) unless x.software? } + software_list = self.communities.collect{|community| community.software_info if community.software?} software_list end end diff --git a/src/noosfero-spb/software_communities/lib/ext/search_controller.rb b/src/noosfero-spb/software_communities/lib/ext/search_controller.rb index ffe3619..6f50ea0 100644 --- a/src/noosfero-spb/software_communities/lib/ext/search_controller.rb +++ b/src/noosfero-spb/software_communities/lib/ext/search_controller.rb @@ -14,10 +14,12 @@ class SearchController end def software_infos - prepare_software_search_page(:software_infos) - results = filter_software_infos_list do |software| + software_public_condition_block = lambda do |software| (!@public_software_selected || software.public_software?) && (!software.sisp) end + + prepare_software_search_page(:software_infos, &software_public_condition_block) + results = filter_software_infos_list(&software_public_condition_block) @software_count = results.count results = results.paginate(:per_page => @per_page, :page => params[:page]) @searches[@asset] = {:results => results} @@ -27,8 +29,10 @@ class SearchController end def sisp - prepare_software_search_page(:sisp) - results = filter_software_infos_list{|software| software.sisp } + sisp_condition_block = lambda{|software| software.sisp } + + prepare_software_search_page(:sisp, &sisp_condition_block) + results = filter_software_infos_list(&sisp_condition_block) @software_count = results.count results = results.paginate(:per_page => @per_page, :page => params[:page]) @searches[@asset] = {:results => results} @@ -58,9 +62,9 @@ class SearchController communities_list end - def filter_software_infos_list + def filter_software_infos_list &software_condition_block filtered_software_list = get_filtered_software_list - filtered_community_list = get_communities_list(filtered_software_list){|software| yield(software)} + filtered_community_list = get_communities_list(filtered_software_list, &software_condition_block) sort_communities_list filtered_community_list end @@ -101,10 +105,10 @@ class SearchController filtered_software_list end - def get_communities_list software_list + def get_communities_list software_list, &software_condition_block filtered_community_list = [] software_list.each do |software| - if yield(software) + if software_condition_block.call(software) filtered_community_list << software.community unless software.community.nil? end end @@ -124,10 +128,10 @@ class SearchController communities_list end - def prepare_software_search_page title + def prepare_software_search_page title, &software_condition_block prepare_software_infos_params(title) prepare_software_infos_message - prepare_software_infos_category_groups + prepare_software_infos_category_groups(&software_condition_block) prepare_software_infos_category_enable end @@ -165,15 +169,16 @@ class SearchController end end - def prepare_software_infos_category_groups - @categories = Category.software_categories.sort{|a, b| a.name <=> b.name} + def prepare_software_infos_category_groups &software_condition_block + @categories = Category.software_categories + @categories = @categories.select{|category| category.software_infos.any?{|software| software_condition_block.call(software)}} + @categories.sort!{|a, b| a.name <=> b.name} end def prepare_software_infos_category_enable @enabled_check_box = Hash.new - categories = Category.software_categories - categories.each do |category| + @categories.each do |category| if category.software_infos.count > 0 @enabled_check_box[category] = :enabled else diff --git a/src/noosfero-spb/software_communities/views/search/_catalog_result_list.html.erb b/src/noosfero-spb/software_communities/views/search/_catalog_result_list.html.erb index 6ac45e3..5196f3a 100644 --- a/src/noosfero-spb/software_communities/views/search/_catalog_result_list.html.erb +++ b/src/noosfero-spb/software_communities/views/search/_catalog_result_list.html.erb @@ -39,7 +39,7 @@
<% @selected_categories.each do |category| %>
- <%= link_to _("#{category.name}") + " (#{category.software_infos.count})", {:controller => :search, :action => :software_infos, :selected_categories_id => [category.id]} %> + <%= link_to _("#{category.name}") + " (#{category.software_infos.count})", {:controller => :search, :action => params[:action], :selected_categories_id => [category.id]} %> <% end %>
-- libgit2 0.21.2