diff --git a/code/GridFieldBulkManager_Request.php b/code/GridFieldBulkManager_Request.php index 2be85b1..fe45081 100644 --- a/code/GridFieldBulkManager_Request.php +++ b/code/GridFieldBulkManager_Request.php @@ -151,7 +151,33 @@ class GridFieldBulkManager_Request extends RequestHandler { $response = new SS_HTTPResponse($formHTML); $response->addHeader('Content-Type', 'text/plain'); $response->addHeader('X-Title', 'SilverStripe - Bulk '.$this->gridField->list->dataClass.' Editing'); - return $response; + + if($request->isAjax()) + { + return $response; + } + else { + $controller = $this->getToplevelController(); + // If not requested by ajax, we need to render it within the controller context+template + return $controller->customise(array( + 'Content' => $response->getBody(), + )); + } + } + + /** + * Traverse up nested requests until we reach the first that's not a GridFieldDetailForm or GridFieldDetailForm_ItemRequest. + * The opposite of {@link Controller::curr()}, required because + * Controller::$controller_stack is not directly accessible. + * + * @return Controller + */ + protected function getToplevelController() { + $c = $this->controller; + while($c && ($c instanceof GridFieldDetailForm_ItemRequest || $c instanceof GridFieldDetailForm)) { + $c = $c->getController(); + } + return $c; } /**