Problem
- Theme settings/configuration/variables are never removed.
- All themes are loaded unconditionally, regardless of whether they are going to be used.
- Base themes are initialized and used even if they are disabled, and even if they are not installed at all.
- Themes can have configuration and can participate in hooks, but they are not able to maintain their data in any way.
- String translations of a theme are re-imported whenever a theme is re-enabled.
- The update system/manager is not able to determine whether a theme is actually used.
- ...
- Themes cannot be installed or uninstalled.
Goal
- Sanity.
Proposed solution
Treat themes like modules. A theme is either installed and enabled or it is not. An extension that is not enabled cannot be used.
Essential impact:
- Admin themes have to be enabled in order to be used.
#542828: Do not special case disabled admin theme - Base themes have to be enabled in order to be used by sub-themes.
#1663142: Require that the base theme be enabled to use a subtheme
- Admin themes have to be enabled in order to be used.
- No change: Themes can be enabled and disabled.
- Separate follow-up: Allow to uninstall themes.