Ограничение Отзывчивой Папки FileManager С JS?
Я широко использую Responsive FileManager как автономный (не являющийся частью общего текстового редактора). Я иногда называю это несколько раз на одной странице. Однако каждый раз, когда я хочу, чтобы он был ограничен определенной папкой - не просто так, чтобы она по умолчанию была папкой, но чтобы пользователь вообще не мог перейти к каким-либо другим папкам.
Единственный способ ограничить папку в Responsive FileManager, который я нашел, - установить переменную PHP sesssion:
$_SESSION['RF']['subfolder']
Однако это проблема для разных папок, которые должны присутствовать на одной странице, и в целом это нецелесообразно, поскольку ограничение должно быть специфичным для вызова файлового менеджера, а не для конкретного пользователя, такого как сеанс. Кроме того, мне не нужно, чтобы было абсолютно невозможно безопасно перемещаться по другим папкам, это нормально, если кто-то, кто знает, как использовать отладчик браузера, перемещается куда-то еще. Я просто хочу помешать обычным пользователям делать это.
Есть ли способ сделать это с помощью параметра конфигурации JS или каким-либо другим способом для каждого вызова, а не для каждого пользователя?
Их список функций говорит:
Вы можете установить подпапку как корневую и изменить конфигурацию для каждого пользователя, страницы или вызова FileManager.
Но я не смог найти ограничение папки для вызовов в их документах.
1 ответ
Вот простой твик для достижения этой цели. Диспетчер файлов Responisve вызывает файл dialog.php с некоторыми добавленными параметрами, например type. Что я сделал: ввел новый параметр и поставил проверку на стороне сервера, чтобы динамически установить путь загрузки.
Предположим, что ваш каталог загрузок - это загрузки, и у вас есть подкаталоги user1, user2, user3, поэтому в этом случае мы будем динамически устанавливать путь загрузки и текущий путь в config.php из параметров, которые мы будем передавать при вызове dialog.php
В filemanager/config/config.php добавьте эти строки
if( isset( $_GET['MY_UPLOAD_PATH']))
{
$config['upload_dir'] = $config['upload_dir'] . $_GET['MY_UPLOAD_PATH']."/" ;
$config['current_path'] = $config['current_path'] . $_GET['MY_UPLOAD_PATH']."/" ;
}
В filemanager/dialog.php найдите эту строку $get_params = http_build_query($get_params); И как раз перед этой строкой добавить
if(isset($_GET['MY_UPLOAD_PATH'])){
$get_params['MY_UPLOAD_PATH'] = $_GET['MY_UPLOAD_PATH'] ;
}
Теперь измените вашу переменную
$data['file_explorer'] = base_url('assets/resources/filemanager/dialog.php?type=0');
в
$data['file_explorer'] = base_url('assets/resources/filemanager/dialog.php?type=0&MY_UPLOAD_PATH=user1');
Просто измените значение параметра MY_UPLOAD_PATH, и dialog.php покажет только этот конкретный каталог.