mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-12 13:24:25 +00:00
Add context for household member editor form:
* add context for accompanying period, if indicated in a query parameter; * expand automatically household suggestion, if indicated in a query parameter
This commit is contained in:
parent
9aa3974071
commit
cd6b5c9a39
@ -3,6 +3,7 @@
|
|||||||
namespace Chill\PersonBundle\Controller;
|
namespace Chill\PersonBundle\Controller;
|
||||||
|
|
||||||
use Chill\PersonBundle\Entity\Household\Position;
|
use Chill\PersonBundle\Entity\Household\Position;
|
||||||
|
use Chill\PersonBundle\Repository\AccompanyingPeriodRepository;
|
||||||
use Chill\PersonBundle\Security\Authorization\PersonVoter;
|
use Chill\PersonBundle\Security\Authorization\PersonVoter;
|
||||||
use Chill\PersonBundle\Entity\Person;
|
use Chill\PersonBundle\Entity\Person;
|
||||||
use Chill\PersonBundle\Entity\Household\Household;
|
use Chill\PersonBundle\Entity\Household\Household;
|
||||||
@ -25,11 +26,17 @@ class HouseholdMemberController extends ApiController
|
|||||||
|
|
||||||
private TranslatorInterface $translator;
|
private TranslatorInterface $translator;
|
||||||
|
|
||||||
|
private AccompanyingPeriodRepository $periodRepository;
|
||||||
|
|
||||||
public function __construct(UrlGeneratorInterface $generator, TranslatorInterface $translator)
|
public function __construct(
|
||||||
|
UrlGeneratorInterface $generator,
|
||||||
|
TranslatorInterface $translator,
|
||||||
|
AccompanyingPeriodRepository $periodRepository
|
||||||
|
)
|
||||||
{
|
{
|
||||||
$this->generator = $generator;
|
$this->generator = $generator;
|
||||||
$this->translator = $translator;
|
$this->translator = $translator;
|
||||||
|
$this->periodRepository = $periodRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -144,8 +151,23 @@ class HouseholdMemberController extends ApiController
|
|||||||
'allowLeaveWithoutHousehold' => $allowLeaveWithoutHousehold ?? $request->query->has('allow_leave_without_household'),
|
'allowLeaveWithoutHousehold' => $allowLeaveWithoutHousehold ?? $request->query->has('allow_leave_without_household'),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
// context
|
||||||
|
if ($request->query->has('accompanying_period_id')) {
|
||||||
|
$period = $this->periodRepository->find(
|
||||||
|
$request->query->getInt('accompanying_period_id')
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($period === null) {
|
||||||
|
throw $this->createNotFoundException('period not found');
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO add acl on accompanying Course
|
||||||
|
}
|
||||||
|
|
||||||
return $this->render('@ChillPerson/Household/members_editor.html.twig', [
|
return $this->render('@ChillPerson/Household/members_editor.html.twig', [
|
||||||
'data' => $data
|
'data' => $data,
|
||||||
|
'expandSuggestions' => (int) $request->query->getBoolean('expand_suggestions', false),
|
||||||
|
'accompanyingCourse' => $period ?? null,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,8 +25,9 @@ namespace Chill\PersonBundle\Repository;
|
|||||||
use Chill\PersonBundle\Entity\AccompanyingPeriod;
|
use Chill\PersonBundle\Entity\AccompanyingPeriod;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Doctrine\ORM\EntityRepository;
|
use Doctrine\ORM\EntityRepository;
|
||||||
|
use Doctrine\Persistence\ObjectRepository;
|
||||||
|
|
||||||
final class AccompanyingPeriodRepository
|
final class AccompanyingPeriodRepository implements ObjectRepository
|
||||||
{
|
{
|
||||||
private EntityRepository $repository;
|
private EntityRepository $repository;
|
||||||
|
|
||||||
@ -34,4 +35,32 @@ final class AccompanyingPeriodRepository
|
|||||||
{
|
{
|
||||||
$this->repository = $entityManager->getRepository(AccompanyingPeriod::class);
|
$this->repository = $entityManager->getRepository(AccompanyingPeriod::class);
|
||||||
}
|
}
|
||||||
|
public function find($id): ?AccompanyingPeriod
|
||||||
|
{
|
||||||
|
return $this->repository->find($id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return AccompanyingPeriod[]
|
||||||
|
*/
|
||||||
|
public function findAll(): array
|
||||||
|
{
|
||||||
|
return $this->repository->findAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function findBy(array $criteria, ?array $orderBy = null, $limit = null, $offset = null): ?AccompanyingPeriod
|
||||||
|
{
|
||||||
|
return $this->repository->findBy($criteria, $orderBy, $limit, $offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function findOneBy(array $criteria): ?AccompanyingPeriod
|
||||||
|
{
|
||||||
|
return $this->findOneBy($criteria);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getClassName()
|
||||||
|
{
|
||||||
|
return AccompanyingPeriod::class;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ const appMessages = {
|
|||||||
fr: {
|
fr: {
|
||||||
household_members_editor: {
|
household_members_editor: {
|
||||||
household: {
|
household: {
|
||||||
no_household_choose_one: "Aucun ménage de destination. Choisissez un ménage.",
|
no_household_choose_one: "Aucun ménage de destination. Choisissez un ménage. Les usagers concernés par la modification apparaitront ensuite.",
|
||||||
new_household: "Nouveau ménage",
|
new_household: "Nouveau ménage",
|
||||||
create_household: "Créer un ménage",
|
create_household: "Créer un ménage",
|
||||||
search_household: "Chercher un ménage",
|
search_household: "Chercher un ménage",
|
||||||
|
@ -14,6 +14,8 @@ const concerned = window.household_members_editor_data.persons.map(p => {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.log('expand suggestions', window.household_members_editor_expand_suggestions === 1);
|
||||||
|
|
||||||
const store = createStore({
|
const store = createStore({
|
||||||
strict: debug,
|
strict: debug,
|
||||||
state: {
|
state: {
|
||||||
@ -34,7 +36,7 @@ const store = createStore({
|
|||||||
allowLeaveWithoutHousehold: window.household_members_editor_data.allowLeaveWithoutHousehold,
|
allowLeaveWithoutHousehold: window.household_members_editor_data.allowLeaveWithoutHousehold,
|
||||||
forceLeaveWithoutHousehold: false,
|
forceLeaveWithoutHousehold: false,
|
||||||
householdSuggestionByAccompanyingPeriod: [],
|
householdSuggestionByAccompanyingPeriod: [],
|
||||||
showHouseholdSuggestion: false,
|
showHouseholdSuggestion: window.household_members_editor_expand_suggestions === 1,
|
||||||
warnings: [],
|
warnings: [],
|
||||||
errors: []
|
errors: []
|
||||||
},
|
},
|
||||||
|
@ -39,12 +39,15 @@
|
|||||||
<ul>
|
<ul>
|
||||||
{% for p in withoutHousehold %}
|
{% for p in withoutHousehold %}
|
||||||
<li>
|
<li>
|
||||||
<input type="checkbox" name="persons[]" value="{{ p.id }}" />
|
<input type="checkbox" name="persons[]" value="{{ p.id }}" checked />
|
||||||
{{ p|chill_entity_render_box }}
|
{{ p|chill_entity_render_box }}
|
||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<input type="hidden" name="expand_suggestions" value="true" />
|
||||||
|
<input type="hidden" name="accompanying_period_id", value="{{ accompanyingCourse.id }}" />
|
||||||
|
|
||||||
<ul class="record_actions">
|
<ul class="record_actions">
|
||||||
<li>
|
<li>
|
||||||
<button type="submit" class="sc-button bt-edit">
|
<button type="submit" class="sc-button bt-edit">
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
{% extends '@ChillMain/layout.html.twig' %}
|
{% extends accompanyingCourse != null ? '@ChillPerson/AccompanyingCourse/layout.html.twig'
|
||||||
|
: '@ChillMain/layout.html.twig' %}
|
||||||
|
|
||||||
{% block title 'household.Edit household members'|trans %}
|
{% block title 'household.Edit household members'|trans %}
|
||||||
|
|
||||||
@ -14,6 +15,7 @@
|
|||||||
{% block js %}
|
{% block js %}
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
window.household_members_editor_data = {{ data|json_encode|raw }};
|
window.household_members_editor_data = {{ data|json_encode|raw }};
|
||||||
|
window.household_members_editor_expand_suggestions = {{ expandSuggestions }};
|
||||||
</script>
|
</script>
|
||||||
{{ encore_entry_script_tags('household_members_editor') }}
|
{{ encore_entry_script_tags('household_members_editor') }}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user