bug déplacement fichiers

This commit is contained in:
afornerot 2021-04-08 10:28:24 +02:00
parent f621ebea82
commit 150e624fca
3 changed files with 34 additions and 14 deletions

View File

@ -527,8 +527,10 @@ class FileController extends Controller
$output=array();
$directory=$request->request->get('directory');
// Récupération du répertoire source et le nom du fichier
$racine=$this->get('kernel')->getRootDir()."/../uploads/file";
$directory = $request->request->get('directory');
$dirsource = $request->request->get('dirsource');
$namesource = $request->request->get('namesource');
$dirdestination = $request->request->get('dirdestination');
@ -541,8 +543,19 @@ class FileController extends Controller
$fs = new Filesystem();
// Déplacer le fichier
$urlsource=$racine."/".$dirsource."/".$namesource;
$urldestination=$racine."/".$dirdestination."/".$namedestination;
$urlsource=str_replace("//","/",$racine."/".$dirsource."/".$namesource);
$urldestination=str_replace("//","/",$racine."/".$dirdestination."/".$namedestination);
// Controle de cohérance du déplacement
$fgerror=false;
if(empty($racine)) $fgerror=true;
if(empty($dirsource)) $fgerror=true;
if(empty($directory)) $fgerror=true;
if($urlsource==$urldestination) $fgerror=true;
if(stripos($urldestination,$urlsource)!==false) $fgerror=true;
if($fgerror) return new JsonResponse(array('message' => 'Interdit'), 400);
if($fs->exists($urlsource)) {
if(is_dir($urlsource)) {
$fs->mirror($urlsource,$urldestination);

View File

@ -291,6 +291,7 @@
});
{% if canupdate and not fgtrash %}
$('.file').on('dragstart', function (s) {
dirsource=$(this).data("dir");
namesource=$(this).data("name");
@ -313,11 +314,17 @@
dirdestination=$(this).data("dir")+"/"+$(this).data("name");
namedestination=namesource;
// Si la source est la meme que la destination on ne fait rien
if(dirdestination+"/"+namedestination==dirsource+"/"+namesource) return false;
urlsource=dirsource+"/"+namesource;
urlsource=urlsource.replace("//","/");
urldestination=dirdestination+"/"+namedestination;
urldestination=urldestination.replace("//","/");
// Si la source est la meme que la destination on ne fait rien
if(urlsource==urldestination) return false;
// Si la source est dans la destination on ne fait rien
//if(urldestination.includes(urlsource)) return false;
console.log(dirsource+"/"+namesource);
console.log(dirdestination+"/"+namedestination);
// On déplace l'element
$.ajax({
method: "POST",
@ -336,11 +343,9 @@
}
});
return false;
});
{% endif %}
});
@ -366,6 +371,7 @@
}
}
{% if canupdate %}
// Trasher un fichier
function trashFile(directory,subdirectory,filename) {
var r = confirm("Confirmez-vous la mise à la poubelle de ce fichier ? Vous pourrez le récupèrer si besoin.");
@ -422,6 +428,7 @@
});
}
}
{% endif %}
// Affichage des frames associés aux items de bureau