Search by

simflex / file-manager

growtask

Standalone PHP file manager

Package info

github.com/growtask/simflex-file-manager

Language:JavaScript

pkg:composer/simflex/file-manager

Statistics

Installs: 8

Dependents: 1

Suggesters: 0

Stars: 1

Open Issues: 0

dev-master 2026-11-06 23:22 UTC

This package is auto-updated.

Last update: 2026-11-06 23:28:30 UTC


README

Файловый менеджер админки Simflex CMS 4.0: окно выбора и управления файлами каталога загрузок (public/uf). Пакет подключает ядро simflex/core (окно — в Admin/theme/tpl/body.tpl, API — /admin/fm).

Возможности

  • дерево папок, хлебные крошки, поиск по названию, сортировка (название, дата, размер, тип);
  • выбор файла, нескольких (Ctrl/⌘ или режим multiple), «Готово» отдаёт выбранные;
  • загрузка кнопкой и перетаскиванием в окно, новые файлы выделяются, ошибки показываются карточкой и тостом;
  • создание, переименование, удаление папок и файлов (удаление — после подтверждения, без корзины), копирование пути, скачивание; меню по правому клику или долгому нажатию;
  • на планшете и телефоне — список без дерева и нижняя панель; светлая и тёмная тема админки.

Состав

  • src/FileManager/Manager.php — API (?method=getTree|getFileList|download|delete|createDir|rename|upload): корень каталога, проверка доступа, белый список расширений, изменяющие запросы — только со своего сайта;
  • src/tpl/index.tpl — окно на компонентах Layout ядра (Common/Modal, Button, TextInput, Dropdown, Tooltip);
  • src/assets/styles/file-manager.scss — стили на токенах ядра, собираются со стилями админки (LayoutManager::useStyle());
  • src/assets/js/file-manager.js — ES-модуль без зависимостей;
  • src/assets/img/icons.svg — иконки набора file-icon (Figma SimflexCMS, страница Way-File).

Подключение (делает ядро)

// API: Kernel::executeFileManager()
$manager = new \Simflex\FileManager\Manager($publicDir . '/uf', $canUseFileManager);
$manager->handleRequest();
// окно — в body админки, до вывода head
echo View::render($packageDir . '/src/tpl/index.tpl', [
    'fileManagerApi' => '/admin/fm',
    'fileManagerRoot' => '/uf',
    'fileManagerAssets' => Assets::publish($packageDir . '/src/assets'),
    'theme' => 'light',
]);
$page->jsModule($fileManagerAssets . '/js/file-manager.js');

JS

window.fileManager.open({
    multiple: false,
    onSelect: (files) => {
        // files: [{path: '/images/a.png', url: '/uf/images/a.png', name: 'a.png', isImage: true}]
    },
});
window.fileManager.close();
// прежний вызов: callback получает путь первого файла от корня (/images/a.png)
window.fileManager.init((path) => {});

Без onSelect окно открывается для управления файлами, кнопки «Готово» нет.