Permalink
Browse files

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
  • Loading branch information...
1 parent 416178b commit b25063b09ca3cfcd26ba0cb18d1a74d341e24ce0 @chillu chillu committed Jan 30, 2013
Showing with 35 additions and 25 deletions.
  1. +35 −25 code/model/ErrorPage.php
View
@@ -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_exists('Translatable') ? Translatable::get_current_locale() : null
return $response;
}
}
-
+
/**
* Ensures that there is always a 404 page
* by checking if there's an instance of
@@ -73,25 +73,7 @@ public function requireDefaultRecords() {
mkdir(ASSETS_PATH);
}
- $defaultPages = array(
- array(
- 'ErrorCode' => 404,
- 'Title' => _t('ErrorPage.DEFAULTERRORPAGETITLE', 'Page not found'),
- 'Content' => _t(
- 'ErrorPage.DEFAULTERRORPAGECONTENT',
- '<p>Sorry, it seems you were trying to access a page that doesn\'t exist.</p>'
- . '<p>Please check the spelling of the URL you were trying to access and try again.</p>'
- )
- ),
- array(
- 'ErrorCode' => 500,
- 'Title' => _t('ErrorPage.DEFAULTSERVERERRORPAGETITLE', 'Server error'),
- 'Content' => _t(
- 'ErrorPage.DEFAULTSERVERERRORPAGECONTENT',
- '<p>Sorry, there was a problem with handling your request.</p>'
- )
- )
- );
+ $defaultPages = $this->getDefaultRecords();
foreach($defaultPages as $defaultData) {
$code = $defaultData['ErrorCode'];
@@ -103,10 +85,7 @@ public function requireDefaultRecords() {
$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 @@ public function requireDefaultRecords() {
}
}
+ /**
+ * 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',
+ '<p>Sorry, it seems you were trying to access a page that doesn\'t exist.</p>'
+ . '<p>Please check the spelling of the URL you were trying to access and try again.</p>'
+ )
+ ),
+ array(
+ 'ErrorCode' => 500,
+ 'Title' => _t('ErrorPage.DEFAULTSERVERERRORPAGETITLE', 'Server error'),
+ 'Content' => _t(
+ 'ErrorPage.DEFAULTSERVERERRORPAGECONTENT',
+ '<p>Sorry, there was a problem with handling your request.</p>'
+ )
+ )
+ );
+ $this->extend('getDefaultRecords', $data);
+
+ return $data;
+ }
+
public function getCMSFields() {
$fields = parent::getCMSFields();

0 comments on commit b25063b

Please sign in to comment.