Commit 36b2b195aa8afdd5ea5f6f9cd55f224ed207fb81
1 parent
586af7d1
Exists in
software_as_organization
adjust search_controller extension
Showing
1 changed file
with
23 additions
and
42 deletions
Show diff stats
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 |