vendor/dachcom-digital/formbuilder/src/FormBuilderBundle/FormBuilderBundle.php line 25

Open in your IDE?
  1. <?php
  2. namespace FormBuilderBundle;
  3. use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\DoctrineOrmMappingsPass;
  4. use Doctrine\DBAL\Types\Type;
  5. use FormBuilderBundle\DependencyInjection\CompilerPass\ApiProviderPass;
  6. use FormBuilderBundle\DependencyInjection\CompilerPass\ChoiceBuilderPass;
  7. use FormBuilderBundle\DependencyInjection\CompilerPass\DispatcherPass;
  8. use FormBuilderBundle\DependencyInjection\CompilerPass\DynamicMultiFileAdapterPass;
  9. use FormBuilderBundle\DependencyInjection\CompilerPass\DynamicObjectResolverPass;
  10. use FormBuilderBundle\DependencyInjection\CompilerPass\FieldTransformerPass;
  11. use FormBuilderBundle\DependencyInjection\CompilerPass\MailEditorWidgetPass;
  12. use FormBuilderBundle\DependencyInjection\CompilerPass\OptionsTransformerPass;
  13. use FormBuilderBundle\DependencyInjection\CompilerPass\OutputTransformerPass;
  14. use FormBuilderBundle\DependencyInjection\CompilerPass\OutputWorkflowChannelPass;
  15. use FormBuilderBundle\DependencyInjection\CompilerPass\RuntimeDataProviderPass;
  16. use FormBuilderBundle\Doctrine\Type\FormBuilderFieldsType;
  17. use FormBuilderBundle\Factory\FormDefinitionFactoryInterface;
  18. use FormBuilderBundle\Tool\Install;
  19. use Pimcore\Extension\Bundle\AbstractPimcoreBundle;
  20. use Pimcore\Extension\Bundle\Traits\PackageVersionTrait;
  21. use Symfony\Component\DependencyInjection\ContainerBuilder;
  22. class FormBuilderBundle extends AbstractPimcoreBundle
  23. {
  24.     use PackageVersionTrait;
  25.     public const PACKAGE_NAME 'dachcom-digital/formbuilder';
  26.     public function boot(): void
  27.     {
  28.         $this->addDBALTypes();
  29.     }
  30.     private function addDBALTypes(): void
  31.     {
  32.         if (Type::hasType('form_builder_fields')) {
  33.             return;
  34.         }
  35.         Type::addType('form_builder_fields'FormBuilderFieldsType::class);
  36.         /** @var FormBuilderFieldsType $formBuilderFieldsType */
  37.         $formBuilderFieldsType Type::getType('form_builder_fields');
  38.         $formBuilderFieldsType->setFormDefinitionFactory($this->container->get(FormDefinitionFactoryInterface::class));
  39.     }
  40.     public function build(ContainerBuilder $container): void
  41.     {
  42.         parent::build($container);
  43.         $this->configureDoctrineExtension($container);
  44.         $container->addCompilerPass(new OptionsTransformerPass());
  45.         $container->addCompilerPass(new DispatcherPass());
  46.         $container->addCompilerPass(new ChoiceBuilderPass());
  47.         $container->addCompilerPass(new MailEditorWidgetPass());
  48.         $container->addCompilerPass(new OutputTransformerPass());
  49.         $container->addCompilerPass(new OutputWorkflowChannelPass());
  50.         $container->addCompilerPass(new DynamicObjectResolverPass());
  51.         $container->addCompilerPass(new RuntimeDataProviderPass());
  52.         $container->addCompilerPass(new DynamicMultiFileAdapterPass());
  53.         $container->addCompilerPass(new ApiProviderPass());
  54.         $container->addCompilerPass(new FieldTransformerPass());
  55.     }
  56.     public function getInstaller(): Install
  57.     {
  58.         return $this->container->get(Install::class);
  59.     }
  60.     public function getJsPaths(): array
  61.     {
  62.         return [
  63.             '/bundles/formbuilder/js/extjs/plugin.js',
  64.             '/bundles/formbuilder/js/extjs/settings.js',
  65.             '/bundles/formbuilder/js/extjs/types/keyValueRepeater.js',
  66.             '/bundles/formbuilder/js/extjs/types/localizedField.js',
  67.             '/bundles/formbuilder/js/extjs/types/href.js',
  68.             '/bundles/formbuilder/js/extjs/_form/form.js',
  69.             '/bundles/formbuilder/js/extjs/eventObserver.js',
  70.             '/bundles/formbuilder/js/extjs/_form/tab/configPanel.js',
  71.             '/bundles/formbuilder/js/extjs/_form/tab/outputWorkflowPanel.js',
  72.             '/bundles/formbuilder/js/extjs/_form/tab/output-workflow/outputWorkflowConfigPanel.js',
  73.             '/bundles/formbuilder/js/extjs/_form/tab/output-workflow/channel/abstractChannel.js',
  74.             '/bundles/formbuilder/js/extjs/_form/tab/output-workflow/channel/email.js',
  75.             '/bundles/formbuilder/js/extjs/_form/tab/output-workflow/channel/object.js',
  76.             '/bundles/formbuilder/js/extjs/_form/tab/output-workflow/channel/api.js',
  77.             '/bundles/formbuilder/js/extjs/_form/config-fields/abstract.js',
  78.             '/bundles/formbuilder/js/extjs/_form/config-fields/checkbox.js',
  79.             '/bundles/formbuilder/js/extjs/_form/config-fields/href.js',
  80.             '/bundles/formbuilder/js/extjs/_form/config-fields/key_value_repeater.js',
  81.             '/bundles/formbuilder/js/extjs/_form/config-fields/label.js',
  82.             '/bundles/formbuilder/js/extjs/_form/config-fields/numberfield.js',
  83.             '/bundles/formbuilder/js/extjs/_form/config-fields/options_repeater.js',
  84.             '/bundles/formbuilder/js/extjs/_form/config-fields/select.js',
  85.             '/bundles/formbuilder/js/extjs/_form/config-fields/tagfield.js',
  86.             '/bundles/formbuilder/js/extjs/_form/config-fields/textfield.js',
  87.             '/bundles/formbuilder/js/extjs/extensions/formMetaData.js',
  88.             '/bundles/formbuilder/js/extjs/extensions/formMailEditor.js',
  89.             '/bundles/formbuilder/js/extjs/extensions/formApiMappingEditor.js',
  90.             '/bundles/formbuilder/js/extjs/extensions/formDataMappingEditor/formDataMapper.js',
  91.             '/bundles/formbuilder/js/extjs/extensions/formObjectMappingEditor.js',
  92.             '/bundles/formbuilder/js/extjs/extensions/formObjectMappingEditor/formObjectTreeMapper.js',
  93.             '/bundles/formbuilder/js/extjs/extensions/formObjectMappingEditor/worker/fieldCollectionWorker.js',
  94.             '/bundles/formbuilder/js/extjs/conditional-logic/builder.js',
  95.             '/bundles/formbuilder/js/extjs/conditional-logic/form.js',
  96.             '/bundles/formbuilder/js/extjs/conditional-logic/condition/abstract.js',
  97.             '/bundles/formbuilder/js/extjs/conditional-logic/condition/elementValue.js',
  98.             '/bundles/formbuilder/js/extjs/conditional-logic/condition/outputWorkflow.js',
  99.             '/bundles/formbuilder/js/extjs/conditional-logic/action/abstract.js',
  100.             '/bundles/formbuilder/js/extjs/conditional-logic/action/constraintsAdd.js',
  101.             '/bundles/formbuilder/js/extjs/conditional-logic/action/constraintsRemove.js',
  102.             '/bundles/formbuilder/js/extjs/conditional-logic/action/toggleElement.js',
  103.             '/bundles/formbuilder/js/extjs/conditional-logic/action/changeValue.js',
  104.             '/bundles/formbuilder/js/extjs/conditional-logic/action/triggerEvent.js',
  105.             '/bundles/formbuilder/js/extjs/conditional-logic/action/toggleClass.js',
  106.             '/bundles/formbuilder/js/extjs/conditional-logic/action/toggleAvailability.js',
  107.             '/bundles/formbuilder/js/extjs/conditional-logic/action/switchOutputWorkflow.js',
  108.             '/bundles/formbuilder/js/extjs/conditional-logic/action/successMessage.js',
  109.             '/bundles/formbuilder/js/extjs/components/formTypeBuilderComponent.js',
  110.             '/bundles/formbuilder/js/extjs/components/formFieldConstraintComponent.js',
  111.             '/bundles/formbuilder/js/extjs/components/formFieldContainerComponent.js',
  112.             '/bundles/formbuilder/js/extjs/components/formImporterComponent.js',
  113.             '/bundles/formbuilder/js/extjs/components/successMessageToggleComponent.js',
  114.             '/bundles/formbuilder/js/extjs/components/elements/Formbuilder.HrefTextField.js',
  115.             '/bundles/formbuilder/js/extjs/vendor/dataObject.js',
  116.         ];
  117.     }
  118.     public function getCssPaths(): array
  119.     {
  120.         return [
  121.             '/bundles/formbuilder/css/admin.css'
  122.         ];
  123.     }
  124.     public function getEditmodeJsPaths(): array
  125.     {
  126.         return [
  127.             '/bundles/formbuilder/js/admin/area.js'
  128.         ];
  129.     }
  130.     public function getEditmodeCssPaths(): array
  131.     {
  132.         return [
  133.             '/bundles/formbuilder/css/admin-editmode.css',
  134.         ];
  135.     }
  136.     protected function getComposerPackageName(): string
  137.     {
  138.         return self::PACKAGE_NAME;
  139.     }
  140.     protected function configureDoctrineExtension(ContainerBuilder $container): void
  141.     {
  142.         $container->addCompilerPass(
  143.             DoctrineOrmMappingsPass::createYamlMappingDriver(
  144.                 [$this->getNameSpacePath() => $this->getNamespaceName()],
  145.                 ['form_builder.persistence.doctrine.manager'],
  146.                 'form_builder.persistence.doctrine.enabled'
  147.             )
  148.         );
  149.     }
  150.     protected function getNamespaceName(): string
  151.     {
  152.         return 'FormBuilderBundle\Model';
  153.     }
  154.     protected function getNameSpacePath(): string
  155.     {
  156.         return sprintf(
  157.             '%s/Resources/config/doctrine/%s',
  158.             $this->getPath(),
  159.             'model'
  160.         );
  161.     }
  162. }