Commit 5954b0972f784a8d59bbe996e967349fd400328d

Authored by Rodrigo Souto
1 parent 00620c69

Concentrating find_by_contents on application controller

app/controllers/admin/region_validators_controller.rb
... ... @@ -33,7 +33,7 @@ class RegionValidatorsController < AdminController
33 33 def load_region_and_search
34 34 @region = environment.regions.find(params[:id])
35 35 if params[:search]
36   - @search = @region.search_possible_validators(params[:search])
  36 + @search = find_by_contents(Organization, params[:search])[:results].docs.reject {|item| @region.validator_ids.include?(item.id) }
37 37 end
38 38 end
39 39  
... ...
app/controllers/application_controller.rb
... ... @@ -154,4 +154,9 @@ class ApplicationController < ActionController::Base
154 154 end
155 155 end
156 156  
  157 + def find_by_contents(klass, query, paginate_options{}, options={})
  158 + @plugins.first(:find_by_contents, klass, query, paginate_options, options) ||
  159 + # Failback search using like
  160 + end
  161 +
157 162 end
... ...
app/controllers/my_profile/cms_controller.rb
... ... @@ -270,8 +270,7 @@ class CmsController < MyProfileController
270 270  
271 271 def search
272 272 query = params[:q]
273   - results = profile.files.published.find_by_contents(query)[:results]
274   - # results = @plugins.first(:find_by_contents, profile.files.published, query)[:results]
  273 + results = find_by_contents(profile.files.published, query)[:results]
275 274 render :text => article_list_to_json(results), :content_type => 'application/json'
276 275 end
277 276  
... ...
app/controllers/public/profile_search_controller.rb
... ... @@ -11,7 +11,7 @@ class ProfileSearchController < PublicController
11 11 if params[:where] == 'environment'
12 12 redirect_to :controller => 'search', :query => @q
13 13 else
14   - @results = @plugins.first(:find_by_contents, profile.articles.published, @q, {:per_page => 10, :page => params[:page]})[:results]
  14 + @results = find_by_contents(profile.articles.published, @q, {:per_page => 10, :page => params[:page]})[:results]
15 15 end
16 16 end
17 17 end
... ...
app/controllers/public/search_controller.rb
... ... @@ -8,7 +8,6 @@ class SearchController < PublicController
8 8 before_filter :load_category
9 9 before_filter :load_search_assets
10 10 before_filter :load_query
11   - before_filter :load_search_engine
12 11  
13 12 # Backwards compatibility with old URLs
14 13 def redirect_asset_param
... ... @@ -58,7 +57,7 @@ class SearchController < PublicController
58 57 end
59 58  
60 59 def articles
61   - if @search_engine && !@empty_query
  60 + if !@empty_query
62 61 full_text_search
63 62 else
64 63 @searches[@asset] = {}
... ... @@ -71,7 +70,7 @@ class SearchController < PublicController
71 70 end
72 71  
73 72 def people
74   - if @search_engine && !@empty_query
  73 + if !@empty_query
75 74 full_text_search
76 75 else
77 76 @searches[@asset] = {}
... ... @@ -80,7 +79,7 @@ class SearchController < PublicController
80 79 end
81 80  
82 81 def products
83   - if @search_engine
  82 + if !@empty_query
84 83 full_text_search
85 84 else
86 85 @searches[@asset] = {}
... ... @@ -89,7 +88,7 @@ class SearchController < PublicController
89 88 end
90 89  
91 90 def enterprises
92   - if @search_engine && !@empty_query
  91 + if !@empty_query
93 92 full_text_search
94 93 else
95 94 @filter_title = _('Enterprises from network')
... ... @@ -99,7 +98,7 @@ class SearchController < PublicController
99 98 end
100 99  
101 100 def communities
102   - if @search_engine && !@empty_query
  101 + if !@empty_query
103 102 full_text_search
104 103 else
105 104 @searches[@asset] = {}
... ... @@ -123,7 +122,7 @@ class SearchController < PublicController
123 122 environment.events.by_day(@selected_day)
124 123 end
125 124  
126   - if @search_engine && !@empty_query
  125 + if !@empty_query
127 126 full_text_search
128 127 else
129 128 @searches[@asset] = {}
... ... @@ -192,10 +191,6 @@ class SearchController < PublicController
192 191 end
193 192 end
194 193  
195   - def load_search_engine
196   - @search_engine = @plugins.first_plugin(:search_engine?)
197   - end
198   -
199 194 FILTERS = %w(
200 195 more_recent
201 196 more_active
... ... @@ -261,7 +256,7 @@ class SearchController < PublicController
261 256 end
262 257  
263 258 def full_text_search
264   - @searches[@asset] = @plugins.first(:find_by_contents, asset_class(@asset), @query, paginate_options(params[:page]), {:category => @category})
  259 + @searches[@asset] = find_by_contents(asset_class(@asset), @query, paginate_options(params[:page]), {:category => @category})
265 260 end
266 261  
267 262 private
... ...
app/models/region.rb
... ... @@ -4,14 +4,6 @@ class Region < Category
4 4  
5 5 require_dependency 'enterprise' # enterprises can also be validators
6 6  
7   - include Noosfero::Plugin::HotSpot
8   -
9   - # searches for organizations that could become validators for this region.
10   - # <tt>search</tt> is passed as is to find_by_contents on Organization.
11   - def search_possible_validators(search)
12   - plugins.find_by_contents(Organization, search)[:results].docs.reject {|item| self.validator_ids.include?(item.id) }
13   - end
14   -
15 7 def has_validator?
16 8 validators.count > 0
17 9 end
... ...
app/views/layouts/application-ng.rhtml
... ... @@ -69,13 +69,11 @@
69 69 <% end %>
70 70  
71 71 </span>
72   - <% if @plugins.first(:search_engine?) %>
73   - <form action="/search" class="search_form" method="get" class="clean">
74   - <input name="query" size="15" title="<%=_('Search...')%>" onfocus="this.form.className='focused';" onblur="this.form.className=''" />
75   - <div><%=_('Press <strong>Enter</strong> to send the search query.')%></div>
76   - <%= javascript_tag 'jQuery("#user form input").hint();' %>
77   - </form>
78   - <% end %>
  72 + <form action="/search" class="search_form" method="get" class="clean">
  73 + <input name="query" size="15" title="<%=_('Search...')%>" onfocus="this.form.className='focused';" onblur="this.form.className=''" />
  74 + <div><%=_('Press <strong>Enter</strong> to send the search query.')%></div>
  75 + <%= javascript_tag 'jQuery("#user form input").hint();' %>
  76 + </form>
79 77 </div><!-- end id="user" -->
80 78  
81 79 <h1 id="site-title">
... ...
app/views/search/_profile.rhtml
1 1 <li class="search-profile-item">
2   -<% if @empty_query || multiple_search? || !profile.enterprise? || !@search_engine %>
  2 +<% if @empty_query || multiple_search? || !profile.enterprise? %>
3 3 <%= profile_image_link profile, :portrait, 'div',
4 4 @filter == 'more_recent' ? profile.send(@filter + '_label') + show_date(profile.created_at) : profile.send(@filter + '_label') %>
5 5 <% else %>
... ...
app/views/search/category_index.rhtml
... ... @@ -5,7 +5,7 @@
5 5 <% end %>
6 6  
7 7 <%= search_page_title(_('Search Results'), @category) %>
8   - <%= render :partial => 'search_form', :locals => { :hint => '' } if @search_engine %>
  8 + <%= render :partial => 'search_form', :locals => { :hint => '' } %>
9 9 <%= category_context(@category, params) %>
10 10 <%= display_results %>
11 11  
... ...
app/views/search/index.rhtml
... ... @@ -5,7 +5,7 @@
5 5 <% end %>
6 6  
7 7 <%= search_page_title(_('Search Results'), @category) %>
8   - <%= render :partial => 'search_form', :locals => { :hint => '' } if @search_engine %>
  8 + <%= render :partial => 'search_form', :locals => { :hint => '' } %>
9 9 <%= category_context(@category, params) %>
10 10 <%= display_results(@asset) %>
11 11  
... ...
lib/noosfero/plugin.rb
... ... @@ -351,18 +351,11 @@ class Noosfero::Plugin
351 351 nil
352 352 end
353 353  
354   - # -> Specifies plugin that works as a search engine
355   - # returns = true/false
356   - def search_engine?
357   - false
358   - end
359   -
360 354 # -> Finds objects by their contents
361 355 # returns = {:results => [a, b, c, ...], ...}
362 356 # P.S.: The plugin might add other informations on the return hash for its
363 357 # own use in specific views
364 358 def find_by_contents(klass, query, paginate_options={}, options={})
365   - {:results => []}
366 359 end
367 360  
368 361 def method_missing(method, *args, &block)
... ...
lib/noosfero/plugin/manager.rb
... ... @@ -39,7 +39,7 @@ class Noosfero::Plugin::Manager
39 39 result = plugin.send(event, *args)
40 40 break if result.present?
41 41 end
42   - result || Noosfero::Plugin.new.send(event, *args)
  42 + result
43 43 end
44 44  
45 45 def first_plugin(event, *args)
... ...
plugins/solr/lib/solr_plugin.rb
... ... @@ -12,10 +12,6 @@ class SolrPlugin &lt; Noosfero::Plugin
12 12 _("Uses Solr as search engine.")
13 13 end
14 14  
15   - def search_engine?
16   - true
17   - end
18   -
19 15 def find_by_contents(klass, query, paginate_options={}, options={})
20 16 category = options.delete(:category)
21 17 solr_options = solr_options(class_asset(klass), category)
... ...
test/unit/plugin_manager_test.rb
... ... @@ -140,15 +140,5 @@ class PluginManagerTest &lt; ActiveSupport::TestCase
140 140 assert_equal Plugin2, manager.first_plugin(:random_event)
141 141 end
142 142  
143   - should 'use default value defined on the base plugin class when no plugin enabled for the first method' do
144   - class Noosfero::Plugin
145   - def random_event
146   - 1
147   - end
148   - end
149   -
150   - assert_equal 1, manager.first(:random_event)
151   - end
152   -
153 143 end
154 144  
... ...