mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-10-10 15:29:41 +00:00
Compare commits
3 Commits
694-save-e
...
deps-doctr
Author | SHA1 | Date | |
---|---|---|---|
5774c8fbb6
|
|||
b41cd1429c
|
|||
a1b36107c0
|
1
.gitignore
vendored
1
.gitignore
vendored
@@ -3,7 +3,6 @@ composer
|
|||||||
composer.phar
|
composer.phar
|
||||||
composer.lock
|
composer.lock
|
||||||
docs/build/
|
docs/build/
|
||||||
node_modules/*
|
|
||||||
.php_cs.cache
|
.php_cs.cache
|
||||||
|
|
||||||
###> symfony/framework-bundle ###
|
###> symfony/framework-bundle ###
|
||||||
|
@@ -9,22 +9,18 @@
|
|||||||
],
|
],
|
||||||
"require": {
|
"require": {
|
||||||
"php": "^7.4",
|
"php": "^7.4",
|
||||||
"ext-json": "*",
|
|
||||||
"ext-openssl": "*",
|
|
||||||
"ext-redis": "*",
|
|
||||||
"champs-libres/async-uploader-bundle": "dev-sf4#d57134aee8e504a83c902ff0cf9f8d36ac418290",
|
"champs-libres/async-uploader-bundle": "dev-sf4#d57134aee8e504a83c902ff0cf9f8d36ac418290",
|
||||||
"champs-libres/wopi-bundle": "dev-master@dev",
|
"champs-libres/wopi-bundle": "dev-master#6dd8e0a14e00131eb4b889ecc30270ee4a0e5224",
|
||||||
"champs-libres/wopi-lib": "dev-master@dev",
|
"champs-libres/wopi-lib": "dev-master#8615f4a45a39fc2b6a98765ea835fcfd39618787",
|
||||||
"doctrine/doctrine-bundle": "^2.1",
|
"doctrine/doctrine-bundle": "^2.1",
|
||||||
"doctrine/doctrine-migrations-bundle": "^3.0",
|
"doctrine/doctrine-migrations-bundle": "^3.0",
|
||||||
"doctrine/orm": "^2.13.0",
|
"doctrine/orm": "2.13.5",
|
||||||
"erusev/parsedown": "^1.7",
|
"erusev/parsedown": "^1.7",
|
||||||
"graylog2/gelf-php": "^1.5",
|
"graylog2/gelf-php": "^1.5",
|
||||||
"knplabs/knp-menu-bundle": "^3.0",
|
"knplabs/knp-menu-bundle": "^3.0",
|
||||||
"knplabs/knp-time-bundle": "^1.12",
|
"knplabs/knp-time-bundle": "^1.12",
|
||||||
"knpuniversity/oauth2-client-bundle": "^2.10",
|
"knpuniversity/oauth2-client-bundle": "^2.10",
|
||||||
"league/csv": "^9.7.1",
|
"league/csv": "^9.7.1",
|
||||||
"lexik/jwt-authentication-bundle": "^2.16",
|
|
||||||
"nyholm/psr7": "^1.4",
|
"nyholm/psr7": "^1.4",
|
||||||
"ocramius/package-versions": "^1.10 || ^2",
|
"ocramius/package-versions": "^1.10 || ^2",
|
||||||
"odolbeau/phone-number-bundle": "^3.6",
|
"odolbeau/phone-number-bundle": "^3.6",
|
||||||
@@ -33,12 +29,12 @@
|
|||||||
"ramsey/uuid-doctrine": "^1.7",
|
"ramsey/uuid-doctrine": "^1.7",
|
||||||
"sensio/framework-extra-bundle": "^5.5",
|
"sensio/framework-extra-bundle": "^5.5",
|
||||||
"spomky-labs/base64url": "^2.0",
|
"spomky-labs/base64url": "^2.0",
|
||||||
|
"symfony/asset": "^4.4",
|
||||||
"symfony/browser-kit": "^4.4",
|
"symfony/browser-kit": "^4.4",
|
||||||
"symfony/css-selector": "^4.4",
|
"symfony/css-selector": "^4.4",
|
||||||
"symfony/expression-language": "^4.4",
|
"symfony/expression-language": "^4.4",
|
||||||
"symfony/form": "^4.4",
|
"symfony/form": "^4.4",
|
||||||
"symfony/framework-bundle": "^4.4",
|
"symfony/framework-bundle": "^4.4",
|
||||||
"symfony/http-client": "^4.4 || ^5",
|
|
||||||
"symfony/http-foundation": "^4.4",
|
"symfony/http-foundation": "^4.4",
|
||||||
"symfony/intl": "^4.4",
|
"symfony/intl": "^4.4",
|
||||||
"symfony/mailer": "^5.4",
|
"symfony/mailer": "^5.4",
|
||||||
@@ -52,6 +48,7 @@
|
|||||||
"symfony/translation": "^4.4",
|
"symfony/translation": "^4.4",
|
||||||
"symfony/twig-bundle": "^4.4",
|
"symfony/twig-bundle": "^4.4",
|
||||||
"symfony/validator": "^4.4",
|
"symfony/validator": "^4.4",
|
||||||
|
"symfony/web-link": "*",
|
||||||
"symfony/webpack-encore-bundle": "^1.11",
|
"symfony/webpack-encore-bundle": "^1.11",
|
||||||
"symfony/workflow": "^4.4",
|
"symfony/workflow": "^4.4",
|
||||||
"symfony/yaml": "^4.4",
|
"symfony/yaml": "^4.4",
|
||||||
@@ -75,7 +72,8 @@
|
|||||||
"symfony/maker-bundle": "^1.20",
|
"symfony/maker-bundle": "^1.20",
|
||||||
"symfony/phpunit-bridge": "^4.4",
|
"symfony/phpunit-bridge": "^4.4",
|
||||||
"symfony/stopwatch": "^4.4",
|
"symfony/stopwatch": "^4.4",
|
||||||
"symfony/var-dumper": "^4.4"
|
"symfony/var-dumper": "^4.4",
|
||||||
|
"symfony/web-profiler-bundle": "^4.4"
|
||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"symfony/symfony": "*"
|
"symfony/symfony": "*"
|
||||||
|
@@ -43,7 +43,6 @@ use Symfony\Component\HttpFoundation\Request;
|
|||||||
use Symfony\Component\HttpFoundation\Response;
|
use Symfony\Component\HttpFoundation\Response;
|
||||||
use Symfony\Component\Security\Core\Role\Role;
|
use Symfony\Component\Security\Core\Role\Role;
|
||||||
use Symfony\Component\Serializer\SerializerInterface;
|
use Symfony\Component\Serializer\SerializerInterface;
|
||||||
use Symfony\Contracts\Translation\TranslatorInterface;
|
|
||||||
use function array_key_exists;
|
use function array_key_exists;
|
||||||
|
|
||||||
final class ActivityController extends AbstractController
|
final class ActivityController extends AbstractController
|
||||||
@@ -74,8 +73,6 @@ final class ActivityController extends AbstractController
|
|||||||
|
|
||||||
private ThirdPartyRepository $thirdPartyRepository;
|
private ThirdPartyRepository $thirdPartyRepository;
|
||||||
|
|
||||||
private TranslatorInterface $translator;
|
|
||||||
|
|
||||||
private UserRepositoryInterface $userRepository;
|
private UserRepositoryInterface $userRepository;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
@@ -92,8 +89,7 @@ final class ActivityController extends AbstractController
|
|||||||
LoggerInterface $logger,
|
LoggerInterface $logger,
|
||||||
SerializerInterface $serializer,
|
SerializerInterface $serializer,
|
||||||
UserRepositoryInterface $userRepository,
|
UserRepositoryInterface $userRepository,
|
||||||
CenterResolverManagerInterface $centerResolver,
|
CenterResolverManagerInterface $centerResolver
|
||||||
TranslatorInterface $translator
|
|
||||||
) {
|
) {
|
||||||
$this->activityACLAwareRepository = $activityACLAwareRepository;
|
$this->activityACLAwareRepository = $activityACLAwareRepository;
|
||||||
$this->activityTypeRepository = $activityTypeRepository;
|
$this->activityTypeRepository = $activityTypeRepository;
|
||||||
@@ -109,7 +105,6 @@ final class ActivityController extends AbstractController
|
|||||||
$this->serializer = $serializer;
|
$this->serializer = $serializer;
|
||||||
$this->userRepository = $userRepository;
|
$this->userRepository = $userRepository;
|
||||||
$this->centerResolver = $centerResolver;
|
$this->centerResolver = $centerResolver;
|
||||||
$this->translator = $translator;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -165,7 +160,7 @@ final class ActivityController extends AbstractController
|
|||||||
$this->entityManager->remove($activity);
|
$this->entityManager->remove($activity);
|
||||||
$this->entityManager->flush();
|
$this->entityManager->flush();
|
||||||
|
|
||||||
$this->addFlash('success', $this->translator
|
$this->addFlash('success', $this->get('translator')
|
||||||
->trans('The activity has been successfully removed.'));
|
->trans('The activity has been successfully removed.'));
|
||||||
|
|
||||||
$params = $this->buildParamsToUrl($person, $accompanyingPeriod);
|
$params = $this->buildParamsToUrl($person, $accompanyingPeriod);
|
||||||
@@ -250,7 +245,7 @@ final class ActivityController extends AbstractController
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->addFlash('success', $this->translator->trans('Success : activity updated!'));
|
$this->addFlash('success', $this->get('translator')->trans('Success : activity updated!'));
|
||||||
|
|
||||||
return $this->redirectToRoute('chill_activity_activity_show', $params);
|
return $this->redirectToRoute('chill_activity_activity_show', $params);
|
||||||
}
|
}
|
||||||
@@ -478,7 +473,7 @@ final class ActivityController extends AbstractController
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->addFlash('success', $this->translator->trans('Success : activity created!'));
|
$this->addFlash('success', $this->get('translator')->trans('Success : activity created!'));
|
||||||
|
|
||||||
$params = $this->buildParamsToUrl($person, $accompanyingPeriod);
|
$params = $this->buildParamsToUrl($person, $accompanyingPeriod);
|
||||||
|
|
||||||
|
@@ -13,24 +13,15 @@ namespace Chill\ActivityBundle\Controller;
|
|||||||
|
|
||||||
use Chill\ActivityBundle\Entity\ActivityReason;
|
use Chill\ActivityBundle\Entity\ActivityReason;
|
||||||
use Chill\ActivityBundle\Form\ActivityReasonType;
|
use Chill\ActivityBundle\Form\ActivityReasonType;
|
||||||
use Chill\ActivityBundle\Repository\ActivityReasonRepository;
|
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ActivityReason controller.
|
* ActivityReason controller.
|
||||||
*/
|
*/
|
||||||
class ActivityReasonController extends AbstractController
|
class ActivityReasonController extends AbstractController
|
||||||
{
|
{
|
||||||
private ActivityReasonRepository $activityReasonRepository;
|
|
||||||
|
|
||||||
public function __construct(ActivityReasonRepository $activityReasonRepository)
|
|
||||||
{
|
|
||||||
$this->activityReasonRepository = $activityReasonRepository;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new ActivityReason entity.
|
* Creates a new ActivityReason entity.
|
||||||
*/
|
*/
|
||||||
@@ -65,8 +56,8 @@ class ActivityReasonController extends AbstractController
|
|||||||
|
|
||||||
$entity = $em->getRepository(\Chill\ActivityBundle\Entity\ActivityReason::class)->find($id);
|
$entity = $em->getRepository(\Chill\ActivityBundle\Entity\ActivityReason::class)->find($id);
|
||||||
|
|
||||||
if (null === $entity) {
|
if (!$entity) {
|
||||||
throw new NotFoundHttpException('Unable to find ActivityReason entity.');
|
throw $this->createNotFoundException('Unable to find ActivityReason entity.');
|
||||||
}
|
}
|
||||||
|
|
||||||
$editForm = $this->createEditForm($entity);
|
$editForm = $this->createEditForm($entity);
|
||||||
@@ -84,7 +75,7 @@ class ActivityReasonController extends AbstractController
|
|||||||
{
|
{
|
||||||
$em = $this->getDoctrine()->getManager();
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
|
||||||
$entities = $this->activityReasonRepository->findAll();
|
$entities = $em->getRepository(\Chill\ActivityBundle\Entity\ActivityReason::class)->findAll();
|
||||||
|
|
||||||
return $this->render('ChillActivityBundle:ActivityReason:index.html.twig', [
|
return $this->render('ChillActivityBundle:ActivityReason:index.html.twig', [
|
||||||
'entities' => $entities,
|
'entities' => $entities,
|
||||||
|
@@ -63,8 +63,10 @@ class ActivityReason
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get category.
|
* Get category.
|
||||||
|
*
|
||||||
|
* @return ActivityReasonCategory
|
||||||
*/
|
*/
|
||||||
public function getCategory(): ?ActivityReasonCategory
|
public function getCategory()
|
||||||
{
|
{
|
||||||
return $this->category;
|
return $this->category;
|
||||||
}
|
}
|
||||||
@@ -105,11 +107,6 @@ class ActivityReason
|
|||||||
return $this->name;
|
return $this->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isActiveAndParentActive(): bool
|
|
||||||
{
|
|
||||||
return $this->active && null !== $this->getCategory() && $this->getCategory()->getActive();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set active.
|
* Set active.
|
||||||
*
|
*
|
||||||
|
@@ -60,7 +60,7 @@ class ByCreatorAggregator implements AggregatorInterface
|
|||||||
return 'Created by';
|
return 'Created by';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $value || '' === $value) {
|
if (null === $value) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -65,7 +65,7 @@ class BySocialActionAggregator implements AggregatorInterface
|
|||||||
return 'Social action';
|
return 'Social action';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $value || '' === $value) {
|
if (null === $value) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -65,7 +65,7 @@ class BySocialIssueAggregator implements AggregatorInterface
|
|||||||
return 'Social issues';
|
return 'Social issues';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $value || '' === $value) {
|
if (null === $value) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -65,7 +65,7 @@ class ByThirdpartyAggregator implements AggregatorInterface
|
|||||||
return 'Accepted thirdparty';
|
return 'Accepted thirdparty';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $value || '' === $value) {
|
if (null === $value) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -65,7 +65,7 @@ class CreatorScopeAggregator implements AggregatorInterface
|
|||||||
return 'Scope';
|
return 'Scope';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $value || '' === $value) {
|
if (null === $value) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -65,13 +65,11 @@ class LocationTypeAggregator implements AggregatorInterface
|
|||||||
return 'Accepted locationtype';
|
return 'Accepted locationtype';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $value || '' === $value) {
|
if (null === $value) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $lt = $this->locationTypeRepository->find($value)) {
|
$lt = $this->locationTypeRepository->find($value);
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->translatableStringHelper->localize(
|
return $this->translatableStringHelper->localize(
|
||||||
$lt->getTitle()
|
$lt->getTitle()
|
||||||
|
@@ -71,7 +71,7 @@ class ActivityTypeAggregator implements AggregatorInterface
|
|||||||
return 'Activity type';
|
return 'Activity type';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $value || '' === $value) {
|
if (null === $value) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -66,7 +66,7 @@ class ActivityUserAggregator implements AggregatorInterface
|
|||||||
return 'Activity user';
|
return 'Activity user';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $value || '' === $value) {
|
if (null === $value) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -64,7 +64,7 @@ class ActivityUsersAggregator implements AggregatorInterface
|
|||||||
return 'Activity users';
|
return 'Activity users';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $value || '' === $value) {
|
if (null === $value) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -63,7 +63,7 @@ class ActivityUsersJobAggregator implements \Chill\MainBundle\Export\AggregatorI
|
|||||||
return 'Users \'s job';
|
return 'Users \'s job';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $value || '' === $value) {
|
if (null === $value) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -63,7 +63,7 @@ class ActivityUsersScopeAggregator implements \Chill\MainBundle\Export\Aggregato
|
|||||||
return 'Users \'s scope';
|
return 'Users \'s scope';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $value || '' === $value) {
|
if (null === $value) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -134,10 +134,6 @@ class ActivityReasonAggregator implements AggregatorInterface, ExportElementVali
|
|||||||
return 'reasons' === $data['level'] ? 'Group by reasons' : 'Group by categories of reason';
|
return 'reasons' === $data['level'] ? 'Group by reasons' : 'Group by categories of reason';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $value || '' === $value) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
switch ($data['level']) {
|
switch ($data['level']) {
|
||||||
case 'reasons':
|
case 'reasons':
|
||||||
$r = $this->activityReasonRepository->find($value);
|
$r = $this->activityReasonRepository->find($value);
|
||||||
|
@@ -57,7 +57,6 @@ class SentReceivedAggregator implements AggregatorInterface
|
|||||||
|
|
||||||
switch ($value) {
|
switch ($value) {
|
||||||
case null:
|
case null:
|
||||||
case '':
|
|
||||||
return '';
|
return '';
|
||||||
|
|
||||||
case 'sent':
|
case 'sent':
|
||||||
|
@@ -17,9 +17,11 @@ use Chill\ActivityBundle\Repository\ActivityTypeRepositoryInterface;
|
|||||||
use Chill\MainBundle\Export\FilterInterface;
|
use Chill\MainBundle\Export\FilterInterface;
|
||||||
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
|
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
|
||||||
use Chill\PersonBundle\Export\Declarations;
|
use Chill\PersonBundle\Export\Declarations;
|
||||||
|
use Doctrine\ORM\Query\Expr;
|
||||||
use Doctrine\ORM\QueryBuilder;
|
use Doctrine\ORM\QueryBuilder;
|
||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
|
use function in_array;
|
||||||
|
|
||||||
class ActivityTypeFilter implements FilterInterface
|
class ActivityTypeFilter implements FilterInterface
|
||||||
{
|
{
|
||||||
@@ -42,13 +44,14 @@ class ActivityTypeFilter implements FilterInterface
|
|||||||
|
|
||||||
public function alterQuery(QueryBuilder $qb, $data)
|
public function alterQuery(QueryBuilder $qb, $data)
|
||||||
{
|
{
|
||||||
$qb->andWhere(
|
if (!in_array('activity', $qb->getAllAliases(), true)) {
|
||||||
$qb->expr()->exists(
|
$qb->join(Activity::class, 'activity', Expr\Join::WITH, 'activity.accompanyingPeriod = acp');
|
||||||
'SELECT 1 FROM ' . Activity::class . ' act_type_filter_activity
|
}
|
||||||
WHERE act_type_filter_activity.activityType IN (:act_type_filter_activity_types) AND act_type_filter_activity.accompanyingPeriod = acp'
|
|
||||||
)
|
$clause = $qb->expr()->in('activity.activityType', ':selected_activity_types');
|
||||||
);
|
|
||||||
$qb->setParameter('act_type_filter_activity_types', $data['accepted_activitytypes']);
|
$qb->andWhere($clause);
|
||||||
|
$qb->setParameter('selected_activity_types', $data['types']);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function applyOn()
|
public function applyOn()
|
||||||
|
@@ -50,7 +50,7 @@ class ActivityReasonFilter implements ExportElementValidatedInterface, FilterInt
|
|||||||
{
|
{
|
||||||
$where = $qb->getDQLPart('where');
|
$where = $qb->getDQLPart('where');
|
||||||
$join = $qb->getDQLPart('join');
|
$join = $qb->getDQLPart('join');
|
||||||
$clause = $qb->expr()->in('actreasons', ':selected_activity_reasons');
|
$clause = $qb->expr()->in('reasons', ':selected_activity_reasons');
|
||||||
|
|
||||||
if (!in_array('actreasons', $qb->getAllAliases(), true)) {
|
if (!in_array('actreasons', $qb->getAllAliases(), true)) {
|
||||||
$qb->join('activity.reasons', 'actreasons');
|
$qb->join('activity.reasons', 'actreasons');
|
||||||
@@ -77,7 +77,6 @@ class ActivityReasonFilter implements ExportElementValidatedInterface, FilterInt
|
|||||||
'class' => ActivityReason::class,
|
'class' => ActivityReason::class,
|
||||||
'choice_label' => fn (ActivityReason $reason) => $this->translatableStringHelper->localize($reason->getName()),
|
'choice_label' => fn (ActivityReason $reason) => $this->translatableStringHelper->localize($reason->getName()),
|
||||||
'group_by' => fn (ActivityReason $reason) => $this->translatableStringHelper->localize($reason->getCategory()->getName()),
|
'group_by' => fn (ActivityReason $reason) => $this->translatableStringHelper->localize($reason->getCategory()->getName()),
|
||||||
'attr' => ['class' => 'select2 '],
|
|
||||||
'multiple' => true,
|
'multiple' => true,
|
||||||
'expanded' => false,
|
'expanded' => false,
|
||||||
]);
|
]);
|
||||||
|
@@ -11,8 +11,7 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Chill\ActivityBundle\Form;
|
namespace Chill\ActivityBundle\Form;
|
||||||
|
|
||||||
use Chill\ActivityBundle\Entity\ActivityReason;
|
use Chill\ActivityBundle\Form\Type\TranslatableActivityReasonCategory;
|
||||||
use Chill\ActivityBundle\Form\Type\TranslatableActivityReasonCategoryType;
|
|
||||||
use Chill\MainBundle\Form\Type\TranslatableStringFormType;
|
use Chill\MainBundle\Form\Type\TranslatableStringFormType;
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
||||||
@@ -26,13 +25,13 @@ class ActivityReasonType extends AbstractType
|
|||||||
$builder
|
$builder
|
||||||
->add('name', TranslatableStringFormType::class)
|
->add('name', TranslatableStringFormType::class)
|
||||||
->add('active', CheckboxType::class, ['required' => false])
|
->add('active', CheckboxType::class, ['required' => false])
|
||||||
->add('category', TranslatableActivityReasonCategoryType::class);
|
->add('category', TranslatableActivityReasonCategory::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function configureOptions(OptionsResolver $resolver)
|
public function configureOptions(OptionsResolver $resolver)
|
||||||
{
|
{
|
||||||
$resolver->setDefaults([
|
$resolver->setDefaults([
|
||||||
'data_class' => ActivityReason::class,
|
'data_class' => 'Chill\ActivityBundle\Entity\ActivityReason',
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -13,7 +13,7 @@ namespace Chill\ActivityBundle\Form;
|
|||||||
|
|
||||||
use Chill\ActivityBundle\Entity\Activity;
|
use Chill\ActivityBundle\Entity\Activity;
|
||||||
use Chill\ActivityBundle\Entity\ActivityPresence;
|
use Chill\ActivityBundle\Entity\ActivityPresence;
|
||||||
use Chill\ActivityBundle\Form\Type\PickActivityReasonType;
|
use Chill\ActivityBundle\Entity\ActivityReason;
|
||||||
use Chill\ActivityBundle\Security\Authorization\ActivityVoter;
|
use Chill\ActivityBundle\Security\Authorization\ActivityVoter;
|
||||||
use Chill\DocStoreBundle\Form\StoredObjectType;
|
use Chill\DocStoreBundle\Form\StoredObjectType;
|
||||||
use Chill\MainBundle\Entity\Center;
|
use Chill\MainBundle\Entity\Center;
|
||||||
@@ -229,10 +229,19 @@ class ActivityType extends AbstractType
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($activityType->isVisible('reasons')) {
|
if ($activityType->isVisible('reasons')) {
|
||||||
$builder->add('reasons', PickActivityReasonType::class, [
|
$builder->add('reasons', EntityType::class, [
|
||||||
'label' => $activityType->getLabel('reasons'),
|
'label' => $activityType->getLabel('reasons'),
|
||||||
'required' => $activityType->isRequired('reasons'),
|
'required' => $activityType->isRequired('reasons'),
|
||||||
|
'class' => ActivityReason::class,
|
||||||
'multiple' => true,
|
'multiple' => true,
|
||||||
|
'choice_label' => function (ActivityReason $activityReason) {
|
||||||
|
return $this->translatableStringHelper->localize($activityReason->getName());
|
||||||
|
},
|
||||||
|
'attr' => ['class' => 'select2 '],
|
||||||
|
'query_builder' => static function (EntityRepository $er) {
|
||||||
|
return $er->createQueryBuilder('a')
|
||||||
|
->where('a.active = true');
|
||||||
|
},
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -12,9 +12,9 @@ declare(strict_types=1);
|
|||||||
namespace Chill\ActivityBundle\Form\Type;
|
namespace Chill\ActivityBundle\Form\Type;
|
||||||
|
|
||||||
use Chill\ActivityBundle\Entity\ActivityReason;
|
use Chill\ActivityBundle\Entity\ActivityReason;
|
||||||
use Chill\ActivityBundle\Repository\ActivityReasonRepository;
|
|
||||||
use Chill\ActivityBundle\Templating\Entity\ActivityReasonRender;
|
use Chill\ActivityBundle\Templating\Entity\ActivityReasonRender;
|
||||||
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
|
use Chill\MainBundle\Templating\TranslatableStringHelper;
|
||||||
|
use Doctrine\ORM\EntityRepository;
|
||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
@@ -22,29 +22,31 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
|
|||||||
/**
|
/**
|
||||||
* FormType to choose amongst activity reasons.
|
* FormType to choose amongst activity reasons.
|
||||||
*/
|
*/
|
||||||
class PickActivityReasonType extends AbstractType
|
class TranslatableActivityReason extends AbstractType
|
||||||
{
|
{
|
||||||
private ActivityReasonRepository $activityReasonRepository;
|
/**
|
||||||
|
* @var ActivityReasonRender
|
||||||
|
*/
|
||||||
|
protected $reasonRender;
|
||||||
|
|
||||||
private ActivityReasonRender $reasonRender;
|
/**
|
||||||
|
* @var TranslatableStringHelper
|
||||||
private TranslatableStringHelperInterface $translatableStringHelper;
|
*/
|
||||||
|
protected $translatableStringHelper;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
ActivityReasonRepository $activityReasonRepository,
|
TranslatableStringHelper $translatableStringHelper,
|
||||||
ActivityReasonRender $reasonRender,
|
ActivityReasonRender $reasonRender
|
||||||
TranslatableStringHelperInterface $translatableStringHelper
|
|
||||||
) {
|
) {
|
||||||
$this->activityReasonRepository = $activityReasonRepository;
|
|
||||||
$this->reasonRender = $reasonRender;
|
|
||||||
$this->translatableStringHelper = $translatableStringHelper;
|
$this->translatableStringHelper = $translatableStringHelper;
|
||||||
|
$this->reasonRender = $reasonRender;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function configureOptions(OptionsResolver $resolver)
|
public function configureOptions(OptionsResolver $resolver)
|
||||||
{
|
{
|
||||||
$resolver->setDefaults(
|
$resolver->setDefaults(
|
||||||
[
|
[
|
||||||
'class' => ActivityReason::class,
|
'class' => 'ChillActivityBundle:ActivityReason',
|
||||||
'choice_label' => function (ActivityReason $choice) {
|
'choice_label' => function (ActivityReason $choice) {
|
||||||
return $this->reasonRender->renderString($choice, []);
|
return $this->reasonRender->renderString($choice, []);
|
||||||
},
|
},
|
||||||
@@ -55,7 +57,10 @@ class PickActivityReasonType extends AbstractType
|
|||||||
|
|
||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
'choices' => $this->activityReasonRepository->findAll(),
|
'query_builder' => static function (EntityRepository $er) {
|
||||||
|
return $er->createQueryBuilder('r')
|
||||||
|
->where('r.active = true');
|
||||||
|
},
|
||||||
'attr' => ['class' => ' select2 '],
|
'attr' => ['class' => ' select2 '],
|
||||||
]
|
]
|
||||||
);
|
);
|
@@ -0,0 +1,59 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Chill is a software for social workers
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view
|
||||||
|
* the LICENSE file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Chill\ActivityBundle\Form\Type;
|
||||||
|
|
||||||
|
use Doctrine\ORM\EntityRepository;
|
||||||
|
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||||
|
use Symfony\Component\Form\AbstractType;
|
||||||
|
use Symfony\Component\HttpFoundation\RequestStack;
|
||||||
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Description of TranslatableActivityReasonCategory.
|
||||||
|
*/
|
||||||
|
class TranslatableActivityReasonCategory extends AbstractType
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var RequestStack
|
||||||
|
*/
|
||||||
|
private $requestStack;
|
||||||
|
|
||||||
|
public function __construct(RequestStack $requestStack)
|
||||||
|
{
|
||||||
|
$this->requestStack = $requestStack;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function configureOptions(OptionsResolver $resolver)
|
||||||
|
{
|
||||||
|
$locale = $this->requestStack->getCurrentRequest()->getLocale();
|
||||||
|
$resolver->setDefaults(
|
||||||
|
[
|
||||||
|
'class' => 'ChillActivityBundle:ActivityReasonCategory',
|
||||||
|
'choice_label' => 'name[' . $locale . ']',
|
||||||
|
'query_builder' => static function (EntityRepository $er) {
|
||||||
|
return $er->createQueryBuilder('c')
|
||||||
|
->where('c.active = true');
|
||||||
|
},
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getBlockPrefix()
|
||||||
|
{
|
||||||
|
return 'translatable_activity_reason_category';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getParent()
|
||||||
|
{
|
||||||
|
return EntityType::class;
|
||||||
|
}
|
||||||
|
}
|
@@ -1,58 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Chill is a software for social workers
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view
|
|
||||||
* the LICENSE file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Chill\ActivityBundle\Form\Type;
|
|
||||||
|
|
||||||
use Chill\ActivityBundle\Entity\ActivityReasonCategory;
|
|
||||||
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
|
|
||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
|
||||||
use Symfony\Component\Form\AbstractType;
|
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
|
||||||
use Symfony\Contracts\Translation\TranslatorInterface;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Description of TranslatableActivityReasonCategory.
|
|
||||||
*/
|
|
||||||
class TranslatableActivityReasonCategoryType extends AbstractType
|
|
||||||
{
|
|
||||||
private TranslatableStringHelperInterface $translatableStringHelper;
|
|
||||||
|
|
||||||
private TranslatorInterface $translator;
|
|
||||||
|
|
||||||
public function __construct(TranslatableStringHelperInterface $translatableStringHelper, TranslatorInterface $translator)
|
|
||||||
{
|
|
||||||
$this->translatableStringHelper = $translatableStringHelper;
|
|
||||||
$this->translator = $translator;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function configureOptions(OptionsResolver $resolver)
|
|
||||||
{
|
|
||||||
$resolver->setDefaults(
|
|
||||||
[
|
|
||||||
'class' => ActivityReasonCategory::class,
|
|
||||||
'choice_label' => function (ActivityReasonCategory $category) {
|
|
||||||
return $this->translatableStringHelper->localize($category->getName())
|
|
||||||
. (!$category->getActive() ? ' (' . $this->translator->trans('inactive') . ')' : '');
|
|
||||||
},
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getBlockPrefix()
|
|
||||||
{
|
|
||||||
return 'translatable_activity_reason_category';
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getParent()
|
|
||||||
{
|
|
||||||
return EntityType::class;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -36,6 +36,7 @@ final class AdminMenuBuilder implements LocalMenuBuilderInterface
|
|||||||
->setAttribute('class', 'list-group-item-header')
|
->setAttribute('class', 'list-group-item-header')
|
||||||
->setExtras([
|
->setExtras([
|
||||||
'order' => 5000,
|
'order' => 5000,
|
||||||
|
'icons' => ['exchange'],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$menu->addChild('Activity Reasons', [
|
$menu->addChild('Activity Reasons', [
|
||||||
|
@@ -14,38 +14,17 @@ namespace Chill\ActivityBundle\Repository;
|
|||||||
use Chill\ActivityBundle\Entity\ActivityReason;
|
use Chill\ActivityBundle\Entity\ActivityReason;
|
||||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||||
use Doctrine\Persistence\ManagerRegistry;
|
use Doctrine\Persistence\ManagerRegistry;
|
||||||
use Symfony\Component\HttpFoundation\RequestStack;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @method ActivityReason|null find($id, $lockMode = null, $lockVersion = null)
|
* @method ActivityReason|null find($id, $lockMode = null, $lockVersion = null)
|
||||||
* @method ActivityReason|null findOneBy(array $criteria, array $orderBy = null)
|
* @method ActivityReason|null findOneBy(array $criteria, array $orderBy = null)
|
||||||
|
* @method ActivityReason[] findAll()
|
||||||
* @method ActivityReason[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
|
* @method ActivityReason[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
|
||||||
*/
|
*/
|
||||||
class ActivityReasonRepository extends ServiceEntityRepository
|
class ActivityReasonRepository extends ServiceEntityRepository
|
||||||
{
|
{
|
||||||
private RequestStack $requestStack;
|
public function __construct(ManagerRegistry $registry)
|
||||||
|
|
||||||
public function __construct(
|
|
||||||
ManagerRegistry $registry,
|
|
||||||
RequestStack $requestStack
|
|
||||||
) {
|
|
||||||
parent::__construct($registry, ActivityReason::class);
|
|
||||||
|
|
||||||
$this->requestStack = $requestStack;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return ActivityReason[]
|
|
||||||
*/
|
|
||||||
public function findAll(): array
|
|
||||||
{
|
{
|
||||||
$qb = $this->createQueryBuilder('ar');
|
parent::__construct($registry, ActivityReason::class);
|
||||||
$qb->select(['ar'])
|
|
||||||
->leftJoin('ar.category', 'category')
|
|
||||||
->addOrderBy('JSON_EXTRACT(category.name, :lang)')
|
|
||||||
->addOrderBy('JSON_EXTRACT(ar.name, :lang)')
|
|
||||||
->setParameter('lang', $this->requestStack->getCurrentRequest()->getLocale() ?? 'fr');
|
|
||||||
|
|
||||||
return $qb->getQuery()->getResult();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -156,7 +156,7 @@
|
|||||||
<dd>
|
<dd>
|
||||||
<section class="chill-entity entity-comment-embeddable">
|
<section class="chill-entity entity-comment-embeddable">
|
||||||
<blockquote class="chill-user-quote private-quote">
|
<blockquote class="chill-user-quote private-quote">
|
||||||
{{ entity.privateComment.comments[userId]|chill_markdown_to_html }}
|
{{ entity.privateComment.comments[userId] }}
|
||||||
</blockquote>
|
</blockquote>
|
||||||
</section>
|
</section>
|
||||||
</dd>
|
</dd>
|
||||||
@@ -172,7 +172,7 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
{% else %}
|
{% else %}
|
||||||
<span class="chill-no-data-statement">{{ 'No document found'|trans }}</span>
|
<span class="chill-no-data-statement">{{ 'Any document found'|trans }}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</dd>
|
</dd>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@@ -7,34 +7,22 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{{ 'Name'|trans }}</th>
|
<th>{{ 'Name'|trans }}</th>
|
||||||
<th>{{ 'Active'|trans }}</th>
|
|
||||||
<th>{{ 'Actions'|trans }}</th>
|
<th>{{ 'Actions'|trans }}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for entity in entities %}
|
{% for entity in entities %}
|
||||||
<tr class="{% if entity.active %}active{% else %}inactive{% endif %}">
|
<tr class="{% if entity.active %}active{% else %}inactive{% endif %}">
|
||||||
|
<td><a href="{{ path('chill_activity_activityreason_show', { 'id': entity.id }) }}">{{ entity.name|localize_translatable_string }}</a></td>
|
||||||
<td>
|
<td>
|
||||||
{% if entity.category is not null -%}
|
<ul class="record_actions">
|
||||||
{{ entity.category.name|localize_translatable_string }} >
|
<li>
|
||||||
{% endif -%}
|
<a href="{{ path('chill_activity_activityreason_show', { 'id': entity.id }) }}" class="btn btn-show" title="{{ 'show'|trans }}"></a>
|
||||||
{{ entity.name|localize_translatable_string }}
|
</li>
|
||||||
</td>
|
<li>
|
||||||
<td>
|
<a href="{{ path('chill_activity_activityreason_edit', { 'id': entity.id }) }}" class="btn btn-edit" title="{{ 'edit'|trans }}"></a>
|
||||||
<i class="fa {% if entity.active %}fa-check-square-o{% else %}fa-square-o{% endif %}"></i>
|
</li>
|
||||||
{% if entity.active and not entity.isActiveAndParentActive %}
|
</ul>
|
||||||
<span class="badge text-bg-danger text-white">{{ 'Associated activity reason category is inactive'|trans }}</span>
|
|
||||||
{% endif %}
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<ul class="record_actions">
|
|
||||||
<li>
|
|
||||||
<a href="{{ path('chill_activity_activityreason_show', { 'id': entity.id }) }}" class="btn btn-show" title="{{ 'show'|trans }}"></a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="{{ path('chill_activity_activityreason_edit', { 'id': entity.id }) }}" class="btn btn-edit" title="{{ 'edit'|trans }}"></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@@ -7,7 +7,6 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>{{ 'Name'|trans }}</th>
|
<th>{{ 'Name'|trans }}</th>
|
||||||
<th>{{ 'Active'|trans }}</th>
|
|
||||||
<th>{{ 'Actions'|trans }}</th>
|
<th>{{ 'Actions'|trans }}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
@@ -15,11 +14,7 @@
|
|||||||
{% for entity in entities %}
|
{% for entity in entities %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
{{ entity.name|localize_translatable_string }}
|
<a href="{{ path('chill_activity_activityreasoncategory_show', { 'id': entity.id }) }}">{{ entity.name|localize_translatable_string }}</a></td>
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<i class="fa {% if entity.active %}fa-check-square-o{% else %}fa-square-o{% endif %}"></i>
|
|
||||||
</td>
|
|
||||||
<td>
|
<td>
|
||||||
<ul class="record_actions">
|
<ul class="record_actions">
|
||||||
<li>
|
<li>
|
||||||
|
@@ -11,7 +11,7 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Chill\ActivityBundle\Tests\Form\Type;
|
namespace Chill\ActivityBundle\Tests\Form\Type;
|
||||||
|
|
||||||
use Chill\ActivityBundle\Form\Type\PickActivityReasonType;
|
use Chill\ActivityBundle\Form\Type\TranslatableActivityReason;
|
||||||
use Chill\MainBundle\Templating\TranslatableStringHelper;
|
use Chill\MainBundle\Templating\TranslatableStringHelper;
|
||||||
use Symfony\Component\Form\PreloadedExtension;
|
use Symfony\Component\Form\PreloadedExtension;
|
||||||
use Symfony\Component\Form\Test\TypeTestCase;
|
use Symfony\Component\Form\Test\TypeTestCase;
|
||||||
@@ -36,7 +36,7 @@ final class TranslatableActivityReasonTest extends TypeTestCase
|
|||||||
|
|
||||||
public function testSimple()
|
public function testSimple()
|
||||||
{
|
{
|
||||||
$translatableActivityReasonType = new PickActivityReasonType(
|
$translatableActivityReasonType = new TranslatableActivityReason(
|
||||||
$this->getTranslatableStringHelper()
|
$this->getTranslatableStringHelper()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@@ -1,11 +1,4 @@
|
|||||||
services:
|
services:
|
||||||
_defaults:
|
|
||||||
autowire: true
|
|
||||||
autoconfigure: true
|
|
||||||
|
|
||||||
Chill\ActivityBundle\Controller\:
|
|
||||||
resource: '../../Controller/'
|
|
||||||
tags: ['controller.service_arguments']
|
|
||||||
|
|
||||||
Chill\ActivityBundle\Controller\ActivityController:
|
Chill\ActivityBundle\Controller\ActivityController:
|
||||||
|
autowire: true
|
||||||
tags: ['controller.service_arguments']
|
tags: ['controller.service_arguments']
|
||||||
|
@@ -1,12 +1,19 @@
|
|||||||
---
|
---
|
||||||
services:
|
services:
|
||||||
Chill\ActivityBundle\Form\Type\TranslatableActivityReasonCategoryType:
|
chill.activity.form.type.translatableactivityreasoncategory:
|
||||||
autowire: true
|
class: Chill\ActivityBundle\Form\Type\TranslatableActivityReasonCategory
|
||||||
autoconfigure: true
|
arguments:
|
||||||
|
- "@request_stack"
|
||||||
|
tags:
|
||||||
|
- { name: form.type, alias: translatable_activity_reason_category }
|
||||||
|
|
||||||
Chill\ActivityBundle\Form\Type\PickActivityReasonType:
|
chill.activity.form.type.translatableactivityreason:
|
||||||
autowire: true
|
class: Chill\ActivityBundle\Form\Type\TranslatableActivityReason
|
||||||
autoconfigure: true
|
arguments:
|
||||||
|
$translatableStringHelper: "@chill.main.helper.translatable_string"
|
||||||
|
$reasonRender: '@Chill\ActivityBundle\Templating\Entity\ActivityReasonRender'
|
||||||
|
tags:
|
||||||
|
- { name: form.type, alias: translatable_activity_reason }
|
||||||
|
|
||||||
chill.activity.form.type.translatableactivitytype:
|
chill.activity.form.type.translatableactivitytype:
|
||||||
class: Chill\ActivityBundle\Form\Type\TranslatableActivityType
|
class: Chill\ActivityBundle\Form\Type\TranslatableActivityType
|
||||||
|
@@ -1,8 +1,5 @@
|
|||||||
---
|
---
|
||||||
services:
|
services:
|
||||||
Chill\ActivityBundle\Repository\ActivityReasonRepository:
|
|
||||||
autowire: true
|
|
||||||
|
|
||||||
chill_activity.repository.activity_type: '@Chill\ActivityBundle\Repository\ActivityTypeRepository'
|
chill_activity.repository.activity_type: '@Chill\ActivityBundle\Repository\ActivityTypeRepository'
|
||||||
chill_activity.repository.reason: '@Chill\ActivityBundle\Repository\ActivityReasonRepository'
|
chill_activity.repository.reason: '@Chill\ActivityBundle\Repository\ActivityReasonRepository'
|
||||||
chill_activity.repository.reason_category: '@Chill\ActivityBundle\Repository\ActivityReasonCategoryRepository'
|
chill_activity.repository.reason_category: '@Chill\ActivityBundle\Repository\ActivityReasonCategoryRepository'
|
||||||
|
@@ -117,7 +117,6 @@ Activity Reasons: Sujets d'une activité
|
|||||||
Activity Reasons Category: Catégories de sujet d'activités
|
Activity Reasons Category: Catégories de sujet d'activités
|
||||||
Activity Types Categories: Catégories des types d'activité
|
Activity Types Categories: Catégories des types d'activité
|
||||||
Activity Presences: Presences aux activités
|
Activity Presences: Presences aux activités
|
||||||
Associated activity reason category is inactive: La catégorie de sujet attachée est inactive
|
|
||||||
|
|
||||||
|
|
||||||
# Crud
|
# Crud
|
||||||
|
@@ -12,7 +12,8 @@ declare(strict_types=1);
|
|||||||
namespace Chill\AsideActivityBundle\Form;
|
namespace Chill\AsideActivityBundle\Form;
|
||||||
|
|
||||||
use Chill\AsideActivityBundle\Entity\AsideActivity;
|
use Chill\AsideActivityBundle\Entity\AsideActivity;
|
||||||
use Chill\AsideActivityBundle\Form\Type\PickAsideActivityCategoryType;
|
use Chill\AsideActivityBundle\Entity\AsideActivityCategory;
|
||||||
|
use Chill\AsideActivityBundle\Templating\Entity\CategoryRender;
|
||||||
use Chill\MainBundle\Form\Type\ChillDateType;
|
use Chill\MainBundle\Form\Type\ChillDateType;
|
||||||
use Chill\MainBundle\Form\Type\ChillTextareaType;
|
use Chill\MainBundle\Form\Type\ChillTextareaType;
|
||||||
use Chill\MainBundle\Form\Type\PickUserDynamicType;
|
use Chill\MainBundle\Form\Type\PickUserDynamicType;
|
||||||
@@ -20,6 +21,8 @@ use DateInterval;
|
|||||||
use DateTime;
|
use DateTime;
|
||||||
use DateTimeImmutable;
|
use DateTimeImmutable;
|
||||||
use DateTimeZone;
|
use DateTimeZone;
|
||||||
|
use Doctrine\ORM\EntityRepository;
|
||||||
|
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||||
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
|
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToTimestampTransformer;
|
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToTimestampTransformer;
|
||||||
@@ -34,16 +37,20 @@ use function in_array;
|
|||||||
|
|
||||||
final class AsideActivityFormType extends AbstractType
|
final class AsideActivityFormType extends AbstractType
|
||||||
{
|
{
|
||||||
|
private CategoryRender $categoryRender;
|
||||||
|
|
||||||
private TokenStorageInterface $storage;
|
private TokenStorageInterface $storage;
|
||||||
|
|
||||||
private array $timeChoices;
|
private array $timeChoices;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
ParameterBagInterface $parameterBag,
|
ParameterBagInterface $parameterBag,
|
||||||
TokenStorageInterface $storage
|
TokenStorageInterface $storage,
|
||||||
|
CategoryRender $categoryRender
|
||||||
) {
|
) {
|
||||||
$this->timeChoices = $parameterBag->get('chill_aside_activity.form.time_duration');
|
$this->timeChoices = $parameterBag->get('chill_aside_activity.form.time_duration');
|
||||||
$this->storage = $storage;
|
$this->storage = $storage;
|
||||||
|
$this->categoryRender = $categoryRender;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||||
@@ -74,10 +81,28 @@ final class AsideActivityFormType extends AbstractType
|
|||||||
'required' => true,
|
'required' => true,
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
->add('type', PickAsideActivityCategoryType::class, [
|
->add(
|
||||||
'label' => 'Type',
|
'type',
|
||||||
'required' => true,
|
EntityType::class,
|
||||||
])
|
[
|
||||||
|
'label' => 'Type',
|
||||||
|
'required' => true,
|
||||||
|
'class' => AsideActivityCategory::class,
|
||||||
|
'placeholder' => 'Choose the activity category',
|
||||||
|
'query_builder' => static function (EntityRepository $er) {
|
||||||
|
$qb = $er->createQueryBuilder('ac');
|
||||||
|
$qb->where($qb->expr()->eq('ac.isActive', 'TRUE'))
|
||||||
|
->addOrderBy('ac.ordering', 'ASC');
|
||||||
|
|
||||||
|
return $qb;
|
||||||
|
},
|
||||||
|
'choice_label' => function (AsideActivityCategory $asideActivityCategory) {
|
||||||
|
$options = [];
|
||||||
|
|
||||||
|
return $this->categoryRender->renderString($asideActivityCategory, $options);
|
||||||
|
},
|
||||||
|
]
|
||||||
|
)
|
||||||
->add('duration', ChoiceType::class, $durationTimeOptions)
|
->add('duration', ChoiceType::class, $durationTimeOptions)
|
||||||
->add('note', ChillTextareaType::class, [
|
->add('note', ChillTextareaType::class, [
|
||||||
'label' => 'Note',
|
'label' => 'Note',
|
||||||
|
@@ -1,57 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Chill is a software for social workers
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view
|
|
||||||
* the LICENSE file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Chill\AsideActivityBundle\Form\Type;
|
|
||||||
|
|
||||||
use Chill\AsideActivityBundle\Entity\AsideActivityCategory;
|
|
||||||
use Chill\AsideActivityBundle\Templating\Entity\CategoryRender;
|
|
||||||
use Doctrine\ORM\EntityRepository;
|
|
||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
|
||||||
use Symfony\Component\Form\AbstractType;
|
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
|
||||||
|
|
||||||
final class PickAsideActivityCategoryType extends AbstractType
|
|
||||||
{
|
|
||||||
private CategoryRender $categoryRender;
|
|
||||||
|
|
||||||
public function __construct(
|
|
||||||
CategoryRender $categoryRender
|
|
||||||
) {
|
|
||||||
$this->categoryRender = $categoryRender;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function configureOptions(OptionsResolver $resolver)
|
|
||||||
{
|
|
||||||
$resolver
|
|
||||||
->setDefaults([
|
|
||||||
'class' => AsideActivityCategory::class,
|
|
||||||
'placeholder' => 'Choose the activity category',
|
|
||||||
'query_builder' => static function (EntityRepository $er) {
|
|
||||||
$qb = $er->createQueryBuilder('ac');
|
|
||||||
$qb->where($qb->expr()->eq('ac.isActive', 'TRUE'))
|
|
||||||
->addOrderBy('ac.ordering', 'ASC');
|
|
||||||
|
|
||||||
return $qb;
|
|
||||||
},
|
|
||||||
'choice_label' => function (AsideActivityCategory $asideActivityCategory) {
|
|
||||||
$options = [];
|
|
||||||
|
|
||||||
return $this->categoryRender->renderString($asideActivityCategory, $options);
|
|
||||||
},
|
|
||||||
'attr' => ['class' => 'select2'],
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getParent(): string
|
|
||||||
{
|
|
||||||
return EntityType::class;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,4 +1,4 @@
|
|||||||
|
<div class="{% block crud_content_main_div_class %}col-10 centered{% endblock %}">
|
||||||
{% block crud_content_header %}
|
{% block crud_content_header %}
|
||||||
<h1>{{ ('crud.'~crud_name~'.title_delete')|trans({ '%as_string%': 'Aside Activity' }) }}</h1>
|
<h1>{{ ('crud.'~crud_name~'.title_delete')|trans({ '%as_string%': 'Aside Activity' }) }}</h1>
|
||||||
{% endblock crud_content_header %}
|
{% endblock crud_content_header %}
|
||||||
@@ -27,4 +27,4 @@
|
|||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
{{ form_end(form) }}
|
{{ form_end(form) }}
|
||||||
|
</div>
|
||||||
|
@@ -87,5 +87,5 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
{% extends '@ChillMain/layout.html.twig' %}
|
{% extends '@ChillMain/Admin/layout.html.twig' %}
|
||||||
|
|
||||||
{% block js %}
|
{% block js %}
|
||||||
{{ parent() }}
|
{{ parent() }}
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
{% include('@ChillMain/CRUD/_new_title.html.twig') %}
|
{% include('@ChillMain/CRUD/_new_title.html.twig') %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block admin_content %}
|
||||||
{% embed '@ChillMain/CRUD/_new_content.html.twig' %}
|
{% embed '@ChillMain/CRUD/_new_content.html.twig' %}
|
||||||
{% block content_form_actions_save_and_show %}{% endblock %}
|
{% block content_form_actions_save_and_show %}{% endblock %}
|
||||||
{% endembed %}
|
{% endembed %}
|
||||||
|
@@ -1,26 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Chill is a software for social workers
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view
|
|
||||||
* the LICENSE file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Chill\BudgetBundle\Controller\Admin;
|
|
||||||
|
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
|
||||||
use Symfony\Component\Routing\Annotation\Route;
|
|
||||||
|
|
||||||
class AdminController extends AbstractController
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @Route("/{_locale}/admin/budget", name="chill_admin_budget")
|
|
||||||
*/
|
|
||||||
public function indexAdminAction()
|
|
||||||
{
|
|
||||||
return $this->render('@ChillBudget/Admin/index.html.twig');
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,28 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Chill is a software for social workers
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view
|
|
||||||
* the LICENSE file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Chill\BudgetBundle\Controller\Admin;
|
|
||||||
|
|
||||||
use Chill\MainBundle\CRUD\Controller\CRUDController;
|
|
||||||
use Chill\MainBundle\Pagination\PaginatorInterface;
|
|
||||||
use Doctrine\ORM\QueryBuilder;
|
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
|
||||||
|
|
||||||
class ChargeKindController extends CRUDController
|
|
||||||
{
|
|
||||||
protected function orderQuery(string $action, $query, Request $request, PaginatorInterface $paginator)
|
|
||||||
{
|
|
||||||
/** @var QueryBuilder $query */
|
|
||||||
$query->addOrderBy('e.ordering', 'ASC');
|
|
||||||
|
|
||||||
return $query;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,28 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Chill is a software for social workers
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view
|
|
||||||
* the LICENSE file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Chill\BudgetBundle\Controller\Admin;
|
|
||||||
|
|
||||||
use Chill\MainBundle\CRUD\Controller\CRUDController;
|
|
||||||
use Chill\MainBundle\Pagination\PaginatorInterface;
|
|
||||||
use Doctrine\ORM\QueryBuilder;
|
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
|
||||||
|
|
||||||
class ResourceKindController extends CRUDController
|
|
||||||
{
|
|
||||||
protected function orderQuery(string $action, $query, Request $request, PaginatorInterface $paginator)
|
|
||||||
{
|
|
||||||
/** @var QueryBuilder $query */
|
|
||||||
$query->addOrderBy('e.ordering', 'ASC');
|
|
||||||
|
|
||||||
return $query;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -11,10 +11,6 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Chill\BudgetBundle\DependencyInjection;
|
namespace Chill\BudgetBundle\DependencyInjection;
|
||||||
|
|
||||||
use Chill\BudgetBundle\Controller\Admin\ChargeKindController;
|
|
||||||
use Chill\BudgetBundle\Controller\Admin\ResourceKindController;
|
|
||||||
use Chill\BudgetBundle\Entity\ChargeKind;
|
|
||||||
use Chill\BudgetBundle\Entity\ResourceKind;
|
|
||||||
use Chill\BudgetBundle\Security\Authorization\BudgetElementVoter;
|
use Chill\BudgetBundle\Security\Authorization\BudgetElementVoter;
|
||||||
use Symfony\Component\Config\FileLocator;
|
use Symfony\Component\Config\FileLocator;
|
||||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||||
@@ -37,7 +33,6 @@ class ChillBudgetExtension extends Extension implements PrependExtensionInterfac
|
|||||||
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../config'));
|
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../config'));
|
||||||
$loader->load('services/config.yaml');
|
$loader->load('services/config.yaml');
|
||||||
$loader->load('services/form.yaml');
|
$loader->load('services/form.yaml');
|
||||||
$loader->load('services/repository.yaml');
|
|
||||||
$loader->load('services/security.yaml');
|
$loader->load('services/security.yaml');
|
||||||
$loader->load('services/controller.yaml');
|
$loader->load('services/controller.yaml');
|
||||||
$loader->load('services/templating.yaml');
|
$loader->load('services/templating.yaml');
|
||||||
@@ -53,7 +48,6 @@ class ChillBudgetExtension extends Extension implements PrependExtensionInterfac
|
|||||||
{
|
{
|
||||||
$this->prependAuthorization($container);
|
$this->prependAuthorization($container);
|
||||||
$this->prependRoutes($container);
|
$this->prependRoutes($container);
|
||||||
$this->prependCruds($container);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** (non-PHPdoc).
|
/** (non-PHPdoc).
|
||||||
@@ -81,56 +75,6 @@ class ChillBudgetExtension extends Extension implements PrependExtensionInterfac
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function prependCruds(ContainerBuilder $container)
|
|
||||||
{
|
|
||||||
$container->prependExtensionConfig('chill_main', [
|
|
||||||
'cruds' => [
|
|
||||||
[
|
|
||||||
'class' => ChargeKind::class,
|
|
||||||
'name' => 'charge_kind',
|
|
||||||
'base_path' => '/admin/budget/charge-kind',
|
|
||||||
'form_class' => \Chill\BudgetBundle\Form\Admin\ChargeKindType::class,
|
|
||||||
'controller' => ChargeKindController::class,
|
|
||||||
'actions' => [
|
|
||||||
'index' => [
|
|
||||||
'role' => 'ROLE_ADMIN',
|
|
||||||
'template' => '@ChillBudget/Admin/Charge/index.html.twig',
|
|
||||||
],
|
|
||||||
'new' => [
|
|
||||||
'role' => 'ROLE_ADMIN',
|
|
||||||
'template' => '@ChillBudget/Admin/Charge/new.html.twig',
|
|
||||||
],
|
|
||||||
'edit' => [
|
|
||||||
'role' => 'ROLE_ADMIN',
|
|
||||||
'template' => '@ChillBudget/Admin/Charge/edit.html.twig',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'class' => ResourceKind::class,
|
|
||||||
'name' => 'resource_kind',
|
|
||||||
'base_path' => '/admin/budget/resource-kind',
|
|
||||||
'form_class' => \Chill\BudgetBundle\Form\Admin\ResourceKindType::class,
|
|
||||||
'controller' => ResourceKindController::class,
|
|
||||||
'actions' => [
|
|
||||||
'index' => [
|
|
||||||
'role' => 'ROLE_ADMIN',
|
|
||||||
'template' => '@ChillBudget/Admin/Resource/index.html.twig',
|
|
||||||
],
|
|
||||||
'new' => [
|
|
||||||
'role' => 'ROLE_ADMIN',
|
|
||||||
'template' => '@ChillBudget/Admin/Resource/new.html.twig',
|
|
||||||
],
|
|
||||||
'edit' => [
|
|
||||||
'role' => 'ROLE_ADMIN',
|
|
||||||
'template' => '@ChillBudget/Admin/Resource/edit.html.twig',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
|
||||||
],
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function storeConfig($position, array $config, ContainerBuilder $container)
|
protected function storeConfig($position, array $config, ContainerBuilder $container)
|
||||||
{
|
{
|
||||||
$container
|
$container
|
||||||
|
@@ -26,7 +26,6 @@ class Configuration implements ConfigurationInterface
|
|||||||
|
|
||||||
// ressources
|
// ressources
|
||||||
->arrayNode('resources')->defaultValue([])
|
->arrayNode('resources')->defaultValue([])
|
||||||
->setDeprecated('Chill', '2.0', 'Since the introduction of budget admin entities, config is no longer used')
|
|
||||||
->arrayPrototype()
|
->arrayPrototype()
|
||||||
->children()
|
->children()
|
||||||
->scalarNode('key')->isRequired()->cannotBeEmpty()
|
->scalarNode('key')->isRequired()->cannotBeEmpty()
|
||||||
@@ -50,7 +49,6 @@ class Configuration implements ConfigurationInterface
|
|||||||
->end()
|
->end()
|
||||||
->end()
|
->end()
|
||||||
->arrayNode('charges')->defaultValue([])
|
->arrayNode('charges')->defaultValue([])
|
||||||
->setDeprecated('Chill', '2.0', 'Since the introduction of budget admin entities, config is no longer used')
|
|
||||||
->arrayPrototype()
|
->arrayPrototype()
|
||||||
->children()
|
->children()
|
||||||
->scalarNode('key')->isRequired()->cannotBeEmpty()
|
->scalarNode('key')->isRequired()->cannotBeEmpty()
|
||||||
|
@@ -39,12 +39,6 @@ class Charge extends AbstractElement implements HasCentersInterface
|
|||||||
self::HELP_NOT_RELEVANT,
|
self::HELP_NOT_RELEVANT,
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
|
||||||
* @ORM\ManyToOne(targetEntity=ChargeKind::class, inversedBy="AbstractElement")
|
|
||||||
* @ORM\JoinColumn
|
|
||||||
*/
|
|
||||||
private ?ChargeKind $charge = null;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string
|
||||||
* @ORM\Column(name="help", type="string", nullable=true)
|
* @ORM\Column(name="help", type="string", nullable=true)
|
||||||
@@ -72,11 +66,6 @@ class Charge extends AbstractElement implements HasCentersInterface
|
|||||||
return $this->getHousehold()->getCurrentPersons()->map(static fn (Person $p) => $p->getCenter())->toArray();
|
return $this->getHousehold()->getCurrentPersons()->map(static fn (Person $p) => $p->getCenter())->toArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getCharge(): ?ChargeKind
|
|
||||||
{
|
|
||||||
return $this->charge;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getHelp()
|
public function getHelp()
|
||||||
{
|
{
|
||||||
return $this->help;
|
return $this->help;
|
||||||
@@ -102,13 +91,6 @@ class Charge extends AbstractElement implements HasCentersInterface
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setCharge(?ChargeKind $charge): self
|
|
||||||
{
|
|
||||||
$this->charge = $charge;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setHelp($help)
|
public function setHelp($help)
|
||||||
{
|
{
|
||||||
$this->help = $help;
|
$this->help = $help;
|
||||||
|
@@ -1,108 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Chill is a software for social workers
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view
|
|
||||||
* the LICENSE file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Chill\BudgetBundle\Entity;
|
|
||||||
|
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Type of charge.
|
|
||||||
*
|
|
||||||
* @ORM\Table(name="chill_budget.charge_type")
|
|
||||||
* @ORM\Entity
|
|
||||||
*/
|
|
||||||
class ChargeKind
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @ORM\Id
|
|
||||||
* @ORM\GeneratedValue
|
|
||||||
* @ORM\Column(type="integer")
|
|
||||||
*/
|
|
||||||
private ?int $id = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ORM\Column(type="boolean", options={"default": true})
|
|
||||||
*/
|
|
||||||
private bool $isActive = true;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ORM\Column(type="string", length=255, options={"default": ""}, nullable=false)
|
|
||||||
*/
|
|
||||||
private string $kind = '';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ORM\Column(type="json", length=255, options={"default": "[]"})
|
|
||||||
*/
|
|
||||||
private array $name = [];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ORM\Column(type="float", options={"default": 0.00})
|
|
||||||
*/
|
|
||||||
private float $ordering = 0.00;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ORM\Column(type="json", length=255, options={"default": "[]"})
|
|
||||||
*/
|
|
||||||
private array $tags = [];
|
|
||||||
|
|
||||||
public function getId(): ?int
|
|
||||||
{
|
|
||||||
return $this->id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getIsActive(): bool
|
|
||||||
{
|
|
||||||
return $this->isActive;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getKind(): ?string
|
|
||||||
{
|
|
||||||
return $this->kind;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getName(): ?array
|
|
||||||
{
|
|
||||||
return $this->name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getOrdering(): float
|
|
||||||
{
|
|
||||||
return $this->ordering;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setIsActive(bool $isActive): self
|
|
||||||
{
|
|
||||||
$this->isActive = $isActive;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setKind(?string $kind): self
|
|
||||||
{
|
|
||||||
$this->kind = $kind;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setName(array $name): self
|
|
||||||
{
|
|
||||||
$this->name = $name;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setOrdering(float $ordering): ChargeKind
|
|
||||||
{
|
|
||||||
$this->ordering = $ordering;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -31,12 +31,6 @@ class Resource extends AbstractElement implements HasCentersInterface
|
|||||||
*/
|
*/
|
||||||
private ?int $id = null;
|
private ?int $id = null;
|
||||||
|
|
||||||
/**
|
|
||||||
* @ORM\ManyToOne(targetEntity=ResourceKind::class, inversedBy="AbstractElement")
|
|
||||||
* @ORM\JoinColumn
|
|
||||||
*/
|
|
||||||
private ?ResourceKind $resource = null;
|
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->setStartDate(new DateTimeImmutable('today'));
|
$this->setStartDate(new DateTimeImmutable('today'));
|
||||||
@@ -61,11 +55,6 @@ class Resource extends AbstractElement implements HasCentersInterface
|
|||||||
return $this->id;
|
return $this->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getResource(): ?ResourceKind
|
|
||||||
{
|
|
||||||
return $this->resource;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function isCharge(): bool
|
public function isCharge(): bool
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@@ -75,11 +64,4 @@ class Resource extends AbstractElement implements HasCentersInterface
|
|||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setResource(?ResourceKind $resource): self
|
|
||||||
{
|
|
||||||
$this->resource = $resource;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -1,108 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Chill is a software for social workers
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view
|
|
||||||
* the LICENSE file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Chill\BudgetBundle\Entity;
|
|
||||||
|
|
||||||
use Doctrine\ORM\Mapping as ORM;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Type of resource.
|
|
||||||
*
|
|
||||||
* @ORM\Table(name="chill_budget.resource_type")
|
|
||||||
* @ORM\Entity
|
|
||||||
*/
|
|
||||||
class ResourceKind
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* @ORM\Id
|
|
||||||
* @ORM\GeneratedValue
|
|
||||||
* @ORM\Column(type="integer")
|
|
||||||
*/
|
|
||||||
private ?int $id = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ORM\Column(type="boolean", options={"default": true})
|
|
||||||
*/
|
|
||||||
private bool $isActive = true;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ORM\Column(type="string", length=255, nullable=false, options={"default": ""})
|
|
||||||
*/
|
|
||||||
private string $kind = '';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ORM\Column(type="json", length=255, options={"default": "[]"})
|
|
||||||
*/
|
|
||||||
private array $name = [];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ORM\Column(type="float", options={"default": 0.00})
|
|
||||||
*/
|
|
||||||
private float $ordering = 0.00;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ORM\Column(type="json", length=255, options={"default": "[]"})
|
|
||||||
*/
|
|
||||||
private array $tags = [];
|
|
||||||
|
|
||||||
public function getId(): ?int
|
|
||||||
{
|
|
||||||
return $this->id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getIsActive(): bool
|
|
||||||
{
|
|
||||||
return $this->isActive;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getKind(): ?string
|
|
||||||
{
|
|
||||||
return $this->kind;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getName(): ?array
|
|
||||||
{
|
|
||||||
return $this->name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getOrdering(): float
|
|
||||||
{
|
|
||||||
return $this->ordering;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setIsActive(bool $isActive): self
|
|
||||||
{
|
|
||||||
$this->isActive = $isActive;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setKind(?string $kind): self
|
|
||||||
{
|
|
||||||
$this->kind = $kind;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setName(array $name): self
|
|
||||||
{
|
|
||||||
$this->name = $name;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setOrdering(float $ordering): self
|
|
||||||
{
|
|
||||||
$this->ordering = $ordering;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,42 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Chill is a software for social workers
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view
|
|
||||||
* the LICENSE file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Chill\BudgetBundle\Form\Admin;
|
|
||||||
|
|
||||||
use Chill\BudgetBundle\Entity\ChargeKind;
|
|
||||||
use Chill\MainBundle\Form\Type\TranslatableStringFormType;
|
|
||||||
use Symfony\Component\Form\AbstractType;
|
|
||||||
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
|
||||||
use Symfony\Component\Form\Extension\Core\Type\NumberType;
|
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
|
||||||
|
|
||||||
class ChargeKindType extends AbstractType
|
|
||||||
{
|
|
||||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
|
||||||
{
|
|
||||||
$builder
|
|
||||||
->add('name', TranslatableStringFormType::class, [
|
|
||||||
'label' => 'Nom',
|
|
||||||
])
|
|
||||||
->add('ordering', NumberType::class)
|
|
||||||
->add('isActive', CheckboxType::class, [
|
|
||||||
'label' => 'Actif ?',
|
|
||||||
'required' => false,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function configureOptions(OptionsResolver $resolver)
|
|
||||||
{
|
|
||||||
$resolver
|
|
||||||
->setDefault('class', ChargeKind::class);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,42 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Chill is a software for social workers
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view
|
|
||||||
* the LICENSE file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Chill\BudgetBundle\Form\Admin;
|
|
||||||
|
|
||||||
use Chill\BudgetBundle\Entity\ResourceKind;
|
|
||||||
use Chill\MainBundle\Form\Type\TranslatableStringFormType;
|
|
||||||
use Symfony\Component\Form\AbstractType;
|
|
||||||
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
|
||||||
use Symfony\Component\Form\Extension\Core\Type\NumberType;
|
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
|
||||||
|
|
||||||
class ResourceKindType extends AbstractType
|
|
||||||
{
|
|
||||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
|
||||||
{
|
|
||||||
$builder
|
|
||||||
->add('name', TranslatableStringFormType::class, [
|
|
||||||
'label' => 'Nom',
|
|
||||||
])
|
|
||||||
->add('ordering', NumberType::class)
|
|
||||||
->add('isActive', CheckboxType::class, [
|
|
||||||
'label' => 'Actif ?',
|
|
||||||
'required' => false,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function configureOptions(OptionsResolver $resolver)
|
|
||||||
{
|
|
||||||
$resolver
|
|
||||||
->setDefault('class', ResourceKind::class);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -13,18 +13,15 @@ namespace Chill\BudgetBundle\Form;
|
|||||||
|
|
||||||
use Chill\BudgetBundle\Config\ConfigRepository;
|
use Chill\BudgetBundle\Config\ConfigRepository;
|
||||||
use Chill\BudgetBundle\Entity\Charge;
|
use Chill\BudgetBundle\Entity\Charge;
|
||||||
use Chill\BudgetBundle\Entity\ChargeKind;
|
|
||||||
use Chill\BudgetBundle\Repository\ChargeKindRepository;
|
|
||||||
use Chill\MainBundle\Form\Type\ChillDateType;
|
use Chill\MainBundle\Form\Type\ChillDateType;
|
||||||
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
|
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
|
||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\MoneyType;
|
use Symfony\Component\Form\Extension\Core\Type\MoneyType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
use Symfony\Contracts\Translation\TranslatorInterface;
|
|
||||||
use function array_flip;
|
use function array_flip;
|
||||||
use function asort;
|
use function asort;
|
||||||
|
|
||||||
@@ -34,35 +31,21 @@ class ChargeType extends AbstractType
|
|||||||
|
|
||||||
protected TranslatableStringHelperInterface $translatableStringHelper;
|
protected TranslatableStringHelperInterface $translatableStringHelper;
|
||||||
|
|
||||||
private ChargeKindRepository $repository;
|
|
||||||
|
|
||||||
private TranslatorInterface $translator;
|
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
ConfigRepository $configRepository,
|
ConfigRepository $configRepository,
|
||||||
TranslatableStringHelperInterface $translatableStringHelper,
|
TranslatableStringHelperInterface $translatableStringHelper
|
||||||
ChargeKindRepository $repository,
|
|
||||||
TranslatorInterface $translator
|
|
||||||
) {
|
) {
|
||||||
$this->configRepository = $configRepository;
|
$this->configRepository = $configRepository;
|
||||||
$this->translatableStringHelper = $translatableStringHelper;
|
$this->translatableStringHelper = $translatableStringHelper;
|
||||||
$this->repository = $repository;
|
|
||||||
$this->translator = $translator;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||||
{
|
{
|
||||||
$builder
|
$builder
|
||||||
->add('charge', EntityType::class, [
|
->add('type', ChoiceType::class, [
|
||||||
'class' => ChargeKind::class,
|
'choices' => $this->getTypes(),
|
||||||
'choices' => $this->repository->findAllActive(),
|
'placeholder' => 'Choose a charge type',
|
||||||
'label' => 'Charge type',
|
'attr' => ['class' => ' select2 '],
|
||||||
'required' => true,
|
|
||||||
'placeholder' => $this->translator->trans('admin.form.Choose the type of charge'),
|
|
||||||
'choice_label' => function (ChargeKind $resource) {
|
|
||||||
return $this->translatableStringHelper->localize($resource->getName());
|
|
||||||
},
|
|
||||||
'attr' => ['class' => 'select2'],
|
|
||||||
])
|
])
|
||||||
->add('amount', MoneyType::class)
|
->add('amount', MoneyType::class)
|
||||||
->add('comment', TextareaType::class, [
|
->add('comment', TextareaType::class, [
|
||||||
|
@@ -13,17 +13,15 @@ namespace Chill\BudgetBundle\Form;
|
|||||||
|
|
||||||
use Chill\BudgetBundle\Config\ConfigRepository;
|
use Chill\BudgetBundle\Config\ConfigRepository;
|
||||||
use Chill\BudgetBundle\Entity\Resource;
|
use Chill\BudgetBundle\Entity\Resource;
|
||||||
use Chill\BudgetBundle\Entity\ResourceKind;
|
|
||||||
use Chill\BudgetBundle\Repository\ResourceKindRepository;
|
|
||||||
use Chill\MainBundle\Form\Type\ChillDateType;
|
use Chill\MainBundle\Form\Type\ChillDateType;
|
||||||
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
|
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
|
||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\MoneyType;
|
use Symfony\Component\Form\Extension\Core\Type\MoneyType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
use Symfony\Contracts\Translation\TranslatorInterface;
|
|
||||||
use function array_flip;
|
use function array_flip;
|
||||||
|
|
||||||
class ResourceType extends AbstractType
|
class ResourceType extends AbstractType
|
||||||
@@ -32,35 +30,22 @@ class ResourceType extends AbstractType
|
|||||||
|
|
||||||
protected TranslatableStringHelperInterface $translatableStringHelper;
|
protected TranslatableStringHelperInterface $translatableStringHelper;
|
||||||
|
|
||||||
private ResourceKindRepository $repository;
|
|
||||||
|
|
||||||
private TranslatorInterface $translator;
|
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
ConfigRepository $configRepository,
|
ConfigRepository $configRepository,
|
||||||
TranslatableStringHelperInterface $translatableStringHelper,
|
TranslatableStringHelperInterface $translatableStringHelper
|
||||||
ResourceKindRepository $repository,
|
|
||||||
TranslatorInterface $translator
|
|
||||||
) {
|
) {
|
||||||
$this->configRepository = $configRepository;
|
$this->configRepository = $configRepository;
|
||||||
$this->translatableStringHelper = $translatableStringHelper;
|
$this->translatableStringHelper = $translatableStringHelper;
|
||||||
$this->repository = $repository;
|
|
||||||
$this->translator = $translator;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||||
{
|
{
|
||||||
$builder
|
$builder
|
||||||
->add('resource', EntityType::class, [
|
->add('type', ChoiceType::class, [
|
||||||
'class' => ResourceKind::class,
|
'choices' => $this->getTypes(),
|
||||||
'choices' => $this->repository->findAllActive(),
|
'placeholder' => 'Choose a resource type',
|
||||||
'label' => 'Resource type',
|
'label' => 'Resource element type',
|
||||||
'required' => true,
|
'attr' => ['class' => ' select2 '],
|
||||||
'placeholder' => $this->translator->trans('admin.form.Choose the type of resource'),
|
|
||||||
'choice_label' => function (ResourceKind $resource) {
|
|
||||||
return $this->translatableStringHelper->localize($resource->getName());
|
|
||||||
},
|
|
||||||
'attr' => ['class' => 'select2'],
|
|
||||||
])
|
])
|
||||||
->add('amount', MoneyType::class)
|
->add('amount', MoneyType::class)
|
||||||
->add('comment', TextareaType::class, [
|
->add('comment', TextareaType::class, [
|
||||||
|
@@ -1,62 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Chill is a software for social workers
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view
|
|
||||||
* the LICENSE file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Chill\BudgetBundle\Menu;
|
|
||||||
|
|
||||||
use Chill\MainBundle\Routing\LocalMenuBuilderInterface;
|
|
||||||
use Knp\Menu\MenuItem;
|
|
||||||
use Symfony\Component\Security\Core\Security;
|
|
||||||
|
|
||||||
final class AdminMenuBuilder implements LocalMenuBuilderInterface
|
|
||||||
{
|
|
||||||
private Security $security;
|
|
||||||
|
|
||||||
public function __construct(Security $security)
|
|
||||||
{
|
|
||||||
$this->security = $security;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function buildMenu($menuId, MenuItem $menu, array $parameters)
|
|
||||||
{
|
|
||||||
// all the entries below must have ROLE_ADMIN permissions
|
|
||||||
if (!$this->security->isGranted('ROLE_ADMIN')) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$menu->addChild('Budget', [
|
|
||||||
'route' => 'chill_admin_budget',
|
|
||||||
])
|
|
||||||
->setAttribute('class', 'list-group-item-header')
|
|
||||||
->setExtras([
|
|
||||||
'order' => 7050,
|
|
||||||
'explain' => 'Budget resource and charge type configuration',
|
|
||||||
]);
|
|
||||||
$menu
|
|
||||||
->addChild('admin.menu.Resource types', [
|
|
||||||
'route' => 'chill_crud_resource_kind_index',
|
|
||||||
])
|
|
||||||
->setExtras([
|
|
||||||
'order' => 7060,
|
|
||||||
]);
|
|
||||||
$menu
|
|
||||||
->addChild('admin.menu.Charge types', [
|
|
||||||
'route' => 'chill_crud_charge_kind_index',
|
|
||||||
])
|
|
||||||
->setExtras([
|
|
||||||
'order' => 7070,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function getMenuIds(): array
|
|
||||||
{
|
|
||||||
return ['admin_section', 'admin_budget'];
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,84 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Chill is a software for social workers
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view
|
|
||||||
* the LICENSE file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Chill\BudgetBundle\Repository;
|
|
||||||
|
|
||||||
use Chill\BudgetBundle\Entity\ChargeKind;
|
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
|
||||||
use Doctrine\ORM\EntityRepository;
|
|
||||||
use Doctrine\Persistence\ObjectRepository;
|
|
||||||
|
|
||||||
class ChargeKindRepository implements ObjectRepository
|
|
||||||
{
|
|
||||||
private EntityRepository $repository;
|
|
||||||
|
|
||||||
public function __construct(EntityManagerInterface $entityManager)
|
|
||||||
{
|
|
||||||
$this->repository = $entityManager->getRepository(ChargeKind::class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function find($id): ?ChargeKind
|
|
||||||
{
|
|
||||||
return $this->repository->find($id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return ChargeType[]
|
|
||||||
*/
|
|
||||||
public function findAll(): array
|
|
||||||
{
|
|
||||||
return $this->repository->findAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return ChargeType[]
|
|
||||||
*/
|
|
||||||
public function findAllActive(): array
|
|
||||||
{
|
|
||||||
$qb = $this->repository->createQueryBuilder('c');
|
|
||||||
|
|
||||||
return $qb
|
|
||||||
->select('c')
|
|
||||||
->where($qb->expr()->eq('c.isActive', 'true'))
|
|
||||||
->orderBy('c.ordering', 'ASC')
|
|
||||||
->getQuery()
|
|
||||||
->getResult();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return ChargeType[]
|
|
||||||
*/
|
|
||||||
public function findAllByType(string $type): array
|
|
||||||
{
|
|
||||||
return $this->findBy(['elementType' => $type]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param mixed|null $limit
|
|
||||||
* @param mixed|null $offset
|
|
||||||
*
|
|
||||||
* @return ChargeType[]
|
|
||||||
*/
|
|
||||||
public function findBy(array $criteria, ?array $orderBy = null, ?int $limit = null, ?int $offset = null): array
|
|
||||||
{
|
|
||||||
return $this->repository->findBy($criteria, $orderBy, $limit, $offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function findOneBy(array $criteria): ?ChargeKind
|
|
||||||
{
|
|
||||||
return $this->repository->findOneBy($criteria);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getClassName(): string
|
|
||||||
{
|
|
||||||
return ChargeKind::class;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,84 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Chill is a software for social workers
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view
|
|
||||||
* the LICENSE file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Chill\BudgetBundle\Repository;
|
|
||||||
|
|
||||||
use Chill\BudgetBundle\Entity\ResourceKind;
|
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
|
||||||
use Doctrine\ORM\EntityRepository;
|
|
||||||
use Doctrine\Persistence\ObjectRepository;
|
|
||||||
|
|
||||||
class ResourceKindRepository implements ObjectRepository
|
|
||||||
{
|
|
||||||
private EntityRepository $repository;
|
|
||||||
|
|
||||||
public function __construct(EntityManagerInterface $entityManager)
|
|
||||||
{
|
|
||||||
$this->repository = $entityManager->getRepository(ResourceKind::class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function find($id): ?ResourceKind
|
|
||||||
{
|
|
||||||
return $this->repository->find($id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return ResourceType[]
|
|
||||||
*/
|
|
||||||
public function findAll(): array
|
|
||||||
{
|
|
||||||
return $this->repository->findAll();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return ResourceType[]
|
|
||||||
*/
|
|
||||||
public function findAllActive(): array
|
|
||||||
{
|
|
||||||
$qb = $this->repository->createQueryBuilder('r');
|
|
||||||
|
|
||||||
return $qb
|
|
||||||
->select('r')
|
|
||||||
->where($qb->expr()->eq('r.isActive', 'true'))
|
|
||||||
->orderBy('r.ordering', 'ASC')
|
|
||||||
->getQuery()
|
|
||||||
->getResult();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return ResourceType[]
|
|
||||||
*/
|
|
||||||
public function findAllByType(string $type): array
|
|
||||||
{
|
|
||||||
return $this->findBy(['elementType' => $type]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param mixed|null $limit
|
|
||||||
* @param mixed|null $offset
|
|
||||||
*
|
|
||||||
* @return ResourceType[]
|
|
||||||
*/
|
|
||||||
public function findBy(array $criteria, ?array $orderBy = null, ?int $limit = null, ?int $offset = null): array
|
|
||||||
{
|
|
||||||
return $this->repository->findBy($criteria, $orderBy, $limit, $offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function findOneBy(array $criteria): ?ResourceKind
|
|
||||||
{
|
|
||||||
return $this->repository->findOneBy($criteria);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getClassName(): string
|
|
||||||
{
|
|
||||||
return ResourceKind::class;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,12 +0,0 @@
|
|||||||
{% extends '@ChillMain/CRUD/Admin/index.html.twig' %}
|
|
||||||
|
|
||||||
{% block title %}
|
|
||||||
{% include('@ChillMain/CRUD/_edit_title.html.twig') %}
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block admin_content %}
|
|
||||||
{% embed '@ChillMain/CRUD/_edit_content.html.twig' %}
|
|
||||||
{% block content_form_actions_view %}{% endblock %}
|
|
||||||
{% block content_form_actions_save_and_show %}{% endblock %}
|
|
||||||
{% endembed %}
|
|
||||||
{% endblock %}
|
|
@@ -1,49 +0,0 @@
|
|||||||
{% extends '@ChillMain/Admin/layoutWithVerticalMenu.html.twig' %}
|
|
||||||
|
|
||||||
{% block title %}{{ 'admin.title.Charge Type List'|trans }}{% endblock title %}
|
|
||||||
|
|
||||||
{% block admin_content %}
|
|
||||||
|
|
||||||
<h1>{{ 'admin.title.Charge Type List'|trans }}</h1>
|
|
||||||
|
|
||||||
<table class="records_list table table-bordered border-dark">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>{{ 'Ordering'|trans }}</th>
|
|
||||||
<th>{{ 'Name'|trans }}</th>
|
|
||||||
<th>{{ 'Active'|trans }}</th>
|
|
||||||
<th> </th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for entity in entities %}
|
|
||||||
<tr>
|
|
||||||
<td>{{ entity.ordering }}</td>
|
|
||||||
<td>{{ entity|chill_entity_render_box }}</td>
|
|
||||||
<td style="text-align:center;">
|
|
||||||
{%- if entity.isActive -%}
|
|
||||||
<i class="fa fa-check-square-o"></i>
|
|
||||||
{%- else -%}
|
|
||||||
<i class="fa fa-square-o"></i>
|
|
||||||
{%- endif -%}
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<ul class="record_actions">
|
|
||||||
<li>
|
|
||||||
<a href="{{ path('chill_crud_charge_kind_edit', { 'id': entity.id }) }}" class="btn btn-edit" title="{{ 'edit'|trans }}"></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<ul class="record_actions sticky-form-buttons">
|
|
||||||
<li>
|
|
||||||
<a href="{{ path('chill_crud_charge_kind_new') }}" class="btn btn-create">
|
|
||||||
{{ 'admin.new.Create a new charge type'|trans }}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
{% endblock %}
|
|
@@ -1,11 +0,0 @@
|
|||||||
{% extends '@ChillMain/CRUD/Admin/index.html.twig' %}
|
|
||||||
|
|
||||||
{% block title %}
|
|
||||||
{% include('@ChillMain/CRUD/_new_title.html.twig') %}
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block admin_content %}
|
|
||||||
{% embed '@ChillMain/CRUD/_new_content.html.twig' %}
|
|
||||||
{% block content_form_actions_save_and_show %}{% endblock %}
|
|
||||||
{% endembed %}
|
|
||||||
{% endblock %}
|
|
@@ -1,12 +0,0 @@
|
|||||||
{% extends '@ChillMain/CRUD/Admin/index.html.twig' %}
|
|
||||||
|
|
||||||
{% block title %}
|
|
||||||
{% include('@ChillMain/CRUD/_edit_title.html.twig') %}
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block admin_content %}
|
|
||||||
{% embed '@ChillMain/CRUD/_edit_content.html.twig' %}
|
|
||||||
{% block content_form_actions_view %}{% endblock %}
|
|
||||||
{% block content_form_actions_save_and_show %}{% endblock %}
|
|
||||||
{% endembed %}
|
|
||||||
{% endblock %}
|
|
@@ -1,49 +0,0 @@
|
|||||||
{% extends '@ChillMain/Admin/layoutWithVerticalMenu.html.twig' %}
|
|
||||||
|
|
||||||
{% block title %}{{ 'admin.title.Resource Type List'|trans }}{% endblock title %}
|
|
||||||
|
|
||||||
{% block admin_content %}
|
|
||||||
|
|
||||||
<h1>{{ 'admin.title.Resource Type List'|trans }}</h1>
|
|
||||||
|
|
||||||
<table class="records_list table table-bordered border-dark">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>{{ 'Ordering'|trans }}</th>
|
|
||||||
<th>{{ 'Name'|trans }}</th>
|
|
||||||
<th>{{ 'Active'|trans }}</th>
|
|
||||||
<th> </th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{% for entity in entities %}
|
|
||||||
<tr>
|
|
||||||
<td>{{ entity.ordering }}</td>
|
|
||||||
<td>{{ entity|chill_entity_render_box }}</td>
|
|
||||||
<td style="text-align:center;">
|
|
||||||
{%- if entity.isActive -%}
|
|
||||||
<i class="fa fa-check-square-o"></i>
|
|
||||||
{%- else -%}
|
|
||||||
<i class="fa fa-square-o"></i>
|
|
||||||
{%- endif -%}
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<ul class="record_actions">
|
|
||||||
<li>
|
|
||||||
<a href="{{ path('chill_crud_resource_kind_edit', { 'id': entity.id }) }}" class="btn btn-edit" title="{{ 'edit'|trans }}"></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
{% endfor %}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<ul class="record_actions sticky-form-buttons">
|
|
||||||
<li>
|
|
||||||
<a href="{{ path('chill_crud_resource_kind_new') }}" class="btn btn-create">
|
|
||||||
{{ 'admin.new.Create a new resource type'|trans }}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
{% endblock %}
|
|
@@ -1,11 +0,0 @@
|
|||||||
{% extends '@ChillMain/CRUD/Admin/index.html.twig' %}
|
|
||||||
|
|
||||||
{% block title %}
|
|
||||||
{% include('@ChillMain/CRUD/_new_title.html.twig') %}
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block admin_content %}
|
|
||||||
{% embed '@ChillMain/CRUD/_new_content.html.twig' %}
|
|
||||||
{% block content_form_actions_save_and_show %}{% endblock %}
|
|
||||||
{% endembed %}
|
|
||||||
{% endblock %}
|
|
@@ -1,14 +0,0 @@
|
|||||||
{% extends "@ChillMain/Admin/layoutWithVerticalMenu.html.twig" %}
|
|
||||||
|
|
||||||
{% block vertical_menu_content %}
|
|
||||||
{{ chill_menu('admin_budget', {
|
|
||||||
'layout': '@ChillMain/Admin/menu_admin_section.html.twig',
|
|
||||||
}) }}
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block layout_wvm_content %}
|
|
||||||
{% block admin_content %}
|
|
||||||
<!-- block content empty -->
|
|
||||||
<h1>{{ 'admin.title.Budget configuration'|trans }}</h1>
|
|
||||||
{% endblock %}
|
|
||||||
{% endblock %}
|
|
@@ -16,11 +16,7 @@
|
|||||||
<td class="column-wide el-type">
|
<td class="column-wide el-type">
|
||||||
<span class="badge-title">
|
<span class="badge-title">
|
||||||
<span class="title_label title_label_{{ family }}"></span>
|
<span class="title_label title_label_{{ family }}"></span>
|
||||||
{% if f.isResource %}
|
<span class="title_action">{{ f.type|budget_element_type_display(family) }}<span>
|
||||||
<span class="title_action">{{ f.resource.name|localize_translatable_string }}<span>
|
|
||||||
{% else %}
|
|
||||||
<span class="title_action">{{ f.charge.name|localize_translatable_string }}<span>
|
|
||||||
{% endif %}
|
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td class="column-small">{{ f.amount|format_currency('EUR') }}</td>
|
<td class="column-small">{{ f.amount|format_currency('EUR') }}</td>
|
||||||
|
@@ -3,13 +3,13 @@
|
|||||||
{% set indexPage = 'chill_budget_elements_index' %}
|
{% set indexPage = 'chill_budget_elements_index' %}
|
||||||
{% set activeRouteKey = '' %}
|
{% set activeRouteKey = '' %}
|
||||||
{% set person = element.person %}
|
{% set person = element.person %}
|
||||||
{% set confirm_question = 'Are you sure you want to remove the charge "%type%" associated to "%name%" ?'|trans({ '%name%' : person.firstname ~ ' ' ~ person.lastname, '%type%': element.charge.getName | localize_translatable_string } ) %}
|
{% set confirm_question = 'Are you sure you want to remove the charge "%type%" associated to "%name%" ?'|trans({ '%name%' : person.firstname ~ ' ' ~ person.lastname, '%type%': element.type|budget_element_type_display('charge') } ) %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% set template = '@ChillPerson/Household/layout.html.twig' %}
|
{% set template = '@ChillPerson/Household/layout.html.twig' %}
|
||||||
{% set indexPage = 'chill_budget_elements_household_index' %}
|
{% set indexPage = 'chill_budget_elements_household_index' %}
|
||||||
{% set activeRouteKey = '' %}
|
{% set activeRouteKey = '' %}
|
||||||
{% set household = element.household %}
|
{% set household = element.household %}
|
||||||
{% set confirm_question = 'Are you sure you want to remove the charge "%type%" associated to household "%household%" ?'|trans({ '%household%' : household.id, '%type%': element.charge.getName | localize_translatable_string } ) %}
|
{% set confirm_question = 'Are you sure you want to remove the charge "%type%" associated to household "%household%" ?'|trans({ '%household%' : household.id, '%type%': element.type|budget_element_type_display('charge') } ) %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% extends template %}
|
{% extends template %}
|
||||||
|
@@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
{{ form_start(form) }}
|
{{ form_start(form) }}
|
||||||
|
|
||||||
{{ form_row(form.charge) }}
|
{{ form_row(form.type) }}
|
||||||
{{ form_row(form.amount) }}
|
{{ form_row(form.amount) }}
|
||||||
{{ form_row(form.help) }}
|
{{ form_row(form.help) }}
|
||||||
{{ form_row(form.comment) }}
|
{{ form_row(form.comment) }}
|
||||||
|
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
{{ form_start(form) }}
|
{{ form_start(form) }}
|
||||||
|
|
||||||
{{ form_row(form.charge) }}
|
{{ form_row(form.type) }}
|
||||||
{{ form_row(form.amount) }}
|
{{ form_row(form.amount) }}
|
||||||
{{ form_row(form.help) }}
|
{{ form_row(form.help) }}
|
||||||
{{ form_row(form.comment) }}
|
{{ form_row(form.comment) }}
|
||||||
|
@@ -25,7 +25,7 @@
|
|||||||
<div class="item-row">
|
<div class="item-row">
|
||||||
<h2 class="badge-title">
|
<h2 class="badge-title">
|
||||||
<span class="title_label title_label_charge"></span>
|
<span class="title_label title_label_charge"></span>
|
||||||
<span class="title_action">{{ element.charge.getName | localize_translatable_string }}</span>
|
<span class="title_action">{{ element.type|budget_element_type_display('charge') }}</span>
|
||||||
</h2>
|
</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-row separator">
|
<div class="item-row separator">
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
<span class="chill-entity">{{ entity.name|localize_translatable_string }}</span>
|
|
@@ -3,13 +3,13 @@
|
|||||||
{% set indexPage = 'chill_budget_elements_index' %}
|
{% set indexPage = 'chill_budget_elements_index' %}
|
||||||
{% set activeRouteKey = '' %}
|
{% set activeRouteKey = '' %}
|
||||||
{% set person = element.person %}
|
{% set person = element.person %}
|
||||||
{% set confirm_question = 'Are you sure you want to remove the ressource "%type%" associated to "%name%" ?'|trans({ '%name%' : person.firstname ~ ' ' ~ person.lastname, '%type%': element.resource.getName | localize_translatable_string } ) %}
|
{% set confirm_question = 'Are you sure you want to remove the ressource "%type%" associated to "%name%" ?'|trans({ '%name%' : person.firstname ~ ' ' ~ person.lastname, '%type%': element.type|budget_element_type_display('resource') } ) %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% set template = '@ChillPerson/Household/layout.html.twig' %}
|
{% set template = '@ChillPerson/Household/layout.html.twig' %}
|
||||||
{% set indexPage = 'chill_budget_elements_household_index' %}
|
{% set indexPage = 'chill_budget_elements_household_index' %}
|
||||||
{% set activeRouteKey = '' %}
|
{% set activeRouteKey = '' %}
|
||||||
{% set household = element.household %}
|
{% set household = element.household %}
|
||||||
{% set confirm_question = 'Are you sure you want to remove the ressource "%type%" associated to household "%household%" ?'|trans({ '%household%' : household.id, '%type%': element.resource.getName | localize_translatable_string} ) %}
|
{% set confirm_question = 'Are you sure you want to remove the ressource "%type%" associated to household "%household%" ?'|trans({ '%household%' : household.id, '%type%': element.type|budget_element_type_display('resource') } ) %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% extends template %}
|
{% extends template %}
|
||||||
|
@@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
{{ form_start(form) }}
|
{{ form_start(form) }}
|
||||||
|
|
||||||
{{ form_row(form.resource) }}
|
{{ form_row(form.type) }}
|
||||||
{{ form_row(form.amount) }}
|
{{ form_row(form.amount) }}
|
||||||
{{ form_row(form.comment) }}
|
{{ form_row(form.comment) }}
|
||||||
{{ form_row(form.startDate) }}
|
{{ form_row(form.startDate) }}
|
||||||
|
@@ -22,7 +22,8 @@
|
|||||||
<h1>{{ title }}</h1>
|
<h1>{{ title }}</h1>
|
||||||
|
|
||||||
{{ form_start(form) }}
|
{{ form_start(form) }}
|
||||||
{{ form_row(form.resource) }}
|
|
||||||
|
{{ form_row(form.type) }}
|
||||||
{{ form_row(form.amount) }}
|
{{ form_row(form.amount) }}
|
||||||
{{ form_row(form.comment) }}
|
{{ form_row(form.comment) }}
|
||||||
{{ form_row(form.startDate) }}
|
{{ form_row(form.startDate) }}
|
||||||
|
@@ -25,7 +25,7 @@
|
|||||||
<div class="item-row">
|
<div class="item-row">
|
||||||
<h2 class="badge-title">
|
<h2 class="badge-title">
|
||||||
<span class="title_label title_label_resource"></span>
|
<span class="title_label title_label_resource"></span>
|
||||||
<span class="title_action title_action">{{ element.resource.getName | localize_translatable_string }}</span>
|
<span class="title_action title_action">{{ element.type|budget_element_type_display('resource') }}</span>
|
||||||
</h2>
|
</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="item-row separator">
|
<div class="item-row separator">
|
||||||
|
@@ -1,55 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Chill is a software for social workers
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view
|
|
||||||
* the LICENSE file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Chill\BudgetBundle\Templating;
|
|
||||||
|
|
||||||
use Chill\BudgetBundle\Entity\ChargeKind;
|
|
||||||
use Chill\BudgetBundle\Entity\ResourceKind;
|
|
||||||
use Chill\MainBundle\Templating\Entity\ChillEntityRenderInterface;
|
|
||||||
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
|
|
||||||
use Symfony\Component\Templating\EngineInterface;
|
|
||||||
|
|
||||||
final class BudgetElementTypeRender implements ChillEntityRenderInterface
|
|
||||||
{
|
|
||||||
private EngineInterface $engine;
|
|
||||||
|
|
||||||
private TranslatableStringHelperInterface $translatableStringHelper;
|
|
||||||
|
|
||||||
public function __construct(TranslatableStringHelperInterface $translatableStringHelper, EngineInterface $engine)
|
|
||||||
{
|
|
||||||
$this->translatableStringHelper = $translatableStringHelper;
|
|
||||||
$this->engine = $engine;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function renderBox($entity, array $options): string
|
|
||||||
{
|
|
||||||
return $this->engine->render('@ChillBudget/Entity/budget_element_type.html.twig', [
|
|
||||||
'entity' => $entity,
|
|
||||||
'options' => $options,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function renderString($entity, array $options): string
|
|
||||||
{
|
|
||||||
$title = '';
|
|
||||||
|
|
||||||
if (null !== $entity->getName()) {
|
|
||||||
return $this->translatableStringHelper->localize($entity->getName());
|
|
||||||
}
|
|
||||||
|
|
||||||
return $title;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function supports($entity, array $options): bool
|
|
||||||
{
|
|
||||||
return $entity instanceof ChargeKind || $entity instanceof ResourceKind;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -3,7 +3,3 @@ services:
|
|||||||
autowire: true
|
autowire: true
|
||||||
resource: '../../Controller'
|
resource: '../../Controller'
|
||||||
tags: ['controller.service_arguments']
|
tags: ['controller.service_arguments']
|
||||||
Chill\BudgetBundle\Controller\Admin\:
|
|
||||||
autowire: true
|
|
||||||
autoconfigure: true
|
|
||||||
resource: '../../Controller/Admin'
|
|
||||||
|
@@ -1,9 +1,14 @@
|
|||||||
services:
|
services:
|
||||||
Chill\BudgetBundle\Form\:
|
Chill\BudgetBundle\Form\ResourceType:
|
||||||
autowire: true
|
arguments:
|
||||||
resource: '../../Form'
|
$configRepository: '@Chill\BudgetBundle\Config\ConfigRepository'
|
||||||
|
$translatableStringHelper: '@Chill\MainBundle\Templating\TranslatableStringHelper'
|
||||||
|
tags:
|
||||||
|
- { name: 'form.type' }
|
||||||
|
|
||||||
|
Chill\BudgetBundle\Form\ChargeType:
|
||||||
|
arguments:
|
||||||
|
$configRepository: '@Chill\BudgetBundle\Config\ConfigRepository'
|
||||||
|
$translatableStringHelper: '@Chill\MainBundle\Templating\TranslatableStringHelper'
|
||||||
tags:
|
tags:
|
||||||
- { name: 'form.type' }
|
- { name: 'form.type' }
|
||||||
# Chill\BudgetBundle\Form\Admin\:
|
|
||||||
# autowire: true
|
|
||||||
# resource: '../../Form/Admin'
|
|
||||||
|
@@ -1,5 +1,8 @@
|
|||||||
services:
|
services:
|
||||||
Chill\BudgetBundle\Menu\:
|
Chill\BudgetBundle\Menu\PersonMenuBuilder:
|
||||||
|
autowire: true
|
||||||
|
autoconfigure: true
|
||||||
|
|
||||||
|
Chill\BudgetBundle\Menu\HouseholdMenuBuilder:
|
||||||
autowire: true
|
autowire: true
|
||||||
autoconfigure: true
|
autoconfigure: true
|
||||||
resource: './../../Menu'
|
|
||||||
|
@@ -1,5 +0,0 @@
|
|||||||
services:
|
|
||||||
Chill\BudgetBundle\Repository\:
|
|
||||||
autowire: true
|
|
||||||
autoconfigure: true
|
|
||||||
resource: './../../Repository'
|
|
@@ -1,5 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
Chill\BudgetBundle\Templating\:
|
Chill\BudgetBundle\Templating\Twig:
|
||||||
autowire: true
|
arguments:
|
||||||
autoconfigure: true
|
$configRepository: '@Chill\BudgetBundle\Config\ConfigRepository'
|
||||||
resource: '../../Templating'
|
$translatableStringHelper: '@Chill\MainBundle\Templating\TranslatableStringHelper'
|
||||||
|
tags:
|
||||||
|
- { name: 'twig.extension' }
|
@@ -1,39 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Chill is a software for social workers
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view
|
|
||||||
* the LICENSE file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Chill\Migrations\Budget;
|
|
||||||
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
|
||||||
use Doctrine\Migrations\AbstractMigration;
|
|
||||||
|
|
||||||
final class Version20221116163445 extends AbstractMigration
|
|
||||||
{
|
|
||||||
public function down(Schema $schema): void
|
|
||||||
{
|
|
||||||
$this->addSql('DROP SEQUENCE chill_budget.charge_type_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP SEQUENCE chill_budget.resource_type_id_seq CASCADE');
|
|
||||||
$this->addSql('DROP TABLE chill_budget.charge_type');
|
|
||||||
$this->addSql('DROP TABLE chill_budget.resource_type');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getDescription(): string
|
|
||||||
{
|
|
||||||
return 'Create resource type and charge type';
|
|
||||||
}
|
|
||||||
|
|
||||||
public function up(Schema $schema): void
|
|
||||||
{
|
|
||||||
$this->addSql('CREATE SEQUENCE chill_budget.charge_type_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE SEQUENCE chill_budget.resource_type_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
|
||||||
$this->addSql('CREATE TABLE chill_budget.charge_type (id INT NOT NULL, isActive BOOLEAN DEFAULT TRUE NOT NULL, name JSONB DEFAULT \'{}\'::jsonb NOT NULL, ordering DOUBLE PRECISION DEFAULT \'0\' NOT NULL, PRIMARY KEY(id))');
|
|
||||||
$this->addSql('CREATE TABLE chill_budget.resource_type (id INT NOT NULL, isActive BOOLEAN DEFAULT TRUE NOT NULL, name JSONB DEFAULT \'{}\'::jsonb NOT NULL, ordering DOUBLE PRECISION DEFAULT \'0\' NOT NULL, PRIMARY KEY(id))');
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,41 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Chill is a software for social workers
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view
|
|
||||||
* the LICENSE file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Chill\Migrations\Budget;
|
|
||||||
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
|
||||||
use Doctrine\Migrations\AbstractMigration;
|
|
||||||
|
|
||||||
final class Version20221130101659 extends AbstractMigration
|
|
||||||
{
|
|
||||||
public function down(Schema $schema): void
|
|
||||||
{
|
|
||||||
$this->addSql('ALTER TABLE chill_budget.resource_type DROP kind');
|
|
||||||
$this->addSql('ALTER TABLE chill_budget.resource_type DROP tags');
|
|
||||||
$this->addSql('ALTER TABLE chill_budget.charge_type DROP kind');
|
|
||||||
$this->addSql('ALTER TABLE chill_budget.charge_type DROP tags');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getDescription(): string
|
|
||||||
{
|
|
||||||
return 'Add kind and tags property to charge and resource types';
|
|
||||||
}
|
|
||||||
|
|
||||||
public function up(Schema $schema): void
|
|
||||||
{
|
|
||||||
$this->addSql('ALTER TABLE chill_budget.charge_type ADD kind VARCHAR(255) DEFAULT \'\' NOT NULL');
|
|
||||||
$this->addSql('ALTER TABLE chill_budget.charge_type ADD tags JSONB DEFAULT \'{}\'::jsonb NOT NULL');
|
|
||||||
$this->addSql('COMMENT ON COLUMN chill_budget.charge_type.tags IS \'(DC2Type:jsonb)\'');
|
|
||||||
$this->addSql('ALTER TABLE chill_budget.resource_type ADD kind VARCHAR(255) DEFAULT \'\' NOT NULL');
|
|
||||||
$this->addSql('ALTER TABLE chill_budget.resource_type ADD tags JSONB DEFAULT \'{}\'::jsonb NOT NULL');
|
|
||||||
$this->addSql('COMMENT ON COLUMN chill_budget.resource_type.tags IS \'(DC2Type:jsonb)\'');
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,41 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Chill is a software for social workers
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view
|
|
||||||
* the LICENSE file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Chill\Migrations\Budget;
|
|
||||||
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
|
||||||
use Doctrine\Migrations\AbstractMigration;
|
|
||||||
|
|
||||||
final class Version20221202165608 extends AbstractMigration
|
|
||||||
{
|
|
||||||
public function down(Schema $schema): void
|
|
||||||
{
|
|
||||||
$this->addSql('ALTER TABLE chill_budget.charge DROP CONSTRAINT FK_5C99D2C355284914');
|
|
||||||
$this->addSql('ALTER TABLE chill_budget.charge DROP charge_id');
|
|
||||||
$this->addSql('ALTER TABLE chill_budget.resource DROP CONSTRAINT FK_5E0A5E9789329D25');
|
|
||||||
$this->addSql('ALTER TABLE chill_budget.resource DROP resource_id');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getDescription(): string
|
|
||||||
{
|
|
||||||
return 'Integrate budget admin entity';
|
|
||||||
}
|
|
||||||
|
|
||||||
public function up(Schema $schema): void
|
|
||||||
{
|
|
||||||
$this->addSql('ALTER TABLE chill_budget.charge ADD charge_id INT DEFAULT NULL');
|
|
||||||
$this->addSql('ALTER TABLE chill_budget.charge ADD CONSTRAINT FK_5C99D2C355284914 FOREIGN KEY (charge_id) REFERENCES chill_budget.charge_type (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('CREATE INDEX IDX_5C99D2C355284914 ON chill_budget.charge (charge_id)');
|
|
||||||
$this->addSql('ALTER TABLE chill_budget.resource ADD resource_id INT DEFAULT NULL');
|
|
||||||
$this->addSql('ALTER TABLE chill_budget.resource ADD CONSTRAINT FK_5E0A5E9789329D25 FOREIGN KEY (resource_id) REFERENCES chill_budget.resource_type (id) NOT DEFERRABLE INITIALLY IMMEDIATE');
|
|
||||||
$this->addSql('CREATE INDEX IDX_5E0A5E9789329D25 ON chill_budget.resource (resource_id)');
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,81 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Chill is a software for social workers
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view
|
|
||||||
* the LICENSE file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Chill\Migrations\Budget;
|
|
||||||
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
|
||||||
use Doctrine\DBAL\Types\Types;
|
|
||||||
use Doctrine\Migrations\AbstractMigration;
|
|
||||||
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
|
|
||||||
use Symfony\Component\DependencyInjection\ContainerInterface;
|
|
||||||
|
|
||||||
final class Version20221207105407 extends AbstractMigration implements ContainerAwareInterface
|
|
||||||
{
|
|
||||||
public ContainerInterface $container;
|
|
||||||
|
|
||||||
public function down(Schema $schema): void
|
|
||||||
{
|
|
||||||
$this->addSql('DELETE FROM chill_budget.resource_type;');
|
|
||||||
$this->addSql('DELETE FROM chill_budget.charge_type;');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getDescription(): string
|
|
||||||
{
|
|
||||||
return 'Use new budget admin entities';
|
|
||||||
}
|
|
||||||
|
|
||||||
public function setContainer(?ContainerInterface $container = null)
|
|
||||||
{
|
|
||||||
$this->container = $container;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function up(Schema $schema): void
|
|
||||||
{
|
|
||||||
$resources = $this->container->getParameter('chill_budget.resources');
|
|
||||||
$charges = $this->container->getParameter('chill_budget.charges');
|
|
||||||
|
|
||||||
foreach ($resources as $value) {
|
|
||||||
$lang = $value['labels'][0]['lang'];
|
|
||||||
$label = $value['labels'][0]['label'];
|
|
||||||
$kind = $value['key'];
|
|
||||||
$this->addSql(
|
|
||||||
'INSERT INTO chill_budget.resource_type (id, isActive, name, ordering, kind) VALUES (
|
|
||||||
nextval(\'chill_budget.resource_type_id_seq\'), true, jsonb_build_object(:lang::text, :label::text), 0, :kind::text)',
|
|
||||||
['lang' => $lang, 'label' => $label, 'kind' => $kind],
|
|
||||||
['lang' => Types::STRING, 'label' => Types::STRING, 'kind' => Types::STRING]
|
|
||||||
);
|
|
||||||
$this->addSql(
|
|
||||||
'UPDATE chill_budget.resource SET resource_id = resource_type.id
|
|
||||||
FROM chill_budget.resource_type WHERE resource.type = :kind AND resource_type.kind = resource.type;',
|
|
||||||
['kind' => $kind],
|
|
||||||
['kind' => Types::STRING]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($charges as $value) {
|
|
||||||
$lang = $value['labels'][0]['lang'];
|
|
||||||
$label = $value['labels'][0]['label'];
|
|
||||||
$kind = $value['key'];
|
|
||||||
$this->addSql(
|
|
||||||
'INSERT INTO chill_budget.charge_type VALUES (nextval(\'chill_budget.charge_type_id_seq\'), true,
|
|
||||||
jsonb_build_object(:lang::text, :label::text), 0, :kind::text);',
|
|
||||||
['lang' => $lang, 'label' => $label, 'kind' => $kind],
|
|
||||||
['lang' => Types::STRING, 'label' => Types::STRING, 'kind' => Types::STRING]
|
|
||||||
);
|
|
||||||
$this->addSql(
|
|
||||||
'UPDATE chill_budget.charge SET charge_id = charge_type.id
|
|
||||||
FROM chill_budget.charge_type WHERE charge.type = :kind AND charge_type.kind = charge.type;',
|
|
||||||
['kind' => $kind],
|
|
||||||
['kind' => Types::STRING]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -58,8 +58,6 @@ Charge updated: charge mise à jour
|
|||||||
|
|
||||||
Choose a resource type: Choisissez un type de ressource
|
Choose a resource type: Choisissez un type de ressource
|
||||||
Choose a charge type: Choisissez un type de charge
|
Choose a charge type: Choisissez un type de charge
|
||||||
Resource type: Type de ressource
|
|
||||||
Charge type: Type de charge
|
|
||||||
Amount: Montant
|
Amount: Montant
|
||||||
Comment: Commentaire
|
Comment: Commentaire
|
||||||
|
|
||||||
@@ -76,28 +74,3 @@ The balance: Différence entre ressources et charges
|
|||||||
|
|
||||||
Valid since %startDate% until %endDate%: Valide depuis le %startDate% jusqu'au %endDate%
|
Valid since %startDate% until %endDate%: Valide depuis le %startDate% jusqu'au %endDate%
|
||||||
Valid since %startDate%: Valide depuis le %startDate%
|
Valid since %startDate%: Valide depuis le %startDate%
|
||||||
|
|
||||||
## admin
|
|
||||||
|
|
||||||
crud:
|
|
||||||
resource_kind:
|
|
||||||
title_new: Nouveau type de ressource
|
|
||||||
title_edit: Modifier le type de ressource
|
|
||||||
charge_kind:
|
|
||||||
title_new: Nouveau type de charge
|
|
||||||
title_edit: Modifier le type de charge
|
|
||||||
|
|
||||||
admin:
|
|
||||||
menu:
|
|
||||||
Resource types: Types de ressource
|
|
||||||
Charge types: Types de charge
|
|
||||||
title:
|
|
||||||
Charge Type List: Liste des types de charge
|
|
||||||
Resource Type List: Liste des types de ressource
|
|
||||||
Budget configuration: Configuration des éléments de budget
|
|
||||||
new:
|
|
||||||
Create a new charge type: Créér un nouveau type de charge
|
|
||||||
Create a new resource type: Créér un nouveau type de ressource
|
|
||||||
form:
|
|
||||||
Choose the type of resource: Choisissez une type de ressource
|
|
||||||
Choose the type of charge: Choisissez une type de charge
|
|
||||||
|
@@ -45,7 +45,6 @@ use Symfony\Component\HttpFoundation\Response;
|
|||||||
use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
|
use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
|
||||||
use Symfony\Component\Routing\Annotation\Route;
|
use Symfony\Component\Routing\Annotation\Route;
|
||||||
use Symfony\Component\Serializer\SerializerInterface;
|
use Symfony\Component\Serializer\SerializerInterface;
|
||||||
use Symfony\Contracts\Translation\TranslatorInterface;
|
|
||||||
|
|
||||||
class CalendarController extends AbstractController
|
class CalendarController extends AbstractController
|
||||||
{
|
{
|
||||||
@@ -69,8 +68,6 @@ class CalendarController extends AbstractController
|
|||||||
|
|
||||||
private TranslatableStringHelperInterface $translatableStringHelper;
|
private TranslatableStringHelperInterface $translatableStringHelper;
|
||||||
|
|
||||||
private TranslatorInterface $translator;
|
|
||||||
|
|
||||||
private UserRepositoryInterface $userRepository;
|
private UserRepositoryInterface $userRepository;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
@@ -84,8 +81,7 @@ class CalendarController extends AbstractController
|
|||||||
TranslatableStringHelperInterface $translatableStringHelper,
|
TranslatableStringHelperInterface $translatableStringHelper,
|
||||||
PersonRepository $personRepository,
|
PersonRepository $personRepository,
|
||||||
AccompanyingPeriodRepository $accompanyingPeriodRepository,
|
AccompanyingPeriodRepository $accompanyingPeriodRepository,
|
||||||
UserRepositoryInterface $userRepository,
|
UserRepositoryInterface $userRepository
|
||||||
TranslatorInterface $translator
|
|
||||||
) {
|
) {
|
||||||
$this->calendarACLAwareRepository = $calendarACLAwareRepository;
|
$this->calendarACLAwareRepository = $calendarACLAwareRepository;
|
||||||
$this->docGeneratorTemplateRepository = $docGeneratorTemplateRepository;
|
$this->docGeneratorTemplateRepository = $docGeneratorTemplateRepository;
|
||||||
@@ -98,7 +94,6 @@ class CalendarController extends AbstractController
|
|||||||
$this->personRepository = $personRepository;
|
$this->personRepository = $personRepository;
|
||||||
$this->accompanyingPeriodRepository = $accompanyingPeriodRepository;
|
$this->accompanyingPeriodRepository = $accompanyingPeriodRepository;
|
||||||
$this->userRepository = $userRepository;
|
$this->userRepository = $userRepository;
|
||||||
$this->translator = $translator;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -136,7 +131,7 @@ class CalendarController extends AbstractController
|
|||||||
$em->remove($entity);
|
$em->remove($entity);
|
||||||
$em->flush();
|
$em->flush();
|
||||||
|
|
||||||
$this->addFlash('success', $this->translator
|
$this->addFlash('success', $this->get('translator')
|
||||||
->trans('The calendar item has been successfully removed.'));
|
->trans('The calendar item has been successfully removed.'));
|
||||||
|
|
||||||
return new RedirectResponse($redirectRoute);
|
return new RedirectResponse($redirectRoute);
|
||||||
@@ -195,7 +190,7 @@ class CalendarController extends AbstractController
|
|||||||
if ($form->isSubmitted() && $form->isValid()) {
|
if ($form->isSubmitted() && $form->isValid()) {
|
||||||
$em->flush();
|
$em->flush();
|
||||||
|
|
||||||
$this->addFlash('success', $this->translator->trans('Success : calendar item updated!'));
|
$this->addFlash('success', $this->get('translator')->trans('Success : calendar item updated!'));
|
||||||
|
|
||||||
if ($form->get('save_and_upload_doc')->isClicked()) {
|
if ($form->get('save_and_upload_doc')->isClicked()) {
|
||||||
return $this->redirectToRoute('chill_calendar_calendardoc_new', ['id' => $entity->getId()]);
|
return $this->redirectToRoute('chill_calendar_calendardoc_new', ['id' => $entity->getId()]);
|
||||||
@@ -215,7 +210,7 @@ class CalendarController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($form->isSubmitted() && !$form->isValid()) {
|
if ($form->isSubmitted() && !$form->isValid()) {
|
||||||
$this->addFlash('error', $this->translator->trans('This form contains errors'));
|
$this->addFlash('error', $this->get('translator')->trans('This form contains errors'));
|
||||||
}
|
}
|
||||||
|
|
||||||
$entity_array = $this->serializer->normalize($entity, 'json', ['groups' => 'read']);
|
$entity_array = $this->serializer->normalize($entity, 'json', ['groups' => 'read']);
|
||||||
@@ -374,7 +369,7 @@ class CalendarController extends AbstractController
|
|||||||
$em->persist($entity);
|
$em->persist($entity);
|
||||||
$em->flush();
|
$em->flush();
|
||||||
|
|
||||||
$this->addFlash('success', $this->translator->trans('Success : calendar item created!'));
|
$this->addFlash('success', $this->get('translator')->trans('Success : calendar item created!'));
|
||||||
|
|
||||||
if ($form->get('save_and_upload_doc')->isClicked()) {
|
if ($form->get('save_and_upload_doc')->isClicked()) {
|
||||||
return $this->redirectToRoute('chill_calendar_calendardoc_new', ['id' => $entity->getId()]);
|
return $this->redirectToRoute('chill_calendar_calendardoc_new', ['id' => $entity->getId()]);
|
||||||
@@ -398,7 +393,7 @@ class CalendarController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($form->isSubmitted() && !$form->isValid()) {
|
if ($form->isSubmitted() && !$form->isValid()) {
|
||||||
$this->addFlash('error', $this->translator->trans('This form contains errors'));
|
$this->addFlash('error', $this->get('translator')->trans('This form contains errors'));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $view) {
|
if (null === $view) {
|
||||||
|
@@ -66,10 +66,6 @@ final class AgentAggregator implements AggregatorInterface
|
|||||||
return 'Agent';
|
return 'Agent';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $value || '' === $value) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
$r = $this->userRepository->find($value);
|
$r = $this->userRepository->find($value);
|
||||||
|
|
||||||
return $this->userRender->renderString($r, []);
|
return $this->userRender->renderString($r, []);
|
||||||
|
@@ -67,10 +67,6 @@ class CancelReasonAggregator implements AggregatorInterface
|
|||||||
return 'Cancel reason';
|
return 'Cancel reason';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $value || '' === $value) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
$j = $this->cancelReasonRepository->find($value);
|
$j = $this->cancelReasonRepository->find($value);
|
||||||
|
|
||||||
return $this->translatableStringHelper->localize(
|
return $this->translatableStringHelper->localize(
|
||||||
|
@@ -66,10 +66,6 @@ final class JobAggregator implements AggregatorInterface
|
|||||||
return 'Job';
|
return 'Job';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $value || '' === $value) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
$j = $this->jobRepository->find($value);
|
$j = $this->jobRepository->find($value);
|
||||||
|
|
||||||
return $this->translatableStringHelper->localize(
|
return $this->translatableStringHelper->localize(
|
||||||
|
@@ -60,10 +60,6 @@ final class LocationAggregator implements AggregatorInterface
|
|||||||
return 'Location';
|
return 'Location';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $value || '' === $value) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
$l = $this->locationRepository->find($value);
|
$l = $this->locationRepository->find($value);
|
||||||
|
|
||||||
return $l->getName();
|
return $l->getName();
|
||||||
|
@@ -66,13 +66,7 @@ final class LocationTypeAggregator implements AggregatorInterface
|
|||||||
return 'Location type';
|
return 'Location type';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $value || '' === $value) {
|
$j = $this->locationTypeRepository->find($value);
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (null === $j = $this->locationTypeRepository->find($value)) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->translatableStringHelper->localize(
|
return $this->translatableStringHelper->localize(
|
||||||
$j->getTitle()
|
$j->getTitle()
|
||||||
|
@@ -66,10 +66,6 @@ final class ScopeAggregator implements AggregatorInterface
|
|||||||
return 'Scope';
|
return 'Scope';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $value || '' === $value) {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
$s = $this->scopeRepository->find($value);
|
$s = $this->scopeRepository->find($value);
|
||||||
|
|
||||||
return $this->translatableStringHelper->localize(
|
return $this->translatableStringHelper->localize(
|
||||||
|
@@ -39,6 +39,7 @@ class AdminMenuBuilder implements LocalMenuBuilderInterface
|
|||||||
->setAttribute('class', 'list-group-item-header')
|
->setAttribute('class', 'list-group-item-header')
|
||||||
->setExtras([
|
->setExtras([
|
||||||
'order' => 6000,
|
'order' => 6000,
|
||||||
|
'icons' => ['calendar'],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$menu->addChild('Cancel reason', [
|
$menu->addChild('Cancel reason', [
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
{% import "@ChillDocStore/Macro/macro.html.twig" as m %}
|
{% import "@ChillDocStore/Macro/macro.html.twig" as m %}
|
||||||
{% import "@ChillDocStore/Macro/macro_mimeicon.html.twig" as mm %}
|
{% import "@ChillDocStore/Macro/macro_mimeicon.html.twig" as mm %}
|
||||||
|
|
||||||
<div class="accompanying-course-work">
|
<div class="accompanying_course_work-list">
|
||||||
<table class="obj-res-eval my-3">
|
<table class="obj-res-eval my-3">
|
||||||
<thead>
|
<thead>
|
||||||
<th class="eval">
|
<th class="eval">
|
||||||
|
@@ -39,6 +39,7 @@ class AdminMenuBuilder implements LocalMenuBuilderInterface
|
|||||||
->setAttribute('class', 'list-group-item-header')
|
->setAttribute('class', 'list-group-item-header')
|
||||||
->setExtras([
|
->setExtras([
|
||||||
'order' => 4500,
|
'order' => 4500,
|
||||||
|
'icons' => ['plus'],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$menu->addChild('Custom fields group', [
|
$menu->addChild('Custom fields group', [
|
||||||
|
@@ -39,6 +39,7 @@ class AdminMenuBuilder implements LocalMenuBuilderInterface
|
|||||||
->setAttribute('class', 'list-group-item-header')
|
->setAttribute('class', 'list-group-item-header')
|
||||||
->setExtras([
|
->setExtras([
|
||||||
'order' => 4000,
|
'order' => 4000,
|
||||||
|
'icons' => ['file-pdf-o'],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$menu->addChild('Document category list', [
|
$menu->addChild('Document category list', [
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
{{ 'workflow.Document deleted'|trans }}
|
{{ 'workflow.Document deleted'|trans }}
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="flex-table accompanying-course-work">
|
<div class="flex-table accompanying_course_work-list">
|
||||||
<div class="item-bloc document-item bg-chill-llight-gray">
|
<div class="item-bloc document-item bg-chill-llight-gray">
|
||||||
<div class="row justify-content-center my-4">
|
<div class="row justify-content-center my-4">
|
||||||
<div class="col-2">
|
<div class="col-2">
|
||||||
@@ -22,6 +22,7 @@
|
|||||||
{{ document.description }}
|
{{ document.description }}
|
||||||
</blockquote>
|
</blockquote>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -13,19 +13,3 @@
|
|||||||
{{ 'Download'|trans }}</a>
|
{{ 'Download'|trans }}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|
||||||
{% macro download_button_small(storedObject, filename = null) %}
|
|
||||||
{% if storedObject is null %}
|
|
||||||
<!-- No document to download -->
|
|
||||||
{% else %}
|
|
||||||
<a class="btn btn-sm btn-download"
|
|
||||||
data-label-preparing="{{ ('Preparing'|trans ~ '...')|escape('html_attr') }}"
|
|
||||||
data-label-ready="{{ 'Ready to show'|trans|escape('html_attr') }}"
|
|
||||||
data-download-button
|
|
||||||
data-key="{{ storedObject.keyInfos|json_encode|escape('html_attr') }}"
|
|
||||||
data-iv="{{ storedObject.iv|json_encode|escape('html_attr') }}"
|
|
||||||
data-temp-url-get-generator="{{ storedObject|generate_url|escape('html_attr') }}"
|
|
||||||
data-mime-type="{{ storedObject.type|escape('html_attr') }}" {% if filename is not null %}data-filename="{{ filename|escape('html_attr') }}"{% endif %}>
|
|
||||||
{{ 'Download'|trans }}</a>
|
|
||||||
{% endif %}
|
|
||||||
{% endmacro %}
|
|
@@ -48,8 +48,8 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
<span class="metadata">
|
<div class="metadata">
|
||||||
<i class="fa {{ icon }} fa-lg me-1"></i>
|
<i class="fa {{ icon }} fa-lg me-1"></i>
|
||||||
{{ label|capitalize }}
|
{{ label|capitalize }}
|
||||||
</span>
|
</div>
|
||||||
{% endmacro %}
|
{% endmacro %}
|
@@ -60,7 +60,7 @@ final class StoredObjectManager implements StoredObjectManagerInterface
|
|||||||
$this
|
$this
|
||||||
->tempUrlGenerator
|
->tempUrlGenerator
|
||||||
->generate(
|
->generate(
|
||||||
Request::METHOD_HEAD,
|
Request::METHOD_PUT,
|
||||||
$document->getFilename()
|
$document->getFilename()
|
||||||
)
|
)
|
||||||
->url
|
->url
|
||||||
|
@@ -14,7 +14,7 @@ Edit attributes: Modifier les propriétés du document
|
|||||||
Existing document: Document existant
|
Existing document: Document existant
|
||||||
No document to download: Aucun document à télécharger
|
No document to download: Aucun document à télécharger
|
||||||
'Choose a document category': Choisissez une catégorie de document
|
'Choose a document category': Choisissez une catégorie de document
|
||||||
No document found: Aucun document trouvé
|
Any document found: Aucun document trouvé
|
||||||
The document is successfully registered: Le document est enregistré
|
The document is successfully registered: Le document est enregistré
|
||||||
The document is successfully updated: Le document est mis à jour
|
The document is successfully updated: Le document est mis à jour
|
||||||
Any description: Aucune description
|
Any description: Aucune description
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user