From cd53e5e5a940050e3c28aef6af236bf26b4fff43 Mon Sep 17 00:00:00 2001 From: Rodrigo Souto Date: Thu, 28 Feb 2013 22:00:28 +0000 Subject: [PATCH] On the way of search display options --- app/controllers/public/search_controller.rb | 2 +- app/helpers/application_helper.rb | 10 +++++----- app/helpers/search_helper.rb | 27 +++++++++++++++++---------- app/models/enterprise.rb | 4 ++++ app/views/search/_profile.rhtml | 3 ++- app/views/search/_results_header.rhtml | 4 ++-- app/views/tasks/_task.rhtml | 4 ++-- 7 files changed, 33 insertions(+), 21 deletions(-) diff --git a/app/controllers/public/search_controller.rb b/app/controllers/public/search_controller.rb index abd216b..12b818b 100644 --- a/app/controllers/public/search_controller.rb +++ b/app/controllers/public/search_controller.rb @@ -144,7 +144,7 @@ class SearchController < PublicController def load_query @asset = (params[:asset] || params[:action]).to_sym @order ||= [@asset] - params[:display] ||= 'list' + params[:display] ||= 'items' @searches ||= {} @query = params[:query] || '' diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index db14797..4eba679 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -265,9 +265,9 @@ module ApplicationHelper VIEW_EXTENSIONS = %w[.rhtml .html.erb] - def partial_for_class_in_view_path(klass, view_path, suffix = nil) + def partial_for_class_in_view_path(klass, view_path, prefix = nil, suffix = nil) return nil if klass.nil? - name = [klass.name.underscore, suffix].compact.map(&:to_s).join('_') + name = [prefix, klass.name.underscore, suffix].compact.map(&:to_s).join('_') search_name = String.new(name) if search_name.include?("/") @@ -282,14 +282,14 @@ module ApplicationHelper return name if File.exists?(File.join(path)) end - partial_for_class_in_view_path(klass.superclass, view_path, suffix) + partial_for_class_in_view_path(klass.superclass, view_path, prefix, suffix) end - def partial_for_class(klass, suffix=nil) + def partial_for_class(klass, prefix=nil, suffix=nil) raise ArgumentError, 'No partial for object. Is there a partial for any class in the inheritance hierarchy?' if klass.nil? name = klass.name.underscore @controller.view_paths.each do |view_path| - partial = partial_for_class_in_view_path(klass, view_path, suffix) + partial = partial_for_class_in_view_path(klass, view_path, prefix, suffix) return partial if partial end diff --git a/app/helpers/search_helper.rb b/app/helpers/search_helper.rb index 27e1d30..69aee8c 100644 --- a/app/helpers/search_helper.rb +++ b/app/helpers/search_helper.rb @@ -42,12 +42,21 @@ module SearchHelper :align => 'center', :class => 'search-category-context') if category end - def map_capable?(asset) + def display_map?(asset) + [:enterprises, :products].include?(asset) + end + + def display_items?(asset) + puts "\n\n" + asset.inspect + "\n\n" + ![:products, :events].include?(asset) + end + + def display_full?(asset) [:enterprises, :products].include?(asset) end def display_results(asset = nil) - if map_capable?(asset) and map_search? + if display_map?(asset) and map_search? partial = 'google_maps' klass = 'map' else @@ -71,15 +80,13 @@ module SearchHelper end end - def display_filter(asset, display, float = 'right') - if map_capable?(asset) - list_link = display == 'list' ? _('List') : link_to(_('List'), params.merge(:display => 'list')) - map_link = display == 'map' ? _('Map') : link_to(_('Map'), params.merge(:display => 'map')) + def display_selector(asset, display, float = 'right') + if [display_map?(asset), display_items?(asset), display_full?(asset)].select {|option| option}.count > 1 + items_link = display_items?(asset) ? (display == 'items' ? _('Items') : link_to(_('Items'), params.merge(:display => 'items'))) : nil + map_link = display_map?(asset) ? (display == 'map' ? _('Map') : link_to(_('Map'), params.merge(:display => 'map'))) : nil + full_link = display_full?(asset) ? (display == 'full' ? _('Full') : link_to(_('Full'), params.merge(:display => 'full'))) : nil content_tag('div', - content_tag('strong', _('Display')) + ': ' + - list_link + - ' | ' + - map_link, + content_tag('strong', _('Display')) + ': ' + [items_link, map_link, full_link].compact.join(' | '), :id => 'search-display-filter', :style => "float: #{float}" ) diff --git a/app/models/enterprise.rb b/app/models/enterprise.rb index c22ec27..469a2d0 100644 --- a/app/models/enterprise.rb +++ b/app/models/enterprise.rb @@ -183,4 +183,8 @@ class Enterprise < Organization Scrap.find_by_sql("SELECT id, updated_at, 'Scrap' AS klass FROM scraps WHERE scraps.receiver_id = #{self.id} AND scraps.scrap_id IS NULL UNION SELECT id, updated_at, 'ActionTracker::Record' AS klass FROM action_tracker WHERE action_tracker.target_id = #{self.id} UNION SELECT action_tracker.id, action_tracker.updated_at, 'ActionTracker::Record' AS klass FROM action_tracker INNER JOIN articles ON action_tracker.target_id = articles.id WHERE articles.profile_id = #{self.id} AND action_tracker.target_type = 'Article' ORDER BY action_tracker.updated_at DESC") end + def more_recent_label + '' + end + end diff --git a/app/views/search/_profile.rhtml b/app/views/search/_profile.rhtml index 6717f40..c363f94 100644 --- a/app/views/search/_profile.rhtml +++ b/app/views/search/_profile.rhtml @@ -5,7 +5,8 @@ <% else %>
- <%= profile_image_link profile, :portrait, 'div' %> + <%= profile_image_link profile, :portrait, 'div', + @filter == 'more_recent' ? profile.send(@filter + '_label') + show_date(profile.created_at) : profile.send(@filter + '_label') %>
<%= link_to_homepage(profile.name, profile.identifier, :class => "search-result-title") %> diff --git a/app/views/search/_results_header.rhtml b/app/views/search/_results_header.rhtml index bc0fcf9..790e92b 100644 --- a/app/views/search/_results_header.rhtml +++ b/app/views/search/_results_header.rhtml @@ -1,5 +1,5 @@
"> -
<%= @filter_title if @filter_title %>
- <%= display_filter(@asset, params[:display]) if map_capable?(@asset) %> +
<%= filter_title(@asset, @filter) %>
+ <%= display_selector(@asset, params[:display]) if !map_search? %>
diff --git a/app/views/tasks/_task.rhtml b/app/views/tasks/_task.rhtml index 1ee6fac..2d5f611 100644 --- a/app/views/tasks/_task.rhtml +++ b/app/views/tasks/_task.rhtml @@ -50,13 +50,13 @@ <% fields_for "tasks[#{task.id}][task]", task do |f| %> <% if task.accept_details %> <% end %> <% if task.reject_details %> <% end %> <% end %> -- libgit2 0.21.2