jquids 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/.rspec +2 -0
- data/MIT-LICENSE +20 -0
- data/README.md +213 -0
- data/Rakefile +44 -0
- data/init.rb +1 -0
- data/jquids.gemspec +17 -0
- data/lib/jquids.rb +9 -0
- data/lib/jquids/constants/formats.rb +74 -0
- data/lib/jquids/constants/jq_versions.rb +3 -0
- data/lib/jquids/constants/styles.rb +29 -0
- data/lib/jquids/constants/timepicker_tags.rb +3 -0
- data/lib/jquids/constants/ui_versions.rb +3 -0
- data/lib/jquids/constants/version.rb +3 -0
- data/lib/jquids/errors/not_a_known_format.rb +8 -0
- data/lib/jquids/errors/not_a_known_style.rb +2 -0
- data/lib/jquids/form_helpers.rb +70 -0
- data/lib/jquids/includes_helper.rb +146 -0
- data/lib/jquids/jquids.rb +126 -0
- data/spec/jquids/form_helpers_spec.rb +343 -0
- data/spec/jquids/includes_helper_spec.rb +649 -0
- data/spec/jquids/jquids_spec.rb +441 -0
- data/spec/spec.opts +2 -0
- data/spec/spec_helper.rb +23 -0
- metadata +90 -0
data/.gitignore
ADDED
data/.rspec
ADDED
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (C) 2011 by Tim Harper and Nicholas LaMuro
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
5
|
+
in the Software without restriction, including without limitation the rights
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
8
|
+
furnished to do so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
11
|
+
all copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
THE SOFTWARE.
|
20
|
+
|
data/README.md
ADDED
@@ -0,0 +1,213 @@
|
|
1
|
+
Jquids
|
2
|
+
======
|
3
|
+
|
4
|
+
This is a rewrite of Tim Harper's "Calendar Date Select" gem
|
5
|
+
(https://github.com/timcharper/calendar_date_select) using the jQuery UI date
|
6
|
+
picker. This project is still in development and still far from working.
|
7
|
+
|
8
|
+
The projects intent is to simulate the ease of use of the original while:
|
9
|
+
|
10
|
+
- Updating the code to work with Rails 3
|
11
|
+
- Using the hosted jQuery UI infastructure to avoid local dependencies
|
12
|
+
|
13
|
+
|
14
|
+
Jquids stands for *JQ*uery *UI* *D*ate *S*elect
|
15
|
+
|
16
|
+
|
17
|
+
Usage
|
18
|
+
-----
|
19
|
+
|
20
|
+
Add the following some where in your page (preferablly in the head of your
|
21
|
+
layout file):
|
22
|
+
|
23
|
+
<%= jquids_includes %>
|
24
|
+
|
25
|
+
Change a field to so it uses the `jquids_tag`:
|
26
|
+
|
27
|
+
<%= jquids_tag "some_date" %>
|
28
|
+
|
29
|
+
and you should be good to go!
|
30
|
+
|
31
|
+
|
32
|
+
Customization
|
33
|
+
-------------
|
34
|
+
|
35
|
+
CalendarDateSelect allow for the use of many different formats and css styles,
|
36
|
+
and Jquids was made to allow for that same kind of flexibility, with
|
37
|
+
out all of the weight of an full library of javascript and css files in your
|
38
|
+
public folder.
|
39
|
+
|
40
|
+
|
41
|
+
### jQeury Version
|
42
|
+
|
43
|
+
To specify a different version of jQuery, just include :jQuery => "X.X.X" to
|
44
|
+
your 'jquids_includes' method:
|
45
|
+
|
46
|
+
<%= jquids_includes :jQuery => "1.6.0" %>
|
47
|
+
|
48
|
+
A list of supported versions numbers can be found at the bottom of the page.
|
49
|
+
|
50
|
+
Because it is entirely possible that you are already using jQuery in your
|
51
|
+
application, the option is given to you to not include jQuery using
|
52
|
+
Jquids. To do that, just add :jQuery => :none to your
|
53
|
+
'jquids_includes' method:
|
54
|
+
|
55
|
+
<%= jquids_includes :jQuery => :none %>
|
56
|
+
|
57
|
+
and now jQuery will not be included into your plugin.
|
58
|
+
|
59
|
+
|
60
|
+
### jQuery UI Version
|
61
|
+
|
62
|
+
Just like you can specify a specific version of jQuery, you can also specify a
|
63
|
+
version of jQuery UI that you would prefer to use:
|
64
|
+
|
65
|
+
<%= jquids_includes :jQueryUI => "1.8.0" %>
|
66
|
+
|
67
|
+
A list of supported version numbers can be found at the bottom of the page.
|
68
|
+
|
69
|
+
You are also able tell the Jquids not to load jQuery UI in the same way
|
70
|
+
that you did with jQuery:
|
71
|
+
|
72
|
+
<%= jquids_includes :jQueryUI => :none %>
|
73
|
+
|
74
|
+
You may also use `nil` or `false`.
|
75
|
+
|
76
|
+
|
77
|
+
### Custom Style
|
78
|
+
|
79
|
+
To change the style, just add `:style => :new_style` to the
|
80
|
+
`jquids_includes` declaration:
|
81
|
+
|
82
|
+
<%= jquids_includes :style => :vader %>
|
83
|
+
|
84
|
+
And the new style will be applied. All styles come from the Google CDN
|
85
|
+
(http://code.google.com/apis/libraries/devguide.html), so they are not hosted
|
86
|
+
in your application. If you wish to theme roll your own style
|
87
|
+
(http://jqueryui.com/themeroller/), just set `:style` to `:none`, `nil`, or
|
88
|
+
`false`, and include your style sheet in your project.
|
89
|
+
|
90
|
+
All styles that are available via the Google CDN for jQueryUI can be found
|
91
|
+
below.
|
92
|
+
|
93
|
+
|
94
|
+
### Custom Format
|
95
|
+
|
96
|
+
To set the format the same way that was done with CalendarDateSelect, just set
|
97
|
+
the Jquids format variable using the `format=` function somewhere in
|
98
|
+
your code:
|
99
|
+
|
100
|
+
<% Jquids.format= :american %>
|
101
|
+
|
102
|
+
or you can set it in `jquids_includes` method by setting the
|
103
|
+
`:format` variable in the options hash:
|
104
|
+
|
105
|
+
<%= jquids_includes :format => :american %>
|
106
|
+
|
107
|
+
All the formats used mimic what was used in the original CalendarDateSelect
|
108
|
+
gem. The formats available are listed below.
|
109
|
+
|
110
|
+
|
111
|
+
### Customizing the jQuery UI Datepicker
|
112
|
+
|
113
|
+
The jQuery datepicker has many options that you can implement through
|
114
|
+
Jquids via the `:datepicker_options` hash. To add an option to a
|
115
|
+
single datepicker element, simply add the hash as an argument to
|
116
|
+
`jquids_tag` call:
|
117
|
+
|
118
|
+
<%= jquids_tag "some_date", nil, :datepicker_options => {:showButtonPanel => true} %>
|
119
|
+
|
120
|
+
and now the datepicker will use the jQueryUI's button panel at the bottom of
|
121
|
+
the datepicker for that instance. But if you have multiple instances that all
|
122
|
+
should have the `showButtonPanel` equal to true, add the `:datepicker_options`
|
123
|
+
to the `jquids_includes`:
|
124
|
+
|
125
|
+
<%= jquids_includes :datepicker_options => {:showButtonPanel => true} %>
|
126
|
+
|
127
|
+
and the change will be applied to all instances of the datepicker. You can
|
128
|
+
overide that change by setting the setting to false on the desired
|
129
|
+
`jquids_tag` instances.
|
130
|
+
|
131
|
+
A full list of all of the jQueryUI functions can be found here:
|
132
|
+
http://jqueryui.com/demos/datepicker/#options
|
133
|
+
|
134
|
+
|
135
|
+
jQuery Versions
|
136
|
+
---------------
|
137
|
+
"1.2.3, 1.2.6, 1.3.0, 1.3.1, 1.3.2, 1.4.0, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.5.0,
|
138
|
+
1.5.1, 1.5.2, 1.6.0, 1.6.1"
|
139
|
+
|
140
|
+
|
141
|
+
jQuery UI Versions
|
142
|
+
------------------
|
143
|
+
"1.5.2, 1.5.3, 1.6.0, 1.7.0, 1.7.1, 1.7.2, 1.7.3, 1.8.0, 1.8.1, 1.8.2, 1.8.4,
|
144
|
+
1.8.5, 1.8.6, 1.8.7, 1.8.8, 1.8.9, 1.8.10, 1.8.11, 1.8.12, 1.8.13"
|
145
|
+
|
146
|
+
|
147
|
+
Styles
|
148
|
+
------
|
149
|
+
|
150
|
+
The default style is `:base`. The following can be implemented via the
|
151
|
+
`jquids_includes` function:
|
152
|
+
|
153
|
+
* `:base`
|
154
|
+
* `:black_tie`
|
155
|
+
* `:blitzer`
|
156
|
+
* `:cupertino`
|
157
|
+
* `:dark_hive`
|
158
|
+
* `:dot_luv`
|
159
|
+
* `:eggplant`
|
160
|
+
* `:excite_bike`
|
161
|
+
* `:flick`
|
162
|
+
* `:hot_sneaks`
|
163
|
+
* `:humanity`
|
164
|
+
* `:le_frog`
|
165
|
+
* `:mint_choc`
|
166
|
+
* `:overcast`
|
167
|
+
* `:pepper_grinder`
|
168
|
+
* `:redmond`
|
169
|
+
* `:smoothness`
|
170
|
+
* `:south_street`
|
171
|
+
* `:start`
|
172
|
+
* `:sunny`
|
173
|
+
* `:swanky_purse`
|
174
|
+
* `:trontastic`
|
175
|
+
* `:ui_darkness`
|
176
|
+
* `:ui_lightness`
|
177
|
+
* `:vader`
|
178
|
+
|
179
|
+
|
180
|
+
Formats
|
181
|
+
-------
|
182
|
+
|
183
|
+
The default format is `:natural`. Other formats include:
|
184
|
+
|
185
|
+
* `:natural` = "%B %d, %Y"
|
186
|
+
* `:hyphen_ampm` = "%Y-%m-%d"
|
187
|
+
* `:iso_date` = "%Y-%m-%d"
|
188
|
+
* `:finnish` = "%d.%m.%Y"
|
189
|
+
* `:danish` = "%d/%m/%Y"
|
190
|
+
* `:american` = "%m/%d/%Y"
|
191
|
+
* `:euro_24hr` = "%d %B %Y"
|
192
|
+
* `:euro_24hr_ymd` = "%Y.%m.%d"
|
193
|
+
* `:italian` = "%d/%m/%Y"
|
194
|
+
* `:db` = "%Y-%m-%d"
|
195
|
+
|
196
|
+
The only two formats currently with time
|
197
|
+
in am-pm is `:natural`, `:hyphen_ampm`, and `:american`.
|
198
|
+
|
199
|
+
|
200
|
+
TODO
|
201
|
+
----
|
202
|
+
|
203
|
+
- Allow for setting the format via the `jquids_includes` method and
|
204
|
+
the ability to set it on a case by case basis (implemented, but has a bug)
|
205
|
+
- Map the option settings for CalendarDateSelect to Jquids
|
206
|
+
- Get callbacks working
|
207
|
+
- Get it to work in rails 2 and 3 (with tests)
|
208
|
+
- Integrate with formtastic
|
209
|
+
|
210
|
+
|
211
|
+
Contribute/Suggestions
|
212
|
+
----------------------
|
213
|
+
Suggestions and contributions to the project are welcome.
|
data/Rakefile
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
#require "rspec/core/rake_task"
|
3
|
+
require "rspec/core/rake_task" if Gem.source_index.find_name('rspec').map {|x| x.version}.first.version.to_i >= 2
|
4
|
+
require "spec/rake/spectask" if Gem.source_index.find_name('rspec').map {|x| x.version}.first.version.to_i < 2
|
5
|
+
|
6
|
+
desc 'Default: run spec.'
|
7
|
+
task :default => :spec
|
8
|
+
|
9
|
+
if Gem.source_index.find_name('rspec').map {|x| x.version}.first.version.to_i >= 2
|
10
|
+
desc "Run specs"
|
11
|
+
RSpec::Core::RakeTask.new do |t|
|
12
|
+
t.pattern = "./spec/**/*_spec.rb" # not needed, it' a default.
|
13
|
+
# Put spec opts in a file named .rspec in root
|
14
|
+
end
|
15
|
+
elsif Gem.source_index.find_name('rspec').map {|x| x.version}.first.version.to_i < 2
|
16
|
+
desc "Run specs"
|
17
|
+
Spec::Rake::SpecTask.new do |t|
|
18
|
+
t.spec_files = "./spec/**/*_spec.rb"
|
19
|
+
# Put spec opts in a file named spec.opts in your spec folder
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
gemspec = eval(File.read(Dir["*.gemspec"].first))
|
24
|
+
|
25
|
+
desc "Validate the gemspec"
|
26
|
+
task :gemspec do
|
27
|
+
puts "Validating the gem..."
|
28
|
+
gemspec.validate
|
29
|
+
end
|
30
|
+
|
31
|
+
desc "Build gem locally"
|
32
|
+
task :build => :gemspec do
|
33
|
+
puts "Building the gem..."
|
34
|
+
system "gem build #{gemspec.name}.gemspec"
|
35
|
+
FileUtils.mkdir_p "pkg"
|
36
|
+
FileUtils.mv "#{gemspec.name}-#{gemspec.version}.gem", "pkg"
|
37
|
+
end
|
38
|
+
|
39
|
+
desc "Install gem locally"
|
40
|
+
task :install => :build do
|
41
|
+
puts "Installing..."
|
42
|
+
system "gem install pkg/#{gemspec.name}-#{gemspec.version}"
|
43
|
+
end
|
44
|
+
|
data/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/lib/jquids.rb"
|
data/jquids.gemspec
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
$:.push File.expand_path("../lib", __FILE__)
|
2
|
+
require "jquids/constants/version"
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "jquids"
|
6
|
+
s.version = Jquids::VERSION
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.summary = "Integrating the jQueryUI date picker for Rails"
|
9
|
+
s.description = "Integrating the jQueryUI date picker for Rails"
|
10
|
+
s.authors = "Nick LaMuro"
|
11
|
+
s.email = "nicklamuro@gmail.com"
|
12
|
+
s.homepage = "https://github.com/NickLaMuro/jquids"
|
13
|
+
|
14
|
+
s.files = `git ls-files`.split("\n")
|
15
|
+
s.test_files = `git ls-files -- {spec}/*`.split("\n")
|
16
|
+
s.require_paths = ["lib"]
|
17
|
+
end
|
data/lib/jquids.rb
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
require "jquids/jquids.rb"
|
2
|
+
require "jquids/includes_helper.rb"
|
3
|
+
require "jquids/form_helpers.rb"
|
4
|
+
require "jquids/errors/not_a_known_format.rb"
|
5
|
+
require "jquids/errors/not_a_known_style.rb"
|
6
|
+
|
7
|
+
ActionView::Helpers::FormHelper.send(:include, Jquids::FormHelpers)
|
8
|
+
ActionView::Base.send(:include, Jquids::FormHelpers)
|
9
|
+
ActionView::Base.send(:include, Jquids::IncludesHelper)
|
@@ -0,0 +1,74 @@
|
|
1
|
+
module Jquids
|
2
|
+
FORMATS = {
|
3
|
+
:natural => {
|
4
|
+
:date => "%B %d, %Y",
|
5
|
+
:time => " %I:%M %p",
|
6
|
+
:js_date => "MM dd, yy",
|
7
|
+
:tr_js_time => "hh:mm TT",
|
8
|
+
:ampm => true
|
9
|
+
},
|
10
|
+
:hyphen_ampm => {
|
11
|
+
:date => "%Y-%m-%d",
|
12
|
+
:time => " %I:%M %p",
|
13
|
+
:js_date => "yy-mm-dd",
|
14
|
+
:tr_js_time => "hh:mm TT",
|
15
|
+
:ampm => true
|
16
|
+
},
|
17
|
+
:iso_date => {
|
18
|
+
:date => "%Y-%m-%d",
|
19
|
+
:time => " %H:%M",
|
20
|
+
:js_date => "yy-mm-dd",
|
21
|
+
:tr_js_time => "hh:mm",
|
22
|
+
:ampm => false
|
23
|
+
},
|
24
|
+
:finnish => {
|
25
|
+
:date => "%d.%m.%Y",
|
26
|
+
:time => " %H:%M",
|
27
|
+
:js_date => "dd.mm.yy",
|
28
|
+
:tr_js_time => "hh:mm",
|
29
|
+
:ampm => false
|
30
|
+
},
|
31
|
+
:danish => {
|
32
|
+
:date => "%d/%m/%Y",
|
33
|
+
:time => " %H:%M",
|
34
|
+
:js_date => "dd/mm/yy",
|
35
|
+
:tr_js_time => "hh:mm",
|
36
|
+
:ampm => false
|
37
|
+
},
|
38
|
+
:american => {
|
39
|
+
:date => "%m/%d/%Y",
|
40
|
+
:time => " %I:%M %p",
|
41
|
+
:js_date => "mm/dd/yy",
|
42
|
+
:tr_js_time => "hh:mm TT",
|
43
|
+
:ampm => true
|
44
|
+
},
|
45
|
+
:euro_24hr => {
|
46
|
+
:date => "%d %B %Y",
|
47
|
+
:time => " %H:%M",
|
48
|
+
:js_date => "dd MM yy",
|
49
|
+
:tr_js_time => "hh:mm",
|
50
|
+
:ampm => false
|
51
|
+
},
|
52
|
+
:euro_24hr_ymd => {
|
53
|
+
:date => "%Y.%m.%d",
|
54
|
+
:time => " %H:%M",
|
55
|
+
:js_date => "yy.mm.dd",
|
56
|
+
:tr_js_time => "hh:mm",
|
57
|
+
:ampm => false
|
58
|
+
},
|
59
|
+
:italian => {
|
60
|
+
:date => "%d/%m/%Y",
|
61
|
+
:time => " %H:%M",
|
62
|
+
:js_date => "dd/mm/yy",
|
63
|
+
:tr_js_time => "hh:mm",
|
64
|
+
:ampm => false
|
65
|
+
},
|
66
|
+
:db => {
|
67
|
+
:date => "%Y-%m-%d",
|
68
|
+
:time => " %H:%M",
|
69
|
+
:js_date => "yy-mm-dd",
|
70
|
+
:tr_js_time => "hh:mm",
|
71
|
+
:ampm => false
|
72
|
+
}
|
73
|
+
}
|
74
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Jquids
|
2
|
+
STYLES = {
|
3
|
+
:base => "base",
|
4
|
+
:black_tie => "black-tie",
|
5
|
+
:blitzer => "blitzer",
|
6
|
+
:cupertino => "cupertino",
|
7
|
+
:dark_hive => "dark-hive",
|
8
|
+
:dot_luv => "dot-luv",
|
9
|
+
:eggplant => "eggplant",
|
10
|
+
:excite_bike => "excite-bike",
|
11
|
+
:flick => "flick",
|
12
|
+
:hot_sneaks => "hot-sneaks",
|
13
|
+
:humanity => "humanity",
|
14
|
+
:le_frog => "le-frog",
|
15
|
+
:mint_choc => "mint-choc",
|
16
|
+
:overcast => "overcast",
|
17
|
+
:pepper_grinder => "pepper-grinder",
|
18
|
+
:redmond => "redmond",
|
19
|
+
:smoothness => "smoothness",
|
20
|
+
:south_street => "south-street",
|
21
|
+
:start => "start",
|
22
|
+
:sunny => "sunny",
|
23
|
+
:swanky_purse => "swanky-purse",
|
24
|
+
:trontastic => "trontastic",
|
25
|
+
:ui_darkness => "ui-darkness",
|
26
|
+
:ui_lightness => "ui-lightness",
|
27
|
+
:vader => "vader"
|
28
|
+
}
|
29
|
+
end
|