From ad27cd5ec9bcffe98bfa2d7e6dc6c60235ab42d5 Mon Sep 17 00:00:00 2001 From: Hamish Friedlander Date: Fri, 2 May 2014 14:41:10 +1200 Subject: [PATCH] FIX Folder Title not being exactly the same as Name field Backport to 3.0 of PR #3086 --- filesystem/File.php | 14 +++++++------- filesystem/Folder.php | 9 ++++++--- tests/filesystem/FolderTest.php | 17 ++++++++++++++++- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/filesystem/File.php b/filesystem/File.php index 7a591a59e..e112b92d1 100644 --- a/filesystem/File.php +++ b/filesystem/File.php @@ -603,19 +603,19 @@ class File extends DataObject { } } - // Update title - if(!$this->getField('Title')) { - $this->__set('Title', str_replace(array('-','_'),' ', preg_replace('/\.[^.]+$/', '', $name))); - } - // Update actual field value $this->setField('Name', $name); // Ensure that the filename is updated as well (only in-memory) // Important: Circumvent the getter to avoid infinite loops $this->setField('Filename', $this->getRelativePath()); - - return $this->getField('Name'); + + // Update title + if(!$this->Title) { + $this->Title = str_replace(array('-','_'),' ', preg_replace('/\.[^.]+$/', '', $name)); + } + + return $name; } /** diff --git a/filesystem/Folder.php b/filesystem/Folder.php index bc80513f9..1485ed5dd 100644 --- a/filesystem/Folder.php +++ b/filesystem/Folder.php @@ -334,13 +334,16 @@ class Folder extends File { * Note that this is not appropriate for files, because someone might want to create a human-readable name * of a file that is different from its name on disk. But folders should always match their name on disk. */ public function setTitle($title) { - $this->setField('Title',$title); - parent::setName($title); //set the name and filename to match the title + $this->setName($title); + } + + public function getTitle() { + return $this->Name; } public function setName($name) { - $this->setField('Title',$name); parent::setName($name); + $this->setField('Title', $this->Name); } public function setFilename($filename) { diff --git a/tests/filesystem/FolderTest.php b/tests/filesystem/FolderTest.php index 4c9c5acbd..3ce47aa8b 100644 --- a/tests/filesystem/FolderTest.php +++ b/tests/filesystem/FolderTest.php @@ -293,5 +293,20 @@ class FolderTest extends SapphireTest { parent::tearDown(); } - + + public function testTitleTiedToName() { + $newFolder = new Folder(); + + $newFolder->Name = 'TestNameCopiedToTitle'; + $this->assertEquals($newFolder->Name, $newFolder->Title); + + $newFolder->Title = 'TestTitleCopiedToName'; + $this->assertEquals($newFolder->Name, $newFolder->Title); + + $newFolder->Name = 'TestNameWithIllegalCharactersCopiedToTitle '; + $this->assertEquals($newFolder->Name, $newFolder->Title); + + $newFolder->Title = 'TestTitleWithIllegalCharactersCopiedToName '; + $this->assertEquals($newFolder->Name, $newFolder->Title); + } }