Skip to content

Commit c3e2f60

Browse files
committed
[Studio] form bundle updates
1 parent 6b28ef8 commit c3e2f60

File tree

2 files changed

+78
-9
lines changed

2 files changed

+78
-9
lines changed

src/CoreShop/Bundle/CoreBundle/CoreShopCoreBundle.php

Lines changed: 53 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,11 @@
2020
use CoreShop\Bundle\AddressBundle\CoreShopAddressBundle;
2121
use CoreShop\Bundle\ClassDefinitionPatchBundle\CoreShopClassDefinitionPatchBundle;
2222
use CoreShop\Bundle\ConfigurationBundle\CoreShopConfigurationBundle;
23-
use CoreShop\Bundle\StudioFormBundle\CoreShopStudioFormBundle;
2423
use CoreShop\Bundle\CoreBundle\DependencyInjection\Compiler\RegisterIndexProductExtensionPass;
2524
use CoreShop\Bundle\CoreBundle\DependencyInjection\Compiler\RegisterPortletsPass;
2625
use CoreShop\Bundle\CoreBundle\DependencyInjection\Compiler\RegisterReportsPass;
2726
use CoreShop\Bundle\ProductQuantityPriceRulesBundle\DependencyInjection\Compiler\ProductQuantityPriceRulesActionPass;
2827
use CoreShop\Bundle\ProductQuantityPriceRulesBundle\DependencyInjection\Compiler\ProductQuantityPriceRulesConditionPass;
29-
use CoreShop\Bundle\StudioFormBundle\DependencyInjection\Compiler\RegisterFormTypesFromTagsPass;
3028
use CoreShop\Bundle\CurrencyBundle\CoreShopCurrencyBundle;
3129
use CoreShop\Bundle\CustomerBundle\CoreShopCustomerBundle;
3230
use CoreShop\Bundle\IndexBundle\CoreShopIndexBundle;
@@ -52,7 +50,9 @@
5250
use Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle;
5351
use Pimcore\Bundle\CustomReportsBundle\PimcoreCustomReportsBundle;
5452
use Pimcore\HttpKernel\BundleCollection\BundleCollection;
53+
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
5554
use Symfony\Component\DependencyInjection\ContainerBuilder;
55+
use Symfony\Component\HttpKernel\Bundle\BundleInterface;
5656

5757
final class CoreShopCoreBundle extends AbstractResourceBundle
5858
{
@@ -70,8 +70,12 @@ public function build(ContainerBuilder $container): void
7070
$container->addCompilerPass(new RegisterIndexProductExtensionPass());
7171
$container->addCompilerPass(new RegisterReportsPass());
7272
$container->addCompilerPass(new RegisterPortletsPass());
73-
$container->addCompilerPass(new RegisterFormTypesFromTagsPass(ProductQuantityPriceRulesConditionPass::PRODUCT_QUANTITY_PRICE_RULE_CONDITION_TAG));
74-
$container->addCompilerPass(new RegisterFormTypesFromTagsPass(ProductQuantityPriceRulesActionPass::PRODUCT_QUANTITY_PRICE_RULE_ACTION_TAG));
73+
74+
$registerFormTypesFromTagsPassClass = self::getRegisterFormTypesFromTagsPassClass();
75+
if (null !== $registerFormTypesFromTagsPassClass) {
76+
$container->addCompilerPass(new $registerFormTypesFromTagsPassClass(ProductQuantityPriceRulesConditionPass::PRODUCT_QUANTITY_PRICE_RULE_CONDITION_TAG));
77+
$container->addCompilerPass(new $registerFormTypesFromTagsPassClass(ProductQuantityPriceRulesActionPass::PRODUCT_QUANTITY_PRICE_RULE_ACTION_TAG));
78+
}
7579
}
7680

7781
public static function registerDependentBundles(BundleCollection $collection): void
@@ -102,7 +106,14 @@ public static function registerDependentBundles(BundleCollection $collection): v
102106
$collection->addBundle(new CoreShopProductQuantityPriceRulesBundle(), 1600);
103107
$collection->addBundle(new CoreShopWishlistBundle(), 1500);
104108
$collection->addBundle(new CoreShopClassDefinitionPatchBundle(), 1400);
105-
$collection->addBundle(new CoreShopStudioFormBundle(), 3900);
109+
110+
if (self::isStudioUiBundleAvailable()) {
111+
$studioFormBundleClass = self::getStudioFormBundleClass();
112+
if (null !== $studioFormBundleClass) {
113+
$collection->addBundle(new $studioFormBundleClass(), 3900);
114+
}
115+
}
116+
106117
$collection->addBundle(new PimcoreCustomReportsBundle(), 20000);
107118
}
108119

@@ -155,4 +166,41 @@ public function getEditmodeCssPaths(): array
155166
{
156167
return [];
157168
}
169+
170+
private static function isStudioUiBundleAvailable(): bool
171+
{
172+
$studioUiBundleClass = sprintf('Pimcore\\Bundle\\%s\\PimcoreStudioUiBundle', 'StudioUiBundle');
173+
174+
return class_exists($studioUiBundleClass) && is_subclass_of($studioUiBundleClass, BundleInterface::class);
175+
}
176+
177+
/**
178+
* @return class-string<BundleInterface>|null
179+
*/
180+
private static function getStudioFormBundleClass(): ?string
181+
{
182+
$studioFormBundleClass = sprintf('CoreShop\\Bundle\\%s\\CoreShopStudioFormBundle', 'StudioFormBundle');
183+
if (!class_exists($studioFormBundleClass) || !is_subclass_of($studioFormBundleClass, BundleInterface::class)) {
184+
return null;
185+
}
186+
187+
return $studioFormBundleClass;
188+
}
189+
190+
/**
191+
* @return class-string<CompilerPassInterface>|null
192+
*/
193+
private static function getRegisterFormTypesFromTagsPassClass(): ?string
194+
{
195+
$registerFormTypesFromTagsPassClass = sprintf(
196+
'CoreShop\\Bundle\\%s\\DependencyInjection\\Compiler\\RegisterFormTypesFromTagsPass',
197+
'StudioFormBundle',
198+
);
199+
200+
if (!class_exists($registerFormTypesFromTagsPassClass) || !is_subclass_of($registerFormTypesFromTagsPassClass, CompilerPassInterface::class)) {
201+
return null;
202+
}
203+
204+
return $registerFormTypesFromTagsPassClass;
205+
}
158206
}

src/CoreShop/Bundle/StudioFormBundle/composer.json

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "coreshop/studio-form-bundle",
33
"type": "pimcore-bundle",
4-
"description": "CoreShop StudioFormBundle - Reusable Form Schema System for Pimcore Studio",
4+
"description": "CoreShop - Studio Form Bundle",
55
"keywords": [
66
"coreshop",
77
"pimcore",
@@ -13,8 +13,16 @@
1313
"license": "proprietary",
1414
"authors": [
1515
{
16-
"name": "CoreShop GmbH",
17-
"email": "info@coreshop.com"
16+
"name": "CoreShop Team",
17+
"email": "info@coreshop.com",
18+
"homepage": "https://www.coreshop.com/",
19+
"role": "Developer"
20+
},
21+
{
22+
"name": "Dominik Pfaffenbauer",
23+
"email": "dominik@pfaffenbauer.at",
24+
"homepage": "https://www.pfaffenbauer.at/",
25+
"role": "Developer"
1826
}
1927
],
2028
"require": {
@@ -23,7 +31,8 @@
2331
"symfony/http-kernel": "^6.3 || ^7.0",
2432
"symfony/framework-bundle": "^6.3 || ^7.0",
2533
"symfony/serializer": "^6.3 || ^7.0",
26-
"pimcore/pimcore": "^12.0"
34+
"pimcore/pimcore": "^12.0",
35+
"pimcore/studio-ui-bundle": "^0.6.30"
2736
},
2837
"require-dev": {
2938
"phpstan/phpstan": "^2.0",
@@ -35,9 +44,21 @@
3544
"CoreShop\\Bundle\\StudioFormBundle\\": ""
3645
}
3746
},
47+
"repositories": [
48+
{
49+
"type": "path",
50+
"url": "../../*/*"
51+
}
52+
],
53+
"minimum-stability": "dev",
54+
"prefer-stable": true,
3855
"extra": {
3956
"branch-alias": {
57+
"dev-main": "5.0-dev",
4058
"dev-master": "5.0-dev"
4159
}
60+
},
61+
"config": {
62+
"sort-packages": true
4263
}
4364
}

0 commit comments

Comments
 (0)