rad_js 0.0.3 → 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/Rakefile +1 -0
- data/static/lib/mootools.extensions.js +136 -0
- data/static/lib/rad.css +3 -0
- data/static/lib/rad.js +162 -0
- data/static/old/jquery.js +4376 -0
- data/static/old/old.js +76 -0
- data/static/old/rad.jquery.js +273 -0
- data/static/vendor/mootools.js +5928 -0
- metadata +8 -1
data/Rakefile
CHANGED
@@ -0,0 +1,136 @@
|
|
1
|
+
//
|
2
|
+
// rad.assets.require '/vendor/mootools.js'
|
3
|
+
//
|
4
|
+
|
5
|
+
//
|
6
|
+
// Utility functions
|
7
|
+
//
|
8
|
+
var p=function(){
|
9
|
+
return console.log.apply(console, arguments);
|
10
|
+
};
|
11
|
+
|
12
|
+
//
|
13
|
+
// String extensions
|
14
|
+
//
|
15
|
+
String.implement({
|
16
|
+
blank: function(){return this.test(/^\s*$/);},
|
17
|
+
size: function(){return this.length;},
|
18
|
+
toElements: function(bang){
|
19
|
+
var list;
|
20
|
+
if (this.match(/^\s*</)){
|
21
|
+
list = Elements.from("" + this);
|
22
|
+
}else{
|
23
|
+
list = $$("" + this);
|
24
|
+
};
|
25
|
+
if(bang && (list.size() == 0)) throw "no elements '" + this + "'!";
|
26
|
+
return list;
|
27
|
+
},
|
28
|
+
toElement: function(bang){
|
29
|
+
var e = this.toElements().first();
|
30
|
+
if(bang && !e) throw "no element '" + this + "'!";
|
31
|
+
return e
|
32
|
+
}
|
33
|
+
});
|
34
|
+
|
35
|
+
|
36
|
+
//
|
37
|
+
// Array extensions
|
38
|
+
//
|
39
|
+
Array.implement({
|
40
|
+
any: function(){return this.some.apply(this, arguments);},
|
41
|
+
add: function(){return this.push.apply(this, arguments);},
|
42
|
+
blank: function(){return this.length == 0;},
|
43
|
+
size: function(){return this.length;},
|
44
|
+
first: function(){return this[0];},
|
45
|
+
last: function(){return this[this.length-1];},
|
46
|
+
reject: function(fn, bind){return this.filter(function(){return !fn.apply(this, arguments)});},
|
47
|
+
none: function(fn, bind){return !this.any.apply(this, arguments);},
|
48
|
+
clear: function(){return this.empty.apply(this, arguments);},
|
49
|
+
});
|
50
|
+
|
51
|
+
|
52
|
+
//
|
53
|
+
// Elements
|
54
|
+
//
|
55
|
+
Elements.implement({
|
56
|
+
applyOnce: function(identifier, fn){this.invoke('applyOnce', identifier, fn);},
|
57
|
+
// appendElement: function(obj){this.invoke('append', obj);},
|
58
|
+
toElements: function(bang){
|
59
|
+
if(bang && (this.size() == 0)) throw "no elements!";
|
60
|
+
return this;
|
61
|
+
},
|
62
|
+
toElement: function(bang){
|
63
|
+
if(bang && (this.size() == 0)) throw "no element!";
|
64
|
+
return this.first();
|
65
|
+
}
|
66
|
+
// last: function(){return this[this.length-1];}
|
67
|
+
// show: function(){this.invoke('show');},
|
68
|
+
// hide: function(){this.invoke('hide');},
|
69
|
+
});
|
70
|
+
|
71
|
+
|
72
|
+
//
|
73
|
+
// Element extensions
|
74
|
+
//
|
75
|
+
Element.implement({
|
76
|
+
getChild: function(){return this.getChildren.apply(this, arguments).first();},
|
77
|
+
getElement: function(){return this.getElements.apply(this, arguments).first();},
|
78
|
+
// appendElement: function(obj){obj.toElements().inject(this);},
|
79
|
+
applyOnce: function(identifier, fn){
|
80
|
+
if(!this.retrieve(identifier)){
|
81
|
+
fn.apply(this, [this]);
|
82
|
+
this.store(identifier, 'initialized');
|
83
|
+
}
|
84
|
+
},
|
85
|
+
classNames: function(){
|
86
|
+
return this.className.clean().split(/\s+/);
|
87
|
+
},
|
88
|
+
toElements: function(bang){return new Elements(this)},
|
89
|
+
toElement: function(bang){return this;},
|
90
|
+
replaceWith: function(obj){obj.toElements(true).replaces(this);},
|
91
|
+
// append: function(obj){obj.toElements().inject(this)},
|
92
|
+
identify: function(){
|
93
|
+
var id = this.get('id');
|
94
|
+
if(!id){
|
95
|
+
var i = 0;
|
96
|
+
do {
|
97
|
+
i++;
|
98
|
+
id = 'auto_id_' + i;
|
99
|
+
} while($(id));
|
100
|
+
this.set('id', id);
|
101
|
+
}
|
102
|
+
return id;
|
103
|
+
},
|
104
|
+
getData: function(name, value){
|
105
|
+
return this.getProperty('data-' + name);
|
106
|
+
},
|
107
|
+
setData: function(name, value){
|
108
|
+
this.setProperty('data-' + name, value);
|
109
|
+
return this;
|
110
|
+
},
|
111
|
+
getInnerSize: function(){
|
112
|
+
var dim = this.getComputedSize();
|
113
|
+
return {x: dim.width, y: dim.height};
|
114
|
+
},
|
115
|
+
getOuterSize: function(){
|
116
|
+
var dim = this.getComputedSize({styles: ['margin', 'border', 'padding']});
|
117
|
+
return {x: dim.totalWidth, y: dim.totalHeight};
|
118
|
+
},
|
119
|
+
getSpaceSize: function(){
|
120
|
+
var dim = this.getComputedSize({styles: ['margin', 'border', 'padding']});
|
121
|
+
return {x: dim.computedLeft + dim.computedRight, y: dim.computedTop + dim.computedBottom};
|
122
|
+
},
|
123
|
+
highlight: function(){
|
124
|
+
this.setStyle('border', "5px solid yellow");
|
125
|
+
},
|
126
|
+
hover: function(fn1,fn2) {
|
127
|
+
return this.addEvents({
|
128
|
+
mouseenter: function(e) {
|
129
|
+
fn1.apply(this, [e]);
|
130
|
+
},
|
131
|
+
mouseleave: function(e) {
|
132
|
+
fn2.apply(this, [e]);
|
133
|
+
}
|
134
|
+
});
|
135
|
+
}
|
136
|
+
});
|
data/static/lib/rad.css
ADDED
data/static/lib/rad.js
ADDED
@@ -0,0 +1,162 @@
|
|
1
|
+
//
|
2
|
+
// rad.assets.require '/lib/mootools.extensions.js'
|
3
|
+
//
|
4
|
+
|
5
|
+
|
6
|
+
Rad = new Class({
|
7
|
+
initialize: function(){
|
8
|
+
this.deferred = [];
|
9
|
+
},
|
10
|
+
defer: function(fn){
|
11
|
+
this.deferred.push(fn);
|
12
|
+
},
|
13
|
+
callDeferred: function(){
|
14
|
+
this.deferred.each(function(fn){fn()});
|
15
|
+
this.deferred = [];
|
16
|
+
}
|
17
|
+
});
|
18
|
+
|
19
|
+
//
|
20
|
+
// Request
|
21
|
+
//
|
22
|
+
Rad.Request = new Class({
|
23
|
+
Extends: Request,
|
24
|
+
|
25
|
+
options: {
|
26
|
+
method: 'post',
|
27
|
+
data: {authenticity_token: window.AUTHENTICITY_TOKEN},
|
28
|
+
evalScripts: true,
|
29
|
+
evalResponse: true,
|
30
|
+
},
|
31
|
+
|
32
|
+
success: function(text, xml){
|
33
|
+
try{
|
34
|
+
this.fireEvent('load', arguments);
|
35
|
+
this.parent(text, xml);
|
36
|
+
}catch(e){console.log(e)};
|
37
|
+
window.fireEvent('updated');
|
38
|
+
window.fireEvent('updateStyle');
|
39
|
+
},
|
40
|
+
|
41
|
+
failure: function(){
|
42
|
+
this.parent();
|
43
|
+
console.log('Rad.Request failed!');
|
44
|
+
window.fireEvent('updated');
|
45
|
+
window.fireEvent('updateStyle');
|
46
|
+
}
|
47
|
+
});
|
48
|
+
|
49
|
+
|
50
|
+
//
|
51
|
+
// Rad
|
52
|
+
//
|
53
|
+
Rad.implement({
|
54
|
+
call: function(url, data, options){
|
55
|
+
options = options || {};
|
56
|
+
options.url = url;
|
57
|
+
options.data = Object.merge({}, options.data, data);
|
58
|
+
var request = new Rad.Request(options);
|
59
|
+
request.send();
|
60
|
+
},
|
61
|
+
|
62
|
+
submitFormViaXhr: function(form, data, callback){
|
63
|
+
// callback = callback || function(){};
|
64
|
+
// var url = form.get('action');
|
65
|
+
// var formData = form.toQueryString().parseQueryString();
|
66
|
+
//
|
67
|
+
// options = {
|
68
|
+
// url: url,
|
69
|
+
// data: Object.merge({}, formData, data), // , {format: 'js'}),
|
70
|
+
// onLoad: callback
|
71
|
+
// };
|
72
|
+
// var request = new Rad.Request(options);
|
73
|
+
// request.send();
|
74
|
+
|
75
|
+
callback = callback || function(){};
|
76
|
+
var url = form.get('action');
|
77
|
+
|
78
|
+
var stringData = form.toQueryString();
|
79
|
+
if(data) stringData = stringData + '&' + Object.toQueryString(data);
|
80
|
+
|
81
|
+
options = {
|
82
|
+
url: url,
|
83
|
+
data: stringData,
|
84
|
+
onLoad: callback
|
85
|
+
};
|
86
|
+
var request = new Rad.Request(options);
|
87
|
+
request.send();
|
88
|
+
},
|
89
|
+
|
90
|
+
// submitForm: function(form, data, options){
|
91
|
+
// var url = form.get('action');
|
92
|
+
// var formData = form.toQueryString().parseQueryString();
|
93
|
+
//
|
94
|
+
// options = options || {};
|
95
|
+
// options.url = url;
|
96
|
+
// options.data = Object.merge({}, options.data, formData, data, {format: 'js'});
|
97
|
+
// var request = new Rad.Request(options);
|
98
|
+
// request.send();
|
99
|
+
// },
|
100
|
+
|
101
|
+
process_js_link: function(event){
|
102
|
+
var target = event.target;
|
103
|
+
|
104
|
+
// some element shouldn't be autosubmitted as soon as You click on it, selets for example
|
105
|
+
if(Rad.not_js_links.contains(target.get('tag'))) return;
|
106
|
+
|
107
|
+
var confirmMessage = target.getProperty('data-confirm');
|
108
|
+
if(confirmMessage && !confirm(confirmMessage)){
|
109
|
+
event.stop();
|
110
|
+
return;
|
111
|
+
};
|
112
|
+
|
113
|
+
var action = target.getProperty('data-action');
|
114
|
+
if(action){
|
115
|
+
event.stop();
|
116
|
+
|
117
|
+
var method = target.getProperty('data-method') || 'post';
|
118
|
+
var remote = target.getProperty('data-remote');
|
119
|
+
var target_id = target.identify && target.identify();
|
120
|
+
|
121
|
+
if(remote){
|
122
|
+
rad.call(action, {_method: method, _target: target_id});
|
123
|
+
}else{
|
124
|
+
var form = new Element('form', {method: 'post', action: action});
|
125
|
+
var params = {'authenticity_token': window.AUTHENTICITY_TOKEN, '_method': options.method};
|
126
|
+
params.each(function(name, value){
|
127
|
+
var input = new Element('input', {type: 'hidden', name: name, value: value});
|
128
|
+
input.inject(form);
|
129
|
+
});
|
130
|
+
document.body.inject(form);
|
131
|
+
form.submit();
|
132
|
+
}
|
133
|
+
};
|
134
|
+
}
|
135
|
+
});
|
136
|
+
Rad.not_js_links = ['select']
|
137
|
+
Rad.implement({
|
138
|
+
submitForm: Rad.prototype.submitFormViaXhr
|
139
|
+
});
|
140
|
+
|
141
|
+
rad = new Rad();
|
142
|
+
|
143
|
+
|
144
|
+
//
|
145
|
+
// JavaScript links
|
146
|
+
//
|
147
|
+
window.addEvent('domready', function(){
|
148
|
+
document.body.addEvent('click', function(event){
|
149
|
+
rad.process_js_link(event);
|
150
|
+
});
|
151
|
+
});
|
152
|
+
|
153
|
+
//
|
154
|
+
// Events
|
155
|
+
//
|
156
|
+
window.addEvent('domready', function(){
|
157
|
+
window.fireEvent('updated');
|
158
|
+
window.fireEvent('updateStyle');
|
159
|
+
});
|
160
|
+
window.addEvent('resize', function(){
|
161
|
+
window.fireEvent('updateStyle');
|
162
|
+
});
|