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

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