Skip to content

Commit 6098f31

Browse files
committed
Better dropdown menu setup, more options
Still rough
1 parent d812e1a commit 6098f31

File tree

5 files changed

+49
-28
lines changed

5 files changed

+49
-28
lines changed

app/Repositories/Daemon/FileRepository.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,8 @@ public function returnDirectoryListing($directory)
185185
'entry' => $value->name,
186186
'directory' => trim($directory, '/'),
187187
'size' => null,
188-
'date' => strtotime($value->modified)
188+
'date' => strtotime($value->modified),
189+
'mime' => $value->mime
189190
]]);
190191

191192
} else if ($value->file === true) {
@@ -195,7 +196,8 @@ public function returnDirectoryListing($directory)
195196
'directory' => trim($directory, '/'),
196197
'extension' => pathinfo($value->name, PATHINFO_EXTENSION),
197198
'size' => HelperRepository::bytesToHuman($value->size),
198-
'date' => strtotime($value->modified)
199+
'date' => strtotime($value->modified),
200+
'mime' => $value->mime
199201
]]);
200202

201203
}

resources/views/server/files/index.blade.php

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,6 @@
5656
</div>
5757
</div>
5858
</div>
59-
<ul id="fileOptionMenu" class="dropdown-menu" role="menu" style="display:none" >
60-
<li data-action="move"><a tabindex="-1" href="#"><i class="fa fa-arrow-right"></i> Move</a></li>
61-
<li data-action="rename"><a tabindex="-1" href="#"><i class="fa fa-pencil-square-o"></i> Rename</a></li>
62-
<li><a tabindex="-1" href="#"><i class="fa fa-file-archive-o"></i> Compress</a></li>
63-
<li class="divider"></li>
64-
<li><a tabindex="-1" href="#"><i class="fa fa-download"></i> Download</a></li>
65-
<li><a tabindex="-1" href="#"><i class="fa fa-trash-o"></i> Delete</a></li>
66-
</ul>
6759
</div>
6860
<script src="{{ route('server.js', [$server->uuidShort, 'filemanager', 'index.js']) }}"></script>
6961
<script src="{{ route('server.js', [$server->uuidShort, 'filemanager', 'actions.js']) }}"></script>

resources/views/server/files/list.blade.php

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
</thead>
3131
<tbody>
3232
@if (isset($directory['first']) && $directory['first'] === true)
33-
<tr>
33+
<tr data-type="disabled">
3434
<td><i class="fa fa-folder-open" style="margin-left: 0.859px;"></i></td>
3535
<td><a href="/server/{{ $server->uuidShort }}/files" data-action="directory-view">&larr;</a></a></td>
3636
<td></td>
@@ -39,7 +39,7 @@
3939
</tr>
4040
@endif
4141
@if (isset($directory['show']) && $directory['show'] === true)
42-
<tr>
42+
<tr data-type="disabled">
4343
<td><i class="fa fa-folder-open" style="margin-left: 0.859px;"></i></td>
4444
<td><a href="/server/{{ $server->uuidShort }}/files?dir={{ rawurlencode($directory['link']) }}" data-action="directory-view">&larr; {{ $directory['link_show'] }}</a></a></td>
4545
<td></td>
@@ -48,9 +48,11 @@
4848
</tr>
4949
@endif
5050
@foreach ($folders as $folder)
51-
<tr class="align-middle" data-path="@if($folder['directory'] !== ''){{ rawurlencode($folder['directory']) }}/@endif{{ rawurlencode($folder['entry']) }}">
51+
<tr class="align-middle" data-type="folder" data-path="@if($folder['directory'] !== ''){{ rawurlencode($folder['directory']) }}/@endif{{ rawurlencode($folder['entry']) }}">
5252
<td data-identifier="type"><i class="fa fa-folder-open" style="margin-left: 0.859px;"></i></td>
53-
<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>
53+
<td data-identifier="name" data-hash="@if($folder['directory'] !== ''){{ rawurlencode($folder['directory']) }}/@endif{{ rawurlencode($folder['entry']) }}">
54+
<a href="/server/{{ $server->uuidShort }}/files" data-action="directory-view">{{ $folder['entry'] }}</a>
55+
</td>
5456
<td data-identifier="size">{{ $folder['size'] }}</td>
5557
<td data-identifier="modified">{{ date('m/d/y H:i:s', $folder['date']) }}</td>
5658
{{-- <td class="text-center">
@@ -68,9 +70,9 @@
6870
</tr>
6971
@endforeach
7072
@foreach ($files as $file)
71-
<tr class="align-middle">
72-
<td><i class="fa fa-file-text" style="margin-left: 2px;"></i></td>
73-
<td>
73+
<tr class="align-middle" data-type="file" data-mime="{{ $file['mime'] }}">
74+
<td data-identifier="type"><i class="fa fa-file-text" style="margin-left: 2px;"></i></td>
75+
<td data-identifier="name" data-hash="@if($file['directory'] !== ''){{ rawurlencode($file['directory']) }}/@endif{{ rawurlencode($file['entry']) }}">
7476
@if(in_array($file['extension'], $extensions))
7577
@can('edit-files', $server)
7678
<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 @@
8183
{{ $file['entry'] }}
8284
@endif
8385
</td>
84-
<td>{{ $file['size'] }}</td>
85-
<td>{{ date('m/d/y H:i:s', $file['date']) }}</td>
86+
<td data-identifier="size">{{ $file['size'] }}</td>
87+
<td data-identifier="modified">{{ date('m/d/y H:i:s', $file['date']) }}</td>
8688
{{-- <td style="text-align:center;">
8789
<div class="row" style="text-align:center;">
8890
<div class="col-md-3 hidden-xs hidden-sm">

resources/views/server/js/filemanager/actions.blade.php

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,30 +29,55 @@ class FileActions {
2929
this.rightClick();
3030
}
3131

32+
makeMenu() {
33+
$(document).find('#fileOptionMenu').remove();
34+
return $('<ul id="fileOptionMenu" class="dropdown-menu" role="menu" style="display:none" > \
35+
<li data-action="move"><a tabindex="-1" href="#"><i class="fa fa-arrow-right"></i> Move</a></li> \
36+
<li data-action="rename"><a tabindex="-1" href="#"><i class="fa fa-pencil-square-o"></i> Rename</a></li> \
37+
<li data-action="compress" class="hidden"><a tabindex="-1" href="#"><i class="fa fa-file-archive-o"></i> Compress</a></li> \
38+
<li data-action="decompress" class="hidden"><a tabindex="-1" href="#"><i class="fa fa-expand"></i> Decompress</a></li> \
39+
<li class="divider"></li> \
40+
<li data-action="download" class="hidden"><a tabindex="-1" href="#"><i class="fa fa-download"></i> Download</a></li> \
41+
<li data-action="delete"><a tabindex="-1" href="#"><i class="fa fa-trash-o"></i> Delete</a></li> \
42+
</ul>');
43+
}
44+
3245
rightClick() {
3346
$('#file_listing > tbody').on('contextmenu', event => {
34-
event.preventDefault();
47+
3548
const parent = $(event.target).parent();
49+
const menu = this.makeMenu();
3650

37-
$('#fileOptionMenu').appendTo('body');
38-
$('#fileOptionMenu').data('invokedOn', $(event.target)).show().css({
51+
if (parent.data('type') === 'disabled') return;
52+
event.preventDefault();
53+
54+
menu.appendTo('body');
55+
menu.data('invokedOn', $(event.target)).show().css({
3956
position: 'absolute',
4057
left: event.pageX,
4158
top: event.pageY,
4259
});
4360

61+
if (parent.data('type') === 'file') {
62+
menu.find('li[data-action="download"]').removeClass('hidden');
63+
}
64+
65+
if (_.without(['application/zip', 'application/gzip', 'application/x-gzip'], parent.data('mime')).length < 3) {
66+
menu.find('li[data-action="decompress"]').removeClass('hidden');
67+
}
68+
4469
// Handle Events
4570
var Context = new ContextMenuActions(parent);
46-
$('#fileOptionMenu li[data-action="move"]').unbind().on('click', e => {
71+
menu.find('li[data-action="move"]').unbind().on('click', e => {
4772
Context.move();
4873
});
4974

50-
$('#fileOptionMenu li[data-action="rename"]').unbind().on('click', e => {
75+
menu.find('li[data-action="rename"]').unbind().on('click', e => {
5176
Context.rename();
5277
});
5378

54-
$(window).click(() => {
55-
$('#fileOptionMenu').hide();
79+
$(window).on('click', () => {
80+
menu.remove();
5681
});
5782
});
5883
}

resources/views/server/js/filemanager/index.blade.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class FileManager {
2828
$('[data-toggle="tooltip"]').tooltip();
2929
}
3030

31-
list(path) {
31+
list(path, isError) {
3232
if (_.isUndefined(path)) {
3333
path = this.decodeHash();
3434
}
@@ -54,7 +54,7 @@ class FileManager {
5454
title: 'File Error',
5555
text: 'An error occured while attempting to process this request. Please try again.',
5656
});
57-
this.list('/');
57+
if (!isError) this.list('/', true);
5858
console.log(jqXHR);
5959
}).always(() => {
6060
this.loader(false);

0 commit comments

Comments
 (0)