- Patch #690544 by bleen18, andypost, marcvangend, dbeheydt, rschwab, robertom: blocks admin (admin/structure/block) requires menu_rebuild() to display settings for current theme.

merge-requests/26/head
Dries Buytaert 2011-05-13 15:32:45 -04:00
parent 8f46835ea2
commit 148569d986
2 changed files with 29 additions and 1 deletions

View File

@ -349,6 +349,14 @@ function system_theme_default() {
}
// Set the default theme.
variable_set('theme_default', $theme);
// Rebuild the menu. This duplicates the menu_rebuild() in theme_enable().
// However, modules must know the current default theme in order to use
// this information in hook_menu() or hook_menu_alter() implementations,
// and doing the variable_set() before the theme_enable() could result
// in a race condition where the theme is default but not enabled.
menu_rebuild();
// The status message depends on whether an admin theme is currently in use:
// a value of 0 means the admin theme is set to be the default theme.
$admin_theme = variable_get('admin_theme', 0);

View File

@ -1359,7 +1359,7 @@ class SystemThemeFunctionalTest extends DrupalWebTestCase {
function setUp() {
parent::setUp();
$this->admin_user = $this->drupalCreateUser(array('access administration pages', 'view the administration theme', 'administer themes', 'bypass node access'));
$this->admin_user = $this->drupalCreateUser(array('access administration pages', 'view the administration theme', 'administer themes', 'bypass node access', 'administer blocks'));
$this->drupalLogin($this->admin_user);
$this->node = $this->drupalCreateNode();
}
@ -1443,6 +1443,26 @@ class SystemThemeFunctionalTest extends DrupalWebTestCase {
$this->drupalGet('node/add');
$this->assertRaw('themes/bartik', t('Site default theme used on the add content page.'));
}
/**
* Test switching the default theme.
*/
function testSwitchDefaultTheme() {
// Enable "stark" and set it as the default theme.
theme_enable(array('stark'));
$this->drupalGet('admin/appearance');
$this->clickLink(t('Set default'), 1);
$this->assertTrue(variable_get('theme_default', '') == 'stark', t('Site default theme switched successfully.'));
// Test the default theme on the secondary links (blocks admin page).
$this->drupalGet('admin/structure/block');
$this->assertText('Stark(' . t('active tab') . ')', t('Default local task on blocks admin page is the default theme.'));
// Switch back to Bartik and test again to test that the menu cache is cleared.
$this->drupalGet('admin/appearance');
$this->clickLink(t('Set default'), 0);
$this->drupalGet('admin/structure/block');
$this->assertText('Bartik(' . t('active tab') . ')', t('Default local task on blocks admin page has changed.'));
}
}