Commit 36b2b195aa8afdd5ea5f6f9cd55f224ed207fb81

Authored by Rodrigo Souto
1 parent 586af7d1

adjust search_controller extension

src/noosfero-spb/software_communities/lib/ext/search_controller.rb
@@ -14,29 +14,10 @@ class SearchController @@ -14,29 +14,10 @@ class SearchController
14 14
15 protected 15 protected
16 16
17 - def filter_communities_list  
18 - unfiltered_list = visible_profiles(Community)  
19 -  
20 - unless params[:query].nil?  
21 - unfiltered_list = unfiltered_list.select do |com|  
22 - com.name.downcase =~ /#{params[:query].downcase}/  
23 - end  
24 - end  
25 -  
26 - communities_list = []  
27 - unfiltered_list.each do |profile|  
28 - if profile.class == Community && !profile.is_template? && yield(profile)  
29 - communities_list << profile  
30 - end  
31 - end  
32 -  
33 - communities_list  
34 - end  
35 -  
36 def filter_software_infos_list 17 def filter_software_infos_list
37 - filtered_software_list = get_filtered_software_list  
38 - filtered_community_list = get_communities_list(filtered_software_list)  
39 - sort_communities_list filtered_community_list 18 + filtered_software_info_list = get_filtered_software_info_list
  19 + filtered_software_list = get_softwares_list(filtered_software_info_list)
  20 + sort_softwares_list filtered_software_list
40 end 21 end
41 22
42 def get_filter_category_ids 23 def get_filter_category_ids
@@ -47,54 +28,54 @@ class SearchController @@ -47,54 +28,54 @@ class SearchController
47 category_ids.map(&:to_i) 28 category_ids.map(&:to_i)
48 end 29 end
49 30
50 - def get_filtered_software_list 31 + def get_filtered_software_info_list
51 params[:query] ||= "" 32 params[:query] ||= ""
52 - visible_communities = visible_profiles(Community) 33 + visible_software = visible_profiles(Software)
53 34
54 - filtered_software_list = SoftwareInfo.search_by_query(params[:query]) 35 + filtered_software_info_list = SoftwareInfo.search_by_query(params[:query])
55 36
56 if params[:only_softwares] 37 if params[:only_softwares]
57 params[:only_softwares].collect!{ |software_name| software_name.to_slug } 38 params[:only_softwares].collect!{ |software_name| software_name.to_slug }
58 - filtered_software_list = SoftwareInfo.all.select{ |s| params[:only_softwares].include?(s.identifier) } 39 + filtered_software_info_list = SoftwareInfo.all.select{ |s| params[:only_softwares].include?(s.identifier) }
59 @public_software_selected = false 40 @public_software_selected = false
60 end 41 end
61 42
62 - filtered_software_list.select!{ |software| visible_communities.include?(software.community) } 43 + filtered_software_info_list.select!{ |software_info| visible_software.include?(software_info.software) }
63 category_ids = get_filter_category_ids 44 category_ids = get_filter_category_ids
64 45
65 unless category_ids.empty? 46 unless category_ids.empty?
66 - filtered_software_list.select! do |software|  
67 - if software.nil? || software.community.nil? 47 + filtered_software_info_list.select! do |software_info|
  48 + if software_info.nil? || software_info.software.nil?
68 false 49 false
69 else 50 else
70 - result_ids = (software.community.category_ids & category_ids).sort 51 + result_ids = (software_info.software.category_ids & category_ids).sort
71 result_ids == category_ids.sort 52 result_ids == category_ids.sort
72 end 53 end
73 end 54 end
74 end 55 end
75 56
76 - filtered_software_list 57 + filtered_software_info_list
77 end 58 end
78 59
79 - def get_communities_list software_list  
80 - filtered_community_list = []  
81 - software_list.each do |software|  
82 - if !@public_software_selected || software.public_software?  
83 - filtered_community_list << software.community unless software.community.nil? 60 + def get_softwares_list software_info_list
  61 + filtered_software_list = []
  62 + software_info_list.each do |software_info|
  63 + if !@public_software_selected || software_info.public_software?
  64 + filtered_software_list << software_info.software unless software_info.software.nil?
84 end 65 end
85 end 66 end
86 - filtered_community_list 67 + filtered_software_list
87 end 68 end
88 69
89 - def sort_communities_list communities_list  
90 - communities_list.sort! {|a, b| a.name.downcase <=> b.name.downcase} 70 + def sort_softwares_list softwares_list
  71 + softwares_list.sort! {|a, b| a.name.downcase <=> b.name.downcase}
91 72
92 if params[:sort] && params[:sort] == "desc" 73 if params[:sort] && params[:sort] == "desc"
93 - communities_list.reverse! 74 + softwares_list.reverse!
94 elsif params[:sort] && params[:sort] == "relevance" 75 elsif params[:sort] && params[:sort] == "relevance"
95 - communities_list = sort_by_relevance(communities_list, params[:query]){ |community| [community.software_info.finality, community.name] } 76 + softwares_list = sort_by_relevance(softwares_list, params[:query]){ |software| [software.software_info.finality, software.name] }
96 end 77 end
97 - communities_list 78 + softwares_list
98 end 79 end
99 80
100 def prepare_software_search_page 81 def prepare_software_search_page