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 14  
15 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 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 21 end
41 22  
42 23 def get_filter_category_ids
... ... @@ -47,54 +28,54 @@ class SearchController
47 28 category_ids.map(&:to_i)
48 29 end
49 30  
50   - def get_filtered_software_list
  31 + def get_filtered_software_info_list
51 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 37 if params[:only_softwares]
57 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 40 @public_software_selected = false
60 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 44 category_ids = get_filter_category_ids
64 45  
65 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 49 false
69 50 else
70   - result_ids = (software.community.category_ids & category_ids).sort
  51 + result_ids = (software_info.software.category_ids & category_ids).sort
71 52 result_ids == category_ids.sort
72 53 end
73 54 end
74 55 end
75 56  
76   - filtered_software_list
  57 + filtered_software_info_list
77 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 65 end
85 66 end
86   - filtered_community_list
  67 + filtered_software_list
87 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 73 if params[:sort] && params[:sort] == "desc"
93   - communities_list.reverse!
  74 + softwares_list.reverse!
94 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 77 end
97   - communities_list
  78 + softwares_list
98 79 end
99 80  
100 81 def prepare_software_search_page
... ...