diff --git a/app/controllers/public/search_controller.rb b/app/controllers/public/search_controller.rb index 7cd6082..baff96f 100644 --- a/app/controllers/public/search_controller.rb +++ b/app/controllers/public/search_controller.rb @@ -106,6 +106,11 @@ class SearchController < PublicController result[:date_range] = (date - 1.month)..(date + 1.month).at_end_of_month end + if asset_class(asset).methods.include?('facets') + result.merge!(:facets => {:zeros => false, :sort => :count, :fields => asset_class(asset).facets.keys, + :browse => params[:facet] ? params[:facet].map{ |k,v| k.to_s+':'+v.to_s} : ''}) + end + result end diff --git a/app/helpers/search_helper.rb b/app/helpers/search_helper.rb index 3ba9ae1..292ac46 100644 --- a/app/helpers/search_helper.rb +++ b/app/helpers/search_helper.rb @@ -115,4 +115,23 @@ module SearchHelper render(:partial => 'product_categories_menu', :object => product_categories_menu) end + def facets_menu(asset, _facets) + @asset_class = asset_class(asset) + @facets = _facets + render(:partial => 'facets_menu') + end + + def facets_unselect_menu(asset) + @asset_class = asset_class(asset) + render(:partial => 'facets_unselect_menu') + end + + def asset_class(asset) + asset.to_s.singularize.camelize.constantize + end + + def asset_table(asset) + asset_class(asset).table_name + end + end diff --git a/app/views/search/_facets_menu.rhtml b/app/views/search/_facets_menu.rhtml new file mode 100644 index 0000000..584e822 --- /dev/null +++ b/app/views/search/_facets_menu.rhtml @@ -0,0 +1,51 @@ +<% more_options = _("+ Options") %> +<% less_options = _("- Options") %> +<% less_options_limit = 7 %> + +
diff --git a/app/views/search/_facets_unselect_menu.rhtml b/app/views/search/_facets_unselect_menu.rhtml new file mode 100644 index 0000000..ee497cd --- /dev/null +++ b/app/views/search/_facets_unselect_menu.rhtml @@ -0,0 +1,8 @@ + +<% if params[:facet] %> + <% params[:facet].each do |facet_id, obj_id| %> + <% facet = @asset_class.facets[facet_id.to_sym] %> + <% obj = facet[:class].find_by_id(obj_id.to_i) %> + <%= link_to(obj.send(facet[:display_field]), params.merge(:facet => params[:facet].reject {|k,v| k == facet_id}), :class => 'facet-selected') if obj %> + <% end %> +<% end %> diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index 3df35ee..78e2f6f 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -3049,6 +3049,22 @@ div#activation_enterprise div { margin-top: 0px; } +.controller-search #facets-menu { + width: 20%; + float: left; +} + +.controller-search #facets-menu div { + position: relative; +} + +.controller-search .facet-selected { + display: block; + background-color: #000; + color: #fff; + float: left; +} + #product-category, .product-category-hierarchy { margin-top: 40px; -- libgit2 0.21.2