muck-engine 0.4.17 → 0.4.21
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/VERSION +1 -1
- data/muck-engine.gemspec +3 -2
- data/public/javascripts/jquery/jquery.form.js +45 -30
- data/public/javascripts/muck-src.js +134 -0
- data/public/javascripts/muck.js +6 -89
- metadata +4 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.21
|
data/muck-engine.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{muck-engine}
|
8
|
-
s.version = "0.4.
|
8
|
+
s.version = "0.4.21"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Justin Ball", "Joel Duffin"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-04-08}
|
13
13
|
s.description = %q{The base engine for the muck system. Contains common tables, custom for, css and javascript.}
|
14
14
|
s.email = %q{justin@tatemae.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -556,6 +556,7 @@ Gem::Specification.new do |s|
|
|
556
556
|
"public/javascripts/jquery/jquery.tips.js",
|
557
557
|
"public/javascripts/jquery/jrails.js",
|
558
558
|
"public/javascripts/muck-countries.js",
|
559
|
+
"public/javascripts/muck-src.js",
|
559
560
|
"public/javascripts/muck.js",
|
560
561
|
"public/javascripts/muck_time/en.js",
|
561
562
|
"public/javascripts/tree.js",
|
@@ -1,7 +1,7 @@
|
|
1
|
-
|
1
|
+
/*!
|
2
2
|
* jQuery Form Plugin
|
3
|
-
* version: 2.
|
4
|
-
* @requires jQuery v1.2
|
3
|
+
* version: 2.43 (12-MAR-2010)
|
4
|
+
* @requires jQuery v1.3.2 or later
|
5
5
|
*
|
6
6
|
* Examples and documentation at: http://malsup.com/jquery/form/
|
7
7
|
* Dual licensed under the MIT and GPL licenses:
|
@@ -124,15 +124,16 @@ $.fn.ajaxSubmit = function(options) {
|
|
124
124
|
if (!options.dataType && options.target) {
|
125
125
|
var oldSuccess = options.success || function(){};
|
126
126
|
callbacks.push(function(data) {
|
127
|
-
|
127
|
+
var fn = options.replaceTarget ? 'replaceWith' : 'html';
|
128
|
+
$(options.target)[fn](data).each(oldSuccess, arguments);
|
128
129
|
});
|
129
130
|
}
|
130
131
|
else if (options.success)
|
131
132
|
callbacks.push(options.success);
|
132
133
|
|
133
|
-
options.success = function(data, status) {
|
134
|
+
options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
|
134
135
|
for (var i=0, max=callbacks.length; i < max; i++)
|
135
|
-
callbacks[i].apply(options, [data, status, $form]);
|
136
|
+
callbacks[i].apply(options, [data, status, xhr || $form, $form]);
|
136
137
|
};
|
137
138
|
|
138
139
|
// are there files to upload?
|
@@ -177,7 +178,7 @@ $.fn.ajaxSubmit = function(options) {
|
|
177
178
|
var s = $.extend(true, {}, $.extend(true, {}, $.ajaxSettings), opts);
|
178
179
|
|
179
180
|
var id = 'jqFormIO' + (new Date().getTime());
|
180
|
-
var $io = $('<iframe id="' + id + '" name="' + id + '" src="'+ opts.iframeSrc +'" />');
|
181
|
+
var $io = $('<iframe id="' + id + '" name="' + id + '" src="'+ opts.iframeSrc +'" onload="(jQuery(this).data(\'form-plugin-onload\'))()" />');
|
181
182
|
var io = $io[0];
|
182
183
|
|
183
184
|
$io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });
|
@@ -209,7 +210,7 @@ $.fn.ajaxSubmit = function(options) {
|
|
209
210
|
if (xhr.aborted)
|
210
211
|
return;
|
211
212
|
|
212
|
-
var cbInvoked =
|
213
|
+
var cbInvoked = false;
|
213
214
|
var timedOut = 0;
|
214
215
|
|
215
216
|
// add submitting element to data if we know it
|
@@ -217,17 +218,17 @@ $.fn.ajaxSubmit = function(options) {
|
|
217
218
|
if (sub) {
|
218
219
|
var n = sub.name;
|
219
220
|
if (n && !sub.disabled) {
|
220
|
-
|
221
|
-
|
221
|
+
opts.extraData = opts.extraData || {};
|
222
|
+
opts.extraData[n] = sub.value;
|
222
223
|
if (sub.type == "image") {
|
223
|
-
|
224
|
-
|
224
|
+
opts.extraData[n+'.x'] = form.clk_x;
|
225
|
+
opts.extraData[n+'.y'] = form.clk_y;
|
225
226
|
}
|
226
227
|
}
|
227
228
|
}
|
228
229
|
|
229
230
|
// take a breath so that pending repaints get some cpu time before the upload starts
|
230
|
-
|
231
|
+
function doSubmit() {
|
231
232
|
// make sure form attrs are set
|
232
233
|
var t = $form.attr('target'), a = $form.attr('action');
|
233
234
|
|
@@ -239,7 +240,7 @@ $.fn.ajaxSubmit = function(options) {
|
|
239
240
|
form.setAttribute('action', opts.url);
|
240
241
|
|
241
242
|
// ie borks in some cases when setting encoding
|
242
|
-
if (!
|
243
|
+
if (! opts.skipEncodingOverride) {
|
243
244
|
$form.attr({
|
244
245
|
encoding: 'multipart/form-data',
|
245
246
|
enctype: 'multipart/form-data'
|
@@ -253,15 +254,15 @@ $.fn.ajaxSubmit = function(options) {
|
|
253
254
|
// add "extra" data to form if provided in options
|
254
255
|
var extraInputs = [];
|
255
256
|
try {
|
256
|
-
if (
|
257
|
-
for (var n in
|
257
|
+
if (opts.extraData)
|
258
|
+
for (var n in opts.extraData)
|
258
259
|
extraInputs.push(
|
259
|
-
$('<input type="hidden" name="'+n+'" value="'+
|
260
|
+
$('<input type="hidden" name="'+n+'" value="'+opts.extraData[n]+'" />')
|
260
261
|
.appendTo(form)[0]);
|
261
262
|
|
262
263
|
// add iframe to doc and submit the form
|
263
264
|
$io.appendTo('body');
|
264
|
-
io.
|
265
|
+
$io.data('form-plugin-onload', cb);
|
265
266
|
form.submit();
|
266
267
|
}
|
267
268
|
finally {
|
@@ -270,14 +271,18 @@ $.fn.ajaxSubmit = function(options) {
|
|
270
271
|
t ? form.setAttribute('target', t) : $form.removeAttr('target');
|
271
272
|
$(extraInputs).remove();
|
272
273
|
}
|
273
|
-
}
|
274
|
+
};
|
274
275
|
|
275
|
-
|
276
|
+
if (opts.forceSync)
|
277
|
+
doSubmit();
|
278
|
+
else
|
279
|
+
setTimeout(doSubmit, 10); // this lets dom updates render
|
280
|
+
|
281
|
+
var domCheckCount = 100;
|
276
282
|
|
277
283
|
function cb() {
|
278
|
-
if (cbInvoked
|
279
|
-
|
280
|
-
io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);
|
284
|
+
if (cbInvoked)
|
285
|
+
return;
|
281
286
|
|
282
287
|
var ok = true;
|
283
288
|
try {
|
@@ -293,14 +298,16 @@ $.fn.ajaxSubmit = function(options) {
|
|
293
298
|
if (--domCheckCount) {
|
294
299
|
// in some browsers (Opera) the iframe DOM is not always traversable when
|
295
300
|
// the onload callback fires, so we loop a bit to accommodate
|
296
|
-
|
297
|
-
setTimeout(cb,
|
301
|
+
log('requeing onLoad callback, DOM not available');
|
302
|
+
setTimeout(cb, 250);
|
298
303
|
return;
|
299
304
|
}
|
300
|
-
log('Could not access iframe DOM after
|
305
|
+
log('Could not access iframe DOM after 100 tries.');
|
301
306
|
return;
|
302
307
|
}
|
303
308
|
|
309
|
+
log('response detected');
|
310
|
+
cbInvoked = true;
|
304
311
|
xhr.responseText = doc.body ? doc.body.innerHTML : null;
|
305
312
|
xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
|
306
313
|
xhr.getResponseHeader = function(header){
|
@@ -326,7 +333,9 @@ $.fn.ajaxSubmit = function(options) {
|
|
326
333
|
data = $.httpData(xhr, opts.dataType);
|
327
334
|
}
|
328
335
|
catch(e){
|
336
|
+
log('error caught:',e);
|
329
337
|
ok = false;
|
338
|
+
xhr.error = e;
|
330
339
|
$.handleError(opts, xhr, 'error', e);
|
331
340
|
}
|
332
341
|
|
@@ -341,6 +350,7 @@ $.fn.ajaxSubmit = function(options) {
|
|
341
350
|
|
342
351
|
// clean up
|
343
352
|
setTimeout(function() {
|
353
|
+
$io.removeData('form-plugin-onload');
|
344
354
|
$io.remove();
|
345
355
|
xhr.responseXML = null;
|
346
356
|
}, 100);
|
@@ -375,9 +385,9 @@ $.fn.ajaxSubmit = function(options) {
|
|
375
385
|
* the form itself.
|
376
386
|
*/
|
377
387
|
$.fn.ajaxForm = function(options) {
|
378
|
-
return this.ajaxFormUnbind().bind('submit.form-plugin', function() {
|
388
|
+
return this.ajaxFormUnbind().bind('submit.form-plugin', function(e) {
|
389
|
+
e.preventDefault();
|
379
390
|
$(this).ajaxSubmit(options);
|
380
|
-
return false;
|
381
391
|
}).bind('click.form-plugin', function(e) {
|
382
392
|
var target = e.target;
|
383
393
|
var $el = $(target);
|
@@ -653,8 +663,13 @@ $.fn.selected = function(select) {
|
|
653
663
|
// helper fn for console logging
|
654
664
|
// set $.fn.ajaxSubmit.debug to true to enable debug logging
|
655
665
|
function log() {
|
656
|
-
if ($.fn.ajaxSubmit.debug
|
657
|
-
|
666
|
+
if ($.fn.ajaxSubmit.debug) {
|
667
|
+
var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
|
668
|
+
if (window.console && window.console.log)
|
669
|
+
window.console.log(msg);
|
670
|
+
else if (window.opera && window.opera.postError)
|
671
|
+
window.opera.postError(msg);
|
672
|
+
}
|
658
673
|
};
|
659
674
|
|
660
675
|
})(jQuery);
|
@@ -0,0 +1,134 @@
|
|
1
|
+
// compress with http://closure-compiler.appspot.com/home
|
2
|
+
//jQuery.noConflict();
|
3
|
+
jQuery(document).ajaxSend(function(event, request, settings) {
|
4
|
+
add_headers(request);
|
5
|
+
if (settings.type.toUpperCase() == 'GET' || typeof(AUTH_TOKEN) == "undefined") return; // for details see: http://www.justinball.com/2009/07/08/jquery-ajax-get-in-firefox-post-in-internet-explorer/
|
6
|
+
// settings.data is a serialized string like "foo=bar&baz=boink" (or null)
|
7
|
+
settings.data = settings.data || "";
|
8
|
+
if (typeof(AUTH_TOKEN) != "undefined")
|
9
|
+
settings.data += (settings.data ? "&" : "") + "authenticity_token=" + encodeURIComponent(AUTH_TOKEN);
|
10
|
+
});
|
11
|
+
|
12
|
+
function apply_ajax_forms() {
|
13
|
+
jQuery('form.ajax').ajaxForm({
|
14
|
+
dataType: 'script',
|
15
|
+
beforeSend: add_headers
|
16
|
+
});
|
17
|
+
jQuery('form.ajax').append('<input type="hidden" name="format" value="js" />');
|
18
|
+
}
|
19
|
+
|
20
|
+
function add_headers(xhr){
|
21
|
+
xhr.setRequestHeader("Accept", "text/javascript");
|
22
|
+
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
|
23
|
+
}
|
24
|
+
|
25
|
+
jQuery(document).ready(function() {
|
26
|
+
|
27
|
+
jQuery('a.ajax-delete').live('click', function() {
|
28
|
+
var title = jQuery(this).attr('title');
|
29
|
+
var do_delete = true;
|
30
|
+
if(title.length > 0){
|
31
|
+
do_delete = confirm(title);
|
32
|
+
}
|
33
|
+
if (do_delete){
|
34
|
+
jQuery.post(this.href, { _method: 'delete', format: 'js' }, null, "script");
|
35
|
+
}
|
36
|
+
return false;
|
37
|
+
});
|
38
|
+
|
39
|
+
jQuery('a.ajax-update').live('click', function() {
|
40
|
+
jQuery.post(this.href, { _method: 'put', format: 'js' }, null, "script");
|
41
|
+
return false;
|
42
|
+
});
|
43
|
+
|
44
|
+
jQuery(".submit-form").click(function() {
|
45
|
+
jQuery(this).parent('form').submit();
|
46
|
+
});
|
47
|
+
|
48
|
+
apply_ajax_forms();
|
49
|
+
|
50
|
+
jQuery('a.dialog-pop').live('click', function() {
|
51
|
+
var d = jQuery('<div class="dialog"></div>').appendTo("body");
|
52
|
+
d.dialog({ modal: true, autoOpen: false, width: 'auto', title: jQuery(this).attr('title') });
|
53
|
+
d.load(jQuery(this).attr('href'), '', function(){
|
54
|
+
d.dialog("open");
|
55
|
+
apply_ajax_forms();
|
56
|
+
});
|
57
|
+
return false;
|
58
|
+
});
|
59
|
+
|
60
|
+
jQuery(".submit-delete").live('click', function() {
|
61
|
+
jQuery(this).parents('.delete-container').fadeOut();
|
62
|
+
var form = jQuery(this).parents('form');
|
63
|
+
jQuery.post(form.attr('action') + '.json', form.serialize(),
|
64
|
+
function(data){
|
65
|
+
var json = eval('(' + data + ')');
|
66
|
+
if(!json.success){
|
67
|
+
jQuery.jGrowl.info(json.message);
|
68
|
+
}
|
69
|
+
});
|
70
|
+
return false;
|
71
|
+
});
|
72
|
+
|
73
|
+
jQuery(".submit-delete-js").live('click', function() {
|
74
|
+
jQuery(this).parents('.delete-container').fadeOut();
|
75
|
+
var form = jQuery(this).parents('form');
|
76
|
+
jQuery.post(form.attr('action') + '.js', form.serialize(),
|
77
|
+
function(data){
|
78
|
+
});
|
79
|
+
return false;
|
80
|
+
});
|
81
|
+
|
82
|
+
jQuery(document).ready(function() {
|
83
|
+
jQuery('.waiting').hide();
|
84
|
+
jQuery(".wait-button").live('click', function() {
|
85
|
+
jQuery(this).siblings('.waiting').show();
|
86
|
+
jQuery(this).hide();
|
87
|
+
});
|
88
|
+
});
|
89
|
+
|
90
|
+
});
|
91
|
+
|
92
|
+
// String list methods. These are handy for dealing with comma delimited lists
|
93
|
+
// in text boxes such as a list of emails or tags.
|
94
|
+
// Given a comma delimited string add a new item if it isn't in the string
|
95
|
+
function add_to_list(items_string, new_item){
|
96
|
+
var items = split_list(items_string);
|
97
|
+
var add = true;
|
98
|
+
for(i=0;i<items.length;i++){
|
99
|
+
if(items[i] == new_item){ add = false; }
|
100
|
+
}
|
101
|
+
if(add){
|
102
|
+
items.push(new_item);
|
103
|
+
}
|
104
|
+
return items.join(', ');
|
105
|
+
}
|
106
|
+
|
107
|
+
// Given a comma delimited list remove an item from the string
|
108
|
+
function remove_from_list(items_string, remove_item){
|
109
|
+
var items = split_list(items_string);
|
110
|
+
var cleaned = [];
|
111
|
+
for(i=0;i<items.length;i++){
|
112
|
+
if(items[i] != remove_item){
|
113
|
+
cleaned.push(items[i]);
|
114
|
+
}
|
115
|
+
}
|
116
|
+
return cleaned.join(', ');
|
117
|
+
}
|
118
|
+
|
119
|
+
// Split a string on commas
|
120
|
+
function split_list(items_string){
|
121
|
+
if(undefined != items_string && items_string.length > 0){
|
122
|
+
var items = items_string.split(',');
|
123
|
+
} else {
|
124
|
+
var items = [];
|
125
|
+
}
|
126
|
+
var cleaned = [];
|
127
|
+
for(i=0;i<items.length;i++){
|
128
|
+
var cleaned_item = items[i].split(" ").join("");
|
129
|
+
if(cleaned_item.length > 0){
|
130
|
+
cleaned.push(cleaned_item);
|
131
|
+
}
|
132
|
+
}
|
133
|
+
return cleaned;
|
134
|
+
}
|
data/public/javascripts/muck.js
CHANGED
@@ -1,89 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
if (typeof(AUTH_TOKEN) != "undefined")
|
8
|
-
settings.data += (settings.data ? "&" : "") + "authenticity_token=" + encodeURIComponent(AUTH_TOKEN);
|
9
|
-
});
|
10
|
-
|
11
|
-
function apply_ajax_forms() {
|
12
|
-
jQuery('form.ajax').ajaxForm({
|
13
|
-
dataType: 'script',
|
14
|
-
beforeSend: add_headers
|
15
|
-
});
|
16
|
-
jQuery('form.ajax').append('<input type="hidden" name="format" value="js" />');
|
17
|
-
}
|
18
|
-
|
19
|
-
function add_headers(xhr){
|
20
|
-
xhr.setRequestHeader("Accept", "text/javascript");
|
21
|
-
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
|
22
|
-
}
|
23
|
-
|
24
|
-
jQuery(document).ready(function() {
|
25
|
-
|
26
|
-
jQuery('a.ajax-delete').live('click', function() {
|
27
|
-
var title = jQuery(this).attr('title');
|
28
|
-
var do_delete = true;
|
29
|
-
if(title.length > 0){
|
30
|
-
do_delete = confirm(title);
|
31
|
-
}
|
32
|
-
if (do_delete){
|
33
|
-
jQuery.post(this.href, { _method: 'delete', format: 'js' }, null, "script");
|
34
|
-
}
|
35
|
-
return false;
|
36
|
-
});
|
37
|
-
|
38
|
-
jQuery('a.ajax-update').live('click', function() {
|
39
|
-
jQuery.post(this.href, { _method: 'put', format: 'js' }, null, "script");
|
40
|
-
return false;
|
41
|
-
});
|
42
|
-
|
43
|
-
jQuery(".submit-form").click(function() {
|
44
|
-
jQuery(this).parent('form').submit();
|
45
|
-
});
|
46
|
-
|
47
|
-
apply_ajax_forms();
|
48
|
-
|
49
|
-
jQuery('a.dialog-pop').live('click', function() {
|
50
|
-
var d = jQuery('<div class="dialog"></div>').appendTo("body");
|
51
|
-
d.dialog({ modal: true, autoOpen: false, width: 'auto', title: jQuery(this).attr('title') });
|
52
|
-
d.load(jQuery(this).attr('href'), '', function(){
|
53
|
-
d.dialog("open");
|
54
|
-
apply_ajax_forms();
|
55
|
-
});
|
56
|
-
return false;
|
57
|
-
});
|
58
|
-
|
59
|
-
jQuery(".submit-delete").live('click', function() {
|
60
|
-
jQuery(this).parents('.delete-container').fadeOut();
|
61
|
-
var form = jQuery(this).parents('form');
|
62
|
-
jQuery.post(form.attr('action') + '.json', form.serialize(),
|
63
|
-
function(data){
|
64
|
-
var json = eval('(' + data + ')');
|
65
|
-
if(!json.success){
|
66
|
-
jQuery.jGrowl.info(json.message);
|
67
|
-
}
|
68
|
-
});
|
69
|
-
return false;
|
70
|
-
});
|
71
|
-
|
72
|
-
jQuery(".submit-delete-js").live('click', function() {
|
73
|
-
jQuery(this).parents('.delete-container').fadeOut();
|
74
|
-
var form = jQuery(this).parents('form');
|
75
|
-
jQuery.post(form.attr('action') + '.js', form.serialize(),
|
76
|
-
function(data){
|
77
|
-
});
|
78
|
-
return false;
|
79
|
-
});
|
80
|
-
|
81
|
-
jQuery(document).ready(function() {
|
82
|
-
jQuery('.waiting').hide();
|
83
|
-
jQuery(".wait-button").click(function() {
|
84
|
-
jQuery('.waiting').show();
|
85
|
-
jQuery(this).hide();
|
86
|
-
});
|
87
|
-
});
|
88
|
-
|
89
|
-
});
|
1
|
+
jQuery(document).ajaxSend(function(a,b,c){add_headers(b);if(!(c.type.toUpperCase()=="GET"||typeof AUTH_TOKEN=="undefined")){c.data=c.data||"";if(typeof AUTH_TOKEN!="undefined")c.data+=(c.data?"&":"")+"authenticity_token="+encodeURIComponent(AUTH_TOKEN)}});function apply_ajax_forms(){jQuery("form.ajax").ajaxForm({dataType:"script",beforeSend:add_headers});jQuery("form.ajax").append('<input type="hidden" name="format" value="js" />')}
|
2
|
+
function add_headers(a){a.setRequestHeader("Accept","text/javascript");a.setRequestHeader("X-Requested-With","XMLHttpRequest")}
|
3
|
+
jQuery(document).ready(function(){jQuery("a.ajax-delete").live("click",function(){var a=jQuery(this).attr("title"),b=true;if(a.length>0)b=confirm(a);b&&jQuery.post(this.href,{_method:"delete",format:"js"},null,"script");return false});jQuery("a.ajax-update").live("click",function(){jQuery.post(this.href,{_method:"put",format:"js"},null,"script");return false});jQuery(".submit-form").click(function(){jQuery(this).parent("form").submit()});apply_ajax_forms();jQuery("a.dialog-pop").live("click",function(){var a=
|
4
|
+
jQuery('<div class="dialog"></div>').appendTo("body");a.dialog({modal:true,autoOpen:false,width:"auto",title:jQuery(this).attr("title")});a.load(jQuery(this).attr("href"),"",function(){a.dialog("open");apply_ajax_forms()});return false});jQuery(".submit-delete").live("click",function(){jQuery(this).parents(".delete-container").fadeOut();var a=jQuery(this).parents("form");jQuery.post(a.attr("action")+".json",a.serialize(),function(b){b=eval("("+b+")");b.success||jQuery.jGrowl.info(b.message)});return false});
|
5
|
+
jQuery(".submit-delete-js").live("click",function(){jQuery(this).parents(".delete-container").fadeOut();var a=jQuery(this).parents("form");jQuery.post(a.attr("action")+".js",a.serialize(),function(){});return false});jQuery(document).ready(function(){jQuery(".waiting").hide();jQuery(".wait-button").live("click",function(){jQuery(this).siblings(".waiting").show();jQuery(this).hide()})})});
|
6
|
+
function add_to_list(a,b){a=split_list(a);var c=true;for(i=0;i<a.length;i++)if(a[i]==b)c=false;c&&a.push(b);return a.join(", ")}function remove_from_list(a,b){a=split_list(a);var c=[];for(i=0;i<a.length;i++)a[i]!=b&&c.push(a[i]);return c.join(", ")}function split_list(a){a=undefined!=a&&a.length>0?a.split(","):[];var b=[];for(i=0;i<a.length;i++){var c=a[i].split(" ").join("");c.length>0&&b.push(c)}return b};
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 4
|
8
|
-
-
|
9
|
-
version: 0.4.
|
8
|
+
- 21
|
9
|
+
version: 0.4.21
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Justin Ball
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-04-08 00:00:00 -06:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -615,6 +615,7 @@ files:
|
|
615
615
|
- public/javascripts/jquery/jquery.tips.js
|
616
616
|
- public/javascripts/jquery/jrails.js
|
617
617
|
- public/javascripts/muck-countries.js
|
618
|
+
- public/javascripts/muck-src.js
|
618
619
|
- public/javascripts/muck.js
|
619
620
|
- public/javascripts/muck_time/en.js
|
620
621
|
- public/javascripts/tree.js
|