Problem/Motivation

Themers have to generate schema since we don't provide a default config schema for a theme's THEME.settings.yml

Proposed resolution

  • Add system_config_schema_info_alter() to create definitions for all themes that need one
  • Inherit schema from a theme's base theme since base themes can add settings a theme's settings form - see ThemeSettingsForm::buildForm()

The one issue with this approach is that dynamic adding schema makes static analysis of configuration files for translatable strings difficult. See #2235901-34: Remove custom theme settings from *.info.yml and subsequent comments.

Remaining tasks

  • Agree approach
  • Write patch
  • Review
  • Commit

User interface changes

None

API changes

None

Beta phase evaluation

Reference: https://www.drupal.org/core/beta-changes
Issue category It is possible to argue that this issue is solving a bug. Theme settings forms are inherited through the base theme system therefore they should inherit the schema too. Also it makes the configuration saved through the form consistent. If we call this a task then we should do this because makes life easier for themers. I would argue that this is super important because it is the way that a lot of people start with Drupal at the theme level.
Issue priority Normal because schema are not required and Drupal will continue to work.
Prioritized changes The main goal of this issue is reduce the fragility of creating themes. Ensuring that themes have config schema means that configuration saved through the theme settings form will be consistent.
Disruption Not disruptive since if a theme does not provide a schema it gets the schema it needs. If it has a schema then nothing is changed.
Files: 
CommentFileSizeAuthor
#6 2382671.5.patch7.42 KBalexpott
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] 81,765 pass(es), 1 fail(s), and 0 exception(s). View
#6 4-5-interdiff.txt971 bytesalexpott
#4 2382671.3.patch6.73 KBalexpott
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] 81,762 pass(es), 1 fail(s), and 0 exception(s). View
#1 2235901-diff-do-not-test.patch2.95 KBalexpott
#1 2382671.1.patch16.41 KBalexpott
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] Unable to apply patch 2382671.1.patch. Unable to apply patch. See the log in the details link for more information. View

Comments

alexpott’s picture

Status: Active » Needs review
FileSize
16.41 KB
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] Unable to apply patch 2382671.1.patch. Unable to apply patch. See the log in the details link for more information. View
2.95 KB

The patch attached contains #2235901: Remove custom theme settings from *.info.yml since that has fixes this issue needs to progress.

alexpott’s picture

Category: Task » Bug report
Priority: Major » Normal
Issue summary: View changes

See issue summary / beta evaluation for why I've reclassified this.

Status: Needs review » Needs work

The last submitted patch, 1: 2382671.1.patch, failed testing.

alexpott’s picture

Status: Needs work » Needs review
FileSize
6.73 KB
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] 81,762 pass(es), 1 fail(s), and 0 exception(s). View

Status: Needs review » Needs work

The last submitted patch, 4: 2382671.3.patch, failed testing.

alexpott’s picture

Status: Needs work » Needs review
FileSize
971 bytes
7.42 KB
FAILED: [[SimpleTest]]: [PHP 5.4 MySQL] 81,765 pass(es), 1 fail(s), and 0 exception(s). View

Better test coverage of everything! ftw.

Status: Needs review » Needs work

The last submitted patch, 6: 2382671.5.patch, failed testing.

joelpittet’s picture

FYI Stubbed a page in the Theme Guide as we didn't have one yet for D8.
https://drupal.org/node/2623936

#2303861: Themers shouldn't need to write config schema was consolidated to this issue.

Version: 8.0.x-dev » 8.1.x-dev

Drupal 8.0.6 was released on April 6 and is the final bugfix release for the Drupal 8.0.x series. Drupal 8.0.x will not receive any further development aside from security fixes. Drupal 8.1.0-rc1 is now available and sites should prepare to update to 8.1.0.

Bug reports should be targeted against the 8.1.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.2.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.1.x-dev » 8.2.x-dev

Drupal 8.1.9 was released on September 7 and is the final bugfix release for the Drupal 8.1.x series. Drupal 8.1.x will not receive any further development aside from security fixes. Drupal 8.2.0-rc1 is now available and sites should prepare to upgrade to 8.2.0.

Bug reports should be targeted against the 8.2.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.2.x-dev » 8.3.x-dev

Drupal 8.2.6 was released on February 1, 2017 and is the final full bugfix release for the Drupal 8.2.x series. Drupal 8.2.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.3.0 on April 5, 2017. (Drupal 8.3.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.3.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.4.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.