Permalink
Browse files

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.
  • Loading branch information...
halkyon committed Sep 21, 2012
1 parent 4af60df commit 118b28dea13b128e0f1ae785d78ed7ec11a36098
Showing with 12 additions and 10 deletions.
  1. +5 −3 code/controllers/AssetAdmin.php
  2. +7 −7 code/controllers/CMSFileAddController.php
@@ -478,10 +478,12 @@ public function doAdd($data, $form) {
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) {
@@ -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 @@ public function getEditForm($id = null, $fields = null) {
$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();

0 comments on commit 118b28d

Please sign in to comment.