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

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