From 49e252733790d69bb7346fa1e2bc93c4863a401f Mon Sep 17 00:00:00 2001 From: afornerot Date: Mon, 15 Mar 2021 14:19:34 +0100 Subject: [PATCH] renommer fichier dans widget file (ref #240) --- .../CoreBundle/Controller/FileController.php | 99 +++++++++++++++++-- .../CoreBundle/Resources/config/routing.yml | 8 ++ .../Resources/views/File/list.html.twig | 14 +++ 3 files changed, 115 insertions(+), 6 deletions(-) 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 8c691f0d..ecc88a6b 100644 --- a/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/FileController.php +++ b/src/ninegate-1.0/src/Cadoles/CoreBundle/Controller/FileController.php @@ -181,6 +181,9 @@ class FileController extends Controller public function uploadAction($id,$type,Request $request,$access="config") { + $canupdate =$this->getPermission($access,$id); + if(!$canupdate) throw $this->createNotFoundException('Permission denied'); + $subdirectory=$request->get("subdirectory"); $forcereload=(is_null($request->get("forcereload"))?true:$request->get("forcereload")); @@ -198,8 +201,10 @@ class FileController extends Controller public function subdirectoryAction($id,$type,Request $request,$access="config") { - $subdirectory=$request->get("subdirectory"); + $canupdate =$this->getPermission($access,$id); + if(!$canupdate) throw $this->createNotFoundException('Permission denied'); + $subdirectory=$request->get("subdirectory"); $defaultData = []; $form = $this->createFormBuilder() ->add('subdirectory', TextType::class,["label"=>"Répertoire"]) @@ -239,6 +244,78 @@ class FileController extends Controller ]); } + public function renameAction($id,$oldname, Request $request,$access="config") + { + $canupdate =$this->getPermission($access,$id); + if(!$canupdate) throw $this->createNotFoundException('Permission denied'); + + $subdirectory=$request->get("subdirectory"); + + $form = $this->createFormBuilder() + ->add('subdirectory', TextType::class,["label"=>"Renommer"]) + ->add('submit', SubmitType::class,["label"=>"Valider"]) + ->getForm(); + + $form->handleRequest($request); + $toclose=false; + + if ($form->isSubmitted() && $form->isValid()) { + $data = $form->getData(); + if($data["subdirectory"]=="thumb"||$data["subdirectory"]=="thumbmini"||$data["subdirectory"]=="__trash") { + $form->addError(new FormError('Nom réservé, merci de choisir un autre nom')); + $this->get('session')->getFlashBag()->clear(); + $request->getSession()->getFlashBag()->add("error", 'Nom réservé, merci de choisir un autre nom'); + } + else { + $fs = new Filesystem(); + $fulldirectory=$this->get('kernel')->getRootDir()."/../uploads/file/".$id; + if($subdirectory) $fulldirectory.="/".$subdirectory; + + $urlsource= $fulldirectory."/".$oldname; + $urldestination = $fulldirectory."/".$data["subdirectory"]; + if($urlsource!=$urldestination) { + if($fs->exists($urldestination)) { + $form->addError(new FormError('Ce nom existe déjà')); + $this->get('session')->getFlashBag()->clear(); + $request->getSession()->getFlashBag()->add("error", 'Ce nom existe déjà'); + } + elseif($fs->exists($urlsource)) { + if(is_dir($urlsource)) { + $fs->mirror($urlsource,$urldestination); + $fs->remove($urlsource); + } + else { + $fs->rename($urlsource,$urldestination,true); + + $urlsource= $fulldirectory."/thumb/".$oldname; + $urldestination = $fulldirectory."/thumb/".$data["subdirectory"]; + $fs->rename($urlsource,$urldestination,true); + + $urlsource= $fulldirectory."/thumbmini/".$oldname; + $urldestination = $fulldirectory."/thumbmini/".$data["subdirectory"]; + $fs->rename($urlsource,$urldestination,true); + } + + $toclose=true; + } + } + + + } + } else $form->get('subdirectory')->setData($oldname); + + return $this->render('CadolesCoreBundle:File:subdirectory.html.twig',[ + 'useheader' => false, + 'usemenu' => false, + 'usesidebar' => false, + 'access' => $access, + 'id' => $id, + 'subdirectory' => $subdirectory, + 'form' => $form->createView(), + 'toclose' => $toclose, + ]); + } + public function trashAction(Request $request,$access="config") { // S'assurer que c'est un appel ajax @@ -255,7 +332,9 @@ class FileController extends Controller $dirsource =$request->request->get('subdirectory'); $namesource =$request->request->get('filename'); - $this->getPermission($access,$directory); + $canupdate =$this->getPermission($access,$directory); + if(!$canupdate) throw $this->createNotFoundException('Permission denied'); + $fs = new Filesystem(); // Déplacer le fichier @@ -316,7 +395,9 @@ class FileController extends Controller $dirsource =$request->request->get('subdirectory'); $namesource =$request->request->get('filename'); - $this->getPermission($access,$directory); + $canupdate =$this->getPermission($access,$directory); + if(!$canupdate) throw $this->createNotFoundException('Permission denied'); + $fs = new Filesystem(); // Déplacer le fichier @@ -365,7 +446,9 @@ class FileController extends Controller { $output=array(); - $this->getPermission($access,$directory); + $canupdate =$this->getPermission($access,$directory); + if(!$canupdate) throw $this->createNotFoundException('Permission denied'); + $fs = new Filesystem(); $url=$this->get('kernel')->getRootDir()."/../uploads/file/".$directory."/__trash"; if($fs->exists($url)) { @@ -388,7 +471,9 @@ class FileController extends Controller $filename=$request->request->get('filename'); if($subdirectory) $directory.="/".$subdirectory; - $this->getPermission($access,$directory); + $canupdate =$this->getPermission($access,$directory); + if(!$canupdate) throw $this->createNotFoundException('Permission denied'); + $fs = new Filesystem(); $url=$this->get('kernel')->getRootDir()."/../uploads/file/".$directory."/".$filename; if($fs->exists($url)) { @@ -418,7 +503,9 @@ class FileController extends Controller $namedestination =$request->request->get('namedestination'); - $this->getPermission($access,$directory); + $canupdate =$this->getPermission($access,$directory); + if(!$canupdate) throw $this->createNotFoundException('Permission denied'); + $fs = new Filesystem(); // Déplacer le fichier 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 5843eabd..fef8a25d 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 @@ -74,6 +74,10 @@ cadoles_core_config_file_subdirectory: path: /config/file/subdirectory/{id}/{type} defaults: { _controller: CadolesCoreBundle:File:subdirectory, access: config } +cadoles_core_config_file_rename: + path: /config/file/rename/{id}/{oldname} + defaults: { _controller: CadolesCoreBundle:File:rename, access: config } + cadoles_core_config_file_trash: path: /config/file/trash/ defaults: { _controller: CadolesCoreBundle:File:trash, access: config } @@ -119,6 +123,10 @@ cadoles_core_user_file_subdirectory: path: /user/file/subdirectory/{id}/{type} defaults: { _controller: CadolesCoreBundle:File:subdirectory, access: user } +cadoles_core_user_file_rename: + path: /user/file/rename/{id}/{oldname} + defaults: { _controller: CadolesCoreBundle:File:rename, access: user } + cadoles_core_user_file_trash: path: /user/file/trash/ defaults: { _controller: CadolesCoreBundle:File:trash, 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 da291b1e..dfdfa354 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 @@ -33,6 +33,10 @@ text-transform: initial !important; } + a.item-update { + right: 25px; + } + {% endblock %} @@ -142,6 +146,10 @@ {% else %} + + + + @@ -181,6 +189,10 @@ {% else %} + + + + @@ -234,6 +246,8 @@ else { color = "#{{ color["main"]}}"; } + $(".item-update").css("color",color); + $(".item-update > i").css("color",color); $(".item-delete").css("color",color); $(".item-delete > i").css("color",color); $(".item-restaure").css("color",color);