Better dropdown menu setup, more options
Still rough
This commit is contained in:
parent
d812e1a23c
commit
6098f31f9a
5 changed files with 50 additions and 29 deletions
|
@ -185,7 +185,8 @@ class FileRepository
|
||||||
'entry' => $value->name,
|
'entry' => $value->name,
|
||||||
'directory' => trim($directory, '/'),
|
'directory' => trim($directory, '/'),
|
||||||
'size' => null,
|
'size' => null,
|
||||||
'date' => strtotime($value->modified)
|
'date' => strtotime($value->modified),
|
||||||
|
'mime' => $value->mime
|
||||||
]]);
|
]]);
|
||||||
|
|
||||||
} else if ($value->file === true) {
|
} else if ($value->file === true) {
|
||||||
|
@ -195,7 +196,8 @@ class FileRepository
|
||||||
'directory' => trim($directory, '/'),
|
'directory' => trim($directory, '/'),
|
||||||
'extension' => pathinfo($value->name, PATHINFO_EXTENSION),
|
'extension' => pathinfo($value->name, PATHINFO_EXTENSION),
|
||||||
'size' => HelperRepository::bytesToHuman($value->size),
|
'size' => HelperRepository::bytesToHuman($value->size),
|
||||||
'date' => strtotime($value->modified)
|
'date' => strtotime($value->modified),
|
||||||
|
'mime' => $value->mime
|
||||||
]]);
|
]]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,14 +56,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ul id="fileOptionMenu" class="dropdown-menu" role="menu" style="display:none" >
|
|
||||||
<li data-action="move"><a tabindex="-1" href="#"><i class="fa fa-arrow-right"></i> Move</a></li>
|
|
||||||
<li data-action="rename"><a tabindex="-1" href="#"><i class="fa fa-pencil-square-o"></i> Rename</a></li>
|
|
||||||
<li><a tabindex="-1" href="#"><i class="fa fa-file-archive-o"></i> Compress</a></li>
|
|
||||||
<li class="divider"></li>
|
|
||||||
<li><a tabindex="-1" href="#"><i class="fa fa-download"></i> Download</a></li>
|
|
||||||
<li><a tabindex="-1" href="#"><i class="fa fa-trash-o"></i> Delete</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
<script src="{{ route('server.js', [$server->uuidShort, 'filemanager', 'index.js']) }}"></script>
|
<script src="{{ route('server.js', [$server->uuidShort, 'filemanager', 'index.js']) }}"></script>
|
||||||
<script src="{{ route('server.js', [$server->uuidShort, 'filemanager', 'actions.js']) }}"></script>
|
<script src="{{ route('server.js', [$server->uuidShort, 'filemanager', 'actions.js']) }}"></script>
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@if (isset($directory['first']) && $directory['first'] === true)
|
@if (isset($directory['first']) && $directory['first'] === true)
|
||||||
<tr>
|
<tr data-type="disabled">
|
||||||
<td><i class="fa fa-folder-open" style="margin-left: 0.859px;"></i></td>
|
<td><i class="fa fa-folder-open" style="margin-left: 0.859px;"></i></td>
|
||||||
<td><a href="/server/{{ $server->uuidShort }}/files" data-action="directory-view">←</a></a></td>
|
<td><a href="/server/{{ $server->uuidShort }}/files" data-action="directory-view">←</a></a></td>
|
||||||
<td></td>
|
<td></td>
|
||||||
|
@ -39,7 +39,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
@endif
|
@endif
|
||||||
@if (isset($directory['show']) && $directory['show'] === true)
|
@if (isset($directory['show']) && $directory['show'] === true)
|
||||||
<tr>
|
<tr data-type="disabled">
|
||||||
<td><i class="fa fa-folder-open" style="margin-left: 0.859px;"></i></td>
|
<td><i class="fa fa-folder-open" style="margin-left: 0.859px;"></i></td>
|
||||||
<td><a href="/server/{{ $server->uuidShort }}/files?dir={{ rawurlencode($directory['link']) }}" data-action="directory-view">← {{ $directory['link_show'] }}</a></a></td>
|
<td><a href="/server/{{ $server->uuidShort }}/files?dir={{ rawurlencode($directory['link']) }}" data-action="directory-view">← {{ $directory['link_show'] }}</a></a></td>
|
||||||
<td></td>
|
<td></td>
|
||||||
|
@ -48,9 +48,11 @@
|
||||||
</tr>
|
</tr>
|
||||||
@endif
|
@endif
|
||||||
@foreach ($folders as $folder)
|
@foreach ($folders as $folder)
|
||||||
<tr class="align-middle" data-path="@if($folder['directory'] !== ''){{ rawurlencode($folder['directory']) }}/@endif{{ rawurlencode($folder['entry']) }}">
|
<tr class="align-middle" data-type="folder" data-path="@if($folder['directory'] !== ''){{ rawurlencode($folder['directory']) }}/@endif{{ rawurlencode($folder['entry']) }}">
|
||||||
<td data-identifier="type"><i class="fa fa-folder-open" style="margin-left: 0.859px;"></i></td>
|
<td data-identifier="type"><i class="fa fa-folder-open" style="margin-left: 0.859px;"></i></td>
|
||||||
<td data-identifier="name" data-hash="@if($folder['directory'] !== ''){{ rawurlencode($folder['directory']) }}/@endif{{ rawurlencode($folder['entry']) }}"><a href="/server/{{ $server->uuidShort }}/files" data-action="directory-view">{{ $folder['entry'] }}</a></td>
|
<td data-identifier="name" data-hash="@if($folder['directory'] !== ''){{ rawurlencode($folder['directory']) }}/@endif{{ rawurlencode($folder['entry']) }}">
|
||||||
|
<a href="/server/{{ $server->uuidShort }}/files" data-action="directory-view">{{ $folder['entry'] }}</a>
|
||||||
|
</td>
|
||||||
<td data-identifier="size">{{ $folder['size'] }}</td>
|
<td data-identifier="size">{{ $folder['size'] }}</td>
|
||||||
<td data-identifier="modified">{{ date('m/d/y H:i:s', $folder['date']) }}</td>
|
<td data-identifier="modified">{{ date('m/d/y H:i:s', $folder['date']) }}</td>
|
||||||
{{-- <td class="text-center">
|
{{-- <td class="text-center">
|
||||||
|
@ -68,9 +70,9 @@
|
||||||
</tr>
|
</tr>
|
||||||
@endforeach
|
@endforeach
|
||||||
@foreach ($files as $file)
|
@foreach ($files as $file)
|
||||||
<tr class="align-middle">
|
<tr class="align-middle" data-type="file" data-mime="{{ $file['mime'] }}">
|
||||||
<td><i class="fa fa-file-text" style="margin-left: 2px;"></i></td>
|
<td data-identifier="type"><i class="fa fa-file-text" style="margin-left: 2px;"></i></td>
|
||||||
<td>
|
<td data-identifier="name" data-hash="@if($file['directory'] !== ''){{ rawurlencode($file['directory']) }}/@endif{{ rawurlencode($file['entry']) }}">
|
||||||
@if(in_array($file['extension'], $extensions))
|
@if(in_array($file['extension'], $extensions))
|
||||||
@can('edit-files', $server)
|
@can('edit-files', $server)
|
||||||
<a href="/server/{{ $server->uuidShort }}/files/edit/@if($file['directory'] !== ''){{ rawurlencode($file['directory']) }}/@endif{{ rawurlencode($file['entry']) }}" class="edit_file">{{ $file['entry'] }}</a>
|
<a href="/server/{{ $server->uuidShort }}/files/edit/@if($file['directory'] !== ''){{ rawurlencode($file['directory']) }}/@endif{{ rawurlencode($file['entry']) }}" class="edit_file">{{ $file['entry'] }}</a>
|
||||||
|
@ -81,8 +83,8 @@
|
||||||
{{ $file['entry'] }}
|
{{ $file['entry'] }}
|
||||||
@endif
|
@endif
|
||||||
</td>
|
</td>
|
||||||
<td>{{ $file['size'] }}</td>
|
<td data-identifier="size">{{ $file['size'] }}</td>
|
||||||
<td>{{ date('m/d/y H:i:s', $file['date']) }}</td>
|
<td data-identifier="modified">{{ date('m/d/y H:i:s', $file['date']) }}</td>
|
||||||
{{-- <td style="text-align:center;">
|
{{-- <td style="text-align:center;">
|
||||||
<div class="row" style="text-align:center;">
|
<div class="row" style="text-align:center;">
|
||||||
<div class="col-md-3 hidden-xs hidden-sm">
|
<div class="col-md-3 hidden-xs hidden-sm">
|
||||||
|
|
|
@ -29,30 +29,55 @@ class FileActions {
|
||||||
this.rightClick();
|
this.rightClick();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
makeMenu() {
|
||||||
|
$(document).find('#fileOptionMenu').remove();
|
||||||
|
return $('<ul id="fileOptionMenu" class="dropdown-menu" role="menu" style="display:none" > \
|
||||||
|
<li data-action="move"><a tabindex="-1" href="#"><i class="fa fa-arrow-right"></i> Move</a></li> \
|
||||||
|
<li data-action="rename"><a tabindex="-1" href="#"><i class="fa fa-pencil-square-o"></i> Rename</a></li> \
|
||||||
|
<li data-action="compress" class="hidden"><a tabindex="-1" href="#"><i class="fa fa-file-archive-o"></i> Compress</a></li> \
|
||||||
|
<li data-action="decompress" class="hidden"><a tabindex="-1" href="#"><i class="fa fa-expand"></i> Decompress</a></li> \
|
||||||
|
<li class="divider"></li> \
|
||||||
|
<li data-action="download" class="hidden"><a tabindex="-1" href="#"><i class="fa fa-download"></i> Download</a></li> \
|
||||||
|
<li data-action="delete"><a tabindex="-1" href="#"><i class="fa fa-trash-o"></i> Delete</a></li> \
|
||||||
|
</ul>');
|
||||||
|
}
|
||||||
|
|
||||||
rightClick() {
|
rightClick() {
|
||||||
$('#file_listing > tbody').on('contextmenu', event => {
|
$('#file_listing > tbody').on('contextmenu', event => {
|
||||||
event.preventDefault();
|
|
||||||
const parent = $(event.target).parent();
|
|
||||||
|
|
||||||
$('#fileOptionMenu').appendTo('body');
|
const parent = $(event.target).parent();
|
||||||
$('#fileOptionMenu').data('invokedOn', $(event.target)).show().css({
|
const menu = this.makeMenu();
|
||||||
|
|
||||||
|
if (parent.data('type') === 'disabled') return;
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
menu.appendTo('body');
|
||||||
|
menu.data('invokedOn', $(event.target)).show().css({
|
||||||
position: 'absolute',
|
position: 'absolute',
|
||||||
left: event.pageX,
|
left: event.pageX,
|
||||||
top: event.pageY,
|
top: event.pageY,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (parent.data('type') === 'file') {
|
||||||
|
menu.find('li[data-action="download"]').removeClass('hidden');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_.without(['application/zip', 'application/gzip', 'application/x-gzip'], parent.data('mime')).length < 3) {
|
||||||
|
menu.find('li[data-action="decompress"]').removeClass('hidden');
|
||||||
|
}
|
||||||
|
|
||||||
// Handle Events
|
// Handle Events
|
||||||
var Context = new ContextMenuActions(parent);
|
var Context = new ContextMenuActions(parent);
|
||||||
$('#fileOptionMenu li[data-action="move"]').unbind().on('click', e => {
|
menu.find('li[data-action="move"]').unbind().on('click', e => {
|
||||||
Context.move();
|
Context.move();
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#fileOptionMenu li[data-action="rename"]').unbind().on('click', e => {
|
menu.find('li[data-action="rename"]').unbind().on('click', e => {
|
||||||
Context.rename();
|
Context.rename();
|
||||||
});
|
});
|
||||||
|
|
||||||
$(window).click(() => {
|
$(window).on('click', () => {
|
||||||
$('#fileOptionMenu').hide();
|
menu.remove();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ class FileManager {
|
||||||
$('[data-toggle="tooltip"]').tooltip();
|
$('[data-toggle="tooltip"]').tooltip();
|
||||||
}
|
}
|
||||||
|
|
||||||
list(path) {
|
list(path, isError) {
|
||||||
if (_.isUndefined(path)) {
|
if (_.isUndefined(path)) {
|
||||||
path = this.decodeHash();
|
path = this.decodeHash();
|
||||||
}
|
}
|
||||||
|
@ -54,7 +54,7 @@ class FileManager {
|
||||||
title: 'File Error',
|
title: 'File Error',
|
||||||
text: 'An error occured while attempting to process this request. Please try again.',
|
text: 'An error occured while attempting to process this request. Please try again.',
|
||||||
});
|
});
|
||||||
this.list('/');
|
if (!isError) this.list('/', true);
|
||||||
console.log(jqXHR);
|
console.log(jqXHR);
|
||||||
}).always(() => {
|
}).always(() => {
|
||||||
this.loader(false);
|
this.loader(false);
|
||||||
|
|
Loading…
Add table
Reference in a new issue