instant-upload 1.0.6 → 1.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/instant_upload.js +55 -0
- data/app/assets/javascripts/instant_upload/multi.js.coffee +14 -3
- data/app/views/instant_upload/_multi.html.haml +4 -3
- data/config/locales/instant_upload.pl.yml +4 -0
- data/lib/instant_upload/helpers/controller_helper.rb +19 -2
- data/lib/instant_upload/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2f9159754dd8e297f07b7c7d6ab580946ffb6d95
|
4
|
+
data.tar.gz: 6bc6162cd19a1821e78b8fe0896c99b25578761c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5274617e2cb0f161b2d80247a5b79d119863c0169dab4f09fd646cafe467bf813029fec781708e72526bb9844ee51bf75e4ce6500f10791e87669b9afba0872c
|
7
|
+
data.tar.gz: 738c16d2c96d94bdad90372f435ffbfc159176042ed23fda9fedbb8d014eeb57334cc5f18803e1fd57c920600403e49e2a79ef045f58da5ac0a8b0b9275c6be8
|
@@ -2,3 +2,58 @@
|
|
2
2
|
|
3
3
|
//= require instant_upload/single
|
4
4
|
//= require instant_upload/multi
|
5
|
+
|
6
|
+
/**
|
7
|
+
* jQuery Unveil
|
8
|
+
* A very lightweight jQuery plugin to lazy load images
|
9
|
+
* http://luis-almeida.github.com/unveil
|
10
|
+
*
|
11
|
+
* Licensed under the MIT license.
|
12
|
+
* Copyright 2013 Luís Almeida
|
13
|
+
* https://github.com/luis-almeida
|
14
|
+
*/
|
15
|
+
|
16
|
+
;(function($) {
|
17
|
+
|
18
|
+
$.fn.unveil = function(threshold) {
|
19
|
+
|
20
|
+
var $w = $(window),
|
21
|
+
th = threshold || 0,
|
22
|
+
retina = window.devicePixelRatio > 1,
|
23
|
+
attrib = retina? "data-src-retina" : "data-src",
|
24
|
+
images = this,
|
25
|
+
loaded,
|
26
|
+
inview,
|
27
|
+
source;
|
28
|
+
|
29
|
+
this.one("unveil", function() {
|
30
|
+
source = this.getAttribute(attrib);
|
31
|
+
source = source || this.getAttribute("data-src");
|
32
|
+
if (source) this.setAttribute("src", source);
|
33
|
+
});
|
34
|
+
|
35
|
+
function unveil() {
|
36
|
+
inview = images.filter(function() {
|
37
|
+
var $e = $(this),
|
38
|
+
wt = $w.scrollTop(),
|
39
|
+
wb = wt + $w.height(),
|
40
|
+
et = $e.offset().top,
|
41
|
+
eb = et + $e.height();
|
42
|
+
|
43
|
+
return eb >= wt - th && et <= wb + th;
|
44
|
+
});
|
45
|
+
|
46
|
+
loaded = inview.trigger("unveil");
|
47
|
+
images = images.not(loaded);
|
48
|
+
}
|
49
|
+
|
50
|
+
$w.scroll(unveil);
|
51
|
+
$w.resize(unveil);
|
52
|
+
|
53
|
+
unveil();
|
54
|
+
|
55
|
+
return this;
|
56
|
+
|
57
|
+
};
|
58
|
+
|
59
|
+
})(jQuery);
|
@@ -33,9 +33,9 @@ app = angular.module('instantUpload', [])
|
|
33
33
|
cursor: 'pointer'
|
34
34
|
position: 'absolute'
|
35
35
|
left: offset.left
|
36
|
-
top:
|
36
|
+
top: $('.iu-multi-dropzone').outerHeight() / 2 + $selectFiles.outerHeight() / 2
|
37
37
|
width: $selectFiles.width() + 10
|
38
|
-
height: $selectFiles.
|
38
|
+
height: $selectFiles.outerHeight() * 2
|
39
39
|
'margin-left': -5
|
40
40
|
'margin-top': -25
|
41
41
|
'z-index': 2
|
@@ -151,6 +151,17 @@ app = angular.module('instantUpload', [])
|
|
151
151
|
$this = $(this)
|
152
152
|
$scope.files.push { path: $this.find('img').attr('src'), id: $this.data('id') }
|
153
153
|
|
154
|
-
$
|
154
|
+
$scope.remove = (index) ->
|
155
|
+
$scope.files.splice(index, 1)
|
156
|
+
|
157
|
+
file = $scope.files[index]
|
158
|
+
|
159
|
+
$.ajax
|
160
|
+
url: $($element).parents('form').attr('action')
|
161
|
+
method: 'POST'
|
162
|
+
data: {iu_remove: true, index: index, offer: { id: 'true' } }
|
163
|
+
|
164
|
+
$ ->
|
165
|
+
$scope.init($($element)) if !!window.FormData
|
155
166
|
|
156
167
|
]
|
@@ -4,17 +4,18 @@
|
|
4
4
|
= file_field_tag "#{record.class.name.downcase}[#{field}_attributes][][#{options[:multi]}]", multiple: true
|
5
5
|
|
6
6
|
.iu-multi-select
|
7
|
-
|
8
|
-
= link_to '
|
7
|
+
= t 'instant_upload.drag_and_drop'
|
8
|
+
= link_to t('instant_upload.select_files'), '#', class: 'iu-multi-select-files'
|
9
9
|
|
10
10
|
%ul.iu-multi-files-cache
|
11
11
|
- record.send(field).each do |img|
|
12
12
|
%li{ data: { id: img.id } }= image_tag img.send(options[:multi]).send(options[:version]).url
|
13
13
|
|
14
|
-
.iu-alert
|
14
|
+
.alert.iu-alert= t 'instant_upload.too_much', limit: options[:limit]
|
15
15
|
|
16
16
|
%ul.iu-multi-files
|
17
17
|
%li{ 'ng-repeat' => 'file in files'}
|
18
18
|
%img{ src: "{{ file.path }}" }
|
19
|
+
%a{ 'ng-click' => 'remove($index)'}= t 'instant_upload.remove'
|
19
20
|
|
20
21
|
|
@@ -5,7 +5,7 @@ module InstantUpload
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
included do
|
8
|
-
helper_method :handle_upload, :load_uploaded_files, :clear_uploaded_files
|
8
|
+
helper_method :handle_upload, :load_uploaded_files, :clear_uploaded_files, :remove_uploaded_file
|
9
9
|
end
|
10
10
|
|
11
11
|
def handle_upload(record, field, options ={})
|
@@ -23,7 +23,7 @@ module InstantUpload
|
|
23
23
|
end
|
24
24
|
|
25
25
|
session[sesssion_key] = [] if session[sesssion_key].blank?
|
26
|
-
session[sesssion_key]
|
26
|
+
session[sesssion_key] = files.map { |f| f.id }
|
27
27
|
|
28
28
|
render json: record.send(field)
|
29
29
|
else
|
@@ -38,6 +38,10 @@ module InstantUpload
|
|
38
38
|
|
39
39
|
return true
|
40
40
|
else
|
41
|
+
if remove_uploaded_file(record, field)
|
42
|
+
render json: true
|
43
|
+
return true
|
44
|
+
end
|
41
45
|
load_uploaded_files(record, field, options)
|
42
46
|
end
|
43
47
|
|
@@ -66,6 +70,19 @@ module InstantUpload
|
|
66
70
|
session.delete("#{record.class.name.downcase}_#{field}")
|
67
71
|
end
|
68
72
|
|
73
|
+
def remove_uploaded_file(record, field)
|
74
|
+
sesssion_key = "#{record.class.name.downcase}_#{field}"
|
75
|
+
|
76
|
+
if params[:iu_remove].present?
|
77
|
+
logger.info 'remove media'
|
78
|
+
logger.info session[sesssion_key].inspect
|
79
|
+
session[sesssion_key].delete_at params[:index].to_i
|
80
|
+
return true
|
81
|
+
end
|
82
|
+
|
83
|
+
false
|
84
|
+
end
|
85
|
+
|
69
86
|
end
|
70
87
|
|
71
88
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: instant-upload
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mariusz Ołownia
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-06-
|
11
|
+
date: 2013-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -283,6 +283,7 @@ files:
|
|
283
283
|
- app/views/instant_upload/_multi.html.haml
|
284
284
|
- app/views/instant_upload/_single.html.haml
|
285
285
|
- app/views/layouts/instant_upload/application.html.erb
|
286
|
+
- config/locales/instant_upload.pl.yml
|
286
287
|
- config/routes.rb
|
287
288
|
- db/migrate/20130509140233_create_instant_upload_uploads.rb
|
288
289
|
- lib/generators/instant_upload/install_generator.rb
|