ENHANCEMENT Redirecting to new record from LeftAndMain/CMSMain->doAdd() if not called via ajax

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/cms/trunk@102784 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
Ingo Schommer 2010-04-14 03:06:22 +00:00
parent 4ce05e4482
commit 47dfe8b2ab
2 changed files with 19 additions and 9 deletions

View File

@ -430,7 +430,9 @@ JS;
if($page) $parentID = $page->ID; if($page) $parentID = $page->ID;
} }
if(is_numeric($parentID)) $parentObj = DataObject::get_by_id("SiteTree", $parentID); if(is_numeric($parentID) && $parentID > 0) $parentObj = DataObject::get_by_id("SiteTree", $parentID);
else $parentObj = null;
if(!$parentObj || !$parentObj->ID) $parentID = 0; if(!$parentObj || !$parentObj->ID) $parentID = 0;
if($parentObj) { if($parentObj) {
@ -441,13 +443,20 @@ JS;
return Security::permissionFailure($this); return Security::permissionFailure($this);
} }
$p = $this->getNewItem("new-$className-$parentID".$suffix, false); $record = $this->getNewItem("new-$className-$parentID".$suffix, false);
$p->Locale = $data['Locale']; $record->Locale = $data['Locale'];
$p->write(); $record->write();
$form = $this->getEditForm($p->ID); $form = $this->getEditForm($record->ID);
if(isset($data['returnID'])) {
return $record->ID;
} else if(Director::is_ajax()) {
$form = $this->getEditForm($record->ID);
return $form->formHtmlContent(); return $form->formHtmlContent();
} else {
return $this->redirect(Controller::join_links($this->Link('show'), $record->ID));
}
} }
/** /**

View File

@ -883,9 +883,11 @@ class LeftAndMain extends Controller {
// Used in TinyMCE inline folder creation // Used in TinyMCE inline folder creation
if(isset($data['returnID'])) { if(isset($data['returnID'])) {
return $record->ID; return $record->ID;
} else { } else if(Director::is_ajax()) {
$form = $this->getEditForm($record->ID); $form = $this->getEditForm($record->ID);
return $form->formHtmlContent(); return $form->formHtmlContent();
} else {
return $this->redirect(Controller::join_links($this->Link('show'), $record->ID));
} }
} }
@ -971,7 +973,6 @@ class LeftAndMain extends Controller {
* @return int * @return int
*/ */
public function currentPageID() { public function currentPageID() {
SS_Backtrace::backtrace();
if($this->request->getVar('ID')) { if($this->request->getVar('ID')) {
return $this->request->getVar('ID'); return $this->request->getVar('ID');
} elseif ($this->request->param('ID') && is_numeric($this->request->param('ID'))) { } elseif ($this->request->param('ID') && is_numeric($this->request->param('ID'))) {