Commit 577cdbee9d8db17ae5c7a3c97a65cd241716b2d8

Authored by Braulio Bhavamitra
1 parent 101926f1

Fix visibilty problems with full-text search

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 &lt; 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 &lt; 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>
... ...