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 | 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 | ... | ... |