storefront 0.2.1 → 0.2.7
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/Rakefile +2 -2
- data/lib/storefront.rb +21 -3
- data/lib/storefront/configuration.rb +154 -0
- data/lib/storefront/dashboard.rb +8 -7
- data/lib/storefront/form.rb +70 -53
- data/lib/storefront/form/base.rb +50 -0
- data/lib/storefront/form/builder.rb +124 -0
- data/lib/storefront/form/errors.rb +20 -46
- data/lib/storefront/form/field.rb +102 -0
- data/lib/storefront/form/fieldset.rb +44 -0
- data/lib/storefront/form/hint.rb +34 -0
- data/lib/storefront/form/input.rb +191 -0
- data/lib/storefront/form/inputs/checkbox.rb +12 -0
- data/lib/storefront/form/inputs/date.rb +16 -0
- data/lib/storefront/form/inputs/file.rb +12 -0
- data/lib/storefront/form/inputs/hidden.rb +11 -0
- data/lib/storefront/form/inputs/radio.rb +11 -0
- data/lib/storefront/form/inputs/range.rb +15 -0
- data/lib/storefront/form/inputs/select.rb +68 -0
- data/lib/storefront/form/inputs/string.rb +89 -0
- data/lib/storefront/form/inputs/submit.rb +24 -0
- data/lib/storefront/form/inputs/textarea.rb +19 -0
- data/lib/storefront/form/inputs/value.rb +16 -0
- data/lib/storefront/form/label.rb +35 -0
- data/lib/storefront/helpers/attribute_helper.rb +29 -8
- data/lib/storefront/helpers/body_helper.rb +1 -1
- data/lib/storefront/helpers/cache_helper.rb +2 -2
- data/lib/storefront/helpers/component_helper.rb +34 -19
- data/lib/storefront/helpers/dashboard_helper.rb +9 -17
- data/lib/storefront/helpers/definition_list_helper.rb +82 -14
- data/lib/storefront/helpers/form_helper.rb +7 -2
- data/lib/storefront/helpers/head_helper.rb +2 -2
- data/lib/storefront/helpers/image_helper.rb +1 -25
- data/lib/storefront/helpers/list_helper.rb +120 -32
- data/lib/storefront/helpers/locale_helper.rb +98 -28
- data/lib/storefront/helpers/page_helper.rb +78 -60
- data/lib/storefront/helpers/request_helper.rb +3 -0
- data/lib/storefront/helpers/table_helper.rb +1 -1
- data/lib/storefront/helpers/template_helper.rb +11 -0
- data/lib/storefront/helpers/time_helper.rb +2 -2
- data/lib/storefront/helpers/widget_helper.rb +153 -2
- data/lib/storefront/model_helper.rb +17 -0
- data/lib/storefront/proxies/attribute_proxy.rb +150 -0
- data/lib/storefront/proxies/model_proxy.rb +249 -0
- data/lib/storefront/railtie.rb +4 -2
- data/lib/storefront/table.rb +7 -0
- data/test/form_helper_test.rb +1 -1
- metadata +25 -27
- data/init.rb +0 -1
- data/lib/storefront/form/elements.rb +0 -101
- data/lib/storefront/form/fields.rb +0 -420
- data/lib/storefront/form/hints.rb +0 -18
- data/lib/storefront/form/inputs.rb +0 -258
- data/lib/storefront/form/labels.rb +0 -81
- data/lib/storefront/form/model.rb +0 -84
- data/lib/storefront/microdata/address.rb +0 -7
- data/lib/storefront/microdata/event.rb +0 -13
- data/lib/storefront/microdata/geo.rb +0 -7
- data/lib/storefront/microdata/organization.rb +0 -7
- data/lib/storefront/microdata/person.rb +0 -7
- data/lib/storefront/microformat/event.rb +0 -7
- data/lib/storefront/microformat/person.rb +0 -7
- data/lib/storefront/models/container.rb +0 -0
- data/lib/storefront/models/element.rb +0 -15
- data/lib/storefront/models/form.rb +0 -0
- data/lib/storefront/models/form_element.rb +0 -0
- data/lib/storefront/models/link.rb +0 -0
- data/lib/storefront/models/list.rb +0 -0
- data/lib/storefront/models/list_element.rb +0 -0
- data/lib/storefront/models/table.rb +0 -0
- data/lib/storefront/models/term.rb +0 -0
- data/lib/storefront/models/term_list.rb +0 -0
- data/lib/storefront/models/validation.rb +0 -0
@@ -1,81 +0,0 @@
|
|
1
|
-
module Storefront
|
2
|
-
class Form
|
3
|
-
module Labels
|
4
|
-
def label_for(key, options = {})
|
5
|
-
attributes = options[:label_attributes]
|
6
|
-
text = attributes.delete(:value)
|
7
|
-
result = template.capture_haml do
|
8
|
-
template.haml_tag :label, options[:label_attributes] do
|
9
|
-
template.haml_tag :span, text
|
10
|
-
if options[:required] == true
|
11
|
-
template.haml_tag :abbr, "*", :title => "required"
|
12
|
-
else
|
13
|
-
template.haml_tag :abbr, "", :title => "optional"
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
result
|
18
|
-
end
|
19
|
-
|
20
|
-
def label_method
|
21
|
-
:titleize
|
22
|
-
end
|
23
|
-
|
24
|
-
def humanized_attribute_name(method) #:nodoc:
|
25
|
-
if @object && @object.class.respond_to?(:human_attribute_name)
|
26
|
-
humanized_name = @object.class.human_attribute_name(method.to_s)
|
27
|
-
if humanized_name == method.to_s.send(:humanize)
|
28
|
-
method.to_s.send(label_method)
|
29
|
-
else
|
30
|
-
humanized_name
|
31
|
-
end
|
32
|
-
else
|
33
|
-
method.to_s.send(label_method)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def localized_string(key, value, type, options = {}) #:nodoc:
|
38
|
-
key = value if value.is_a?(::Symbol)
|
39
|
-
|
40
|
-
if value.is_a?(::String)
|
41
|
-
value.html_safe
|
42
|
-
else
|
43
|
-
use_i18n = true
|
44
|
-
|
45
|
-
if use_i18n
|
46
|
-
model_name, nested_model_name = normalize_model_name(self.model_name.underscore)
|
47
|
-
action_name = template.params[:action].to_s rescue ''
|
48
|
-
attribute_name = key.to_s
|
49
|
-
|
50
|
-
defaults = ::Formtastic::I18n::SCOPES.reject do |i18n_scope|
|
51
|
-
nested_model_name.nil? && i18n_scope.match(/nested_model/)
|
52
|
-
end.collect do |i18n_scope|
|
53
|
-
i18n_path = i18n_scope.dup
|
54
|
-
i18n_path.gsub!('%{action}', action_name)
|
55
|
-
i18n_path.gsub!('%{model}', model_name)
|
56
|
-
i18n_path.gsub!('%{nested_model}', nested_model_name) unless nested_model_name.nil?
|
57
|
-
i18n_path.gsub!('%{attribute}', attribute_name)
|
58
|
-
i18n_path.gsub!('..', '.')
|
59
|
-
i18n_path.to_sym
|
60
|
-
end
|
61
|
-
defaults << ''
|
62
|
-
|
63
|
-
defaults.uniq!
|
64
|
-
|
65
|
-
default_key = defaults.shift
|
66
|
-
i18n_value = ::Formtastic::I18n.t(default_key,
|
67
|
-
options.merge(:default => defaults, :scope => type.to_s.pluralize.to_sym))
|
68
|
-
if i18n_value.blank? && type == :label
|
69
|
-
# This is effectively what Rails label helper does for i18n lookup
|
70
|
-
options[:scope] = [:helpers, type]
|
71
|
-
options[:default] = defaults
|
72
|
-
i18n_value = ::I18n.t(default_key, options)
|
73
|
-
end
|
74
|
-
|
75
|
-
i18n_value.blank? ? nil : i18n_value
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
@@ -1,84 +0,0 @@
|
|
1
|
-
module Storefront
|
2
|
-
class Form
|
3
|
-
module Model
|
4
|
-
def model_name
|
5
|
-
@object.present? ? @object.class.name : @object_name.to_s.classify
|
6
|
-
end
|
7
|
-
|
8
|
-
def normalize_model_name(name)
|
9
|
-
if name =~ /(.+)\[(.+)\]/
|
10
|
-
[$1, $2]
|
11
|
-
else
|
12
|
-
[name]
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
# If an association method is passed in (f.input :author) try to find the
|
17
|
-
# reflection object.
|
18
|
-
#
|
19
|
-
def reflection_for(method) #:nodoc:
|
20
|
-
@object.class.reflect_on_association(method) if @object.class.respond_to?(:reflect_on_association)
|
21
|
-
end
|
22
|
-
|
23
|
-
# Get a column object for a specified attribute method - if possible.
|
24
|
-
#
|
25
|
-
def column_for(method) #:nodoc:
|
26
|
-
@object.column_for_attribute(method) if @object.respond_to?(:column_for_attribute)
|
27
|
-
end
|
28
|
-
|
29
|
-
def validations_for(method, mode = :active)
|
30
|
-
# ActiveModel?
|
31
|
-
validations = if @object && @object.class.respond_to?(:validators_on)
|
32
|
-
@object.class.validators_on(method)
|
33
|
-
else
|
34
|
-
# ValidationReflection plugin?
|
35
|
-
if @object && @object.class.respond_to?(:reflect_on_validations_for)
|
36
|
-
@object.class.reflect_on_validations_for(method)
|
37
|
-
else
|
38
|
-
[]
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
validations = validations.select do |validation|
|
43
|
-
(validation.options.present? ? options_require_validation?(validation.options) : true)
|
44
|
-
end unless mode == :all
|
45
|
-
|
46
|
-
return validations
|
47
|
-
end
|
48
|
-
|
49
|
-
def sanitized_object_name #:nodoc:
|
50
|
-
@sanitized_object_name ||= @object_name.to_s.gsub(/\]\[|[^-a-zA-Z0-9:.]/, "_").sub(/_$/, "")
|
51
|
-
end
|
52
|
-
|
53
|
-
def get_maxlength_for(method)
|
54
|
-
validation = validations_for(method).find do |validation|
|
55
|
-
(validation.respond_to?(:macro) && validation.macro == :validates_length_of) || # Rails 2 validation
|
56
|
-
(validation.respond_to?(:kind) && validation.kind == :length) # Rails 3 validator
|
57
|
-
end
|
58
|
-
|
59
|
-
if validation
|
60
|
-
validation.options[:maximum] || (validation.options[:within].present? ? validation.options[:within].max : nil)
|
61
|
-
else
|
62
|
-
nil
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
def default_string_options(method, type) #:nodoc:
|
67
|
-
validation_max_limit = get_maxlength_for(method)
|
68
|
-
column = column_for(method)
|
69
|
-
|
70
|
-
if type == :text
|
71
|
-
{ :rows => default_text_area_height,
|
72
|
-
:cols => default_text_area_width }
|
73
|
-
elsif type == :numeric || column.nil? || !column.respond_to?(:limit) || column.limit.nil?
|
74
|
-
{ :maxlength => validation_max_limit,
|
75
|
-
:size => default_text_field_size }
|
76
|
-
else
|
77
|
-
{ :maxlength => validation_max_limit || column.limit,
|
78
|
-
:size => default_text_field_size }
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
File without changes
|
@@ -1,15 +0,0 @@
|
|
1
|
-
module Storefront
|
2
|
-
class Element
|
3
|
-
attr_accessor :label, :name, :id, :value, :url, :validations, :hint, :tip, :required, :disabled
|
4
|
-
|
5
|
-
def initialize(attributes = {})
|
6
|
-
attributes.each do |key, value|
|
7
|
-
send("#{key}=", value)
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
def to_json
|
12
|
-
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|