Files
2026-04-28 21:15:09 +03:00

134 lines
6.4 KiB
PHP

<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}">
<head>
<meta charset="utf-8">
<title>elFinder 2.0</title>
<!-- jQuery and jQuery UI (REQUIRED) -->
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/smoothness/jquery-ui.css" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
<!-- elFinder CSS (REQUIRED) - CDN -->
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/elfinder/2.1.65/css/elfinder.min.css">
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/elfinder/2.1.65/css/theme.css">
<!-- elFinder JS (REQUIRED) - CDN -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/elfinder/2.1.65/js/elfinder.min.js"></script>
<!-- elFinder Edit Plugin - CDN -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/elfinder/2.1.65/js/extras/editors.default.min.js"></script>
@if($locale)
<!-- elFinder translation (OPTIONAL) -->
<script src="{{ asset($dir."/js/i18n/elfinder.$locale.js") }}"></script>
@endif
<!-- elFinder initialization (REQUIRED) -->
<script type="text/javascript" charset="utf-8">
// Documentation for client options:
// https://github.com/Studio-42/elFinder/wiki/Client-configuration-options
$().ready(function() {
// Check if user is admin from parent window
var isAdmin = false;
try {
if (window.parent && window.parent.document) {
var iframe = window.parent.document.getElementById('elfinder-iframe');
if (iframe) {
var permissionLevel = iframe.getAttribute('data-permission-level');
isAdmin = (permissionLevel === 'full_control');
}
}
} catch(e) {
console.log('Could not check admin status:', e);
}
var elfinderInstance = $('#elfinder').elfinder({
// set your elFinder options here
@if($locale)
lang: '{{ $locale }}', // locale
@endif
customData: {
_token: '{{ csrf_token() }}'
},
url : '{{ route("elfinder.connector") }}', // connector URL
requestType : 'post', // Performance optimization for large folders
soundPath: '{{ asset($dir.'/sounds') }}',
height: $(window).height() - 20,
checkSubfolders: false,
// Enable edit command and plugin
commands: ['open', 'reload', 'home', 'up', 'back', 'forward', 'getfile', 'quicklook', 'download', 'rm', 'duplicate', 'rename', 'mkdir', 'mkfile', 'upload', 'copy', 'cut', 'paste', 'view', 'resize', 'sort', 'search', 'help', 'info'],
plugins: [],
// Force edit to be available
ui: ['toolbar', 'tree', 'path', 'stat'],
toolbar: isAdmin ? [
// Admin toolbar - full access
['reload'],
['home', 'up'],
['mkdir', 'mkfile', 'upload'],
['open', 'download', 'getfile'],
['info'],
['quicklook'],
['copy', 'cut', 'paste'],
['rm'],
['duplicate', 'rename', 'resize', 'rotate'],
['extract', 'archive'],
['search'],
['view', 'sort']
] : [
// Regular user toolbar
['reload'],
['home', 'up'],
['mkdir', 'mkfile', 'upload'],
['open', 'download', 'getfile'],
['info'],
['quicklook'],
['copy', 'cut', 'paste'],
['rm'],
['duplicate', 'rename', 'resize', 'rotate'],
['extract', 'archive'],
['search'],
['view', 'sort']
]
}).elfinder('instance');
// Admin override - force full permissions display
if (isAdmin) {
console.log('Admin user detected - applying full permissions override');
// Override permission display for admin users
elfinderInstance.bind('load', function() {
// Force all items to show full permissions for admin
setTimeout(function() {
$('.elfinder-cwd-view .elfinder-cwd-file').each(function() {
var $this = $(this);
var $perm = $this.find('.elfinder-cwd-filename .elfinder-cwd-perms');
if ($perm.length && $perm.text().indexOf('read') !== -1) {
$perm.text('read and write').removeClass('elfinder-perms-read').addClass('elfinder-perms-write');
}
});
}, 1000);
});
}
// Edit button removed - using standard Elfinder functionality
var resizeTimer = null;
$(window).resize(function() {
resizeTimer && clearTimeout(resizeTimer);
resizeTimer = setTimeout(function() {
var h = parseInt($(window).height()) - 20;
if (h != parseInt($('#elfinder').height())) {
elfinderInstance.resize('100%', h);
}
}, 200);
});
});
</script>
</head>
<body>
<!-- Element where elFinder will be created (REQUIRED) -->
<div id="elfinder"></div>
</body>
</html>