From 47dfe8b2aba31b3ea2d7a407436d04469839937e Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Wed, 14 Apr 2010 03:06:22 +0000 Subject: [PATCH] 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 --- code/CMSMain.php | 23 ++++++++++++++++------- code/LeftAndMain.php | 5 +++-- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/code/CMSMain.php b/code/CMSMain.php index 87529e70..2ca87a6c 100755 --- a/code/CMSMain.php +++ b/code/CMSMain.php @@ -430,9 +430,11 @@ JS; if($page) $parentID = $page->ID; } - if(is_numeric($parentID)) $parentObj = DataObject::get_by_id("SiteTree", $parentID); - if(!$parentObj || !$parentObj->ID) $parentID = 0; + if(is_numeric($parentID) && $parentID > 0) $parentObj = DataObject::get_by_id("SiteTree", $parentID); + else $parentObj = null; + if(!$parentObj || !$parentObj->ID) $parentID = 0; + if($parentObj) { if(!$parentObj->canAddChildren()) return Security::permissionFailure($this); if(!singleton($className)->canCreate()) return Security::permissionFailure($this); @@ -441,13 +443,20 @@ JS; return Security::permissionFailure($this); } - $p = $this->getNewItem("new-$className-$parentID".$suffix, false); - $p->Locale = $data['Locale']; - $p->write(); + $record = $this->getNewItem("new-$className-$parentID".$suffix, false); + $record->Locale = $data['Locale']; + $record->write(); - $form = $this->getEditForm($p->ID); + $form = $this->getEditForm($record->ID); - return $form->formHtmlContent(); + if(isset($data['returnID'])) { + return $record->ID; + } else if(Director::is_ajax()) { + $form = $this->getEditForm($record->ID); + return $form->formHtmlContent(); + } else { + return $this->redirect(Controller::join_links($this->Link('show'), $record->ID)); + } } /** diff --git a/code/LeftAndMain.php b/code/LeftAndMain.php index 1547350d..b99ca0c4 100644 --- a/code/LeftAndMain.php +++ b/code/LeftAndMain.php @@ -883,9 +883,11 @@ class LeftAndMain extends Controller { // Used in TinyMCE inline folder creation if(isset($data['returnID'])) { return $record->ID; - } else { + } else if(Director::is_ajax()) { $form = $this->getEditForm($record->ID); 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 */ public function currentPageID() { - SS_Backtrace::backtrace(); if($this->request->getVar('ID')) { return $this->request->getVar('ID'); } elseif ($this->request->param('ID') && is_numeric($this->request->param('ID'))) {