bureaucrat 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/bureaucrat/fields.rb +9 -5
- data/lib/bureaucrat/forms.rb +2 -2
- data/lib/bureaucrat/widgets.rb +12 -12
- metadata +1 -1
data/lib/bureaucrat/fields.rb
CHANGED
@@ -353,7 +353,7 @@ module Fields
|
|
353
353
|
|
354
354
|
def clean(value)
|
355
355
|
case value
|
356
|
-
when true, 'true', '1' then true
|
356
|
+
when true, 'true', '1', 'on' then true
|
357
357
|
when false, 'false', '0' then false
|
358
358
|
else nil
|
359
359
|
end
|
@@ -393,13 +393,17 @@ module Fields
|
|
393
393
|
end
|
394
394
|
|
395
395
|
def valid_value?(value)
|
396
|
-
@choices.
|
397
|
-
if v.is_a?(Array)
|
398
|
-
|
396
|
+
@choices.each do |k, v|
|
397
|
+
if v.is_a?(Array)
|
398
|
+
# This is an optgroup, so look inside the group for options
|
399
|
+
v.each do |k2, v2|
|
400
|
+
return true if value == k2.to_s
|
401
|
+
end
|
399
402
|
else
|
400
|
-
value == k.to_s
|
403
|
+
return true if value == k.to_s
|
401
404
|
end
|
402
405
|
end
|
406
|
+
false
|
403
407
|
end
|
404
408
|
end
|
405
409
|
|
data/lib/bureaucrat/forms.rb
CHANGED
@@ -116,8 +116,8 @@ module Bureaucrat; module Forms
|
|
116
116
|
|
117
117
|
def initialize(data=nil, options={})
|
118
118
|
@is_bound = !data.nil?
|
119
|
-
@data =
|
120
|
-
|
119
|
+
@data = {}
|
120
|
+
data.each {|k, v| @data[k.to_sym] = @data[k] = v} if data
|
121
121
|
@files = options.fetch(:files, {})
|
122
122
|
@auto_id = options.fetch(:auto_id, 'id_%s')
|
123
123
|
@prefix = options[:prefix]
|
data/lib/bureaucrat/widgets.rb
CHANGED
@@ -133,7 +133,7 @@ module Widgets
|
|
133
133
|
end
|
134
134
|
|
135
135
|
def value_from_datahash(data, files, name)
|
136
|
-
|
136
|
+
data[name]
|
137
137
|
end
|
138
138
|
|
139
139
|
def self.id_for_label(id_)
|
@@ -250,17 +250,17 @@ module Widgets
|
|
250
250
|
end
|
251
251
|
|
252
252
|
class Textarea < Widget
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
253
|
+
def initialize(attrs=nil)
|
254
|
+
# The 'rows' and 'cols' attributes are required for HTML correctness.
|
255
|
+
@attrs = {:cols => '40', :rows => '10'}
|
256
|
+
@attrs.merge!(attrs) if attrs
|
257
|
+
end
|
258
258
|
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
259
|
+
def render(name, value, attrs=nil)
|
260
|
+
value ||= ''
|
261
|
+
final_attrs = build_attrs(attrs, :name => name)
|
262
|
+
mark_safe("<textarea#{flatatt(final_attrs)}>#{conditional_escape(value.to_s)}</textarea>")
|
263
|
+
end
|
264
264
|
end
|
265
265
|
|
266
266
|
# DateInput
|
@@ -275,7 +275,7 @@ module Widgets
|
|
275
275
|
|
276
276
|
def render(name, value, attrs=nil)
|
277
277
|
final_attrs = build_attrs(attrs, :type => 'checkbox', :name => name.to_s)
|
278
|
-
result =
|
278
|
+
result = @check_test.call(value) rescue false
|
279
279
|
final_attrs[:checked] = 'checked' if result
|
280
280
|
final_attrs[:value] = value.to_s unless
|
281
281
|
['', true, false, nil].include?(value)
|