small bugfixes (#2655)

* improve report visibility
* fix timesheet duration, which breaks validation
* added contributing section in README
* do not allow to change project for existing activities - fixes #2576
* bump theme version to fix FOSUserBundle dependency
* use entity color instead of inherited one - fixes #2200
This commit is contained in:
Kevin Papst
2021-07-10 00:37:03 +02:00
committed by GitHub
parent 9ddb87a6fd
commit 2583fdf20e
17 changed files with 101 additions and 121 deletions

View File

@@ -36,7 +36,7 @@ class ActivityEditForm extends AbstractType
{
$project = null;
$customer = null;
$id = null;
$new = true;
if (isset($options['data'])) {
/** @var Activity $entry */
@@ -48,7 +48,7 @@ class ActivityEditForm extends AbstractType
$options['currency'] = $customer->getCurrency();
}
$id = $entry->getId();
$new = $entry->getId() === null;
}
$builder
@@ -64,55 +64,57 @@ class ActivityEditForm extends AbstractType
])
;
if ($options['customer']) {
if ($new) {
if ($options['customer']) {
$builder
->add('customer', CustomerType::class, [
'query_builder' => function (CustomerRepository $repo) use ($builder, $customer) {
$query = new CustomerFormTypeQuery($customer);
$query->setUser($builder->getOption('user'));
return $repo->getQueryBuilderForFormType($query);
},
'data' => $customer ? $customer : null,
'required' => false,
'mapped' => false,
'project_enabled' => true,
]);
}
$builder
->add('customer', CustomerType::class, [
'query_builder' => function (CustomerRepository $repo) use ($builder, $customer) {
$query = new CustomerFormTypeQuery($customer);
$query->setUser($builder->getOption('user'));
return $repo->getQueryBuilderForFormType($query);
},
'data' => $customer ? $customer : null,
->add('project', ProjectType::class, [
'required' => false,
'mapped' => false,
'project_enabled' => true,
]);
}
$builder
->add('project', ProjectType::class, [
'required' => false,
'query_builder' => function (ProjectRepository $repo) use ($builder, $project, $customer) {
$query = new ProjectFormTypeQuery($project, $customer);
$query->setUser($builder->getOption('user'));
$query->setIgnoreDate(true);
return $repo->getQueryBuilderForFormType($query);
},
]);
// replaces the project select after submission, to make sure only projects for the selected customer are displayed
$builder->addEventListener(
FormEvents::PRE_SUBMIT,
function (FormEvent $event) use ($builder, $project) {
$data = $event->getData();
if (!isset($data['customer']) || empty($data['customer'])) {
return;
}
$event->getForm()->add('project', ProjectType::class, [
'group_by' => null,
'query_builder' => function (ProjectRepository $repo) use ($builder, $data, $project) {
$query = new ProjectFormTypeQuery($project, $data['customer']);
'query_builder' => function (ProjectRepository $repo) use ($builder, $project, $customer) {
$query = new ProjectFormTypeQuery($project, $customer);
$query->setUser($builder->getOption('user'));
$query->setIgnoreDate(true);
return $repo->getQueryBuilderForFormType($query);
},
]);
}
);
// replaces the project select after submission, to make sure only projects for the selected customer are displayed
$builder->addEventListener(
FormEvents::PRE_SUBMIT,
function (FormEvent $event) use ($builder, $project) {
$data = $event->getData();
if (!isset($data['customer']) || empty($data['customer'])) {
return;
}
$event->getForm()->add('project', ProjectType::class, [
'group_by' => null,
'query_builder' => function (ProjectRepository $repo) use ($builder, $data, $project) {
$query = new ProjectFormTypeQuery($project, $data['customer']);
$query->setUser($builder->getOption('user'));
$query->setIgnoreDate(true);
return $repo->getQueryBuilderForFormType($query);
},
]);
}
);
}
$this->addCommonFields($builder, $options);
}