From 36b2b195aa8afdd5ea5f6f9cd55f224ed207fb81 Mon Sep 17 00:00:00 2001 From: Rodrigo Souto Date: Tue, 1 Dec 2015 12:16:47 -0300 Subject: [PATCH] adjust search_controller extension --- src/noosfero-spb/software_communities/lib/ext/search_controller.rb | 65 +++++++++++++++++++++++------------------------------------------ 1 file changed, 23 insertions(+), 42 deletions(-) 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 27897c6..2864303 100644 --- a/src/noosfero-spb/software_communities/lib/ext/search_controller.rb +++ b/src/noosfero-spb/software_communities/lib/ext/search_controller.rb @@ -14,29 +14,10 @@ class SearchController protected - def filter_communities_list - unfiltered_list = visible_profiles(Community) - - unless params[:query].nil? - unfiltered_list = unfiltered_list.select do |com| - com.name.downcase =~ /#{params[:query].downcase}/ - end - end - - communities_list = [] - unfiltered_list.each do |profile| - if profile.class == Community && !profile.is_template? && yield(profile) - communities_list << profile - end - end - - communities_list - end - def filter_software_infos_list - filtered_software_list = get_filtered_software_list - filtered_community_list = get_communities_list(filtered_software_list) - sort_communities_list filtered_community_list + filtered_software_info_list = get_filtered_software_info_list + filtered_software_list = get_softwares_list(filtered_software_info_list) + sort_softwares_list filtered_software_list end def get_filter_category_ids @@ -47,54 +28,54 @@ class SearchController category_ids.map(&:to_i) end - def get_filtered_software_list + def get_filtered_software_info_list params[:query] ||= "" - visible_communities = visible_profiles(Community) + visible_software = visible_profiles(Software) - filtered_software_list = SoftwareInfo.search_by_query(params[:query]) + filtered_software_info_list = SoftwareInfo.search_by_query(params[:query]) if params[:only_softwares] params[:only_softwares].collect!{ |software_name| software_name.to_slug } - filtered_software_list = SoftwareInfo.all.select{ |s| params[:only_softwares].include?(s.identifier) } + filtered_software_info_list = SoftwareInfo.all.select{ |s| params[:only_softwares].include?(s.identifier) } @public_software_selected = false end - filtered_software_list.select!{ |software| visible_communities.include?(software.community) } + filtered_software_info_list.select!{ |software_info| visible_software.include?(software_info.software) } category_ids = get_filter_category_ids unless category_ids.empty? - filtered_software_list.select! do |software| - if software.nil? || software.community.nil? + filtered_software_info_list.select! do |software_info| + if software_info.nil? || software_info.software.nil? false else - result_ids = (software.community.category_ids & category_ids).sort + result_ids = (software_info.software.category_ids & category_ids).sort result_ids == category_ids.sort end end end - filtered_software_list + filtered_software_info_list end - def get_communities_list software_list - filtered_community_list = [] - software_list.each do |software| - if !@public_software_selected || software.public_software? - filtered_community_list << software.community unless software.community.nil? + def get_softwares_list software_info_list + filtered_software_list = [] + software_info_list.each do |software_info| + if !@public_software_selected || software_info.public_software? + filtered_software_list << software_info.software unless software_info.software.nil? end end - filtered_community_list + filtered_software_list end - def sort_communities_list communities_list - communities_list.sort! {|a, b| a.name.downcase <=> b.name.downcase} + def sort_softwares_list softwares_list + softwares_list.sort! {|a, b| a.name.downcase <=> b.name.downcase} if params[:sort] && params[:sort] == "desc" - communities_list.reverse! + softwares_list.reverse! elsif params[:sort] && params[:sort] == "relevance" - communities_list = sort_by_relevance(communities_list, params[:query]){ |community| [community.software_info.finality, community.name] } + softwares_list = sort_by_relevance(softwares_list, params[:query]){ |software| [software.software_info.finality, software.name] } end - communities_list + softwares_list end def prepare_software_search_page -- libgit2 0.21.2