Problem/Motivation
First of all thanks to all you work on the UI Suite initiative!
We are adopting this theme on one of the projects and after the switch tests for components started to fail with:
Drupal\Core\Config\Schema\SchemaIncompleteException: Schema errors for ui_suite_bootstrap.settings with the following errors: ui_suite_bootstrap.settings:ui_styles_entity_status_unpublished missing schema, ui_suite_bootstrap.settings:ui_styles_regions missing schema
Steps to reproduce
- have a component in a sub-theme
- create a test based on
sdc_develSdcDevelComponentKernelTestBase - run the tests
Proposed resolution
Add schema
Remaining tasks
- Merge request - done
- Review
- Merge
Issue fork ui_suite_bootstrap-3585073
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #2
rosk0Too bad that it doesn't pop up it the tests of the theme, but it is also confirmable with
drush config:inspect --filter-keys=ui_suite_bootstrap.settings --strict-validation --detail.We have been fixing similar issue in Bootstrap #3511614: Schema errors for bootstrap.settings when using the theme in the Drupal functional tests.
Comment #3
rosk0I've started fixing
ui_suite_bootstrap.schema.ymlby addingui_styles_entity_status_unpublished. Test showed that this wasn't enough as I was missing a dependency onui_styles_entity_status. I though "Oh ! user error! Will fix docs" , but when I wrote:at the bottom of the README.md I've realised that this is also wrong.
By adding
ui_styles_entity_status_unpublishedandui_styles_regionstoui_suite_bootstrap.settings.ymlin #3415078: Use UI Styles to remove templates we introduced two hidden implicit dependencies and in my opinion, should should be fixed by either:Would love to hear the feedback.
Comment #4
grimreaperHi,
Thanks for your appreciation on UI Suite :)
Thanks to have created this issue. I am aware of it and thinking about it as a background task.
Like you found out, the problem is that ui_styles_entity_status and ui_styles_page store config into the theme config and their hook_config_schema_alter is active of course only when the modules are enabled.
I need to check if a theme can implements hook module enabled. If yes, move the config from config/install to this hook.
Otherwise, maybe implements this hook into the ui_suite_bootstrap_companion submodule which is intended for stuff not possible to do/to override with a theme.
Comment #5
grimreaperSo I checked, themes cannot implements hook_modules_installed and hook_themes_installed.
So in ui_suite_bootstrap_companion, there could be both hooks:
hook_modules_installed:
- when enabling ui_styles_entity_status, loop on ui_suite_bootstrap and its children themes to add the config.
- when enabling ui_styles_page, loop on ui_suite_bootstrap and its children themes (or only on ui_suite_bootstrap) to add the config. if the theme as the sidebar_first and sidebar_second regions.
hook_themes_installed:
- if the installed theme is a subtheme of ui_suite_bootstrap and the ui_styles_entity_status or ui_styles_page are already enabled, add the config.
Comment #7
rosk0Comment #8
grimreaperComment #9
grimreaperHi,
Thanks for the MR, very nice start.
The other parts of comment 5 needs to be implemented as well.
Comment #10
herved commentedHi, I noticed the same while running config_inspector on a project.
I think using theme_settings's third_party_settings in ui_styles_page and ui_styles_entity_status would have been ideal for this (no hook_config_schema_info_alter in those modules, no hook_modules_installed needed in UISB). But maybe that is too disruptive? OTOH I don't see other contribs using them:
- https://search.tresbien.tech/search?q=ui_styles_entity_status_unpublishe...
- https://search.tresbien.tech/search?q=ui_styles_regions&num=50&ctx=0
Comment #11
grimreaperHum, I don't know why I didn't save those settings in third_party_settings from the beginning.
If theme settings can have third party settings, this is definitely the way to go.
Then changes needs to be done in ui_styles_page and ui_styles_entity_status then we can update in the ui_suite_bootstrap theme.
Thanks @herved for pointing that!
Comment #12
grimreaperPS: And I think I have the CSS variables from ui_skins in this case too...
Comment #13
grimreaperI have created the issues in UI Styles and UI Skins.
Comment #14
grimreaperI think hook_modules_installed is still needed in UISB because even if now placed in third_party_settings, the schema will not be detected without the modules.
Comment #15
grimreaperComment #16
grimreaperWaiting for UI Styles 8.x-1.20 to be released to merge.
Comment #18
grimreaper