diff options
author | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-03-08 05:16:20 +0000 |
---|---|---|
committer | Angie Byron <webchick@24967.no-reply.drupal.org> | 2009-03-08 05:16:20 +0000 |
commit | ce81be0c8c50b6939ee45d3860a0d190381068b2 (patch) | |
tree | 61cf3d1a724b916815af50815c8845c89af4b097 | |
parent | d7fa0f82d052ee74ad1d8fa8ab5183078d4ec96b (diff) | |
download | brdo-ce81be0c8c50b6939ee45d3860a0d190381068b2.tar.gz brdo-ce81be0c8c50b6939ee45d3860a0d190381068b2.tar.bz2 |
#292565 by John Morahan and lyricnz: Fix 404 on search form from a 404 page (with tests).
-rw-r--r-- | includes/form.inc | 6 | ||||
-rw-r--r-- | modules/search/search.test | 32 |
2 files changed, 37 insertions, 1 deletions
diff --git a/includes/form.inc b/includes/form.inc index 5e911ed63..159653509 100644 --- a/includes/form.inc +++ b/includes/form.inc @@ -629,6 +629,12 @@ function drupal_redirect_form($form, $redirect = NULL) { } if (!isset($goto) || ($goto !== FALSE)) { if (isset($goto)) { + // Remove any fake destination set by drupal_not_found() or + // drupal_access_denied() so that we can properly redirect from those + // pages. + if (isset($_REQUEST['destination']) && $_REQUEST['destination'] == $_GET['q']) { + unset($_REQUEST['destination']); + } if (is_array($goto)) { call_user_func_array('drupal_goto', $goto); } diff --git a/modules/search/search.test b/modules/search/search.test index 2415abe65..96e036801 100644 --- a/modules/search/search.test +++ b/modules/search/search.test @@ -383,8 +383,13 @@ class SearchBlockTestCase extends DrupalWebTestCase { parent::setUp('search'); // Create and login user - $admin_user = $this->drupalCreateUser(array('administer blocks')); + $admin_user = $this->drupalCreateUser(array('administer blocks', 'search content')); $this->drupalLogin($admin_user); + + // Disable the theme form to avoid confusion. + $settings = theme_get_settings(); + $settings['toggle_search'] = FALSE; + variable_set('theme_settings', $settings); } function testSearchFormBlock() { @@ -398,4 +403,29 @@ class SearchBlockTestCase extends DrupalWebTestCase { $this->drupalPost('admin/build/block', $edit, t('Save blocks')); $this->assertText(t('The block settings have been updated.'), t('Block successfully move to footer region.')); } + + /** + * Test that the search block form works correctly. + */ + function testBlock() { + // Enable the block, and place it in the 'content' region so that it isn't + // hidden on 404 pages. + $edit = array('search_form[region]' => 'content'); + $this->drupalPost('admin/build/block', $edit, t('Save blocks')); + + // Test a normal search via the block form, from the front page. + $terms = array('search_block_form' => 'test'); + $this->drupalPost('node', $terms, t('Search')); + $this->assertText('Your search yielded no results'); + + // Test a search from the block on a 404 page. + $this->drupalPost('foo', $terms, t('Search')); + $this->assertText('Your search yielded no results'); + + // Test a search from the block when it doesn't appear on the search page. + $edit = array('pages' => 'search'); + $this->drupalPost('admin/build/block/configure/search/form', $edit, t('Save block')); + $this->drupalPost('node', $terms, t('Search')); + $this->assertText('Your search yielded no results'); + } } |