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 |