avatars_for_rails 0.2.2 → 0.2.3

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.
Files changed (26) hide show
  1. data/{lib/generators/avatars_for_rails/templates/public → app/assets}/images/Jcrop.gif +0 -0
  2. data/{lib/generators/avatars_for_rails/templates/public → app/assets}/images/cancel.png +0 -0
  3. data/avatars_for_rails.gemspec +1 -1
  4. data/vendor/assets/javascripts/jquery.fileupload-ui.js +333 -63
  5. data/vendor/assets/javascripts/jquery.fileupload.js +654 -173
  6. data/vendor/assets/stylesheets/jquery.fileupload-ui.css +91 -21
  7. metadata +27 -46
  8. data/lib/generators/avatars_for_rails/templates/public/images/pbar-ani.gif +0 -0
  9. data/lib/generators/avatars_for_rails/templates/public/images/rails.png +0 -0
  10. data/lib/generators/avatars_for_rails/templates/public/javascripts/application.js +0 -2
  11. data/lib/generators/avatars_for_rails/templates/public/javascripts/avatars.js +0 -8
  12. data/lib/generators/avatars_for_rails/templates/public/javascripts/controls.js +0 -965
  13. data/lib/generators/avatars_for_rails/templates/public/javascripts/dragdrop.js +0 -974
  14. data/lib/generators/avatars_for_rails/templates/public/javascripts/effects.js +0 -1123
  15. data/lib/generators/avatars_for_rails/templates/public/javascripts/jquery-ui.min.js +0 -401
  16. data/lib/generators/avatars_for_rails/templates/public/javascripts/jquery.Jcrop.min.js +0 -163
  17. data/lib/generators/avatars_for_rails/templates/public/javascripts/jquery.fileupload-ui.js +0 -529
  18. data/lib/generators/avatars_for_rails/templates/public/javascripts/jquery.fileupload.js +0 -956
  19. data/lib/generators/avatars_for_rails/templates/public/javascripts/jquery.form.js +0 -815
  20. data/lib/generators/avatars_for_rails/templates/public/javascripts/jquery.js +0 -7179
  21. data/lib/generators/avatars_for_rails/templates/public/javascripts/prototype.js +0 -6001
  22. data/lib/generators/avatars_for_rails/templates/public/javascripts/rails.js +0 -158
  23. data/lib/generators/avatars_for_rails/templates/public/stylesheets/.gitkeep +0 -0
  24. data/lib/generators/avatars_for_rails/templates/public/stylesheets/avatars.css +0 -115
  25. data/lib/generators/avatars_for_rails/templates/public/stylesheets/jquery.Jcrop.css +0 -35
  26. data/lib/generators/avatars_for_rails/templates/public/stylesheets/jquery.fileupload-ui.css +0 -140
@@ -1,529 +0,0 @@
1
- /*
2
- * jQuery File Upload User Interface Plugin 4.4
3
- * https://github.com/blueimp/jQuery-File-Upload
4
- *
5
- * Copyright 2010, Sebastian Tschan
6
- * https://blueimp.net
7
- *
8
- * Licensed under the MIT license:
9
- * http://creativecommons.org/licenses/MIT/
10
- */
11
-
12
- /*jslint browser: true */
13
- /*global jQuery, FileReader, URL, webkitURL */
14
-
15
- (function ($) {
16
- 'use strict';
17
-
18
- var undef = 'undefined',
19
- func = 'function',
20
- UploadHandler,
21
- methods,
22
-
23
- MultiLoader = function (callBack) {
24
- var loaded = 0,
25
- list = [];
26
- this.complete = function () {
27
- loaded += 1;
28
- if (loaded === list.length + 1) {
29
- // list.length * onComplete + 1 * onLoadAll
30
- callBack(list);
31
- loaded = 0;
32
- list = [];
33
- }
34
- };
35
- this.push = function (item) {
36
- list.push(item);
37
- };
38
- this.getList = function () {
39
- return list;
40
- };
41
- };
42
-
43
- UploadHandler = function (container, options) {
44
- var uploadHandler = this,
45
- dragOverTimeout,
46
- isDropZoneEnlarged,
47
- multiLoader = new MultiLoader(function (list) {
48
- uploadHandler.hideProgressBarAll(function () {
49
- uploadHandler.resetProgressBarAll();
50
- if (typeof uploadHandler.onCompleteAll === func) {
51
- uploadHandler.onCompleteAll(list);
52
- }
53
- });
54
- }),
55
- getUploadTable = function (handler) {
56
- return typeof handler.uploadTable === func ?
57
- handler.uploadTable(handler) : handler.uploadTable;
58
- },
59
- getDownloadTable = function (handler) {
60
- return typeof handler.downloadTable === func ?
61
- handler.downloadTable(handler) : handler.downloadTable;
62
- };
63
-
64
- this.requestHeaders = {'Accept': 'application/json, text/javascript, */*; q=0.01'};
65
- this.dropZone = container;
66
- this.imageTypes = /^image\/(gif|jpeg|png)$/;
67
- this.previewMaxWidth = this.previewMaxHeight = 80;
68
- this.previewLoadDelay = 100;
69
- this.previewAsCanvas = true;
70
- this.previewSelector = '.file_upload_preview';
71
- this.progressSelector = '.file_upload_progress div';
72
- this.cancelSelector = '.file_upload_cancel button';
73
- this.cssClassSmall = 'file_upload_small';
74
- this.cssClassLarge = 'file_upload_large';
75
- this.cssClassHighlight = 'file_upload_highlight';
76
- this.dropEffect = 'highlight';
77
- this.uploadTable = this.downloadTable = null;
78
- this.buildUploadRow = this.buildDownloadRow = null;
79
- this.progressAllNode = null;
80
-
81
- this.loadImage = function (file, callBack, maxWidth, maxHeight, imageTypes, noCanvas) {
82
- var img,
83
- scaleImage,
84
- urlAPI,
85
- fileReader;
86
- if (imageTypes && !imageTypes.test(file.type)) {
87
- return null;
88
- }
89
- scaleImage = function (img) {
90
- var canvas = document.createElement('canvas'),
91
- scale = Math.min(
92
- (maxWidth || img.width) / img.width,
93
- (maxHeight || img.height) / img.height
94
- );
95
- if (scale > 1) {
96
- scale = 1;
97
- }
98
- img.width = parseInt(img.width * scale, 10);
99
- img.height = parseInt(img.height * scale, 10);
100
- if (noCanvas || typeof canvas.getContext !== func) {
101
- return img;
102
- }
103
- canvas.width = img.width;
104
- canvas.height = img.height;
105
- canvas.getContext('2d').drawImage(img, 0, 0, img.width, img.height);
106
- return canvas;
107
- };
108
- img = document.createElement('img');
109
- urlAPI = typeof URL !== undef ? URL : typeof webkitURL !== undef ? webkitURL : null;
110
- if (urlAPI && typeof urlAPI.createObjectURL === func) {
111
- img.onload = function () {
112
- urlAPI.revokeObjectURL(this.src);
113
- callBack(scaleImage(img));
114
- };
115
- img.src = urlAPI.createObjectURL(file);
116
- } else if (typeof FileReader !== undef &&
117
- typeof FileReader.prototype.readAsDataURL === func) {
118
- img.onload = function () {
119
- callBack(scaleImage(img));
120
- };
121
- fileReader = new FileReader();
122
- fileReader.onload = function (e) {
123
- img.src = e.target.result;
124
- };
125
- fileReader.readAsDataURL(file);
126
- } else {
127
- callBack(null);
128
- }
129
- };
130
-
131
- this.addNode = function (parentNode, node, callBack) {
132
- if (parentNode && parentNode.length && node && node.length) {
133
- node.css('display', 'none').appendTo(parentNode).fadeIn(function () {
134
- if (typeof callBack === func) {
135
- try {
136
- callBack();
137
- } catch (e) {
138
- // Fix endless exception loop:
139
- node.stop();
140
- throw e;
141
- }
142
- }
143
- });
144
- } else if (typeof callBack === func) {
145
- callBack();
146
- }
147
- };
148
-
149
- this.removeNode = function (node, callBack) {
150
- if (node && node.length) {
151
- node.fadeOut(function () {
152
- node.remove();
153
- if (typeof callBack === func) {
154
- try {
155
- callBack();
156
- } catch (e) {
157
- // Fix endless exception loop:
158
- node.stop();
159
- throw e;
160
- }
161
- }
162
- });
163
- } else if (typeof callBack === func) {
164
- callBack();
165
- }
166
- };
167
-
168
- this.replaceNode = function (oldNode, newNode, callBack) {
169
- if (oldNode && newNode) {
170
- oldNode.fadeOut(function () {
171
- newNode.css('display', 'none');
172
- oldNode.replaceWith(newNode);
173
- newNode.fadeIn(function () {
174
- if (typeof callBack === func) {
175
- try {
176
- callBack();
177
- } catch (e) {
178
- // Fix endless exception loop:
179
- oldNode.stop();
180
- newNode.stop();
181
- throw e;
182
- }
183
- }
184
- });
185
- });
186
- } else if (typeof callBack === func) {
187
- callBack();
188
- }
189
- };
190
-
191
- this.resetProgressBarAll = function () {
192
- if (uploadHandler.progressbarAll) {
193
- uploadHandler.progressbarAll.progressbar(
194
- 'value',
195
- 0
196
- );
197
- }
198
- };
199
-
200
- this.hideProgressBarAll = function (callBack) {
201
- if (uploadHandler.progressbarAll && !$(getUploadTable(uploadHandler))
202
- .find(uploadHandler.progressSelector + ':visible:first').length) {
203
- uploadHandler.progressbarAll.fadeOut(callBack);
204
- } else if (typeof callBack === func) {
205
- callBack();
206
- }
207
- };
208
-
209
- this.onAbort = function (event, files, index, xhr, handler) {
210
- handler.removeNode(handler.uploadRow, handler.hideProgressBarAll);
211
- };
212
-
213
- this.cancelUpload = function (event, files, index, xhr, handler) {
214
- var readyState = xhr.readyState;
215
- xhr.abort();
216
- // If readyState is below 2, abort() has no effect:
217
- if (typeof readyState !== 'number' || readyState < 2) {
218
- handler.onAbort(event, files, index, xhr, handler);
219
- }
220
- };
221
-
222
- this.initProgressBar = function (node, value) {
223
- if (!node || !node.length) {
224
- return null;
225
- }
226
- if (typeof node.progressbar === func) {
227
- return node.progressbar({
228
- value: value
229
- });
230
- } else {
231
- node.addClass('progressbar')
232
- .append($('<div/>').css('width', value + '%'))
233
- .progressbar = function (key, value) {
234
- return this.each(function () {
235
- if (key === 'destroy') {
236
- $(this).removeClass('progressbar').empty();
237
- } else {
238
- $(this).children().css('width', value + '%');
239
- }
240
- });
241
- };
242
- return node;
243
- }
244
- };
245
-
246
- this.destroyProgressBar = function (node) {
247
- if (!node || !node.length) {
248
- return null;
249
- }
250
- return node.progressbar('destroy');
251
- };
252
-
253
- this.initUploadProgress = function (xhr, handler) {
254
- if (!xhr.upload && handler.progressbar) {
255
- handler.progressbar.progressbar(
256
- 'value',
257
- 100 // indeterminate progress displayed by a full animated progress bar
258
- );
259
- }
260
- };
261
-
262
- this.initUploadProgressAll = function () {
263
- if (uploadHandler.progressbarAll && uploadHandler.progressbarAll.is(':hidden')) {
264
- uploadHandler.progressbarAll.fadeIn();
265
- }
266
- };
267
-
268
- this.onSend = function (event, files, index, xhr, handler) {
269
- handler.initUploadProgress(xhr, handler);
270
- };
271
-
272
- this.onProgress = function (event, files, index, xhr, handler) {
273
- if (handler.progressbar && event.lengthComputable) {
274
- handler.progressbar.progressbar(
275
- 'value',
276
- parseInt(event.loaded / event.total * 100, 10)
277
- );
278
- }
279
- };
280
-
281
- this.onProgressAll = function (event, list) {
282
- if (uploadHandler.progressbarAll && event.lengthComputable) {
283
- uploadHandler.progressbarAll.progressbar(
284
- 'value',
285
- parseInt(event.loaded / event.total * 100, 10)
286
- );
287
- }
288
- };
289
-
290
- this.onLoadAll = function (list) {
291
- multiLoader.complete();
292
- };
293
-
294
- this.initProgressBarAll = function () {
295
- if (!uploadHandler.progressbarAll) {
296
- uploadHandler.progressbarAll = uploadHandler.initProgressBar(
297
- (typeof uploadHandler.progressAllNode === func ?
298
- uploadHandler.progressAllNode(uploadHandler) : uploadHandler.progressAllNode),
299
- 0
300
- );
301
- }
302
- };
303
-
304
- this.destroyProgressBarAll = function () {
305
- uploadHandler.destroyProgressBar(uploadHandler.progressbarAll);
306
- };
307
-
308
- this.loadPreviewImage = function (files, index, handler) {
309
- index = index || 0;
310
- handler.uploadRow.find(handler.previewSelector).each(function () {
311
- var previewNode = $(this),
312
- file = files[index];
313
- setTimeout(function () {
314
- handler.loadImage(
315
- file,
316
- function (img) {
317
- handler.addNode(
318
- previewNode,
319
- $(img)
320
- );
321
- },
322
- handler.previewMaxWidth,
323
- handler.previewMaxHeight,
324
- handler.imageTypes,
325
- !handler.previewAsCanvas
326
- );
327
- }, handler.previewLoadDelay);
328
- index += 1;
329
- });
330
- };
331
-
332
- this.initUploadRow = function (event, files, index, xhr, handler) {
333
- var uploadRow = handler.uploadRow = (typeof handler.buildUploadRow === func ?
334
- handler.buildUploadRow(files, index, handler) : null);
335
- if (uploadRow) {
336
- handler.progressbar = handler.initProgressBar(
337
- uploadRow.find(handler.progressSelector),
338
- 0
339
- );
340
- uploadRow.find(handler.cancelSelector).click(function (e) {
341
- handler.cancelUpload(e, files, index, xhr, handler);
342
- e.preventDefault();
343
- });
344
- handler.loadPreviewImage(files, index, handler);
345
- }
346
- };
347
-
348
- this.initUpload = function (event, files, index, xhr, handler, callBack) {
349
- handler.initUploadRow(event, files, index, xhr, handler);
350
- handler.addNode(
351
- getUploadTable(handler),
352
- handler.uploadRow,
353
- function () {
354
- if (typeof handler.beforeSend === func) {
355
- handler.beforeSend(event, files, index, xhr, handler, callBack);
356
- } else {
357
- callBack();
358
- }
359
- }
360
- );
361
- handler.initUploadProgressAll();
362
- };
363
-
364
- this.parseResponse = function (xhr, handler) {
365
- if (typeof xhr.responseText !== undef) {
366
- return $.parseJSON(xhr.responseText);
367
- } else {
368
- // Instead of an XHR object, an iframe is used for legacy browsers:
369
- return $.parseJSON(xhr.contents().text());
370
- }
371
- };
372
-
373
- this.initDownloadRow = function (event, files, index, xhr, handler) {
374
- var json, downloadRow;
375
- try {
376
- json = handler.response = handler.parseResponse(xhr, handler);
377
- } catch (e) {
378
- if (typeof handler.onError === func) {
379
- handler.originalEvent = event;
380
- handler.onError(e, files, index, xhr, handler);
381
- } else {
382
- throw e;
383
- }
384
- }
385
- downloadRow = handler.downloadRow = (typeof handler.buildDownloadRow === func ?
386
- handler.buildDownloadRow(json, handler) : null);
387
- };
388
-
389
- this.onLoad = function (event, files, index, xhr, handler) {
390
- var uploadTable = getUploadTable(handler),
391
- downloadTable = getDownloadTable(handler),
392
- callBack = function () {
393
- if (typeof handler.onComplete === func) {
394
- handler.onComplete(event, files, index, xhr, handler);
395
- }
396
- multiLoader.complete();
397
- };
398
- multiLoader.push(Array.prototype.slice.call(arguments, 1));
399
- handler.initDownloadRow(event, files, index, xhr, handler);
400
- if (uploadTable && (!downloadTable || uploadTable.get(0) === downloadTable.get(0))) {
401
- handler.replaceNode(handler.uploadRow, handler.downloadRow, callBack);
402
- } else {
403
- handler.removeNode(handler.uploadRow, function () {
404
- handler.addNode(
405
- downloadTable,
406
- handler.downloadRow,
407
- callBack
408
- );
409
- });
410
- }
411
- };
412
-
413
- this.dropZoneEnlarge = function () {
414
- if (!isDropZoneEnlarged) {
415
- if (typeof uploadHandler.dropZone.switchClass === func) {
416
- uploadHandler.dropZone.switchClass(
417
- uploadHandler.cssClassSmall,
418
- uploadHandler.cssClassLarge
419
- );
420
- } else {
421
- uploadHandler.dropZone.addClass(uploadHandler.cssClassLarge);
422
- uploadHandler.dropZone.removeClass(uploadHandler.cssClassSmall);
423
- }
424
- isDropZoneEnlarged = true;
425
- }
426
- };
427
-
428
- this.dropZoneReduce = function () {
429
- if (typeof uploadHandler.dropZone.switchClass === func) {
430
- uploadHandler.dropZone.switchClass(
431
- uploadHandler.cssClassLarge,
432
- uploadHandler.cssClassSmall
433
- );
434
- } else {
435
- uploadHandler.dropZone.addClass(uploadHandler.cssClassSmall);
436
- uploadHandler.dropZone.removeClass(uploadHandler.cssClassLarge);
437
- }
438
- isDropZoneEnlarged = false;
439
- };
440
-
441
- this.onDocumentDragEnter = function (event) {
442
- uploadHandler.dropZoneEnlarge();
443
- };
444
-
445
- this.onDocumentDragOver = function (event) {
446
- if (dragOverTimeout) {
447
- clearTimeout(dragOverTimeout);
448
- }
449
- dragOverTimeout = setTimeout(function () {
450
- uploadHandler.dropZoneReduce();
451
- }, 200);
452
- };
453
-
454
- this.onDragEnter = this.onDragLeave = function (event) {
455
- uploadHandler.dropZone.toggleClass(uploadHandler.cssClassHighlight);
456
- };
457
-
458
- this.onDrop = function (event) {
459
- if (dragOverTimeout) {
460
- clearTimeout(dragOverTimeout);
461
- }
462
- if (uploadHandler.dropEffect && typeof uploadHandler.dropZone.effect === func) {
463
- uploadHandler.dropZone.effect(uploadHandler.dropEffect, function () {
464
- uploadHandler.dropZone.removeClass(uploadHandler.cssClassHighlight);
465
- uploadHandler.dropZoneReduce();
466
- });
467
- } else {
468
- uploadHandler.dropZone.removeClass(uploadHandler.cssClassHighlight);
469
- uploadHandler.dropZoneReduce();
470
- }
471
- };
472
-
473
- this.init = function () {
474
- uploadHandler.initProgressBarAll();
475
- if (typeof uploadHandler.initExtended === func) {
476
- uploadHandler.initExtended();
477
- }
478
- };
479
-
480
- this.destroy = function () {
481
- if (typeof uploadHandler.destroyExtended === func) {
482
- uploadHandler.destroyExtended();
483
- }
484
- uploadHandler.destroyProgressBarAll();
485
- };
486
-
487
- $.extend(this, options);
488
- };
489
-
490
- methods = {
491
- init : function (options) {
492
- return this.each(function () {
493
- $(this).fileUpload(new UploadHandler($(this), options));
494
- });
495
- },
496
-
497
- option: function (option, value, namespace) {
498
- if (!option || (typeof option === 'string' && typeof value === undef)) {
499
- return $(this).fileUpload('option', option, value, namespace);
500
- }
501
- return this.each(function () {
502
- $(this).fileUpload('option', option, value, namespace);
503
- });
504
- },
505
-
506
- destroy : function (namespace) {
507
- return this.each(function () {
508
- $(this).fileUpload('destroy', namespace);
509
- });
510
- },
511
-
512
- upload: function (files, namespace) {
513
- return this.each(function () {
514
- $(this).fileUpload('upload', files, namespace);
515
- });
516
- }
517
- };
518
-
519
- $.fn.fileUploadUI = function (method) {
520
- if (methods[method]) {
521
- return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
522
- } else if (typeof method === 'object' || !method) {
523
- return methods.init.apply(this, arguments);
524
- } else {
525
- $.error('Method "' + method + '" does not exist on jQuery.fileUploadUI');
526
- }
527
- };
528
-
529
- }(jQuery));