Skip to content

Commit

Permalink
IBX-7935: Applied review remarks
Browse files Browse the repository at this point in the history
  • Loading branch information
barw4 committed May 9, 2024
1 parent aa1e6f9 commit 59f4b39
Show file tree
Hide file tree
Showing 7 changed files with 58 additions and 27 deletions.
2 changes: 1 addition & 1 deletion src/bundle/Controller/UserController.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ class UserController extends Controller
private $groupedContentFormFieldsProvider;

/** @var \Ibexa\Contracts\Core\Repository\ContentService */
private $contentService;
private ContentService $contentService;

public function __construct(
ContentTypeService $contentTypeService,
Expand Down
6 changes: 3 additions & 3 deletions src/lib/Event/StructFieldOptionsEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@
abstract class StructFieldOptionsEvent extends Event
{
/** @var \Symfony\Component\Form\FormInterface */
protected $parentForm;
protected FormInterface $parentForm;

/** @var \Ibexa\Contracts\ContentForms\Data\Content\FieldData */
protected $fieldData;
protected FieldData $fieldData;

/** @var array<string, mixed> */
protected $options;
protected array $options;

public function __construct(
FormInterface $parentForm,
Expand Down
2 changes: 1 addition & 1 deletion src/lib/Event/UserCreateFieldOptionsEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
final class UserCreateFieldOptionsEvent extends StructFieldOptionsEvent
{
/** @var \Ibexa\Contracts\Core\Repository\Values\User\UserCreateStruct */
private $userCreateStruct;
private UserCreateStruct $userCreateStruct;

public function __construct(
UserCreateStruct $userCreateStruct,
Expand Down
4 changes: 2 additions & 2 deletions src/lib/Event/UserUpdateFieldOptionsEvent.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@
final class UserUpdateFieldOptionsEvent extends StructFieldOptionsEvent
{
/** @var \Ibexa\Contracts\Core\Repository\Values\Content\Content */
private $content;
private Content $content;

/** @var \Ibexa\Contracts\Core\Repository\Values\User\UserUpdateStruct */
private $userUpdateStruct;
private UserUpdateStruct $userUpdateStruct;

public function __construct(
Content $content,
Expand Down
37 changes: 31 additions & 6 deletions src/lib/Form/Type/Content/BaseContentType.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,17 @@

namespace Ibexa\ContentForms\Form\Type\Content;

use Ibexa\Contracts\Core\Repository\Values\Content\ContentCreateStruct;
use Ibexa\Contracts\Core\Repository\Values\User\UserCreateStruct;
use Ibexa\Contracts\Core\Repository\Values\User\UserUpdateStruct;
use Ibexa\Core\Repository\Values\Content\ContentUpdateStruct;
use JMS\TranslationBundle\Annotation\Desc;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\OptionsResolver\Options;
use Symfony\Component\OptionsResolver\OptionsResolver;

/**
Expand Down Expand Up @@ -42,10 +47,11 @@ public function buildForm(FormBuilderInterface $builder, array $options)
'mainLanguageCode' => $options['mainLanguageCode'],
'location' => $options['location'] ?? null,
'content' => $options['content'] ?? null,
'contentCreateStruct' => $options['contentCreateStruct'] ?? null,
'contentUpdateStruct' => $options['contentUpdateStruct'] ?? null,
'userCreateStruct' => $options['userCreateStruct'] ?? null,
'userUpdateStruct' => $options['userUpdateStruct'] ?? null,
'contentCreateStruct' => $options['contentCreateStruct'] ?? null, // deprecated
'contentUpdateStruct' => $options['contentUpdateStruct'] ?? null, // deprecated
'userCreateStruct' => $options['userCreateStruct'] ?? null, // deprecated
'userUpdateStruct' => $options['userUpdateStruct'] ?? null, // deprecated
'struct' => $options['struct'],
],
])
->add('redirectUrlAfterPublish', HiddenType::class, [
Expand All @@ -63,8 +69,27 @@ public function buildView(FormView $view, FormInterface $form, array $options)
public function configureOptions(OptionsResolver $resolver)
{
$resolver
->setDefaults(['translation_domain' => 'ibexa_content_forms_content'])
->setRequired(['languageCode', 'mainLanguageCode']);
->setDefaults([
'translation_domain' => 'ibexa_content_forms_content',
'struct' => null,
])
->setAllowedTypes(
'struct',
[
'null',
ContentCreateStruct::class,
ContentUpdateStruct::class,
UserCreateStruct::class,
UserUpdateStruct::class,
],
)
->setRequired(['languageCode', 'mainLanguageCode', 'struct'])
->setNormalizer('struct', static function (Options $options, $value) {
return $options['userUpdateStruct']
?? $options['userCreateStruct']
?? $options['contentUpdateStruct']
?? $options['contentCreateStruct'];
});
}
}

Expand Down
11 changes: 6 additions & 5 deletions src/lib/Form/Type/Content/ContentFieldType.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,15 @@ public function configureOptions(OptionsResolver $resolver)
->setDefaults([
'content' => null,
'location' => null,
'contentCreateStruct' => null,
'contentUpdateStruct' => null,
'userCreateStruct' => null,
'userUpdateStruct' => null,
'contentCreateStruct' => null, // deprecated
'contentUpdateStruct' => null, // deprecated
'userCreateStruct' => null, // deprecated
'userUpdateStruct' => null, // deprecated
'data_class' => FieldData::class,
'translation_domain' => 'ibexa_content_forms_content',
'struct' => null,
])
->setRequired(['languageCode', 'mainLanguageCode']);
->setRequired(['languageCode', 'mainLanguageCode', 'struct']);
}

public function buildView(FormView $view, FormInterface $form, array $options)
Expand Down
23 changes: 14 additions & 9 deletions src/lib/Form/Type/Content/FieldCollectionType.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@
use Ibexa\ContentForms\Event\UserCreateFieldOptionsEvent;
use Ibexa\ContentForms\Event\UserUpdateFieldOptionsEvent;
use Ibexa\Contracts\ContentForms\Data\Content\FieldData;
use Ibexa\Contracts\Core\Repository\Values\User\UserUpdateStruct;
use Ibexa\Core\Repository\Values\Content\ContentCreateStruct;
use Ibexa\Core\Repository\Values\Content\ContentUpdateStruct;
use Ibexa\Core\Repository\Values\User\UserCreateStruct;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormEvent;
Expand Down Expand Up @@ -61,46 +65,47 @@ public function buildForm(

private function isContentCreate(array $entryOptions): bool
{
return !empty($entryOptions['contentCreateStruct']);
return !empty($entryOptions['struct']) && $entryOptions['struct'] instanceof ContentCreateStruct;
}

private function isContentUpdate(array $entryOptions): bool
{
return !empty($entryOptions['content']) && !empty($entryOptions['contentUpdateStruct']);
return !empty($entryOptions['struct']) && $entryOptions['struct'] instanceof ContentUpdateStruct;
}

/**
* @param array<string, mixed> $entryOptions
*/
private function isUserCreate(array $entryOptions): bool
{
return !empty($entryOptions['userCreateStruct']);
return !empty($entryOptions['struct']) && $entryOptions['struct'] instanceof UserCreateStruct;
}

/**
* @param array<string, mixed> $entryOptions
*/
private function isUserUpdate(array $entryOptions): bool
{
return !empty($entryOptions['userUpdateStruct']);
return !empty($entryOptions['struct']) && $entryOptions['struct'] instanceof UserUpdateStruct;
}

/**
* @param array<string, mixed> $entryOptions
*
* @return array<string, mixed> $entryOptions
* @return array<string, mixed>
*/
private function dispatchFieldOptionsEvent(
FieldData $entryData,
array $entryOptions,
FormInterface $form
): array {
dump($entryOptions);
if ($this->isContentUpdate($entryOptions)) {
/** @var \Ibexa\ContentForms\Event\ContentUpdateFieldOptionsEvent $contentUpdateFieldOptionsEvent */
$contentUpdateFieldOptionsEvent = $this->eventDispatcher->dispatch(
new ContentUpdateFieldOptionsEvent(
$entryOptions['content'],
$entryOptions['contentUpdateStruct'],
$entryOptions['struct'],
$form,
$entryData,
$entryOptions
Expand All @@ -113,7 +118,7 @@ private function dispatchFieldOptionsEvent(
/** @var \Ibexa\ContentForms\Event\ContentCreateFieldOptionsEvent $contentUpdateFieldOptionsEvent */
$contentCreateFieldOptionsEvent = $this->eventDispatcher->dispatch(
new ContentCreateFieldOptionsEvent(
$entryOptions['contentCreateStruct'],
$entryOptions['struct'],
$form,
$entryData,
$entryOptions
Expand All @@ -126,7 +131,7 @@ private function dispatchFieldOptionsEvent(
/** @var \Ibexa\ContentForms\Event\UserCreateFieldOptionsEvent $userCreateFieldOptionsEvent */
$userCreateFieldOptionsEvent = $this->eventDispatcher->dispatch(
new UserCreateFieldOptionsEvent(
$entryOptions['userCreateStruct'],
$entryOptions['struct'],
$form,
$entryData,
$entryOptions
Expand All @@ -140,7 +145,7 @@ private function dispatchFieldOptionsEvent(
$userUpdateFieldOptionsEvent = $this->eventDispatcher->dispatch(
new UserUpdateFieldOptionsEvent(
$entryOptions['content'],
$entryOptions['userUpdateStruct'],
$entryOptions['struct'],
$form,
$entryData,
$entryOptions
Expand Down

0 comments on commit 59f4b39

Please sign in to comment.