diff --git a/Content/Types/FormSelect.php b/Content/Types/FormSelect.php index 72708be5..13b8727b 100644 --- a/Content/Types/FormSelect.php +++ b/Content/Types/FormSelect.php @@ -126,7 +126,7 @@ public function getContentData(PropertyInterface $property) $form = $this->formFactory->create( $formType, - new Dynamic($uuid, $locale, $webspaceKey, $defaults) + new Dynamic($uuid, $locale, $id, $webspaceKey, $defaults) ); // handle request diff --git a/Entity/Dynamic.php b/Entity/Dynamic.php index 3dd2bb51..abeadae5 100644 --- a/Entity/Dynamic.php +++ b/Entity/Dynamic.php @@ -30,8 +30,8 @@ class Dynamic implements TimestampableInterface const TYPE_ATTACHMENT = 'attachment'; const TYPE_CHECKBOX = 'checkbox'; const TYPE_CHECKBOX_MULTIPLE = 'checkboxMultiple'; - const TYPE_SELECT = 'select'; - const TYPE_SELECT_MULTIPLE = 'selectMultiple'; + const TYPE_DROPDOWN = 'dropdown'; + const TYPE_DROPDOWN_MULTIPLE = 'dropdownMultiple'; const TYPE_RADIO_BUTTONS = 'radioButtons'; /** @@ -49,6 +49,11 @@ class Dynamic implements TimestampableInterface */ private $locale; + /** + * @var int + */ + private $formId; + /** * @var string */ @@ -157,12 +162,12 @@ class Dynamic implements TimestampableInterface /** * @var string */ - private $select; + private $dropdown; /** * @var string */ - private $selectMultiple; + private $dropdownMultiple; /** * @var string @@ -199,13 +204,15 @@ public static function getConstants() /** * @param string $uuid * @param string $locale + * @param int $formId * @param null|string $webspaceKey * @param array $data */ - public function __construct($uuid, $locale, $webspaceKey = null, $data = []) + public function __construct($uuid, $locale, $formId, $webspaceKey = null, $data = []) { $this->uuid = $uuid; $this->locale = $locale; + $this->formId = $formId; $this->webspaceKey = $webspaceKey; foreach ($data as $name => $value) { diff --git a/Form/Type/DynamicFormType.php b/Form/Type/DynamicFormType.php index ab7eeeb2..0b5ea415 100644 --- a/Form/Type/DynamicFormType.php +++ b/Form/Type/DynamicFormType.php @@ -166,10 +166,10 @@ public function buildForm(FormBuilderInterface $builder, array $options) case Dynamic::TYPE_CHECKBOX_MULTIPLE: $type = $this->createChoiceType($translation, $options, true, true); break; - case Dynamic::TYPE_SELECT: + case Dynamic::TYPE_DROPDOWN: $type = $this->createChoiceType($translation, $options); break; - case Dynamic::TYPE_SELECT_MULTIPLE: + case Dynamic::TYPE_DROPDOWN_MULTIPLE: $type = $this->createChoiceType($translation, $options, false, true); break; case Dynamic::TYPE_RADIO_BUTTONS: diff --git a/Provider/DynamicProvider.php b/Provider/DynamicProvider.php new file mode 100644 index 00000000..730c915d --- /dev/null +++ b/Provider/DynamicProvider.php @@ -0,0 +1,66 @@ + $this->createFieldDescriptor('id', '', 'public.id'), + 'firstName' => $this->createFieldDescriptor('firstName'), + 'lastName' => $this->createFieldDescriptor('lastName'), + 'email' => $this->createFieldDescriptor('email'), + 'phone' => $this->createFieldDescriptor('phone'), + 'street' => $this->createFieldDescriptor('street'), + 'zip' => $this->createFieldDescriptor('zip'), + 'city' => $this->createFieldDescriptor('city'), + 'state' => $this->createFieldDescriptor('state'), + 'country' => $this->createFieldDescriptor('country'), + 'function' => $this->createFieldDescriptor('function'), + 'company' => $this->createFieldDescriptor('company'), + 'created' => $this->createFieldDescriptor('created', 'date', 'public.created'), + ]; + + return $fieldDescriptors; + } + + /** + * @param string $name + * @param bool $disabled + * @param string $type + * + * @return DoctrineFieldDescriptor + */ + protected function createFieldDescriptor($name, $type = '', $translationKey = '', $disabled = false) + { + if (!$translationKey) { + $translationKey = 'l91_sulu_form.type.' . strtolower($name); + } + + return new DoctrineFieldDescriptor( + $name, + $name, + Dynamic::class, + $translationKey, + [], + $disabled, + false, + $type + ); + } + + /** + * {@inheritdoc} + */ + public function getEntityName($webspace, $locale, $uuid) + { + return Dynamic::class; + } +} diff --git a/Resources/config/doctrine/Dynamic.orm.xml b/Resources/config/doctrine/Dynamic.orm.xml index 2bbd71df..30968dd0 100644 --- a/Resources/config/doctrine/Dynamic.orm.xml +++ b/Resources/config/doctrine/Dynamic.orm.xml @@ -9,6 +9,7 @@ + @@ -31,8 +32,8 @@ - - + + diff --git a/Resources/translations/sulu/backend.de.xlf b/Resources/translations/sulu/backend.de.xlf index a21099da..d7ea9b8a 100644 --- a/Resources/translations/sulu/backend.de.xlf +++ b/Resources/translations/sulu/backend.de.xlf @@ -110,11 +110,11 @@ Checkboxes - l91_sulu_form.type.select + l91_sulu_form.type.dropdown Dropdown - l91_sulu_form.type.selectmultiple + l91_sulu_form.type.dropdownmultiple Dropdown (Mehrfachauswahl) diff --git a/Resources/translations/sulu/backend.en.xlf b/Resources/translations/sulu/backend.en.xlf index 2b90cd92..265020e5 100644 --- a/Resources/translations/sulu/backend.en.xlf +++ b/Resources/translations/sulu/backend.en.xlf @@ -110,11 +110,11 @@ Checkboxes - l91_sulu_form.type.select + l91_sulu_form.type.dropdown Select - l91_sulu_form.type.selectmultiple + l91_sulu_form.type.dropdownmultiple Select (multiple) diff --git a/Resources/translations/sulu/backend.fr.xlf b/Resources/translations/sulu/backend.fr.xlf index 7beaac92..278015b0 100644 --- a/Resources/translations/sulu/backend.fr.xlf +++ b/Resources/translations/sulu/backend.fr.xlf @@ -109,11 +109,11 @@ Checkboxes - l91_sulu_form.type.select + l91_sulu_form.type.dropdown Select - l91_sulu_form.type.selectmultiple + l91_sulu_form.type.dropdownmultiple Select (multiple) diff --git a/Resources/views/forms/fields/types/select.html.twig b/Resources/views/forms/fields/types/dropdown.html.twig similarity index 100% rename from Resources/views/forms/fields/types/select.html.twig rename to Resources/views/forms/fields/types/dropdown.html.twig diff --git a/Resources/views/forms/fields/types/selectmultiple.html.twig b/Resources/views/forms/fields/types/dropdownmultiple.html.twig similarity index 100% rename from Resources/views/forms/fields/types/selectmultiple.html.twig rename to Resources/views/forms/fields/types/dropdownmultiple.html.twig