[!!!][FEATURE] Move extension configuration to install tool 34/54034/34
authorMarkus Hoelzle <typo3@markus-hoelzle.de>
Fri, 8 Sep 2017 10:01:53 +0000 (12:01 +0200)
committerBenni Mack <benni@typo3.org>
Fri, 8 Dec 2017 10:52:06 +0000 (11:52 +0100)
commitebf0f1a72ecf2cae9608fd184da569c0b2f0bd5c
treee1f598b6a3e33b9ed893ef368b821dca56c63b15
parentdc3770a367480c51b968e3229ddc7a85f66635f3
[!!!][FEATURE] Move extension configuration to install tool

With #82254 LocalConfiguration serialized array EXT/extConf has been
changed to a not serialized array in EXTENSIONS. This patch follows
up on this task an finishes various tasks:

* An install tool silent upgrader upmerges given EXT/extConf settings
  to EXTENSIONS array. The resulting EXTENSIONS array does not contain
  dots for sub paths in its array key anymore and is accessible with a
  new ExtensionConfiguration->get() API to fetch values and whole
  extension config.
* A new API is introduced to get() and set() extension specific
  configuration, is documented and used throughout the core to not
  unserialize old EXT/extConf anymore. Setting values updates legacy
  EXT/extConf to new values including compatible 'dot' ending on
  nested array configurations.
* If extensions come with new configuration items in ext_conf_template.txt
  a silent upgrader of the install tool synchronizes these to the
  EXTENSIONS and old extConf array. Extension authors can rely on that
  and always fetch new keys from the new ExtensionConfiguration->get()
  API right away. The synchronization is also triggered when new
  extensions are loaded or extensions are updated via the extension
  manager.
* Core usages are adapted to the new API.
* Next to the main get() / set() API, the extension configuration
  form is extracted from the extension manager and put into the install
  tool as a new card in "Settings". The code below is streamlined
  and encapsulated with just a couple of public methods in class
  'ExtensionConfigurationService' as internal class for use in install
  tool and extension manager.

Resolves: #82368
Related: #82254
Releases: master
Change-Id: I88568fa355f8f6fd5acc9850dcdd718fdd9a1b2e
Reviewed-on: https://review.typo3.org/54034
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Daniel Gorges <daniel.gorges@b13.de>
Tested-by: Daniel Gorges <daniel.gorges@b13.de>
Reviewed-by: Andreas Fernandez <typo3@scripting-base.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
69 files changed:
Build/Resources/Public/Sass/install.scss
typo3/sysext/backend/Classes/Controller/BackendController.php
typo3/sysext/backend/Classes/Controller/LoginController.php
typo3/sysext/backend/Classes/Template/DocumentTemplate.php
typo3/sysext/core/Classes/Configuration/Exception/ExtensionConfigurationExtensionNotConfiguredException.php [new file with mode: 0644]
typo3/sysext/core/Classes/Configuration/Exception/ExtensionConfigurationPathDoesNotExistException.php [new file with mode: 0644]
typo3/sysext/core/Classes/Configuration/ExtensionConfiguration.php [new file with mode: 0644]
typo3/sysext/core/Configuration/DefaultConfiguration.php
typo3/sysext/core/Configuration/FactoryConfiguration.php
typo3/sysext/core/Documentation/Changelog/master/Breaking-82368-SignalAfterExtensionConfigurationWriteRemoved.rst [new file with mode: 0644]
typo3/sysext/core/Documentation/Changelog/master/Deprecation-82254-DeprecateGLOBALSTYPO3_CONF_VARSEXTextConf.rst
typo3/sysext/core/Documentation/Changelog/master/Feature-82254-StoreExtensionConfigurationAsPlainArray.rst
typo3/sysext/core/Tests/Unit/Configuration/ExtensionConfigurationTest.php [new file with mode: 0644]
typo3/sysext/extensionmanager/Classes/Controller/ConfigurationController.php [deleted file]
typo3/sysext/extensionmanager/Classes/Controller/DistributionController.php
typo3/sysext/extensionmanager/Classes/Controller/DownloadController.php
typo3/sysext/extensionmanager/Classes/Controller/ListController.php
typo3/sysext/extensionmanager/Classes/Controller/UploadExtensionFileController.php
typo3/sysext/extensionmanager/Classes/Domain/Model/ConfigurationCategory.php [deleted file]
typo3/sysext/extensionmanager/Classes/Domain/Model/ConfigurationItem.php [deleted file]
typo3/sysext/extensionmanager/Classes/Domain/Model/ConfigurationSubcategory.php [deleted file]
typo3/sysext/extensionmanager/Classes/Domain/Repository/ConfigurationItemRepository.php [deleted file]
typo3/sysext/extensionmanager/Classes/Utility/ConfigurationUtility.php [deleted file]
typo3/sysext/extensionmanager/Classes/Utility/Connection/TerUtility.php
typo3/sysext/extensionmanager/Classes/Utility/InstallUtility.php
typo3/sysext/extensionmanager/Classes/Utility/Repository/Helper.php
typo3/sysext/extensionmanager/Classes/ViewHelpers/ConfigureExtensionViewHelper.php [deleted file]
typo3/sysext/extensionmanager/Classes/ViewHelpers/DownloadExtensionViewHelper.php
typo3/sysext/extensionmanager/Classes/ViewHelpers/Form/TypoScriptConstantsViewHelper.php [deleted file]
typo3/sysext/extensionmanager/Resources/Private/Language/locallang.xlf
typo3/sysext/extensionmanager/Resources/Private/Templates/Configuration/ShowConfigurationForm.html [deleted file]
typo3/sysext/extensionmanager/Resources/Private/Templates/Distribution/Show.html
typo3/sysext/extensionmanager/Resources/Private/Templates/List/Index.html
typo3/sysext/extensionmanager/Resources/Public/JavaScript/Main.js
typo3/sysext/extensionmanager/Tests/Unit/Domain/Repository/ConfigurationItemRepositoryTest.php [deleted file]
typo3/sysext/extensionmanager/Tests/Unit/Utility/ConfigurationUtilityTest.php [deleted file]
typo3/sysext/extensionmanager/Tests/Unit/Utility/Fixtures/ext_conf_template.txt [deleted file]
typo3/sysext/extensionmanager/ext_localconf.php
typo3/sysext/indexed_search/Classes/Controller/AdministrationController.php
typo3/sysext/indexed_search/Classes/Controller/SearchController.php
typo3/sysext/indexed_search/Classes/Domain/Repository/IndexSearchRepository.php
typo3/sysext/indexed_search/Classes/FileContentParser.php
typo3/sysext/indexed_search/Classes/Indexer.php
typo3/sysext/indexed_search/Classes/Service/DatabaseSchemaService.php
typo3/sysext/indexed_search/Tests/Functional/Tca/IndexConfigVisibleFieldsTest.php [deleted file]
typo3/sysext/indexed_search/ext_localconf.php
typo3/sysext/install/Classes/Controller/LayoutController.php
typo3/sysext/install/Classes/Controller/SettingsController.php
typo3/sysext/install/Classes/Service/ExtensionConfigurationService.php [new file with mode: 0644]
typo3/sysext/install/Classes/ViewHelpers/Form/TypoScriptConstantsViewHelper.php [new file with mode: 0644]
typo3/sysext/install/Classes/ViewHelpers/Format/NoSpaceViewHelper.php [new file with mode: 0644]
typo3/sysext/install/Resources/Private/Partials/Settings/ExtensionConfiguration.html [new file with mode: 0644]
typo3/sysext/install/Resources/Private/Partials/Settings/ExtensionConfiguration/ExtensionForm.html [new file with mode: 0644]
typo3/sysext/install/Resources/Private/Templates/Settings/Cards.html
typo3/sysext/install/Resources/Private/Templates/Settings/ExtensionConfigurationGetContent.html [new file with mode: 0644]
typo3/sysext/install/Resources/Public/Css/install.css
typo3/sysext/install/Resources/Public/JavaScript/Modules/ExtensionConfiguration.js [new file with mode: 0644]
typo3/sysext/install/Resources/Public/JavaScript/Modules/LocalConfiguration.js
typo3/sysext/install/Resources/Public/JavaScript/Modules/Router.js
typo3/sysext/install/Resources/Public/JavaScript/RequireJSConfig.js
typo3/sysext/rsaauth/Classes/Backend/CommandLineBackend.php
typo3/sysext/rsaauth/Classes/BackendWarnings.php
typo3/sysext/rsaauth/Tests/Unit/Backend/CommandLineBackendTest.php
typo3/sysext/saltedpasswords/Classes/Utility/ExtensionManagerConfigurationUtility.php
typo3/sysext/saltedpasswords/Classes/Utility/SaltedPasswordsUtility.php
typo3/sysext/saltedpasswords/Tests/Unit/Salt/SaltFactoryTest.php
typo3/sysext/saltedpasswords/Tests/Unit/Utility/SaltedPasswordsUtilityTest.php [deleted file]
typo3/sysext/scheduler/Classes/Scheduler.php
typo3/sysext/scheduler/ext_localconf.php