viniBaxter-field-active_storage 14.0.0 → 300.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/app/views/fields/active_storage/_form.html.erb +7 -21
- data/app/views/fields/active_storage/_index.html.erb +27 -35
- data/app/views/fields/active_storage/_show.html.erb +6 -20
- data/app/views/fields/active_storage/drop_js/_drop_js_items_if_sweety.html.erb +57 -0
- data/app/views/fields/active_storage/drop_js/_drop_js_items_on_edit.html.erb +37 -0
- data/app/views/fields/active_storage/drop_js/_drop_js_items_on_show.html.erb +33 -0
- data/app/views/fields/active_storage/{_dropjs_items.html.erb → drop_js/_dropjs_items.html.erb} +1 -1
- data/app/views/fields/active_storage/drop_js/_dropjs_list_edit.html.erb +49 -0
- data/app/views/fields/active_storage/{_dropjs_list_edit.html.erb → drop_js/_dropjs_list_show.html.erb} +0 -0
- data/app/views/fields/active_storage/drop_js/_dropjs_template.html.erb +33 -0
- data/app/views/fields/active_storage/normal/_item.html.erb +33 -0
- data/app/views/fields/active_storage/normal/_items.html.erb +35 -0
- data/app/views/fields/active_storage/{_items_on_show.html.erb → normal/_items_on_show.html.erb} +6 -1
- data/app/views/fields/active_storage/normal/_preview.html.erb +42 -0
- data/lib/viniBaxter/field/active_storage.rb +18 -2
- data/lib/viniBaxter/version.rb +13 -0
- data/viniBaxter-field-active_storage.gemspec +2 -1
- metadata +18 -12
- data/app/views/fields/active_storage/_dropjs_template.html.erb +0 -54
- data/app/views/fields/active_storage/_item.html.erb +0 -35
- data/app/views/fields/active_storage/_items.html.erb +0 -63
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87b79589f648d29cae389c4f4e05ba2f5eda5a204a05d3a868f2a5d4bb001587
|
4
|
+
data.tar.gz: 500b6345e53af356d9bb4062462185d1c700edd5a2b7736fd6d68a63e7c8eba6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 105b6b52b9bc8d9cce99b1e73718cd37c38832f1cf23e4773eafb20c6a5672e4e77dd030f000d62f4c4b41d00db831c43878db931d881691a2163e736c296ab9
|
7
|
+
data.tar.gz: 4d8d9ddc967eb6f9659fa7e2e69e8bd7a7b5a56fbb99bcdef90410c331151bb6e1ebb850f7daf2471cc068143d27cafb52b82be7971f3a26f88eab6eb854cbf5
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
3.0.3
|
@@ -1,37 +1,23 @@
|
|
1
|
-
<%#
|
2
|
-
# Image Form Partial
|
3
|
-
|
4
|
-
This partial renders an input element for image attributes.
|
5
|
-
By default, the input is a text field for the image's URL.
|
6
|
-
|
7
|
-
## Local variables:
|
8
|
-
|
9
|
-
- `f`:
|
10
|
-
A Rails form generator, used to help create the appropriate input fields.
|
11
|
-
- `field`:
|
12
|
-
An instance of [Administrate::Field::Image][1].
|
13
|
-
A wrapper around the image url pulled from the database.
|
14
|
-
|
15
|
-
[1]: http://www.rubydoc.info/gems/administrate/Administrate/Field/Image
|
16
|
-
%>
|
17
1
|
<div class="field-unit__label">
|
18
2
|
<%= f.label field.attribute %>
|
19
3
|
</div>
|
20
4
|
<div class="field-unit__field">
|
21
5
|
<% if field.drop_js? %>
|
22
|
-
|
23
|
-
<%= render partial: 'fields/active_storage/dropjs_items', locals: { f: f, field: field, removable: field.destroyable? } %>
|
6
|
+
<%= render partial: 'fields/active_storage/drop_js/dropjs_items', locals: { f: f, field: field, removable: field.destroyable? } %>
|
24
7
|
<%else %>
|
25
|
-
<!-- Form if no dropJS -->
|
26
8
|
<%= f.file_field field.attribute, multiple: field.many?, direct_upload: field.direct? %>
|
27
9
|
<%end %>
|
28
10
|
<!-- show previous images recorded -->
|
29
11
|
<% if field.attached? %>
|
30
12
|
<% if !field.drop_js? %>
|
31
|
-
<%= render partial: 'fields/active_storage/
|
13
|
+
<%= render partial: 'fields/active_storage/normal/items_on_show', locals: { field: field, removable: field.destroyable? } %>
|
32
14
|
<%= field.can_add_attachment? ? "Add:" : "Replace:" %>
|
33
15
|
<%else %>
|
34
|
-
|
16
|
+
<% if request.env["PATH_INFO"].include?('edit')%>
|
17
|
+
<%= render partial: 'fields/active_storage/drop_js/drop_js_items_on_edit', locals: { field: field, removable: field.destroyable? } %>
|
18
|
+
<% else %>
|
19
|
+
<%= render partial: 'fields/active_storage/drop_js/drop_js_items_on_show', locals: { field: field, removable: field.destroyable? } %>
|
20
|
+
<% end %>
|
35
21
|
<%end %>
|
36
22
|
<% end %>
|
37
23
|
</div>
|
@@ -1,42 +1,34 @@
|
|
1
|
-
<%#
|
2
|
-
# Image Index Partial
|
3
|
-
|
4
|
-
This partial renders an image attribute
|
5
|
-
to be displayed on a resource's index page.
|
6
|
-
|
7
|
-
By default, the attribute is rendered as an image tag.
|
8
|
-
|
9
|
-
## Local variables:
|
10
|
-
|
11
|
-
- `field`:
|
12
|
-
An instance of [Administrate::Field::Image][1].
|
13
|
-
A wrapper around the image url pulled from the database.
|
14
|
-
|
15
|
-
[1]: http://www.rubydoc.info/gems/administrate/Administrate/Field/Image
|
16
|
-
%>
|
17
|
-
<style>
|
18
|
-
<%# figure out a way to remove this %>
|
19
|
-
td img {
|
20
|
-
max-height: unset !important;
|
21
|
-
}
|
22
|
-
</style>
|
23
|
-
<%
|
24
|
-
attachments = Array(field.many? ? field.attachments : field.data)
|
25
|
-
%>
|
26
1
|
<% if field.attached? %>
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
2
|
+
<style type="text/css" nonce="<%= content_security_policy_nonce %>">
|
3
|
+
<%# figure out a way to remove this %>
|
4
|
+
td img {
|
5
|
+
max-height: unset !important;
|
6
|
+
}
|
7
|
+
</style>
|
8
|
+
<% if field.index_display_preview? %>
|
9
|
+
<% if field.many? %>
|
10
|
+
<%= render partial: 'fields/active_storage/normal/items',
|
11
|
+
locals: {
|
12
|
+
many: true,
|
13
|
+
field: field,
|
14
|
+
size: field.index_preview_size
|
15
|
+
} %>
|
16
|
+
<% else %>
|
17
|
+
<%= render partial: 'fields/active_storage/normal/item',
|
18
|
+
locals: {
|
19
|
+
many: false,
|
20
|
+
field: field,
|
21
|
+
attachment: field.data,
|
22
|
+
size: field.index_preview_size
|
23
|
+
} %>
|
24
|
+
<% end %>
|
34
25
|
<% end %>
|
35
26
|
<% if field.index_display_count? %>
|
36
27
|
<div class="attachments-count">
|
37
|
-
<%= pluralize(field.attachments.count,
|
28
|
+
<%= pluralize(field.attachments.count,
|
29
|
+
I18n.t("administrate.fields.active_storage.attachment", default: 'Attachment')
|
30
|
+
)
|
31
|
+
%>
|
38
32
|
</div>
|
39
33
|
<% end %>
|
40
|
-
<% else %>
|
41
|
-
0 Attached files
|
42
34
|
<% end %>
|
@@ -1,23 +1,9 @@
|
|
1
|
-
<%#
|
2
|
-
# Image Show Partial
|
3
|
-
|
4
|
-
This partial renders an image attribute,
|
5
|
-
to be displayed on a resource's show page.
|
6
|
-
|
7
|
-
By default, the attribute is rendered as an image tag.
|
8
|
-
|
9
|
-
## Local variables:
|
10
|
-
|
11
|
-
- `field`:
|
12
|
-
An instance of [Administrate::Field::Image][1].
|
13
|
-
A wrapper around the image url pulled from the database.
|
14
|
-
|
15
|
-
[1]: http://www.rubydoc.info/gems/administrate/Administrate/Field/Image
|
16
|
-
%>
|
17
1
|
<% if field.attached? %>
|
18
|
-
<% if field.show_drop_js_on_show? %>
|
19
|
-
<%= render partial: 'fields/active_storage/
|
20
|
-
<%
|
21
|
-
<%= render partial: 'fields/active_storage/
|
2
|
+
<% if field.show_drop_js_on_show? && field.sweety_show_drop_js_on_show? %>
|
3
|
+
<%= render partial: 'fields/active_storage/drop_js/drop_js_items_if_sweety', locals: { field: field, removable: field.destroyable? } %>
|
4
|
+
<% elsif field.show_drop_js_on_show?%>
|
5
|
+
<%= render partial: 'fields/active_storage/drop_js/drop_js_items_on_show', locals: { field: field } %>
|
6
|
+
<% else %>
|
7
|
+
<%= render partial: 'fields/active_storage/normal/items_on_show', locals: { field: field } %>
|
22
8
|
<% end %>
|
23
9
|
<% end %>
|
@@ -0,0 +1,57 @@
|
|
1
|
+
<%
|
2
|
+
attachments = Array(field.many? ? field.attachments : field.data)
|
3
|
+
removable = local_assigns.fetch(:removable, false)
|
4
|
+
%>
|
5
|
+
<div class="mt-5 col-12 ">
|
6
|
+
<div class="row">
|
7
|
+
<div class="col-12">
|
8
|
+
<div class="">
|
9
|
+
<div class="card-body">
|
10
|
+
<div class="already-downloaded dropzone">
|
11
|
+
<div class="list-group list-group-flush">
|
12
|
+
<div class="list-group-item">
|
13
|
+
<div class="row align-items-center">
|
14
|
+
<% attachments.each do |attachment| %>
|
15
|
+
<div>
|
16
|
+
<div class="" id="<%= @page.class %>_picture_<%= attachment.id %>">
|
17
|
+
<%= render partial: 'fields/active_storage/drop_js/dropjs_list_edit', locals: {
|
18
|
+
field: field,
|
19
|
+
attachment: attachment,
|
20
|
+
removable: removable,
|
21
|
+
image_size: field.show_preview_size
|
22
|
+
}%>
|
23
|
+
</div>
|
24
|
+
<div class="col ml-n2">
|
25
|
+
<small class="text-muted">
|
26
|
+
<div class="mb-1 dz-size" data-dz-size="">
|
27
|
+
<strong>
|
28
|
+
SEO: <%= alt_method(attachment) %>
|
29
|
+
</strong>
|
30
|
+
</div>
|
31
|
+
</small>
|
32
|
+
<div class="dz-error-message"><span data-dz-errormessage=""></span></div>
|
33
|
+
<!-- Text -->
|
34
|
+
<small class="text-muted">
|
35
|
+
<div class="mb-1 dz-size" data-dz-size="">
|
36
|
+
<strong>
|
37
|
+
full name : <%= attachment.filename %> |
|
38
|
+
</strong></div>
|
39
|
+
</small>
|
40
|
+
<small class="text-muted">
|
41
|
+
<div class="mb-1 dz-size" data-dz-size="">
|
42
|
+
<strong>
|
43
|
+
<%= attachment.byte_size.fdiv(1000).round(1) %>
|
44
|
+
</strong> KB</div>
|
45
|
+
</small>
|
46
|
+
</div>
|
47
|
+
</div>
|
48
|
+
<% end %>
|
49
|
+
</div>
|
50
|
+
</div>
|
51
|
+
</div>
|
52
|
+
</div>
|
53
|
+
</div>
|
54
|
+
</div>
|
55
|
+
</div>
|
56
|
+
</div>
|
57
|
+
</div>
|
@@ -0,0 +1,37 @@
|
|
1
|
+
<%
|
2
|
+
attachments = Array(field.many? ? field.attachments : field.data)
|
3
|
+
removable = local_assigns.fetch(:removable, false)
|
4
|
+
%>
|
5
|
+
<div class="mt-5 col-12 ">
|
6
|
+
<div class="row">
|
7
|
+
<div class="col-12">
|
8
|
+
<div class="card card light-shadow card-fill">
|
9
|
+
<div class="card-header">
|
10
|
+
<h4 class="card-header-title">
|
11
|
+
Latest Uploads
|
12
|
+
</h4>
|
13
|
+
</div>
|
14
|
+
<div class="card-body">
|
15
|
+
<div class="already-downloaded dropzone">
|
16
|
+
<div class="list-group list-group-flush">
|
17
|
+
<div class="list-group-item">
|
18
|
+
<div class="row align-items-center">
|
19
|
+
<% attachments.each do |attachment| %>
|
20
|
+
<div class="" id="<%= @page.class %>_picture_<%= attachment.id %>">
|
21
|
+
<%= render partial: 'fields/active_storage/drop_js/dropjs_list_edit', locals: {
|
22
|
+
field: field,
|
23
|
+
attachment: attachment,
|
24
|
+
removable: removable,
|
25
|
+
image_size: field.show_preview_size
|
26
|
+
}%>
|
27
|
+
</div>
|
28
|
+
<% end %>
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
</div>
|
35
|
+
</div>
|
36
|
+
</div>
|
37
|
+
</div>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<%
|
2
|
+
attachments = Array(field.many? ? field.attachments : field.data)
|
3
|
+
removable = local_assigns.fetch(:removable, false)
|
4
|
+
%>
|
5
|
+
<div class="mt-5 col-12 ">
|
6
|
+
<div class="row">
|
7
|
+
<div class="col-12">
|
8
|
+
<div class="card card light-shadow card-fill">
|
9
|
+
<div class="card-header">
|
10
|
+
<h4 class="card-header-title">
|
11
|
+
Latest Uploads
|
12
|
+
</h4>
|
13
|
+
</div>
|
14
|
+
<div class="card-body">
|
15
|
+
<div class="already-downloaded dropzone">
|
16
|
+
<div class="row">
|
17
|
+
<% attachments.each do |attachment| %>
|
18
|
+
<div class="col-4" id="<%= @page.class %>_picture_<%= attachment.id %>">
|
19
|
+
<%= render partial: 'fields/active_storage/drop_js/dropjs_list_show', locals: {
|
20
|
+
field: field,
|
21
|
+
attachment: attachment,
|
22
|
+
removable: removable,
|
23
|
+
image_size: field.show_preview_size
|
24
|
+
}%>
|
25
|
+
</div>
|
26
|
+
<% end %>
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
</div>
|
33
|
+
</div>
|
@@ -0,0 +1,49 @@
|
|
1
|
+
<div class='mt-4 list-group list-group-flush'>
|
2
|
+
<div class="dz-preview dz-file-preview bibi">
|
3
|
+
<div class="row align-items-center">
|
4
|
+
<div class="col-auto">
|
5
|
+
<div class="mx-1 my-1 avatar avatar-xl">
|
6
|
+
<%
|
7
|
+
# By default we don't allow attachment removal
|
8
|
+
removable = local_assigns.fetch(:removable, false)
|
9
|
+
image_size = local_assigns.fetch(:image_size, [200, 200])
|
10
|
+
%>
|
11
|
+
<% if attachment.image? and attachment.variable? and !field.url_only? %>
|
12
|
+
<%= link_to(field.blob_url(attachment), title: attachment.filename, class:'rounded avatar-img') do %>
|
13
|
+
<%#= image_tag(field.variant(attachment, resize_to_limit: image_size),class:'avatar-img rounded delete_on_click') %>
|
14
|
+
<%= image_tag attachment.variant(resize_to_limit: image_size), class:"rounded avatar-img delete_on_click" %>
|
15
|
+
<% end %>
|
16
|
+
<% elsif attachment.image? and !field.url_only? %>
|
17
|
+
<%= link_to(field.blob_url(attachment), title: attachment.filename) do %>
|
18
|
+
<%= image_tag(field.url(attachment)) %>
|
19
|
+
<% end %>
|
20
|
+
<% elsif attachment.video? and attachment.previewable? and !field.url_only? %> <%# if ffmpeg is installed %>
|
21
|
+
<%= video_tag(field.url(attachment), poster: field.preview(attachment, resize_to_limit: image_size), controls: true, autobuffer: true, style: "width: 100%; height: auto;") %>
|
22
|
+
<% elsif attachment.video? and !field.url_only? %>
|
23
|
+
<%= video_tag(field.url(attachment), controls: true, autobuffer: true, style: "width: 100%; height: auto;") %>
|
24
|
+
<% elsif attachment.audio? and !field.url_only? %>
|
25
|
+
<%= audio_tag(field.url(attachment), autoplay: false, controls: true) %>
|
26
|
+
<% else %>
|
27
|
+
<%= link_to(field.blob_url(attachment), title: attachment.filename) do %>
|
28
|
+
<% if attachment.previewable? and !field.url_only? %>
|
29
|
+
<%= image_tag(field.preview(attachment, resize_to_limit: [595, 842])) %>
|
30
|
+
<% else %>
|
31
|
+
<%= attachment.filename %>
|
32
|
+
<% end %>
|
33
|
+
<% end %>
|
34
|
+
<% end %>
|
35
|
+
<% if field.destroy_url.present? %>
|
36
|
+
<% destroy_url = field.destroy_url.call(namespace, field.data.record, attachment) %>
|
37
|
+
<div class="position-absolute delete-link d-flex align-items-center justify-content-center">
|
38
|
+
<%= link_to destroy_url,
|
39
|
+
method: :delete,
|
40
|
+
remote: true do %>
|
41
|
+
<i class="tim-icons icon-simple-remove text-light"></i>
|
42
|
+
<% end %>
|
43
|
+
</div>
|
44
|
+
<% end %>
|
45
|
+
</div>
|
46
|
+
</div>
|
47
|
+
</div>
|
48
|
+
</div>
|
49
|
+
</div>
|
File without changes
|
@@ -0,0 +1,33 @@
|
|
1
|
+
|
2
|
+
<div class='mt-4 list-group list-group-flush'>
|
3
|
+
<div class="dz-preview dz-file-preview bibi">
|
4
|
+
<div class="row align-items-center">
|
5
|
+
<div class="col-auto">
|
6
|
+
<div class="mx-1 my-1 avatar avatar-xl">
|
7
|
+
<img class="rounded avatar-img" data-dz-thumbnail>
|
8
|
+
<div class="position-absolute delete-link d-flex align-items-center justify-content-center">
|
9
|
+
<a rel="nofollow" data-dz-remove>
|
10
|
+
<i class="tim-icons icon-simple-remove text-light"></i>
|
11
|
+
</a>
|
12
|
+
</div>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
<div class="col ml-n2">
|
16
|
+
<!-- Title -->
|
17
|
+
<h4 class="mb-1 text-body name">
|
18
|
+
<div class="dz-filename"><span data-dz-name></span></div>
|
19
|
+
<div class="dz-error-message"><span data-dz-errormessage></span></div>
|
20
|
+
</h4>
|
21
|
+
<!-- Time -->
|
22
|
+
<p class="mb-0 small text-muted">
|
23
|
+
<span class="fe fe-clock"></span>
|
24
|
+
<time data-dz-size></time>
|
25
|
+
</p>
|
26
|
+
<div class="ml-1 w-50 dz-progress">
|
27
|
+
<span class="dz-upload" data-dz-uploadprogress>
|
28
|
+
</span>
|
29
|
+
</div>
|
30
|
+
</div>
|
31
|
+
</div>
|
32
|
+
</div>
|
33
|
+
</div>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
<%#
|
2
|
+
# Item Partial
|
3
|
+
|
4
|
+
This partial renders attached items.
|
5
|
+
|
6
|
+
Attachments of type image, video and audio are emedded. For all other types
|
7
|
+
we try use it's preview. If all else fails we simply link to the attached file.
|
8
|
+
|
9
|
+
This partial will optionally show a `remove` link next to each attachment which is
|
10
|
+
controlled via a boolean local variable.
|
11
|
+
|
12
|
+
## Local variables:
|
13
|
+
|
14
|
+
- `field`:
|
15
|
+
An instance of [Administrate::Field::Image].
|
16
|
+
A wrapper around the image url pulled from the database.
|
17
|
+
- `attachment`:
|
18
|
+
Reference to the file
|
19
|
+
- `removable`:
|
20
|
+
A boolean used to control the display of a `Remove` link which
|
21
|
+
is used to destroy a single attachment. Defaults to `false`
|
22
|
+
- `size`:
|
23
|
+
[x, y]
|
24
|
+
Maximum size of the ActiveStorage preview.
|
25
|
+
%>
|
26
|
+
<% if field.show_display_preview? %>
|
27
|
+
<div>
|
28
|
+
<%= render partial: 'fields/active_storage/normal/preview', locals: local_assigns %>
|
29
|
+
</div>
|
30
|
+
<% end %>
|
31
|
+
<div>
|
32
|
+
<%#= link_to attachment.filename, field.blob_url(attachment), title: attachment.filename %>
|
33
|
+
</div>
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<%#
|
2
|
+
# Items Partial
|
3
|
+
|
4
|
+
This partial renders one or more attachments
|
5
|
+
|
6
|
+
## Local variables:
|
7
|
+
|
8
|
+
- `field`:
|
9
|
+
An instance of [Administrate::Field::Image].
|
10
|
+
A wrapper around the image url pulled from the database.
|
11
|
+
- `removable`:
|
12
|
+
A boolean used to control the display of a `Remove` link which
|
13
|
+
is used to destroy a single attachment. Defaults to `false`
|
14
|
+
- `size`:
|
15
|
+
[x, y]
|
16
|
+
Maximum size of the ActiveStorage preview.
|
17
|
+
Defaults to `field.show_preview_size`.
|
18
|
+
%>
|
19
|
+
<%
|
20
|
+
removable = local_assigns.fetch(:removable, false)
|
21
|
+
size = local_assigns.fetch(:size, field.show_preview_size)
|
22
|
+
%>
|
23
|
+
<div class="d-flex" style="flex-wrap: wrap;">
|
24
|
+
<% field.attachments.each do |attachment| %>
|
25
|
+
<div class="attachments-listing m-1">
|
26
|
+
<%= render partial: 'fields/active_storage/normal/item',
|
27
|
+
locals: {
|
28
|
+
field: field,
|
29
|
+
attachment: attachment,
|
30
|
+
removable: removable,
|
31
|
+
size: size
|
32
|
+
} %>
|
33
|
+
</div>
|
34
|
+
<% end %>
|
35
|
+
</div>
|
data/app/views/fields/active_storage/{_items_on_show.html.erb → normal/_items_on_show.html.erb}
RENAMED
@@ -4,6 +4,11 @@
|
|
4
4
|
%>
|
5
5
|
<% attachments.each do |attachment| %>
|
6
6
|
<div class="attachments-listing">
|
7
|
-
<%= render partial: 'fields/active_storage/item', locals: {
|
7
|
+
<%= render partial: 'fields/active_storage/normal/item', locals: {
|
8
|
+
field: field,
|
9
|
+
attachment: attachment,
|
10
|
+
removable: removable,
|
11
|
+
image_size: field.show_preview_size
|
12
|
+
} %>
|
8
13
|
</div>
|
9
14
|
<% end %>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
<style type="text/css" nonce="<%= content_security_policy_nonce %>">
|
2
|
+
#as-field-<%= attachment.id %> {
|
3
|
+
width: <%=size[0]/2%>px;
|
4
|
+
height: auto;
|
5
|
+
overflow: hidden;
|
6
|
+
}
|
7
|
+
</style>
|
8
|
+
<div id="as-field-<%= attachment.id %>">
|
9
|
+
<% if attachment.image? %>
|
10
|
+
<% if attachment.variable? %>
|
11
|
+
<div class="avatar">
|
12
|
+
<%#= image_tag attachment.variant(resize_to_limit: image_size)%>
|
13
|
+
<%= image_tag(field.variant(attachment, resize_to_limit: size), class:"avatar-img rounded") %>
|
14
|
+
</div>
|
15
|
+
<% else %>
|
16
|
+
<%= image_tag(field.url(attachment)) %>
|
17
|
+
<% end %>
|
18
|
+
<% elsif attachment.video? %>
|
19
|
+
<style type="text/css" nonce="<%= content_security_policy_nonce %>">
|
20
|
+
#as-field-video-<%= attachment.id %> {
|
21
|
+
object-fit: contain;
|
22
|
+
width: 100%;
|
23
|
+
height: 100%;
|
24
|
+
}
|
25
|
+
</style>
|
26
|
+
<% if attachment.previewable? %>
|
27
|
+
<%= video_tag(field.url(attachment),
|
28
|
+
poster: field.preview(attachment, resize_to_limit: size),
|
29
|
+
controls: true,
|
30
|
+
autobuffer: true,
|
31
|
+
id: "as-field-video-#{attachment.id}") %>
|
32
|
+
<% else %>
|
33
|
+
<%= video_tag(field.url(attachment), controls: true, autobuffer: true, id: "as-field-video-#{attachment.id}") %>
|
34
|
+
<% end %>
|
35
|
+
<% elsif attachment.audio? %>
|
36
|
+
<%= audio_tag(field.url(attachment), autoplay: false, controls: true) %>
|
37
|
+
<% elsif attachment.previewable? %>
|
38
|
+
<%= image_tag(field.preview(attachment, resize_to_limit: size)) %>
|
39
|
+
<% else %>
|
40
|
+
<%= attachment.filename %>
|
41
|
+
<% end %>
|
42
|
+
</div>
|
@@ -17,6 +17,18 @@ module Administrate
|
|
17
17
|
# theVariant.service.send(:path_for, theVariant.key) # Absolute path to variant file
|
18
18
|
# end
|
19
19
|
|
20
|
+
def index_display_preview?
|
21
|
+
options.fetch(:index_display_preview, true)
|
22
|
+
end
|
23
|
+
|
24
|
+
def index_preview_size
|
25
|
+
options.fetch(:index_preview_size, [150, 150])
|
26
|
+
end
|
27
|
+
|
28
|
+
def show_display_preview?
|
29
|
+
options.fetch(:show_display_preview, true)
|
30
|
+
end
|
31
|
+
|
20
32
|
def url_only?
|
21
33
|
options.fetch(:url_only, false)
|
22
34
|
end
|
@@ -34,7 +46,7 @@ module Administrate
|
|
34
46
|
end
|
35
47
|
|
36
48
|
def show_preview_size
|
37
|
-
options.fetch(:show_preview_size, [
|
49
|
+
options.fetch(:show_preview_size, [800, 800])
|
38
50
|
end
|
39
51
|
|
40
52
|
def many?
|
@@ -55,6 +67,10 @@ module Administrate
|
|
55
67
|
options.fetch(:show_drop_js_on_show, false)
|
56
68
|
end
|
57
69
|
|
70
|
+
def sweety_show_drop_js_on_show?
|
71
|
+
options.fetch(:sweety_show_drop_js_on_show, false)
|
72
|
+
end
|
73
|
+
|
58
74
|
def drop_max_file?
|
59
75
|
options.fetch(:drop_max_file, many? == true ? 10 : 1)
|
60
76
|
end
|
@@ -86,7 +102,7 @@ module Administrate
|
|
86
102
|
end
|
87
103
|
|
88
104
|
def variant(attachment, options)
|
89
|
-
Rails.application.routes.url_helpers.rails_representation_path(attachment.variant(
|
105
|
+
Rails.application.routes.url_helpers.rails_representation_path(attachment.variant(options), only_path: true)
|
90
106
|
end
|
91
107
|
|
92
108
|
def url(attachment)
|
@@ -1,8 +1,9 @@
|
|
1
1
|
$:.push File.expand_path("../lib", __FILE__)
|
2
|
+
require "viniBaxter/version"
|
2
3
|
|
3
4
|
Gem::Specification.new do |gem|
|
4
5
|
gem.name = "viniBaxter-field-active_storage"
|
5
|
-
gem.version =
|
6
|
+
gem.version = ViniBaxter::ViniBaxterFieldActiveStorage::VERSION
|
6
7
|
gem.authors = ["viny baxter"]
|
7
8
|
gem.email = ["vincent.viricel@gmail.com"]
|
8
9
|
gem.homepage = "https://github.com/Dreamersoul/administrate-field-active_storage"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: viniBaxter-field-active_storage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 300.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- viny baxter
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: administrate
|
@@ -66,24 +66,30 @@ files:
|
|
66
66
|
- README.md
|
67
67
|
- Rakefile
|
68
68
|
- _config.yml
|
69
|
-
- app/views/fields/active_storage/_dropjs_items.html.erb
|
70
|
-
- app/views/fields/active_storage/_dropjs_list_edit.html.erb
|
71
|
-
- app/views/fields/active_storage/_dropjs_template.html.erb
|
72
69
|
- app/views/fields/active_storage/_form.html.erb
|
73
70
|
- app/views/fields/active_storage/_index.html.erb
|
74
|
-
- app/views/fields/active_storage/_item.html.erb
|
75
|
-
- app/views/fields/active_storage/_items.html.erb
|
76
|
-
- app/views/fields/active_storage/_items_on_show.html.erb
|
77
71
|
- app/views/fields/active_storage/_show.html.erb
|
72
|
+
- app/views/fields/active_storage/drop_js/_drop_js_items_if_sweety.html.erb
|
73
|
+
- app/views/fields/active_storage/drop_js/_drop_js_items_on_edit.html.erb
|
74
|
+
- app/views/fields/active_storage/drop_js/_drop_js_items_on_show.html.erb
|
75
|
+
- app/views/fields/active_storage/drop_js/_dropjs_items.html.erb
|
76
|
+
- app/views/fields/active_storage/drop_js/_dropjs_list_edit.html.erb
|
77
|
+
- app/views/fields/active_storage/drop_js/_dropjs_list_show.html.erb
|
78
|
+
- app/views/fields/active_storage/drop_js/_dropjs_template.html.erb
|
79
|
+
- app/views/fields/active_storage/normal/_item.html.erb
|
80
|
+
- app/views/fields/active_storage/normal/_items.html.erb
|
81
|
+
- app/views/fields/active_storage/normal/_items_on_show.html.erb
|
82
|
+
- app/views/fields/active_storage/normal/_preview.html.erb
|
78
83
|
- contribute.md
|
79
84
|
- lib/viniBaxter/field/active_storage.rb
|
85
|
+
- lib/viniBaxter/version.rb
|
80
86
|
- spec/lib/administrate/field/active_storage_spec.rb
|
81
87
|
- viniBaxter-field-active_storage.gemspec
|
82
88
|
homepage: https://github.com/Dreamersoul/administrate-field-active_storage
|
83
89
|
licenses:
|
84
90
|
- MIT
|
85
91
|
metadata: {}
|
86
|
-
post_install_message:
|
92
|
+
post_install_message:
|
87
93
|
rdoc_options: []
|
88
94
|
require_paths:
|
89
95
|
- lib
|
@@ -98,8 +104,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
98
104
|
- !ruby/object:Gem::Version
|
99
105
|
version: '0'
|
100
106
|
requirements: []
|
101
|
-
rubygems_version: 3.
|
102
|
-
signing_key:
|
107
|
+
rubygems_version: 3.2.32
|
108
|
+
signing_key:
|
103
109
|
specification_version: 4
|
104
110
|
summary: Administrate fields for active storage
|
105
111
|
test_files:
|
@@ -1,54 +0,0 @@
|
|
1
|
-
<div class='list-group list-group-flush pt-4 my-n3'>
|
2
|
-
<div class="dz-preview dz-file-preview bibi">
|
3
|
-
<div class="list-group-item">
|
4
|
-
<div class="row align-items-center">
|
5
|
-
<div class="col-auto">
|
6
|
-
<!-- Avatar -->
|
7
|
-
<a href="#!" class="avatar">
|
8
|
-
<img data-dz-thumbnail data-dz-remove class="avatar-img rounded delete_on_click" />
|
9
|
-
</a>
|
10
|
-
</div>
|
11
|
-
<div class="col ml-n2">
|
12
|
-
<!-- Title -->
|
13
|
-
<h4 class="font-weight-normal mb-1">
|
14
|
-
<a href="#!">
|
15
|
-
<div class="dz-filename"><span data-dz-name></span></div>
|
16
|
-
</a>
|
17
|
-
</h4>
|
18
|
-
<div class="dz-progress">
|
19
|
-
<span
|
20
|
-
class="dz-upload"
|
21
|
-
data-dz-uploadprogress>
|
22
|
-
</span>
|
23
|
-
</div>
|
24
|
-
<div class="dz-error-message"><span data-dz-errormessage ></span></div>
|
25
|
-
<!-- Text -->
|
26
|
-
<small class="text-muted">
|
27
|
-
<div class="dz-size" data-dz-size></div>
|
28
|
-
</small>
|
29
|
-
</div>
|
30
|
-
<div class="col-auto">
|
31
|
-
<!-- Dropdown -->
|
32
|
-
<div class="dropdown">
|
33
|
-
<a href="#" class="dropdown-ellipses dropdown-toggle" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
34
|
-
<i class="fe fe-more-vertical"></i>
|
35
|
-
</a>
|
36
|
-
<div class="dropdown-menu dropdown-menu-right">
|
37
|
-
<a href="#!" class="dropdown-item">
|
38
|
-
Action
|
39
|
-
</a>
|
40
|
-
<a href="#!" class="dropdown-item dz-remove delete_on_click" data-dz-remove>Remove file</a>
|
41
|
-
<a href="#!" class="dropdown-item">
|
42
|
-
Another action
|
43
|
-
</a>
|
44
|
-
<a href="#!" class="dropdown-item">
|
45
|
-
Something else here
|
46
|
-
</a>
|
47
|
-
</div>
|
48
|
-
</div>
|
49
|
-
</div>
|
50
|
-
</div>
|
51
|
-
<!-- / .row -->
|
52
|
-
</div>
|
53
|
-
</div>
|
54
|
-
</div>
|
@@ -1,35 +0,0 @@
|
|
1
|
-
<% removable = local_assigns.fetch(:removable, false)
|
2
|
-
image_size = local_assigns.fetch(:image_size, [200, 200]) %>
|
3
|
-
<% if attachment.image? and attachment.variable? and !field.url_only? %>
|
4
|
-
<div class="avatar avatar-lg">
|
5
|
-
<%= image_tag attachment.variant(resize_to_limit: image_size), class:"avatar-img rounded"%>
|
6
|
-
</div>
|
7
|
-
<% elsif attachment.image? and !field.url_only? %>
|
8
|
-
<%= link_to(field.blob_url(attachment), title: attachment.filename) do %>
|
9
|
-
<%= image_tag(field.url(attachment)) %>
|
10
|
-
<% end %>
|
11
|
-
<% elsif attachment.video? and attachment.previewable? and !field.url_only? %> <%# if ffmpeg is installed %>
|
12
|
-
<%= video_tag(field.url(attachment), poster: field.preview(attachment, resize_to_limit: image_size), controls: true, autobuffer: true, style: "width: 100%; height: auto;") %>
|
13
|
-
<% elsif attachment.video? and !field.url_only? %>
|
14
|
-
<%= video_tag(field.url(attachment), controls: true, autobuffer: true, style: "width: 100%; height: auto;") %>
|
15
|
-
<% elsif attachment.audio? and !field.url_only? %>
|
16
|
-
<%= audio_tag(field.url(attachment), autoplay: false, controls: true) %>
|
17
|
-
<% else %>
|
18
|
-
<%= link_to(field.blob_url(attachment), title: attachment.filename) do %>
|
19
|
-
<% if attachment.previewable? and !field.url_only? %>
|
20
|
-
<%= image_tag(field.preview(attachment, resize_to_limit: [595, 842])) %>
|
21
|
-
<% else %>
|
22
|
-
<%= attachment.filename %>
|
23
|
-
<% end %>
|
24
|
-
<% end %>
|
25
|
-
<% end %>
|
26
|
-
<% if removable %>
|
27
|
-
<%#= link_to 'Remove', field.destroy_path(field, attachment), method: :delete, class: 'remove-attachment-link' %>
|
28
|
-
<%= link_to 'Remove', destroy_url,
|
29
|
-
method: :delete,
|
30
|
-
# data: { confirm: t("administrate.actions.confirm") },
|
31
|
-
remote: true,
|
32
|
-
class: 'remove-attachment-link'
|
33
|
-
%>
|
34
|
-
<hr>
|
35
|
-
<% end %>
|
@@ -1,63 +0,0 @@
|
|
1
|
-
<%#
|
2
|
-
# Items Partial
|
3
|
-
|
4
|
-
This partial renders one or more attachments
|
5
|
-
|
6
|
-
## Local variables:
|
7
|
-
|
8
|
-
- `field`:
|
9
|
-
An instance of [Administrate::Field::Image].
|
10
|
-
A wrapper around the image url pulled from the database.
|
11
|
-
- `removable`:
|
12
|
-
A boolean used to control the display of a `Remove` link which
|
13
|
-
is used to destroy a single attachment. Defaults to `false`
|
14
|
-
%>
|
15
|
-
<%
|
16
|
-
attachments = Array(field.many? ? field.attachments : field.data)
|
17
|
-
removable = local_assigns.fetch(:removable, false)
|
18
|
-
%>
|
19
|
-
<!-- On edit if no dropJS -->
|
20
|
-
<% if !field.drop_js? %>
|
21
|
-
<% attachments.each do |attachment| %>
|
22
|
-
<div class="attachments-listing">
|
23
|
-
<%= render partial: 'fields/active_storage/item', locals: {
|
24
|
-
field: field,
|
25
|
-
attachment: attachment,
|
26
|
-
removable: removable,
|
27
|
-
image_size: field.show_preview_size
|
28
|
-
} %>
|
29
|
-
</div>
|
30
|
-
<% end %>
|
31
|
-
<%else %>
|
32
|
-
<!-- On edit if dropJS -->
|
33
|
-
<div class="mt-5 col-12 ">
|
34
|
-
<div class="row">
|
35
|
-
<div class="col-12">
|
36
|
-
<div class="card card light-shadow card-fill">
|
37
|
-
<div class="card-header">
|
38
|
-
<!-- Title -->
|
39
|
-
<h4 class="card-header-title">
|
40
|
-
Latest Uploads
|
41
|
-
</h4>
|
42
|
-
</div>
|
43
|
-
<div class="card-body">
|
44
|
-
<div class="already-downloaded dropzone">
|
45
|
-
<div class="row">
|
46
|
-
<% attachments.each do |attachment| %>
|
47
|
-
<div class="col-12" id="<%= @page.class %>_picture_<%= attachment.id %>">
|
48
|
-
<%= render partial: 'fields/active_storage/dropjs_list_edit', locals: {
|
49
|
-
field: field,
|
50
|
-
attachment: attachment,
|
51
|
-
removable: removable,
|
52
|
-
image_size: field.show_preview_size
|
53
|
-
}%>
|
54
|
-
</div>
|
55
|
-
<% end %>
|
56
|
-
</div>
|
57
|
-
</div>
|
58
|
-
</div>
|
59
|
-
</div>
|
60
|
-
</div>
|
61
|
-
</div>
|
62
|
-
</div>
|
63
|
-
<% end %>
|