jquelpers 0.0.1 → 0.0.4
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 +6 -0
- data/Manifest +4 -0
- data/README.textile +119 -40
- data/Rakefile +6 -5
- data/jquelpers.gemspec +8 -7
- data/lib/jquelpers.rb +33 -0
- data/lib/jquelpers/accordion_helper.rb +11 -4
- data/lib/jquelpers/autocomplete_helper.rb +28 -0
- data/lib/jquelpers/calculator_helper.rb +26 -0
- data/lib/jquelpers/datepicker_helper.rb +10 -3
- data/lib/jquelpers/includes_helper.rb +31 -0
- data/lib/jquelpers/jquelpers.rb +155 -0
- data/lib/jquelpers/tabs_helper.rb +9 -4
- metadata +16 -8
data/CHANGELOG
CHANGED
data/Manifest
CHANGED
@@ -4,5 +4,9 @@ README.textile
|
|
4
4
|
Rakefile
|
5
5
|
lib/jquelpers.rb
|
6
6
|
lib/jquelpers/accordion_helper.rb
|
7
|
+
lib/jquelpers/autocomplete_helper.rb
|
8
|
+
lib/jquelpers/calculator_helper.rb
|
7
9
|
lib/jquelpers/datepicker_helper.rb
|
10
|
+
lib/jquelpers/includes_helper.rb
|
11
|
+
lib/jquelpers/jquelpers.rb
|
8
12
|
lib/jquelpers/tabs_helper.rb
|
data/README.textile
CHANGED
@@ -1,21 +1,81 @@
|
|
1
|
-
h1. What Is
|
1
|
+
h1. What Is Jquelpers?
|
2
2
|
|
3
|
-
|
3
|
+
This is a collection of helpers for Ruby on Rails.
|
4
|
+
Jquelpers is a contraction of Jquery and Helpers.
|
5
|
+
Currently it aim to support all the plugins composing Jquery-UI library, but others plugins are note forbidden (like the calculator)
|
4
6
|
|
5
|
-
|
7
|
+
Jquelpers is a fork of jquery-ui-rails-helpers by CodeOfficer (https://github.com/CodeOfficer/jquery-ui-rails-helpers)
|
6
8
|
|
7
|
-
|
8
|
-
https://github.com/CodeOfficer/jquery-ui-rails-helpers
|
9
|
+
I hope you'll find Jquelpers useful.
|
9
10
|
|
10
|
-
|
11
|
-
This fork is not anymore compatible with the original plugin.
|
12
|
-
If you decide to use this fork, you will have to rewrite your apps (for the best !)
|
11
|
+
h3. Warning !
|
13
12
|
|
13
|
+
This fork is not anymore compatible with the original jquery-ui-rails-helpers plugin.
|
14
|
+
If you decide to use this fork, you will have to rewrite your apps (for the best !).
|
15
|
+
|
16
|
+
This gem works with Rails 2.3.8 ; I did'nt try anywhere else, but this should work with Rails 3.0 (tell me if it does'nt)
|
17
|
+
|
18
|
+
h2. Let's start
|
19
|
+
|
20
|
+
Install
|
21
|
+
<pre><code>
|
22
|
+
gem install jquelpers
|
23
|
+
</code></pre>
|
24
|
+
|
25
|
+
And require it
|
26
|
+
<pre><code>
|
27
|
+
config.gem 'jquelpers'
|
28
|
+
</code></pre>
|
29
|
+
|
30
|
+
Set the defaut options. (in progress....)
|
31
|
+
<pre><code>
|
32
|
+
Jquelpers.default=
|
33
|
+
{ :tabs => {:html=> {:class => "styleit"}},
|
34
|
+
:accordions => {:html=> {}, :jquery=> ""},
|
35
|
+
:datepicker => {:html=> {}, :jquery=> "showButtonPanel: true, showOn: \"both\", buttonImageOnly: true, buttonImage: '/images/calendar.png', " },
|
36
|
+
:calculator => {:html=> {}, :jquery=> "useThemeRoller: true, showOn: \"both\", buttonImageOnly: true, buttonImage: '/images/calculator.png', "},
|
37
|
+
:autocomplete => {:jquery=> "minLength: 2,"}
|
38
|
+
}
|
39
|
+
</code></pre>
|
40
|
+
|
41
|
+
Set the location of your files, these are default (if you have the same files you can skip this step)
|
42
|
+
note the %{l} it is the I18n wildcard, working with I18n.locale !
|
43
|
+
<pre><code>
|
44
|
+
Jquelpers.js_files = [
|
45
|
+
[:jquery, "jquery-1.4.4.min"],
|
46
|
+
[:core, "jquery.ui.core.min"],
|
47
|
+
[:widget, "jquery.ui.widget.min"],
|
48
|
+
[:tabs, "jquery.ui.tabs.min"],
|
49
|
+
[:accordion, "jquery.ui.accordion.min"],
|
50
|
+
[:calculator, "jquery.calculator.min"],
|
51
|
+
[:calculator_I18n, "jquery.calculator-%{l}"],
|
52
|
+
[:datepicker, "jquery.ui.datepicker.min"],
|
53
|
+
[:datepicker_I18n, "jquery.ui.datepicker-%{l}"],
|
54
|
+
[:position, "jquery.ui.position.min"],
|
55
|
+
[:autocomplete, "jquery.ui.autocomplete.min"]
|
56
|
+
]
|
57
|
+
Jquelpers.css_files = [
|
58
|
+
[:UI, "UI-custom/jquery-ui-1.8.6.custom"],
|
59
|
+
[:calculator, "jquery.calculator.alt"]
|
60
|
+
]
|
61
|
+
</code></pre>
|
62
|
+
|
63
|
+
h3. IncludesHelper
|
64
|
+
|
65
|
+
IncludesHelpers allow Jquelpers to manage when and wich files have to included in the rendered page.
|
66
|
+
<pre><code>
|
67
|
+
jquelpers_include_javascript(options = {})
|
68
|
+
jquelpers_include_stylesheet(options = {})
|
69
|
+
</code></pre>
|
70
|
+
|
71
|
+
they have all options of <i>javascript_include_tag & stylesheet_link_tag</i>
|
72
|
+
plus <i>:always => true</i> for including all files all time (bypass clever loading)
|
73
|
+
|
74
|
+
Application layout, or any layouts is a good place for these.
|
14
75
|
|
15
76
|
h2. TabsHelper
|
16
77
|
|
17
78
|
This helper simplifies the code required to use the jQuery UI Tab plugin.
|
18
|
-
|
19
79
|
<pre><code>
|
20
80
|
<% tabs_for :tabs_container :jquery => "collapsible = true" do |tab| %>
|
21
81
|
<% tab.create('Tab 1') do %>
|
@@ -26,28 +86,9 @@ This helper simplifies the code required to use the jQuery UI Tab plugin.
|
|
26
86
|
<% end %>
|
27
87
|
</code></pre>
|
28
88
|
|
29
|
-
The above will generate this HTML in your view: ( to be corrected with the new behaviours)
|
30
|
-
|
31
|
-
<pre><code>
|
32
|
-
<div id="tabs">
|
33
|
-
<ul>
|
34
|
-
<li><a href="#tabs_container_0"><span>Tab 1</span></a></li>
|
35
|
-
<li><a href="#tabs_container_1"><span>Tab 2</span></a></li>
|
36
|
-
</ul>
|
37
|
-
<div id="tabs_container_0">
|
38
|
-
# ... insert tab contents
|
39
|
-
</div>
|
40
|
-
<div id="tabs_container_1">
|
41
|
-
# ... insert tab contents
|
42
|
-
</div>
|
43
|
-
</div>
|
44
|
-
</code></pre>
|
45
|
-
|
46
89
|
Tabs will be rendered in the order you create them.
|
47
|
-
|
48
90
|
You can easily render a tab conditionally by appending your condition to the end of
|
49
91
|
the 'create' block as such ... (Cancan gem in this exemple)
|
50
|
-
|
51
92
|
<pre><code>
|
52
93
|
<% tab.create('My Profile') do %>
|
53
94
|
# ... insert tab contents
|
@@ -56,7 +97,6 @@ the 'create' block as such ... (Cancan gem in this exemple)
|
|
56
97
|
|
57
98
|
You can pass HTML options or JQuery options to either the parent DIV or any individual tab's
|
58
99
|
DIV (there is no JQuery options for each tab.) as you like ...
|
59
|
-
|
60
100
|
<pre><code>
|
61
101
|
<% tabs_for :tabs_container :jquery => "collapsible = true", :class => 'zippy' do |tab| %>
|
62
102
|
<% tab.create('Tab 1', :style => 'background: #FFF') do %>
|
@@ -64,18 +104,20 @@ DIV (there is no JQuery options for each tab.) as you like ...
|
|
64
104
|
<% end %>
|
65
105
|
<% end %>
|
66
106
|
</code></pre>
|
107
|
+
|
67
108
|
<strike>
|
68
109
|
The default DOM ID for the parent div is ... id="tabs" ... unless you pass in an HTML
|
69
110
|
option with a different value. And you SHOULD pass an id.
|
70
111
|
</strike>
|
71
112
|
Dom id's are automaticaly genrated, but you can override them (I told you, you can pass html options)
|
72
113
|
|
114
|
+
one additonal option is <i>:include => :force</i> in order to load right now all files used by this helpers, could be useful for ajax responses where clever loading is not yet very clever...
|
115
|
+
This option is avaiable for all the helpers included in Jquelpers
|
116
|
+
|
73
117
|
h2. AccordionsHelper
|
74
118
|
|
75
119
|
This helper simplifies the code required to use JQuery UIs Accordion plugin.
|
76
|
-
|
77
120
|
Usage is identical to the Tabs helper.
|
78
|
-
|
79
121
|
<pre><code>
|
80
122
|
<% accordions_for do |accordion| %>
|
81
123
|
<% accordion.create("accordion_title") do %>
|
@@ -87,25 +129,62 @@ Usage is identical to the Tabs helper.
|
|
87
129
|
h2. DatepickerHelper
|
88
130
|
|
89
131
|
This helper simplifies the code required to use JQuery UIs Datepicker plugin.
|
90
|
-
|
91
132
|
Usage is identical to others helpers.
|
92
|
-
|
93
133
|
<pre><code>
|
94
134
|
<% form_for do |f| %>
|
95
135
|
<% f.datepicker :date, :jquery => "any option" %>
|
96
136
|
<% end %>
|
97
137
|
</code></pre>
|
98
|
-
|
99
138
|
or outside a form_for :
|
100
139
|
<pre><code>
|
101
140
|
<% datepicker_tag :object_name, :date, :jquery => "any option" %>
|
102
141
|
</code></pre>
|
103
142
|
|
143
|
+
h2. AutocompleteHelper
|
144
|
+
|
145
|
+
Fork from https://github.com/chris/auto_complete_jquery
|
146
|
+
|
147
|
+
This helper simplifies the code required to use JQuery UIs Autocomplete plugin.
|
148
|
+
Usage is identical to others helpers.
|
149
|
+
<pre><code>
|
150
|
+
<% form_for do |f| %>
|
151
|
+
<% f.autocomplete :drink, :source => "autocomplete_url",:jquery => "any option" %>
|
152
|
+
<% end %>
|
153
|
+
</code></pre>
|
154
|
+
or outside a form_for :
|
155
|
+
<pre><code>
|
156
|
+
<% autocomplete_tag :object_name, :drink, :source =>["Water", "Wine", "Juice", "Beer"], :jquery => "any option" %>
|
157
|
+
</code></pre>
|
158
|
+
|
159
|
+
:source have to be set and can be an array (for static completion), or a string contening the url of a webservice.
|
160
|
+
|
161
|
+
if you have to develop the webservice also you can use the <i>jq_ac_for</i> method in any controller.
|
162
|
+
<pre><code>
|
163
|
+
jq_ac_for :item, :category
|
164
|
+
</code></pre>
|
165
|
+
Which create an action named jq_ac_for_item_category wich look in the database (to be transformed for a class agnostic search) and give a basic response with found 'category' in the 'Item' class
|
166
|
+
|
167
|
+
h2. CalculatorHelper
|
168
|
+
|
169
|
+
For the jQuery Calculator from Keith Wood. (NOT in jquery UI)
|
170
|
+
http://keith-wood.name/calculator.html
|
171
|
+
This helper simplifies the code required this plugin.
|
172
|
+
|
173
|
+
Usage is identical to others helpers.
|
174
|
+
<pre><code>
|
175
|
+
<% form_for do |f| %>
|
176
|
+
<% f.calculator :price, :jquery => "any option" %>
|
177
|
+
<% end %>
|
178
|
+
</code></pre>
|
179
|
+
or outside a form_for :
|
180
|
+
<pre><code>
|
181
|
+
<% calculator_tag :object_name, :calculator, :jquery => "any option" %>
|
182
|
+
</code></pre>
|
183
|
+
|
104
184
|
h2. Todo.
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
h3. Other helpers (Autocompletion will come, ... any idea ?)
|
185
|
+
|
186
|
+
* Real support of default options. (one the way)
|
187
|
+
* Improve Clever load for js&css files (for Ajax requests)
|
188
|
+
* write documentation
|
189
|
+
* Write tests (if somebody explain me why and how)
|
111
190
|
|
data/Rakefile
CHANGED
@@ -3,13 +3,14 @@ require 'rake'
|
|
3
3
|
require 'echoe'
|
4
4
|
|
5
5
|
Echoe.new('jquelpers') do |p|
|
6
|
-
p.description = "Provide Rails helpers for jquery
|
7
|
-
p.
|
6
|
+
p.description = "Provide Rails helpers for jquery plugins"
|
7
|
+
p.summary = "Jquery is really great, rails too, but I want more Ruby and less Javascript in my code !"
|
8
|
+
p.install_message= "Ok ! Now require me in your app, and start enjoying !!"
|
9
|
+
p.url = "http://github.com/elmatou/jquelpers/"
|
8
10
|
p.author = "El Matou"
|
9
11
|
p.email = "elmatou@gmail.com"
|
10
|
-
p.version = "0.0.
|
11
|
-
p.changes = "
|
12
|
-
p.development_dependencies = []
|
12
|
+
p.version = "0.0.4"
|
13
|
+
p.changes = "auto-load js&css files. adding Calculator&Autcompletion helpers"
|
13
14
|
end
|
14
15
|
|
15
16
|
Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
|
data/jquelpers.gemspec
CHANGED
@@ -2,21 +2,22 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{jquelpers}
|
5
|
-
s.version = "0.0.
|
5
|
+
s.version = "0.0.4"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["El Matou"]
|
9
|
-
s.date = %q{2010-11-
|
10
|
-
s.description = %q{Provide Rails helpers for jquery
|
9
|
+
s.date = %q{2010-11-24}
|
10
|
+
s.description = %q{Provide Rails helpers for jquery plugins}
|
11
11
|
s.email = %q{elmatou@gmail.com}
|
12
|
-
s.extra_rdoc_files = ["CHANGELOG", "README.textile", "lib/jquelpers.rb", "lib/jquelpers/accordion_helper.rb", "lib/jquelpers/datepicker_helper.rb", "lib/jquelpers/tabs_helper.rb"]
|
13
|
-
s.files = ["CHANGELOG", "Manifest", "README.textile", "Rakefile", "lib/jquelpers.rb", "lib/jquelpers/accordion_helper.rb", "lib/jquelpers/datepicker_helper.rb", "lib/jquelpers/tabs_helper.rb", "jquelpers.gemspec"]
|
14
|
-
s.homepage = %q{http://github.com/elmatou/
|
12
|
+
s.extra_rdoc_files = ["CHANGELOG", "README.textile", "lib/jquelpers.rb", "lib/jquelpers/accordion_helper.rb", "lib/jquelpers/autocomplete_helper.rb", "lib/jquelpers/calculator_helper.rb", "lib/jquelpers/datepicker_helper.rb", "lib/jquelpers/includes_helper.rb", "lib/jquelpers/jquelpers.rb", "lib/jquelpers/tabs_helper.rb"]
|
13
|
+
s.files = ["CHANGELOG", "Manifest", "README.textile", "Rakefile", "lib/jquelpers.rb", "lib/jquelpers/accordion_helper.rb", "lib/jquelpers/autocomplete_helper.rb", "lib/jquelpers/calculator_helper.rb", "lib/jquelpers/datepicker_helper.rb", "lib/jquelpers/includes_helper.rb", "lib/jquelpers/jquelpers.rb", "lib/jquelpers/tabs_helper.rb", "jquelpers.gemspec"]
|
14
|
+
s.homepage = %q{http://github.com/elmatou/jquelpers/}
|
15
|
+
s.post_install_message = %q{Ok ! Now require me in your app, and start enjoying !!}
|
15
16
|
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Jquelpers", "--main", "README.textile"]
|
16
17
|
s.require_paths = ["lib"]
|
17
18
|
s.rubyforge_project = %q{jquelpers}
|
18
19
|
s.rubygems_version = %q{1.3.7}
|
19
|
-
s.summary = %q{
|
20
|
+
s.summary = %q{Jquery is really great, rails too, but I want more Ruby and less Javascript in my code !}
|
20
21
|
|
21
22
|
if s.respond_to? :specification_version then
|
22
23
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
data/lib/jquelpers.rb
CHANGED
@@ -1,4 +1,37 @@
|
|
1
|
+
require 'jquelpers/jquelpers'
|
2
|
+
require 'jquelpers/includes_helper'
|
3
|
+
|
1
4
|
require 'jquelpers/accordion_helper'
|
2
5
|
require 'jquelpers/tabs_helper'
|
3
6
|
require 'jquelpers/datepicker_helper'
|
7
|
+
require 'jquelpers/calculator_helper'
|
8
|
+
require 'jquelpers/autocomplete_helper'
|
9
|
+
|
10
|
+
if Object.const_defined?(:Rails) && File.directory?(Rails.root.to_s + "/public")
|
11
|
+
# FormBuilder Helpers
|
12
|
+
ActionView::Helpers::FormHelper.send(:include, Jquelpers::DatepickerHelper)
|
13
|
+
ActionView::Base.send(:include, Jquelpers::DatepickerHelper)
|
14
|
+
|
15
|
+
ActionController::Base.send(:include, AutoCompleteJquery)
|
16
|
+
|
17
|
+
ActionView::Helpers::FormHelper.send(:include, Jquelpers::CalculatorHelper)
|
18
|
+
ActionView::Base.send(:include, Jquelpers::CalculatorHelper)
|
19
|
+
|
20
|
+
ActionView::Helpers::FormHelper.send(:include, Jquelpers::AutocompleteHelper)
|
21
|
+
ActionView::Base.send(:include, Jquelpers::AutocompleteHelper)
|
22
|
+
|
23
|
+
# Non FormBuilder Helpers
|
24
|
+
ActionView::Base.send(:include, Jquelpers::IncludesHelper)
|
25
|
+
ActionView::Base.send(:include, Jquelpers::AccordionHelper)
|
26
|
+
ActionView::Base.send(:include, Jquelpers::TabsHelper)
|
4
27
|
|
28
|
+
# install files
|
29
|
+
# unless File.exists?(RAILS_ROOT + '/public/javascripts/calendar_date_select/calendar_date_select.js')
|
30
|
+
# ['/public', '/public/javascripts/calendar_date_select', '/public/stylesheets/calendar_date_select', '/public/images/calendar_date_select', '/public/javascripts/calendar_date_select/locale'].each do |dir|
|
31
|
+
# source = File.dirname(__FILE__) + "/../#{dir}"
|
32
|
+
# dest = RAILS_ROOT + dir
|
33
|
+
# FileUtils.mkdir_p(dest)
|
34
|
+
# FileUtils.cp(Dir.glob(source+'/*.*'), dest)
|
35
|
+
# end
|
36
|
+
# end
|
37
|
+
end
|
@@ -1,11 +1,18 @@
|
|
1
|
-
module AccordionHelper
|
2
|
-
|
1
|
+
module Jquelpers::AccordionHelper
|
2
|
+
|
3
|
+
jquery_options = ""
|
4
|
+
html_options = {}
|
3
5
|
def accordion_for(method, options ={}, &block )
|
4
6
|
raise ArgumentError, "Missing block" unless block_given?
|
5
|
-
|
7
|
+
|
6
8
|
options = {:id => method.to_s }.merge!(options)
|
9
|
+
|
10
|
+
Jquelpers.need_stylesheet :UI
|
11
|
+
Jquelpers.need_javascript :jquery, :core, :widget, :accordion
|
12
|
+
|
13
|
+
jquelpers_include_specifics if options.delete(:include) === :force
|
7
14
|
concat javascript_tag "$(document).ready(function() {$(\"##{options[:id]}\").accordion({#{options.delete(:jquery)}}); });"
|
8
|
-
concat
|
15
|
+
concat AccordionRenderer.new( options, &block ).render
|
9
16
|
end
|
10
17
|
|
11
18
|
class AccordionRenderer
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Jquelpers::AutocompleteHelper
|
2
|
+
|
3
|
+
def autocomplete_tag(object, method, options = {})
|
4
|
+
|
5
|
+
# source = options.delete(:source)
|
6
|
+
jquery = "source: " << (options[:source].is_a?(Array)? options.delete(:source).inspect : options.delete(:source).inspect)
|
7
|
+
|
8
|
+
# jquery << Jquelpers.default[:autocomplete][:jquery] << (options.delete(:jquery).to_s ||= "")
|
9
|
+
# options = (Jquelpers.default[:autocomplete][:html] ||= {}).merge(options)
|
10
|
+
|
11
|
+
|
12
|
+
Jquelpers.need_stylesheet :UI
|
13
|
+
Jquelpers.need_javascript :jquery, :core, :widget, :position, :autocomplete
|
14
|
+
jquelpers_include_specifics if options.delete(:include) === :force
|
15
|
+
concat text_field(object.class.name.downcase, method, options)
|
16
|
+
javascript_tag "$(document).ready(function() {$(#{object.class.name.downcase}_#{method.to_s}).autocomplete({#{jquery}}); });"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
module ActionView
|
21
|
+
module Helpers
|
22
|
+
class FormBuilder
|
23
|
+
def autocomplete(method, options = {})
|
24
|
+
@template.autocomplete_tag(@object, method, options.merge(:object => @object))
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Jquelpers::CalculatorHelper
|
2
|
+
|
3
|
+
|
4
|
+
def calculator_tag(object, method, options = {})
|
5
|
+
jquery = Jquelpers.default[:calculator][:jquery] << (options.delete(:jquery).to_s ||= "")
|
6
|
+
options = (Jquelpers.default[:calculator][:html] ||= {}).merge(options)
|
7
|
+
|
8
|
+
Jquelpers.need_stylesheet :UI, :calculator
|
9
|
+
Jquelpers.need_javascript :jquery, :calculator, :calculator_I18n
|
10
|
+
|
11
|
+
jquelpers_include_specifics if options.delete(:include) === :force
|
12
|
+
|
13
|
+
concat text_field(object.class.name.downcase, method, options)
|
14
|
+
javascript_tag "$(document).ready(function() {$(#{object.class.name.downcase}_#{method.to_s}).calculator({#{jquery}}); });"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
module ActionView
|
19
|
+
module Helpers
|
20
|
+
class FormBuilder
|
21
|
+
def calculator(method, options = {})
|
22
|
+
@template.calculator_tag(@object, method, options.merge(:object => @object))
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -1,6 +1,13 @@
|
|
1
|
-
module DatepickerHelper
|
1
|
+
module Jquelpers::DatepickerHelper
|
2
|
+
|
2
3
|
def datepicker_tag(object, method, options = {})
|
3
|
-
jquery = options.delete(:jquery)
|
4
|
+
jquery = Jquelpers.default[:datepicker][:jquery] << (options.delete(:jquery).to_s ||= "")
|
5
|
+
options = (Jquelpers.default[:datepicker][:html] ||= {}).merge(options)
|
6
|
+
|
7
|
+
Jquelpers.need_stylesheet :UI
|
8
|
+
Jquelpers.need_javascript :jquery, :core, :widget, :datepicker, :datepicker_I18n
|
9
|
+
|
10
|
+
jquelpers_include_specifics if options.delete(:include) === :force
|
4
11
|
concat text_field(object.class.name.downcase, method, options)
|
5
12
|
javascript_tag "$(document).ready(function() {$(#{object.class.name.downcase}_#{method.to_s}).datepicker({#{jquery}}); });"
|
6
13
|
end
|
@@ -14,4 +21,4 @@ module ActionView
|
|
14
21
|
end
|
15
22
|
end
|
16
23
|
end
|
17
|
-
end
|
24
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Jquelpers::IncludesHelper
|
2
|
+
def jquelpers_include_javascript(options = {})
|
3
|
+
Jquelpers::Javascript_files.each { |f| Jquelpers.need_javascript f[0] } if options.delete(:always)
|
4
|
+
concat javascript_include_tag(Jquelpers.need_javascript, options)
|
5
|
+
Jquelpers.flush_js
|
6
|
+
end
|
7
|
+
|
8
|
+
def jquelpers_include_stylesheet(options = {})
|
9
|
+
Jquelpers::Stylesheet_files.each { |f| Jquelpers.need_stylesheet f[1] } if options.delete(:always)
|
10
|
+
concat stylesheet_link_tag(Jquelpers.need_stylesheet, options)
|
11
|
+
Jquelpers.flush_css
|
12
|
+
end
|
13
|
+
|
14
|
+
##### below : in progress
|
15
|
+
|
16
|
+
def jquelpers_test
|
17
|
+
Jquelpers.need_javascript.each { |f| concat f.to_s + "<br />"}
|
18
|
+
Jquelpers.need_stylesheet.each { |f| concat f.to_s + "<br />"}
|
19
|
+
end
|
20
|
+
|
21
|
+
def jquelpers_include_specifics(*args)
|
22
|
+
concat javascript_include_tag(Jquelpers.need_javascript)
|
23
|
+
concat stylesheet_link_tag(Jquelpers.need_stylesheet)
|
24
|
+
# javascript_include_tag args.each {|a| Javascript_files.assoc(a)[1] }
|
25
|
+
end
|
26
|
+
|
27
|
+
def jquelpers_include(*options)
|
28
|
+
jquelpers_include_stylesheet(options)
|
29
|
+
jquelpers_include_javascript(options)
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,155 @@
|
|
1
|
+
module Jquelpers
|
2
|
+
|
3
|
+
Javascript_files = [
|
4
|
+
[:jquery, "jquery-1.4.4.min"],
|
5
|
+
[:core, "jquery.ui.core.min"],
|
6
|
+
[:widget, "jquery.ui.widget.min"],
|
7
|
+
[:tabs, "jquery.ui.tabs.min"],
|
8
|
+
[:accordion, "jquery.ui.accordion.min"],
|
9
|
+
[:calculator, "jquery.calculator.min"],
|
10
|
+
[:calculator_I18n, "jquery.calculator-%{l}"],
|
11
|
+
[:datepicker, "jquery.ui.datepicker.min"],
|
12
|
+
[:datepicker_I18n, "jquery.ui.datepicker-%{l}"],
|
13
|
+
[:position, "jquery.ui.position.min"],
|
14
|
+
[:autocomplete, "jquery.ui.autocomplete.min"]
|
15
|
+
]
|
16
|
+
Stylesheet_files = [
|
17
|
+
[:UI, "UI-custom/jquery-ui-1.8.6.custom"],
|
18
|
+
[:calculator, "jquery.calculator.alt"]
|
19
|
+
]
|
20
|
+
|
21
|
+
@needed_javascript = Array.new
|
22
|
+
@needed_stylesheet = Array.new
|
23
|
+
|
24
|
+
def self.flush_js
|
25
|
+
@needed_javascript.clear
|
26
|
+
end
|
27
|
+
def self.flush_css
|
28
|
+
@needed_stylesheet.clear
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.check_if_local(path, arg)
|
32
|
+
File.file?(RAILS_ROOT + "/public/#{path}#{arg.sub("%{l}", I18n.locale.to_s)}") ? arg.sub("%{l}", I18n.locale.to_s) : nil
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.need_javascript(*args)
|
36
|
+
args.each {|a| @needed_javascript << check_if_local("javascripts/", Javascript_files.assoc(a)[1] + ".js")}
|
37
|
+
@needed_javascript.uniq
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.need_stylesheet(*args)
|
41
|
+
args.each {|a| @needed_stylesheet << check_if_local("stylesheets/", Stylesheet_files.assoc(a)[1] + ".css")}
|
42
|
+
@needed_stylesheet.uniq
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.default=(hash)
|
46
|
+
@jquelpers_default = hash || {}
|
47
|
+
end
|
48
|
+
def self.default
|
49
|
+
@jquelpers_default
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.js_files=(array)
|
53
|
+
# @js_files = Javascript_files.collect {|a| a.assoc(array.assoc(a)) || a }
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
# les fichiers utils par ordre de précedence avec %{l} pour symboliser la langue d'un fichier de localisation.
|
58
|
+
#
|
59
|
+
# @javascript = RequiredFiles.new([
|
60
|
+
# [:jquery, "jquery-1.4.4.min.js"],
|
61
|
+
# [:core, "jquery.ui.core.min.js"],
|
62
|
+
# [:widget, "jquery.ui.widget.min.js"],
|
63
|
+
# [:tabs, "jquery.ui.tabs.min.js"],
|
64
|
+
# [:accordion, "jquery.ui.accordion.min.js"],
|
65
|
+
# [:calculator, "jquery.calculator.min.js"],
|
66
|
+
# [:calculator_I18n, "jquery.calculator-%{l}.js"],
|
67
|
+
# [:datepicker, "jquery.ui.datepicker.min.js"],
|
68
|
+
# [:datepicker_I18n, "jquery.ui.datepicker-%{l}.js"]
|
69
|
+
# ])
|
70
|
+
#
|
71
|
+
# class RequiredFiles
|
72
|
+
# def initialize(id)
|
73
|
+
# id = id.to_a # nettoyage et formatage de l'array, c'est un peu court pour le moment
|
74
|
+
# @list = Array.new(id)
|
75
|
+
# @load = Array.new
|
76
|
+
# end
|
77
|
+
#
|
78
|
+
# class UnknownRequiredFiles < StandardError; end
|
79
|
+
#
|
80
|
+
# attr_reader :load
|
81
|
+
# attr_writer :list
|
82
|
+
#
|
83
|
+
#
|
84
|
+
#
|
85
|
+
# def self.need(*args)
|
86
|
+
# path = "javascripts/"
|
87
|
+
# args.each {|a| @needed_javascript << file?(path + @list.assoc(a)[1])}
|
88
|
+
# @needed_javascript.uniq
|
89
|
+
# end
|
90
|
+
#
|
91
|
+
# def self.dont_need(*args)
|
92
|
+
# args.each {|a| @needed_javascript.delete(@list.assoc(a)[1])}
|
93
|
+
# @needed_javascript.uniq
|
94
|
+
# end
|
95
|
+
#
|
96
|
+
# def self.clear
|
97
|
+
# @toload.clear
|
98
|
+
# end
|
99
|
+
#
|
100
|
+
# def file?(arg)
|
101
|
+
# File.file?(RAILS_ROOT + "/public/#{arg.sub("%{l}", I18n.locale.to_s)}") ? arg.sub("%{l}", I18n.locale.to_s) : nil
|
102
|
+
# end
|
103
|
+
#
|
104
|
+
# end
|
105
|
+
end
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
module AutoCompleteJquery # from https://github.com/chris/auto_complete_jquery
|
110
|
+
|
111
|
+
def self.included(base)
|
112
|
+
base.extend(ClassMethods)
|
113
|
+
end
|
114
|
+
|
115
|
+
#
|
116
|
+
# Example:
|
117
|
+
#
|
118
|
+
# # Controller
|
119
|
+
# class BlogController < ApplicationController
|
120
|
+
# auto_complete_for :post, :title
|
121
|
+
# end
|
122
|
+
#
|
123
|
+
# # View
|
124
|
+
# <%= text_field_with_auto_complete :post, title %>
|
125
|
+
#
|
126
|
+
# By default, auto_complete_for limits the results to 10 entries,
|
127
|
+
# and sorts by the given field.
|
128
|
+
#
|
129
|
+
# auto_complete_for takes a third parameter, an options hash to
|
130
|
+
# the find method used to search for the records:
|
131
|
+
#
|
132
|
+
# auto_complete_for :post, :title, :limit => 15, :order => 'created_at DESC'
|
133
|
+
#
|
134
|
+
# For help on defining text input fields with autocompletion,
|
135
|
+
# see ActionView::Helpers::JavaScriptHelper.
|
136
|
+
#
|
137
|
+
module ClassMethods
|
138
|
+
def jq_ac_for(object, method, options = {})
|
139
|
+
define_method("jq_ac_for_#{object}_#{method}") do
|
140
|
+
object_constant = object.to_s.camelize.constantize
|
141
|
+
|
142
|
+
find_options = {
|
143
|
+
:conditions => [ "LOWER(#{method}) LIKE ?", '%' + params[:term].downcase + '%' ],
|
144
|
+
:order => "#{method} ASC",
|
145
|
+
:select => "#{object_constant.table_name}.#{method}",
|
146
|
+
:limit => 10 }.merge!(options)
|
147
|
+
|
148
|
+
@items = object_constant.find(:all, find_options).collect(&method)
|
149
|
+
|
150
|
+
render :text => @items.uniq.inspect
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
end
|
@@ -1,11 +1,16 @@
|
|
1
|
-
module TabsHelper
|
2
|
-
|
1
|
+
module Jquelpers::TabsHelper
|
2
|
+
|
3
3
|
def tabs_for(method, options = {}, &block )
|
4
4
|
raise ArgumentError, "Missing block" unless block_given?
|
5
|
-
|
5
|
+
|
6
|
+
Jquelpers.need_stylesheet :UI
|
7
|
+
Jquelpers.need_javascript :jquery, :core, :widget, :tabs
|
8
|
+
jquelpers_include_specifics if options.delete(:include) === :force
|
9
|
+
|
6
10
|
options = {:id => method.to_s }.merge!(options)
|
11
|
+
|
7
12
|
concat javascript_tag "$(document).ready(function() {$(\"##{options[:id]}\").tabs({#{options.delete(:jquery)}}); });"
|
8
|
-
concat
|
13
|
+
concat TabsRenderer.new(options, &block ).render
|
9
14
|
end
|
10
15
|
|
11
16
|
class TabsRenderer
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jquelpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 4
|
10
|
+
version: 0.0.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- El Matou
|
@@ -15,11 +15,11 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-11-
|
18
|
+
date: 2010-11-24 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
22
|
-
description: Provide Rails helpers for jquery
|
22
|
+
description: Provide Rails helpers for jquery plugins
|
23
23
|
email: elmatou@gmail.com
|
24
24
|
executables: []
|
25
25
|
|
@@ -30,7 +30,11 @@ extra_rdoc_files:
|
|
30
30
|
- README.textile
|
31
31
|
- lib/jquelpers.rb
|
32
32
|
- lib/jquelpers/accordion_helper.rb
|
33
|
+
- lib/jquelpers/autocomplete_helper.rb
|
34
|
+
- lib/jquelpers/calculator_helper.rb
|
33
35
|
- lib/jquelpers/datepicker_helper.rb
|
36
|
+
- lib/jquelpers/includes_helper.rb
|
37
|
+
- lib/jquelpers/jquelpers.rb
|
34
38
|
- lib/jquelpers/tabs_helper.rb
|
35
39
|
files:
|
36
40
|
- CHANGELOG
|
@@ -39,14 +43,18 @@ files:
|
|
39
43
|
- Rakefile
|
40
44
|
- lib/jquelpers.rb
|
41
45
|
- lib/jquelpers/accordion_helper.rb
|
46
|
+
- lib/jquelpers/autocomplete_helper.rb
|
47
|
+
- lib/jquelpers/calculator_helper.rb
|
42
48
|
- lib/jquelpers/datepicker_helper.rb
|
49
|
+
- lib/jquelpers/includes_helper.rb
|
50
|
+
- lib/jquelpers/jquelpers.rb
|
43
51
|
- lib/jquelpers/tabs_helper.rb
|
44
52
|
- jquelpers.gemspec
|
45
53
|
has_rdoc: true
|
46
|
-
homepage: http://github.com/elmatou/
|
54
|
+
homepage: http://github.com/elmatou/jquelpers/
|
47
55
|
licenses: []
|
48
56
|
|
49
|
-
post_install_message:
|
57
|
+
post_install_message: Ok ! Now require me in your app, and start enjoying !!
|
50
58
|
rdoc_options:
|
51
59
|
- --line-numbers
|
52
60
|
- --inline-source
|
@@ -81,6 +89,6 @@ rubyforge_project: jquelpers
|
|
81
89
|
rubygems_version: 1.3.7
|
82
90
|
signing_key:
|
83
91
|
specification_version: 3
|
84
|
-
summary:
|
92
|
+
summary: Jquery is really great, rails too, but I want more Ruby and less Javascript in my code !
|
85
93
|
test_files: []
|
86
94
|
|