diff --git a/code/controllers/ContentController.php b/code/controllers/ContentController.php index 5f67e6b7..4593d302 100644 --- a/code/controllers/ContentController.php +++ b/code/controllers/ContentController.php @@ -205,11 +205,10 @@ class ContentController extends Controller { * @uses ErrorPage::response_for() */ public function httpError($code, $message = null) { - if($this->request->isMedia() || !$response = ErrorPage::response_for($code)) { - parent::httpError($code, $message); - } else { - throw new SS_HTTPResponse_Exception($response); - } + // Don't use the HTML response for media requests + $response = $this->request->isMedia() ? null : ErrorPage::response_for($code); + // Failover to $message if the HTML response is unavailable / inappropriate + parent::httpError($code, $response ? $response : $message); } /** diff --git a/code/controllers/ModelAsController.php b/code/controllers/ModelAsController.php index e6d0178b..5aeefc1f 100644 --- a/code/controllers/ModelAsController.php +++ b/code/controllers/ModelAsController.php @@ -126,11 +126,8 @@ class ModelAsController extends Controller implements NestedController { return $this->response; } - if($response = ErrorPage::response_for(404)) { - return $response; - } else { - $this->httpError(404, 'The requested page could not be found.'); - } + $response = ErrorPage::response_for(404); + $this->httpError(404, $response ? $response : 'The requested page could not be found.'); } // Enforce current locale setting to the loaded SiteTree object diff --git a/tests/controller/CMSPageHistoryControllerTest.php b/tests/controller/CMSPageHistoryControllerTest.php index 769b0466..58ec75d6 100755 --- a/tests/controller/CMSPageHistoryControllerTest.php +++ b/tests/controller/CMSPageHistoryControllerTest.php @@ -86,7 +86,7 @@ class CMSPageHistoryControllerTest extends FunctionalTest { */ public function testVersionsForm() { $history = $this->get('admin/pages/history/show/'. $this->page->ID); - $form = $this->cssParser()->getBySelector("#Form_VersionsForm"); + $form = $this->cssParser()->getBySelector('#Form_VersionsForm'); $this->assertEquals(1, count($form)); @@ -103,7 +103,7 @@ class CMSPageHistoryControllerTest extends FunctionalTest { public function testVersionsFormTableContainsInformation() { $history = $this->get('admin/pages/history/show/'. $this->page->ID); - $form = $this->cssParser()->getBySelector("#Form_VersionsForm"); + $form = $this->cssParser()->getBySelector('#Form_VersionsForm'); $rows = $form[0]->xpath("fieldset/table/tbody/tr"); $expected = array( @@ -128,7 +128,7 @@ class CMSPageHistoryControllerTest extends FunctionalTest { public function testVersionsFormSelectsUnpublishedCheckbox() { $history = $this->get('admin/pages/history/show/'. $this->page->ID); - $checkbox = $this->cssParser()->getBySelector("#Form_VersionsForm #ShowUnpublished input"); + $checkbox = $this->cssParser()->getBySelector('#Form_VersionsForm_ShowUnpublished'); $this->assertThat($checkbox[0], $this->logicalNot($this->isNull())); $checked = $checkbox[0]->attributes()->checked; @@ -137,7 +137,7 @@ class CMSPageHistoryControllerTest extends FunctionalTest { // viewing an unpublished $history = $this->get('admin/pages/history/show/'.$this->page->ID .'/'.$this->versionUnpublishedCheck); - $checkbox = $this->cssParser()->getBySelector("#Form_VersionsForm #ShowUnpublished input"); + $checkbox = $this->cssParser()->getBySelector('#Form_VersionsForm_ShowUnpublished'); $this->assertThat($checkbox[0], $this->logicalNot($this->isNull())); $this->assertEquals('checked', (string) $checkbox[0]->attributes()->checked);