BUG setFolderName in CMSFileAddController should default to the root

setFolderName expects a folder name relative to the root. Specifying
ASSETS_DIR will create a duplicate folder called "assets", so the
file gets uploaded into "assets/assets". Specifying "/" means the
file will get uploaded into the root instead, which is correct.
This commit is contained in:
Sean Harvey 2012-09-21 15:35:53 +12:00
parent 4af60dfee6
commit 118b28dea1
2 changed files with 12 additions and 10 deletions

View File

@ -478,10 +478,12 @@ JS
public function currentPage() {
$id = $this->currentPageID();
if($id && is_numeric($id) && $id > 0) {
return DataObject::get_by_id('Folder', $id);
} else {
return new Folder();
$folder = DataObject::get_by_id('Folder', $id);
if($folder && $folder->exists()) {
return $folder;
}
}
return new Folder();
}
function getSiteTreeFor($className, $rootID = null, $childrenMethod = null, $numChildrenMethod = null, $filterFunction = null, $minNodeCount = 30) {

View File

@ -23,13 +23,13 @@ class CMSFileAddController extends LeftAndMain {
*/
public function currentPage() {
$id = $this->currentPageID();
if($id && is_numeric($id) && $id > 0) {
return DataObject::get_by_id('Folder', $id);
} else {
// ID is either '0' or 'root'
return singleton('Folder');
$folder = DataObject::get_by_id('Folder', $id);
if($folder && $folder->exists()) {
return $folder;
}
}
return new Folder();
}
/**
@ -64,12 +64,12 @@ class CMSFileAddController extends LeftAndMain {
$uploadField->removeExtraClass('ss-uploadfield');
$uploadField->setTemplate('AssetUploadField');
if ($folder->exists() && $folder->getFilename()) {
if($folder->exists() && $folder->getFilename()) {
// The Upload class expects a folder relative *within* assets/
$path = preg_replace('/^' . ASSETS_DIR . '\//', '', $folder->getFilename());
$uploadField->setFolderName($path);
} else {
$uploadField->setFolderName(ASSETS_DIR);
$uploadField->setFolderName('/'); // root of the assets
}
$exts = $uploadField->getValidator()->getAllowedExtensions();