Refactor SingleTaskType: replace UserPickerType with PickUserDynamicType and CenterResolverDispatcherInterface with CenterResolverManagerInterface.

This commit is contained in:
2025-12-22 15:27:11 +01:00
parent 1b5c3dfc33
commit a199f5983e
3 changed files with 24 additions and 12 deletions

View File

@@ -21,6 +21,7 @@ parameters:
- src/Bundle/*/src/migrations/*
- src/Bundle/*/src/translations/*
- src/Bundle/*/src/Resources/*
- utils/rector/src/Rector/*
symfony:
containerXmlPath: var/cache/dev/App_KernelDevDebugContainer.xml

View File

@@ -14,11 +14,10 @@ namespace Chill\TaskBundle\Form;
use Chill\MainBundle\Form\Type\ChillDateType;
use Chill\MainBundle\Form\Type\ChillTextareaType;
use Chill\MainBundle\Form\Type\DateIntervalType;
use Chill\MainBundle\Form\Type\PickUserDynamicType;
use Chill\MainBundle\Form\Type\ScopePickerType;
use Chill\MainBundle\Form\Type\UserPickerType;
use Chill\MainBundle\Security\Resolver\CenterResolverDispatcherInterface;
use Chill\MainBundle\Security\Resolver\CenterResolverManagerInterface;
use Chill\MainBundle\Security\Resolver\ScopeResolverDispatcher;
use Chill\TaskBundle\Security\Authorization\TaskVoter;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
@@ -27,15 +26,19 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
class SingleTaskType extends AbstractType
{
public function __construct(private readonly ParameterBagInterface $parameterBag, private readonly CenterResolverDispatcherInterface $centerResolverDispatcher, private readonly ScopeResolverDispatcher $scopeResolverDispatcher) {}
public function __construct(
private readonly ParameterBagInterface $parameterBag,
private readonly CenterResolverManagerInterface $centerResolverManager,
private readonly ScopeResolverDispatcher $scopeResolverDispatcher,
) {}
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$center = null;
$isScopeConcerned = false;
$centers = [];
if (null !== $task = $options['data']) {
$center = $this->centerResolverDispatcher->resolveCenter($task);
$centers = $this->centerResolverManager->resolveCenters($task);
$isScopeConcerned = $this->scopeResolverDispatcher->isConcerned($task);
}
@@ -44,12 +47,10 @@ class SingleTaskType extends AbstractType
->add('description', ChillTextareaType::class, [
'required' => false,
])
->add('assignee', UserPickerType::class, [
->add('assignee', PickUserDynamicType::class, [
'required' => false,
'center' => $center,
'role' => TaskVoter::SHOW,
'placeholder' => 'Not assigned',
'attr' => ['class' => ' select2 '],
'suggest_myself' => true,
'multiple' => false,
])
->add('startDate', ChillDateType::class, [
'required' => false,
@@ -64,7 +65,7 @@ class SingleTaskType extends AbstractType
if ($isScopeConcerned && $this->parameterBag->get('chill_main')['acl']['form_show_scopes']) {
$builder
->add('circle', ScopePickerType::class, [
'center' => $center,
'center' => $centers,
'role' => $options['role'],
'required' => true,
]);

View File

@@ -23,6 +23,16 @@
{{ 'Edit task'|trans }}
{% endblock %}
{% block css %}
{{ parent() }}
{{ encore_entry_link_tags('mod_pickentity_type') }}
{% endblock %}
{% block js %}
{{ parent() }}
{{ encore_entry_script_tags('mod_pickentity_type') }}
{% endblock %}
{% block content %}
{% include '@ChillTask/SingleTask/_edit.html.twig' %}