mirror of
https://github.com/silverstripe/silverstripe-cms
synced 2024-10-22 08:05:56 +02:00
App object refactor
This commit is contained in:
parent
d14e000e66
commit
21e204cc59
@ -1576,7 +1576,7 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
|
|||||||
public function getNewItem($id, $setID = true)
|
public function getNewItem($id, $setID = true)
|
||||||
{
|
{
|
||||||
$parentClass = $this->stat('tree_class');
|
$parentClass = $this->stat('tree_class');
|
||||||
list($dummy, $className, $parentID, $suffix) = array_pad(explode('-', $id), 4, null);
|
list(, $className, $parentID) = array_pad(explode('-', $id), 3, null);
|
||||||
|
|
||||||
if (!is_a($className, $parentClass, true)) {
|
if (!is_a($className, $parentClass, true)) {
|
||||||
$response = Security::permissionFailure($this);
|
$response = Security::permissionFailure($this);
|
||||||
@ -1588,18 +1588,6 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
|
|||||||
|
|
||||||
/** @var SiteTree $newItem */
|
/** @var SiteTree $newItem */
|
||||||
$newItem = Injector::inst()->create($className);
|
$newItem = Injector::inst()->create($className);
|
||||||
if (!$suffix) {
|
|
||||||
$sessionTag = "NewItems." . $parentID . "." . $className;
|
|
||||||
if (Session::get($sessionTag)) {
|
|
||||||
$suffix = '-' . Session::get($sessionTag);
|
|
||||||
Session::set($sessionTag, Session::get($sessionTag) + 1);
|
|
||||||
} else {
|
|
||||||
Session::set($sessionTag, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
$id = $id . $suffix;
|
|
||||||
}
|
|
||||||
|
|
||||||
$newItem->Title = _t(
|
$newItem->Title = _t(
|
||||||
'SilverStripe\\CMS\\Controllers\\CMSMain.NEWPAGE',
|
'SilverStripe\\CMS\\Controllers\\CMSMain.NEWPAGE',
|
||||||
"New {pagetype}",
|
"New {pagetype}",
|
||||||
@ -1612,10 +1600,14 @@ class CMSMain extends LeftAndMain implements CurrentPageIdentifier, PermissionPr
|
|||||||
// DataObject::fieldExists only checks the current class, not the hierarchy
|
// DataObject::fieldExists only checks the current class, not the hierarchy
|
||||||
// This allows the CMS to set the correct sort value
|
// This allows the CMS to set the correct sort value
|
||||||
if ($newItem->castingHelper('Sort')) {
|
if ($newItem->castingHelper('Sort')) {
|
||||||
$newItem->Sort = DB::prepared_query('SELECT MAX("Sort") FROM "SiteTree" WHERE "ParentID" = ?', array($parentID))->value() + 1;
|
$maxSort = DB::prepared_query(
|
||||||
|
'SELECT MAX("Sort") FROM "SiteTree" WHERE "ParentID" = ?',
|
||||||
|
array($parentID)
|
||||||
|
)->value();
|
||||||
|
$newItem->Sort = (int)$maxSort + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($setID) {
|
if ($setID && $id) {
|
||||||
$newItem->ID = $id;
|
$newItem->ID = $id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -180,8 +180,6 @@ class CMSPageAddController extends CMSPageEditController
|
|||||||
$className = isset($data['PageType']) ? $data['PageType'] : "Page";
|
$className = isset($data['PageType']) ? $data['PageType'] : "Page";
|
||||||
$parentID = isset($data['ParentID']) ? (int)$data['ParentID'] : 0;
|
$parentID = isset($data['ParentID']) ? (int)$data['ParentID'] : 0;
|
||||||
|
|
||||||
$suffix = isset($data['Suffix']) ? "-" . $data['Suffix'] : null;
|
|
||||||
|
|
||||||
if (!$parentID && isset($data['Parent'])) {
|
if (!$parentID && isset($data['Parent'])) {
|
||||||
$page = SiteTree::get_by_link($data['Parent']);
|
$page = SiteTree::get_by_link($data['Parent']);
|
||||||
if ($page) {
|
if ($page) {
|
||||||
@ -203,18 +201,19 @@ class CMSPageAddController extends CMSPageEditController
|
|||||||
return Security::permissionFailure($this);
|
return Security::permissionFailure($this);
|
||||||
}
|
}
|
||||||
|
|
||||||
$record = $this->getNewItem("new-$className-$parentID".$suffix, false);
|
$record = $this->getNewItem("new-$className-$parentID", false);
|
||||||
$this->extend('updateDoAdd', $record, $form);
|
$this->extend('updateDoAdd', $record, $form);
|
||||||
$record->write();
|
$record->write();
|
||||||
|
|
||||||
$editController = CMSPageEditController::singleton();
|
$editController = CMSPageEditController::singleton();
|
||||||
$editController->setCurrentPageID($record->ID);
|
$editController->setCurrentPageID($record->ID);
|
||||||
|
|
||||||
Session::set(
|
$session = $this->getRequest()->getSession();
|
||||||
|
$session->set(
|
||||||
"FormInfo.Form_EditForm.formError.message",
|
"FormInfo.Form_EditForm.formError.message",
|
||||||
_t('SilverStripe\\CMS\\Controllers\\CMSMain.PageAdded', 'Successfully created page')
|
_t('SilverStripe\\CMS\\Controllers\\CMSMain.PageAdded', 'Successfully created page')
|
||||||
);
|
);
|
||||||
Session::set("FormInfo.Form_EditForm.formError.type", 'good');
|
$session->set("FormInfo.Form_EditForm.formError.type", 'good');
|
||||||
|
|
||||||
return $this->redirect(Controller::join_links($editController->Link('show'), $record->ID));
|
return $this->redirect(Controller::join_links($editController->Link('show'), $record->ID));
|
||||||
}
|
}
|
||||||
|
@ -5,24 +5,22 @@ namespace SilverStripe\CMS\Controllers;
|
|||||||
use SilverStripe\CMS\Model\SiteTree;
|
use SilverStripe\CMS\Model\SiteTree;
|
||||||
use SilverStripe\Control\Controller;
|
use SilverStripe\Control\Controller;
|
||||||
use SilverStripe\Control\Director;
|
use SilverStripe\Control\Director;
|
||||||
use SilverStripe\Control\Session;
|
|
||||||
use SilverStripe\Control\HTTPRequest;
|
use SilverStripe\Control\HTTPRequest;
|
||||||
use SilverStripe\Control\HTTPResponse;
|
use SilverStripe\Control\HTTPResponse;
|
||||||
use SilverStripe\Control\HTTPResponse_Exception;
|
use SilverStripe\Control\HTTPResponse_Exception;
|
||||||
use SilverStripe\Core\Convert;
|
use SilverStripe\Core\Convert;
|
||||||
use SilverStripe\i18n\i18n;
|
use SilverStripe\i18n\i18n;
|
||||||
use SilverStripe\ORM\ArrayList;
|
use SilverStripe\ORM\ArrayList;
|
||||||
use SilverStripe\ORM\DataModel;
|
|
||||||
use SilverStripe\ORM\DataObject;
|
use SilverStripe\ORM\DataObject;
|
||||||
use SilverStripe\ORM\FieldType\DBDatetime;
|
use SilverStripe\ORM\FieldType\DBDatetime;
|
||||||
use SilverStripe\ORM\FieldType\DBField;
|
use SilverStripe\ORM\FieldType\DBField;
|
||||||
use SilverStripe\ORM\FieldType\DBHTMLText;
|
use SilverStripe\ORM\FieldType\DBHTMLText;
|
||||||
use SilverStripe\ORM\FieldType\DBVarchar;
|
use SilverStripe\ORM\FieldType\DBVarchar;
|
||||||
use SilverStripe\ORM\SS_List;
|
use SilverStripe\ORM\SS_List;
|
||||||
use SilverStripe\Versioned\Versioned;
|
|
||||||
use SilverStripe\Security\Permission;
|
use SilverStripe\Security\Permission;
|
||||||
use SilverStripe\Security\Security;
|
use SilverStripe\Security\Security;
|
||||||
use SilverStripe\SiteConfig\SiteConfig;
|
use SilverStripe\SiteConfig\SiteConfig;
|
||||||
|
use SilverStripe\Versioned\Versioned;
|
||||||
use SilverStripe\View\ArrayData;
|
use SilverStripe\View\ArrayData;
|
||||||
use SilverStripe\View\Requirements;
|
use SilverStripe\View\Requirements;
|
||||||
use SilverStripe\View\SSViewer;
|
use SilverStripe\View\SSViewer;
|
||||||
@ -169,16 +167,14 @@ class ContentController extends Controller
|
|||||||
* fall over to a child controller in order to provide functionality for nested URLs.
|
* fall over to a child controller in order to provide functionality for nested URLs.
|
||||||
*
|
*
|
||||||
* @param HTTPRequest $request
|
* @param HTTPRequest $request
|
||||||
* @param DataModel $model
|
|
||||||
* @return HTTPResponse
|
* @return HTTPResponse
|
||||||
* @throws HTTPResponse_Exception
|
* @throws HTTPResponse_Exception
|
||||||
*/
|
*/
|
||||||
public function handleRequest(HTTPRequest $request, DataModel $model)
|
public function handleRequest(HTTPRequest $request)
|
||||||
{
|
{
|
||||||
/** @var SiteTree $child */
|
/** @var SiteTree $child */
|
||||||
$child = null;
|
$child = null;
|
||||||
$action = $request->param('Action');
|
$action = $request->param('Action');
|
||||||
$this->setDataModel($model);
|
|
||||||
|
|
||||||
// If nested URLs are enabled, and there is no action handler for the current request then attempt to pass
|
// If nested URLs are enabled, and there is no action handler for the current request then attempt to pass
|
||||||
// control to a child controller. This allows for the creation of chains of controllers which correspond to a
|
// control to a child controller. This allows for the creation of chains of controllers which correspond to a
|
||||||
@ -203,7 +199,7 @@ class ContentController extends Controller
|
|||||||
$request->shiftAllParams();
|
$request->shiftAllParams();
|
||||||
$request->shift();
|
$request->shift();
|
||||||
|
|
||||||
$response = ModelAsController::controller_for($child)->handleRequest($request, $model);
|
$response = ModelAsController::controller_for($child)->handleRequest($request);
|
||||||
} else {
|
} else {
|
||||||
// If a specific locale is requested, and it doesn't match the page found by URLSegment,
|
// If a specific locale is requested, and it doesn't match the page found by URLSegment,
|
||||||
// look for a translation and redirect (see #5001). Only happens on the last child in
|
// look for a translation and redirect (see #5001). Only happens on the last child in
|
||||||
@ -227,7 +223,7 @@ class ContentController extends Controller
|
|||||||
Director::set_current_page($this->data());
|
Director::set_current_page($this->data());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$response = parent::handleRequest($request, $model);
|
$response = parent::handleRequest($request);
|
||||||
|
|
||||||
Director::set_current_page(null);
|
Director::set_current_page(null);
|
||||||
} catch (HTTPResponse_Exception $e) {
|
} catch (HTTPResponse_Exception $e) {
|
||||||
@ -474,8 +470,8 @@ HTML;
|
|||||||
global $project;
|
global $project;
|
||||||
$data = new ArrayData(array(
|
$data = new ArrayData(array(
|
||||||
'Project' => Convert::raw2xml($project),
|
'Project' => Convert::raw2xml($project),
|
||||||
'Username' => Convert::raw2xml(Session::get('username')),
|
'Username' => Convert::raw2xml($this->getRequest()->getSession()->get('username')),
|
||||||
'Password' => Convert::raw2xml(Session::get('password')),
|
'Password' => Convert::raw2xml($this->getRequest()->getSession()->get('password')),
|
||||||
));
|
));
|
||||||
|
|
||||||
return array(
|
return array(
|
||||||
@ -518,8 +514,8 @@ HTML;
|
|||||||
}
|
}
|
||||||
|
|
||||||
$data = new ArrayData(array(
|
$data = new ArrayData(array(
|
||||||
'Username' => Convert::raw2xml(Session::get('username')),
|
'Username' => Convert::raw2xml($this->getRequest()->getSession()->get('username')),
|
||||||
'Password' => Convert::raw2xml(Session::get('password')),
|
'Password' => Convert::raw2xml($this->getRequest()->getSession()->get('password')),
|
||||||
'UnsuccessfulFiles' => $unsuccessful
|
'UnsuccessfulFiles' => $unsuccessful
|
||||||
));
|
));
|
||||||
$content->setValue($data->renderWith([
|
$content->setValue($data->renderWith([
|
||||||
|
@ -2,22 +2,20 @@
|
|||||||
|
|
||||||
namespace SilverStripe\CMS\Controllers;
|
namespace SilverStripe\CMS\Controllers;
|
||||||
|
|
||||||
|
use Exception;
|
||||||
use SilverStripe\CMS\Model\SiteTree;
|
use SilverStripe\CMS\Model\SiteTree;
|
||||||
use SilverStripe\Control\Controller;
|
use SilverStripe\Control\Controller;
|
||||||
use SilverStripe\Control\Director;
|
use SilverStripe\Control\Director;
|
||||||
use SilverStripe\Control\NestedController;
|
|
||||||
use SilverStripe\Control\RequestHandler;
|
|
||||||
use SilverStripe\Control\HTTPRequest;
|
use SilverStripe\Control\HTTPRequest;
|
||||||
use SilverStripe\Control\HTTPResponse;
|
use SilverStripe\Control\HTTPResponse;
|
||||||
use SilverStripe\Control\HTTPResponse_Exception;
|
use SilverStripe\Control\HTTPResponse_Exception;
|
||||||
|
use SilverStripe\Control\NestedController;
|
||||||
|
use SilverStripe\Control\RequestHandler;
|
||||||
use SilverStripe\Core\ClassInfo;
|
use SilverStripe\Core\ClassInfo;
|
||||||
use SilverStripe\Core\Injector\Injector;
|
use SilverStripe\Core\Injector\Injector;
|
||||||
use SilverStripe\Dev\Debug;
|
use SilverStripe\Dev\Debug;
|
||||||
use SilverStripe\Dev\Deprecation;
|
|
||||||
use SilverStripe\ORM\DataModel;
|
|
||||||
use SilverStripe\ORM\DataObject;
|
use SilverStripe\ORM\DataObject;
|
||||||
use SilverStripe\ORM\DB;
|
use SilverStripe\ORM\DB;
|
||||||
use Exception;
|
|
||||||
use Translatable;
|
use Translatable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -26,8 +24,9 @@ use Translatable;
|
|||||||
*/
|
*/
|
||||||
class ModelAsController extends Controller implements NestedController
|
class ModelAsController extends Controller implements NestedController
|
||||||
{
|
{
|
||||||
|
private static $extensions = [
|
||||||
private static $extensions = array('SilverStripe\\CMS\\Controllers\\OldPageRedirector');
|
OldPageRedirector::class,
|
||||||
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the appropriate {@link ContentController} for handling a {@link SiteTree} object, link it to the object and
|
* Get the appropriate {@link ContentController} for handling a {@link SiteTree} object, link it to the object and
|
||||||
@ -54,9 +53,9 @@ class ModelAsController extends Controller implements NestedController
|
|||||||
parent::init();
|
parent::init();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function beforeHandleRequest(HTTPRequest $request, DataModel $model)
|
protected function beforeHandleRequest(HTTPRequest $request)
|
||||||
{
|
{
|
||||||
parent::beforeHandleRequest($request, $model);
|
parent::beforeHandleRequest($request);
|
||||||
// If the database has not yet been created, redirect to the build page.
|
// If the database has not yet been created, redirect to the build page.
|
||||||
/** @skipUpgrade */
|
/** @skipUpgrade */
|
||||||
if (!DB::is_active() || !ClassInfo::hasTable('SiteTree')) {
|
if (!DB::is_active() || !ClassInfo::hasTable('SiteTree')) {
|
||||||
@ -73,12 +72,11 @@ class ModelAsController extends Controller implements NestedController
|
|||||||
/**
|
/**
|
||||||
* @uses ModelAsController::getNestedController()
|
* @uses ModelAsController::getNestedController()
|
||||||
* @param HTTPRequest $request
|
* @param HTTPRequest $request
|
||||||
* @param DataModel $model
|
|
||||||
* @return HTTPResponse
|
* @return HTTPResponse
|
||||||
*/
|
*/
|
||||||
public function handleRequest(HTTPRequest $request, DataModel $model)
|
public function handleRequest(HTTPRequest $request)
|
||||||
{
|
{
|
||||||
$this->beforeHandleRequest($request, $model);
|
$this->beforeHandleRequest($request);
|
||||||
|
|
||||||
// If we had a redirection or something, halt processing.
|
// If we had a redirection or something, halt processing.
|
||||||
if ($this->getResponse()->isFinished()) {
|
if ($this->getResponse()->isFinished()) {
|
||||||
@ -99,7 +97,7 @@ class ModelAsController extends Controller implements NestedController
|
|||||||
$result = $this->getNestedController();
|
$result = $this->getNestedController();
|
||||||
|
|
||||||
if ($result instanceof RequestHandler) {
|
if ($result instanceof RequestHandler) {
|
||||||
$result = $result->handleRequest($this->getRequest(), $model);
|
$result = $result->handleRequest($this->getRequest());
|
||||||
} elseif (!($result instanceof HTTPResponse)) {
|
} elseif (!($result instanceof HTTPResponse)) {
|
||||||
user_error("ModelAsController::getNestedController() returned bad object type '" .
|
user_error("ModelAsController::getNestedController() returned bad object type '" .
|
||||||
get_class($result)."'", E_USER_WARNING);
|
get_class($result)."'", E_USER_WARNING);
|
||||||
@ -131,11 +129,11 @@ class ModelAsController extends Controller implements NestedController
|
|||||||
|
|
||||||
// Select child page
|
// Select child page
|
||||||
$conditions = array('"SiteTree"."URLSegment"' => rawurlencode($URLSegment));
|
$conditions = array('"SiteTree"."URLSegment"' => rawurlencode($URLSegment));
|
||||||
if (SiteTree::config()->nested_urls) {
|
if (SiteTree::config()->get('nested_urls')) {
|
||||||
$conditions[] = array('"SiteTree"."ParentID"' => 0);
|
$conditions[] = array('"SiteTree"."ParentID"' => 0);
|
||||||
}
|
}
|
||||||
/** @var SiteTree $sitetree */
|
/** @var SiteTree $sitetree */
|
||||||
$sitetree = DataObject::get_one('SilverStripe\\CMS\\Model\\SiteTree', $conditions);
|
$sitetree = DataObject::get_one(SiteTree::class, $conditions);
|
||||||
|
|
||||||
// Check translation module
|
// Check translation module
|
||||||
// @todo Refactor out module specific code
|
// @todo Refactor out module specific code
|
||||||
|
@ -10,8 +10,6 @@ use SilverStripe\Control\HTTPResponse;
|
|||||||
use SilverStripe\Core\ClassInfo;
|
use SilverStripe\Core\ClassInfo;
|
||||||
use SilverStripe\Core\Config\Config;
|
use SilverStripe\Core\Config\Config;
|
||||||
use SilverStripe\Core\Resettable;
|
use SilverStripe\Core\Resettable;
|
||||||
use SilverStripe\Dev\Deprecation;
|
|
||||||
use SilverStripe\ORM\DataModel;
|
|
||||||
use SilverStripe\ORM\DB;
|
use SilverStripe\ORM\DB;
|
||||||
use Translatable;
|
use Translatable;
|
||||||
|
|
||||||
@ -103,9 +101,9 @@ class RootURLController extends Controller implements Resettable
|
|||||||
self::$cached_homepage_link = null;
|
self::$cached_homepage_link = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function beforeHandleRequest(HTTPRequest $request, DataModel $model)
|
protected function beforeHandleRequest(HTTPRequest $request)
|
||||||
{
|
{
|
||||||
parent::beforeHandleRequest($request, $model);
|
parent::beforeHandleRequest($request);
|
||||||
|
|
||||||
self::$is_at_root = true;
|
self::$is_at_root = true;
|
||||||
|
|
||||||
@ -123,13 +121,12 @@ class RootURLController extends Controller implements Resettable
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param HTTPRequest $request
|
* @param HTTPRequest $request
|
||||||
* @param DataModel|null $model
|
|
||||||
* @return HTTPResponse
|
* @return HTTPResponse
|
||||||
*/
|
*/
|
||||||
public function handleRequest(HTTPRequest $request, DataModel $model = null)
|
public function handleRequest(HTTPRequest $request)
|
||||||
{
|
{
|
||||||
self::$is_at_root = true;
|
self::$is_at_root = true;
|
||||||
$this->beforeHandleRequest($request, $model);
|
$this->beforeHandleRequest($request);
|
||||||
|
|
||||||
if (!$this->getResponse()->isFinished()) {
|
if (!$this->getResponse()->isFinished()) {
|
||||||
/** @skipUpgrade */
|
/** @skipUpgrade */
|
||||||
@ -142,7 +139,7 @@ class RootURLController extends Controller implements Resettable
|
|||||||
$request->match('$URLSegment//$Action', true);
|
$request->match('$URLSegment//$Action', true);
|
||||||
$controller = new ModelAsController();
|
$controller = new ModelAsController();
|
||||||
|
|
||||||
$response = $controller->handleRequest($request, $model);
|
$response = $controller->handleRequest($request);
|
||||||
|
|
||||||
$this->prepareResponse($response);
|
$this->prepareResponse($response);
|
||||||
}
|
}
|
||||||
|
@ -2,21 +2,21 @@
|
|||||||
|
|
||||||
namespace SilverStripe\CMS\Model;
|
namespace SilverStripe\CMS\Model;
|
||||||
|
|
||||||
|
use Page;
|
||||||
|
use SilverStripe\Assets\File;
|
||||||
use SilverStripe\Assets\Storage\GeneratedAssetHandler;
|
use SilverStripe\Assets\Storage\GeneratedAssetHandler;
|
||||||
use SilverStripe\Forms\FieldList;
|
|
||||||
use SilverStripe\ORM\DataModel;
|
|
||||||
use SilverStripe\Versioned\Versioned;
|
|
||||||
use SilverStripe\ORM\DB;
|
|
||||||
use SilverStripe\CMS\Controllers\ModelAsController;
|
use SilverStripe\CMS\Controllers\ModelAsController;
|
||||||
use SilverStripe\View\Requirements;
|
use SilverStripe\Control\Director;
|
||||||
use SilverStripe\Control\HTTPRequest;
|
use SilverStripe\Control\HTTPRequest;
|
||||||
use SilverStripe\Control\HTTPResponse;
|
use SilverStripe\Control\HTTPResponse;
|
||||||
use SilverStripe\Forms\DropdownField;
|
|
||||||
use SilverStripe\Assets\File;
|
|
||||||
use SilverStripe\Core\Config\Config;
|
use SilverStripe\Core\Config\Config;
|
||||||
use SilverStripe\Control\Director;
|
|
||||||
use SilverStripe\Core\Injector\Injector;
|
use SilverStripe\Core\Injector\Injector;
|
||||||
use Page;
|
use SilverStripe\Forms\DropdownField;
|
||||||
|
use SilverStripe\Forms\FieldList;
|
||||||
|
use SilverStripe\ORM\DB;
|
||||||
|
use SilverStripe\Versioned\Versioned;
|
||||||
|
use SilverStripe\View\Requirements;
|
||||||
|
use SilverStripe\View\SSViewer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ErrorPage holds the content for the page of an error response.
|
* ErrorPage holds the content for the page of an error response.
|
||||||
@ -32,7 +32,6 @@ use Page;
|
|||||||
*/
|
*/
|
||||||
class ErrorPage extends Page
|
class ErrorPage extends Page
|
||||||
{
|
{
|
||||||
|
|
||||||
private static $db = array(
|
private static $db = array(
|
||||||
"ErrorCode" => "Int",
|
"ErrorCode" => "Int",
|
||||||
);
|
);
|
||||||
@ -97,10 +96,7 @@ class ErrorPage extends Page
|
|||||||
Requirements::clear_combined_files();
|
Requirements::clear_combined_files();
|
||||||
|
|
||||||
return ModelAsController::controller_for($errorPage)
|
return ModelAsController::controller_for($errorPage)
|
||||||
->handleRequest(
|
->handleRequest(new HTTPRequest('GET', ''));
|
||||||
new HTTPRequest('GET', ''),
|
|
||||||
DataModel::inst()
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// then fall back on a cached version
|
// then fall back on a cached version
|
||||||
@ -279,7 +275,7 @@ class ErrorPage extends Page
|
|||||||
|
|
||||||
// Run the page (reset the theme, it might've been disabled by LeftAndMain::init())
|
// Run the page (reset the theme, it might've been disabled by LeftAndMain::init())
|
||||||
Config::nest();
|
Config::nest();
|
||||||
Config::inst()->update('SilverStripe\\View\\SSViewer', 'theme_enabled', true);
|
SSViewer::config()->set('theme_enabled', true);
|
||||||
$response = Director::test(Director::makeRelative($this->Link()));
|
$response = Director::test(Director::makeRelative($this->Link()));
|
||||||
Config::unnest();
|
Config::unnest();
|
||||||
$errorContent = $response->getBody();
|
$errorContent = $response->getBody();
|
||||||
|
@ -1,17 +1,15 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace SilverStripe\CMS\Model;
|
namespace SilverStripe\CMS\Model;
|
||||||
|
|
||||||
use SilverStripe\ORM\DataModel;
|
use PageController;
|
||||||
use SilverStripe\Control\HTTPRequest;
|
use SilverStripe\Control\HTTPRequest;
|
||||||
use SilverStripe\Control\HTTPResponse;
|
use SilverStripe\Control\HTTPResponse;
|
||||||
use PageController;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Controller for ErrorPages.
|
* Controller for ErrorPages.
|
||||||
*/
|
*/
|
||||||
class ErrorPageController extends PageController
|
class ErrorPageController extends PageController
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Overload the provided {@link Controller::handleRequest()} to append the
|
* Overload the provided {@link Controller::handleRequest()} to append the
|
||||||
* correct status code post request since otherwise permission related error
|
* correct status code post request since otherwise permission related error
|
||||||
@ -19,13 +17,14 @@ class ErrorPageController extends PageController
|
|||||||
* {@link HTTPResponse::isFinished() ignoring the response body.
|
* {@link HTTPResponse::isFinished() ignoring the response body.
|
||||||
*
|
*
|
||||||
* @param HTTPRequest $request
|
* @param HTTPRequest $request
|
||||||
* @param DataModel $model
|
|
||||||
* @return HTTPResponse
|
* @return HTTPResponse
|
||||||
*/
|
*/
|
||||||
public function handleRequest(HTTPRequest $request, DataModel $model = null)
|
public function handleRequest(HTTPRequest $request)
|
||||||
{
|
{
|
||||||
$response = parent::handleRequest($request, $model);
|
/** @var ErrorPage $page */
|
||||||
$response->setStatusCode($this->ErrorCode);
|
$page = $this->data();
|
||||||
|
$response = parent::handleRequest($request);
|
||||||
|
$response->setStatusCode($page->ErrorCode);
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user