Commit e6d5780d179d61cff097447d86196875a7730409
1 parent
83c7d50d
Exists in
master
and in
29 other branches
Search refactoring
- Start search refactoring to a action based controller, like the BrowseController - Region, city and other advanced options removed in favor of facets - Add search contents menu Contents (or Articles) like people one. - Removed browse controller and views. They will unified with the refactored search controller and views. - Initial category search changes, see subsequent commits
Showing
23 changed files
with
313 additions
and
326 deletions
Show diff stats
app/controllers/public/search_controller.rb
1 | 1 | class SearchController < PublicController |
2 | 2 | |
3 | 3 | helper TagsHelper |
4 | + include SearchHelper | |
4 | 5 | |
5 | 6 | before_filter :load_category |
6 | - before_filter :prepare_filter | |
7 | 7 | before_filter :check_search_whole_site |
8 | 8 | before_filter :load_search_assets |
9 | - before_filter :check_valid_assets, :only => [ :assets ] | |
10 | 9 | |
11 | 10 | no_design_blocks |
12 | 11 | |
13 | - protected | |
12 | + def articles | |
13 | + @asset = :articles | |
14 | + @query = params[:query] || '' | |
15 | + @order ||= [@asset] | |
16 | + @results ||= {} | |
17 | + @filter = filter | |
18 | + | |
19 | + pg_options = paginate_options(@asset, limit, params[:per_page]) | |
20 | + if !@query.blank? | |
21 | + ret = asset_class(@asset).find_by_contents(@query, pg_options, solr_options(@asset, params[:facet], params[:order_by])) | |
22 | + @results[@asset] = ret[:results] | |
23 | + @facets = ret[:facets] | |
24 | + else | |
25 | + @results[@asset] = asset_class(@asset).send('paginate', :all, pg_options) | |
26 | + @facets = {} | |
27 | + end | |
28 | + end | |
14 | 29 | |
15 | - def load_search_assets | |
16 | - @search_in = where_to_search | |
17 | - @searching = {} | |
18 | - @search_in.each do |key, name| | |
19 | - @searching[key] = (params[:asset].blank? && (params[:find_in].nil? || params[:find_in].empty? || params[:find_in].include?(key.to_s))) || (params[:asset] == key.to_s) | |
30 | + alias :contents :articles | |
31 | + | |
32 | + def people | |
33 | + @asset = :people | |
34 | + @query = params[:query] || '' | |
35 | + @order ||= [@asset] | |
36 | + @results ||= {} | |
37 | + @filter = filter | |
38 | + @title = self.filter_description(params[:action] + '_' + @filter ) | |
39 | + | |
40 | + @results[@asset] = @environment.people.visible.send(@filter) | |
41 | + if !@query.blank? | |
42 | + ret = @results[@asset].find_by_contents(@query, {}, solr_options(@asset, params[:facet], params[:order_by])) | |
43 | + @results[@asset] = ret[:results] | |
44 | + @facets = ret[:facets] | |
45 | + else | |
46 | + @facets = {} | |
20 | 47 | end |
48 | + @results[@asset] = @results[@asset].compact.paginate(:per_page => limit, :page => params[:page]) | |
21 | 49 | end |
22 | 50 | |
23 | - def prepare_filter | |
24 | - if @category | |
25 | - @noosfero_finder = CategoryFinder.new(@category) | |
51 | + def products | |
52 | + @asset = :products | |
53 | + @query = params[:query] || '' | |
54 | + @order ||= [@asset] | |
55 | + @results ||= {} | |
56 | + | |
57 | + pg_options = paginate_options(@asset, limit, params[:per_page]) | |
58 | + if !@query.blank? | |
59 | + ret = asset_class(@asset).find_by_contents(@query, pg_options, solr_options(@asset, params[:facet], params[:order_by])) | |
60 | + @results[@asset] = ret[:results] | |
61 | + @facets = ret[:facets] | |
26 | 62 | else |
27 | - @noosfero_finder = EnvironmentFinder.new(@environment) | |
63 | + @results[@asset] = asset_class(@asset).send('paginate', :all, pg_options) | |
64 | + @facets = {} | |
28 | 65 | end |
29 | 66 | end |
30 | 67 | |
31 | - def check_search_whole_site | |
32 | - if params[:search_whole_site_yes] or params[:search_whole_site] == 'yes' | |
33 | - redirect_to params.merge(:category_path => [], :search_whole_site => nil, :search_whole_site_yes => nil) | |
68 | + def enterprises | |
69 | + @asset = :enterprises | |
70 | + @query = params[:query] || '' | |
71 | + @order ||= [@asset] | |
72 | + @results ||= {} | |
73 | + | |
74 | + pg_options = paginate_options(@asset, limit, params[:per_page]) | |
75 | + if !@query.blank? | |
76 | + ret = asset_class(@asset).find_by_contents(@query, pg_options, solr_options(@asset, params[:facet], params[:order_by])) | |
77 | + @results[@asset] = ret[:results] | |
78 | + @facets = ret[:facets] | |
79 | + else | |
80 | + @results[@asset] = asset_class(@asset).send('paginate', :all, pg_options) | |
81 | + @facets = {} | |
34 | 82 | end |
35 | 83 | end |
36 | 84 | |
37 | - def check_valid_assets | |
38 | - @asset = params[:asset].to_sym | |
39 | - if !where_to_search.map(&:first).include?(@asset) | |
40 | - render :text => 'go away', :status => 403 | |
41 | - return | |
85 | + def communities | |
86 | + @asset = :communities | |
87 | + @query = params[:query] || '' | |
88 | + @order ||= [@asset] | |
89 | + @results ||= {} | |
90 | + @filter = filter | |
91 | + @title = self.filter_description(params[:action] + '_' + @filter ) | |
92 | + | |
93 | + @results[@asset] = @environment.communities.visible.send(@filter) | |
94 | + if !@query.blank? | |
95 | + ret = @results[@asset].find_by_contents(@query, {}, solr_options(@asset, params[:facet], params[:order_by])) | |
96 | + @results[@asset] = ret[:results] | |
97 | + @facets = ret[:facets] | |
98 | + else | |
99 | + @facets = {} | |
42 | 100 | end |
101 | + @results[@asset] = @results[@asset].compact.paginate(:per_page => limit, :page => params[:page]) | |
43 | 102 | end |
44 | 103 | |
45 | 104 | def events |
105 | + @asset = :events | |
106 | + params[:asset] |= [@asset] | |
107 | + @query = params[:query] || '' | |
108 | + @order ||= [@asset] | |
109 | + @results ||= {} | |
46 | 110 | @category_id = @category ? @category.id : nil |
47 | 111 | |
112 | + if params[:year] || params[:month] | |
113 | + date = Date.new(year.to_i, month.to_i, 1) | |
114 | + date_range = (date - 1.month)..(date + 1.month).at_end_of_month | |
115 | + end | |
116 | + | |
117 | + if @query.blank? | |
118 | + # Ignore pagination for asset events | |
119 | + if date_range | |
120 | + @results[@asset] = Event.send('find', :all, | |
121 | + :conditions => [ | |
122 | + 'start_date BETWEEN :start_day AND :end_day OR end_date BETWEEN :start_day AND :end_day', | |
123 | + {:start_day => date_range.first, :end_day => date_range.last} | |
124 | + ]) | |
125 | + else | |
126 | + @results[@asset] = Event.send('find', :all) | |
127 | + end | |
128 | + else | |
129 | + pg_options = paginate_options(@asset, limit, params[:per_page]) | |
130 | + solr_options = solr_options(@asset, params[:facet], params[:per_page]) | |
131 | + @results[@asset] = Event.find_by_contents(@query, pg_options, solr_options)[:results] | |
132 | + end | |
133 | + | |
48 | 134 | @selected_day = nil |
49 | 135 | @events_of_the_day = [] |
50 | 136 | date = build_date(params[:year], params[:month], params[:day]) |
... | ... | @@ -58,125 +144,24 @@ class SearchController < PublicController |
58 | 144 | end |
59 | 145 | end |
60 | 146 | |
61 | - events = @results[:events] | |
62 | - | |
147 | + events = @results[@asset] | |
63 | 148 | @calendar = populate_calendar(date, events) |
64 | 149 | @previous_calendar = populate_calendar(date - 1.month, events) |
65 | 150 | @next_calendar = populate_calendar(date + 1.month, events) |
66 | 151 | end |
67 | 152 | |
68 | - def people | |
69 | - #nothing, just to enable | |
70 | - end | |
71 | - def enterprises | |
72 | - load_product_categories_menu(:enterprises) | |
73 | - @categories_menu = true | |
74 | - end | |
75 | - def communities | |
76 | - #nothing, just to enable | |
77 | - end | |
78 | - def articles | |
79 | - #nothins, just to enable | |
80 | - end | |
81 | - | |
82 | - def products | |
83 | - load_product_categories_menu(:products) | |
84 | - @categories_menu = true | |
85 | - end | |
86 | - | |
87 | - def load_product_categories_menu(asset) | |
88 | - @results[asset].uniq! | |
89 | - # REFACTOR DUPLICATED CODE inner loop doing the same thing that outter loop | |
90 | - | |
91 | - if !@query.blank? || @region && !params[:radius].blank? | |
92 | - ret = @noosfero_finder.find(asset, @query, calculate_find_options(asset, nil, params[:page], @product_category, @region, params[:radius], params[:year], params[:month], params[:order_by]).merge({:limit => :all})) | |
93 | - @result_ids = ret.is_a?(Hash) ? ret[:results] : ret | |
94 | - end | |
95 | - | |
96 | - end | |
97 | - | |
98 | - def calculate_find_options(asset, limit, page, product_category, region, radius, year, month, solr_order) | |
99 | - result = { :product_category => product_category, :per_page => limit, :page => page } | |
100 | - if [:enterprises, :people, :products].include?(asset) && region | |
101 | - result.merge!(:within => radius, :region => region.id) | |
102 | - end | |
103 | - | |
104 | - if month || year | |
105 | - date = Date.new(year.to_i, month.to_i, 1) | |
106 | - result[:date_range] = (date - 1.month)..(date + 1.month).at_end_of_month | |
107 | - end | |
108 | - | |
109 | - if asset_class(asset).methods.include?('facets') | |
110 | - result.merge!(:facets => {:zeros => false, :sort => :count, :fields => asset_class(asset).facets.keys, | |
111 | - :browse => params[:facet] ? params[:facet].map{ |k,v| k.to_s+':"'+v.to_s+'"'} : ''}) | |
112 | - end | |
113 | - | |
114 | - result[:order_by] = solr_order | |
115 | - | |
116 | - result | |
117 | - end | |
118 | - | |
119 | - # limit the number of results per page | |
120 | - # TODO: dont hardcore like this | |
121 | - def limit | |
122 | - searching = @searching.values.select{|v|v} | |
123 | - if params[:display] == 'map' | |
124 | - 2000 | |
125 | - else | |
126 | - (searching.size == 1) ? 20 : 6 | |
127 | - end | |
128 | - end | |
129 | - | |
130 | - public | |
131 | - | |
132 | - include SearchHelper | |
133 | - | |
134 | - ###################################################### | |
135 | - | |
136 | - def where_to_search | |
137 | - [ | |
138 | - [ :articles, N_('Articles') ], | |
139 | - [ :enterprises, N_('Enterprises') ], | |
140 | - [ :people, N_('People') ], | |
141 | - [ :communities, N_('Communities') ], | |
142 | - [ :products, N_('Products') ], | |
143 | - [ :events, N_('Events') ] | |
144 | - ].select {|key, name| !environment.enabled?('disable_asset_' + key.to_s) } | |
145 | - end | |
146 | - | |
147 | - def cities | |
148 | - @cities = City.find(:all, :order => 'name', :conditions => ['parent_id = ? and lat is not null and lng is not null', params[:state_id]]) | |
149 | - render :action => 'cities', :layout => false | |
150 | - end | |
151 | - | |
152 | - def complete_region | |
153 | - # FIXME this logic should be in the model | |
154 | - @regions = Region.find(:all, :conditions => [ '(name like ? or name like ?) and lat is not null and lng is not null', '%' + params[:region][:name] + '%', '%' + params[:region][:name].capitalize + '%' ]) | |
155 | - render :action => 'complete_region', :layout => false | |
156 | - end | |
157 | - | |
158 | 153 | def index |
159 | - @query = params[:query] || '' | |
160 | - @product_category = ProductCategory.find(params[:product_category]) if params[:product_category] | |
161 | - | |
162 | - @region = City.find_by_id(params[:city]) if !params[:city].blank? && params[:city] =~ /^\d+$/ | |
163 | - | |
164 | - # how many assets we are searching for? | |
165 | - number_of_result_assets = @searching.values.select{|v| v}.size | |
166 | - | |
167 | 154 | @results = {} |
168 | - @facets = {} | |
169 | 155 | @order = [] |
170 | 156 | @names = {} |
171 | 157 | |
172 | 158 | where_to_search.select { |key,description| @searching[key] }.each do |key, description| |
159 | + send(key) | |
173 | 160 | @order << key |
174 | - find_options = calculate_find_options(key, limit, params[:page], @product_category, @region, params[:radius], params[:year], params[:month], params[:order_by]); | |
175 | - ret = @noosfero_finder.find(key, @query, find_options) | |
176 | - @results[key] = ret.is_a?(Hash) ? ret[:results] : ret | |
177 | - @facets[key] = ret.is_a?(Hash) ? ret[:facets] : {} | |
178 | 161 | @names[key] = getterm(description) |
179 | 162 | end |
163 | + @asset = nil | |
164 | + @facets = {} | |
180 | 165 | |
181 | 166 | if @results.keys.size == 1 |
182 | 167 | specific_action = @results.keys.first |
... | ... | @@ -187,34 +172,76 @@ class SearchController < PublicController |
187 | 172 | return |
188 | 173 | end |
189 | 174 | end |
190 | - | |
191 | - render :action => 'index' | |
192 | 175 | end |
193 | 176 | |
194 | 177 | alias :assets :index |
195 | 178 | |
196 | - ####################################################### | |
197 | - | |
198 | 179 | # view the summary of one category |
199 | 180 | def category_index |
200 | 181 | @results = {} |
201 | 182 | @order = [] |
202 | 183 | @names = {} |
203 | 184 | [ |
204 | - [ :people, _('People'), @noosfero_finder.recent('people', limit) ], | |
205 | - [ :enterprises, __('Enterprises'), @noosfero_finder.recent('enterprises', limit) ], | |
206 | - [ :products, _('Products'), @noosfero_finder.recent('products', limit) ], | |
207 | - [ :events, _('Upcoming events'), @noosfero_finder.upcoming_events({:per_page => limit}) ], | |
208 | - [ :communities, __('Communities'), @noosfero_finder.recent('communities', limit) ], | |
209 | - [ :most_commented_articles, _('Most commented articles'), @noosfero_finder.most_commented_articles(limit) ], | |
210 | - [ :articles, _('Articles'), @noosfero_finder.recent('text_articles', limit) ] | |
185 | + [ :people, _('People'), recent('people') ], | |
186 | + [ :enterprises, __('Enterprises'), recent('enterprises') ], | |
187 | + [ :products, _('Products'), recent('products') ], | |
188 | + [ :events, _('Upcoming events'), upcoming_events({:per_page => limit}) ], | |
189 | + [ :communities, __('Communities'), recent('communities', limit) ], | |
190 | + [ :most_commented_articles, _('Most commented articles'), most_commented_articles(limit) ], | |
191 | + [ :articles, _('Articles'), recent('text_articles', limit) ] | |
211 | 192 | ].each do |key, name, list| |
212 | 193 | @order << key |
213 | 194 | @results[key] = list |
214 | 195 | @names[key] = name |
215 | 196 | end |
197 | + @facets = {} | |
198 | + end | |
199 | + | |
200 | + protected | |
201 | + | |
202 | + def recent(asset, limit = nil) | |
203 | + find(asset, nil, :limit => limit, :order => 'created_at DESC, id DESC') | |
204 | + end | |
205 | + | |
206 | + def most_commented_articles(limit=10, options={}) | |
207 | + options = {:page => 1, :per_page => limit, :order => 'comments_count DESC'}.merge(options) | |
208 | + Article.paginate(:all, options_for_find(Article, options)) | |
209 | + end | |
210 | + | |
211 | + def upcoming_events(options = {}) | |
212 | + options.delete(:page) | |
213 | + options.delete(:per_page) | |
214 | + | |
215 | + Event.find(:all, {:include => :categories, :conditions => [ 'categories.id = ? and start_date >= ?', category_id, Date.today ], :order => 'start_date' }.merge(options)) | |
216 | 216 | end |
217 | + | |
218 | + | |
217 | 219 | attr_reader :category |
220 | + attr_reader :category_id | |
221 | + | |
222 | + def load_category | |
223 | + unless params[:category_path].blank? | |
224 | + path = params[:category_path].join('/') | |
225 | + @category = environment.categories.find_by_path(path) | |
226 | + if @category.nil? | |
227 | + render_not_found(path) | |
228 | + end | |
229 | + @category_id = @category.id | |
230 | + end | |
231 | + end | |
232 | + | |
233 | + def where_to_search | |
234 | + [ | |
235 | + [ :articles, N_('Articles') ], | |
236 | + [ :enterprises, N_('Enterprises') ], | |
237 | + [ :people, N_('People') ], | |
238 | + [ :communities, N_('Communities') ], | |
239 | + [ :products, N_('Products') ], | |
240 | + [ :events, N_('Events') ] | |
241 | + ].select {|key, name| !environment.enabled?('disable_asset_' + key.to_s) } | |
242 | + end | |
243 | + | |
244 | + ####################################################### | |
218 | 245 | |
219 | 246 | def tags |
220 | 247 | @tags_cache_key = "tags_env_#{environment.id.to_s}" |
... | ... | @@ -248,4 +275,90 @@ class SearchController < PublicController |
248 | 275 | render :partial => 'events/events_by_day' |
249 | 276 | end |
250 | 277 | |
278 | + def current_events(year, month, options={}) | |
279 | + options.delete(:page) | |
280 | + options.delete(:per_page) | |
281 | + | |
282 | + range = Event.date_range(year, month) | |
283 | + | |
284 | + Event.find(:all, {:include => :categories, :conditions => { 'categories.id' => category_id, :start_date => range }}.merge(options)) | |
285 | + end | |
286 | + | |
287 | + def filter | |
288 | + if FILTERS.include?(params[:filter]) | |
289 | + params[:filter] | |
290 | + else | |
291 | + 'more_recent' | |
292 | + end | |
293 | + end | |
294 | + | |
295 | + def filter_description(str) | |
296 | + { | |
297 | + 'contents_more_recent' => _('More recent contents'), | |
298 | + 'contents_more_popular' => _('More popular contents'), | |
299 | + 'people_more_recent' => _('More recent people'), | |
300 | + 'people_more_active' => _('More active people'), | |
301 | + 'people_more_popular' => _('More popular people'), | |
302 | + 'communities_more_recent' => _('More recent communities'), | |
303 | + 'communities_more_active' => _('More active communities'), | |
304 | + 'communities_more_popular' => _('More popular communities'), | |
305 | + }[str] || str | |
306 | + end | |
307 | + | |
308 | + def load_search_assets | |
309 | + @search_in = where_to_search | |
310 | + @searching = {} | |
311 | + @search_in.each do |key, name| | |
312 | + @searching[key] = (params[:asset].blank? && (params[:find_in].nil? || params[:find_in].empty? || params[:find_in].include?(key.to_s))) || (params[:asset] == key.to_s) | |
313 | + end | |
314 | + end | |
315 | + | |
316 | + def check_search_whole_site | |
317 | + if params[:search_whole_site_yes] or params[:search_whole_site] == 'yes' | |
318 | + redirect_to params.merge(:category_path => [], :search_whole_site => nil, :search_whole_site_yes => nil) | |
319 | + end | |
320 | + end | |
321 | + | |
322 | + FILTERS = %w( | |
323 | + more_recent | |
324 | + more_active | |
325 | + more_popular | |
326 | + ) | |
327 | + | |
328 | + def paginate_options(asset, limit, page) | |
329 | + result = { :per_page => limit, :page => page } | |
330 | + end | |
331 | + | |
332 | + def solr_options(asset, facet, solr_order) | |
333 | + result = {} | |
334 | + | |
335 | + if asset_class(asset).methods.include?('facets') | |
336 | + result.merge!(:facets => {:zeros => false, :sort => :count, :fields => asset_class(asset).facets.keys, | |
337 | + :browse => facet ? facet.map{ |k,v| k.to_s+':"'+v.to_s+'"'} : ''}) | |
338 | + end | |
339 | + | |
340 | + if solr_order | |
341 | + result[:order_by] = solr_order | |
342 | + end | |
343 | + | |
344 | + result | |
345 | + end | |
346 | + | |
347 | + def limit | |
348 | + searching = @searching.values.select{|v|v} | |
349 | + if params[:display] == 'map' | |
350 | + 2000 | |
351 | + else | |
352 | + (searching.size == 1) ? 20 : 6 | |
353 | + end | |
354 | + end | |
355 | + | |
356 | + def asset_class(asset) | |
357 | + asset.to_s.singularize.camelize.constantize | |
358 | + end | |
359 | + | |
360 | + def asset_table(asset) | |
361 | + asset_class(asset).table_name | |
362 | + end | |
363 | + | |
251 | 364 | end | ... | ... |
app/helpers/application_helper.rb
... | ... | @@ -572,7 +572,7 @@ module ApplicationHelper |
572 | 572 | end |
573 | 573 | extra_info = extra_info.nil? ? '' : content_tag( 'span', extra_info, :class => 'extra_info' ) |
574 | 574 | links = links_for_balloon(profile) |
575 | - content_tag tag, | |
575 | + content_tag('div', content_tag(tag, | |
576 | 576 | (environment.enabled?(:show_balloon_with_profile_links_when_clicked) ? link_to( content_tag( 'span', _('Profile links')), '#', :onclick => "toggleSubmenu(this, '#{profile.short_name}', #{links.to_json}); return false", :class => "menu-submenu-trigger #{trigger_class}", :url => url) : "") + |
577 | 577 | link_to( |
578 | 578 | content_tag( 'span', profile_image( profile, size ), :class => 'profile-image' ) + |
... | ... | @@ -582,7 +582,7 @@ module ApplicationHelper |
582 | 582 | :class => 'profile_link url', |
583 | 583 | :help => _('Click on this icon to go to the <b>%s</b>\'s home page') % profile.name, |
584 | 584 | :title => profile.name ), |
585 | - :class => 'vcard' | |
585 | + :class => 'vcard'), :class => 'common-profile-list-block') | |
586 | 586 | end |
587 | 587 | |
588 | 588 | def gravatar_url_for(email, options = {}) |
... | ... | @@ -887,9 +887,6 @@ module ApplicationHelper |
887 | 887 | def search_page_title(title, options={}) |
888 | 888 | title = "<h1>" + title + "</h1>" |
889 | 889 | title += "<h2 class='query'>" + _("Searched for '%s'") % options[:query] + "</h2>" if !options[:query].blank? |
890 | - title += "<h2 class='query'>" + _("In category %s") % options[:category] + "</h2>" if !options[:category].blank? | |
891 | - title += "<h2 class='query'>" + _("within %d km from %s") % [options[:distance], options[:region]] + "</h2>" if !options[:distance].blank? && !options[:region].blank? | |
892 | - title += "<h2 class='query'>" + _("%d results found") % options[:total_results] + "</h2>" if !options[:total_results].blank? | |
893 | 890 | title |
894 | 891 | end |
895 | 892 | |
... | ... | @@ -1105,33 +1102,46 @@ module ApplicationHelper |
1105 | 1102 | ") : '') |
1106 | 1103 | end |
1107 | 1104 | |
1108 | - def browse_people_menu | |
1105 | + def search_contents_menu | |
1106 | + links = [ | |
1107 | + {s_('contents|More Recent') => {:href => url_for({:controller => 'search', :action => 'contents', :filter => 'more_recent'})}}, | |
1108 | + #{s_('contents|More Popular') => {:href => url_for({:controller => 'search', :action => 'contents', :filter => 'more_popular'})}} | |
1109 | + ] | |
1110 | + if logged_in? | |
1111 | + links.push(_('New Content') => lightbox_options({:href => url_for({:controller => 'cms', :action => 'new', :profile => current_user.login, :cms => true})})) | |
1112 | + end | |
1113 | + | |
1114 | + link_to(content_tag(:span, _('Contents'), :class => 'icon-menu-contents'), {:controller => "search", :action => 'contents'}, :id => 'submenu-contents') + | |
1115 | + link_to(content_tag(:span, _('Contents Menu')), '#', :onclick => "toggleSubmenu(this,'',#{links.to_json}); return false", :class => 'menu-submenu-trigger up', :id => 'submenu-contents-trigger') | |
1116 | + end | |
1117 | + | |
1118 | + def search_people_menu | |
1109 | 1119 | links = [ |
1110 | - {s_('people|More Recent') => {:href => url_for({:controller => 'browse', :action => 'people', :filter => 'more_recent'})}}, | |
1111 | - {s_('people|More Active') => {:href => url_for({:controller => 'browse', :action => 'people', :filter => 'more_active'})}}, | |
1112 | - {s_('people|More Popular') => {:href => url_for({:controller => 'browse', :action => 'people', :filter => 'more_popular'})}} | |
1120 | + {s_('people|More Recent') => {:href => url_for({:controller => 'search', :action => 'people', :filter => 'more_recent'})}}, | |
1121 | + {s_('people|More Active') => {:href => url_for({:controller => 'search', :action => 'people', :filter => 'more_active'})}}, | |
1122 | + {s_('people|More Popular') => {:href => url_for({:controller => 'search', :action => 'people', :filter => 'more_popular'})}} | |
1113 | 1123 | ] |
1114 | 1124 | if logged_in? |
1115 | 1125 | links.push(_('My friends') => {:href => url_for({:profile => current_user.login, :controller => 'friends'})}) |
1116 | 1126 | links.push(_('Invite friends') => {:href => url_for({:profile => current_user.login, :controller => 'invite', :action => 'friends'})}) |
1117 | 1127 | end |
1118 | 1128 | |
1119 | - link_to(content_tag(:span, _('People'), :class => 'icon-menu-people'), {:controller => "browse", :action => 'people'}, :id => 'submenu-people') + | |
1129 | + link_to(content_tag(:span, _('People'), :class => 'icon-menu-people'), {:controller => "search", :action => 'people'}, :id => 'submenu-people') + | |
1120 | 1130 | link_to(content_tag(:span, _('People Menu')), '#', :onclick => "toggleSubmenu(this,'',#{links.to_json}); return false", :class => 'menu-submenu-trigger up', :id => 'submenu-people-trigger') |
1121 | 1131 | end |
1122 | 1132 | |
1123 | - def browse_communities_menu | |
1133 | + def search_communities_menu | |
1124 | 1134 | links = [ |
1125 | - {s_('communities|More Recent') => {:href => url_for({:controller => 'browse', :action => 'communities', :filter => 'more_recent'})}}, | |
1126 | - {s_('communities|More Active') => {:href => url_for({:controller => 'browse', :action => 'communities', :filter => 'more_active'})}}, | |
1127 | - {s_('communities|More Popular') => {:href => url_for({:controller => 'browse', :action => 'communities', :filter => 'more_popular'})}} | |
1135 | + {s_('communities|More Recent') => {:href => url_for({:controller => 'search', :action => 'communities', :filter => 'more_recent'})}}, | |
1136 | + {s_('communities|More Active') => {:href => url_for({:controller => 'search', :action => 'communities', :filter => 'more_active'})}}, | |
1137 | + {s_('communities|More Popular') => {:href => url_for({:controller => 'search', :action => 'communities', :filter => 'more_popular'})}} | |
1128 | 1138 | ] |
1129 | 1139 | if logged_in? |
1130 | 1140 | links.push(_('My communities') => {:href => url_for({:profile => current_user.login, :controller => 'memberships'})}) |
1131 | 1141 | links.push(_('New community') => {:href => url_for({:profile => current_user.login, :controller => 'memberships', :action => 'new_community'})}) |
1132 | 1142 | end |
1133 | 1143 | |
1134 | - link_to(content_tag(:span, _('Communities'), :class => 'icon-menu-community'), {:controller => "browse", :action => 'communities'}, :id => 'submenu-communities') + | |
1144 | + link_to(content_tag(:span, _('Communities'), :class => 'icon-menu-community'), {:controller => "search", :action => 'communities'}, :id => 'submenu-communities') + | |
1135 | 1145 | link_to(content_tag(:span, _('Communities Menu')), '#', :onclick => "toggleSubmenu(this,'',#{links.to_json}); return false", :class => 'menu-submenu-trigger up', :id => 'submenu-communities-trigger') |
1136 | 1146 | end |
1137 | 1147 | ... | ... |
app/views/browse/_article.rhtml
... | ... | @@ -1,11 +0,0 @@ |
1 | -<li class="<%= 'browse-results-type-content ' + icon_for_article(result) %>"> | |
2 | - <strong><%= link_to(result.title, result.view_url) %></strong> | |
3 | - <div class="item_meta"> | |
4 | - <span class="item_by"> | |
5 | - <%= _('by %s') % link_to(result.author.name, result.author.url) %> | |
6 | - </span> | |
7 | - <span class="extra-info"> | |
8 | - <%= (@filter == 'more_recent' ? result.send(@filter + '_label') + show_date(result.created_at) : result.send(@filter + '_label')) %> | |
9 | - </span> | |
10 | - </div> | |
11 | -</li> |
app/views/browse/_display_results.rhtml
... | ... | @@ -1,19 +0,0 @@ |
1 | -<div id="browse-results"> | |
2 | - | |
3 | - <div class='browse-results-innerbox'> | |
4 | - <% if @results.empty? %> | |
5 | - <div class="browse-results-type-empty"> | |
6 | - <div> <%= _('None') %> </div> | |
7 | - </div><!-- end class="browse-results-innerbox" --> | |
8 | - <% end %> | |
9 | - <ul class='common-profile-list-block'> | |
10 | - <% @results.each do |result| %> | |
11 | - <%= render :partial => partial_for_class(result.class), :locals => {:result => result} %> | |
12 | - <% end %> | |
13 | - </ul> | |
14 | - <br style='clear: both;'> | |
15 | - </div> | |
16 | - | |
17 | - <br style="clear:both" /> | |
18 | -</div><!-- end id="browse-results" --> | |
19 | - |
app/views/browse/_person.rhtml
app/views/browse/_profile.rhtml
... | ... | @@ -1 +0,0 @@ |
1 | -<%= profile_image_link result, :portrait, 'li', @filter == 'more_recent' ? result.send(@filter + '_label') + show_date(result.created_at) : result.send(@filter + '_label') %> |
app/views/browse/_search_form.rhtml
... | ... | @@ -1,10 +0,0 @@ |
1 | -<% form_tag( { :controller => 'browse', :action => action}, :method => 'get', :class => 'search_form' ) do %> | |
2 | - | |
3 | - <div class="search-field"> | |
4 | - <span class="formfield"> | |
5 | - <%= text_field_tag 'query', @query, :size => 50 %> | |
6 | - </span> | |
7 | - <%= submit_button(:search, _('Search')) %> | |
8 | - </div> | |
9 | - | |
10 | -<% end %> |
app/views/browse/communities.rhtml
app/views/browse/contents.rhtml
app/views/browse/people.rhtml
app/views/search/_enterprise.rhtml
... | ... | @@ -1,17 +0,0 @@ |
1 | -<% if params[:query].blank? %> | |
2 | - <%= profile_image_link enterprise, :portrait %> | |
3 | -<% else %> | |
4 | - <div class="enterprise-result"> | |
5 | - <%= profile_image_link enterprise, :portrait %> | |
6 | - <span><%= enterprise.name %></span> | |
7 | - <span><%= _("Region: ") + enterprise.region.name if enterprise.region %></span> | |
8 | - <span><%= enterprise.description %></span> | |
9 | - | |
10 | - <div class="enterprise-categorization"> | |
11 | - <% enterprise.top_level_categorization.each do |parent, children| %> | |
12 | - <span class="enterprise-categorization-parent"><%= parent.name + ':' %></span> | |
13 | - <span class="enterprise-categorization-children"><%= children.collect(&:name).join(', ') %></span> | |
14 | - <% end %> | |
15 | - </div> | |
16 | - </div> | |
17 | -<% end %> |
app/views/search/_profile.rhtml
1 | -<%= profile_image_link profile, :portrait %> | |
1 | +<% if @query.blank? || !profile.enterprise? %> | |
2 | + <%= profile_image_link profile, :portrait %> | |
3 | +<% else %> | |
4 | + <div class="enterprise-result"> | |
5 | + <%= profile_image_link profile, :portrait %> | |
6 | + <span><%= profile.name %></span> | |
7 | + <span><%= _("Region: ") + profile.region.name if profile.region %></span><br /> | |
8 | + <% if !profile.description.blank? %> | |
9 | + <span><%= profile.description %></span><br /> | |
10 | + <% end %> | |
11 | + | |
12 | + <div class="enterprise-categorization"> | |
13 | + <% profile.top_level_categorization.each do |parent, children| %> | |
14 | + <span class="enterprise-categorization-parent"><%= parent.name + ':' %></span> | |
15 | + <span class="enterprise-categorization-children"><%= children.collect(&:name).join(', ') %></span> | |
16 | + <br /> | |
17 | + <% end %> | |
18 | + </div> | |
19 | + </div> | |
20 | +<% end %> | ... | ... |
app/views/search/_search_form.rhtml
1 | 1 | <div class='search-form'> |
2 | 2 | <% simple_search = false unless defined? simple_search %> |
3 | 3 | |
4 | -<% form_tag( { :controller => 'search', :action => 'index', :asset => nil, :category_path => ( @category ? @category.explode_path : [] ) }, | |
4 | +<% form_tag( { :controller => 'search', :action => @asset ? @asset : 'index', :asset => nil, :category_path => ( @category ? @category.explode_path : [] ) }, | |
5 | 5 | :method => 'get', :class => 'search_form' ) do %> |
6 | 6 | <%= '<h3>%s</h3>' % form_title if defined? form_title %> |
7 | 7 | |
... | ... | @@ -20,41 +20,6 @@ |
20 | 20 | <% end %> |
21 | 21 | </div> |
22 | 22 | |
23 | - <div id='advanced-search-options' style="display: <%= simple_search ? 'none' : 'block' %>"> | |
24 | - <div class="search-options search-within"> | |
25 | - <h4><%= _('Search within:') %></h4> | |
26 | - <br style='clear:left'/> | |
27 | - <div> | |
28 | - <span class="formfield"> | |
29 | - <%= select_city %> | |
30 | - </span> | |
31 | - <span class="formfield"> | |
32 | - <%= labelled_select(_('Distance:'), 'radius', :first, :last, nil, [15, 30, 50, 100, 150, 200, 300, 400, 500, 1000].map{|n|[n, n.to_s + 'km']}) %> | |
33 | - </span> | |
34 | - </div> | |
35 | - </div><!-- fim class="search-options" --> | |
36 | - | |
37 | - <div class="search-options search-for"> | |
38 | - <h4><%= _('Search for:') %></h4> | |
39 | - <ul> | |
40 | - <% @search_in.map { |t,n| [t,getterm(n)] } . | |
41 | - sort_by(&:last).each do |thing, name| %> | |
42 | - <li> | |
43 | - <%= labelled_check_box name, 'find_in[]', thing.to_s, @searching[thing.to_sym] %> | |
44 | - </li> | |
45 | - <% end %> | |
46 | - </ul> | |
47 | - <br style="clear:both" /> | |
48 | - </div><!-- fim class="search-options" --> | |
49 | - </div><!-- end id="advanced-search-options" --> | |
50 | - | |
51 | - <% if simple_search %> | |
52 | - <%= link_to_function(_('More options'), nil, :id => 'advanced_search_link') do |page| | |
53 | - page['advanced_search_link'].hide | |
54 | - page['advanced-search-options'].toggle | |
55 | - end %> | |
56 | - <% end %> | |
57 | - | |
58 | 23 | <% if lightbox?; button_bar do %> |
59 | 24 | <%= lightbox_close_button _('Close') %> |
60 | 25 | <% end; end %> | ... | ... |
app/views/search/articles.rhtml
1 | 1 | <%= search_page_title( _('Articles'), { :query => @query, |
2 | - :category => @category ? @category.name : nil, | |
3 | - :total_results => @total_results, | |
4 | - :region => @region ? @region.name : nil, | |
5 | - :distance => @radius } ) %> | |
2 | + :total_results => @total_results } ) %> | |
6 | 3 | |
7 | 4 | <%= search_page_link_to_all( { :asset => params[:asset], |
8 | 5 | :category => @category }) %> |
... | ... | @@ -10,7 +7,7 @@ |
10 | 7 | <%= render :partial => 'search_form', :locals => { :form_title => @query.blank? ? _('Search') : _("Refine your search"), :simple_search => true } %> |
11 | 8 | |
12 | 9 | <% if !@query.blank? %> |
13 | - <%= facets_menu(:articles, @facets[:articles]) %> | |
10 | + <%= facets_menu(:articles, @facets) %> | |
14 | 11 | <% end %> |
15 | 12 | |
16 | 13 | <%= render :partial => 'results_header', :locals => { :asset => :articles, :results => @results[:articles] } %> | ... | ... |
app/views/search/cities.rhtml
app/views/search/communities.rhtml
1 | 1 | <%= search_page_title( __('Communities'), { :query => @query, |
2 | - :category => @category ? @category.name : nil, | |
3 | - :total_results => @total_results, | |
4 | - :region => @region ? @region.name : nil, | |
5 | - :distance => @radius } ) %> | |
2 | + :total_results => @total_results } ) %> | |
6 | 3 | |
7 | 4 | <%= search_page_link_to_all( { :asset => params[:asset], |
8 | 5 | :category => @category }) %> |
... | ... | @@ -16,7 +13,7 @@ |
16 | 13 | <% end %> |
17 | 14 | |
18 | 15 | <% if !@query.blank? %> |
19 | - <%= facets_menu(:communities, @facets[:communities]) %> | |
16 | + <%= facets_menu(:communities, @facets) %> | |
20 | 17 | <% end %> |
21 | 18 | <%= render :partial => 'results_header', :locals => { :asset => :communities, :results => @results[:communities] } %> |
22 | 19 | ... | ... |
app/views/search/complete_region.rhtml
app/views/search/enterprises.rhtml
... | ... | @@ -6,12 +6,7 @@ |
6 | 6 | <% end %> |
7 | 7 | </h1> |
8 | 8 | |
9 | -<% if @radius && @region %> | |
10 | - <h2><%=h (_('Within %s km from %s') % [@radius, @region.name]) %><h2> | |
11 | -<% end %> | |
12 | - | |
13 | -<%= search_page_link_to_all( { :asset => params[:asset], | |
14 | - :category => @category }) %> | |
9 | +<%= search_page_link_to_all( { :asset => params[:asset] }) %> | |
15 | 10 | |
16 | 11 | <%= render :partial => 'search_form', :locals => { :form_title => _("Refine your search"), :simple_search => true } %> |
17 | 12 | |
... | ... | @@ -25,11 +20,9 @@ |
25 | 20 | <div class="has_cat_list"> |
26 | 21 | <% end %> |
27 | 22 | |
28 | -<% cache(:action => 'assets', :asset => 'enterprises', :category_path => params[:category_path], :query => @query, :product_category => @product_category, :region => @region, :radius => params[:radius]) do %> | |
29 | - <% if @query.blank? %> | |
30 | - <%= product_categories_menu(:enterprises, @product_category, @result_ids) %> | |
31 | - <% else %> | |
32 | - <%= facets_menu(:enterprises, @facets[:enterprises]) %> | |
23 | +<% cache(:action => 'assets', :asset => 'enterprises', :query => @query) do %> | |
24 | + <% if !@query.blank? %> | |
25 | + <%= facets_menu(:enterprises, @facets) %> | |
33 | 26 | <% end %> |
34 | 27 | <% end %> |
35 | 28 | ... | ... |
app/views/search/index.rhtml
1 | 1 | <div id="search-page"> |
2 | 2 | |
3 | -<%= search_page_title(_('Search Results'), :query => CGI.escapeHTML(@query), :category => @category ? @category.name : nil, :total_results => @total_results) %> | |
3 | +<%= search_page_title(_('Search Results'), :query => CGI.escapeHTML(@query), | |
4 | + :total_results => @total_results) %> | |
4 | 5 | |
5 | 6 | <%= render :partial => 'search_form', :locals => { :form_title => _("Refine your search"), :simple_search => true } %> |
6 | 7 | ... | ... |
app/views/search/people.rhtml
1 | 1 | <%= search_page_title( _('People'), { :query => @query, |
2 | - :category => @category ? @category.name : nil, | |
3 | - :total_results => @total_results, | |
4 | - :region => @region ? @region.name : nil, | |
5 | - :distance => @radius } ) %> | |
2 | + :total_results => @total_results } ) %> | |
6 | 3 | |
7 | 4 | <%= search_page_link_to_all( { :asset => params[:asset], |
8 | 5 | :category => @category }) %> |
... | ... | @@ -10,7 +7,7 @@ |
10 | 7 | <%= render :partial => 'search_form', :locals => { :form_title => @query.blank? ? _('Search') : _("Refine your search"), :simple_search => true } %> |
11 | 8 | |
12 | 9 | <% if !@query.blank? %> |
13 | - <%= facets_menu(:people, @facets[:people]) %> | |
10 | + <%= facets_menu(:people, @facets) %> | |
14 | 11 | <% end %> |
15 | 12 | |
16 | 13 | <%= render :partial => 'results_header', :locals => { :asset => :people, :results => @results[:people] } %> | ... | ... |
app/views/search/products.rhtml
1 | 1 | <%= search_page_title( _('Products and Services'), { :query => @query, |
2 | - :category => @category ? @category.name : nil, | |
3 | - :total_results => @total_results, | |
4 | - :region => @region ? @region.name : nil, | |
5 | - :distance => @radius } ) %> | |
2 | + :total_results => @total_results } ) %> | |
6 | 3 | |
7 | 4 | <%= search_page_link_to_all( { :asset => params[:asset], |
8 | 5 | :category => @category }) %> |
... | ... | @@ -13,11 +10,9 @@ |
13 | 10 | <div class="has_cat_list"> |
14 | 11 | <% end %> |
15 | 12 | |
16 | -<% cache(:action => 'assets', :asset => 'products', :category_path => params[:category_path], :query => @query, :product_category => @product_category, :region => @region, :radius => params[:radius]) do %> | |
17 | - <% if @query.empty? %> | |
18 | - <%= product_categories_menu(:products, @product_category, @result_ids) %> | |
19 | - <% else %> | |
20 | - <%= facets_menu(:products, @facets[:products]) %> | |
13 | +<% cache(:action => 'assets', :asset => 'products', :query => @query) do %> | |
14 | + <% if !@query.blank? %> | |
15 | + <%= facets_menu(:products, @facets) %> | |
21 | 16 | <% end %> |
22 | 17 | <% end %> |
23 | 18 | ... | ... |