diff options
author | Dries Buytaert <dries@buytaert.net> | 2010-08-22 12:46:21 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2010-08-22 12:46:21 +0000 |
commit | b0894ceaa74c01444856910fd87dfc992542eb85 (patch) | |
tree | 5dbbd695351e7344279e27b32454beede85b53e2 /modules/simpletest/tests/theme_test.module | |
parent | ee691c593adfaf4c8046cf6ee2bc9796a28a1448 (diff) | |
download | brdo-b0894ceaa74c01444856910fd87dfc992542eb85.tar.gz brdo-b0894ceaa74c01444856910fd87dfc992542eb85.tar.bz2 |
- Patch #812016 by effulgentsia, chx, redndahead, Damien Tournoud: themes cannot always participate in drupal_alter().
Diffstat (limited to 'modules/simpletest/tests/theme_test.module')
-rw-r--r-- | modules/simpletest/tests/theme_test.module | 59 |
1 files changed, 50 insertions, 9 deletions
diff --git a/modules/simpletest/tests/theme_test.module b/modules/simpletest/tests/theme_test.module index ad22367b8..ff525ec34 100644 --- a/modules/simpletest/tests/theme_test.module +++ b/modules/simpletest/tests/theme_test.module @@ -12,6 +12,13 @@ function theme_test_menu() { 'theme callback' => '_theme_custom_theme', 'type' => MENU_CALLBACK, ); + $items['theme-test/alter'] = array( + 'title' => 'Suggestion', + 'page callback' => '_theme_test_alter', + 'access arguments' => array('access content'), + 'theme callback' => '_theme_custom_theme', + 'type' => MENU_CALLBACK, + ); $items['theme-test/hook-init'] = array( 'page callback' => 'theme_test_hook_init_page_callback', 'access callback' => TRUE, @@ -24,15 +31,36 @@ function theme_test_menu() { * Implements hook_init(). */ function theme_test_init() { - // First, force the theme registry to be rebuilt on this page request. This - // allows us to test a full initialization of the theme system in the code - // below. - drupal_theme_rebuild(); - // Next, initialize the theme system by storing themed text in a global - // variable. We will use this later in theme_test_hook_init_page_callback() - // to test that even when the theme system is initialized this early, it is - // still capable of returning output and theming the page as a whole. - $GLOBALS['theme_test_output'] = theme('more_link', array('url' => 'user', 'title' => 'Themed output generated in hook_init()')); + if (arg(0) == 'theme-test' && arg(1) == 'hook-init') { + // First, force the theme registry to be rebuilt on this page request. This + // allows us to test a full initialization of the theme system in the code + // below. + drupal_theme_rebuild(); + // Next, initialize the theme system by storing themed text in a global + // variable. We will use this later in theme_test_hook_init_page_callback() + // to test that even when the theme system is initialized this early, it is + // still capable of returning output and theming the page as a whole. + $GLOBALS['theme_test_output'] = theme('more_link', array('url' => 'user', 'title' => 'Themed output generated in hook_init()')); + } +} + +/** + * Implements hook_exit(). + */ +function theme_test_exit() { + if (arg(0) == 'user') { + // Register a fake registry loading callback. If it gets called by + // theme_get_registry(), the registry has not been initialized yet. + _theme_registry_callback('_theme_test_load_registry', array()); + print theme_get_registry() ? 'registry initialized' : 'registry not initialized'; + } +} + +/** + * Fake registry loading callback. + */ +function _theme_test_load_registry() { + return array(); } /** @@ -50,6 +78,19 @@ function _theme_custom_theme() { } /** + * Page callback, calls drupal_alter(). + * + * This is for testing that the theme can have hook_*_alter() implementations + * that run during page callback execution, even before theme() is called for + * the first time. + */ +function _theme_test_alter() { + $data = 'foo'; + drupal_alter('theme_test_alter', $data); + return "The altered data is $data."; +} + +/** * Page callback, calls a theme hook suggestion. */ function _theme_test_suggestion() { |