Merge pull request #3086 from hafriedlander/fix/CWPBUG-155

FIX Folder Title not being exactly the same as Name field
This commit is contained in:
Damian Mooyman 2014-05-02 18:17:37 +12:00
commit 7a772b2480
3 changed files with 29 additions and 11 deletions

View File

@ -625,19 +625,19 @@ class File extends DataObject {
} }
} }
// Update title
if(!$this->getField('Title')) {
$this->__set('Title', str_replace(array('-','_'),' ', preg_replace('/\.[^.]+$/', '', $name)));
}
// Update actual field value // Update actual field value
$this->setField('Name', $name); $this->setField('Name', $name);
// Ensure that the filename is updated as well (only in-memory) // Ensure that the filename is updated as well (only in-memory)
// Important: Circumvent the getter to avoid infinite loops // Important: Circumvent the getter to avoid infinite loops
$this->setField('Filename', $this->getRelativePath()); $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

@ -352,13 +352,16 @@ class Folder extends File {
* Note that this is not appropriate for files, because someone might want to create a human-readable name * 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. */ * of a file that is different from its name on disk. But folders should always match their name on disk. */
public function setTitle($title) { public function setTitle($title) {
$this->setField('Title',$title); $this->setName($title);
parent::setName($title); //set the name and filename to match the title }
public function getTitle() {
return $this->Name;
} }
public function setName($name) { public function setName($name) {
$this->setField('Title',$name);
parent::setName($name); parent::setName($name);
$this->setField('Title', $this->Name);
} }
public function setFilename($filename) { public function setFilename($filename) {

View File

@ -354,5 +354,20 @@ class FolderTest extends SapphireTest {
$folder4 = Folder::find_or_make('/FolderTest/EN-US-Lang'); $folder4 = Folder::find_or_make('/FolderTest/EN-US-Lang');
$this->assertEquals($folder->ID, $folder4->ID); $this->assertEquals($folder->ID, $folder4->ID);
} }
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);
}
} }