Commit 0a5ba712f9d3c1d52eee5e56b35e9868c967166e
Exists in
master
and in
3 other branches
Merge branch 'fix_communities_search' into 'master'
Fix communities search See merge request !2
Showing
3 changed files
with
29 additions
and
25 deletions
Show diff stats
lib/ext/communities_block.rb
@@ -4,16 +4,9 @@ class CommunitiesBlock | @@ -4,16 +4,9 @@ class CommunitiesBlock | ||
4 | 4 | ||
5 | def profile_list | 5 | def profile_list |
6 | result = get_visible_profiles | 6 | result = get_visible_profiles |
7 | + valid_communities_string = Community.get_valid_communities_string | ||
7 | 8 | ||
8 | - list_without_institution = [] | ||
9 | - | ||
10 | - result.each do |profile| | ||
11 | - if profile.class == Community && !profile.institution? | ||
12 | - list_without_institution << profile | ||
13 | - end | ||
14 | - end | ||
15 | - | ||
16 | - result = list_without_institution | 9 | + result.each{|community| @scope.delete(community) unless eval(valid_communities_string)} |
17 | 10 | ||
18 | result.slice(0..get_limit-1) | 11 | result.slice(0..get_limit-1) |
19 | end | 12 | end |
@@ -26,24 +19,23 @@ class CommunitiesBlock | @@ -26,24 +19,23 @@ class CommunitiesBlock | ||
26 | 19 | ||
27 | def get_visible_profiles | 20 | def get_visible_profiles |
28 | visible_profiles = profiles.visible.includes( | 21 | visible_profiles = profiles.visible.includes( |
29 | - [:image,:domains,:preferred_domain,:environment] | 22 | + [:image,:domains,:preferred_domain,:environment] |
30 | ) | 23 | ) |
31 | if !prioritize_profiles_with_image | 24 | if !prioritize_profiles_with_image |
32 | return visible_profiles.all( | 25 | return visible_profiles.all( |
33 | - :limit => get_limit, | ||
34 | - :order => 'profiles.updated_at DESC' | 26 | + :limit => get_limit, |
27 | + :order => 'profiles.updated_at DESC' | ||
35 | ).sort_by {rand} | 28 | ).sort_by {rand} |
36 | elsif profiles.visible.with_image.count >= get_limit | 29 | elsif profiles.visible.with_image.count >= get_limit |
37 | return visible_profiles.with_image.all( | 30 | return visible_profiles.with_image.all( |
38 | - :limit => get_limit * 5, | ||
39 | - :order => 'profiles.updated_at DESC' | 31 | + :limit => get_limit * 5, |
32 | + :order => 'profiles.updated_at DESC' | ||
40 | ).sort_by {rand} | 33 | ).sort_by {rand} |
41 | else | 34 | else |
42 | return visible_profiles.with_image.sort_by {rand} + | 35 | return visible_profiles.with_image.sort_by {rand} + |
43 | - visible_profiles.without_image.all( | ||
44 | - :limit => get_limit * 5, :order => 'profiles.updated_at DESC' | ||
45 | - ).sort_by {rand} | 36 | + visible_profiles.without_image.all( |
37 | + :limit => get_limit * 5, :order => 'profiles.updated_at DESC' | ||
38 | + ).sort_by {rand} | ||
46 | end | 39 | end |
47 | end | 40 | end |
48 | - | ||
49 | end | 41 | end |
lib/ext/community.rb
@@ -3,8 +3,20 @@ require_dependency 'community' | @@ -3,8 +3,20 @@ require_dependency 'community' | ||
3 | class Community | 3 | class Community |
4 | has_one :institution, :dependent=>:destroy | 4 | has_one :institution, :dependent=>:destroy |
5 | 5 | ||
6 | - | ||
7 | def institution? | 6 | def institution? |
8 | return !institution.nil? | 7 | return !institution.nil? |
9 | end | 8 | end |
9 | + | ||
10 | + def remove_of_community_search_institution? | ||
11 | + return institution? | ||
12 | + end | ||
13 | + | ||
14 | + def self.get_valid_communities_string | ||
15 | + remove_of_communities_methods = Community.instance_methods.select{|m| m =~ /remove_of_community_search/} | ||
16 | + valid_communities_string = "" | ||
17 | + remove_of_communities_methods.each do |method| | ||
18 | + valid_communities_string += "!community.send('#{method}') && " | ||
19 | + end | ||
20 | + valid_communities_string[0..-5] | ||
21 | + end | ||
10 | end | 22 | end |
lib/ext/search_controller.rb
@@ -3,12 +3,12 @@ require_dependency 'search_controller' | @@ -3,12 +3,12 @@ require_dependency 'search_controller' | ||
3 | class SearchController | 3 | class SearchController |
4 | 4 | ||
5 | def communities | 5 | def communities |
6 | - results = filter_communities_list do |community| | ||
7 | - !community.institution? | ||
8 | - end | ||
9 | - results = results.paginate(:per_page => 24, :page => params[:page]) | ||
10 | - @searches[@asset] = {:results => results} | ||
11 | - @search = results | 6 | + valid_communities_string = Community.get_valid_communities_string |
7 | + | ||
8 | + @scope = visible_profiles(Community) | ||
9 | + @scope.each{|community| @scope.delete(community) unless eval(valid_communities_string)} | ||
10 | + | ||
11 | + full_text_search | ||
12 | end | 12 | end |
13 | 13 | ||
14 | def institutions | 14 | def institutions |