diff -r 07239de796bb -r e756a8c72c3d cms/drupal/modules/simpletest/tests/theme_test.module --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cms/drupal/modules/simpletest/tests/theme_test.module Fri Sep 08 12:04:06 2017 +0200 @@ -0,0 +1,171 @@ + 'theme_test.inc', + 'variables' => array('foo' => ''), + ); + $items['theme_test_template_test'] = array( + 'template' => 'theme_test.template_test', + ); + $items['theme_test_template_test_2'] = array( + 'template' => 'theme_test.template_test', + ); + $items['theme_test_foo'] = array( + 'variables' => array('foo' => NULL), + ); + return $items; +} + +/** + * Implements hook_system_theme_info(). + */ +function theme_test_system_theme_info() { + $themes['test_theme'] = drupal_get_path('module', 'theme_test') . '/themes/test_theme/test_theme.info'; + $themes['test_basetheme'] = drupal_get_path('module', 'theme_test') . '/themes/test_basetheme/test_basetheme.info'; + $themes['test_subtheme'] = drupal_get_path('module', 'theme_test') . '/themes/test_subtheme/test_subtheme.info'; + $themes['test_theme_nyan_cat'] = drupal_get_path('module', 'theme_test') . '/themes/test_theme_nyan_cat/test_theme_nyan_cat.info'; + return $themes; +} + +/** + * Implements hook_system_theme_engine_info(). + */ +function theme_test_system_theme_engine_info() { + $theme_engines['nyan_cat'] = drupal_get_path('module', 'theme_test') . '/themes/engines/nyan_cat/nyan_cat.engine'; + return $theme_engines; +} + +/** + * Implements hook_menu(). + */ +function theme_test_menu() { + $items['theme-test/suggestion'] = array( + 'title' => 'Suggestion', + 'page callback' => '_theme_test_suggestion', + 'access arguments' => array('access content'), + '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, + 'type' => MENU_CALLBACK, + ); + $items['theme-test/drupal-add-region-content'] = array( + 'page callback' => '_theme_test_drupal_add_region_content', + 'access callback' => TRUE, + 'type' => MENU_CALLBACK, + ); + $items['theme-test/engine-info-test'] = array( + 'description' => "Serves a simple page rendered using a Nyan Cat theme engine template.", + 'page callback' => '_theme_test_engine_info_test', + 'access callback' => TRUE, + 'type' => MENU_CALLBACK, + ); + return $items; +} + +/** + * Implements hook_init(). + */ +function theme_test_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(); +} + +/** + * Menu callback for testing themed output generated in hook_init(). + */ +function theme_test_hook_init_page_callback() { + return $GLOBALS['theme_test_output']; +} + +/** + * Custom theme callback. + */ +function _theme_custom_theme() { + return 'test_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() { + return theme(array('theme_test__suggestion', 'theme_test'), array()); +} + +/** + * Page callback, calls drupal_add_region_content. + */ +function _theme_test_drupal_add_region_content() { + drupal_add_region_content('content', 'World'); + return 'Hello'; +} + +/** + * Serves a simple page renderered using a Nyan Cat theme engine template. + */ +function _theme_test_engine_info_test() { + return array( + '#markup' => theme('theme_test_template_test'), + ); +} + +/** + * Theme function for testing theme('theme_test_foo'). + */ +function theme_theme_test_foo($variables) { + return $variables['foo']; +}