jquery-rails 1.0.13 → 1.0.14
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.
Potentially problematic release.
This version of jquery-rails might be problematic. Click here for more details.
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
## 1.0.14 (08 September 2011)
|
2
|
+
|
3
|
+
- Updated to latest jquery-ujs
|
4
|
+
- Added `disable-with` support for links
|
5
|
+
- minor bug fixes
|
6
|
+
- Added `data-remote` support for change events of all input types
|
7
|
+
- Added install generator for Rails 3.1 with instructional message
|
8
|
+
|
1
9
|
## 1.0.13 (11 August 2011)
|
2
10
|
|
3
11
|
- Updated to latest jquery-ujs with `novalidate` support
|
@@ -1,39 +1,56 @@
|
|
1
1
|
require 'rails'
|
2
2
|
|
3
|
-
|
4
|
-
module
|
5
|
-
|
3
|
+
if ::Rails.version < "3.1"
|
4
|
+
module Jquery
|
5
|
+
module Generators
|
6
|
+
class InstallGenerator < ::Rails::Generators::Base
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
8
|
+
desc "This generator installs jQuery #{Jquery::Rails::JQUERY_VERSION}, jQuery-ujs, and (optionally) jQuery UI #{Jquery::Rails::JQUERY_UI_VERSION}"
|
9
|
+
class_option :ui, :type => :boolean, :default => false, :desc => "Include jQueryUI"
|
10
|
+
source_root File.expand_path('../../../../../vendor/assets/javascripts', __FILE__)
|
10
11
|
|
11
|
-
|
12
|
-
|
13
|
-
|
12
|
+
def remove_prototype
|
13
|
+
Rails::PROTOTYPE_JS.each do |name|
|
14
|
+
remove_file "public/javascripts/#{name}.js"
|
15
|
+
end
|
14
16
|
end
|
15
|
-
end
|
16
17
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
18
|
+
def copy_jquery
|
19
|
+
say_status("copying", "jQuery (#{Jquery::Rails::JQUERY_VERSION})", :green)
|
20
|
+
copy_file "jquery.js", "public/javascripts/jquery.js"
|
21
|
+
copy_file "jquery.min.js", "public/javascripts/jquery.min.js"
|
22
|
+
end
|
22
23
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
24
|
+
def copy_jquery_ui
|
25
|
+
if options.ui?
|
26
|
+
say_status("copying", "jQuery UI (#{Jquery::Rails::JQUERY_UI_VERSION})", :green)
|
27
|
+
copy_file "jquery-ui.js", "public/javascripts/jquery-ui.js"
|
28
|
+
copy_file "jquery-ui.min.js", "public/javascripts/jquery-ui.min.js"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def copy_ujs_driver
|
33
|
+
say_status("copying", "jQuery UJS adapter (#{Jquery::Rails::JQUERY_UJS_VERSION[0..5]})", :green)
|
34
|
+
remove_file "public/javascripts/rails.js"
|
35
|
+
copy_file "jquery_ujs.js", "public/javascripts/jquery_ujs.js"
|
28
36
|
end
|
29
|
-
end
|
30
37
|
|
31
|
-
def copy_ujs_driver
|
32
|
-
say_status("copying", "jQuery UJS adapter (#{Jquery::Rails::JQUERY_UJS_VERSION[0..5]})", :green)
|
33
|
-
remove_file "public/javascripts/rails.js"
|
34
|
-
copy_file "jquery_ujs.js", "public/javascripts/jquery_ujs.js"
|
35
38
|
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
else
|
42
|
+
module Jquery
|
43
|
+
module Generators
|
44
|
+
class InstallGenerator < ::Rails::Generators::Base
|
45
|
+
desc "Just show instructions so people will know what to do when mistakenly using generator for Rails 3.1 apps"
|
36
46
|
|
47
|
+
def do_nothing
|
48
|
+
say_status("deprecated", "You are using Rails 3.1, so this generator is no longer needed. The necessary files are already in your asset pipeline.")
|
49
|
+
say_status("", "Just add `//= require jquery` and `//= require jquery_ujs` to your app/assets/javascripts/application.js")
|
50
|
+
say_status("", "If you upgraded your app from Rails 3.0 and still have jquery.js, rails.js, or jquery_ujs.js in your javascripts, be sure to remove them.")
|
51
|
+
# ok, nothing
|
52
|
+
end
|
53
|
+
end
|
37
54
|
end
|
38
55
|
end
|
39
|
-
end
|
56
|
+
end
|
data/lib/jquery/assert_select.rb
CHANGED
@@ -52,7 +52,7 @@ module ActionDispatch
|
|
52
52
|
|
53
53
|
pattern = "\\.#{jquery_method || '\\w+'}\\("
|
54
54
|
pattern = "#{pattern}['\"]#{jquery_opt}['\"],?\\s*" if jquery_opt
|
55
|
-
pattern = "#{pattern}#{PATTERN_HTML}"
|
55
|
+
pattern = "#{pattern}#{PATTERN_HTML}"
|
56
56
|
pattern = "(?:jQuery|\\$)\\(['\"]#{id}['\"]\\)#{pattern}" if id
|
57
57
|
|
58
58
|
fragments = []
|
@@ -84,6 +84,7 @@ module ActionDispatch
|
|
84
84
|
def unescape_js(js_string)
|
85
85
|
# js encodes double quotes and line breaks.
|
86
86
|
unescaped= js_string.gsub('\"', '"')
|
87
|
+
unescaped.gsub!('\\\'', "'")
|
87
88
|
unescaped.gsub!(/\\\//, '/')
|
88
89
|
unescaped.gsub!('\n', "\n")
|
89
90
|
unescaped.gsub!('\076', '>')
|
@@ -95,4 +96,4 @@ module ActionDispatch
|
|
95
96
|
|
96
97
|
end
|
97
98
|
end
|
98
|
-
end
|
99
|
+
end
|
data/lib/jquery/rails/version.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
module Jquery
|
2
2
|
module Rails
|
3
|
-
VERSION = "1.0.
|
3
|
+
VERSION = "1.0.14"
|
4
4
|
JQUERY_VERSION = "1.6.2"
|
5
5
|
JQUERY_UI_VERSION = "1.8.14"
|
6
|
-
JQUERY_UJS_VERSION = "
|
6
|
+
JQUERY_UJS_VERSION = "c00a9726837756ea53404ca7e8b0f12df19a6496"
|
7
7
|
end
|
8
8
|
end
|
@@ -49,10 +49,10 @@
|
|
49
49
|
|
50
50
|
$.rails = rails = {
|
51
51
|
// Link elements bound by jquery-ujs
|
52
|
-
linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]',
|
52
|
+
linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote], a[data-disable-with]',
|
53
53
|
|
54
54
|
// Select elements bound by jquery-ujs
|
55
|
-
|
55
|
+
inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',
|
56
56
|
|
57
57
|
// Form elements bound by jquery-ujs
|
58
58
|
formSubmitSelector: 'form',
|
@@ -72,6 +72,9 @@
|
|
72
72
|
// Form file input elements
|
73
73
|
fileInputSelector: 'input:file',
|
74
74
|
|
75
|
+
// Link onClick disable selector with possible reenable after remote submission
|
76
|
+
linkDisableSelector: 'a[data-disable-with]',
|
77
|
+
|
75
78
|
// Make sure that every Ajax request sends the CSRF token
|
76
79
|
CSRFProtection: function(xhr) {
|
77
80
|
var token = $('meta[name="csrf-token"]').attr('content');
|
@@ -99,7 +102,8 @@
|
|
99
102
|
handleRemote: function(element) {
|
100
103
|
var method, url, data,
|
101
104
|
crossDomain = element.data('cross-domain') || null,
|
102
|
-
dataType = element.data('type') || ($.ajaxSettings && $.ajaxSettings.dataType)
|
105
|
+
dataType = element.data('type') || ($.ajaxSettings && $.ajaxSettings.dataType),
|
106
|
+
options;
|
103
107
|
|
104
108
|
if (rails.fire(element, 'ajax:before')) {
|
105
109
|
|
@@ -113,15 +117,15 @@
|
|
113
117
|
data.push(button);
|
114
118
|
element.data('ujs:submit-button', null);
|
115
119
|
}
|
116
|
-
} else if (element.is(
|
120
|
+
} else if (element.is(rails.inputChangeSelector)) {
|
117
121
|
method = element.data('method');
|
118
122
|
url = element.data('url');
|
119
123
|
data = element.serialize();
|
120
|
-
if (element.data('params')) data = data + "&" + element.data('params');
|
124
|
+
if (element.data('params')) data = data + "&" + element.data('params');
|
121
125
|
} else {
|
122
|
-
|
123
|
-
|
124
|
-
|
126
|
+
method = element.data('method');
|
127
|
+
url = element.attr('href');
|
128
|
+
data = element.data('params') || null;
|
125
129
|
}
|
126
130
|
|
127
131
|
options = {
|
@@ -143,8 +147,8 @@
|
|
143
147
|
element.trigger('ajax:error', [xhr, status, error]);
|
144
148
|
}
|
145
149
|
};
|
146
|
-
//
|
147
|
-
if (url) {
|
150
|
+
// Only pass url to `ajax` options if not blank
|
151
|
+
if (url) { options.url = url; }
|
148
152
|
|
149
153
|
rails.ajax(options);
|
150
154
|
}
|
@@ -252,15 +256,43 @@
|
|
252
256
|
});
|
253
257
|
}
|
254
258
|
return continuePropagation;
|
259
|
+
},
|
260
|
+
|
261
|
+
// replace element's html with the 'data-disable-with' after storing original html
|
262
|
+
// and prevent clicking on it
|
263
|
+
disableElement: function(element) {
|
264
|
+
element.data('ujs:enable-with', element.html()); // store enabled state
|
265
|
+
element.html(element.data('disable-with')); // set to disabled state
|
266
|
+
element.bind('click.railsDisable', function(e) { // prevent further clicking
|
267
|
+
return rails.stopEverything(e)
|
268
|
+
});
|
269
|
+
},
|
270
|
+
|
271
|
+
// restore element to its original state which was disabled by 'disableElement' above
|
272
|
+
enableElement: function(element) {
|
273
|
+
if (element.data('ujs:enable-with') !== undefined) {
|
274
|
+
element.html(element.data('ujs:enable-with')); // set to old enabled state
|
275
|
+
// this should be element.removeData('ujs:enable-with')
|
276
|
+
// but, there is currently a bug in jquery which makes hyphenated data attributes not get removed
|
277
|
+
element.data('ujs:enable-with', false); // clean up cache
|
278
|
+
}
|
279
|
+
element.unbind('click.railsDisable'); // enable element
|
255
280
|
}
|
281
|
+
|
256
282
|
};
|
257
283
|
|
258
284
|
$.ajaxPrefilter(function(options, originalOptions, xhr){ if ( !options.crossDomain ) { rails.CSRFProtection(xhr); }});
|
259
285
|
|
286
|
+
$(rails.linkDisableSelector).live('ajax:complete', function() {
|
287
|
+
rails.enableElement($(this));
|
288
|
+
});
|
289
|
+
|
260
290
|
$(rails.linkClickSelector).live('click.rails', function(e) {
|
261
291
|
var link = $(this);
|
262
292
|
if (!rails.allowAction(link)) return rails.stopEverything(e);
|
263
293
|
|
294
|
+
if (link.is(rails.linkDisableSelector)) rails.disableElement(link);
|
295
|
+
|
264
296
|
if (link.data('remote') !== undefined) {
|
265
297
|
rails.handleRemote(link);
|
266
298
|
return false;
|
@@ -270,13 +302,13 @@
|
|
270
302
|
}
|
271
303
|
});
|
272
304
|
|
273
|
-
$(rails.
|
305
|
+
$(rails.inputChangeSelector).live('change.rails', function(e) {
|
274
306
|
var link = $(this);
|
275
307
|
if (!rails.allowAction(link)) return rails.stopEverything(e);
|
276
308
|
|
277
309
|
rails.handleRemote(link);
|
278
310
|
return false;
|
279
|
-
});
|
311
|
+
});
|
280
312
|
|
281
313
|
$(rails.formSubmitSelector).live('submit.rails', function(e) {
|
282
314
|
var form = $(this),
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: jquery-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 1.0.
|
5
|
+
version: 1.0.14
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- "Andr\xC3\xA9 Arko"
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-08
|
13
|
+
date: 2011-09-08 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: railties
|