diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc index 906a7c1..fc91d43 100644 --- a/core/includes/bootstrap.inc +++ b/core/includes/bootstrap.inc @@ -2495,6 +2495,12 @@ function drupal_container(Container $new_container = NULL, $rebuild = FALSE) { ->addArgument(new Reference('config.storage')) ->addArgument(new Reference('dispatcher')); + $container + ->register('theme_config.storage', 'Drupal\Core\Config\NullStorage'); + $container->register('theme_config.factory', 'Drupal\Core\Config\ConfigFactory') + ->addArgument(new Reference('theme_config.storage')) + ->addArgument(new Reference('dispatcher')); + // Register staging configuration storage. $container ->register('config.storage.staging', 'Drupal\Core\Config\FileStorage') diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc index 3b69ce3..309a70c 100644 --- a/core/includes/install.core.inc +++ b/core/includes/install.core.inc @@ -310,7 +310,11 @@ function install_begin_request(&$install_state) { $container->register('config.factory', 'Drupal\Core\Config\ConfigFactory') ->addArgument(new Reference('config.storage')) ->addArgument(new Reference('dispatcher')); - + $container + ->register('theme_config.storage', 'Drupal\Core\Config\NullStorage'); + $container->register('theme_config.factory', 'Drupal\Core\Config\ConfigFactory') + ->addArgument(new Reference('theme_config.storage')) + ->addArgument(new Reference('dispatcher')); drupal_container($container); } diff --git a/core/includes/theme.inc b/core/includes/theme.inc index 2d1d375..3d955d9 100644 --- a/core/includes/theme.inc +++ b/core/includes/theme.inc @@ -8,8 +8,10 @@ * customized by user themes. */ -use Drupal\Core\Utility\ThemeRegistry; +use Drupal\Component\Utility\NestedArray; +use Drupal\Core\Config\Config; use Drupal\Core\Template\Attribute; +use Drupal\Core\Utility\ThemeRegistry; /** * @defgroup content_flags Content markers @@ -1253,7 +1255,6 @@ function drupal_find_theme_templates($cache, $extension, $path) { * * The final setting is obtained from the last value found in the following * sources: - * - the default global settings specified in this function * - the default theme-specific settings defined in any base theme's .info file * - the default theme-specific settings defined in the theme's .info file * - the saved values from the global theme settings form @@ -1278,23 +1279,11 @@ function theme_get_setting($setting_name, $theme = NULL) { } if (empty($cache[$theme])) { - // Set the default values for each global setting. - // To add new global settings, add their default values below, and then - // add form elements to system_theme_settings() in system.admin.inc. - $cache[$theme] = array( - 'default_logo' => 1, - 'logo_path' => '', - 'default_favicon' => 1, - 'favicon_path' => '', - // Use the IANA-registered MIME type for ICO files as default. - 'favicon_mimetype' => 'image/vnd.microsoft.icon', - ); - // Turn on all default features. - $features = _system_default_theme_features(); - foreach ($features as $feature) { - $cache[$theme]['toggle_' . $feature] = 1; - } - + // Create a config object that will merge $default_config, settings from the + // theme's info file, global theme configuration and the theme's + // configuration. This allows the use of CMI to manage the nested array of + // keys. Saving it could potentially offer performance improvements. + $cache[$theme] = drupal_container()->get('theme_config.factory')->get('cache.theme.' . $theme)->load(); // Get the values for the theme-specific settings from the .info files of // the theme and all its base themes. if ($theme) { @@ -1311,62 +1300,111 @@ function theme_get_setting($setting_name, $theme = NULL) { } foreach ($theme_keys as $theme_key) { if (!empty($themes[$theme_key]->info['settings'])) { - $cache[$theme] = array_merge($cache[$theme], $themes[$theme_key]->info['settings']); + $cache[$theme]->setData(NestedArray::mergeDeep($cache[$theme]->get(), $themes[$theme_key]->info['settings'])); } } } - // Get the saved global settings from the database. - $cache[$theme] = array_merge($cache[$theme], variable_get('theme_settings', array())); + // Get the global settings from configuration. + $cache[$theme]->setData(NestedArray::mergeDeep($cache[$theme]->get(), config('system.theme.global')->get())); if ($theme) { - // Get the saved theme-specific settings from the database. - $cache[$theme] = array_merge($cache[$theme], variable_get('theme_' . $theme . '_settings', array())); + // Get the saved theme-specific settings from the configuration system. + $cache[$theme]->setData(NestedArray::mergeDeep($cache[$theme]->get(), config($theme . '.settings')->get())); // If the theme does not support a particular feature, override the global // setting and set the value to NULL. + //$supports = $cache[$theme]->get('supports'); if (!empty($theme_object->info['features'])) { - foreach ($features as $feature) { + foreach (_system_default_theme_features() as $feature) { if (!in_array($feature, $theme_object->info['features'])) { - $cache[$theme]['toggle_' . $feature] = NULL; + $cache[$theme]->set('features.' . $feature, NULL); } } } // Generate the path to the logo image. - if ($cache[$theme]['toggle_logo']) { - if ($cache[$theme]['default_logo']) { - $cache[$theme]['logo'] = file_create_url(dirname($theme_object->filename) . '/logo.png'); + if ($cache[$theme]->get('features.logo')) { + $logo_path = $cache[$theme]->get('logo.path'); + if ($cache[$theme]->get('logo.use_default')) { + $cache[$theme]->set('logo.url', file_create_url(dirname($theme_object->filename) . '/logo.png')); } - elseif ($cache[$theme]['logo_path']) { - $cache[$theme]['logo'] = file_create_url($cache[$theme]['logo_path']); + elseif ($logo_path) { + $cache[$theme]->set('logo.url', file_create_url($logo_path)); } } // Generate the path to the favicon. - if ($cache[$theme]['toggle_favicon']) { - if ($cache[$theme]['default_favicon']) { + if ($cache[$theme]->get('features.favicon')) { + $favicon_path = $cache[$theme]->get('favicon.path'); + if ($cache[$theme]->get('favicon.use_default')) { if (file_exists($favicon = dirname($theme_object->filename) . '/favicon.ico')) { - $cache[$theme]['favicon'] = file_create_url($favicon); + $cache[$theme]->set('favicon.url', file_create_url($favicon)); } else { - $cache[$theme]['favicon'] = file_create_url('core/misc/favicon.ico'); + $cache[$theme]->set('favicon.url', file_create_url('core/misc/favicon.ico')); } } - elseif ($cache[$theme]['favicon_path']) { - $cache[$theme]['favicon'] = file_create_url($cache[$theme]['favicon_path']); + elseif ($favicon_path) { + $cache[$theme]->set('favicon.url', file_create_url($favicon_path)); } else { - $cache[$theme]['toggle_favicon'] = FALSE; + $cache[$theme]->set('features.favicon', FALSE); } } } } - return isset($cache[$theme][$setting_name]) ? $cache[$theme][$setting_name] : NULL; + return $cache[$theme]->get($setting_name); } /** + * Converts format of old theme-configuration to the format of yml-configuration. + * + * @todo D8: Move this function to update.inc after updating the theme settings + * form to use the new configuration object keys. + * + * @param array $theme_settings + * An array of theme settings from system setting form or a Drupal 7 variable. + * @param Config $config + * The configuration object to update. + * + * @return + * The Config object with updated data. + */ +function theme_settings_convert_to_config(array $theme_settings, Config $config) { + foreach ($theme_settings as $key => $value) { + if ($key == 'logo') { + $config->set('logo.url', $value); + } + else if ($key == 'default_logo') { + $config->set('logo.use_default', $value); + } + else if ($key == 'logo_path') { + $config->set('logo.path', $value); + } + else if ($key == 'favicon') { + $config->set('favicon.url', $value); + } + else if ($key == 'default_favicon') { + $config->set('favicon.use_default', $value); + } + else if ($key == 'favicon_path') { + $config->set('favicon.path', $value); + } + else if ($key == 'favicon_mimetype') { + $config->set('favicon.mimetype', $value); + } + else if (substr($key, 0, 7) == 'toggle_') { + $config->set('features.' . drupal_substr($key, 7), $value); + } + else if (!in_array($key, array('theme', 'logo_upload'))) { + $config->set($key, $value); + } + } + return $config; +} +/** * Render a system default template, which is essentially a PHP template. * * @param $template_file @@ -2430,9 +2468,9 @@ function template_preprocess_html(&$variables) { $variables['html_attributes']['dir'] = $language_interface->direction ? 'rtl' : 'ltr'; // Add favicon. - if (theme_get_setting('toggle_favicon')) { - $favicon = theme_get_setting('favicon'); - $type = theme_get_setting('favicon_mimetype'); + if (theme_get_setting('features.favicon')) { + $favicon = theme_get_setting('favicon.url'); + $type = theme_get_setting('favicon.mimetype'); drupal_add_html_head_link(array('rel' => 'shortcut icon', 'href' => drupal_strip_dangerous_protocols($favicon), 'type' => $type)); } @@ -2538,12 +2576,12 @@ function template_preprocess_page(&$variables) { $variables['feed_icons'] = drupal_get_feeds(); $variables['language'] = $language_interface; $variables['language']->dir = $language_interface->direction ? 'rtl' : 'ltr'; - $variables['logo'] = theme_get_setting('logo'); - $variables['main_menu'] = theme_get_setting('toggle_main_menu') ? menu_main_menu() : array(); - $variables['secondary_menu'] = theme_get_setting('toggle_secondary_menu') ? menu_secondary_menu() : array(); + $variables['logo'] = theme_get_setting('logo.url'); + $variables['main_menu'] = theme_get_setting('features.main_menu') ? menu_main_menu() : array(); + $variables['secondary_menu'] = theme_get_setting('features.secondary_menu') ? menu_secondary_menu() : array(); $variables['action_links'] = menu_local_actions(); - $variables['site_name'] = (theme_get_setting('toggle_name') ? check_plain($site_config->get('name')) : ''); - $variables['site_slogan'] = (theme_get_setting('toggle_slogan') ? filter_xss_admin($site_config->get('slogan')) : ''); + $variables['site_name'] = (theme_get_setting('features.name') ? check_plain($site_config->get('name')) : ''); + $variables['site_slogan'] = (theme_get_setting('features.slogan') ? filter_xss_admin($site_config->get('slogan')) : ''); $variables['tabs'] = menu_local_tabs(); if ($node = menu_get_object()) { @@ -2700,9 +2738,9 @@ function template_preprocess_maintenance_page(&$variables) { $regions = $theme_data[$theme]->info['regions']; // Add favicon - if (theme_get_setting('toggle_favicon')) { - $favicon = theme_get_setting('favicon'); - $type = theme_get_setting('favicon_mimetype'); + if (theme_get_setting('features.favicon')) { + $favicon = theme_get_setting('favicon.url'); + $type = theme_get_setting('favicon.mimetype'); drupal_add_html_head_link(array('rel' => 'shortcut icon', 'href' => drupal_strip_dangerous_protocols($favicon), 'type' => $type)); } @@ -2749,12 +2787,12 @@ function template_preprocess_maintenance_page(&$variables) { $variables['help'] = ''; $variables['language'] = $language_interface; $variables['language']->dir = $language_interface->direction ? 'rtl' : 'ltr'; - $variables['logo'] = theme_get_setting('logo'); + $variables['logo'] = theme_get_setting('logo.url'); $variables['messages'] = $variables['show_messages'] ? theme('status_messages') : ''; $variables['main_menu'] = array(); $variables['secondary_menu'] = array(); - $variables['site_name'] = (theme_get_setting('toggle_name') ? check_plain($site_name) : ''); - $variables['site_slogan'] = (theme_get_setting('toggle_slogan') ? filter_xss_admin($site_slogan) : ''); + $variables['site_name'] = (theme_get_setting('features.name') ? check_plain($site_name) : ''); + $variables['site_slogan'] = (theme_get_setting('features.slogan') ? filter_xss_admin($site_slogan) : ''); $variables['tabs'] = ''; $variables['title'] = drupal_get_title(); diff --git a/core/includes/update.inc b/core/includes/update.inc index 9dd8456..aff035c 100644 --- a/core/includes/update.inc +++ b/core/includes/update.inc @@ -1044,19 +1044,24 @@ function update_variable_del($name) { * @endcode * This would migrate the value contained in variable name 'old_variable' into * the data key 'new_config.sub_key' of the configuration object $config_name. + * To only import configuration for an already enabled module pass an empty + * array. + * @param string $type + * Indicates the type of extension providing the configuration. Either + * 'module' or 'theme'. */ -function update_variables_to_config($config_name, array $variable_map) { +function update_variables_to_config($config_name, array $variable_map, $type = 'module') { // Build the new configuration object. - // This potentially loads an existing configuration object, in case another - // update function migrated configuration values into $config_name already. + // This potentially loads an existing configuration object if another update + // function has already migrated configuration values into $config_name. $config = config($config_name); $original_data = $config->get(); - // Extract the module namespace/owner from the configuration object name. - $module = strtok($config_name, '.'); + // Extract the module or theme namespace/owner from the configuration object name. + $name = strtok($config_name, '.'); // Load and set default configuration values. - $file = new FileStorage(drupal_get_path('module', $module) . '/config'); + $file = new FileStorage(drupal_get_path($type, $name) . '/config'); if (!$file->exists($config_name)) { throw new ConfigException("Default configuration file $config_name for $module extension not found but is required to exist."); } @@ -1074,26 +1079,30 @@ function update_variables_to_config($config_name, array $variable_map) { // Apply the default values. $config->setData($data); - // Fetch existing variables. - $variables = db_query('SELECT name, value FROM {variable} WHERE name IN (:variables)', array(':variables' => array_keys($variable_map)))->fetchAllKeyed(); - - // Set configuration values according to the provided variable mapping. - foreach ($variable_map as $variable_name => $config_key) { - // This function migrates variables regardless of their value, including - // NULL values. Any possibly required customizations need to be performed - // manually, either via variable_set() before calling this function or via - // config() after calling this function. - if (isset($variables[$variable_name])) { - $value = unserialize($variables[$variable_name]); - $config->set($config_key, $value); + if (count($variable_map)) { + // Fetch existing variables. + $variables = db_query('SELECT name, value FROM {variable} WHERE name IN (:variables)', array(':variables' => array_keys($variable_map)))->fetchAllKeyed(); + + // Set configuration values according to the provided variable mapping. + foreach ($variable_map as $variable_name => $config_key) { + // This function migrates variables regardless of their value, including + // NULL values. Any possibly required customizations need to be performed + // manually, either via variable_set() before calling this function or via + // config() after calling this function. + if (isset($variables[$variable_name])) { + $value = unserialize($variables[$variable_name]); + $config->set($config_key, $value); + } } } // Save the configuration object. $config->save(); - // Delete the migrated variables. - db_delete('variable')->condition('name', array_keys($variable_map), 'IN')->execute(); + if (count($variable_map)) { + // Delete the migrated variables. + db_delete('variable')->condition('name', array_keys($variable_map), 'IN')->execute(); + } } /** diff --git a/core/modules/comment/comment.module b/core/modules/comment/comment.module index 1b1dd79..259560e 100644 --- a/core/modules/comment/comment.module +++ b/core/modules/comment/comment.module @@ -1757,7 +1757,7 @@ function template_preprocess_comment(&$variables) { $variables['changed'] = format_date($comment->changed); $variables['new'] = !empty($comment->new) ? t('new') : ''; - $variables['user_picture'] = theme_get_setting('toggle_comment_user_picture') ? theme('user_picture', array('account' => $comment)) : ''; + $variables['user_picture'] = theme_get_setting('features.comment_user_picture') ? theme('user_picture', array('account' => $comment)) : ''; $variables['signature'] = $comment->signature; $uri = $comment->uri(); diff --git a/core/modules/node/node.module b/core/modules/node/node.module index 7add837..c681d71 100644 --- a/core/modules/node/node.module +++ b/core/modules/node/node.module @@ -1381,7 +1381,7 @@ function template_preprocess_node(&$variables) { if (variable_get('node_submitted_' . $node->type, TRUE)) { $variables['display_submitted'] = TRUE; $variables['submitted'] = t('Submitted by !username on !datetime', array('!username' => $variables['name'], '!datetime' => $variables['date'])); - $variables['user_picture'] = theme_get_setting('toggle_node_user_picture') ? theme('user_picture', array('account' => $node)) : ''; + $variables['user_picture'] = theme_get_setting('features.node_user_picture') ? theme('user_picture', array('account' => $node)) : ''; } else { $variables['display_submitted'] = FALSE; diff --git a/core/modules/system/config/system.theme.global.yml b/core/modules/system/config/system.theme.global.yml new file mode 100644 index 0000000..fca8fd2 --- /dev/null +++ b/core/modules/system/config/system.theme.global.yml @@ -0,0 +1,19 @@ +favicon: + mimetype: image/vnd.microsoft.icon + path: '' + url: '' + use_default: '1' +features: + comment_user_picture: '1' + comment_user_verification: '1' + favicon: '1' + logo: '1' + name: '1' + node_user_picture: '1' + main_menu: '1' + secondary_menu: '1' + slogan: '1' +logo: + path: '' + url: '' + use_default: '1' diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc index 2bf4343..fa55a1f 100644 --- a/core/modules/system/system.admin.inc +++ b/core/modules/system/system.admin.inc @@ -8,6 +8,7 @@ use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; +use Drupal\Component\Utility\NestedArray; /** * Menu callback; Provide the administration overview page. @@ -379,20 +380,24 @@ function system_theme_default() { * @return * The form structure. * @ingroup forms + * @see system_theme_settings_validate() * @see system_theme_settings_submit() */ function system_theme_settings($form, &$form_state, $key = '') { // Default settings are defined in theme_get_setting() in includes/theme.inc if ($key) { $var = 'theme_' . $key . '_settings'; + $config_key = $key . '.settings'; $themes = list_themes(); $features = $themes[$key]->info['features']; } else { $var = 'theme_settings'; + $config_key = 'system.theme.global'; } $form['var'] = array('#type' => 'hidden', '#value' => $var); + $form['config_key'] = array('#type' => 'hidden', '#value' => $config_key); // Toggle settings $toggles = array( @@ -425,7 +430,7 @@ function system_theme_settings($form, &$form_state, $key = '') { ); foreach ($toggles as $name => $title) { if ((!$key) || in_array($name, $features)) { - $form['theme_settings']['toggle_' . $name] = array('#type' => 'checkbox', '#title' => $title, '#default_value' => theme_get_setting('toggle_' . $name, $key)); + $form['theme_settings']['toggle_' . $name] = array('#type' => 'checkbox', '#title' => $title, '#default_value' => theme_get_setting('features.' . $name, $key)); // Disable checkboxes for features not supported in the current configuration. if (isset($disabled['toggle_' . $name])) { $form['theme_settings']['toggle_' . $name]['#disabled'] = TRUE; @@ -449,7 +454,7 @@ function system_theme_settings($form, &$form_state, $key = '') { $form['logo']['default_logo'] = array( '#type' => 'checkbox', '#title' => t('Use the default logo supplied by the theme'), - '#default_value' => theme_get_setting('default_logo', $key), + '#default_value' => theme_get_setting('logo.use_default', $key), '#tree' => FALSE, ); $form['logo']['settings'] = array( @@ -464,7 +469,7 @@ function system_theme_settings($form, &$form_state, $key = '') { $form['logo']['settings']['logo_path'] = array( '#type' => 'textfield', '#title' => t('Path to custom logo'), - '#default_value' => theme_get_setting('logo_path', $key), + '#default_value' => theme_get_setting('logo.path', $key), ); $form['logo']['settings']['logo_upload'] = array( '#type' => 'file', @@ -483,7 +488,7 @@ function system_theme_settings($form, &$form_state, $key = '') { $form['favicon']['default_favicon'] = array( '#type' => 'checkbox', '#title' => t('Use the default shortcut icon supplied by the theme'), - '#default_value' => theme_get_setting('default_favicon', $key), + '#default_value' => theme_get_setting('favicon.use_default', $key), ); $form['favicon']['settings'] = array( '#type' => 'container', @@ -497,7 +502,7 @@ function system_theme_settings($form, &$form_state, $key = '') { $form['favicon']['settings']['favicon_path'] = array( '#type' => 'textfield', '#title' => t('Path to custom icon'), - '#default_value' => theme_get_setting('favicon_path', $key), + '#default_value' => theme_get_setting('favicon.path', $key), ); $form['favicon']['settings']['favicon_upload'] = array( '#type' => 'file', @@ -591,12 +596,7 @@ function system_theme_settings($form, &$form_state, $key = '') { } } - $form = system_settings_form($form); - // We don't want to call system_settings_form_submit(), so change #submit. - array_pop($form['#submit']); - $form['#submit'][] = 'system_theme_settings_submit'; - $form['#validate'][] = 'system_theme_settings_validate'; - return $form; + return system_config_form($form, $form_state); } /** @@ -691,14 +691,15 @@ function _system_theme_settings_validate_path($path) { * Process system_theme_settings form submissions. */ function system_theme_settings_submit($form, &$form_state) { + $config = config($form_state['values']['config_key']); + // Exclude unnecessary elements before saving. form_state_values_clean($form_state); - $values = $form_state['values']; + $key = $form_state['values']['var']; + unset($form_state['values']['var']); + unset($form_state['values']['config_key']); - // Extract the name of the theme from the submitted form values, then - // remove it from the array so that it is not saved as part of the variable. - $key = $values['var']; - unset($values['var']); + $values = $form_state['values']; // If the user uploaded a new logo or favicon, save it to a permanent location // and use it in place of the default theme-provided file. @@ -732,8 +733,7 @@ function system_theme_settings_submit($form, &$form_state) { } } - variable_set($key, $values); - drupal_set_message(t('The configuration options have been saved.')); + theme_settings_convert_to_config($values, $config)->save(); cache_invalidate(array('content' => TRUE)); } diff --git a/core/modules/system/system.install b/core/modules/system/system.install index ac983aa..c043d7e 100644 --- a/core/modules/system/system.install +++ b/core/modules/system/system.install @@ -1894,6 +1894,30 @@ function system_update_8019() { } /** + * Move system theme settings from variables to config. + */ +function system_update_8020() { + // Build a list of themes to convert and install default config if provided. + $theme_settings_to_config_map = array('theme_settings' => 'system.theme.global'); + update_variables_to_config('system.theme.global', array(), 'module'); + $themes = list_themes(); + foreach ($themes as $theme) { + $theme_settings_to_config_map['theme_' . $theme->name . '_settings'] = $theme->name . '.settings'; + update_variables_to_config($theme->name . '.settings', array(), 'theme'); + } + + // Converts array of theme settings from Drupal 7's variable system to Drupal + // 8's configuration management system. + foreach ($theme_settings_to_config_map as $variable => $config_name) { + $config = config($config_name); + $theme_settings = update_variable_get($variable); + if (!empty($theme_settings)) { + theme_settings_convert_to_config($theme_settings, $config)->save(); + } + } +} + +/** * @} End of "defgroup updates-7.x-to-8.x". * The next series of updates should start at 9000. */ diff --git a/core/modules/system/theme.api.php b/core/modules/system/theme.api.php index b98132e..3693b97 100644 --- a/core/modules/system/theme.api.php +++ b/core/modules/system/theme.api.php @@ -87,7 +87,7 @@ function hook_form_system_theme_settings_alter(&$form, &$form_state) { $form['toggle_breadcrumb'] = array( '#type' => 'checkbox', '#title' => t('Display the breadcrumb'), - '#default_value' => theme_get_setting('toggle_breadcrumb'), + '#default_value' => theme_get_setting('features.breadcrumb'), '#description' => t('Show a trail of links from the homepage to the current page.'), ); } diff --git a/core/modules/user/user.module b/core/modules/user/user.module index 9dd47da..6375f80 100644 --- a/core/modules/user/user.module +++ b/core/modules/user/user.module @@ -987,7 +987,7 @@ function template_preprocess_username(&$variables) { $variables['extra'] = ''; if (empty($account->uid)) { $variables['uid'] = 0; - if (theme_get_setting('toggle_comment_user_verification')) { + if (theme_get_setting('features.comment_user_verification')) { $variables['extra'] = ' (' . t('not verified') . ')'; } } diff --git a/core/themes/bartik/bartik.info b/core/themes/bartik/bartik.info index c0c206d..06d1928 100644 --- a/core/themes/bartik/bartik.info +++ b/core/themes/bartik/bartik.info @@ -29,5 +29,3 @@ regions[footer_secondcolumn] = Footer second column regions[footer_thirdcolumn] = Footer third column regions[footer_fourthcolumn] = Footer fourth column regions[footer] = Footer - -settings[shortcut_module_link] = 0 diff --git a/core/themes/bartik/color/color.inc b/core/themes/bartik/color/color.inc index 50ce731..f70450c 100644 --- a/core/themes/bartik/color/color.inc +++ b/core/themes/bartik/color/color.inc @@ -6,7 +6,7 @@ */ // Put the logo path into JavaScript for the live preview. -drupal_add_js(array('color' => array('logo' => theme_get_setting('logo', 'bartik'))), 'setting'); +drupal_add_js(array('color' => array('logo' => theme_get_setting('logo.url', 'bartik'))), 'setting'); $info = array( // Available colors and color labels used in theme. diff --git a/core/themes/bartik/config/bartik.settings.yml b/core/themes/bartik/config/bartik.settings.yml new file mode 100644 index 0000000..67537ae --- /dev/null +++ b/core/themes/bartik/config/bartik.settings.yml @@ -0,0 +1 @@ +shortcut_module_link: '0' diff --git a/core/themes/bartik/template.php b/core/themes/bartik/template.php index 5373c92..b1dbb51 100644 --- a/core/themes/bartik/template.php +++ b/core/themes/bartik/template.php @@ -50,8 +50,8 @@ function bartik_process_page(&$variables) { } // Always print the site name and slogan, but if they are toggled off, we'll // just hide them visually. - $variables['hide_site_name'] = theme_get_setting('toggle_name') ? FALSE : TRUE; - $variables['hide_site_slogan'] = theme_get_setting('toggle_slogan') ? FALSE : TRUE; + $variables['hide_site_name'] = theme_get_setting('features.name') ? FALSE : TRUE; + $variables['hide_site_slogan'] = theme_get_setting('features.slogan') ? FALSE : TRUE; if ($variables['hide_site_name']) { // If toggle_name is FALSE, the site_name will be empty, so we rebuild it. $variables['site_name'] = check_plain($site_config->get('name')); @@ -98,8 +98,8 @@ function bartik_process_maintenance_page(&$variables) { $site_config = config('system.site'); // Always print the site name and slogan, but if they are toggled off, we'll // just hide them visually. - $variables['hide_site_name'] = theme_get_setting('toggle_name') ? FALSE : TRUE; - $variables['hide_site_slogan'] = theme_get_setting('toggle_slogan') ? FALSE : TRUE; + $variables['hide_site_name'] = theme_get_setting('features.name') ? FALSE : TRUE; + $variables['hide_site_slogan'] = theme_get_setting('features.slogan') ? FALSE : TRUE; if ($variables['hide_site_name']) { // If toggle_name is FALSE, the site_name will be empty, so we rebuild it. $variables['site_name'] = check_plain($site_config->get('name')); diff --git a/core/themes/seven/config/seven.settings.yml b/core/themes/seven/config/seven.settings.yml new file mode 100644 index 0000000..7955d25 --- /dev/null +++ b/core/themes/seven/config/seven.settings.yml @@ -0,0 +1 @@ +shortcut_module_link: '1' diff --git a/core/themes/seven/seven.info b/core/themes/seven/seven.info index 969f749..d582a06 100644 --- a/core/themes/seven/seven.info +++ b/core/themes/seven/seven.info @@ -5,7 +5,6 @@ version = VERSION core = 8.x stylesheets[screen][] = reset.css stylesheets[screen][] = style.css -settings[shortcut_module_link] = 1 regions[content] = Content regions[help] = Help regions[page_top] = Page top diff --git a/core/themes/stark/config/stark.settings.yml b/core/themes/stark/config/stark.settings.yml new file mode 100644 index 0000000..e69de29