rerails 2.3.5.1 → 2.3.5.2
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/CHANGELOG.rdoc +9 -1
- data/README.rdoc +17 -4
- data/lib/reaction_view/html5_forms.rb +163 -0
- data/lib/reaction_view.rb +1 -0
- metadata +3 -2
data/CHANGELOG.rdoc
CHANGED
@@ -1,9 +1,17 @@
|
|
1
|
+
=== 2.3.5.2 / 2010-01-02
|
2
|
+
|
3
|
+
* 1 major enhancement
|
4
|
+
|
5
|
+
* Add form helpers for HTML5 inputs of type search, tel, url, email, number,
|
6
|
+
range.
|
7
|
+
|
8
|
+
|
1
9
|
=== 2.3.5.1 / 2009-12-23
|
2
10
|
|
3
11
|
* 2 major enhancements
|
4
12
|
|
5
13
|
* Add Array#first and Array#last limit functionality to
|
6
14
|
ActiveRecord::Base.first and ActiveRecord::Base.last; optimize LIMIT SQL
|
7
|
-
for "first" and "last" in
|
15
|
+
for "first" and "last" in association collections and named scopes.
|
8
16
|
|
9
17
|
* Let label helpers accept blocks.
|
data/README.rdoc
CHANGED
@@ -14,6 +14,19 @@ Reinforcing the Rails with assorted patches.
|
|
14
14
|
<% end %>
|
15
15
|
|
16
16
|
|
17
|
+
* HTML5 form helpers.
|
18
|
+
|
19
|
+
<% form_tag "user_search" do %>
|
20
|
+
<%= search_field_tag "user_search", nil, :autosave => true %>
|
21
|
+
<% end %>
|
22
|
+
|
23
|
+
<% form_for @user do |f| %>
|
24
|
+
<%= f.email_field :email %>
|
25
|
+
<%= f.url_field :homepage %>
|
26
|
+
<%= f.phone_field :phone %>
|
27
|
+
<% end %>
|
28
|
+
|
29
|
+
|
17
30
|
=== ReactiveRecord
|
18
31
|
|
19
32
|
* <tt>Array#first</tt> and <tt>Array#last</tt> functionality and
|
@@ -44,16 +57,16 @@ As a plugin:
|
|
44
57
|
|
45
58
|
Setup (to run tests):
|
46
59
|
|
47
|
-
[sudo] gem install bundler
|
48
|
-
gem bundle
|
49
|
-
bin/rake
|
60
|
+
% [sudo] gem install bundler
|
61
|
+
% gem bundle
|
62
|
+
% bin/rake
|
50
63
|
|
51
64
|
|
52
65
|
== License
|
53
66
|
|
54
67
|
Released under the same license as Ruby on Rails (The MIT License).
|
55
68
|
|
56
|
-
(c) 2009 Stephen Celis, stephen@stephencelis.com.
|
69
|
+
(c) 2009-2010 Stephen Celis, stephen@stephencelis.com.
|
57
70
|
|
58
71
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
59
72
|
of this software and associated documentation files (the "Software"), to deal
|
@@ -0,0 +1,163 @@
|
|
1
|
+
module ActionView #:nodoc:
|
2
|
+
module Helpers #:nodoc:
|
3
|
+
module FormTagHelper
|
4
|
+
# Creates a search field.
|
5
|
+
#
|
6
|
+
# ==== Options
|
7
|
+
# * <tt>:autosave</tt> - If set to true, will generate a domain-based
|
8
|
+
# namespace (e.g., for blog.rubyonrails.com, "com.rubyonrails.blog").
|
9
|
+
# Also accepts string values.
|
10
|
+
# * <tt>:results</tt> - The number of previous searches displayed in the
|
11
|
+
# drop-down. Default: 10, with <tt>:autosave</tt>.
|
12
|
+
# * Otherwise accepts the same options as text_field_tag.
|
13
|
+
#
|
14
|
+
# ==== Examples
|
15
|
+
# search_field_tag 'query'
|
16
|
+
# # => <input id="query" name="query" type="search" />
|
17
|
+
#
|
18
|
+
# search_field_tag 'query', nil, :autosave => true
|
19
|
+
# # => <input id="query" name="query" type="search" autosave="tld.yourdomain" results="10">
|
20
|
+
#
|
21
|
+
# search_field_tag 'site_search', nil, :autosave => 'com.rubyonrails', :results => 5
|
22
|
+
# # => <input id="site_search" name="site_search" type="search" autosave="com.rubyonrails" results="5">
|
23
|
+
def search_field_tag(name, value = nil, options = {})
|
24
|
+
options = options.stringify_keys
|
25
|
+
|
26
|
+
if options["autosave"]
|
27
|
+
if options["autosave"] == true
|
28
|
+
options["autosave"] = request.host.split(".").reverse.join(".")
|
29
|
+
end
|
30
|
+
options["results"] ||= 10
|
31
|
+
end
|
32
|
+
|
33
|
+
if options["onsearch"]
|
34
|
+
options["incremental"] = true unless options.has_key?("incremental")
|
35
|
+
end
|
36
|
+
|
37
|
+
text_field_tag(name, value, options.update("type" => "search"))
|
38
|
+
end
|
39
|
+
|
40
|
+
# Creates a text field of type "tel".
|
41
|
+
#
|
42
|
+
# ==== Options
|
43
|
+
# * Accepts the same options as text_field_tag.
|
44
|
+
def telephone_field_tag(name, value = nil, options = {})
|
45
|
+
text_field_tag(name, value, options.stringify_keys.update("type" => "tel"))
|
46
|
+
end
|
47
|
+
alias phone_field_tag telephone_field_tag
|
48
|
+
|
49
|
+
# Creates a text field of type "url".
|
50
|
+
#
|
51
|
+
# ==== Options
|
52
|
+
# * Accepts the same options as text_field_tag.
|
53
|
+
def url_field_tag(name, value = nil, options = {})
|
54
|
+
text_field_tag(name, value, options.stringify_keys.update("type" => "url"))
|
55
|
+
end
|
56
|
+
|
57
|
+
# Creates a text field of type "email".
|
58
|
+
#
|
59
|
+
# ==== Options
|
60
|
+
# * Accepts the same options as text_field_tag.
|
61
|
+
def email_field_tag(name, value = nil, options = {})
|
62
|
+
text_field_tag(name, value, options.stringify_keys.update("type" => "email"))
|
63
|
+
end
|
64
|
+
|
65
|
+
# Creates a number field.
|
66
|
+
#
|
67
|
+
# ==== Options
|
68
|
+
# * <tt>:min</tt> - The minimum acceptable value.
|
69
|
+
# * <tt>:max</tt> - The maximum acceptable value.
|
70
|
+
# * <tt>:in</tt> - A range specifying the <tt>:min</tt> and
|
71
|
+
# <tt>:max</tt> values.
|
72
|
+
# * <tt>:step</tt> - The acceptable value granularity.
|
73
|
+
# * Otherwise accepts the same options as text_field_tag.
|
74
|
+
#
|
75
|
+
# ==== Examples
|
76
|
+
# number_field_tag 'quantity', nil, :in => 1...10
|
77
|
+
# => <input id="quantity" name="quantity" min="1" max="9" />
|
78
|
+
def number_field_tag(name, value = nil, options = {})
|
79
|
+
options = options.stringify_keys
|
80
|
+
options["type"] ||= "number"
|
81
|
+
if range = options.delete("in") || options.delete("within")
|
82
|
+
options.update("min" => range.min, "max" => range.max)
|
83
|
+
end
|
84
|
+
text_field_tag(name, value, options)
|
85
|
+
end
|
86
|
+
|
87
|
+
# Creates a range form element.
|
88
|
+
#
|
89
|
+
# ==== Options
|
90
|
+
# * Accepts the same options as number_field_tag.
|
91
|
+
def range_field_tag(name, value = nil, options = {})
|
92
|
+
number_field_tag(name, value, options.stringify_keys.update("type" => "range"))
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
module FormHelper #:nodoc:
|
97
|
+
def search_field(object_name, method, options = {})
|
98
|
+
options = options.stringify_keys
|
99
|
+
|
100
|
+
if options["autosave"]
|
101
|
+
if options["autosave"] == true
|
102
|
+
options["autosave"] = request.host.split(".").reverse.join(".")
|
103
|
+
end
|
104
|
+
options["results"] ||= 10
|
105
|
+
end
|
106
|
+
|
107
|
+
if options["onsearch"]
|
108
|
+
options["incremental"] = true unless options.has_key?("incremental")
|
109
|
+
end
|
110
|
+
|
111
|
+
InstanceTag.new(object_name, method, self, options.delete(:object)).to_input_field_tag("search", options)
|
112
|
+
end
|
113
|
+
|
114
|
+
def telephone_field(object_name, method, options = {})
|
115
|
+
InstanceTag.new(object_name, method, self, options.delete(:object)).to_input_field_tag("tel", options)
|
116
|
+
end
|
117
|
+
alias phone_field telephone_field
|
118
|
+
|
119
|
+
def url_field(object_name, method, options = {})
|
120
|
+
InstanceTag.new(object_name, method, self, options.delete(:object)).to_input_field_tag("url", options)
|
121
|
+
end
|
122
|
+
|
123
|
+
def email_field(object_name, method, options = {})
|
124
|
+
InstanceTag.new(object_name, method, self, options.delete(:object)).to_input_field_tag("email", options)
|
125
|
+
end
|
126
|
+
|
127
|
+
def number_field(object_name, method, options = {})
|
128
|
+
options = options.stringify_keys
|
129
|
+
options["type"] ||= "number"
|
130
|
+
if range = options.delete("in") || options.delete("within")
|
131
|
+
options.update("min" => range.min, "max" => range.max)
|
132
|
+
end
|
133
|
+
InstanceTag.new(object_name, method, self, options.delete(:object)).to_input_field_tag("number", options)
|
134
|
+
end
|
135
|
+
|
136
|
+
def range_field(object_name, method, options = {})
|
137
|
+
options = options.stringify_keys
|
138
|
+
options["type"] ||= "number"
|
139
|
+
if range = options.delete("in") || options.delete("within")
|
140
|
+
options.update("min" => range.min, "max" => range.max)
|
141
|
+
end
|
142
|
+
InstanceTag.new(object_name, method, self, options.delete(:object)).to_input_field_tag("range", options)
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
class FormBuilder #:nodoc:
|
147
|
+
%w(search_field telephone_field url_field email_field number_field range_field).each do |selector|
|
148
|
+
src = <<-end_src
|
149
|
+
def #{selector}(method, options = {})
|
150
|
+
@template.send(
|
151
|
+
#{selector.inspect},
|
152
|
+
@object_name,
|
153
|
+
method,
|
154
|
+
objectify_options(options))
|
155
|
+
end
|
156
|
+
end_src
|
157
|
+
class_eval src, __FILE__, __LINE__
|
158
|
+
end
|
159
|
+
|
160
|
+
alias phone_field telephone_field
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
data/lib/reaction_view.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rerails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.3.5.
|
4
|
+
version: 2.3.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen Celis
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-01-02 00:00:00 -06:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -35,6 +35,7 @@ files:
|
|
35
35
|
- CHANGELOG.rdoc
|
36
36
|
- README.rdoc
|
37
37
|
- lib/reaction_view/block_labels.rb
|
38
|
+
- lib/reaction_view/html5_forms.rb
|
38
39
|
- lib/reaction_view.rb
|
39
40
|
- lib/reactive_record/first_last_limits.rb
|
40
41
|
- lib/reactive_record.rb
|