diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/FileController.php b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/FileController.php index 62df8355..848f8cc5 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/FileController.php +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/FileController.php @@ -259,6 +259,56 @@ class FileController extends Controller return $response; } + public function moveAction(Request $request,$access="config") + { + // S'assurer que c'est un appel ajax + if (!$request->isXmlHttpRequest()) { + return new JsonResponse(array('message' => 'Interdit'), 400); + } + + $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"; + $dirsource =$request->request->get('dirsource'); + $namesource =$request->request->get('namesource'); + $dirdestination =$request->request->get('dirdestination'); + $namedestination =$request->request->get('namedestination'); + + $destid=$request->request->get('destid'); + + $this->getPermission($access,$directory); + $fs = new Filesystem(); + + // Déplacer le fichier + $urlsource=$racine."/".$dirsource."/".$namesource; + $urldestination=$racine."/".$dirdestination."/".$namedestination; + if($fs->exists($urlsource)) { + $fs->rename($urlsource,$urldestination); + } + + // Déplacer le thumb + $fs->mkdir($racine."/".$dirdestination."/thumb"); + $urlsource=$racine."/".$dirsource."/thumb/".$namesource; + $urldestination=$racine."/".$dirdestination."/thumb/".$namedestination; + if($fs->exists($urlsource)) { + $fs->rename($urlsource,$urldestination); + } + + // Déplacer le thumbmini + $fs->mkdir($racine."/".$dirdestination."/thumbmini"); + $urlsource=$racine."/".$dirsource."/thumbmini/".$namesource; + $urldestination=$racine."/".$dirdestination."/thumbmini/".$namedestination; + if($fs->exists($urlsource)) { + $fs->rename($urlsource,$urldestination); + } + + $response = new Response(json_encode($output)); + $response->headers->set('Content-Type', 'application/json'); + return $response; + } + public function viewAction($directory,$filename,Request $request,$access="config") { $this->getPermission($access,$directory); diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/config/routing.yml b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/config/routing.yml index 391787a4..91412bff 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/config/routing.yml +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/config/routing.yml @@ -73,6 +73,10 @@ cadoles_core_config_file_delete: path: /config/file/delete/ defaults: { _controller: CadolesCoreBundle:File:delete, access: config } +cadoles_core_config_file_move: + path: /config/file/move/ + defaults: { _controller: CadolesCoreBundle:File:move, access: config } + cadoles_core_config_file_view: path: /config/file/view/{directory}/{filename} defaults: { _controller: CadolesCoreBundle:File:view, access: config } @@ -102,6 +106,10 @@ cadoles_core_user_file_delete: path: /user/file/delete defaults: { _controller: CadolesCoreBundle:File:delete, access: user } +cadoles_core_user_file_move: + path: /user/file/move/ + defaults: { _controller: CadolesCoreBundle:File:move, access: user } + cadoles_core_user_file_view: path: /user/file/view/{directory}/{filename} defaults: { _controller: CadolesCoreBundle:File:view, access: user } diff --git a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/File/list.html.twig b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/File/list.html.twig index f2701097..419bba1e 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/File/list.html.twig +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Resources/views/File/list.html.twig @@ -93,20 +93,22 @@
@@ -119,7 +121,7 @@ {% for dir in dirs %} -
+
{% if canadd %} @@ -148,7 +150,7 @@ {% endfor %} {% for file in files %} -
+
{% if canadd %} @@ -186,7 +188,9 @@ {% block localjavascript %} var optiongrid={columnWidth: '.grid-sizer',itemSelector: '.grid-item', gutter: '.grid-gutter-sizer'}; var formodalglobal; - + var dirsource; + var namesource; + var domsource; // Création des grilles d'items $('body').imagesLoaded(function() { @@ -214,6 +218,58 @@ }); + $('.file').on('dragstart', function (s) { + dirsource=$(this).data("dir"); + namesource=$(this).data("name"); + domsource=$(this); + }); + + $('.directory').on('dragstart', function (s) { + dirsource=$(this).data("dir"); + namesource=$(this).data("name"); + domsource=$(this); + }); + + + $('.directory') + // crucial for the 'drop' event to fire + .on('dragover', false) + + .on('drop', function (e) { + // Récupérer la destination + 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; + + console.log(dirsource+"/"+namesource); + console.log(dirdestination+"/"+namedestination); + // On déplace l'element + $.ajax({ + method: "POST", + url: "{{ path('cadoles_core_'~access~'_file_move') }}", + data: { + directory:'{{directory}}', + dirsource:dirsource, + namesource:namesource, + dirdestination:dirdestination, + namedestination:namedestination + }, + success: function() { + domsource.remove(); + var grid = $('.grid').masonry(optiongrid); + ajust(); + } + }); + + + + return false; + }); + + + }); $(window).resize(function() {