Merge branch 'feature/upload-directory' into develop

This commit is contained in:
Simon Vieille 2022-01-26 23:18:39 +01:00
commit c3f0532500
4 changed files with 47 additions and 5 deletions

View File

@ -275,7 +275,20 @@ class FileManagerAdminController extends AdminController
$form->handleRequest($request);
if ($form->isValid()) {
$manager->upload($form->get('files')->getData(), $request->query->get('file'));
if ($form->get('files')->getData()) {
$manager->upload(
$form->get('files')->getData(),
$request->query->get('file')
);
}
if ($form->get('directory')->getData()) {
$manager->upload(
$form->get('directory')->getData(),
$request->query->get('file'),
$_FILES['file_upload']['full_path']['directory'] ?? []
);
}
if (!$request->isXmlHttpRequest()) {
$this->addFlash('success', 'Files uploaded.');

View File

@ -195,14 +195,20 @@ class FsFileManager
return true;
}
public function upload($files, string $path)
public function upload($files, string $path, array $fullPaths = [])
{
if ($files instanceof UploadedFile) {
$files = [$files];
}
foreach ($files as $file) {
$this->uploadHandler->handleForm($file, $this->path.'/'.$path, null, true);
foreach ($files as $key => $file) {
$directory = $this->path.'/'.$path;
if (isset($fullPaths[$key])) {
$directory .= '/'.trim(dirname($fullPaths[$key]), '/');
}
$this->uploadHandler->handleForm($file, $directory, null, true);
}
}

View File

@ -18,7 +18,7 @@ class FileUploadType extends AbstractType
FileType::class,
[
'label' => 'Files',
'required' => true,
'required' => false,
'multiple' => true,
'attr' => [
],
@ -31,6 +31,28 @@ class FileUploadType extends AbstractType
],
]
);
$builder->add(
'directory',
FileType::class,
[
'label' => 'Directory',
'required' => false,
'multiple' => true,
'attr' => [
'webkitdirectory' => '',
'mozdirectory' => '',
'directory' => '',
],
'constraints' => [
new All([
new File([
'mimeTypes' => $options['mimes'],
]),
]),
],
]
);
}
public function configureOptions(OptionsResolver $resolver)

View File

@ -192,3 +192,4 @@
"Attributes": "Attributs"
"Choose": "Choisir"
"Associated": "Associé(e)"
"Directory": "Répertoire"