lib/populate_me/mongo/crushyform.rb in populate-me-0.0.7 vs lib/populate_me/mongo/crushyform.rb in populate-me-0.0.8
- old
+ new
@@ -32,17 +32,14 @@
:slug => proc do |m,c,o|
crushyform_types[:string].call(m,c,o)
end,
:boolean => proc do |m,c,o|
crushid = m.field_id_for(c)
- s = ['checked', nil]
- s.reverse! unless o[:input_value]
- out = "<span class='%s'>"
- out += "<input type='radio' name='%s' value='true' id='%s' %s /> <label for='%s'>Yes</label> "
- out += "<input type='radio' name='%s' value='false' id='%s-no' %s /> <label for='%s-no'>No</label>"
- out += "</span>\n"
- out % [o[:input_class], o[:input_name], crushid, s[0], crushid, o[:input_name], crushid, s[1], crushid]
+ checked = 'checked' if o[:input_value]
+ out = "<input type='hidden' name='%s' value='false' id='%s-off' />\n"
+ out += "<input type='checkbox' name='%s' value='true' id='%s' class='%s' %s />\n"
+ out % [o[:input_name], crushid, o[:input_name], crushid, o[:input_class], checked]
end,
:text => proc do |m,c,o|
"<textarea name='%s' id='%s' class='%s' %s>%s</textarea>%s\n" % [o[:input_name], m.field_id_for(c), o[:input_class], o[:required]&&'required', o[:input_value], o[:required]]
end,
:date => proc do |m,c,o|
@@ -194,9 +191,10 @@
action.nil? ? fields : "<form action='%s' method='%s' %s>%s</form>\n" % [action, meth, enctype, fields]
end
# crushyfield is crushyinput but with label+error
def crushyfield(col, o={})
return '' if (o[:type]==:none || model.schema[col][:type]==:none)
+ return crushyinput(col,o) if (o[:input_type]=='hidden' || model.schema[col][:input_type]=='hidden')
default_field_name = col[/^id_/] ? Kernel.const_get(col.sub(/^id_/, '')).human_name : col.tr('_', ' ').capitalize
field_name = o[:name] || model.schema[col][:name] || default_field_name
error_list = errors_on(col).map{|e|" - #{e}"} if !errors_on(col).nil?
"<p class='crushyfield %s'><label for='%s'>%s</label><span class='crushyfield-error-list'>%s</span><br />\n%s</p>\n" % [error_list&&'crushyfield-error', field_id_for(col), field_name, error_list, crushyinput(col, o)]
end