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

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