From 3ffc64cc488b71ec4ef2dd52f5d42d79f9dff86b Mon Sep 17 00:00:00 2001 From: John Bintz Date: Wed, 12 Dec 2012 20:25:05 -0500 Subject: [PATCH 1/6] add html safe option --- .../attributes_builder_base.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/semantic_rails_view_helpers/attributes_builder_base.rb b/lib/semantic_rails_view_helpers/attributes_builder_base.rb index a469bfb..7d14aa3 100644 --- a/lib/semantic_rails_view_helpers/attributes_builder_base.rb +++ b/lib/semantic_rails_view_helpers/attributes_builder_base.rb @@ -30,6 +30,10 @@ module SemanticRailsViewHelpers value = raw_value value = value.to_label if value.respond_to?(:to_label) + if options[:raw] + value = value.html_safe + end + if SemanticRailsViewHelpers.semantic_data? value = @context.content_tag(:data, value, 'data-field' => field) end @@ -41,6 +45,10 @@ module SemanticRailsViewHelpers (value or '').html_safe end + def field!(field, options = {}, &block) + self.field(field, options.merge(:raw => true), &block) + end + class TagBuilder def initialize(attributes_builder) @attributes_builder = attributes_builder From 8b98a0b4c669f1ad74988dc77f7b4f1ab397711f Mon Sep 17 00:00:00 2001 From: John Bintz Date: Sun, 23 Dec 2012 10:37:05 -0500 Subject: [PATCH 2/6] some updates --- lib/semantic_rails_view_helpers/capybara.rb | 12 ++++++++++-- lib/semantic_rails_view_helpers/view_helpers.rb | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/semantic_rails_view_helpers/capybara.rb b/lib/semantic_rails_view_helpers/capybara.rb index c2507ed..050eee5 100644 --- a/lib/semantic_rails_view_helpers/capybara.rb +++ b/lib/semantic_rails_view_helpers/capybara.rb @@ -58,6 +58,10 @@ def find_action(action) find("[data-action='#{action}']") end +def find_object_action(object, action) + find("[data-type='#{object}'][data-action='#{action}']") +end + module Capybara class ElementFound < StandardError def initialize(search) @@ -115,11 +119,15 @@ def within_any(search, &block) search = "[data-type='#{search}']" end - all(search).each_with_index do |node, index| + nodes = all(search) + + raise Capybara::ElementNotFound if nodes.empty? + + nodes.each_with_index do |node, index| begin within("#{search}:eq(#{index + 1})", &block) return true - rescue RSpec::Expectations::ExpectationNotMetError + rescue RSpec::Expectations::ExpectationNotMetError, Capybara::ElementNotFound end end diff --git a/lib/semantic_rails_view_helpers/view_helpers.rb b/lib/semantic_rails_view_helpers/view_helpers.rb index a15fa9b..a7d9d6e 100644 --- a/lib/semantic_rails_view_helpers/view_helpers.rb +++ b/lib/semantic_rails_view_helpers/view_helpers.rb @@ -36,7 +36,7 @@ module SemanticRailsViewHelpers def link_to_model_action(model, action = :show, options = {}) target_action = action - label = options.delete(:label) || t(".#{action}") + label = options.delete(:label) || t(".#{model.class.name.underscore}.#{action}") if action == :destroy options = options.merge(:method => :delete, 'data-skip-pjax' => 'true') @@ -52,7 +52,7 @@ module SemanticRailsViewHelpers route = model route = route.to_route if route.respond_to?(:to_route) - link_to label, polymorphic_url(route, :action => action), options.merge(semantic_action_data(target_action)) + link_to label, polymorphic_url(route, :action => action), options.merge(semantic_action_data(target_action).merge(semantic_model_data(model))) end def li_for(object, options = {}, &block) From 517c7d693799adc5b4a4ed50a1dbf53a09d73157 Mon Sep 17 00:00:00 2001 From: John Bintz Date: Sun, 23 Dec 2012 13:05:11 -0500 Subject: [PATCH 3/6] don't try to add data to new models --- lib/semantic_rails_view_helpers/view_helpers.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/semantic_rails_view_helpers/view_helpers.rb b/lib/semantic_rails_view_helpers/view_helpers.rb index a7d9d6e..52feb94 100644 --- a/lib/semantic_rails_view_helpers/view_helpers.rb +++ b/lib/semantic_rails_view_helpers/view_helpers.rb @@ -52,7 +52,12 @@ module SemanticRailsViewHelpers route = model route = route.to_route if route.respond_to?(:to_route) - link_to label, polymorphic_url(route, :action => action), options.merge(semantic_action_data(target_action).merge(semantic_model_data(model))) + data = semantic_action_data(target_action) + if action != :new + data.merge!(semantic_model_data(model)) + end + + link_to label, polymorphic_url(route, :action => action), options.merge(data) end def li_for(object, options = {}, &block) From 7d43b998c5bfcaed55e0762ad512596c882a2815 Mon Sep 17 00:00:00 2001 From: John Bintz Date: Sun, 23 Dec 2012 13:31:36 -0500 Subject: [PATCH 4/6] more fixes --- lib/semantic_rails_view_helpers/view_helpers.rb | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/semantic_rails_view_helpers/view_helpers.rb b/lib/semantic_rails_view_helpers/view_helpers.rb index 52feb94..f989958 100644 --- a/lib/semantic_rails_view_helpers/view_helpers.rb +++ b/lib/semantic_rails_view_helpers/view_helpers.rb @@ -52,10 +52,7 @@ module SemanticRailsViewHelpers route = model route = route.to_route if route.respond_to?(:to_route) - data = semantic_action_data(target_action) - if action != :new - data.merge!(semantic_model_data(model)) - end + data = semantic_action_data(target_action).merge(semantic_model_data(model)) link_to label, polymorphic_url(route, :action => action), options.merge(data) end @@ -75,7 +72,12 @@ module SemanticRailsViewHelpers end end - { 'data-type' => type, 'data-id' => object.id } + output = { 'data-type' => type } + if !object.new_record? + output['data-id'] = object.id + end + + output end end From 52b51c972d599d67b8c52d27ab9abbd8c6ca81ee Mon Sep 17 00:00:00 2001 From: John Bintz Date: Sun, 23 Dec 2012 13:36:13 -0500 Subject: [PATCH 5/6] yet another fix --- lib/semantic_rails_view_helpers/view_helpers.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/semantic_rails_view_helpers/view_helpers.rb b/lib/semantic_rails_view_helpers/view_helpers.rb index f989958..e2f8346 100644 --- a/lib/semantic_rails_view_helpers/view_helpers.rb +++ b/lib/semantic_rails_view_helpers/view_helpers.rb @@ -73,7 +73,8 @@ module SemanticRailsViewHelpers end output = { 'data-type' => type } - if !object.new_record? + + if object.respond_to?(:id) output['data-id'] = object.id end From 60992cf1fb81b5d365abd75e21bf27adbe4efbde Mon Sep 17 00:00:00 2001 From: John Bintz Date: Sat, 29 Dec 2012 15:31:55 -0500 Subject: [PATCH 6/6] add link finder --- lib/semantic_rails_view_helpers/capybara.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/semantic_rails_view_helpers/capybara.rb b/lib/semantic_rails_view_helpers/capybara.rb index 050eee5..2120cf4 100644 --- a/lib/semantic_rails_view_helpers/capybara.rb +++ b/lib/semantic_rails_view_helpers/capybara.rb @@ -137,3 +137,7 @@ end def refind_object(object) object.class.find(object.id) end + +def find_semantic_link(link) + find("[data-link='#{link}']") +end