lol_multiple_uploads 1.0.2 → 1.1.0
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.
- checksums.yaml +4 -4
- data/app/assets/javascripts/lol_multiple_uploads/upload.js +48 -14
- data/app/assets/stylesheets/lol_multiple_uploads/base.css +14 -4
- data/app/controllers/photos_controller.rb +14 -1
- data/app/helpers/image_helper.rb +1 -1
- data/app/helpers/upload_helper.rb +1 -1
- data/app/models/photo.rb +8 -0
- data/app/views/layouts/lol_multiple_uploads/_photo-caption.html.erb +3 -0
- data/app/views/layouts/lol_multiple_uploads/_photo.html.erb +1 -0
- data/config/routes.rb +1 -1
- data/lib/lol_multiple_uploads/version.rb +1 -1
- data/lib/mongoid/lol_multiple_images.rb +30 -7
- 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: d1db9c8916de621822c30a27aafdbffa884c1d90
|
4
|
+
data.tar.gz: f7488684571f2310249f0d989194726164c19647
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 16b2d8802abf708d86fda857431e40ade70f77a6aed30594a5c624f8e193902f7755afcf6297bd6f7b3ad6c9f1e563cc06bfa26de953d7df24608c4b5774e107
|
7
|
+
data.tar.gz: 37fc9f119a1824a882ce9dbf0448b79c73a08cfcbcdbe9e486ee8ec4e16feb7744059a67cc781fddfbc5f7543ee62a6c6cfa93cf90298956276956ffe971b27e
|
@@ -6,18 +6,23 @@ $(document).ready(function() {
|
|
6
6
|
new MultipleUpload($multipleUploadLink);
|
7
7
|
}
|
8
8
|
|
9
|
-
new
|
9
|
+
new imageContainerManager();
|
10
10
|
});
|
11
11
|
|
12
|
-
var
|
12
|
+
var imageContainerManager = function(){
|
13
13
|
var _this = this;
|
14
14
|
this.$container = $('.lol-multiple-uploads.images-container');
|
15
|
+
this.hasCaption = Boolean(this.$container.data('has-caption'));
|
15
16
|
|
16
17
|
this.startup = function(){
|
17
18
|
this.$container.on('click', 'figure a', function(event) {
|
18
19
|
_this.removeImage($(this));
|
19
20
|
return false;
|
20
21
|
});
|
22
|
+
|
23
|
+
if (this.hasCaption){
|
24
|
+
new imageCaptionManager(this.$container);
|
25
|
+
};
|
21
26
|
},
|
22
27
|
|
23
28
|
this.removeImage = function($link){
|
@@ -45,14 +50,48 @@ var MultipleUploadsPhotos = function(){
|
|
45
50
|
this.startup();
|
46
51
|
}
|
47
52
|
|
53
|
+
var imageCaptionManager = function($container){
|
54
|
+
var _this = this;
|
55
|
+
_this.$container = $container;
|
56
|
+
|
57
|
+
this.startup = function(){
|
58
|
+
this.$container.on('focusout', 'figure input:text', function(event) {
|
59
|
+
event.preventDefault();
|
60
|
+
var field = $(this);
|
61
|
+
_this.updateImageCaption(field.val(), field.closest('figure').data('id'));
|
62
|
+
});
|
63
|
+
},
|
64
|
+
|
65
|
+
this.updateImageCaption = function(text, image_id){
|
66
|
+
$.ajax({
|
67
|
+
url: '/update-image/'+image_id,
|
68
|
+
type: 'PUT',
|
69
|
+
dataType: 'json',
|
70
|
+
data: {photo: {caption: text}},
|
71
|
+
})
|
72
|
+
.done(function() {
|
73
|
+
console.log("success");
|
74
|
+
})
|
75
|
+
.fail(function() {
|
76
|
+
console.log("error");
|
77
|
+
})
|
78
|
+
.always(function() {
|
79
|
+
console.log("complete");
|
80
|
+
});
|
81
|
+
|
82
|
+
}
|
83
|
+
|
84
|
+
this.startup();
|
85
|
+
}
|
86
|
+
|
48
87
|
var MultipleUpload = function(link){
|
49
88
|
var that = this;
|
50
89
|
this.link = link;
|
51
|
-
this.model = this.link.
|
52
|
-
this.model_id = this.link.
|
53
|
-
this.storeImagePath = this.link.
|
54
|
-
this.filePickerKey = this.link.
|
55
|
-
this.imageContainer = this.link.
|
90
|
+
this.model = this.link.data('model');
|
91
|
+
this.model_id = this.link.data('model-id');
|
92
|
+
this.storeImagePath = this.link.data('store-path');
|
93
|
+
this.filePickerKey = this.link.data('file-picker-key');
|
94
|
+
this.imageContainer = this.link.data('image-container');
|
56
95
|
|
57
96
|
this.startup = function(){
|
58
97
|
this.link.on('click', function(event) {
|
@@ -75,7 +114,7 @@ var MultipleUpload = function(link){
|
|
75
114
|
$.ajax({
|
76
115
|
url: that.storeImagePath,
|
77
116
|
type: 'POST',
|
78
|
-
dataType: '
|
117
|
+
dataType: 'html',
|
79
118
|
data: {model: that.model, model_id: that.model_id, photo: val.url},
|
80
119
|
beforeSend: function(xhr){
|
81
120
|
that.showLoading();
|
@@ -93,12 +132,7 @@ var MultipleUpload = function(link){
|
|
93
132
|
});
|
94
133
|
},
|
95
134
|
|
96
|
-
this.appendImage = function(
|
97
|
-
var html = "<figure data-id="+obj._id+">"
|
98
|
-
html += "<img src='"+obj.image.url+"' >"
|
99
|
-
html += "<a rel=nofollow' data-method='delete' href='/remove-image/"+obj._id+".json'>Remover</a>"
|
100
|
-
html += "</figure>"
|
101
|
-
|
135
|
+
this.appendImage = function(html){
|
102
136
|
$(this.imageContainer).append(html);
|
103
137
|
},
|
104
138
|
|
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
.lol-multiple-uploads.images-container figure{
|
8
8
|
width: 120px;
|
9
|
-
height: 120px;
|
9
|
+
min-height: 120px;
|
10
10
|
float: left;
|
11
11
|
padding: 0px;
|
12
12
|
margin: 5px;
|
@@ -18,10 +18,15 @@
|
|
18
18
|
cursor: move;
|
19
19
|
}
|
20
20
|
|
21
|
+
.lol-multiple-uploads.images-container figure img{
|
22
|
+
height: 120px;
|
23
|
+
width: 120px;
|
24
|
+
}
|
25
|
+
|
21
26
|
.lol-multiple-uploads.images-container figure a{
|
22
27
|
position: absolute;
|
23
|
-
|
24
|
-
left:
|
28
|
+
top: 94px;
|
29
|
+
left: -120px;
|
25
30
|
width: 100%;
|
26
31
|
padding: 5px 0;
|
27
32
|
color: #fff;
|
@@ -38,7 +43,7 @@
|
|
38
43
|
}
|
39
44
|
|
40
45
|
.lol-multiple-uploads.images-container figure:hover a{
|
41
|
-
|
46
|
+
left: 0px;
|
42
47
|
-webkit-transition: all 200ms ease-in-out;
|
43
48
|
-moz-transition: all 200ms ease-in-out;
|
44
49
|
-ms-transition: all 200ms ease-in-out;
|
@@ -49,3 +54,8 @@
|
|
49
54
|
.lol-multiple-uploads.images-container img{
|
50
55
|
max-width: 100%;
|
51
56
|
}
|
57
|
+
|
58
|
+
.lol-multiple-uploads.images-container[data-has-caption="true"] figure input[type='text']{
|
59
|
+
border: 1px solid #cacaca;
|
60
|
+
width: 116px;
|
61
|
+
}
|
@@ -8,13 +8,26 @@ class PhotosController < ActionController::Base
|
|
8
8
|
respond_with(@photo) do |format|
|
9
9
|
if @photo.save
|
10
10
|
format.json{ render json: @photo }
|
11
|
+
format.js { render partial: '/layouts/lol_multiple_uploads/photo', locals: { photo: @photo } }
|
11
12
|
else
|
12
13
|
format.json{ render nothing: true, status: :error }
|
13
14
|
end
|
14
15
|
end
|
15
16
|
rescue Exception
|
16
17
|
render nothing: true, status: :error
|
17
|
-
|
18
|
+
end
|
19
|
+
|
20
|
+
def update
|
21
|
+
@photo = Photo.find params[:id]
|
22
|
+
|
23
|
+
respond_with(@photo) do |format|
|
24
|
+
if @photo.update_attributes(params[:photo])
|
25
|
+
format.json{ render json: @photo }
|
26
|
+
else
|
27
|
+
format.json{ render nothing: true, status: :error }
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
18
31
|
|
19
32
|
def destroy
|
20
33
|
@photo = Photo.find params[:id]
|
data/app/helpers/image_helper.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module ImageHelper
|
2
2
|
|
3
3
|
def list_photos(resource)
|
4
|
-
content_tag(:div, class: 'lol-multiple-uploads images-container is-sortable', 'data-resource' => 'photo') do
|
4
|
+
content_tag(:div, class: 'lol-multiple-uploads images-container is-sortable', 'data-resource' => 'photo', 'data-has-caption' => resource.class.caption_status) do
|
5
5
|
render partial: '/layouts/lol_multiple_uploads/photo', collection: resource.photos.prioritized
|
6
6
|
end
|
7
7
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module UploadHelper
|
2
2
|
def upload_link(name='Upload File', object=nil, image_container='.images-container')
|
3
|
-
link_to(name, 'javascript://', class: 'multiple_upload', 'data-model' => object.class, 'data-model-id' => object.id, 'data-store-path' => upload_image_path(format: '
|
3
|
+
link_to(name, 'javascript://', class: 'multiple_upload', 'data-model' => object.class, 'data-model-id' => object.id, 'data-store-path' => upload_image_path(format: 'js'), 'data-file-picker-key' => "#{PICKER_KEY}", 'data-image-container' => image_container) unless object.nil? || object.new_record?
|
4
4
|
end
|
5
5
|
end
|
data/app/models/photo.rb
CHANGED
@@ -8,4 +8,12 @@ class Photo
|
|
8
8
|
belongs_to :photable, polymorphic: true
|
9
9
|
|
10
10
|
validates :photable, presence: true
|
11
|
+
|
12
|
+
field :caption
|
13
|
+
|
14
|
+
validates :caption, presence: true, if: :has_caption?, on: :update
|
15
|
+
|
16
|
+
def has_caption?
|
17
|
+
self.photable.present? && self.photable.caption_status
|
18
|
+
end
|
11
19
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
<figure data-id="<%= photo.id %>">
|
2
2
|
<%= image_tag(photo.image.url)%>
|
3
3
|
<%= link_to "Remover", remove_image_path(photo, format: 'json'), method: :delete %>
|
4
|
+
<%= render partial: '/layouts/lol_multiple_uploads/photo-caption', locals: {photo: photo} if photo.has_caption? %>
|
4
5
|
</figure>
|
data/config/routes.rb
CHANGED
@@ -1,12 +1,35 @@
|
|
1
|
+
# module Mongoid
|
2
|
+
# module LolMultipleImages
|
3
|
+
# extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
# included do
|
6
|
+
# cattr_accessor :caption_status
|
7
|
+
|
8
|
+
# has_many :photos, as: :photable
|
9
|
+
# end
|
10
|
+
|
11
|
+
# module ClassMethods
|
12
|
+
# def images_caption(option=false)
|
13
|
+
# self.caption_status = option
|
14
|
+
# end
|
15
|
+
# end
|
16
|
+
# end
|
17
|
+
# end
|
18
|
+
|
1
19
|
module Mongoid
|
2
|
-
|
3
|
-
|
20
|
+
module LolMultipleImages
|
21
|
+
extend ActiveSupport::Concern
|
22
|
+
|
23
|
+
included do
|
24
|
+
cattr_accessor :caption_status
|
4
25
|
|
5
|
-
included do
|
6
26
|
has_many :photos, as: :photable
|
7
27
|
end
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
28
|
+
|
29
|
+
module ClassMethods
|
30
|
+
def multiple_uploads(option={})
|
31
|
+
self.caption_status = option[:caption] || false # config
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
12
35
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lol_multiple_uploads
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eduardo Zaghi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -96,6 +96,7 @@ files:
|
|
96
96
|
- app/helpers/upload_helper.rb
|
97
97
|
- app/models/photo.rb
|
98
98
|
- app/uploaders/image_uploader.rb
|
99
|
+
- app/views/layouts/lol_multiple_uploads/_photo-caption.html.erb
|
99
100
|
- app/views/layouts/lol_multiple_uploads/_photo.html.erb
|
100
101
|
- config/initializers/init_lol_multiple_uploads.rb
|
101
102
|
- config/routes.rb
|