* develop:
Improved Russian translation (#767)
Remove empty widget width option (#772)
Fix overlooked reference to App facade instead of local instance
Use local app instance rather than facade
Don't register backend permissions in the testing suite
Type hinting and style tweaks
Use the model instance returned by getRelationModel directly rather than as a static class reference
Clone the form model before passing it to the RelationController
# Conflicts:
# modules/cms/ServiceProvider.php
This prevents issues caused by extensions to the RelationController making changes to the relation's parent model for use cases needed in relations. These changes were previously also affecting the model instance used by the FormController behaviour.
If it is desired to interact with the exactly model instance as used by the FormController behaviour inside of your extensions to the RelationController you can use $controller->formGetModel() instead.
* develop:
Prevent fancy layout styling from spilling over into nested forms (#763)
Allow Snowboard event listeners to be closures
CMS Twig extension `contentFunction()` should return bool like `partialFunction()` (#746)
prevent previous relations from being unlinked (#765)
Allow cms.restrictBaseDir to be controlled via env variable
Fixes#758.
The edits made to the fancylayout.less should more directly target just the root elements of the UI, and not spill over into nested forms.
Test case in the Test plugin: wintercms/wn-test-plugin@eaebfae
Accessible in the Pages section.
This builds on the work originally done in https://github.com/octobercms/october/pull/3220 to further improve performance, especially in cases where lots of themes are present to choose from or "virtual" themes are being utilized.
Previously every single request would iterate over and initialize every single theme which involved booting an autodatasource for each theme and loading the entire contents of the path cache for each datasource of each theme into memory.
This commit changes the logic so that the cms.theme.getActiveTheme event will be run first, falling back to asking the cache service, then falling back to the DB if present, and finally defaulting to the value set in the configuration. After it has resolved an active theme it will attempt to cache that resolution permanently which should be fine since changing the active theme in the DB would trigger a cache invalidation when done through the setActiveTheme() method and changing the active theme in the file configuration would trigger a cache invalidation as well.
* develop:
Allow Snowboard debugging to be controlled independently
Show required indicators on checkbox fields (#754)
Allow component assets to be mirrored by "winter:mirror" command
Adds the "develop.debugSnowboard" config option to enable to disable Snowboard debugging, overriding the default behaviour in following the app debug mode.