From aac44c98a6c6b10582ffefccc399354cbd4fa248 Mon Sep 17 00:00:00 2001 From: Soren Malling Date: Fri, 16 Feb 2024 18:23:07 +0100 Subject: [PATCH 1/2] FEATURE: Allow for configurable site package prefix The newly introduced extension configuration allows to change the site package prefix. By default it's value is site_. Changing this, will only have effect for displayed items in the list of site configuration module. --- Classes/Configuration/PackageHelper.php | 12 ++++++++++-- Resources/Private/Language/ext_conf_template.xlf | 10 ++++++++++ ext_conf_template.txt | 2 ++ 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 Resources/Private/Language/ext_conf_template.xlf create mode 100644 ext_conf_template.txt diff --git a/Classes/Configuration/PackageHelper.php b/Classes/Configuration/PackageHelper.php index 4908179..337263b 100644 --- a/Classes/Configuration/PackageHelper.php +++ b/Classes/Configuration/PackageHelper.php @@ -12,6 +12,7 @@ * of the License, or any later version. */ +use TYPO3\CMS\Core\Configuration\ExtensionConfiguration; use TYPO3\CMS\Core\Exception\SiteNotFoundException; use TYPO3\CMS\Core\Package\Exception\UnknownPackageException; use TYPO3\CMS\Core\Package\PackageInterface; @@ -35,10 +36,16 @@ class PackageHelper */ protected $siteFinder; - public function __construct(PackageManager $packageManager, SiteFinder $siteFinder) + /** + * @var ExtensionConfiguration + */ + protected $extensionConfiguration; + + public function __construct(PackageManager $packageManager, SiteFinder $siteFinder, ExtensionConfiguration $extensionConfiguration) { $this->packageManager = $packageManager; $this->siteFinder = $siteFinder; + $this->extensionConfiguration = $extensionConfiguration; } public function getSitePackage(int $rootPageId): ?PackageInterface @@ -72,6 +79,7 @@ public function getSitePackageFromSite(Site $site): ?PackageInterface */ public function getSiteListForSiteModule(array &$fieldDefinition): void { + $sitePackagePrefix = $this->extensionConfiguration->get('bolt', 'sitePackagePrefix'); $fieldDefinition['items'][] = [ '-- None --', '', @@ -80,7 +88,7 @@ public function getSiteListForSiteModule(array &$fieldDefinition): void $gotCurrentValue = false; foreach ($this->packageManager->getActivePackages() as $package) { $packageKey = $package->getPackageKey(); - if (substr($packageKey, 0, 5) === 'site_') { + if (substr($packageKey, 0, strlen($sitePackagePrefix)) === $sitePackagePrefix) { $fieldDefinition['items'][] = [ 0 => $packageKey, 1 => $packageKey, diff --git a/Resources/Private/Language/ext_conf_template.xlf b/Resources/Private/Language/ext_conf_template.xlf new file mode 100644 index 0000000..073090a --- /dev/null +++ b/Resources/Private/Language/ext_conf_template.xlf @@ -0,0 +1,10 @@ + + + + + + Site package prefix + + + + diff --git a/ext_conf_template.txt b/ext_conf_template.txt new file mode 100644 index 0000000..e2943a4 --- /dev/null +++ b/ext_conf_template.txt @@ -0,0 +1,2 @@ +# cat=General; type=string; label=LLL:EXT:bolt/Resources/Private/Language/ext_conf_template.xlf:sitePackagePrefix.label +sitePackagePrefix = site_ From cb77399d0bcd48b03831350d7da6ccb4f130ae52 Mon Sep 17 00:00:00 2001 From: Soren Malling Date: Mon, 19 Feb 2024 09:05:22 +0100 Subject: [PATCH 2/2] Use composer.json attribute type to determine site packages --- Classes/Configuration/PackageHelper.php | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/Classes/Configuration/PackageHelper.php b/Classes/Configuration/PackageHelper.php index 337263b..e40860d 100644 --- a/Classes/Configuration/PackageHelper.php +++ b/Classes/Configuration/PackageHelper.php @@ -36,16 +36,10 @@ class PackageHelper */ protected $siteFinder; - /** - * @var ExtensionConfiguration - */ - protected $extensionConfiguration; - - public function __construct(PackageManager $packageManager, SiteFinder $siteFinder, ExtensionConfiguration $extensionConfiguration) + public function __construct(PackageManager $packageManager, SiteFinder $siteFinder) { $this->packageManager = $packageManager; $this->siteFinder = $siteFinder; - $this->extensionConfiguration = $extensionConfiguration; } public function getSitePackage(int $rootPageId): ?PackageInterface @@ -79,7 +73,6 @@ public function getSitePackageFromSite(Site $site): ?PackageInterface */ public function getSiteListForSiteModule(array &$fieldDefinition): void { - $sitePackagePrefix = $this->extensionConfiguration->get('bolt', 'sitePackagePrefix'); $fieldDefinition['items'][] = [ '-- None --', '', @@ -87,8 +80,8 @@ public function getSiteListForSiteModule(array &$fieldDefinition): void $currentValue = $fieldDefinition['row']['sitePackage'] ?? ''; $gotCurrentValue = false; foreach ($this->packageManager->getActivePackages() as $package) { - $packageKey = $package->getPackageKey(); - if (substr($packageKey, 0, strlen($sitePackagePrefix)) === $sitePackagePrefix) { + if ($package->getPackageMetaData()->getPackageType() === 'typo3-cms-site') { + $packageKey = $package->getPackageKey(); $fieldDefinition['items'][] = [ 0 => $packageKey, 1 => $packageKey,