diff --git a/core/modules/system/system.install b/core/modules/system/system.install index 0747f38..e7ac932 100644 --- a/core/modules/system/system.install +++ b/core/modules/system/system.install @@ -1220,54 +1220,49 @@ function system_update_8002() { $config_factory = \Drupal::configFactory(); /** @var \Drupal\Core\Extension\ThemeHandlerInterface $theme_handler */ $theme_handler = \Drupal::service('theme_handler'); - /** @var \Drupal\Core\Config\StorageInterface $config_storage */ - $config_storage = \Drupal::service('config.storage'); $custom_themes_installed = FALSE; $message = NULL; + $langcode = \Drupal::service('language_manager')->getCurrentLanguage()->getId(); $local_actions_default_settings = [ 'plugin' => 'system_local_actions_block', 'region' => 'content', - 'label' => 'Primary admin actions', + 'settings.label' => 'Primary admin actions', + 'settings.label_display' => 0, + 'settings.cache.max_age' => 0, 'visibility' => [], 'weight' => 0, - 'label_display' => 0, - 'cache' => [ - 'max_age' => 0, - ], + 'langcode' => $langcode, + 'dependencies.module' => ['system'] ]; $tabs_default_settings = [ 'plugin' => 'system_local_tasks_block', 'region' => 'content', - 'label' => 'Tabs', + 'settings.label' => 'Tabs', + 'settings.label_display' => 0, + 'settings.cache.max_age' => 0, 'visibility' => [], 'weight' => 0, - 'label_display' => 0, - 'cache' => [ - 'max_age' => 0, - ], + 'langcode' => $langcode, + 'dependencies.module' => ['system'], ]; foreach ($theme_handler->listInfo() as $theme) { $theme_name = $theme->getName(); - $block_storage = \Drupal::entityManager()->getStorage('block'); switch ($theme_name) { case 'bartik': - if (!$config_storage->exists('block.block.bartik_local_actions')) { - $values = [ - 'id' => 'bartik_local_actions', - 'theme' => 'bartik', - 'weight' => -1, - ] + $local_actions_default_settings; - $block_storage->create($values)->save(); - } - if (!$config_storage->exists('block.block.bartik_local_tasks')) { - $values = [ - 'id' => 'bartik_local_tasks', - 'theme' => 'bartik', - 'weight' => -7, - ] + $tabs_default_settings; - $block_storage->create($values)->save(); - } + $name = 'block.block.bartik_local_actions'; + $values = [ + 'id' => 'bartik_local_actions', + 'weight' => -1, + ] + $local_actions_default_settings; + _system_update_8002_create_block($name, $theme_name, $values); + + $name = 'block.block.bartik_local_tasks'; + $values = [ + 'id' => 'bartik_local_tasks', + 'weight' => -7, + ] + $tabs_default_settings; + _system_update_8002_create_block($name, $theme_name, $values); // Help region has been removed so all the blocks inside has to be moved // to content region. @@ -1293,58 +1288,45 @@ function system_update_8002() { break; case 'seven': - if (!$config_storage->exists('block.block.seven_local_actions')) { + $name = 'block.block.seven_local_actions'; $values = [ 'id' => 'seven_local_actions', - 'theme' => 'seven', 'weight' => -10, ] + $local_actions_default_settings; - $block_storage->create($values)->save(); - } - if (!$config_storage->exists('block.block.seven_primary_local_tasks')) { - $values = [ - 'region' => 'header', - 'id' => 'seven_primary_local_tasks', - 'theme' => 'seven', - 'label' => 'Primary tabs', - 'settings' => [ - 'primary' => TRUE, - 'secondary' => FALSE, - ], - ] + $tabs_default_settings; - $block_storage->create($values)->save(); - } - - if (!$config_storage->exists('block.block.seven_secondary_local_tasks')) { - $values = [ - 'region' => 'pre_content', - 'id' => 'seven_secondary_local_tasks', - 'theme' => 'seven', - 'label' => 'Secondary tabs', - 'settings' => [ - 'primary' => FALSE, - 'secondary' => TRUE, - ], - ] + $tabs_default_settings; - $block_storage->create($values)->save(); - } + _system_update_8002_create_block($name, $theme_name, $values); + + $name = 'block.block.seven_primary_local_tasks'; + $values = [ + 'region' => 'header', + 'id' => 'seven_primary_local_tasks', + 'settings.label' => 'Primary tabs', + 'settings.primary' => TRUE, + 'settings.secondary' => FALSE, + ] + $tabs_default_settings; + _system_update_8002_create_block($name, $theme_name, $values); + + $values = [ + 'region' => 'pre_content', + 'id' => 'seven_secondary_local_tasks', + 'settings.label' => 'Secondary tabs', + 'settings.primary' => FALSE, + 'settings.secondary' => TRUE, + ] + $tabs_default_settings; + _system_update_8002_create_block($name, $theme_name, $values); break; case 'stark': - if (!$config_storage->exists('block.block.stark_local_actions')) { - $values = [ - 'id' => 'stark_local_actions', - 'theme' => 'stark', - ] + $local_actions_default_settings; - $block_storage->create($values)->save(); - } - if (!$config_storage->exists('block.block.stark_local_tasks')) { - $values = [ - 'id' => 'stark_local_tasks', - 'theme' => 'stark', - ] + $tabs_default_settings; - $block_storage->create($values)->save(); - } + $name = 'block.block.stark_local_actions'; + $values = [ + 'id' => 'stark_local_actions', + ] + $local_actions_default_settings; + _system_update_8002_create_block($name, $theme_name, $values); + + $name = 'block.block.stark_local_tasks'; + $values = [ + 'id' => 'stark_local_tasks', + ] + $tabs_default_settings; + _system_update_8002_create_block($name, $theme_name, $values); break; case 'classy': @@ -1353,22 +1335,19 @@ function system_update_8002() { default: $custom_themes_installed = TRUE; - if (!$config_storage->exists(sprintf('block.block.%s_local_actions', $theme_name))) { - $values = [ - 'id' => sprintf('%s_local_actions', $theme_name), - 'theme' => $theme_name, - 'weight' => -10, - ] + $local_actions_default_settings; - $block_storage->create($values)->save(); - } - if (!$config_storage->exists(sprintf('block.block.%s_local_tasks', $theme_name))) { - $values = [ - 'id' => sprintf('%s_local_tasks', $theme_name), - 'theme' => $theme_name, - 'weight' => -20, - ] + $tabs_default_settings; - $block_storage->create($values)->save(); - } + $name = sprintf('block.block.%s_local_actions', $theme_name); + $values = [ + 'id' => sprintf('%s_local_actions', $theme_name), + 'weight' => -10, + ] + $local_actions_default_settings; + _system_update_8002_create_block($name, $theme_name, $values); + + $name = sprintf('block.block.%s_local_tasks', $theme_name); + $values = [ + 'id' => sprintf('%s_local_tasks', $theme_name), + 'weight' => -20, + ] + $tabs_default_settings; + _system_update_8002_create_block($name, $theme_name, $values); break; } } @@ -1381,5 +1360,28 @@ function system_update_8002() { } /** + * Helper function to create block configuration objects for the update. + * + * @param string $name + * The name of the config object. + * @param string $theme_name + * The name of the theme the block is associated with. + * @param array $values + * The block config values. + */ +function _system_update_8002_create_block($name, $theme_name, array $values) { + if (!\Drupal::service('config.storage')->exists($name)) { + $block = \Drupal::configFactory()->getEditable($name); + $values['uuid'] = \Drupal::service('uuid')->generate(); + $values['theme'] = $theme_name; + $values['dependencies.theme'] = [$theme_name]; + foreach ($values as $key => $value) { + $block->set($key, $value); + } + $block->save(); + } +} + +/** * @} End of "addtogroup updates-8.0.0-beta". */