From b25063b09ca3cfcd26ba0cb18d1a74d341e24ce0 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Wed, 30 Jan 2013 13:07:11 +0100 Subject: [PATCH] Extracted ErrorPage default data to getter Allows for less verbose overloading, while still keeping i18n capabilities in place, which isn't possible with DataObject::$default_records --- code/model/ErrorPage.php | 60 +++++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 25 deletions(-) diff --git a/code/model/ErrorPage.php b/code/model/ErrorPage.php index a2345935..35e04123 100644 --- a/code/model/ErrorPage.php +++ b/code/model/ErrorPage.php @@ -21,7 +21,7 @@ class ErrorPage extends Page { "ShowInMenus" => 0, "ShowInSearch" => 0 ); - + static $allowed_children = array(); static $description = 'Custom content for different error cases (e.g. "Page not found")'; @@ -57,7 +57,7 @@ class ErrorPage extends Page { return $response; } } - + /** * Ensures that there is always a 404 page * by checking if there's an instance of @@ -73,25 +73,7 @@ class ErrorPage extends Page { mkdir(ASSETS_PATH); } - $defaultPages = array( - array( - 'ErrorCode' => 404, - 'Title' => _t('ErrorPage.DEFAULTERRORPAGETITLE', 'Page not found'), - 'Content' => _t( - 'ErrorPage.DEFAULTERRORPAGECONTENT', - '

Sorry, it seems you were trying to access a page that doesn\'t exist.

' - . '

Please check the spelling of the URL you were trying to access and try again.

' - ) - ), - array( - 'ErrorCode' => 500, - 'Title' => _t('ErrorPage.DEFAULTSERVERERRORPAGETITLE', 'Server error'), - 'Content' => _t( - 'ErrorPage.DEFAULTSERVERERRORPAGECONTENT', - '

Sorry, there was a problem with handling your request.

' - ) - ) - ); + $defaultPages = $this->getDefaultRecords(); foreach($defaultPages as $defaultData) { $code = $defaultData['ErrorCode']; @@ -103,10 +85,7 @@ class ErrorPage extends Page { $pagePath = self::get_filepath_for_errorcode($code); if(!($pageExists && file_exists($pagePath))) { if(!$pageExists) { - $page = new ErrorPage(); - $page->ErrorCode = $code; - $page->Title = $defaultData['Title']; - $page->Content = $defaultData['Title']; + $page = new ErrorPage($defaultData); $page->write(); $page->publish('Stage', 'Live'); } @@ -140,6 +119,37 @@ class ErrorPage extends Page { } } + /** + * Returns an array of arrays, each of which defines + * properties for a new ErrorPage record. + * + * @return Array + */ + protected function getDefaultRecords() { + $data = array( + array( + 'ErrorCode' => 404, + 'Title' => _t('ErrorPage.DEFAULTERRORPAGETITLE', 'Page not found'), + 'Content' => _t( + 'ErrorPage.DEFAULTERRORPAGECONTENT', + '

Sorry, it seems you were trying to access a page that doesn\'t exist.

' + . '

Please check the spelling of the URL you were trying to access and try again.

' + ) + ), + array( + 'ErrorCode' => 500, + 'Title' => _t('ErrorPage.DEFAULTSERVERERRORPAGETITLE', 'Server error'), + 'Content' => _t( + 'ErrorPage.DEFAULTSERVERERRORPAGECONTENT', + '

Sorry, there was a problem with handling your request.

' + ) + ) + ); + $this->extend('getDefaultRecords', $data); + + return $data; + } + public function getCMSFields() { $fields = parent::getCMSFields();