diff --git a/core/includes/theme.inc b/core/includes/theme.inc index 0938b57..aa76705 100644 --- a/core/includes/theme.inc +++ b/core/includes/theme.inc @@ -1263,7 +1263,7 @@ function theme_invoke($hook, &$args = array()) { foreach ($theme_keys as $theme_key) { $function = $theme_key . '_' . $hook; if (function_exists($function)) { - return call_user_func_array($function, $args); + call_user_func_array($function, $args); } } } diff --git a/core/modules/system/lib/Drupal/system/Tests/Theme/ThemePrepareTest.php b/core/modules/system/lib/Drupal/system/Tests/Theme/ThemePrepareTest.php index 089ab48..9614924 100644 --- a/core/modules/system/lib/Drupal/system/Tests/Theme/ThemePrepareTest.php +++ b/core/modules/system/lib/Drupal/system/Tests/Theme/ThemePrepareTest.php @@ -36,31 +36,162 @@ function setUp() { function testThemePrepare() { $this->drupalGet('theme-test/prepare'); - $this->assertRaw('

moduleVariable1: Drupal\theme_test\ThemeTestController::prepare|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

moduleVariable2: Drupal\theme_test\ThemeTestController::prepare|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

moduleVariableSuggestion1: Drupal\theme_test\ThemeTestController::prepare|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

moduleVariableSuggestion2: Drupal\theme_test\ThemeTestController::prepare|theme_test_theme_prepare_theme_test_prepare__implemented|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|test_theme_theme_prepare_theme_test_prepare__implemented|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter|theme_test_theme_prepare_theme_test_prepare__implemented_alter

'); - $this->assertRaw('

moduleVariableSuggestion3: Drupal\theme_test\ThemeTestController::prepare|theme_test_theme_prepare_theme_test_prepare__implemented__extended|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|test_theme_theme_prepare_theme_test_prepare__implemented__extended|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter|theme_test_theme_prepare_theme_test_prepare__implemented__extended_alter

'); - $this->assertRaw('

moduleElement1: Drupal\theme_test\ThemeTestController::prepare|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

moduleInjectedVariable1: theme_test_theme_prepare|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

moduleInjectedVariable2: theme_test_theme_prepare_theme_test_prepare_element|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

themeInjectedVariable1: test_theme_theme_prepare|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

moduleInjectedVariable3: theme_test_theme_prepare_theme_test_prepare_element_alter|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

moduleElementSuggestion1: Drupal\theme_test\ThemeTestController::prepare|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

moduleInjectedVariable1: theme_test_theme_prepare|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

moduleInjectedVariable2: theme_test_theme_prepare_theme_test_prepare_element|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

themeInjectedVariable1: test_theme_theme_prepare|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

moduleInjectedVariable3: theme_test_theme_prepare_theme_test_prepare_element_alter|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

moduleElementSuggestion2: Drupal\theme_test\ThemeTestController::prepare|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

moduleInjectedVariable1: theme_test_theme_prepare|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

moduleInjectedVariable2: theme_test_theme_prepare_theme_test_prepare_element|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

themeInjectedVariable1: test_theme_theme_prepare|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

moduleInjectedVariable3: theme_test_theme_prepare_theme_test_prepare_element_alter|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

moduleElementSuggestion3: Drupal\theme_test\ThemeTestController::prepare|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

moduleInjectedVariable1: theme_test_theme_prepare|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

moduleInjectedVariable2: theme_test_theme_prepare_theme_test_prepare_element|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

themeInjectedVariable1: test_theme_theme_prepare|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); - $this->assertRaw('

moduleInjectedVariable3: theme_test_theme_prepare_theme_test_prepare_element_alter|test_theme_theme_prepare|test_theme_theme_prepare_theme_test_prepare|theme_test_theme_prepare_alter|test_theme_theme_prepare_alter

'); + + $this->assertRaw('

moduleVariable1: Drupal\theme_test\ThemeTestController::prepare
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

moduleVariable2: Drupal\theme_test\ThemeTestController::prepare
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

moduleVariableSuggestion1: Drupal\theme_test\ThemeTestController::prepare
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

moduleVariableSuggestion2: Drupal\theme_test\ThemeTestController::prepare
+theme_test_theme_prepare_theme_test_prepare__implemented
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+test_theme_theme_prepare_theme_test_prepare__implemented
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter
+theme_test_theme_prepare_theme_test_prepare__implemented_alter

'); + + $this->assertRaw('

moduleVariableSuggestion3: Drupal\theme_test\ThemeTestController::prepare
+theme_test_theme_prepare_theme_test_prepare__implemented__extended
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+test_theme_theme_prepare_theme_test_prepare__implemented__extended
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter
+theme_test_theme_prepare_theme_test_prepare__implemented__extended_alter

'); + + $this->assertRaw('

moduleElement1: Drupal\theme_test\ThemeTestController::prepare
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

moduleInjectedVariable1: theme_test_theme_prepare
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

moduleInjectedVariable2: theme_test_theme_prepare_theme_test_prepare_element
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

themeInjectedVariable1: test_theme_theme_prepare
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

moduleInjectedVariable3: theme_test_theme_prepare_theme_test_prepare_element_alter
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

moduleElementSuggestion1: Drupal\theme_test\ThemeTestController::prepare
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

moduleInjectedVariable1: theme_test_theme_prepare
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

moduleInjectedVariable2: theme_test_theme_prepare_theme_test_prepare_element
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

themeInjectedVariable1: test_theme_theme_prepare
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

moduleInjectedVariable3: theme_test_theme_prepare_theme_test_prepare_element_alter
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

moduleElementSuggestion2: Drupal\theme_test\ThemeTestController::prepare
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

moduleInjectedVariable1: theme_test_theme_prepare
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

moduleInjectedVariable2: theme_test_theme_prepare_theme_test_prepare_element
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

themeInjectedVariable1: test_theme_theme_prepare
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

moduleInjectedVariable3: theme_test_theme_prepare_theme_test_prepare_element_alter
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

moduleElementSuggestion3: Drupal\theme_test\ThemeTestController::prepare
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

moduleInjectedVariable1: theme_test_theme_prepare
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

moduleInjectedVariable2: theme_test_theme_prepare_theme_test_prepare_element
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

themeInjectedVariable1: test_theme_theme_prepare
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); + + $this->assertRaw('

moduleInjectedVariable3: theme_test_theme_prepare_theme_test_prepare_element_alter
+test_theme_theme_prepare
+test_theme_theme_prepare_theme_test_prepare
+theme_test_theme_prepare_alter
+test_theme_theme_prepare_alter

'); } } diff --git a/core/modules/system/tests/modules/theme_test/theme_test.module b/core/modules/system/tests/modules/theme_test/theme_test.module index d771310..e0b2632 100644 --- a/core/modules/system/tests/modules/theme_test/theme_test.module +++ b/core/modules/system/tests/modules/theme_test/theme_test.module @@ -209,7 +209,7 @@ function theme_test_theme_prepare(&$variables, $hook) { */ function theme_test_theme_prepare_alter(&$variables, $hook) { if ($hook === 'theme_test_prepare') { - $variables['value'] .= '|' . __FUNCTION__; + $variables['value'] .= "
\n" . __FUNCTION__; } } @@ -217,28 +217,28 @@ function theme_test_theme_prepare_alter(&$variables, $hook) { * Implements hook_theme_prepare_THEME_HOOK__SUGGESTION(). */ function theme_test_theme_prepare_theme_test_prepare__implemented(&$variables) { - $variables['value'] .= '|' . __FUNCTION__; + $variables['value'] .= "
\n" . __FUNCTION__; } /** * Implements hook_theme_prepare_THEME_HOOK__SUGGESTION_alter(). */ function theme_test_theme_prepare_theme_test_prepare__implemented_alter(&$variables) { - $variables['value'] .= '|' . __FUNCTION__; + $variables['value'] .= "
\n" . __FUNCTION__; } /** * Implements hook_theme_prepare_THEME_HOOK__SUGGESTION__SUGGESTION(). */ function theme_test_theme_prepare_theme_test_prepare__implemented__extended(&$variables) { - $variables['value'] .= '|' . __FUNCTION__; + $variables['value'] .= "
\n" . __FUNCTION__; } /** * Implements hook_theme_prepare_THEME_HOOK__SUGGESTION__SUGGESTION_alter(). */ function theme_test_theme_prepare_theme_test_prepare__implemented__extended_alter(&$variables) { - $variables['value'] .= '|' . __FUNCTION__; + $variables['value'] .= "
\n" . __FUNCTION__; } /** @@ -253,7 +253,7 @@ function theme_test_theme_prepare_theme_test_prepare_element(&$variables) { } /** - * Implements hook_theme_prepare_THEME_HOOK(). + * Implements hook_theme_prepare_THEME_HOOK_alter(). */ function theme_test_theme_prepare_theme_test_prepare_element_alter(&$variables) { $variables['element']['moduleInjectedVariable3'] = array( diff --git a/core/modules/system/tests/themes/test_theme/test_theme.theme b/core/modules/system/tests/themes/test_theme/test_theme.theme index 3ed2b73..99eb007 100644 --- a/core/modules/system/tests/themes/test_theme/test_theme.theme +++ b/core/modules/system/tests/themes/test_theme/test_theme.theme @@ -75,7 +75,7 @@ function test_theme_theme_test_function_suggestions__module_override($variables) */ function test_theme_theme_prepare(&$variables, $hook) { if ($hook === 'theme_test_prepare') { - $variables['value'] .= '|' . __FUNCTION__; + $variables['value'] .= "
\n" . __FUNCTION__; } elseif ($hook === 'theme_test_prepare_element') { $variables['element']['themeInjectedVariable1'] = array( @@ -91,7 +91,7 @@ function test_theme_theme_prepare(&$variables, $hook) { */ function test_theme_theme_prepare_alter(&$variables, $hook) { if ($hook === 'theme_test_prepare') { - $variables['value'] .= '|' . __FUNCTION__; + $variables['value'] .= "
\n" . __FUNCTION__; } } @@ -99,40 +99,40 @@ function test_theme_theme_prepare_alter(&$variables, $hook) { * Implements hook_theme_prepare_THEME_HOOK(). */ function test_theme_theme_prepare_theme_test_prepare(&$variables) { - $variables['value'] .= '|' . __FUNCTION__; + $variables['value'] .= "
\n" . __FUNCTION__; } /** * Implements hook_theme_prepare_THEME_HOOK_alter(). */ function test_theme_theme_prepare_theme_test_prepare_alter($variables) { - $variables['value'] .= '|' . __FUNCTION__; + $variables['value'] .= "
\n" . __FUNCTION__; } /** * Implements hook_theme_prepare_THEME_HOOK__SUGGESTION(). */ function test_theme_theme_prepare_theme_test_prepare__implemented($variables) { - $variables['value'] .= '|' . __FUNCTION__; + $variables['value'] .= "
\n" . __FUNCTION__; } /** * Implements hook_theme_prepare_THEME_HOOK__SUGGESTION_alter(). */ function test_theme_theme_prepare_theme_test_prepare__implemented_alter($variables) { - $variables['value'] .= '|' . __FUNCTION__; + $variables['value'] .= "
\n" . __FUNCTION__; } /** * Implements hook_theme_prepare_THEME_HOOK__SUGGESTION__SUGGESTION(). */ function test_theme_theme_prepare_theme_test_prepare__implemented__extended($variables) { - $variables['value'] .= '|' . __FUNCTION__; + $variables['value'] .= "
\n" . __FUNCTION__; } /** * Implements hook_theme_prepare_THEME_HOOK__SUGGESTION__SUGGESTION_alter(). */ function test_theme_theme_prepare_theme_test_prepare__implemented__extended_alter($variables) { - $variables['value'] .= '|' . __FUNCTION__; + $variables['value'] .= "
\n" . __FUNCTION__; }