facebooker 1.0.68 → 1.0.69
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.
@@ -1,332 +1,93 @@
|
|
1
|
-
function $(element) {
|
2
|
-
if (typeof element == "string") {
|
3
|
-
element=document.getElementById(element);
|
4
|
-
}
|
5
|
-
if (element)
|
6
|
-
extendInstance(element,Element);
|
7
|
-
return element;
|
8
|
-
}
|
9
|
-
|
10
|
-
function getElementsByName(elementName) {
|
11
|
-
var matcher = function(element) {
|
12
|
-
return (element.getName() === elementName);
|
13
|
-
};
|
14
|
-
return domCollect(document.getRootElement(), matcher);
|
15
|
-
}
|
16
|
-
function getElementsByClass(classname) {
|
17
|
-
var matcher = function(element) {
|
18
|
-
return (element.getClassName() === classname);
|
19
|
-
};
|
20
|
-
return domCollect(document.getRootElement(), matcher);
|
21
|
-
}
|
22
|
-
//function getElementsByTagName(tagName) -> native to FJBS
|
23
|
-
|
24
|
-
extendInstance(Ajax, { //Extends the native Facebook Ajax object
|
25
|
-
/*
|
26
|
-
* Make a request to a remote server. Call the 'success' callback with the result.
|
27
|
-
* Ex: Ajax.Load('JSON','http://...',{ success: function(result){console.log(result.toSource())} }, {'json':test_content})
|
28
|
-
*/
|
29
|
-
Load: function(response_type, action_path, callbacks, post_parameters) {
|
30
|
-
callbacks = Ajax.checkCallbacks(callbacks);
|
31
|
-
var ajax = new Ajax();
|
32
|
-
switch(response_type) {
|
33
|
-
case 'FBML':
|
34
|
-
ajax.responseType = Ajax.FBML;
|
35
|
-
break;
|
36
|
-
case 'JSON':
|
37
|
-
ajax.responseType = Ajax.JSON;
|
38
|
-
break;
|
39
|
-
case 'RAW':
|
40
|
-
ajax.responseType = Ajax.RAW;
|
41
|
-
break;
|
42
|
-
default:
|
43
|
-
console.error("Unknow respons format requested. You supplied %s. Supported: 'FBML', 'RAW'", response_type);
|
44
|
-
return;
|
45
|
-
}
|
46
|
-
ajax.ondone = function(result){
|
47
|
-
callbacks.success(result);
|
48
|
-
callbacks.complete();
|
49
|
-
}
|
50
|
-
ajax.onerror = function(error_string) {
|
51
|
-
callbacks.failure(error_string);
|
52
|
-
callbacks.complete();
|
53
|
-
}
|
54
|
-
|
55
|
-
post_parameters = post_parameters || {}
|
56
|
-
post_parameters['authenticity_token'] = _token;
|
57
|
-
|
58
|
-
if(action_path.indexOf('http') == -1) {
|
59
|
-
action_path = _hostname + action_path;
|
60
|
-
}
|
61
|
-
|
62
|
-
callbacks.begin();
|
63
|
-
ajax.post(action_path,post_parameters);
|
64
|
-
},
|
65
|
-
/*
|
66
|
-
* Make a request to a remote server. Update target_element with result. Calls the 'success' callback with the result
|
67
|
-
* Ex: Ajax.Update('test1', 'FBML', 'http://...',{ success: function(result){console.log(result)} })
|
68
|
-
*/
|
69
|
-
Update: function(target_element, response_type, action_path, callbacks, post_parameters) {
|
70
|
-
callbacks = Ajax.checkCallbacks(callbacks);
|
71
|
-
var update_element = function(content) {
|
72
|
-
switch(response_type) {
|
73
|
-
case 'FBML':
|
74
|
-
$(target_element).setInnerFBML(content);
|
75
|
-
break;
|
76
|
-
case 'RAW':
|
77
|
-
$(target_element).setTextValue(content);
|
78
|
-
break;
|
79
|
-
default:
|
80
|
-
console.log("Unsupported response type "+response_type);
|
81
|
-
break;
|
82
|
-
}
|
83
|
-
};
|
84
1
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
InPlaceInputEditor: function(target_element, action_path, post_parameters) {
|
95
|
-
var classname = $(target_element).getClassName() || "";
|
96
|
-
|
97
|
-
this.edit = function() {
|
98
|
-
var target = $(target_element);
|
99
|
-
var wrapper = target.getParentNode();
|
100
|
-
var dimensions = $(target_element).getDimensions();
|
101
|
-
var value = $(target_element+'__value').getValue();
|
102
|
-
|
103
|
-
var editArea = document.createElement('input');
|
104
|
-
editArea.setType($(target_element+'__value').getType());
|
105
|
-
editArea.setId(target_element+"__editor");
|
106
|
-
editArea.setValue(value);
|
107
|
-
//editArea.focus();
|
108
|
-
//editArea.setStyle("width",dimensions.width+"px");
|
109
|
-
//editArea.setStyle("height", dimensions.height+'px');
|
110
|
-
|
111
|
-
$(target_element+'__value').remove();
|
112
|
-
wrapper.removeChild(target);
|
113
|
-
wrapper.appendChild(editArea);
|
114
|
-
}
|
115
|
-
this.save = function(callbacks){
|
116
|
-
var newValue = $(target_element + "__editor").getValue();
|
117
|
-
var wrapper = $(target_element + "__editor").getParentNode();
|
118
|
-
callbacks = Ajax.checkCallbacks(callbacks);
|
119
|
-
Ajax.Load("RAW", action_path + "?raw=" + escape(newValue), {
|
120
|
-
success: chainMethods([
|
121
|
-
callbacks.success,
|
122
|
-
function(result){
|
123
|
-
wrapper.setInnerXHTML('<span>'+
|
124
|
-
'<input id="'+target_element+'__value" name="'+target_element+'__value" style="display:none;" type="text" value="'+unescape(result)+'" />'+
|
125
|
-
'<span><span id="'+target_element+'" class="'+classname+'" type="text">'+unescape(result)+'</span></span></span>');
|
126
|
-
}
|
127
|
-
])
|
128
|
-
}, post_parameters)
|
129
|
-
};
|
130
|
-
},
|
131
|
-
InPlaceTextAreaEditor: function(target_element, action_path, post_parameters) {
|
132
|
-
var classname = $(target_element).getClassName() || "";
|
133
|
-
|
134
|
-
this.edit = function() {
|
135
|
-
var target = $(target_element);
|
136
|
-
var wrapper = target.getParentNode();
|
137
|
-
var dimensions = $(target_element).getDimensions();
|
138
|
-
var value = $(target_element+'__value').getValue();
|
139
|
-
|
140
|
-
var editArea = document.createElement('textarea');
|
141
|
-
editArea.setId(target_element+"__editor");
|
142
|
-
editArea.setValue(value.replace(/<br \/>|<br\/>/g,'\n').replace(/<p>|<\/p>/g,''));
|
143
|
-
editArea.addEventListener('keyup', function() {
|
144
|
-
autoExpandTextarea(editArea);
|
145
|
-
});
|
146
|
-
//editArea.focus();
|
147
|
-
editArea.setStyle("width",dimensions.width+"px");
|
148
|
-
//editArea.setStyle("height", dimensions.height+'px');
|
149
|
-
|
150
|
-
$(target_element+'__value').remove();
|
151
|
-
wrapper.removeChild(target);
|
152
|
-
wrapper.appendChild(editArea);
|
153
|
-
autoExpandTextarea(editArea);
|
154
|
-
}
|
155
|
-
this.save = function(callbacks){
|
156
|
-
var newValue = $(target_element + "__editor").getValue();
|
157
|
-
var wrapper = $(target_element + "__editor").getParentNode();
|
158
|
-
callbacks = Ajax.checkCallbacks(callbacks);
|
159
|
-
Ajax.Load("RAW", action_path + "?raw=" + escape(newValue), {
|
160
|
-
success: chainMethods([
|
161
|
-
callbacks.success,
|
162
|
-
function(result){
|
163
|
-
wrapper.setInnerXHTML('<span>'+
|
164
|
-
'<textarea id="'+target_element+'__value" name="'+target_element+'__value" style="display:none;">'+unescape(result.replace(/<br \/>|<br\/>/g,'\n').replace(/<p>|<\/p>/g,''))+'</textarea>'+
|
165
|
-
'<div><div id="'+target_element+'" class="'+classname+'" type="text">'+unescape(result)+'</div></div></span>');
|
166
|
-
}
|
167
|
-
])
|
168
|
-
}, post_parameters)
|
169
|
-
};
|
170
|
-
},
|
171
|
-
/*
|
172
|
-
* Pass the data inside of a form to a target url and place the result inside target_element.
|
173
|
-
* Calls the 'success' callback with the result
|
174
|
-
*/
|
175
|
-
UpdateRemoteForm: function(form_element, target_element, response_type, target_action, callbacks) {
|
176
|
-
callbacks = callbacks || {};
|
177
|
-
Ajax.Update(target_element, response_type, target_action, callbacks, $(form_element).serialize());
|
178
|
-
},
|
179
|
-
checkCallbacks:function(callbacks) {
|
180
|
-
callbacks = callbacks || {};
|
181
|
-
var donothing = function(){};
|
182
|
-
return callbacks = {
|
183
|
-
success: callbacks.success || donothing,
|
184
|
-
failure: callbacks.failure || donothing,
|
185
|
-
begin: callbacks.begin || donothing,
|
186
|
-
complete: callbacks.complete || donothing
|
187
|
-
};
|
188
|
-
}
|
189
|
-
});
|
190
|
-
|
191
|
-
/*
|
192
|
-
* Displays a confirmation dialog. If the user clicks "continue" then callback will be evaluated.
|
193
|
-
* title and message can be strings or fb:js-string objects
|
194
|
-
*/
|
195
|
-
function confirm(title,message,callback) {
|
196
|
-
dialog = new Dialog(Dialog.DIALOG_POP);
|
197
|
-
|
198
|
-
dialog.showChoice(
|
199
|
-
title,
|
200
|
-
message, // Content
|
201
|
-
'Continue',
|
202
|
-
'Cancel');
|
203
|
-
|
204
|
-
dialog.onconfirm = function() {
|
205
|
-
callback();
|
206
|
-
};
|
207
|
-
}
|
208
|
-
|
209
|
-
function chainMethods(callbacks) {
|
210
|
-
return function(par1,par2,par3,par4,par5,par6) {
|
211
|
-
for (var i = 0, l = callbacks.length; i < l; i++) {
|
212
|
-
callbacks[i](par1, par2, par3, par4, par5, par6);
|
213
|
-
}
|
214
|
-
}
|
2
|
+
function $(element) {
|
3
|
+
if (typeof element == "string") {
|
4
|
+
element=document.getElementById(element);
|
5
|
+
}
|
6
|
+
if (element)
|
7
|
+
extend_instance(element,Element);
|
8
|
+
return element;
|
215
9
|
}
|
216
10
|
|
217
|
-
function
|
218
|
-
|
219
|
-
|
220
|
-
|
11
|
+
function extend_instance(instance,hash) {
|
12
|
+
for (var name in hash) {
|
13
|
+
instance[name] = hash[name];
|
14
|
+
}
|
221
15
|
}
|
222
16
|
|
223
17
|
var Element = {
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
return this;
|
239
|
-
},
|
240
|
-
show: function(element) {
|
241
|
-
this.setStyle({
|
242
|
-
display:''
|
243
|
-
});
|
244
|
-
return this;
|
245
|
-
},
|
246
|
-
remove: function() {
|
247
|
-
this.getParentNode().removeChild(this);
|
248
|
-
return null;
|
249
|
-
},
|
250
|
-
/*
|
251
|
-
* Returns calculated element size
|
252
|
-
*/
|
253
|
-
getDimensions: function() {
|
254
|
-
var display = this.getStyle('display');
|
255
|
-
if (display != 'none' && display != null) // Safari bug
|
256
|
-
return {
|
257
|
-
width: this.getOffsetWidth(),
|
258
|
-
height: this.getOffsetHeight()
|
259
|
-
};
|
260
|
-
|
261
|
-
// All *Width and *Height properties give 0 on elements with display none,
|
262
|
-
// so enable the element temporarily
|
263
|
-
var originalVisibility = this.getStyle("visibility");
|
264
|
-
var originalDisplay = this.getStyle("display");
|
265
|
-
var originalPosition = this.getStyle("position");
|
266
|
-
this.setStyle('visibility','none');
|
267
|
-
this.setStyle('display','block');
|
268
|
-
this.setStyle('position','absolute');
|
269
|
-
var originalWidth = this.getClientWidth();
|
270
|
-
var originalHeight = this.getClientHeight();
|
271
|
-
this.setStyle('visibility',originalVisibility);
|
272
|
-
this.setStyle('display',originalDisplay);
|
273
|
-
this.setStyle('position',originalPosition);
|
274
|
-
|
275
|
-
return {
|
276
|
-
width: originalWidth,
|
277
|
-
height: originalHeight
|
278
|
-
};
|
18
|
+
"hide": function () {
|
19
|
+
this.setStyle("display","none")
|
20
|
+
},
|
21
|
+
"show": function () {
|
22
|
+
this.setStyle("display","block")
|
23
|
+
},
|
24
|
+
"visible": function () {
|
25
|
+
return (this.getStyle("display") != "none");
|
26
|
+
},
|
27
|
+
"toggle": function () {
|
28
|
+
if (this.visible) {
|
29
|
+
this.hide();
|
30
|
+
} else {
|
31
|
+
this.show();
|
279
32
|
}
|
280
|
-
}
|
33
|
+
}
|
34
|
+
};
|
281
35
|
|
282
36
|
function encodeURIComponent(str) {
|
283
|
-
|
284
|
-
|
37
|
+
if (typeof(str) == "string") {
|
38
|
+
return str.replace(/=/g,'%3D').replace(/&/g,'%26');
|
39
|
+
}
|
40
|
+
//checkboxes and radio buttons return objects instead of a string
|
41
|
+
else if(typeof(str) == "object"){
|
42
|
+
for (prop in str)
|
43
|
+
{
|
44
|
+
return str[prop].replace(/=/g,'%3D').replace(/&/g,'%26');
|
285
45
|
}
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
46
|
+
}
|
47
|
+
};
|
48
|
+
|
49
|
+
var Form = {};
|
50
|
+
Form.serialize = function(form_element) {
|
51
|
+
return $(form_element).serialize();
|
52
|
+
};
|
53
|
+
|
54
|
+
Ajax.Updater = function (container,url,options) {
|
55
|
+
this.container = container;
|
56
|
+
this.url=url;
|
57
|
+
this.ajax = new Ajax();
|
58
|
+
this.ajax.requireLogin = 1;
|
59
|
+
if (options["onSuccess"]) {
|
60
|
+
this.ajax.responseType = Ajax.JSON;
|
61
|
+
this.ajax.ondone = options["onSuccess"];
|
62
|
+
} else {
|
63
|
+
this.ajax.responseType = Ajax.FBML;
|
64
|
+
this.ajax.ondone = function(data) {
|
65
|
+
$(container).setInnerFBML(data);
|
303
66
|
}
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
return collection;
|
327
|
-
}
|
67
|
+
}
|
68
|
+
if (options["onFailure"]) {
|
69
|
+
this.ajax.onerror = options["onFailure"];
|
70
|
+
}
|
71
|
+
|
72
|
+
if (!options['parameters']) {
|
73
|
+
options['parameters'] = {}
|
74
|
+
}
|
75
|
+
|
76
|
+
// simulate other verbs over post
|
77
|
+
if (options['method']) {
|
78
|
+
options['parameters']['_method'] = options['method'];
|
79
|
+
}
|
80
|
+
|
81
|
+
this.ajax.post(url,options['parameters']);
|
82
|
+
if (options["onLoading"]) {
|
83
|
+
options["onLoading"].call()
|
84
|
+
}
|
85
|
+
};
|
86
|
+
Ajax.Request = function(url,options) {
|
87
|
+
Ajax.Updater('unused',url,options);
|
88
|
+
};
|
328
89
|
|
329
90
|
PeriodicalExecuter = function (callback, frequency) {
|
330
91
|
setTimeout(callback, frequency *1000);
|
331
92
|
setTimeout(function() { new PeriodicalExecuter(callback,frequency); }, frequency*1000);
|
332
|
-
};
|
93
|
+
};
|
data/lib/facebooker/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: facebooker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.69
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chad Fowler
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-04-
|
17
|
+
date: 2010-04-28 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|