FIX Folder Title not being exactly the same as Name field

Backport to 3.0 of PR #3086
This commit is contained in:
Hamish Friedlander 2014-05-02 14:41:10 +12:00 committed by Damian Mooyman
parent fc8da3fb1d
commit ad27cd5ec9
3 changed files with 29 additions and 11 deletions

View File

@ -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;
}
/**

View File

@ -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) {

View File

@ -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 <!BANG!>';
$this->assertEquals($newFolder->Name, $newFolder->Title);
$newFolder->Title = 'TestTitleWithIllegalCharactersCopiedToName <!BANG!>';
$this->assertEquals($newFolder->Name, $newFolder->Title);
}
}