cruyff 0.0.1 → 0.1.0
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/SpecRunner.html +3 -2
- data/lib/cruyff/version.rb +1 -1
- data/lib/cruyff.rb +20 -0
- data/lib/generators/cruyff/install/install_generator.rb +61 -0
- data/lib/generators/cruyff/templates/jquery.cruyff.js +89 -0
- data/{spec/js_lib/rails-11.01.12.js → lib/generators/cruyff/templates/rails.js} +12 -3
- data/spec/CruyffSpec.js +10 -4
- metadata +58 -59
- data/lib/generators/cruyff_generator.rb +0 -14
- data/lib/generators/templates/jquery.cruyff.js +0 -174
data/SpecRunner.html
CHANGED
@@ -8,10 +8,10 @@
|
|
8
8
|
<script type="text/javascript" src="spec/js_lib/jquery-1.4.4.js"></script>
|
9
9
|
<script type="text/javascript" src="spec/js_lib/jquery.ba-bbq-1.2.1.js"></script>
|
10
10
|
<script type="text/javascript" src="spec/js_lib/jquery.form-2.52.js"></script>
|
11
|
-
<script type="text/javascript" src="spec/js_lib/rails-11.01.12.js"></script>
|
12
11
|
<script type="text/javascript" src="spec/js_lib/jasmine-jquery-1.1.3.js"></script>
|
13
12
|
|
14
|
-
<script type="text/javascript" src="lib/generators/templates/
|
13
|
+
<script type="text/javascript" src="lib/generators/cruyff/templates/rails.js"></script>
|
14
|
+
<script type="text/javascript" src="lib/generators/cruyff/templates/jquery.cruyff.js"></script>
|
15
15
|
|
16
16
|
<script type="text/javascript" src="spec/SpecHelper.js"></script>
|
17
17
|
<script type="text/javascript" src="spec/js_lib/jasmine-fixture.js"></script>
|
@@ -24,6 +24,7 @@
|
|
24
24
|
<script type="text/javascript">
|
25
25
|
$(function() {
|
26
26
|
/*
|
27
|
+
//this ajax call don't works on chrome. WTF???
|
27
28
|
$.ajax({
|
28
29
|
url: 'spec/fixtures/view.html',
|
29
30
|
success: function(data, status, xhr) {
|
data/lib/cruyff/version.rb
CHANGED
data/lib/cruyff.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
module Jquery
|
2
|
+
module Rails
|
3
|
+
class Railtie < ::Rails::Railtie
|
4
|
+
|
5
|
+
config.before_configuration do
|
6
|
+
require "jquery-rails/assert_select_jquery" if ::Rails.env.test?
|
7
|
+
|
8
|
+
if ::Rails.root.join("public/javascripts/jquery-ui.min.js").exist?
|
9
|
+
jq_defaults = %w(jquery jquery-ui)
|
10
|
+
jq_defaults.map!{|a| a + ".min" } if ::Rails.env.production?
|
11
|
+
else
|
12
|
+
jq_defaults = ::Rails.env.production? ? %w(jquery.min) : %w(jquery)
|
13
|
+
end
|
14
|
+
|
15
|
+
config.action_view.javascript_expansions[:defaults] = jq_defaults + %w(rails)
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Cruyff
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < ::Rails::Generators::Base
|
4
|
+
desc "This generator downloads and installs jQuery, jQuery-ujs HEAD, and (optionally) the newest jQuery UI"
|
5
|
+
class_option :ui, :type => :boolean, :default => false, :desc => "Include jQueryUI"
|
6
|
+
class_option :version, :type => :string, :default => "1.4.4", :desc => "Which version of jQuery to fetch"
|
7
|
+
@@default_version = "1.4.4"
|
8
|
+
|
9
|
+
def remove_prototype
|
10
|
+
%w(controls.js dragdrop.js effects.js prototype.js).each do |js|
|
11
|
+
remove_file "public/javascripts/#{js}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def download_jquery
|
16
|
+
say_status("fetching", "jQuery (#{options.version})", :green)
|
17
|
+
get_jquery(options.version)
|
18
|
+
rescue OpenURI::HTTPError
|
19
|
+
say_status("warning", "could not find jQuery (#{options.version})", :yellow)
|
20
|
+
say_status("fetching", "jQuery (#{@@default_version})", :green)
|
21
|
+
get_jquery(@@default_version)
|
22
|
+
end
|
23
|
+
|
24
|
+
def download_jquery_ui
|
25
|
+
if options.ui?
|
26
|
+
say_status("fetching", "jQuery UI (latest 1.x release)", :green)
|
27
|
+
get "http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.js", "public/javascripts/jquery-ui.js"
|
28
|
+
get "http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js", "public/javascripts/jquery-ui.min.js"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def download_ujs_driver
|
33
|
+
say_status("fetching", "jQuery UJS Cruyff adapter (github HEAD)", :green)
|
34
|
+
get "https://github.com/andref5/cruyff/raw/master/lib/generators/cruyff/templates/rails.js", "public/javascripts/rails.js"
|
35
|
+
end
|
36
|
+
|
37
|
+
def download_cruyff
|
38
|
+
say_status("fetching", "jQuery Cruyff plugin (github HEAD)", :green)
|
39
|
+
get "https://github.com/andref5/cruyff/raw/master/lib/generators/cruyff/templates/jquery.cruyff.js", "public/javascripts/jquery.cruyff.js"
|
40
|
+
end
|
41
|
+
|
42
|
+
def download_jquery_bbq
|
43
|
+
say_status("fetching", "jQuery BBQ plugin: Back Button & Query Library (github HEAD)", :green)
|
44
|
+
get "https://github.com/cowboy/jquery-bbq/raw/master/jquery.ba-bbq.js", "public/javascripts/jquery.ba-bbq.js"
|
45
|
+
end
|
46
|
+
|
47
|
+
def download_jquery_form
|
48
|
+
say_status("fetching", "jQuery Form plugin (github HEAD)", :green)
|
49
|
+
get "https://github.com/malsup/form/raw/master/jquery.form.js", "public/javascripts/jquery.form.js"
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def get_jquery(version)
|
55
|
+
get "http://ajax.googleapis.com/ajax/libs/jquery/#{version}/jquery.js", "public/javascripts/jquery.js"
|
56
|
+
get "http://ajax.googleapis.com/ajax/libs/jquery/#{version}/jquery.min.js", "public/javascripts/jquery.min.js"
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
(function($) {
|
2
|
+
|
3
|
+
var cruyffSettings = {
|
4
|
+
url: "",
|
5
|
+
method: "",
|
6
|
+
dataType: "",
|
7
|
+
data: "",
|
8
|
+
responseSelector: "#response",
|
9
|
+
response: [],
|
10
|
+
};
|
11
|
+
|
12
|
+
$.fn.handleRemoteCrud = function(element) {
|
13
|
+
var cs = this.cruyffSetup(element);
|
14
|
+
|
15
|
+
//call ajaxSubmit from jquery.form because provides a file upload mechanism.
|
16
|
+
element.ajaxSubmit({
|
17
|
+
url: cs.url,
|
18
|
+
type: cs.method || 'GET',
|
19
|
+
data: cs.data,
|
20
|
+
dataType: cs.dataType,
|
21
|
+
// stopping the "ajax:beforeSend" event will cancel the ajax request
|
22
|
+
beforeSend: function(xhr, settings) {
|
23
|
+
if (settings.dataType === undefined) {
|
24
|
+
xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script);
|
25
|
+
}
|
26
|
+
return fire(element, 'ajax:beforeSend', [xhr, settings]);
|
27
|
+
},
|
28
|
+
success: function(data, status, xhr) {
|
29
|
+
element.trigger('ajax:success', [data, status, xhr]);
|
30
|
+
cs.response.html(data);
|
31
|
+
},
|
32
|
+
complete: function(xhr, status) {
|
33
|
+
element.trigger('ajax:complete', [xhr, status]);
|
34
|
+
},
|
35
|
+
error: function(xhr, status, error) {
|
36
|
+
element.trigger('ajax:error', [xhr, status, error]);
|
37
|
+
cs.response.html(error.toString());
|
38
|
+
}
|
39
|
+
});
|
40
|
+
|
41
|
+
$.bbq.pushState("app=" + cs.url);
|
42
|
+
|
43
|
+
};
|
44
|
+
|
45
|
+
$.fn.cruyffSetup = function(element) {
|
46
|
+
var cs = cruyffSettings;
|
47
|
+
|
48
|
+
cs.response = $(cs.responseSelector);
|
49
|
+
|
50
|
+
/**
|
51
|
+
* Rails.js Code 2011-01-12
|
52
|
+
**/
|
53
|
+
cs.dataType = element.attr('data-type') || ($.ajaxSettings && $.ajaxSettings.dataType);
|
54
|
+
|
55
|
+
if (element.is('form')) {
|
56
|
+
cs.method = element.attr('method');
|
57
|
+
cs.url = element.attr('action');
|
58
|
+
cs.data = element.serializeArray();
|
59
|
+
// memoized value from clicked submit button
|
60
|
+
var button = element.data('ujs:submit-button');
|
61
|
+
if (button) {
|
62
|
+
cs.data.push(button);
|
63
|
+
element.data('ujs:submit-button', null);
|
64
|
+
}
|
65
|
+
} else {
|
66
|
+
cs.method = element.attr('data-method');
|
67
|
+
cs.url = element.attr('href');
|
68
|
+
cs.data = null;
|
69
|
+
}
|
70
|
+
/**
|
71
|
+
* End Rails.js
|
72
|
+
**/
|
73
|
+
|
74
|
+
return cs;
|
75
|
+
};
|
76
|
+
|
77
|
+
//Override rails.js handleRemote
|
78
|
+
$.fn.handleRemote = function(element) {
|
79
|
+
this.handleRemoteCrud(element);
|
80
|
+
};
|
81
|
+
|
82
|
+
//Wrapper to rails.js fire function
|
83
|
+
function fire(obj, name, data) {
|
84
|
+
$.fn.fire(obj, name, data);
|
85
|
+
}
|
86
|
+
|
87
|
+
//$.fn.cruyffUrl = $.bbq.getState("app");
|
88
|
+
|
89
|
+
})( jQuery );
|
@@ -7,14 +7,22 @@
|
|
7
7
|
|
8
8
|
(function($) {
|
9
9
|
// Triggers an event on an element and returns the event result
|
10
|
-
|
10
|
+
function fire(obj, name, data) {
|
11
|
+
this.fire(obj, name, data);
|
12
|
+
}
|
13
|
+
// create a jQuery object to call from another context
|
14
|
+
$.fn.fire = function (obj, name, data) {
|
11
15
|
var event = new $.Event(name);
|
12
16
|
obj.trigger(event, data);
|
13
17
|
return event.result !== false;
|
14
18
|
}
|
15
19
|
|
16
20
|
// Submits "remote" forms and links with ajax
|
17
|
-
|
21
|
+
function handleRemote(element) {
|
22
|
+
$.fn.handleRemote(element);
|
23
|
+
}
|
24
|
+
// create a jQuery object to override
|
25
|
+
$.fn.handleRemote = function (element) {
|
18
26
|
var method, url, data,
|
19
27
|
dataType = element.attr('data-type') || ($.ajaxSettings && $.ajaxSettings.dataType);
|
20
28
|
|
@@ -126,7 +134,7 @@
|
|
126
134
|
var name = button.attr('name'), data = name ? {name:name, value:button.val()} : null;
|
127
135
|
button.closest('form').data('ujs:submit-button', data);
|
128
136
|
});
|
129
|
-
|
137
|
+
|
130
138
|
$('form').live('ajax:beforeSend.rails', function(event) {
|
131
139
|
if (this == event.target) disableFormElements($(this));
|
132
140
|
});
|
@@ -135,3 +143,4 @@
|
|
135
143
|
if (this == event.target) enableFormElements($(this));
|
136
144
|
});
|
137
145
|
})( jQuery );
|
146
|
+
|
data/spec/CruyffSpec.js
CHANGED
@@ -6,6 +6,12 @@ describe('Cruyff',function() {
|
|
6
6
|
$.jasmine.inject('<div id="response"></div>');
|
7
7
|
});
|
8
8
|
|
9
|
+
it('should override rails handleRemote function',function(){
|
10
|
+
spyOn($.fn, 'handleRemoteCrud');
|
11
|
+
$.fn.handleRemote('element');
|
12
|
+
expect($.fn.handleRemoteCrud).wasCalled();
|
13
|
+
})
|
14
|
+
|
9
15
|
describe('Setup from hyperlink', function() {
|
10
16
|
beforeEach(function() {
|
11
17
|
$.jasmine.inject('<a href="spec/fixtures/view.html"\
|
@@ -110,7 +116,7 @@ describe('Cruyff',function() {
|
|
110
116
|
|
111
117
|
it('should render success response',function(){
|
112
118
|
runs(function() {
|
113
|
-
|
119
|
+
element.trigger('click');
|
114
120
|
});
|
115
121
|
waits(100);
|
116
122
|
runs(function() {
|
@@ -121,7 +127,7 @@ describe('Cruyff',function() {
|
|
121
127
|
it('should render error response',function(){
|
122
128
|
element.attr('href', 'bad/url');
|
123
129
|
runs(function() {
|
124
|
-
|
130
|
+
element.trigger('click');
|
125
131
|
});
|
126
132
|
waits(100);
|
127
133
|
runs(function() {
|
@@ -141,7 +147,7 @@ describe('Cruyff',function() {
|
|
141
147
|
|
142
148
|
it('should bookmark',function() {
|
143
149
|
runs(function() {
|
144
|
-
|
150
|
+
element.trigger('click');
|
145
151
|
});
|
146
152
|
waits(100);
|
147
153
|
runs(function() {
|
@@ -149,7 +155,7 @@ describe('Cruyff',function() {
|
|
149
155
|
});
|
150
156
|
});
|
151
157
|
|
152
|
-
|
158
|
+
xit('should load browser url',function() {
|
153
159
|
$.bbq.pushState('app=spec/fixtures/view.html');
|
154
160
|
expect($.fn.cruyffUrl).toEqual('spec/fixtures/view.html');
|
155
161
|
});
|
metadata
CHANGED
@@ -1,40 +1,32 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cruyff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
version: 0.0.1
|
4
|
+
prerelease:
|
5
|
+
version: 0.1.0
|
10
6
|
platform: ruby
|
11
7
|
authors:
|
12
|
-
- Charger Tec
|
8
|
+
- Charger Tec
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
12
|
|
17
|
-
date: 2011-01-
|
13
|
+
date: 2011-01-21 00:00:00 -02:00
|
18
14
|
default_executable:
|
19
15
|
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
- 6
|
32
|
-
version: 0.2.6
|
33
|
-
type: :runtime
|
34
|
-
version_requirements: *id001
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: jquery-rails
|
18
|
+
prerelease: false
|
19
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
|
+
none: false
|
21
|
+
requirements:
|
22
|
+
- - ~>
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: 0.2.6
|
25
|
+
type: :runtime
|
26
|
+
version_requirements: *id001
|
35
27
|
description: Cruyff is a Ajax CRUD solution for Rails applications.
|
36
28
|
email:
|
37
|
-
- DM @andrefarina
|
29
|
+
- DM @andrefarina
|
38
30
|
executables: []
|
39
31
|
|
40
32
|
extensions: []
|
@@ -42,27 +34,28 @@ extensions: []
|
|
42
34
|
extra_rdoc_files: []
|
43
35
|
|
44
36
|
files:
|
45
|
-
- .gitignore
|
46
|
-
- Gemfile
|
47
|
-
- Rakefile
|
48
|
-
- Readme.md
|
49
|
-
- SpecRunner.html
|
50
|
-
- cruyff.gemspec
|
51
|
-
- lib/cruyff
|
52
|
-
- lib/
|
53
|
-
- lib/generators/
|
54
|
-
-
|
55
|
-
-
|
56
|
-
- spec/
|
57
|
-
- spec/
|
58
|
-
- spec/
|
59
|
-
- spec/js_lib/jasmine-1.0.1/jasmine.js
|
60
|
-
- spec/js_lib/jasmine-
|
61
|
-
- spec/js_lib/jasmine-
|
62
|
-
- spec/js_lib/
|
63
|
-
- spec/js_lib/jquery
|
64
|
-
- spec/js_lib/jquery
|
65
|
-
- spec/js_lib/
|
37
|
+
- .gitignore
|
38
|
+
- Gemfile
|
39
|
+
- Rakefile
|
40
|
+
- Readme.md
|
41
|
+
- SpecRunner.html
|
42
|
+
- cruyff.gemspec
|
43
|
+
- lib/cruyff.rb
|
44
|
+
- lib/cruyff/version.rb
|
45
|
+
- lib/generators/cruyff/install/install_generator.rb
|
46
|
+
- lib/generators/cruyff/templates/jquery.cruyff.js
|
47
|
+
- lib/generators/cruyff/templates/rails.js
|
48
|
+
- spec/CruyffSpec.js
|
49
|
+
- spec/SpecHelper.js
|
50
|
+
- spec/fixtures/view.html
|
51
|
+
- spec/js_lib/jasmine-1.0.1/jasmine-html.js
|
52
|
+
- spec/js_lib/jasmine-1.0.1/jasmine.css
|
53
|
+
- spec/js_lib/jasmine-1.0.1/jasmine.js
|
54
|
+
- spec/js_lib/jasmine-fixture.js
|
55
|
+
- spec/js_lib/jasmine-jquery-1.1.3.js
|
56
|
+
- spec/js_lib/jquery-1.4.4.js
|
57
|
+
- spec/js_lib/jquery.ba-bbq-1.2.1.js
|
58
|
+
- spec/js_lib/jquery.form-2.52.js
|
66
59
|
has_rdoc: true
|
67
60
|
homepage: https://github.com/andref5/cruyff
|
68
61
|
licenses: []
|
@@ -71,29 +64,35 @@ post_install_message:
|
|
71
64
|
rdoc_options: []
|
72
65
|
|
73
66
|
require_paths:
|
74
|
-
- lib
|
67
|
+
- lib
|
75
68
|
required_ruby_version: !ruby/object:Gem::Requirement
|
76
69
|
none: false
|
77
70
|
requirements:
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
- 0
|
82
|
-
version: "0"
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: "0"
|
83
74
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
84
75
|
none: false
|
85
76
|
requirements:
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
- 0
|
90
|
-
version: "0"
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: "0"
|
91
80
|
requirements: []
|
92
81
|
|
93
82
|
rubyforge_project:
|
94
|
-
rubygems_version: 1.
|
83
|
+
rubygems_version: 1.4.2
|
95
84
|
signing_key:
|
96
85
|
specification_version: 3
|
97
86
|
summary: Ajax CRUD solution for Rails applications.
|
98
|
-
test_files:
|
99
|
-
|
87
|
+
test_files:
|
88
|
+
- spec/CruyffSpec.js
|
89
|
+
- spec/SpecHelper.js
|
90
|
+
- spec/fixtures/view.html
|
91
|
+
- spec/js_lib/jasmine-1.0.1/jasmine-html.js
|
92
|
+
- spec/js_lib/jasmine-1.0.1/jasmine.css
|
93
|
+
- spec/js_lib/jasmine-1.0.1/jasmine.js
|
94
|
+
- spec/js_lib/jasmine-fixture.js
|
95
|
+
- spec/js_lib/jasmine-jquery-1.1.3.js
|
96
|
+
- spec/js_lib/jquery-1.4.4.js
|
97
|
+
- spec/js_lib/jquery.ba-bbq-1.2.1.js
|
98
|
+
- spec/js_lib/jquery.form-2.52.js
|
@@ -1,14 +0,0 @@
|
|
1
|
-
require 'rails/generators'
|
2
|
-
|
3
|
-
class CruyffGenerator < Rails::Generators::Base
|
4
|
-
def self.source_root
|
5
|
-
File.join(File.dirname(__FILE__), 'templates')
|
6
|
-
end
|
7
|
-
|
8
|
-
def install_cruyff
|
9
|
-
copy_file(
|
10
|
-
'jquery.cruyff.js',
|
11
|
-
'public/javascripts/jquery.cruyff.js'
|
12
|
-
)
|
13
|
-
end
|
14
|
-
end
|
@@ -1,174 +0,0 @@
|
|
1
|
-
(function($) {
|
2
|
-
|
3
|
-
var cruyffSettings = {
|
4
|
-
url: "",
|
5
|
-
method: "",
|
6
|
-
dataType: "",
|
7
|
-
data: "",
|
8
|
-
responseSelector: "#response",
|
9
|
-
response: [],
|
10
|
-
};
|
11
|
-
|
12
|
-
$.fn.handleRemoteCrud = function(element) {
|
13
|
-
var cs = this.cruyffSetup(element);
|
14
|
-
|
15
|
-
//call ajaxSubmit from jquery.form because provides a file upload mechanism.
|
16
|
-
element.ajaxSubmit({
|
17
|
-
url: cs.url,
|
18
|
-
type: cs.method || 'GET',
|
19
|
-
data: cs.data,
|
20
|
-
dataType: cs.dataType,
|
21
|
-
// stopping the "ajax:beforeSend" event will cancel the ajax request
|
22
|
-
beforeSend: function(xhr, settings) {
|
23
|
-
if (settings.dataType === undefined) {
|
24
|
-
xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script);
|
25
|
-
}
|
26
|
-
return fire(element, 'ajax:beforeSend', [xhr, settings]);
|
27
|
-
},
|
28
|
-
success: function(data, status, xhr) {
|
29
|
-
element.trigger('ajax:success', [data, status, xhr]);
|
30
|
-
cs.response.html(data);
|
31
|
-
},
|
32
|
-
complete: function(xhr, status) {
|
33
|
-
element.trigger('ajax:complete', [xhr, status]);
|
34
|
-
},
|
35
|
-
error: function(xhr, status, error) {
|
36
|
-
element.trigger('ajax:error', [xhr, status, error]);
|
37
|
-
cs.response.html(error.toString());
|
38
|
-
}
|
39
|
-
});
|
40
|
-
|
41
|
-
$.bbq.pushState("app=" + cs.url);
|
42
|
-
|
43
|
-
};
|
44
|
-
function handleRemote(element) {
|
45
|
-
$.fn.handleRemoteCrud(element);
|
46
|
-
}
|
47
|
-
|
48
|
-
$.fn.cruyffSetup = function(element) {
|
49
|
-
var cs = cruyffSettings;
|
50
|
-
|
51
|
-
cs.response = $(cs.responseSelector);
|
52
|
-
|
53
|
-
/**
|
54
|
-
* Rails.js Code 2011-01-12
|
55
|
-
**/
|
56
|
-
cs.dataType = element.attr('data-type') || ($.ajaxSettings && $.ajaxSettings.dataType);
|
57
|
-
|
58
|
-
if (element.is('form')) {
|
59
|
-
cs.method = element.attr('method');
|
60
|
-
cs.url = element.attr('action');
|
61
|
-
cs.data = element.serializeArray();
|
62
|
-
// memoized value from clicked submit button
|
63
|
-
var button = element.data('ujs:submit-button');
|
64
|
-
if (button) {
|
65
|
-
cs.data.push(button);
|
66
|
-
element.data('ujs:submit-button', null);
|
67
|
-
}
|
68
|
-
} else {
|
69
|
-
cs.method = element.attr('data-method');
|
70
|
-
cs.url = element.attr('href');
|
71
|
-
cs.data = null;
|
72
|
-
}
|
73
|
-
/**
|
74
|
-
* End Rails.js $.bbq.getState
|
75
|
-
**/
|
76
|
-
|
77
|
-
return cs;
|
78
|
-
};
|
79
|
-
|
80
|
-
$.fn.cruyffUrl = $.bbq.getState("app");
|
81
|
-
|
82
|
-
console.log($.fn.cruyffUrl);
|
83
|
-
|
84
|
-
/**
|
85
|
-
* Rails.js Code 2011-01-12. I don't know yet how to override inner functions.
|
86
|
-
**/
|
87
|
-
function fire(obj, name, data) {
|
88
|
-
var event = new $.Event(name);
|
89
|
-
obj.trigger(event, data);
|
90
|
-
return event.result !== false;
|
91
|
-
}
|
92
|
-
// Handles "data-method" on links such as:
|
93
|
-
// <a href="/users/5" data-method="delete" rel="nofollow" data-confirm="Are you sure?">Delete</a>
|
94
|
-
function handleMethod(link) {
|
95
|
-
var href = link.attr('href'),
|
96
|
-
method = link.attr('data-method'),
|
97
|
-
csrf_token = $('meta[name=csrf-token]').attr('content'),
|
98
|
-
csrf_param = $('meta[name=csrf-param]').attr('content'),
|
99
|
-
form = $('<form method="post" action="' + href + '"></form>'),
|
100
|
-
metadata_input = '<input name="_method" value="' + method + '" type="hidden" />';
|
101
|
-
|
102
|
-
if (csrf_param !== undefined && csrf_token !== undefined) {
|
103
|
-
metadata_input += '<input name="' + csrf_param + '" value="' + csrf_token + '" type="hidden" />';
|
104
|
-
}
|
105
|
-
|
106
|
-
form.hide().append(metadata_input).appendTo('body');
|
107
|
-
form.submit();
|
108
|
-
}
|
109
|
-
|
110
|
-
function disableFormElements(form) {
|
111
|
-
form.find('input[data-disable-with]').each(function() {
|
112
|
-
var input = $(this);
|
113
|
-
input.data('ujs:enable-with', input.val())
|
114
|
-
.val(input.attr('data-disable-with'))
|
115
|
-
.attr('disabled', 'disabled');
|
116
|
-
});
|
117
|
-
}
|
118
|
-
|
119
|
-
function enableFormElements(form) {
|
120
|
-
form.find('input[data-disable-with]').each(function() {
|
121
|
-
var input = $(this);
|
122
|
-
input.val(input.data('ujs:enable-with')).removeAttr('disabled');
|
123
|
-
});
|
124
|
-
}
|
125
|
-
|
126
|
-
function allowAction(element) {
|
127
|
-
var message = element.attr('data-confirm');
|
128
|
-
return !message || (fire(element, 'confirm') && confirm(message));
|
129
|
-
}
|
130
|
-
|
131
|
-
$('a[data-confirm], a[data-method], a[data-remote]').die('click.rails').live('click.rails', function(e) {
|
132
|
-
var link = $(this);
|
133
|
-
if (!allowAction(link)) return false;
|
134
|
-
|
135
|
-
if (link.attr('data-remote')) {
|
136
|
-
handleRemote(link);
|
137
|
-
return false;
|
138
|
-
} else if (link.attr('data-method')) {
|
139
|
-
handleMethod(link);
|
140
|
-
return false;
|
141
|
-
}
|
142
|
-
});
|
143
|
-
|
144
|
-
$('form').die('submit.rails').live('submit.rails', function(e) {
|
145
|
-
var form = $(this);
|
146
|
-
if (!allowAction(form)) return false;
|
147
|
-
|
148
|
-
if (form.attr('data-remote')) {
|
149
|
-
handleRemote(form);
|
150
|
-
return false;
|
151
|
-
} else {
|
152
|
-
disableFormElements(form);
|
153
|
-
}
|
154
|
-
});
|
155
|
-
|
156
|
-
$('form input[type=submit], form button[type=submit], form button:not([type])').die('click.rails').live('click.rails', function() {
|
157
|
-
var button = $(this);
|
158
|
-
if (!allowAction(button)) return false;
|
159
|
-
// register the pressed submit button
|
160
|
-
var name = button.attr('name'), data = name ? {name:name, value:button.val()} : null;
|
161
|
-
button.closest('form').data('ujs:submit-button', data);
|
162
|
-
});
|
163
|
-
|
164
|
-
$('form').live('ajax:beforeSend.rails', function(event) {
|
165
|
-
if (this == event.target) disableFormElements($(this));
|
166
|
-
});
|
167
|
-
|
168
|
-
$('form').live('ajax:complete.rails', function(event) {
|
169
|
-
if (this == event.target) enableFormElements($(this));
|
170
|
-
});
|
171
|
-
/**
|
172
|
-
* End Rails.js
|
173
|
-
**/
|
174
|
-
})( jQuery );
|