Skip to content

Commit e38ba7d

Browse files
committed
preview multiple images as a carousel
1 parent 809c3b8 commit e38ba7d

File tree

3 files changed

+85
-23
lines changed

3 files changed

+85
-23
lines changed

public/css/lfm.css

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
/* General */
22

3+
body {
4+
padding-bottom: 4rem;
5+
}
6+
37
a {
48
color: #333844;
59
text-decoration: none !important;
@@ -18,6 +22,26 @@ a {
1822
color: #333844;
1923
}
2024

25+
#actions {
26+
display: flex;
27+
}
28+
29+
#actions > a {
30+
display: inline-block;
31+
line-height: 4rem;
32+
text-align: center;
33+
width: 100%;
34+
font-size: 1.25rem;
35+
}
36+
37+
#actions > a > i {
38+
margin-right: .25rem;
39+
}
40+
41+
#actions > a + a {
42+
border-left: 1px solid #dee2e6;
43+
}
44+
2145
#main {
2246
width: 100%;
2347
}
@@ -62,6 +86,13 @@ a {
6286
font-size: 10rem;
6387
}
6488

89+
.carousel-image {
90+
height: 50vh;
91+
background-position: center;
92+
background-size: contain;
93+
background-repeat: no-repeat;
94+
}
95+
6596
/* Loader */
6697

6798
#lfm-loader {

public/js/script.js

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,9 @@ $(document).ready(function () {
5656
actions.reverse().forEach(function (action) {
5757
$('#nav-buttons > ul').prepend(
5858
$('<li>').addClass('nav-item').append(
59-
$('<a>').addClass('nav-link d-none').attr('data-action', action.name)
59+
$('<a>').addClass('nav-link d-none')
60+
.attr('data-action', action.name)
61+
.attr('data-multiple', action.multiple)
6062
.append($('<i>').addClass('fa fa-fw fa-' + action.icon))
6163
.append($('<span>').text(action.label))
6264
)
@@ -196,8 +198,8 @@ function toggleActions() {
196198

197199
$('[data-action=use]').toggleClass('d-none', !(many_selected && only_file))
198200
$('[data-action=rename]').toggleClass('d-none', !one_selected)
199-
$('[data-action=preview]').toggleClass('d-none', !(one_selected && only_image))
200-
$('[data-action=move]').toggleClass('d-none', !(one_selected))
201+
$('[data-action=preview]').toggleClass('d-none', !(many_selected && only_image))
202+
$('[data-action=move]').toggleClass('d-none', !(many_selected))
201203
$('[data-action=download]').toggleClass('d-none', !(one_selected && only_file))
202204
$('[data-action=resize]').toggleClass('d-none', !(one_selected && only_image))
203205
$('[data-action=crop]').toggleClass('d-none', !(one_selected && only_image))
@@ -377,12 +379,20 @@ function download(item) {
377379
location.href = lfm_route + '/download?' + $.param(data);
378380
}
379381

380-
function preview(item) {
381-
notify(
382-
$('<img>')
383-
.addClass('w-100')
384-
.attr('src', item.url + '?timestamp=' + item.time)
385-
);
382+
function preview(items) {
383+
var carousel = $('#carouselTemplate').clone().attr('id', 'previewCarousel').removeClass('d-none');
384+
var imageTemplate = carousel.find('.carousel-item').clone().removeClass('active');
385+
carousel.children('.carousel-inner').html('');
386+
387+
items.forEach(function (item, index) {
388+
var carouselItem = imageTemplate.clone()
389+
.addClass(index === 0 ? 'active' : '');
390+
carouselItem.find('.carousel-image')
391+
.css('background-image', 'url(\'' + item.url + '?timestamp=' + item.time + '\')');
392+
carousel.children('.carousel-inner').append(carouselItem);
393+
});
394+
395+
notify(carousel);
386396
}
387397

388398
function move(item) {

src/views/index.blade.php

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
<title>{{ trans('laravel-filemanager::lfm.title-page') }}</title>
1616
<link rel="shortcut icon" type="image/png" href="{{ asset('vendor/laravel-filemanager/img/72px color.png') }}">
17-
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css">
17+
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
1818
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
1919
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.css">
2020
<link rel="stylesheet" href="{{ asset('vendor/laravel-filemanager/css/cropper.min.css') }}">
@@ -68,6 +68,11 @@
6868
</div>
6969
</nav>
7070

71+
<nav class="bg-light fixed-bottom border-top d-none" id="actions">
72+
<a data-action="preview" data-multiple="true"><i class="fa fa-image"></i>Preview</a>
73+
<a data-action="use" data-multiple="true"><i class="fa fa-check"></i>Confirm</a>
74+
</nav>
75+
7176
<div class="d-flex flex-row">
7277
<div id="tree"></div>
7378

@@ -153,13 +158,29 @@
153158
</div>
154159
</div>
155160

161+
<div id="carouselTemplate" class="d-none carousel slide" data-ride="carousel" >
162+
<div class="carousel-inner">
163+
<div class="carousel-item active">
164+
<div class="carousel-image"></div>
165+
</div>
166+
</div>
167+
<a class="carousel-control-prev" href="#previewCarousel" role="button" data-slide="prev">
168+
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
169+
<span class="sr-only">Previous</span>
170+
</a>
171+
<a class="carousel-control-next" href="#previewCarousel" role="button" data-slide="next">
172+
<span class="carousel-control-next-icon" aria-hidden="true"></span>
173+
<span class="sr-only">Next</span>
174+
</a>
175+
</div>
176+
156177
{{-- <div id="lfm-loader">
157178
<img src="{{asset('vendor/laravel-filemanager/img/loader.svg')}}">
158179
</div> --}}
159180

160181
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
161182
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js"></script>
162-
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js"></script>
183+
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
163184
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
164185
<script src="{{ asset('vendor/laravel-filemanager/js/cropper.min.js') }}"></script>
165186
<script src="{{ asset('vendor/laravel-filemanager/js/jquery.form.min.js') }}"></script>
@@ -168,12 +189,12 @@
168189
var lfm_route = "{{ url(config('lfm.url_prefix')) }}";
169190
var lang = {!! json_encode(trans('laravel-filemanager::lfm')) !!};
170191
var actions = [
171-
{
172-
name: 'use',
173-
icon: 'check',
174-
label: 'Confirm',
175-
multiple: true
176-
},
192+
// {
193+
// name: 'use',
194+
// icon: 'check',
195+
// label: 'Confirm',
196+
// multiple: true
197+
// },
177198
{
178199
name: 'rename',
179200
icon: 'edit',
@@ -186,12 +207,12 @@
186207
label: lang['menu-download'],
187208
multiple: true
188209
},
189-
{
190-
name: 'preview',
191-
icon: 'image',
192-
label: lang['menu-view'],
193-
multiple: true
194-
},
210+
// {
211+
// name: 'preview',
212+
// icon: 'image',
213+
// label: lang['menu-view'],
214+
// multiple: true
215+
// },
195216
{
196217
name: 'move',
197218
icon: 'sign-out',

0 commit comments

Comments
 (0)