From ed66c74344368b47753a9ec31a2d2853f94cb76f Mon Sep 17 00:00:00 2001 From: John Bintz Date: Mon, 25 Feb 2013 10:32:59 -0500 Subject: [PATCH] add basic activeadmin support --- README.md | 5 ++++ .../active_admin.rb | 30 +++++++++++++++++++ .../attributes_table_builder.rb | 2 +- .../view_helpers.rb | 4 +++ 4 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 lib/semantic_rails_view_helpers/active_admin.rb diff --git a/README.md b/README.md index 0094478..0ec88ed 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,11 @@ You can even make simple tables, a la Active Admin: = f.field :description ``` +### Active Admin + +You can add semantic data to Active Admin's `attributes_table`s in `show` views. Just `require 'semantic_rails_view_helpers/active_admin'` +in an initializer and you can then target attributes in `show` views. + ## Not Finding Things Sometimes the absence of a thing is just as important as the presence of a thing. Make it easy on yourself: diff --git a/lib/semantic_rails_view_helpers/active_admin.rb b/lib/semantic_rails_view_helpers/active_admin.rb new file mode 100644 index 0000000..5575f46 --- /dev/null +++ b/lib/semantic_rails_view_helpers/active_admin.rb @@ -0,0 +1,30 @@ +require 'active_admin/views/components/attributes_table' + +class ActiveAdmin::Views::AttributesTable + def row(attr, &block) + @table << tr do + th do + header_content_for(attr) + end + td do + content_for(attr, block) + end + end + end + + protected + def content_for(attr, block) + value = begin + if block + block.call(@record) + else + content_for_attribute(attr) + end + end + + value = pretty_format(value) + value == "" || value.nil? ? empty_value : value + + %{#{value}}.html_safe + end +end diff --git a/lib/semantic_rails_view_helpers/attributes_table_builder.rb b/lib/semantic_rails_view_helpers/attributes_table_builder.rb index 790942f..e8328ca 100644 --- a/lib/semantic_rails_view_helpers/attributes_table_builder.rb +++ b/lib/semantic_rails_view_helpers/attributes_table_builder.rb @@ -10,7 +10,7 @@ module SemanticRailsViewHelpers def to_s @options[:class] ||= '' - @options[:class] << 'attributes table' + @options[:class] << ' attributes table' @context.content_tag(:table, @options) do @context.capture(self, &@block) diff --git a/lib/semantic_rails_view_helpers/view_helpers.rb b/lib/semantic_rails_view_helpers/view_helpers.rb index 7af81af..f18654b 100644 --- a/lib/semantic_rails_view_helpers/view_helpers.rb +++ b/lib/semantic_rails_view_helpers/view_helpers.rb @@ -7,10 +7,14 @@ module SemanticRailsViewHelpers AttributesBuilder.new(object, self, block) end + alias :semantic_attributes_for :attributes_for + def attributes_table_for(object, options = {}, &block) AttributesTableBuilder.new(object, options, self, block) end + alias :semantic_attributes_table_for :attributes_table_for + def link_to_route(route, *args) options = {} if args.last.kind_of?(::Hash)