casey_jones 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
@@ -4,9 +4,98 @@ class JQueryValidatingFormBuilder < ActionView::Helpers::FormBuilder
|
|
4
4
|
super(object_name, object, template, options, proc)
|
5
5
|
end
|
6
6
|
|
7
|
+
# Renders form fields for the named arguments, complete with divs for styling
|
8
|
+
# and labels for each field.
|
9
|
+
#
|
10
|
+
# = f.form_fields :name, :address
|
11
|
+
#
|
12
|
+
# Will output:
|
13
|
+
# <div class="field">
|
14
|
+
# <div class="fieldName">
|
15
|
+
# <label>Field Name</label>
|
16
|
+
# </div>
|
17
|
+
# <div class="fieldValue">
|
18
|
+
# <input type=... />
|
19
|
+
# </div>
|
20
|
+
# </div>
|
21
|
+
#
|
22
|
+
#
|
23
|
+
# = f.form_fields({"Edit your profile" => [:name, :address]})
|
24
|
+
#
|
25
|
+
# Will output:
|
26
|
+
# <div class="fieldGroup">
|
27
|
+
# <div class="fieldGroupTitle">Edit your profile</div>
|
28
|
+
# <div class="field">
|
29
|
+
# <div class="fieldName">
|
30
|
+
# <label>Field Name</label>
|
31
|
+
# </div>
|
32
|
+
# <div class="fieldValue">
|
33
|
+
# <input type=... />
|
34
|
+
# </div>
|
35
|
+
# </div>
|
36
|
+
# </div>
|
37
|
+
#
|
38
|
+
#
|
39
|
+
# = f.form_fields({"Edit your profile" => [{:name=>{:label=>"What is your name", :type=>:text_area}}, :address]})
|
40
|
+
#
|
41
|
+
# Will output:
|
42
|
+
# <div class="fieldGroup">
|
43
|
+
# <div class="fieldGroupTitle">Edit your profile</div>
|
44
|
+
# <div class="field">
|
45
|
+
# <div class="fieldName">
|
46
|
+
# <label>What is your name</label>
|
47
|
+
# </div>
|
48
|
+
# <div class="fieldValue">
|
49
|
+
# <textarea type=... />
|
50
|
+
# </div>
|
51
|
+
# </div>
|
52
|
+
# </div>
|
53
|
+
#
|
54
|
+
# = f.form_fields({"Edit your profile" => :profile_attributes})
|
55
|
+
#
|
56
|
+
# Will output:
|
57
|
+
# <div class="fieldGroup">
|
58
|
+
# <div class="fieldGroupTitle">Edit your profile</div>
|
59
|
+
# <div class="field">
|
60
|
+
# <div class="fieldName">
|
61
|
+
# <label>What is your name</label>
|
62
|
+
# </div>
|
63
|
+
# <div class="fieldValue">
|
64
|
+
# <textarea type=... />
|
65
|
+
# </div>
|
66
|
+
# </div>
|
67
|
+
# </div>
|
68
|
+
#
|
69
|
+
#
|
70
|
+
#
|
71
|
+
#
|
72
|
+
def form_fields(*args)
|
73
|
+
concat capture do
|
74
|
+
args.each do |arg|
|
75
|
+
if arg.is_a? Hash
|
76
|
+
arg.each do |key, value|
|
77
|
+
|
78
|
+
|
79
|
+
end
|
80
|
+
elsif arg.is_a? Array
|
81
|
+
|
82
|
+
else
|
83
|
+
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
7
89
|
attr_accessor :form_validations
|
8
90
|
cattr_accessor :validation_methods
|
9
91
|
|
92
|
+
def div_tag(contents, html_options={})
|
93
|
+
capture do
|
94
|
+
content_tag('div', contents, html_options)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
|
10
99
|
#Adds error message directly inline to a form label
|
11
100
|
#Accepts all the options normall passed to form.label as well as:
|
12
101
|
# :hide_errors - true if you don't want errors displayed on this label
|
@@ -15,7 +104,17 @@ class JQueryValidatingFormBuilder < ActionView::Helpers::FormBuilder
|
|
15
104
|
#Check to see if text for this label has been supplied and humanize the field name if not.
|
16
105
|
text = text || method.to_s.humanize
|
17
106
|
#Get a reference to the model object
|
18
|
-
|
107
|
+
object_name = @object_name.to_s
|
108
|
+
if object_name.include? '['
|
109
|
+
ivar_name = '@' + @object_name[0..object_name.index('[')-1]
|
110
|
+
object = @template.instance_variable_get(ivar_name)
|
111
|
+
|
112
|
+
object_name.scan(/\[([\w_-]+)\]/) do |m|
|
113
|
+
object = object.send(m[0].gsub(/_attributes/, ''))
|
114
|
+
end
|
115
|
+
else
|
116
|
+
object = @template.instance_variable_get("@#{@object_name}")
|
117
|
+
end
|
19
118
|
|
20
119
|
#Make sure we have an object and we're not told to hide errors for this label
|
21
120
|
unless object.nil? || options[:hide_errors]
|
@@ -104,10 +203,13 @@ class JQueryValidatingFormBuilder < ActionView::Helpers::FormBuilder
|
|
104
203
|
puts "equal_to_validator #{validation.inspect}"
|
105
204
|
options[:equalTo] = "##{validation.other}"
|
106
205
|
return options
|
206
|
+
},
|
207
|
+
|
208
|
+
:phone_validator => lambda{|validation, options|
|
209
|
+
options.add_class('phoneUS')
|
210
|
+
return options
|
107
211
|
}
|
108
212
|
}
|
109
|
-
|
110
|
-
|
111
213
|
end
|
112
214
|
|
113
215
|
module OptionsAddClass
|
@@ -0,0 +1,7 @@
|
|
1
|
+
class PhoneValidator < ActiveModel::EachValidator
|
2
|
+
def validate_each(record,attribute,value)
|
3
|
+
r= value.strip.empty? || value.gsub(/\D/, '').length.in?([9,10])
|
4
|
+
record.errors[attribute] << (options[:message] || "must have 9 or 10 numeric digits") unless r
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'casey_jones/validation/password_validator'
|
2
2
|
require 'casey_jones/validation/equal_to_validator'
|
3
|
+
require 'casey_jones/validation/phone_validator'
|
3
4
|
require 'casey_jones/validation/j_query_validator'
|
4
5
|
require 'casey_jones/validation/sitemap_resource_validator'
|
5
6
|
require 'casey_jones/validation/j_query_validating_form_builder'
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 1
|
9
|
+
version: 0.1.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Tyler Gannon
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-09-
|
17
|
+
date: 2010-09-16 00:00:00 -07:00
|
18
18
|
default_executable:
|
19
19
|
dependencies: []
|
20
20
|
|
@@ -49,6 +49,7 @@ files:
|
|
49
49
|
- lib/casey_jones/validation/j_query_validating_form_builder.rb
|
50
50
|
- lib/casey_jones/validation/j_query_validator.rb
|
51
51
|
- lib/casey_jones/validation/password_validator.rb
|
52
|
+
- lib/casey_jones/validation/phone_validator.rb
|
52
53
|
- lib/casey_jones/validation/sitemap_parents_validator.rb
|
53
54
|
- lib/casey_jones/validation/sitemap_resource_validator.rb
|
54
55
|
- lib/casey_jones/validation/validation.rb
|