diff --git a/VERSIONS_HOTLINE/118358 b/VERSIONS_HOTLINE/118358 new file mode 100644 index 0000000000000000000000000000000000000000..affa1ba2548b568202dd4c7002b5c1f798e2e21b --- /dev/null +++ b/VERSIONS_HOTLINE/118358 @@ -0,0 +1 @@ + - correctif #118358 : Explorateur Fichier : les images utilisées dans les lettres d'information sont maintenant protégées contre la suppression. \ No newline at end of file diff --git a/application/modules/admin/controllers/FileManagerController.php b/application/modules/admin/controllers/FileManagerController.php index 5ad27bc0e39b3f827f50c8d9ccdb3f2c7a4ddb12..9fc658bb25de45a63704466457f5b36ae5fedb39 100644 --- a/application/modules/admin/controllers/FileManagerController.php +++ b/application/modules/admin/controllers/FileManagerController.php @@ -125,7 +125,7 @@ class Admin_FileManagerController extends ZendAfi_Controller_Action { if(!$item->isDeepWritable()) return $this->_redirectToPathWithMessage($item->getPath(), - $this->_('%s ne peut pas être supprimé car il contient des éléments protégés en écriture ou utilisés dans les articles, les domaines, les bibliothèques ou les profils.', $item->getPath())); + $this->_('%s ne peut pas être supprimé car il contient des éléments protégés en écriture ou utilisés dans des articles, des domaines, des bibliothèques, des lettres d\'information ou des profils.', $item->getPath())); $this->view->titre = $this->_('Supprimer "%s"', $item->getPath()); $this->view->models = $item->getModels(); diff --git a/library/Class/FileManager/Model.php b/library/Class/FileManager/Model.php index 365753b628cff4b0532fb7c1c524f3921e1936dd..30d923fad991a051c8009d233d3ca65ad6dfd6d1 100644 --- a/library/Class/FileManager/Model.php +++ b/library/Class/FileManager/Model.php @@ -28,12 +28,13 @@ class Class_FileManager_Model { public function __construct($filemanager) { $this->_filemanager = $filemanager; - $this->_relations = [new Class_FileManager_ModelRelation('Class_Catalogue', 'url_img'), - new Class_FileManager_ModelRelation('Class_SearchForm', 'filename'), - new Class_FileManager_ModelRelationText('Class_Article', 'contenu'), - new Class_FileManager_ModelRelationText('Class_Article', 'description'), + $this->_relations = [new Class_FileManager_ModelRelation(Class_Catalogue::class, 'url_img'), + new Class_FileManager_ModelRelation(Class_SearchForm::class, 'filename'), + new Class_FileManager_ModelRelation(Class_Newsletter::class, 'contenu'), + new Class_FileManager_ModelRelationText(Class_Article::class, 'contenu'), + new Class_FileManager_ModelRelationText(Class_Article::class, 'description'), new Class_FileManager_ModelRelationProfil($filemanager), - new Class_FileManager_ModelRelation('Class_Bib', 'photo') + new Class_FileManager_ModelRelation(Class_Bib::class, 'photo') ]; } diff --git a/tests/application/modules/admin/controllers/FileManagerControllerTest.php b/tests/application/modules/admin/controllers/FileManagerControllerTest.php index ccd214870888bfeb3a928788513f986763dae7ce..3f489ddbcb4bb0fbc689f37bc6163bdd0d7f0c21 100644 --- a/tests/application/modules/admin/controllers/FileManagerControllerTest.php +++ b/tests/application/modules/admin/controllers/FileManagerControllerTest.php @@ -1610,6 +1610,63 @@ class FileManagerControllerWithImageInArticleTest extends FileManagerControllerT +class FileManagerControllerWithImageInNewsLetterTest extends FileManagerControllerTestCase { + + public function setUp() { + parent::setUp(); + $banner = $this->fixture('Class_Newsletter', + ['id' => 1, + 'titre' => 'Ma Newsletter', + 'mail_subject' => 'mon sujet de newsletter', + 'contenu' => '<img src="https:// ' . BASE_URL . 'userfiles/image/home.jpg"></> qsdfqsdfjklmqsdf']); + + $disk = Class_FileManager::getFileSystem() + ->whenCalled('directoryAt') + ->with('userfiles/image/home.jpg') + ->answers(null) + + ->whenCalled('fileAt') + ->with('userfiles/image/home.jpg') + ->answers((new Class_FileManager) + ->setId('userfiles/image/home.jpg') + ->setPath('userfiles/image/home.jpg') + ->setParentPath('userfiles/image') + ->setName('home.jpg') + ->setDir(false) + ->setWritable(true) + ->setExtension('jpg')); + + Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Newsletter') + ->whenCalled('findAllBy') + ->answers([$banner]); + } + + + /** @test */ + public function dispatchDeleteShouldDisplayDisabledDeleteButton() { + $this->dispatch('/admin/file-manager/delete?item=userfiles%2Fimage%2Fhome.jpg', true); + $this->assertXPathContentContains('//div//button[@disabled]', 'Supprimer'); + } + + + /** @test */ + public function dispatchForceDeleteShouldRedirectWithErrorMessage() { + $this->dispatch('/admin/file-manager/force-delete?item=userfiles%2Fimage%2Fhome.jpg', true); + $this->assertRedirectTo('/admin/file-manager/index?browser=userfiles%2Fimage%2Fhome.jpg'); + $this->assertFlashMessengerContentContains('Impossible de supprimer "userfiles/image/home.jpg'); + } + + + /** @test */ + public function dispatchPropertiesShouldContainsModels() { + $this->dispatch('/admin/file-manager/properties?item=userfiles%2Fimage%2Fhome.jpg', true); + $this->assertXpathContentContains('//table//td', 'Ma Newsletter'); + } +} + + + + class FileManagerControllerWithImageInProfilTest extends FileManagerControllerTestCase { public function setUp() {