lalala 4.0.0.dev.133 → 4.0.0.dev.134
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/lalala/modules/grid.module.js +30 -27
- data/app/assets/stylesheets/lalala/modules/_grid.css.scss +6 -6
- data/app/models/lalala/abstract_asset.rb +1 -1
- data/lib/formtastic/inputs/grid_input.rb +1 -1
- data/lib/lalala/ext_rack/multiple_file_upload_support.rb +4 -2
- data/lib/lalala/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4ff12f23f11e3f4a30243125978c3afed923dcfb
|
4
|
+
data.tar.gz: 32268b08b966ad0084f3c64daa9186106cb285d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 01a1a6daa3a96804b2ad33fa4a7a7fe986db1af15b196c4b990e1e8cdc9c0c0d4877a6d43ee8bc37a0c7851d567923877bfab89f5c996643116bb73240046456
|
7
|
+
data.tar.gz: f0b36b20bfb665ae6087a5a66795ddadb0c3c5b15beb796df5dce3f8dc0f3e0ede1864c014d58833d125e05a0add4982e91a502cbf629426d8565a1b2f6912e3
|
@@ -15,7 +15,7 @@ Grid = (function() {
|
|
15
15
|
|
16
16
|
|
17
17
|
function G(grid_element) {
|
18
|
-
this.
|
18
|
+
this.selected_assets = [];
|
19
19
|
|
20
20
|
this.transform_html(grid_element);
|
21
21
|
this.bind_mouse_events();
|
@@ -24,25 +24,20 @@ Grid = (function() {
|
|
24
24
|
|
25
25
|
|
26
26
|
G.prototype.transform_html = function(grid_element) {
|
27
|
-
var fragment, el,
|
27
|
+
var fragment, el, el_assets, el_actions, el_errors, $grid, $original_list;
|
28
28
|
|
29
29
|
// elements
|
30
30
|
$grid = $(grid_element);
|
31
31
|
$original_list = $grid.children("ul:first-child");
|
32
32
|
|
33
|
-
//
|
34
|
-
data_attr = "data-accessible-attributes";
|
35
|
-
data_attr = $original_list.attr(data_attr)
|
36
|
-
data_attr = data_attr ? data_attr.split(",") : [];
|
37
|
-
|
38
|
-
// document fragment for the images
|
33
|
+
// document fragment for the assets
|
39
34
|
fragment = document.createDocumentFragment();
|
40
35
|
|
41
|
-
// transform
|
36
|
+
// transform assets html
|
42
37
|
$grid.find("li.asset").not(":last-child").each(function() {
|
43
38
|
var grid_piece = document.createElement("li");
|
44
39
|
grid_piece.className = "asset";
|
45
|
-
grid_piece.innerHTML = this.innerHTML.replace("<a", "<a class=\"
|
40
|
+
grid_piece.innerHTML = this.innerHTML.replace("<a", "<a class=\"thumbnail\"");
|
46
41
|
var overlay = document.createElement("div");
|
47
42
|
overlay.className = "overlay";
|
48
43
|
grid_piece.appendChild(overlay);
|
@@ -53,14 +48,14 @@ Grid = (function() {
|
|
53
48
|
el = document.createElement("div");
|
54
49
|
el.className = "mod-grid";
|
55
50
|
|
56
|
-
|
57
|
-
|
58
|
-
|
51
|
+
el_assets = document.createElement("ul");
|
52
|
+
el_assets.className = "assets";
|
53
|
+
el_assets.appendChild(fragment);
|
59
54
|
|
60
55
|
el_actions = document.createElement("div");
|
61
56
|
el_actions.className = "actions";
|
62
57
|
el_actions.innerHTML = "" +
|
63
|
-
$grid.find("li
|
58
|
+
$grid.find("li.actions").html() +
|
64
59
|
'<a class="button" rel="choose-files">Choose files</a>' +
|
65
60
|
'<div class="files-description"></div>' +
|
66
61
|
'<a class="button unavailable" rel="edit">Edit selected</a>' +
|
@@ -68,7 +63,15 @@ Grid = (function() {
|
|
68
63
|
|
69
64
|
// merge
|
70
65
|
el.appendChild(el_actions);
|
71
|
-
el.appendChild(
|
66
|
+
el.appendChild(el_assets);
|
67
|
+
|
68
|
+
// errors
|
69
|
+
if ($grid.find("li.errors").length) {
|
70
|
+
el_errors = document.createElement("div");
|
71
|
+
el_errors.className = "errors";
|
72
|
+
el_errors.innerHTML = $grid.find("li.errors").html();
|
73
|
+
el.appendChild(el_errors);
|
74
|
+
}
|
72
75
|
|
73
76
|
// replace original with new
|
74
77
|
$original_list.replaceWith(el);
|
@@ -87,7 +90,7 @@ Grid = (function() {
|
|
87
90
|
this.$el.children(".actions").find('[rel="edit"], [rel="destroy"]').each(function() {
|
88
91
|
var $btn = $(this);
|
89
92
|
|
90
|
-
if (grid.
|
93
|
+
if (grid.selected_assets.length === 0) {
|
91
94
|
$btn.addClass("unavailable");
|
92
95
|
} else {
|
93
96
|
$btn.removeClass("unavailable");
|
@@ -100,11 +103,11 @@ Grid = (function() {
|
|
100
103
|
// Events
|
101
104
|
//
|
102
105
|
G.prototype.bind_mouse_events = function() {
|
103
|
-
this.$el.children(".
|
106
|
+
this.$el.children(".assets")
|
104
107
|
.on("mouseleave", "li", this.row_mouseleave)
|
105
108
|
.on("mouseleave", "li label", this.row_label_mouseleave)
|
106
109
|
.on("mouseenter", "li label", this.row_label_mouseenter)
|
107
|
-
.on("mouseenter", "li .
|
110
|
+
.on("mouseenter", "li .thumbnail", this.row_thumbnail_mouseenter)
|
108
111
|
.on("click", "li a", function(e) { e.preventDefault(); })
|
109
112
|
.on("click", "li .attributes .close-button", this.close_button_click);
|
110
113
|
|
@@ -127,7 +130,7 @@ Grid = (function() {
|
|
127
130
|
$(this).parent().addClass("properties").removeClass("move");
|
128
131
|
};
|
129
132
|
|
130
|
-
G.prototype.
|
133
|
+
G.prototype.row_thumbnail_mouseenter = function(e) {
|
131
134
|
var $p = $(this).parent();
|
132
135
|
if ($p.hasClass("edit-block")) return;
|
133
136
|
$p.addClass("properties");
|
@@ -149,19 +152,19 @@ Grid = (function() {
|
|
149
152
|
};
|
150
153
|
|
151
154
|
G.prototype.edit_or_destroy_selected_button_click = function(e) {
|
152
|
-
var i = 0, j = this.
|
155
|
+
var i = 0, j = this.selected_assets.length,
|
153
156
|
$e = $(e.currentTarget), action = $e.attr("rel");
|
154
157
|
|
155
158
|
if ($e.hasClass("unavailable")) return;
|
156
159
|
|
157
160
|
for (; i<j; ++i) {
|
158
|
-
var id = this.
|
161
|
+
var id = this.selected_assets[i];
|
159
162
|
var $row = $("#" + id).parent();
|
160
163
|
$row.removeClass("selected");
|
161
164
|
this["set_to_" + action]($row[0]);
|
162
165
|
}
|
163
166
|
|
164
|
-
this.
|
167
|
+
this.selected_assets.length = 0;
|
165
168
|
this.check_edit_and_destroy_buttons();
|
166
169
|
};
|
167
170
|
|
@@ -190,16 +193,16 @@ Grid = (function() {
|
|
190
193
|
$(ui.unselecting).removeClass("selected");
|
191
194
|
},
|
192
195
|
stop: function(e, ui) {
|
193
|
-
var
|
194
|
-
grid.$el.find(".
|
196
|
+
var new_selected_assets = [];
|
197
|
+
grid.$el.find(".assets > li").each(function() {
|
195
198
|
var $t = $(this), id;
|
196
199
|
if ($t.hasClass("selected")) {
|
197
200
|
id = $t.children('input[type="hidden"]:first').attr("id");
|
198
|
-
|
201
|
+
new_selected_assets.push(id + "");
|
199
202
|
id = null;
|
200
203
|
}
|
201
204
|
});
|
202
|
-
grid.
|
205
|
+
grid.selected_assets = new_selected_assets;
|
203
206
|
grid.check_edit_and_destroy_buttons();
|
204
207
|
}
|
205
208
|
});
|
@@ -226,7 +229,7 @@ Grid = (function() {
|
|
226
229
|
|
227
230
|
G.prototype.set_to_not_edit = function(row) {
|
228
231
|
$(row).removeClass("edit-block");
|
229
|
-
}
|
232
|
+
};
|
230
233
|
|
231
234
|
|
232
235
|
|
@@ -11,12 +11,12 @@
|
|
11
11
|
|
12
12
|
@include border-radius(5px);
|
13
13
|
|
14
|
-
.
|
14
|
+
.assets,
|
15
15
|
.actions {
|
16
16
|
overflow: hidden;
|
17
17
|
}
|
18
18
|
|
19
|
-
.
|
19
|
+
.assets {
|
20
20
|
padding-top: 10px - 3px;
|
21
21
|
}
|
22
22
|
|
@@ -26,7 +26,7 @@
|
|
26
26
|
margin: 0 11px 11px 0;
|
27
27
|
position: relative;
|
28
28
|
|
29
|
-
&, .
|
29
|
+
&, .thumbnail, .overlay {
|
30
30
|
height: 100px;
|
31
31
|
width: 100px;
|
32
32
|
}
|
@@ -50,15 +50,15 @@
|
|
50
50
|
.asset.will-destroy .overlay,
|
51
51
|
.asset.selected.will-destroy .overlay { background: rgba($red, .5); }
|
52
52
|
|
53
|
-
//
|
54
|
-
.asset .
|
53
|
+
// thumbnail + overlay
|
54
|
+
.asset .thumbnail,
|
55
55
|
.asset .overlay {
|
56
56
|
left: 0;
|
57
57
|
position: absolute;
|
58
58
|
top: 0;
|
59
59
|
}
|
60
60
|
|
61
|
-
.asset .
|
61
|
+
.asset .thumbnail {
|
62
62
|
z-index: 0;
|
63
63
|
}
|
64
64
|
|
@@ -13,7 +13,7 @@ class Lalala::AbstractAsset < ActiveRecord::Base
|
|
13
13
|
|
14
14
|
def self.extension_white_list
|
15
15
|
list = if self.uploaders and self.uploaders[:asset]
|
16
|
-
self.uploaders[:asset].new.extension_white_list
|
16
|
+
self.uploaders[:asset].new.try(:extension_white_list)
|
17
17
|
end
|
18
18
|
|
19
19
|
list = list || []
|
@@ -55,7 +55,7 @@ class Formtastic::Inputs::GridInput
|
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
|
-
html += template.content_tag :li do
|
58
|
+
html += template.content_tag :li, class: "actions" do
|
59
59
|
builder.fields_for(method, assets.build) do |f|
|
60
60
|
f.file_field :asset, multiple: true, accept: asset_model_class.extension_white_list
|
61
61
|
end
|
@@ -30,8 +30,10 @@ class Lalala::ExtRack::MultipleFileUploadSupport
|
|
30
30
|
return unless Array === assets
|
31
31
|
|
32
32
|
assets.each do |file|
|
33
|
-
|
34
|
-
|
33
|
+
if file.present?
|
34
|
+
params[last_id] = { "asset" => file }.with_indifferent_access
|
35
|
+
last_id.succ!
|
36
|
+
end
|
35
37
|
end
|
36
38
|
|
37
39
|
else
|
data/lib/lalala/version.rb
CHANGED