formula 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/formula.rb +45 -39
- metadata +2 -2
data/lib/formula.rb
CHANGED
@@ -1,12 +1,18 @@
|
|
1
1
|
module Formula
|
2
2
|
|
3
|
+
|
3
4
|
require 'formula/railtie' if defined?(Rails)
|
4
5
|
|
6
|
+
|
7
|
+
# Default class assigned to block (<div class="block">...</div>).
|
8
|
+
mattr_accessor :block_class
|
9
|
+
@@block_class = 'block'
|
10
|
+
|
5
11
|
# Default class assigned to input (<div class="input">...</div>).
|
6
12
|
mattr_accessor :input_class
|
7
13
|
@@input_class = 'input'
|
8
14
|
|
9
|
-
# Default class assigned to
|
15
|
+
# Default class assigned to association (<div class="association">...</div>).
|
10
16
|
mattr_accessor :association_class
|
11
17
|
@@association_class = 'association'
|
12
18
|
|
@@ -18,11 +24,15 @@ module Formula
|
|
18
24
|
mattr_accessor :hint_class
|
19
25
|
@@hint_class = 'hint'
|
20
26
|
|
27
|
+
# Default tag assigned to block (<div class="input">...</div>).
|
28
|
+
mattr_accessor :block_tag
|
29
|
+
@@block_tag = :div
|
30
|
+
|
21
31
|
# Default tag assigned to input (<div class="input">...</div>).
|
22
32
|
mattr_accessor :input_tag
|
23
33
|
@@input_tag = :div
|
24
34
|
|
25
|
-
# Default tag assigned to
|
35
|
+
# Default tag assigned to association (<div class="association">...</div>).
|
26
36
|
mattr_accessor :association_tag
|
27
37
|
@@association_tag = :div
|
28
38
|
|
@@ -34,17 +44,6 @@ module Formula
|
|
34
44
|
mattr_accessor :hint_tag
|
35
45
|
@@hint_tag = :div
|
36
46
|
|
37
|
-
# Default size used on inputs (<input ... size="50" />).
|
38
|
-
mattr_accessor :default_input_size
|
39
|
-
@@default_input_size = 50
|
40
|
-
|
41
|
-
# Default cols used on textarea (<textarea ... cols="50" />).
|
42
|
-
mattr_accessor :default_textarea_cols
|
43
|
-
@@default_textarea_cols = 50
|
44
|
-
|
45
|
-
# Default cols used on textarea (<textarea ... rows="5" />).
|
46
|
-
mattr_accessor :default_textarea_rows
|
47
|
-
@@default_textarea_rows = 5
|
48
47
|
|
49
48
|
class FormulaFormBuilder < ActionView::Helpers::FormBuilder
|
50
49
|
|
@@ -79,12 +78,12 @@ module Formula
|
|
79
78
|
|
80
79
|
components << self.label(method, options[:label])
|
81
80
|
|
82
|
-
components << @template.
|
81
|
+
components << @template.capture(&block)
|
83
82
|
|
84
83
|
components << @template.content_tag(::Formula.hint_tag, options[:hint], :class => ::Formula.hint_class) if options[:hint]
|
85
84
|
components << @template.content_tag(::Formula.error_tag, options[:error], :class => ::Formula.error_class) if options[:error]
|
86
85
|
|
87
|
-
@template.content_tag(
|
86
|
+
@template.content_tag(::Formula.block_tag, options[:container]) do
|
88
87
|
components.join
|
89
88
|
end
|
90
89
|
end
|
@@ -109,26 +108,23 @@ module Formula
|
|
109
108
|
#
|
110
109
|
# Equivalent:
|
111
110
|
#
|
112
|
-
# <div>
|
113
|
-
#
|
114
|
-
#
|
115
|
-
# <%= f.text_field(:name)
|
116
|
-
# </div>
|
111
|
+
# <div class="block">
|
112
|
+
# <%= f.label(:name)
|
113
|
+
# <div class="input string"><%= f.text_field(:name)</div>
|
117
114
|
# </div>
|
118
|
-
# <div>
|
119
|
-
#
|
120
|
-
#
|
121
|
-
# <%= f.email_field(:email)
|
115
|
+
# <div class="block">
|
116
|
+
# <%= f.label(:email)
|
117
|
+
# <div class="input string"><%= f.email_field(:email)</div>
|
122
118
|
# </div>
|
123
119
|
# </div>
|
124
|
-
# <div class="half">
|
120
|
+
# <div class="block half">
|
125
121
|
# <div class="input">
|
126
122
|
# <%= f.label(:password_a, "Password")
|
127
123
|
# <%= f.password_field(:password_a)
|
128
124
|
# <div class="hint">It's a secret!</div>
|
129
125
|
# </div>
|
130
126
|
# </div>
|
131
|
-
# <div class="half">
|
127
|
+
# <div class="block half">
|
132
128
|
# <div class="input">
|
133
129
|
# <%= f.label(:password_b, "Password")
|
134
130
|
# <%= f.password_field(:password_b)
|
@@ -138,22 +134,25 @@ module Formula
|
|
138
134
|
|
139
135
|
def input(method, options = {})
|
140
136
|
options[:as] ||= as(method)
|
137
|
+
options[:input] ||= {}
|
141
138
|
|
142
139
|
self.block(method, options) do
|
143
|
-
|
144
|
-
|
140
|
+
@template.content_tag(::Formula.input_tag, :class => [::Formula.input_class, options[:as]]) do
|
141
|
+
case options[:as]
|
142
|
+
when :text then text_area(method, options[:input])
|
145
143
|
|
146
|
-
|
147
|
-
|
144
|
+
when :string then text_field(method, options[:input])
|
145
|
+
when :password then password_field(method, options[:input])
|
148
146
|
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
147
|
+
when :url then url_field(method, options[:input])
|
148
|
+
when :email then email_field(method, options[:input])
|
149
|
+
when :phone then phone_field(method, options[:input])
|
150
|
+
when :number then number_field(method, options[:input])
|
153
151
|
|
154
|
-
|
155
|
-
|
156
|
-
|
152
|
+
when :date then date_select(method, options[:input])
|
153
|
+
when :time then time_select(method, options[:input])
|
154
|
+
when :datetime then datetime_select(method, options[:input])
|
155
|
+
end
|
157
156
|
end
|
158
157
|
end
|
159
158
|
end
|
@@ -177,14 +176,21 @@ module Formula
|
|
177
176
|
# <div>
|
178
177
|
# <div class="association">
|
179
178
|
# <%= f.label(:category_id)
|
180
|
-
#
|
179
|
+
# <div class="association"><%= f.collection_select(:category_id, Category.all, :id, :name) %></div>
|
181
180
|
# <div class="hint">What do you do?</div>
|
182
181
|
# </div>
|
183
182
|
# </div>
|
184
183
|
|
185
184
|
def association(method, collection, value, text, options = {})
|
185
|
+
options[:as] ||= :select
|
186
|
+
options[:association] ||= {}
|
187
|
+
|
186
188
|
self.block(method, options) do
|
187
|
-
|
189
|
+
@template.content_tag(::Formula.association_tag, :class => [::Formula.association_class, options[:as]]) do
|
190
|
+
case options[:as]
|
191
|
+
when :select then collection_select(method, collection, value, text, options[:association])
|
192
|
+
end
|
193
|
+
end
|
188
194
|
end
|
189
195
|
end
|
190
196
|
|