Ограничение Отзывчивой Папки 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 покажет только этот конкретный каталог.

Другие вопросы по тегам