Required fields adds default text mark to labels, allowing i18n for translations
This commit is contained in:
parent
3f2e21533f
commit
43c710c2f6
|
@ -5,13 +5,39 @@ module SimpleForm
|
|||
|
||||
def generate_label
|
||||
return '' if @options[:label] == false
|
||||
html_options = { :class => "#{@input_type} #{required_class}" }
|
||||
label(@attribute, @options[:label] || translate_label, html_options)
|
||||
html_options = { :class => "#{@input_type} #{required_class}".strip }
|
||||
label(@attribute, label_text, html_options)
|
||||
end
|
||||
|
||||
def label_text
|
||||
required_text << (@options[:label] || translate_label)
|
||||
end
|
||||
|
||||
def required_text
|
||||
attribute_required? ? translate_required_string : ''
|
||||
end
|
||||
|
||||
def translate_label
|
||||
default = @object.try(:human_attribute_name, @attribute.to_s) || @attribute.to_s.humanize
|
||||
I18n.t("views.labels.#{@object_name}.#{@attribute}", :default => default)
|
||||
I18n.t(:"#{@object_name}.#{@attribute}", :scope => :"views.labels", :default => default)
|
||||
end
|
||||
|
||||
def translate_required_string
|
||||
translate_string(:required_string, :default =>
|
||||
%[<abbr title="#{translate_required_text}">#{translate_required_mark}</abbr> ]
|
||||
)
|
||||
end
|
||||
|
||||
def translate_required_text
|
||||
translate_string(:required_text, :default => 'required')
|
||||
end
|
||||
|
||||
def translate_required_mark
|
||||
translate_string(:required_mark, :default => '*')
|
||||
end
|
||||
|
||||
def translate_string(key, params={})
|
||||
I18n.t(key, {:scope => :simple_form}.merge!(params))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -6,7 +6,7 @@ class LabelTest < ActionView::TestCase
|
|||
simple_form_for @user do |f|
|
||||
concat f.input :name
|
||||
end
|
||||
assert_select 'form label[for=user_name]', 'Name'
|
||||
assert_select 'form label[for=user_name]', /Name/
|
||||
end
|
||||
|
||||
test 'input should allow not using a label' do
|
||||
|
@ -20,7 +20,7 @@ class LabelTest < ActionView::TestCase
|
|||
simple_form_for @user do |f|
|
||||
concat f.input :name, :label => 'My label!'
|
||||
end
|
||||
assert_select 'form label[for=user_name]', 'My label!'
|
||||
assert_select 'form label[for=user_name]', /My label!/
|
||||
end
|
||||
|
||||
test 'input should use label with human attribute name if it responds to it' do
|
||||
|
@ -28,7 +28,7 @@ class LabelTest < ActionView::TestCase
|
|||
simple_form_for @super_user do |f|
|
||||
concat f.input :name
|
||||
end
|
||||
assert_select 'form label[for=super_user_name]', 'Super User Name!'
|
||||
assert_select 'form label[for=super_user_name]', /Super User Name!/
|
||||
end
|
||||
|
||||
test 'input should use i18n to pick up label translation' do
|
||||
|
@ -40,12 +40,12 @@ class LabelTest < ActionView::TestCase
|
|||
concat f.input :description
|
||||
concat f.input :age
|
||||
end
|
||||
assert_select 'form label[for=super_user_description]', 'Descrição'
|
||||
assert_select 'form label[for=super_user_age]', 'Idade'
|
||||
assert_select 'form label[for=super_user_description]', /Descrição/
|
||||
assert_select 'form label[for=super_user_age]', /Idade/
|
||||
end
|
||||
end
|
||||
|
||||
test 'label should use the same input type class as input' do
|
||||
test 'label should use the same css class as input' do
|
||||
simple_form_for @user do |f|
|
||||
concat f.input :name
|
||||
concat f.input :description
|
||||
|
@ -77,4 +77,47 @@ class LabelTest < ActionView::TestCase
|
|||
end
|
||||
assert_no_select 'form label.required'
|
||||
end
|
||||
|
||||
test 'label should add required text when input is required' do
|
||||
simple_form_for @user do |f|
|
||||
concat f.input :name
|
||||
end
|
||||
assert_select 'form label.required', '* Name'
|
||||
assert_select 'form label abbr[title=required]', '*'
|
||||
end
|
||||
|
||||
test 'label should not have required text in no required inputs' do
|
||||
simple_form_for @user do |f|
|
||||
concat f.input :name, :required => false
|
||||
end
|
||||
assert_no_select 'form label abbr'
|
||||
end
|
||||
|
||||
test 'label should use i18n to find required text' do
|
||||
store_translations(:en, :simple_form => { :required_text => 'campo requerido' }) do
|
||||
simple_form_for @user do |f|
|
||||
concat f.input :name
|
||||
end
|
||||
assert_select 'form label abbr[title=campo requerido]', '*'
|
||||
end
|
||||
end
|
||||
|
||||
test 'label should use i18n to find required mark' do
|
||||
store_translations(:en, :simple_form => { :required_mark => '*-*' }) do
|
||||
simple_form_for @user do |f|
|
||||
concat f.input :name
|
||||
end
|
||||
assert_select 'form label abbr', '*-*'
|
||||
end
|
||||
end
|
||||
|
||||
test 'label should use i18n to find required string tag' do
|
||||
store_translations(:en, :simple_form => { :required_string => '<span class="required" title="requerido">*</span>' }) do
|
||||
simple_form_for @user do |f|
|
||||
concat f.input :name
|
||||
end
|
||||
assert_no_select 'form label abbr'
|
||||
assert_select 'form label span.required[title=requerido]', '*'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue