Commit 577cdbee9d8db17ae5c7a3c97a65cd241716b2d8
1 parent
101926f1
Exists in
master
and in
29 other branches
Fix visibilty problems with full-text search
Showing
3 changed files
with
25 additions
and
29 deletions
Show diff stats
app/controllers/public/search_controller.rb
... | ... | @@ -32,7 +32,7 @@ class SearchController < PublicController |
32 | 32 | @filter = params[:filter] ? filter : nil |
33 | 33 | @filter_title = params[:filter] ? filter_description(@asset, @filter) : nil |
34 | 34 | if !@empty_query |
35 | - full_text_search | |
35 | + full_text_search ['public:true'] | |
36 | 36 | elsif params[:filter] |
37 | 37 | @results[@asset] = @environment.articles.more_recent.paginate(paginate_options) |
38 | 38 | end |
... | ... | @@ -44,7 +44,7 @@ class SearchController < PublicController |
44 | 44 | |
45 | 45 | def people |
46 | 46 | if !@empty_query |
47 | - full_text_search | |
47 | + full_text_search ['visible:true'] | |
48 | 48 | else |
49 | 49 | @results[@asset] = @environment.people.visible.send(@filter).paginate(paginate_options) |
50 | 50 | @facets = {} |
... | ... | @@ -53,22 +53,22 @@ class SearchController < PublicController |
53 | 53 | |
54 | 54 | def products |
55 | 55 | if !@empty_query |
56 | - full_text_search | |
56 | + full_text_search ['visible:true'] | |
57 | 57 | end |
58 | 58 | end |
59 | 59 | |
60 | 60 | def enterprises |
61 | 61 | if !@empty_query |
62 | - full_text_search | |
62 | + full_text_search ['visible:true'] | |
63 | 63 | else |
64 | 64 | @filter_title = _('Enterprises from network') |
65 | - @results[@asset] = asset_class(@asset).paginate(paginate_options) | |
65 | + @results[@asset] = @environment.enterprises.visible.paginate(paginate_options) | |
66 | 66 | end |
67 | 67 | end |
68 | 68 | |
69 | 69 | def communities |
70 | 70 | if !@empty_query |
71 | - full_text_search | |
71 | + full_text_search ['visible:true'] | |
72 | 72 | else |
73 | 73 | @results[@asset] = @environment.communities.visible.send(@filter).paginate(paginate_options) |
74 | 74 | end |
... | ... | @@ -277,31 +277,25 @@ class SearchController < PublicController |
277 | 277 | { :per_page => limit, :page => page } |
278 | 278 | end |
279 | 279 | |
280 | - def full_text_search(paginate_options = nil) | |
281 | - paginate_options ||= paginate_options(params[:page]) | |
282 | - solr_options = solr_options(@asset, params[:facet], params[:order_by]) | |
280 | + def full_text_search(filters = []) | |
281 | + paginate_options = paginate_options(params[:page]) | |
282 | + asset_class = asset_class(@asset) | |
283 | 283 | |
284 | - ret = asset_class(@asset).find_by_contents(@query, paginate_options, solr_options) | |
285 | - @results[@asset] = ret[:results] | |
286 | - @facets = ret[:facets] | |
287 | - @all_facets = ret[:all_facets] | |
288 | - end | |
289 | - | |
290 | - def solr_options(asset, facets_selected, solr_order = nil) | |
291 | - result = {} | |
292 | - | |
293 | - asset_class = asset_class(asset) | |
284 | + solr_options = {} | |
294 | 285 | if !@results_only and asset_class.methods.include?('facets') |
295 | - result.merge! asset_class.facets_find_options(facets_selected) | |
296 | - result[:all_facets] = true | |
297 | - result[:limit] = 0 if @facets_only | |
298 | - result[:facets][:browse] << asset_class.facet_category_query.call(@category) if @category | |
299 | - puts result[:facets][:browse] | |
286 | + solr_options.merge! asset_class.facets_find_options(params[:facet]) | |
287 | + solr_options[:all_facets] = true | |
288 | + solr_options[:limit] = 0 if @facets_only | |
289 | + solr_options[:facets][:browse] << asset_class.facet_category_query.call(@category) if @category and asset_class.facet_category_query | |
300 | 290 | end |
291 | + solr_options[:order] = params[:order_by] if params[:order_by] | |
292 | + solr_options[:filter_queries] ||= [] | |
293 | + solr_options[:filter_queries] += filters | |
301 | 294 | |
302 | - result[:order] = solr_order if solr_order | |
303 | - | |
304 | - result | |
295 | + ret = asset_class.find_by_contents(@query, paginate_options, solr_options) | |
296 | + @results[@asset] = ret[:results] | |
297 | + @facets = ret[:facets] | |
298 | + @all_facets = ret[:all_facets] | |
305 | 299 | end |
306 | 300 | |
307 | 301 | end | ... | ... |
app/models/article.rb
... | ... | @@ -624,6 +624,9 @@ class Article < ActiveRecord::Base |
624 | 624 | def name_sort |
625 | 625 | name |
626 | 626 | end |
627 | + def public | |
628 | + self.public? | |
629 | + end | |
627 | 630 | public |
628 | 631 | |
629 | 632 | acts_as_faceted :fields => { |
... | ... | @@ -636,7 +639,7 @@ class Article < ActiveRecord::Base |
636 | 639 | :category_query => proc { |c| "f_category:\"#{c.name}\"" }, |
637 | 640 | :order => [:f_type, :f_published_at, :f_profile_type, :f_category] |
638 | 641 | |
639 | - acts_as_searchable :additional_fields => [ {:name => {:type => :string}} ] + facets_fields_for_solr, | |
642 | + acts_as_searchable :additional_fields => [ {:name => {:type => :string}}, {:public => {:type => :boolean}}] + facets_fields_for_solr, | |
640 | 643 | :exclude_fields => [:setting], |
641 | 644 | :include => [:profile], |
642 | 645 | :facets => facets_option_for_solr, | ... | ... |
app/views/search/_display_results.rhtml
... | ... | @@ -16,7 +16,6 @@ |
16 | 16 | <div class="search-results-innerbox2"><!-- the innerbox2 is a workarround for MSIE --> |
17 | 17 | <ul> |
18 | 18 | <% results.each do |hit| %> |
19 | - <% next if hit.respond_to?(:visible) && !hit.visible? %> | |
20 | 19 | <%= render :partial => partial_for_class(hit.class), :object => hit %> |
21 | 20 | <% end %> |
22 | 21 | </ul> | ... | ... |