mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-11-27 22:24:33 +00:00
Compare commits
2 Commits
v4.8.2
...
462-displa
| Author | SHA1 | Date | |
|---|---|---|---|
| 0e2cc6cc3a | |||
| ce74233282 |
6
.changes/unreleased/Feature-20251112-130016.yaml
Normal file
6
.changes/unreleased/Feature-20251112-130016.yaml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
kind: Feature
|
||||||
|
body: Display appointments (calendar items) linked to a person within the search results, like it was done for accompanying periods
|
||||||
|
time: 2025-11-12T13:00:16.844313583+01:00
|
||||||
|
custom:
|
||||||
|
Issue: "462"
|
||||||
|
SchemaChange: No schema change
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
## v4.8.0 - 2025-11-17
|
|
||||||
### Feature
|
|
||||||
* ([#461](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/461)) Make a calendar item on the 'mes rendez-vous' page clickable. Clicking will navigate to the edit page of the calendar item.
|
|
||||||
### Fixed
|
|
||||||
* ([#463](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/463)) Display calendar items for which an invite was accepted on the mes rendez-vous page
|
|
||||||
* Improve accessibility on login page
|
|
||||||
|
|
||||||
### UX
|
|
||||||
* ([#449](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/449)) Remove the label if there is only one scope and no scope picking field is displayed.
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
## v4.8.1 - 2025-11-20
|
|
||||||
### Fixed
|
|
||||||
* Insert name of file as the document title when uploading
|
|
||||||
* Add missing path paramater 'id' for editing multiple participations
|
|
||||||
* ([#471](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/471)) Hide the display of inactive user groups in the api
|
|
||||||
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
## v4.8.2 - 2025-11-26
|
|
||||||
### Fixed
|
|
||||||
* ([#466](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/466)) Associate activity's creator as a participant by default, and retro-actively append the creator to each activity
|
|
||||||
|
|
||||||
|
|
||||||
**Schema Change**: Add columns or tables
|
|
||||||
* Fix template parameter for update_multiple route on event participations
|
|
||||||
### UX
|
|
||||||
* ([#470](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/470)) Alphabetically order userJobs and mainLocations within user creation form
|
|
||||||
* ([#437](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/437)) Change position and color of confirm parcours button
|
|
||||||
452
CHANGELOG.md
452
CHANGELOG.md
@@ -6,126 +6,100 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html),
|
|||||||
and is generated by [Changie](https://github.com/miniscruff/changie).
|
and is generated by [Changie](https://github.com/miniscruff/changie).
|
||||||
|
|
||||||
|
|
||||||
## v4.8.2 - 2025-11-26
|
|
||||||
### Fixed
|
|
||||||
* ([#466](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/466)) Associate activity's creator as a participant by default, and retro-actively append the creator to each activity
|
|
||||||
**Schema Change**: Add columns or tables
|
|
||||||
* Fix template parameter for update_multiple route on event participations
|
|
||||||
### UX
|
|
||||||
* ([#470](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/470)) Alphabetically order userJobs and mainLocations within user creation form
|
|
||||||
* ([#437](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/437)) Change position and color of confirm parcours button
|
|
||||||
|
|
||||||
## v4.8.1 - 2025-11-20
|
|
||||||
### Fixed
|
|
||||||
* Insert name of file as the document title when uploading
|
|
||||||
* Add missing path paramater 'id' for editing multiple participations
|
|
||||||
* ([#471](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/471)) Hide the display of inactive user groups in the api
|
|
||||||
|
|
||||||
|
|
||||||
## v4.8.0 - 2025-11-17
|
|
||||||
### Feature
|
|
||||||
* ([#461](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/461)) Make a calendar item on the 'mes rendez-vous' page clickable. Clicking will navigate to the edit page of the calendar item.
|
|
||||||
### Fixed
|
|
||||||
* ([#463](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/463)) Display calendar items for which an invite was accepted on the mes rendez-vous page
|
|
||||||
* Improve accessibility on login page
|
|
||||||
|
|
||||||
### UX
|
|
||||||
* ([#449](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/449)) Remove the label if there is only one scope and no scope picking field is displayed.
|
|
||||||
|
|
||||||
## v4.7.0 - 2025-11-10
|
## v4.7.0 - 2025-11-10
|
||||||
### Feature
|
### Feature
|
||||||
* ([#385](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/385)) Create invitation list in user menu
|
* ([#385](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/385)) Create invitation list in user menu
|
||||||
* ([#404](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/404)) Add columns for comments linked to an activity in the activity list export
|
* ([#404](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/404)) Add columns for comments linked to an activity in the activity list export
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#451](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/451)) Fix: display also social actions linked to parents of the selected social issue
|
* ([#451](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/451)) Fix: display also social actions linked to parents of the selected social issue
|
||||||
* ([#453](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/453)) Fix: export actions and their results in csv even when action does not have any goals attached to it.
|
* ([#453](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/453)) Fix: export actions and their results in csv even when action does not have any goals attached to it.
|
||||||
* Fix the possibility to delete a workflow
|
* Fix the possibility to delete a workflow
|
||||||
|
|
||||||
**Schema Change**: Drop or rename table or columns, or enforce new constraint that must be manually fixed
|
**Schema Change**: Drop or rename table or columns, or enforce new constraint that must be manually fixed
|
||||||
* ([#457](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/457)) Fix the fusion of thirdparty properties that are located in another schema than public for TO_ONE relations + add extra loop for MANY_TO_MANY relations where thirdparty is the source instead of the target
|
* ([#457](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/457)) Fix the fusion of thirdparty properties that are located in another schema than public for TO_ONE relations + add extra loop for MANY_TO_MANY relations where thirdparty is the source instead of the target
|
||||||
* ([#428](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/428)) Fix suggestion of referrer when creating notification for accompanyingPeriodWorkDocument
|
* ([#428](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/428)) Fix suggestion of referrer when creating notification for accompanyingPeriodWorkDocument
|
||||||
### DX
|
### DX
|
||||||
* Send notifications log to dedicated channel, if it exists
|
* Send notifications log to dedicated channel, if it exists
|
||||||
|
|
||||||
### UX
|
### UX
|
||||||
* ([#425](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/425)) Change the terms 'cercle' and 'centre' to 'service', and 'territoire' respectively.
|
* ([#425](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/425)) Change the terms 'cercle' and 'centre' to 'service', and 'territoire' respectively.
|
||||||
* ([#542](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/542)) Improve the ux for selecting whether user wants to be notified of the final step of a workflow or all steps
|
* ([#542](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/542)) Improve the ux for selecting whether user wants to be notified of the final step of a workflow or all steps
|
||||||
* Expand timeSpent choices for evaluation document and translate them to user locale or fallback 'fr'
|
* Expand timeSpent choices for evaluation document and translate them to user locale or fallback 'fr'
|
||||||
* ([#455](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/455)) Change the order of display for results and objectives in the social work/action form
|
* ([#455](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/455)) Change the order of display for results and objectives in the social work/action form
|
||||||
* Wrap text when it is too long within badges
|
* Wrap text when it is too long within badges
|
||||||
|
|
||||||
## v4.6.1 - 2025-10-27
|
## v4.6.1 - 2025-10-27
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix export case where no 'reason' is picked within the PersonHavingActivityBetweenDateFilter.php
|
* Fix export case where no 'reason' is picked within the PersonHavingActivityBetweenDateFilter.php
|
||||||
|
|
||||||
## v4.6.0 - 2025-10-15
|
## v4.6.0 - 2025-10-15
|
||||||
### Feature
|
### Feature
|
||||||
* ([#423](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/423)) Create environment banner that can be activated and configured depending on the image deployed
|
* ([#423](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/423)) Create environment banner that can be activated and configured depending on the image deployed
|
||||||
* ([#394](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/394)) Only show active workflow on the page "my tracked workflow"
|
* ([#394](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/394)) Only show active workflow on the page "my tracked workflow"
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix loading of classLists in SocialIssuesAcc.vue, ensure elements are present
|
* Fix loading of classLists in SocialIssuesAcc.vue, ensure elements are present
|
||||||
* Fix the rendering of list of StoredObjectVersions, where there are kept version (before converting to pdf) and intermediate versions deleted
|
* Fix the rendering of list of StoredObjectVersions, where there are kept version (before converting to pdf) and intermediate versions deleted
|
||||||
* ([#434](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/434)) Notification: fix editing of sent notification by removing form.addressesEmails, a field that no longer exists
|
* ([#434](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/434)) Notification: fix editing of sent notification by removing form.addressesEmails, a field that no longer exists
|
||||||
* Fix loading of social issues and social actions within vue component
|
* Fix loading of social issues and social actions within vue component
|
||||||
* ([#446](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/446)) Add unique condition on stored object filename, with cleaning step on existing duplicate filenames
|
* ([#446](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/446)) Add unique condition on stored object filename, with cleaning step on existing duplicate filenames
|
||||||
|
|
||||||
**Schema Change**: Drop or rename table or columns, or enforce new constraint that must be manually fixed
|
**Schema Change**: Drop or rename table or columns, or enforce new constraint that must be manually fixed
|
||||||
* [workflow] take permissions into account to delete the workflow attachment
|
* [workflow] take permissions into account to delete the workflow attachment
|
||||||
* ([#448](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/448)) Fix the execution of daily cronjob notification, when the previous last execution storage was invalid
|
* ([#448](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/448)) Fix the execution of daily cronjob notification, when the previous last execution storage was invalid
|
||||||
|
|
||||||
## v4.5.1 - 2025-10-03
|
## v4.5.1 - 2025-10-03
|
||||||
### Fixed
|
### Fixed
|
||||||
* Add missing javascript dependency
|
* Add missing javascript dependency
|
||||||
* Add exception handling for conversion of attachment on sending external, when documens are already in pdf
|
* Add exception handling for conversion of attachment on sending external, when documens are already in pdf
|
||||||
|
|
||||||
## v4.5.0 - 2025-10-03
|
## v4.5.0 - 2025-10-03
|
||||||
### Feature
|
### Feature
|
||||||
* Only allow delete of attachment on workflows that are not final
|
* Only allow delete of attachment on workflows that are not final
|
||||||
* Move up signature buttons on index workflow page for easier access
|
* Move up signature buttons on index workflow page for easier access
|
||||||
* Filter out document from attachment list if it is the same as the workflow document
|
* Filter out document from attachment list if it is the same as the workflow document
|
||||||
* Block edition on attached document on workflow, if the workflow is finalized or sent external
|
* Block edition on attached document on workflow, if the workflow is finalized or sent external
|
||||||
* Convert workflow's attached document to pdf while sending them external
|
* Convert workflow's attached document to pdf while sending them external
|
||||||
* After a signature is canceled or rejected, going to a waiting page until the post-process routines apply a workflow transition
|
* After a signature is canceled or rejected, going to a waiting page until the post-process routines apply a workflow transition
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#426](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/426)) Increased the number of required characters when setting a new password in Chill from 9 to 14 - GDPR compliance
|
* ([#426](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/426)) Increased the number of required characters when setting a new password in Chill from 9 to 14 - GDPR compliance
|
||||||
* Fix permissions on storedObject which are subject by a workflow
|
* Fix permissions on storedObject which are subject by a workflow
|
||||||
### DX
|
### DX
|
||||||
* Introduce a WaitingScreen component to display a waiting screen
|
* Introduce a WaitingScreen component to display a waiting screen
|
||||||
|
|
||||||
## v4.4.2 - 2025-09-12
|
## v4.4.2 - 2025-09-12
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix document generation and workflow generation do not work on accompanying period work documents
|
* Fix document generation and workflow generation do not work on accompanying period work documents
|
||||||
|
|
||||||
## v4.4.1 - 2025-09-11
|
## v4.4.1 - 2025-09-11
|
||||||
### Fixed
|
### Fixed
|
||||||
* fix translations in duplicate evaluation document modal and realign close modal button
|
* fix translations in duplicate evaluation document modal and realign close modal button
|
||||||
|
|
||||||
## v4.4.0 - 2025-09-11
|
## v4.4.0 - 2025-09-11
|
||||||
### Feature
|
### Feature
|
||||||
* ([#359](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/359)) Allow the merge of two accompanying period works
|
* ([#359](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/359)) Allow the merge of two accompanying period works
|
||||||
* ([#369](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/369)) Duplication of a document to another accompanying period work evaluation
|
* ([#369](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/369)) Duplication of a document to another accompanying period work evaluation
|
||||||
* ([#359](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/359)) Fusion of two accompanying period works
|
* ([#359](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/359)) Fusion of two accompanying period works
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix display of 'duplicate' and 'merge' buttons in CRUD templates
|
* Fix display of 'duplicate' and 'merge' buttons in CRUD templates
|
||||||
* Fix saving notification preferences in user's profile
|
* Fix saving notification preferences in user's profile
|
||||||
|
|
||||||
## v4.3.0 - 2025-09-08
|
## v4.3.0 - 2025-09-08
|
||||||
### Feature
|
### Feature
|
||||||
* ([#409](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/409)) Add 45 and 60 min calendar ranges
|
* ([#409](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/409)) Add 45 and 60 min calendar ranges
|
||||||
* Add a command to generate a list of permissions
|
* Add a command to generate a list of permissions
|
||||||
* ([#412](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/412)) Add an absence end date
|
* ([#412](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/412)) Add an absence end date
|
||||||
|
|
||||||
**Schema Change**: Add columns or tables
|
**Schema Change**: Add columns or tables
|
||||||
### Fixed
|
### Fixed
|
||||||
* fix date formatting in calendar range display
|
* fix date formatting in calendar range display
|
||||||
* Change route URL to avoid clash with person duplicate controller method
|
* Change route URL to avoid clash with person duplicate controller method
|
||||||
|
|
||||||
## v4.2.1 - 2025-09-03
|
## v4.2.1 - 2025-09-03
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix exports to work with DirectExportInterface
|
* Fix exports to work with DirectExportInterface
|
||||||
### DX
|
### DX
|
||||||
* Improve error message when a stored object cannot be written on local disk
|
* Improve error message when a stored object cannot be written on local disk
|
||||||
|
|
||||||
|
|
||||||
## v4.2.0 - 2025-09-02
|
## v4.2.0 - 2025-09-02
|
||||||
### Feature
|
### Feature
|
||||||
@@ -140,26 +114,26 @@ and is generated by [Changie](https://github.com/miniscruff/changie).
|
|||||||
|
|
||||||
## v4.1.0 - 2025-08-26
|
## v4.1.0 - 2025-08-26
|
||||||
### Feature
|
### Feature
|
||||||
* ([#400](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/400)) Add filter to social actions list to filter out actions where current user intervenes
|
* ([#400](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/400)) Add filter to social actions list to filter out actions where current user intervenes
|
||||||
* ([#399](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/399)) Show filters on list pages unfolded by default
|
* ([#399](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/399)) Show filters on list pages unfolded by default
|
||||||
* Expansion of event module with new fields in the creation form: thematic, internal/external animator, responsable, and budget elements. Filtering options in the event list + adapted exports
|
* Expansion of event module with new fields in the creation form: thematic, internal/external animator, responsable, and budget elements. Filtering options in the event list + adapted exports
|
||||||
|
|
||||||
**Schema Change**: Add columns or tables
|
**Schema Change**: Add columns or tables
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#382](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/382)) adjust display logic for accompanying period dates, include closing date if period is closed.
|
* ([#382](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/382)) adjust display logic for accompanying period dates, include closing date if period is closed.
|
||||||
* ([#384](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/384)) add min and step attributes to integer field in DateIntervalType
|
* ([#384](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/384)) add min and step attributes to integer field in DateIntervalType
|
||||||
### UX
|
### UX
|
||||||
* Limit display of participations in event list
|
* Limit display of participations in event list
|
||||||
|
|
||||||
## v4.0.2 - 2025-07-09
|
## v4.0.2 - 2025-07-09
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix add missing translation
|
* Fix add missing translation
|
||||||
* Fix the transfer of evaluations and documents during of accompanyingperiodwork
|
* Fix the transfer of evaluations and documents during of accompanyingperiodwork
|
||||||
|
|
||||||
## v4.0.1 - 2025-07-08
|
## v4.0.1 - 2025-07-08
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix package.json for compilation
|
* Fix package.json for compilation
|
||||||
|
|
||||||
|
|
||||||
## v4.0.0 - 2025-07-08
|
## v4.0.0 - 2025-07-08
|
||||||
### Feature
|
### Feature
|
||||||
@@ -238,30 +212,30 @@ framework:
|
|||||||
|
|
||||||
## v3.12.1 - 2025-06-30
|
## v3.12.1 - 2025-06-30
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix loading of the list of documents
|
* Fix loading of the list of documents
|
||||||
|
|
||||||
## v3.12.0 - 2025-06-30
|
## v3.12.0 - 2025-06-30
|
||||||
### Feature
|
### Feature
|
||||||
* ([#377](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/377)) Add the document file name to the document title when a user upload a document, unless there is already a document title.
|
* ([#377](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/377)) Add the document file name to the document title when a user upload a document, unless there is already a document title.
|
||||||
* Add desactivation date for social action and issue csv export
|
* Add desactivation date for social action and issue csv export
|
||||||
* Add Emoji and Fullscreen feature to ckeditor configuration
|
* Add Emoji and Fullscreen feature to ckeditor configuration
|
||||||
* ([#321](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/321)) Create editor which allow us to toggle between rich and simple text editor
|
* ([#321](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/321)) Create editor which allow us to toggle between rich and simple text editor
|
||||||
* Do not remove workflow which are automatically canceled after staling for more than 30 days
|
* Do not remove workflow which are automatically canceled after staling for more than 30 days
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#376](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/376)) trying to prevent bug of typeerror in doc-history + improved display of document history
|
* ([#376](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/376)) trying to prevent bug of typeerror in doc-history + improved display of document history
|
||||||
* ([#381](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/381)) Display previous participation in acc course work even if the person has left the acc course
|
* ([#381](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/381)) Display previous participation in acc course work even if the person has left the acc course
|
||||||
* ([#372](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/372)) Fix display of text in calendar events
|
* ([#372](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/372)) Fix display of text in calendar events
|
||||||
* Add missing translation for user_group.no_user_groups
|
* Add missing translation for user_group.no_user_groups
|
||||||
* Fix admin entity edit actions for event admin entities and activity reason (category) entities
|
* Fix admin entity edit actions for event admin entities and activity reason (category) entities
|
||||||
* ([#392](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/392)) Allow null and cast as string to setContent method for NewsItem
|
* ([#392](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/392)) Allow null and cast as string to setContent method for NewsItem
|
||||||
|
|
||||||
* ([#393](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/393)) Doc Generation: the "dump only" method send the document as an email attachment.
|
* ([#393](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/393)) Doc Generation: the "dump only" method send the document as an email attachment.
|
||||||
### DX
|
### DX
|
||||||
* ([#352](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/352)) Remove dead code for wopi-link module
|
* ([#352](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/352)) Remove dead code for wopi-link module
|
||||||
* Replace library node-sass by sass, and upgrade bootstrap to version 5.3 (yarn upgrade / install is required)
|
* Replace library node-sass by sass, and upgrade bootstrap to version 5.3 (yarn upgrade / install is required)
|
||||||
### UX
|
### UX
|
||||||
* ([#374](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/374)) Remove default filter in_progress for the page 'my tasks'; Allows for new tasks to be displayed upon opening of the page
|
* ([#374](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/374)) Remove default filter in_progress for the page 'my tasks'; Allows for new tasks to be displayed upon opening of the page
|
||||||
* Improve labeling of fields in person resource creation form
|
* Improve labeling of fields in person resource creation form
|
||||||
|
|
||||||
## v3.11.0 - 2025-04-17
|
## v3.11.0 - 2025-04-17
|
||||||
### Feature
|
### Feature
|
||||||
@@ -285,11 +259,11 @@ framework:
|
|||||||
|
|
||||||
## v3.10.3 - 2025-03-18
|
## v3.10.3 - 2025-03-18
|
||||||
### DX
|
### DX
|
||||||
* Eslint fixes
|
* Eslint fixes
|
||||||
|
|
||||||
## v3.10.2 - 2025-03-17
|
## v3.10.2 - 2025-03-17
|
||||||
### Fixed
|
### Fixed
|
||||||
* Replace a ts-expect-error with a ts-ignore
|
* Replace a ts-expect-error with a ts-ignore
|
||||||
|
|
||||||
## v3.10.1 - 2025-03-17
|
## v3.10.1 - 2025-03-17
|
||||||
### DX
|
### DX
|
||||||
@@ -297,37 +271,37 @@ framework:
|
|||||||
|
|
||||||
## v3.10.0 - 2025-03-17
|
## v3.10.0 - 2025-03-17
|
||||||
### Feature
|
### Feature
|
||||||
* ([#363](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/363)) Display social actions grouped per social issue within activity form
|
* ([#363](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/363)) Display social actions grouped per social issue within activity form
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#362](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/362)) Fix Dependency Injection, which prevented to save the CalendarRange
|
* ([#362](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/362)) Fix Dependency Injection, which prevented to save the CalendarRange
|
||||||
* ([#368](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/368)) fix search query for user groups
|
* ([#368](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/368)) fix search query for user groups
|
||||||
|
|
||||||
## v3.9.2 - 2025-02-27
|
## v3.9.2 - 2025-02-27
|
||||||
### Fixed
|
### Fixed
|
||||||
* Use fetchResults method to fetch all social issues instead of only the first page
|
* Use fetchResults method to fetch all social issues instead of only the first page
|
||||||
|
|
||||||
## v3.9.1 - 2025-02-27
|
## v3.9.1 - 2025-02-27
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix post/patch request with missing 'type' property for gender
|
* Fix post/patch request with missing 'type' property for gender
|
||||||
|
|
||||||
## v3.9.0 - 2025-02-27
|
## v3.9.0 - 2025-02-27
|
||||||
### Feature
|
### Feature
|
||||||
* ([#349](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/349)) Suggest all referrers within actions of the accompanying period when creating an activity
|
* ([#349](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/349)) Suggest all referrers within actions of the accompanying period when creating an activity
|
||||||
* ([#343](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/343)) Add possibility to export a csv with all social issues and social actions
|
* ([#343](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/343)) Add possibility to export a csv with all social issues and social actions
|
||||||
* ([#360](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/360)) Restore document to previous kept version when a workflow is canceled
|
* ([#360](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/360)) Restore document to previous kept version when a workflow is canceled
|
||||||
* ([#341](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/341)) Add a list of third parties from within the admin (csv download)
|
* ([#341](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/341)) Add a list of third parties from within the admin (csv download)
|
||||||
### Fixed
|
### Fixed
|
||||||
* fix generation of document with accompanying period context, and list of activities and works
|
* fix generation of document with accompanying period context, and list of activities and works
|
||||||
### DX
|
### DX
|
||||||
* ([#333](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/333)) Create an unique source of trust for translations
|
* ([#333](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/333)) Create an unique source of trust for translations
|
||||||
|
|
||||||
## v3.8.2 - 2025-02-10
|
## v3.8.2 - 2025-02-10
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#358](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/358)) Remove "filter" button on list of documents in the workflow's "add attachement" modal
|
* ([#358](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/358)) Remove "filter" button on list of documents in the workflow's "add attachement" modal
|
||||||
|
|
||||||
## v3.8.1 - 2025-02-05
|
## v3.8.1 - 2025-02-05
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix household link in the parcours banner
|
* Fix household link in the parcours banner
|
||||||
|
|
||||||
## v3.8.0 - 2025-02-03
|
## v3.8.0 - 2025-02-03
|
||||||
### Feature
|
### Feature
|
||||||
@@ -343,7 +317,7 @@ framework:
|
|||||||
|
|
||||||
## v3.7.1 - 2025-01-21
|
## v3.7.1 - 2025-01-21
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix legacy configuration processor for notifier component
|
* Fix legacy configuration processor for notifier component
|
||||||
|
|
||||||
## v3.7.0 - 2025-01-21
|
## v3.7.0 - 2025-01-21
|
||||||
### Feature
|
### Feature
|
||||||
@@ -410,33 +384,33 @@ chill_main:
|
|||||||
|
|
||||||
## v3.6.0 - 2025-01-16
|
## v3.6.0 - 2025-01-16
|
||||||
### Feature
|
### Feature
|
||||||
* Importer for addresses does not fails when the postal code is not found with some addresses, and compute a recap list of all addresses that could not be imported. This recap list can be send by email.
|
* Importer for addresses does not fails when the postal code is not found with some addresses, and compute a recap list of all addresses that could not be imported. This recap list can be send by email.
|
||||||
* ([#346](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/346)) Create a driver for storing documents on disk (instead of openstack object store)
|
* ([#346](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/346)) Create a driver for storing documents on disk (instead of openstack object store)
|
||||||
|
|
||||||
* Add address importer from french Base d'Adresse Nationale (BAN)
|
* Add address importer from french Base d'Adresse Nationale (BAN)
|
||||||
* ([#343](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/343)) Add csv export for social issues and social actions
|
* ([#343](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/343)) Add csv export for social issues and social actions
|
||||||
### Fixed
|
### Fixed
|
||||||
* Export: fix missing alias in activity between certain dates filter. Condition added for alias.
|
* Export: fix missing alias in activity between certain dates filter. Condition added for alias.
|
||||||
|
|
||||||
## v3.5.3 - 2025-01-07
|
## v3.5.3 - 2025-01-07
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix the EntityToJsonTransformer to return an empty array if the value is ""
|
* Fix the EntityToJsonTransformer to return an empty array if the value is ""
|
||||||
|
|
||||||
## v3.5.2 - 2024-12-19
|
## v3.5.2 - 2024-12-19
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#345](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/345)) Export: activity filtering of users that were associated to an activity between certain dates. Results contained activities that were not within the specified date range"
|
* ([#345](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/345)) Export: activity filtering of users that were associated to an activity between certain dates. Results contained activities that were not within the specified date range"
|
||||||
|
|
||||||
## v3.5.1 - 2024-12-16
|
## v3.5.1 - 2024-12-16
|
||||||
### Fixed
|
### Fixed
|
||||||
* Filiation: fix the display of the gender label in the graph
|
* Filiation: fix the display of the gender label in the graph
|
||||||
* Wrap handling of PdfSignedMessage into transactions
|
* Wrap handling of PdfSignedMessage into transactions
|
||||||
|
|
||||||
## v3.5.0 - 2024-12-09
|
## v3.5.0 - 2024-12-09
|
||||||
### Feature
|
### Feature
|
||||||
* ([#318](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/318)) Show all the pages of the documents in the signature app
|
* ([#318](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/318)) Show all the pages of the documents in the signature app
|
||||||
### Fixed
|
### Fixed
|
||||||
* Wrap the signature's change state into a transaction, to avoid race conditions
|
* Wrap the signature's change state into a transaction, to avoid race conditions
|
||||||
* Fix display of gender label
|
* Fix display of gender label
|
||||||
|
|
||||||
## v3.4.3 - 2024-12-05
|
## v3.4.3 - 2024-12-05
|
||||||
### Fixed
|
### Fixed
|
||||||
@@ -445,76 +419,76 @@ chill_main:
|
|||||||
|
|
||||||
## v3.4.2 - 2024-12-05
|
## v3.4.2 - 2024-12-05
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#329](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/329)) Fix the serialization of gender for the generation of documents
|
* ([#329](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/329)) Fix the serialization of gender for the generation of documents
|
||||||
* ([#337](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/337)) Enforce unique contraint on activity storedobject
|
* ([#337](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/337)) Enforce unique contraint on activity storedobject
|
||||||
### DX
|
### DX
|
||||||
* ([#310](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/310)) Clean migrations, to reduce the number of bloated migration when running diff on schema
|
* ([#310](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/310)) Clean migrations, to reduce the number of bloated migration when running diff on schema
|
||||||
|
|
||||||
## v3.4.1 - 2024-11-22
|
## v3.4.1 - 2024-11-22
|
||||||
### Fixed
|
### Fixed
|
||||||
* Set the workflow's title to notification content and subject
|
* Set the workflow's title to notification content and subject
|
||||||
|
|
||||||
## v3.4.0 - 2024-11-20
|
## v3.4.0 - 2024-11-20
|
||||||
### Feature
|
### Feature
|
||||||
* ([#314](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/314)) Admin: improve document type admin form with a select field for related class.
|
* ([#314](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/314)) Admin: improve document type admin form with a select field for related class.
|
||||||
Admin: Allow administrator to assign multiple group centers in one go to a user.
|
Admin: Allow administrator to assign multiple group centers in one go to a user.
|
||||||
|
|
||||||
## v3.3.0 - 2024-11-20
|
## v3.3.0 - 2024-11-20
|
||||||
### Feature
|
### Feature
|
||||||
* Electronic signature
|
* Electronic signature
|
||||||
|
|
||||||
Implementation of the electronic signature for documents within chill.
|
Implementation of the electronic signature for documents within chill.
|
||||||
* ([#286](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/286)) The behavoir of the voters for stored objects is adjusted so as to limit edit and delete possibilities to users related to the activity, social action or workflow entity.
|
* ([#286](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/286)) The behavoir of the voters for stored objects is adjusted so as to limit edit and delete possibilities to users related to the activity, social action or workflow entity.
|
||||||
* ([#288](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/288)) Metadata form added for person signatures
|
* ([#288](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/288)) Metadata form added for person signatures
|
||||||
* Add a signature step in workflow, which allow to apply an electronic signature on documents
|
* Add a signature step in workflow, which allow to apply an electronic signature on documents
|
||||||
* Keep an history of each version of a stored object.
|
* Keep an history of each version of a stored object.
|
||||||
* Add a "send external" step in workflow, which allow to send stored objects and other elements to remote people, by sending them a public url
|
* Add a "send external" step in workflow, which allow to send stored objects and other elements to remote people, by sending them a public url
|
||||||
### Fixed
|
### Fixed
|
||||||
* Adjust household list export to include households even if their address is NULL
|
* Adjust household list export to include households even if their address is NULL
|
||||||
* Remove validation of date string on deathDate
|
* Remove validation of date string on deathDate
|
||||||
|
|
||||||
## v3.2.4 - 2024-11-06
|
## v3.2.4 - 2024-11-06
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix compilation of chill assets
|
* Fix compilation of chill assets
|
||||||
|
|
||||||
## v3.2.3 - 2024-11-05
|
## v3.2.3 - 2024-11-05
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#315](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/315)) Fix display of accompanying period work referrers. Only current referrers should be displayed.
|
* ([#315](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/315)) Fix display of accompanying period work referrers. Only current referrers should be displayed.
|
||||||
Fix color of Chill footer
|
Fix color of Chill footer
|
||||||
|
|
||||||
## v3.2.2 - 2024-10-31
|
## v3.2.2 - 2024-10-31
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix gender translation for unknown
|
* Fix gender translation for unknown
|
||||||
|
|
||||||
## v3.2.1 - 2024-10-31
|
## v3.2.1 - 2024-10-31
|
||||||
### Fixed
|
### Fixed
|
||||||
* Add the possibility of unknown to the gender entity
|
* Add the possibility of unknown to the gender entity
|
||||||
* Fix the fusion of person doubles by excluding accompanyingPeriod work entities to be deleted. They are moved instead.
|
* Fix the fusion of person doubles by excluding accompanyingPeriod work entities to be deleted. They are moved instead.
|
||||||
|
|
||||||
## v3.2.0 - 2024-10-30
|
## v3.2.0 - 2024-10-30
|
||||||
### Feature
|
### Feature
|
||||||
* Introduce a gender entity
|
* Introduce a gender entity
|
||||||
|
|
||||||
## v3.1.1 - 2024-10-01
|
## v3.1.1 - 2024-10-01
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#308](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/308)) Show only the current referrer in the page "show" for an accompanying period workf
|
* ([#308](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/308)) Show only the current referrer in the page "show" for an accompanying period workf
|
||||||
* ([#309](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/309)) Correctly compute the grouping by referrer aggregator
|
* ([#309](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/309)) Correctly compute the grouping by referrer aggregator
|
||||||
|
|
||||||
* Fixed typing of custom field long choice and custom field group
|
* Fixed typing of custom field long choice and custom field group
|
||||||
|
|
||||||
## v3.1.0 - 2024-08-30
|
## v3.1.0 - 2024-08-30
|
||||||
### Feature
|
### Feature
|
||||||
* Add export aggregator to aggregate activities by household + filter persons that are not part of an accompanyingperiod during a certain timeframe.
|
* Add export aggregator to aggregate activities by household + filter persons that are not part of an accompanyingperiod during a certain timeframe.
|
||||||
|
|
||||||
## v3.0.0 - 2024-08-26
|
## v3.0.0 - 2024-08-26
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix delete action for accompanying periods in draft state
|
* Fix delete action for accompanying periods in draft state
|
||||||
* Fix connection to azure when making an calendar event in chill
|
* Fix connection to azure when making an calendar event in chill
|
||||||
* CollectionType js fixes for remove button and adding multiple entries
|
* CollectionType js fixes for remove button and adding multiple entries
|
||||||
|
|
||||||
## v2.24.0 - 2024-09-11
|
## v2.24.0 - 2024-09-11
|
||||||
### Feature
|
### Feature
|
||||||
* ([#306](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/306)) When a document is converted or downloaded in the browser, this document is removed from the browser memory after 45s. Future click on the button re-download the document.
|
* ([#306](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/306)) When a document is converted or downloaded in the browser, this document is removed from the browser memory after 45s. Future click on the button re-download the document.
|
||||||
|
|
||||||
## v2.23.0 - 2024-07-23 & 2024-07-19
|
## v2.23.0 - 2024-07-23 & 2024-07-19
|
||||||
### Feature
|
### Feature
|
||||||
@@ -549,13 +523,13 @@ Fix color of Chill footer
|
|||||||
|
|
||||||
## v2.22.2 - 2024-07-03
|
## v2.22.2 - 2024-07-03
|
||||||
### Fixed
|
### Fixed
|
||||||
* Remove scope required for event participation stats
|
* Remove scope required for event participation stats
|
||||||
|
|
||||||
## v2.22.1 - 2024-07-01
|
## v2.22.1 - 2024-07-01
|
||||||
### Fixed
|
### Fixed
|
||||||
* Remove debug word
|
* Remove debug word
|
||||||
### DX
|
### DX
|
||||||
* Add a command for reading official address DB from Luxembourg and update chill addresses
|
* Add a command for reading official address DB from Luxembourg and update chill addresses
|
||||||
|
|
||||||
## v2.22.0 - 2024-06-25
|
## v2.22.0 - 2024-06-25
|
||||||
### Feature
|
### Feature
|
||||||
@@ -598,7 +572,7 @@ Fix color of Chill footer
|
|||||||
|
|
||||||
## v2.20.1 - 2024-06-05
|
## v2.20.1 - 2024-06-05
|
||||||
### Fixed
|
### Fixed
|
||||||
* Do not allow StoredObjectCreated for edit and convert buttons
|
* Do not allow StoredObjectCreated for edit and convert buttons
|
||||||
|
|
||||||
## v2.20.0 - 2024-06-05
|
## v2.20.0 - 2024-06-05
|
||||||
### Fixed
|
### Fixed
|
||||||
@@ -645,96 +619,96 @@ Fix color of Chill footer
|
|||||||
|
|
||||||
## v2.18.2 - 2024-04-12
|
## v2.18.2 - 2024-04-12
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#250](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/250)) Postal codes import : fix the source URL and the keys to handle each record
|
* ([#250](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/250)) Postal codes import : fix the source URL and the keys to handle each record
|
||||||
|
|
||||||
## v2.18.1 - 2024-03-26
|
## v2.18.1 - 2024-03-26
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix layout issue in document generation for admin (minor)
|
* Fix layout issue in document generation for admin (minor)
|
||||||
|
|
||||||
## v2.18.0 - 2024-03-26
|
## v2.18.0 - 2024-03-26
|
||||||
### Feature
|
### Feature
|
||||||
* ([#268](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/268)) Improve admin UX to configure document templates for document generation
|
* ([#268](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/268)) Improve admin UX to configure document templates for document generation
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#267](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/267)) Fix the join between job and user in the user list (admin): show only the current user job
|
* ([#267](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/267)) Fix the join between job and user in the user list (admin): show only the current user job
|
||||||
|
|
||||||
## v2.17.0 - 2024-03-19
|
## v2.17.0 - 2024-03-19
|
||||||
### Feature
|
### Feature
|
||||||
* ([#237](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/237)) New export filter for social actions with an evaluation created between two dates
|
* ([#237](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/237)) New export filter for social actions with an evaluation created between two dates
|
||||||
* ([#258](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/258)) In the list of accompangying period, add the list of person's centers and the duration of the course
|
* ([#258](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/258)) In the list of accompangying period, add the list of person's centers and the duration of the course
|
||||||
* ([#238](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/238)) Allow to customize list person with new fields
|
* ([#238](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/238)) Allow to customize list person with new fields
|
||||||
* ([#159](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/159)) Admin can publish news on the homepage
|
* ([#159](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/159)) Admin can publish news on the homepage
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#264](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/264)) Fix languages: load the languages in all availables languages configured for Chill
|
* ([#264](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/264)) Fix languages: load the languages in all availables languages configured for Chill
|
||||||
* ([#259](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/259)) Keep a consistent behaviour between the filtering of activities within the document generation (model "accompanying period with activities"), and the same filter in the list of activities for an accompanying period
|
* ([#259](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/259)) Keep a consistent behaviour between the filtering of activities within the document generation (model "accompanying period with activities"), and the same filter in the list of activities for an accompanying period
|
||||||
|
|
||||||
## v2.16.3 - 2024-02-26
|
## v2.16.3 - 2024-02-26
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#236](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/236)) Fix translation of user job -> 'service' must be 'métier'
|
* ([#236](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/236)) Fix translation of user job -> 'service' must be 'métier'
|
||||||
### UX
|
### UX
|
||||||
* ([#232](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/232)) Order user jobs and services alphabetically in export filters
|
* ([#232](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/232)) Order user jobs and services alphabetically in export filters
|
||||||
|
|
||||||
## v2.16.2 - 2024-02-21
|
## v2.16.2 - 2024-02-21
|
||||||
### Fixed
|
### Fixed
|
||||||
* Check for null values in closing motive of parcours d'accompagnement for correct rendering of template
|
* Check for null values in closing motive of parcours d'accompagnement for correct rendering of template
|
||||||
|
|
||||||
## v2.16.1 - 2024-02-09
|
## v2.16.1 - 2024-02-09
|
||||||
### Fixed
|
### Fixed
|
||||||
* Force bootstrap version to avoid error in builds with newer version
|
* Force bootstrap version to avoid error in builds with newer version
|
||||||
|
|
||||||
## v2.16.0 - 2024-02-08
|
## v2.16.0 - 2024-02-08
|
||||||
### Feature
|
### Feature
|
||||||
* ([#231](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/231)) Create new filter for persons having a participation in an accompanying period during a certain time span
|
* ([#231](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/231)) Create new filter for persons having a participation in an accompanying period during a certain time span
|
||||||
* ([#241](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/241)) [Export][List of accompanyign period] Add two columns: the list of persons participating to the period, and their ids
|
* ([#241](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/241)) [Export][List of accompanyign period] Add two columns: the list of persons participating to the period, and their ids
|
||||||
* ([#244](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/244)) Add capability to generate export about change of steps of accompanying period, and generate exports for this
|
* ([#244](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/244)) Add capability to generate export about change of steps of accompanying period, and generate exports for this
|
||||||
* ([#253](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/253)) Export: group accompanying period by person participating
|
* ([#253](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/253)) Export: group accompanying period by person participating
|
||||||
* ([#243](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/243)) Export: add filter for courses not linked to a reference address
|
* ([#243](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/243)) Export: add filter for courses not linked to a reference address
|
||||||
* ([#229](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/229)) Allow to group activities linked with accompanying period by reason
|
* ([#229](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/229)) Allow to group activities linked with accompanying period by reason
|
||||||
* ([#115](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/115)) Prevent social work to be saved when another user edited conccurently the social work
|
* ([#115](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/115)) Prevent social work to be saved when another user edited conccurently the social work
|
||||||
* Modernize the event bundle, with some new fields and multiple improvements
|
* Modernize the event bundle, with some new fields and multiple improvements
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#220](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/220)) Fix error in logs about wrong typing of eventArgs in onEditNotificationComment method
|
* ([#220](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/220)) Fix error in logs about wrong typing of eventArgs in onEditNotificationComment method
|
||||||
* ([#256](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/256)) Fix the conditions upon which social actions should be optional or required in relation to social issues within the activity creation form
|
* ([#256](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/256)) Fix the conditions upon which social actions should be optional or required in relation to social issues within the activity creation form
|
||||||
### UX
|
### UX
|
||||||
* ([#260](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/260)) Order list of centers alphabetically in dropdown 'user' section admin.
|
* ([#260](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/260)) Order list of centers alphabetically in dropdown 'user' section admin.
|
||||||
|
|
||||||
## v2.15.2 - 2024-01-11
|
## v2.15.2 - 2024-01-11
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix the id_seq used when creating a new accompanying period participation during fusion of two person files
|
* Fix the id_seq used when creating a new accompanying period participation during fusion of two person files
|
||||||
### DX
|
### DX
|
||||||
* Set placeholder to False for expanded EntityType form fields where required is set to False.
|
* Set placeholder to False for expanded EntityType form fields where required is set to False.
|
||||||
|
|
||||||
## v2.15.1 - 2023-12-20
|
## v2.15.1 - 2023-12-20
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix the household export query to exclude accompanying periods that are in draft state.
|
* Fix the household export query to exclude accompanying periods that are in draft state.
|
||||||
### DX
|
### DX
|
||||||
* ([#167](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/167)) Fixed readthedocs compilation by updating readthedocs config file and requirements for Sphinx
|
* ([#167](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/167)) Fixed readthedocs compilation by updating readthedocs config file and requirements for Sphinx
|
||||||
|
|
||||||
## v2.15.0 - 2023-12-11
|
## v2.15.0 - 2023-12-11
|
||||||
### Feature
|
### Feature
|
||||||
* ([#191](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/191)) Add export "number of household associate with an exchange"
|
* ([#191](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/191)) Add export "number of household associate with an exchange"
|
||||||
* ([#235](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/235)) Export: add dates on the filter "filter course by activity type"
|
* ([#235](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/235)) Export: add dates on the filter "filter course by activity type"
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#214](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/214)) Fix error when posting an empty comment on an accompanying period.
|
* ([#214](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/214)) Fix error when posting an empty comment on an accompanying period.
|
||||||
* ([#233](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/233)) Fix "filter evaluation by evaluation type" (and add select2 to the list of evaluation types to pick)
|
* ([#233](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/233)) Fix "filter evaluation by evaluation type" (and add select2 to the list of evaluation types to pick)
|
||||||
* ([#234](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/234)) Fix "filter aside activity by date"
|
* ([#234](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/234)) Fix "filter aside activity by date"
|
||||||
|
|
||||||
* ([#228](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/228)) Fix export of activity for people created before the introduction of the createdAt column on person (during v1)
|
* ([#228](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/228)) Fix export of activity for people created before the introduction of the createdAt column on person (during v1)
|
||||||
* ([#246](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/246)) Do not show activities, evaluations and social work when associated to a confidential accompanying period, except for the users which are allowed to see them
|
* ([#246](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/246)) Do not show activities, evaluations and social work when associated to a confidential accompanying period, except for the users which are allowed to see them
|
||||||
|
|
||||||
## v2.14.1 - 2023-11-29
|
## v2.14.1 - 2023-11-29
|
||||||
### Fixed
|
### Fixed
|
||||||
* Export: fix list person with custom fields
|
* Export: fix list person with custom fields
|
||||||
* ([#100](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/100)) Add a paginator to budget elements (resource and charge types) in the admin
|
* ([#100](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/100)) Add a paginator to budget elements (resource and charge types) in the admin
|
||||||
* Fix error in ListEvaluation when "handling agents" are alone
|
* Fix error in ListEvaluation when "handling agents" are alone
|
||||||
|
|
||||||
## v2.14.0 - 2023-11-24
|
## v2.14.0 - 2023-11-24
|
||||||
### Feature
|
### Feature
|
||||||
* ([#161](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/161)) Export: in filter "Filter accompanying period work (social action) by type, goal and result", order the items alphabetically or with the defined order
|
* ([#161](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/161)) Export: in filter "Filter accompanying period work (social action) by type, goal and result", order the items alphabetically or with the defined order
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#141](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/141)) Export: on filter "action by type goals, and results", restore the fields when editing a saved export
|
* ([#141](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/141)) Export: on filter "action by type goals, and results", restore the fields when editing a saved export
|
||||||
* ([#219](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/219)) Export: fix the list of accompanying period work, when the "calc date" is null
|
* ([#219](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/219)) Export: fix the list of accompanying period work, when the "calc date" is null
|
||||||
* ([#222](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/222)) Fix rendering of custom fields
|
* ([#222](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/222)) Fix rendering of custom fields
|
||||||
* Fix various errors in custom fields administration
|
* Fix various errors in custom fields administration
|
||||||
|
|
||||||
## v2.13.0 - 2023-11-21
|
## v2.13.0 - 2023-11-21
|
||||||
### Feature
|
### Feature
|
||||||
@@ -748,7 +722,7 @@ Fix color of Chill footer
|
|||||||
|
|
||||||
## v2.12.1 - 2023-11-16
|
## v2.12.1 - 2023-11-16
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#208](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/208)) Export: fix loading of form for "filter action by type, goal and result"
|
* ([#208](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/208)) Export: fix loading of form for "filter action by type, goal and result"
|
||||||
|
|
||||||
## v2.12.0 - 2023-11-15
|
## v2.12.0 - 2023-11-15
|
||||||
### Feature
|
### Feature
|
||||||
@@ -779,36 +753,36 @@ Fix color of Chill footer
|
|||||||
|
|
||||||
## v2.11.0 - 2023-11-07
|
## v2.11.0 - 2023-11-07
|
||||||
### Feature
|
### Feature
|
||||||
* ([#194](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/194)) Export: add a filter "filter activity by creator job"
|
* ([#194](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/194)) Export: add a filter "filter activity by creator job"
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#185](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/185)) Export: fix "group accompanying period by geographical unit": take into account the accompanying periods when the period is not located within an unit
|
* ([#185](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/185)) Export: fix "group accompanying period by geographical unit": take into account the accompanying periods when the period is not located within an unit
|
||||||
* Fix "group activity by creator job" aggregator
|
* Fix "group activity by creator job" aggregator
|
||||||
|
|
||||||
## v2.10.6 - 2023-11-07
|
## v2.10.6 - 2023-11-07
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#182](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/182)) Fix merging of double person files. Adjustement relationship sql statement
|
* ([#182](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/182)) Fix merging of double person files. Adjustement relationship sql statement
|
||||||
* ([#185](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/185)) Export: fix aggregator by geographical unit on person: avoid inconsistencies
|
* ([#185](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/185)) Export: fix aggregator by geographical unit on person: avoid inconsistencies
|
||||||
|
|
||||||
## v2.10.5 - 2023-11-05
|
## v2.10.5 - 2023-11-05
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#183](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/183)) Fix "problem during download" on some filters, which used a wrong data type
|
* ([#183](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/183)) Fix "problem during download" on some filters, which used a wrong data type
|
||||||
* ([#184](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/184)) Fix filter "activity by date"
|
* ([#184](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/184)) Fix filter "activity by date"
|
||||||
|
|
||||||
## v2.10.4 - 2023-10-26
|
## v2.10.4 - 2023-10-26
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix null value constraint errors when merging relationships in doubles
|
* Fix null value constraint errors when merging relationships in doubles
|
||||||
|
|
||||||
## v2.10.3 - 2023-10-26
|
## v2.10.3 - 2023-10-26
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#175](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/175)) Replace old method of getting translator with injection of translatorInterface
|
* ([#175](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/175)) Replace old method of getting translator with injection of translatorInterface
|
||||||
|
|
||||||
## v2.10.2 - 2023-10-26
|
## v2.10.2 - 2023-10-26
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#175](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/175)) Use injection of translator instead of ->get().
|
* ([#175](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/175)) Use injection of translator instead of ->get().
|
||||||
|
|
||||||
## v2.10.1 - 2023-10-24
|
## v2.10.1 - 2023-10-24
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix export controller when generating an export without any data in session
|
* Fix export controller when generating an export without any data in session
|
||||||
|
|
||||||
## v2.10.0 - 2023-10-24
|
## v2.10.0 - 2023-10-24
|
||||||
### Feature
|
### Feature
|
||||||
@@ -833,11 +807,11 @@ Fix color of Chill footer
|
|||||||
|
|
||||||
## v2.9.2 - 2023-10-17
|
## v2.9.2 - 2023-10-17
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix possible null values in string's entities
|
* Fix possible null values in string's entities
|
||||||
|
|
||||||
## v2.9.1 - 2023-10-17
|
## v2.9.1 - 2023-10-17
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix the handling of activity form when editing or creating an activity in an accompanying period with multiple centers
|
* Fix the handling of activity form when editing or creating an activity in an accompanying period with multiple centers
|
||||||
|
|
||||||
## v2.9.0 - 2023-10-17
|
## v2.9.0 - 2023-10-17
|
||||||
### Feature
|
### Feature
|
||||||
@@ -885,57 +859,57 @@ But if you do not need this any more, you must ensure that the configuration key
|
|||||||
|
|
||||||
## v2.7.0 - 2023-09-27
|
## v2.7.0 - 2023-09-27
|
||||||
### Feature
|
### Feature
|
||||||
* ([#155](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/155)) The regulation list load accompanying periods by exact postal code (address associated with postal code), and not by the content of the postal code (postal code with same code's string)
|
* ([#155](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/155)) The regulation list load accompanying periods by exact postal code (address associated with postal code), and not by the content of the postal code (postal code with same code's string)
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#142](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/142)) Fix the label of filter ActivityTypeFilter to a more obvious one
|
* ([#142](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/142)) Fix the label of filter ActivityTypeFilter to a more obvious one
|
||||||
* ([#140](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/140)) [export] Fix association of filter "filter location by type" which did not appears on "list of activities"
|
* ([#140](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/140)) [export] Fix association of filter "filter location by type" which did not appears on "list of activities"
|
||||||
|
|
||||||
## v2.6.3 - 2023-09-19
|
## v2.6.3 - 2023-09-19
|
||||||
### Fixed
|
### Fixed
|
||||||
* Remove id property from document
|
* Remove id property from document
|
||||||
mappedsuperclass
|
mappedsuperclass
|
||||||
|
|
||||||
## v2.6.2 - 2023-09-18
|
## v2.6.2 - 2023-09-18
|
||||||
### Fixed
|
### Fixed
|
||||||
* Fix doctrine mapping of AbstractTaskPlaceEvent and SingleTaskPlaceEvent: id property moved.
|
* Fix doctrine mapping of AbstractTaskPlaceEvent and SingleTaskPlaceEvent: id property moved.
|
||||||
|
|
||||||
## v2.6.1 - 2023-09-14
|
## v2.6.1 - 2023-09-14
|
||||||
### Fixed
|
### Fixed
|
||||||
* Filter out active centers in exports, which uses a different PickCenterType.
|
* Filter out active centers in exports, which uses a different PickCenterType.
|
||||||
|
|
||||||
## v2.6.0 - 2023-09-14
|
## v2.6.0 - 2023-09-14
|
||||||
### Feature
|
### Feature
|
||||||
* ([#133](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/133)) Add locations in Aside Activity. By default, suggest user location, otherwise a select with all locations.
|
* ([#133](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/133)) Add locations in Aside Activity. By default, suggest user location, otherwise a select with all locations.
|
||||||
* ([#133](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/133)) Adapt Aside Activity exports: display location, filter by location, group by location
|
* ([#133](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/133)) Adapt Aside Activity exports: display location, filter by location, group by location
|
||||||
* Use the CRUD controller for center entity + add the isActive property to be able to mask instances of Center that are no longer in use.
|
* Use the CRUD controller for center entity + add the isActive property to be able to mask instances of Center that are no longer in use.
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#107](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/107)) reinstate the fusion of duplicate persons
|
* ([#107](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/107)) reinstate the fusion of duplicate persons
|
||||||
* Missing translation in Work Actions exports
|
* Missing translation in Work Actions exports
|
||||||
* Reimplement the mission type filter on tasks, only for instances that have a config parameter indicating true for this.
|
* Reimplement the mission type filter on tasks, only for instances that have a config parameter indicating true for this.
|
||||||
* ([#135](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/135)) Corrects a typing error in 2 filters, which caused an
|
* ([#135](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/135)) Corrects a typing error in 2 filters, which caused an
|
||||||
error when trying to reedit a saved export
|
error when trying to reedit a saved export
|
||||||
|
|
||||||
|
|
||||||
* ([#136](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/136)) [household] when moving a person to a sharing position to a not-sharing position on the same household on the same date, remove the previous household membership on the same household. This fix duplicate member.
|
* ([#136](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/136)) [household] when moving a person to a sharing position to a not-sharing position on the same household on the same date, remove the previous household membership on the same household. This fix duplicate member.
|
||||||
* Add missing translation for comment field placeholder in repositionning household editor.
|
* Add missing translation for comment field placeholder in repositionning household editor.
|
||||||
|
|
||||||
* Do not send an email to creator twice when adding a comment to a notification
|
* Do not send an email to creator twice when adding a comment to a notification
|
||||||
* ([#107](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/107)) Fix gestion doublon functionality to work with chill bundles v2
|
* ([#107](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/107)) Fix gestion doublon functionality to work with chill bundles v2
|
||||||
### UX
|
### UX
|
||||||
* Uniformize badge-person in household banner (background, size)
|
* Uniformize badge-person in household banner (background, size)
|
||||||
|
|
||||||
|
|
||||||
## v2.5.3 - 2023-07-20
|
## v2.5.3 - 2023-07-20
|
||||||
### Fixed
|
### Fixed
|
||||||
* ([#132](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/132)) Rendez-vous documents created would appear in all documents lists of all persons with an accompanying period. Or statements are now added to the where clause to filter out documents that come from unrelated accompanying period/ or person rendez-vous.
|
* ([#132](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/132)) Rendez-vous documents created would appear in all documents lists of all persons with an accompanying period. Or statements are now added to the where clause to filter out documents that come from unrelated accompanying period/ or person rendez-vous.
|
||||||
|
|
||||||
## v2.5.2 - 2023-07-15
|
## v2.5.2 - 2023-07-15
|
||||||
### Fixed
|
### Fixed
|
||||||
* [Collate Address] when updating address point, do not use the point's address reference if the similarity is below the requirement for associating the address reference and the address (it uses the postcode's center instead)
|
* [Collate Address] when updating address point, do not use the point's address reference if the similarity is below the requirement for associating the address reference and the address (it uses the postcode's center instead)
|
||||||
|
|
||||||
## v2.5.1 - 2023-07-14
|
## v2.5.1 - 2023-07-14
|
||||||
### Fixed
|
### Fixed
|
||||||
* [collate addresses] block collating addresses to another address reference where the address reference is already the best match
|
* [collate addresses] block collating addresses to another address reference where the address reference is already the best match
|
||||||
|
|
||||||
## v2.5.0 - 2023-07-14
|
## v2.5.0 - 2023-07-14
|
||||||
### Feature
|
### Feature
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
chill_main:
|
chill_main:
|
||||||
available_languages: [ '%env(resolve:LOCALE)%', 'en', 'nl' ]
|
available_languages: [ '%env(resolve:LOCALE)%', 'en' ]
|
||||||
available_countries: ['BE', 'FR']
|
available_countries: ['BE', 'FR']
|
||||||
top_banner:
|
top_banner:
|
||||||
visible: false
|
visible: false
|
||||||
|
|||||||
@@ -382,7 +382,6 @@ final class ActivityController extends AbstractController
|
|||||||
|
|
||||||
$entity = new Activity();
|
$entity = new Activity();
|
||||||
$entity->setUser($this->security->getUser());
|
$entity->setUser($this->security->getUser());
|
||||||
$entity->addUser($this->security->getUser());
|
|
||||||
|
|
||||||
if ($person instanceof Person) {
|
if ($person instanceof Person) {
|
||||||
$entity->setPerson($person);
|
$entity->setPerson($person);
|
||||||
|
|||||||
@@ -88,8 +88,8 @@ class ActivityType extends AbstractType
|
|||||||
|
|
||||||
if (null !== $options['data']->getPerson()) {
|
if (null !== $options['data']->getPerson()) {
|
||||||
$builder->add('scope', ScopePickerType::class, [
|
$builder->add('scope', ScopePickerType::class, [
|
||||||
'role' => ActivityVoter::CREATE === (string) $options['role'] ? ActivityVoter::CREATE_PERSON : (string) $options['role'],
|
|
||||||
'center' => $options['center'],
|
'center' => $options['center'],
|
||||||
|
'role' => ActivityVoter::CREATE === (string) $options['role'] ? ActivityVoter::CREATE_PERSON : (string) $options['role'],
|
||||||
'required' => true,
|
'required' => true,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,50 +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\Activity;
|
|
||||||
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
|
||||||
use Doctrine\Migrations\AbstractMigration;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Migration fixing the automatic association of users to activities (exchanges).
|
|
||||||
*
|
|
||||||
* Originally, the user who created an exchange was not automatically associated
|
|
||||||
* to it (the "TMS" column), which led to incomplete data and biased statistics.
|
|
||||||
*
|
|
||||||
* This migration:
|
|
||||||
* - retroactively associates the creator of each exchange to the corresponding
|
|
||||||
* activity;
|
|
||||||
* - flags these backfilled associations with a temporary column so it is clear
|
|
||||||
* they were added by this data correction and can be safely cleaned up later.
|
|
||||||
*/
|
|
||||||
final class Version20251118124241 extends AbstractMigration
|
|
||||||
{
|
|
||||||
public function getDescription(): string
|
|
||||||
{
|
|
||||||
return 'Insert the creator of activity into the activity_user table';
|
|
||||||
}
|
|
||||||
|
|
||||||
public function up(Schema $schema): void
|
|
||||||
{
|
|
||||||
$this->addSql('ALTER TABLE activity_user ADD COLUMN by_migration BOOL DEFAULT FALSE');
|
|
||||||
$this->addSql("COMMENT ON COLUMN activity_user.by_migration IS 'For backup purpose - can be safely deleted after a while. See migration \\Chill\\Migrations\\Activity\\Version20251118124241'");
|
|
||||||
|
|
||||||
$this->addSql('INSERT INTO activity_user (activity_id, user_id, by_migration)
|
|
||||||
SELECT id, user_id, true FROM activity
|
|
||||||
ON CONFLICT DO NOTHING');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down(Schema $schema): void
|
|
||||||
{
|
|
||||||
$this->addSql('ALTER TABLE activity_user DROP COLUMN by_migration');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -12,7 +12,6 @@ declare(strict_types=1);
|
|||||||
namespace Chill\CalendarBundle\Controller;
|
namespace Chill\CalendarBundle\Controller;
|
||||||
|
|
||||||
use Chill\CalendarBundle\Repository\CalendarRepository;
|
use Chill\CalendarBundle\Repository\CalendarRepository;
|
||||||
use Chill\CalendarBundle\Repository\InviteRepository;
|
|
||||||
use Chill\MainBundle\CRUD\Controller\ApiController;
|
use Chill\MainBundle\CRUD\Controller\ApiController;
|
||||||
use Chill\MainBundle\Entity\User;
|
use Chill\MainBundle\Entity\User;
|
||||||
use Chill\MainBundle\Serializer\Model\Collection;
|
use Chill\MainBundle\Serializer\Model\Collection;
|
||||||
@@ -24,10 +23,7 @@ use Symfony\Component\Routing\Annotation\Route;
|
|||||||
|
|
||||||
class CalendarAPIController extends ApiController
|
class CalendarAPIController extends ApiController
|
||||||
{
|
{
|
||||||
public function __construct(
|
public function __construct(private readonly CalendarRepository $calendarRepository) {}
|
||||||
private readonly CalendarRepository $calendarRepository,
|
|
||||||
private readonly InviteRepository $inviteRepository,
|
|
||||||
) {}
|
|
||||||
|
|
||||||
#[Route(path: '/api/1.0/calendar/calendar/by-user/{id}.{_format}', name: 'chill_api_single_calendar_list_by-user', requirements: ['_format' => 'json'])]
|
#[Route(path: '/api/1.0/calendar/calendar/by-user/{id}.{_format}', name: 'chill_api_single_calendar_list_by-user', requirements: ['_format' => 'json'])]
|
||||||
public function listByUser(User $user, Request $request, string $_format): JsonResponse
|
public function listByUser(User $user, Request $request, string $_format): JsonResponse
|
||||||
@@ -56,37 +52,16 @@ class CalendarAPIController extends ApiController
|
|||||||
throw new BadRequestHttpException('dateTo not parsable');
|
throw new BadRequestHttpException('dateTo not parsable');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get calendar items where user is the main user
|
$total = $this->calendarRepository->countByUser($user, $dateFrom, $dateTo);
|
||||||
$ownCalendars = $this->calendarRepository->findByUser(
|
$paginator = $this->getPaginatorFactory()->create($total);
|
||||||
|
$ranges = $this->calendarRepository->findByUser(
|
||||||
$user,
|
$user,
|
||||||
$dateFrom,
|
$dateFrom,
|
||||||
$dateTo
|
$dateTo,
|
||||||
|
$paginator->getItemsPerPage(),
|
||||||
|
$paginator->getCurrentPageFirstItemNumber()
|
||||||
);
|
);
|
||||||
|
|
||||||
// Get calendar items from accepted invites
|
|
||||||
$acceptedInvites = $this->inviteRepository->findAcceptedInvitesByUserAndDateRange($user, $dateFrom, $dateTo);
|
|
||||||
$inviteCalendars = array_map(fn ($invite) => $invite->getCalendar(), $acceptedInvites);
|
|
||||||
|
|
||||||
// Merge
|
|
||||||
$allCalendars = array_merge($ownCalendars, $inviteCalendars);
|
|
||||||
$uniqueCalendars = [];
|
|
||||||
$seenIds = [];
|
|
||||||
|
|
||||||
foreach ($allCalendars as $calendar) {
|
|
||||||
$id = $calendar->getId();
|
|
||||||
if (!in_array($id, $seenIds, true)) {
|
|
||||||
$seenIds[] = $id;
|
|
||||||
$uniqueCalendars[] = $calendar;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$total = count($uniqueCalendars);
|
|
||||||
$paginator = $this->getPaginatorFactory()->create($total);
|
|
||||||
|
|
||||||
$offset = $paginator->getCurrentPageFirstItemNumber();
|
|
||||||
$limit = $paginator->getItemsPerPage();
|
|
||||||
$ranges = array_slice($uniqueCalendars, $offset, $limit);
|
|
||||||
|
|
||||||
$collection = new Collection($ranges, $paginator);
|
$collection = new Collection($ranges, $paginator);
|
||||||
|
|
||||||
return $this->json($collection, Response::HTTP_OK, [], ['groups' => ['calendar:light']]);
|
return $this->json($collection, Response::HTTP_OK, [], ['groups' => ['calendar:light']]);
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ declare(strict_types=1);
|
|||||||
namespace Chill\CalendarBundle\Repository;
|
namespace Chill\CalendarBundle\Repository;
|
||||||
|
|
||||||
use Chill\CalendarBundle\Entity\Invite;
|
use Chill\CalendarBundle\Entity\Invite;
|
||||||
use Chill\MainBundle\Entity\User;
|
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Doctrine\ORM\EntityRepository;
|
use Doctrine\ORM\EntityRepository;
|
||||||
use Doctrine\Persistence\ObjectRepository;
|
use Doctrine\Persistence\ObjectRepository;
|
||||||
@@ -52,52 +51,6 @@ class InviteRepository implements ObjectRepository
|
|||||||
return $this->entityRepository->findOneBy($criteria);
|
return $this->entityRepository->findOneBy($criteria);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Find accepted invites for a user within a date range.
|
|
||||||
*
|
|
||||||
* @return array|Invite[]
|
|
||||||
*/
|
|
||||||
public function findAcceptedInvitesByUserAndDateRange(User $user, \DateTimeImmutable $from, \DateTimeImmutable $to): array
|
|
||||||
{
|
|
||||||
return $this->buildAcceptedInviteByUserAndDateRangeQuery($user, $from, $to)
|
|
||||||
->getQuery()
|
|
||||||
->getResult();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Count accepted invites for a user within a date range.
|
|
||||||
*/
|
|
||||||
public function countAcceptedInvitesByUserAndDateRange(User $user, \DateTimeImmutable $from, \DateTimeImmutable $to): int
|
|
||||||
{
|
|
||||||
return $this->buildAcceptedInviteByUserAndDateRangeQuery($user, $from, $to)
|
|
||||||
->select('COUNT(c)')
|
|
||||||
->getQuery()
|
|
||||||
->getSingleScalarResult();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function buildAcceptedInviteByUserAndDateRangeQuery(User $user, \DateTimeImmutable $from, \DateTimeImmutable $to)
|
|
||||||
{
|
|
||||||
$qb = $this->entityRepository->createQueryBuilder('i');
|
|
||||||
|
|
||||||
return $qb
|
|
||||||
->join('i.calendar', 'c')
|
|
||||||
->where(
|
|
||||||
$qb->expr()->andX(
|
|
||||||
$qb->expr()->eq('i.user', ':user'),
|
|
||||||
$qb->expr()->eq('i.status', ':status'),
|
|
||||||
$qb->expr()->gte('c.startDate', ':startDate'),
|
|
||||||
$qb->expr()->lte('c.endDate', ':endDate'),
|
|
||||||
$qb->expr()->isNull('c.cancelReason')
|
|
||||||
)
|
|
||||||
)
|
|
||||||
->setParameters([
|
|
||||||
'user' => $user,
|
|
||||||
'status' => Invite::ACCEPTED,
|
|
||||||
'startDate' => $from,
|
|
||||||
'endDate' => $to,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getClassName(): string
|
public function getClassName(): string
|
||||||
{
|
{
|
||||||
return Invite::class;
|
return Invite::class;
|
||||||
|
|||||||
@@ -23,4 +23,14 @@ div.calendar-list {
|
|||||||
border-radius: 0.25rem;
|
border-radius: 0.25rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*.calendar-list__global {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0.2rem;
|
||||||
|
min-width: 2rem;
|
||||||
|
border: 1px solid var(--bs-chill-blue);
|
||||||
|
border-radius: 0.25rem;
|
||||||
|
text-align: center;
|
||||||
|
}*/
|
||||||
|
|||||||
@@ -108,12 +108,9 @@
|
|||||||
{{ formatDate(event.endStr, "time") }}:
|
{{ formatDate(event.endStr, "time") }}:
|
||||||
{{ event.extendedProps.locationName }}</b
|
{{ event.extendedProps.locationName }}</b
|
||||||
>
|
>
|
||||||
<a
|
<b v-else-if="event.extendedProps.is === 'local'">{{
|
||||||
:href="calendarLink(event.id)"
|
event.title
|
||||||
v-else-if="event.extendedProps.is === 'local'"
|
}}</b>
|
||||||
>
|
|
||||||
<b>{{ event.title }}</b>
|
|
||||||
</a>
|
|
||||||
<b v-else>no 'is'</b>
|
<b v-else>no 'is'</b>
|
||||||
<a
|
<a
|
||||||
v-if="event.extendedProps.is === 'range'"
|
v-if="event.extendedProps.is === 'range'"
|
||||||
@@ -489,12 +486,6 @@ function copyWeek() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const calendarLink = (calendarId: string) => {
|
|
||||||
const idStr = calendarId.match(/_(\d+)$/)?.[1];
|
|
||||||
|
|
||||||
return `/fr/calendar/calendar/${idStr}/edit`;
|
|
||||||
};
|
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
copyFromWeek.value = dateToISO(getMonday(0));
|
copyFromWeek.value = dateToISO(getMonday(0));
|
||||||
copyToWeek.value = dateToISO(getMonday(1));
|
copyToWeek.value = dateToISO(getMonday(1));
|
||||||
|
|||||||
@@ -25,8 +25,6 @@ use Symfony\Component\Mailer\MailerInterface;
|
|||||||
use Symfony\Component\Messenger\Event\WorkerMessageFailedEvent;
|
use Symfony\Component\Messenger\Event\WorkerMessageFailedEvent;
|
||||||
use Symfony\Contracts\Translation\TranslatorInterface;
|
use Symfony\Contracts\Translation\TranslatorInterface;
|
||||||
|
|
||||||
// use Symfony\Component\Translation\LocaleSwitcher;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see OnGenerationFailsTest for test suite
|
* @see OnGenerationFailsTest for test suite
|
||||||
*/
|
*/
|
||||||
@@ -42,7 +40,6 @@ final readonly class OnGenerationFails implements EventSubscriberInterface
|
|||||||
private StoredObjectRepositoryInterface $storedObjectRepository,
|
private StoredObjectRepositoryInterface $storedObjectRepository,
|
||||||
private TranslatorInterface $translator,
|
private TranslatorInterface $translator,
|
||||||
private UserRepositoryInterface $userRepository,
|
private UserRepositoryInterface $userRepository,
|
||||||
// private LocaleSwitcher $localeSwitcher,
|
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public static function getSubscribedEvents()
|
public static function getSubscribedEvents()
|
||||||
@@ -121,25 +118,6 @@ final readonly class OnGenerationFails implements EventSubscriberInterface
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implementation with LocaleSwitcher (commented out - to be activated after migration to sf7.2):
|
|
||||||
/*
|
|
||||||
$this->localeSwitcher->runWithLocale($creator->getLocale(), function () use ($message, $errors, $template, $creator) {
|
|
||||||
$email = (new TemplatedEmail())
|
|
||||||
->to($message->getSendResultToEmail())
|
|
||||||
->subject($this->translator->trans('docgen.failure_email.The generation of a document failed'))
|
|
||||||
->textTemplate('@ChillDocGenerator/Email/on_generation_failed_email.txt.twig')
|
|
||||||
->context([
|
|
||||||
'errors' => $errors,
|
|
||||||
'template' => $template,
|
|
||||||
'creator' => $creator,
|
|
||||||
'stored_object_id' => $message->getDestinationStoredObjectId(),
|
|
||||||
]);
|
|
||||||
|
|
||||||
$this->mailer->send($email);
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Current implementation:
|
|
||||||
$email = (new TemplatedEmail())
|
$email = (new TemplatedEmail())
|
||||||
->to($message->getSendResultToEmail())
|
->to($message->getSendResultToEmail())
|
||||||
->subject($this->translator->trans('docgen.failure_email.The generation of a document failed'))
|
->subject($this->translator->trans('docgen.failure_email.The generation of a document failed'))
|
||||||
|
|||||||
@@ -27,8 +27,6 @@ use Symfony\Component\Messenger\Exception\UnrecoverableMessageHandlingException;
|
|||||||
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
|
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
|
||||||
use Symfony\Contracts\Translation\TranslatorInterface;
|
use Symfony\Contracts\Translation\TranslatorInterface;
|
||||||
|
|
||||||
// use Symfony\Component\Translation\LocaleSwitcher;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle the request of document generation.
|
* Handle the request of document generation.
|
||||||
*/
|
*/
|
||||||
@@ -48,7 +46,6 @@ class RequestGenerationHandler implements MessageHandlerInterface
|
|||||||
private readonly MailerInterface $mailer,
|
private readonly MailerInterface $mailer,
|
||||||
private readonly TranslatorInterface $translator,
|
private readonly TranslatorInterface $translator,
|
||||||
private readonly StoredObjectManagerInterface $storedObjectManager,
|
private readonly StoredObjectManagerInterface $storedObjectManager,
|
||||||
// private readonly LocaleSwitcher $localeSwitcher,
|
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function __invoke(RequestGenerationMessage $message)
|
public function __invoke(RequestGenerationMessage $message)
|
||||||
@@ -125,30 +122,6 @@ class RequestGenerationHandler implements MessageHandlerInterface
|
|||||||
|
|
||||||
private function sendDataDump(StoredObject $destinationStoredObject, RequestGenerationMessage $message): void
|
private function sendDataDump(StoredObject $destinationStoredObject, RequestGenerationMessage $message): void
|
||||||
{
|
{
|
||||||
// Implementation with LocaleSwitcher (commented out - to be activated after migration to sf7.2):
|
|
||||||
// Note: This method sends emails to admin addresses, not user addresses, so locale switching may not be needed
|
|
||||||
/*
|
|
||||||
$this->localeSwitcher->runWithLocale('fr', function () use ($destinationStoredObject, $message) {
|
|
||||||
// Get the content of the document
|
|
||||||
$content = $this->storedObjectManager->read($destinationStoredObject);
|
|
||||||
$filename = $destinationStoredObject->getFilename();
|
|
||||||
$contentType = $destinationStoredObject->getType();
|
|
||||||
|
|
||||||
// Create the email with the document as an attachment
|
|
||||||
$email = (new TemplatedEmail())
|
|
||||||
->to($message->getSendResultToEmail())
|
|
||||||
->textTemplate('@ChillDocGenerator/Email/send_data_dump_to_admin.txt.twig')
|
|
||||||
->context([
|
|
||||||
'filename' => $filename,
|
|
||||||
])
|
|
||||||
->subject($this->translator->trans('docgen.data_dump_email.subject'))
|
|
||||||
->attach($content, $filename, $contentType);
|
|
||||||
|
|
||||||
$this->mailer->send($email);
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Current implementation:
|
|
||||||
// Get the content of the document
|
// Get the content of the document
|
||||||
$content = $this->storedObjectManager->read($destinationStoredObject);
|
$content = $this->storedObjectManager->read($destinationStoredObject);
|
||||||
$filename = $destinationStoredObject->getFilename();
|
$filename = $destinationStoredObject->getFilename();
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ use Chill\DocStoreBundle\Entity\PersonDocument;
|
|||||||
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\ScopePickerType;
|
use Chill\MainBundle\Form\Type\ScopePickerType;
|
||||||
|
use Chill\MainBundle\Security\Resolver\CenterResolverDispatcher;
|
||||||
use Chill\MainBundle\Security\Resolver\ScopeResolverDispatcher;
|
use Chill\MainBundle\Security\Resolver\ScopeResolverDispatcher;
|
||||||
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
|
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
|
||||||
use Doctrine\ORM\EntityRepository;
|
use Doctrine\ORM\EntityRepository;
|
||||||
@@ -29,7 +30,7 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
|
|||||||
|
|
||||||
class PersonDocumentType extends AbstractType
|
class PersonDocumentType extends AbstractType
|
||||||
{
|
{
|
||||||
public function __construct(private readonly TranslatableStringHelperInterface $translatableStringHelper, private readonly ScopeResolverDispatcher $scopeResolverDispatcher, private readonly ParameterBagInterface $parameterBag) {}
|
public function __construct(private readonly TranslatableStringHelperInterface $translatableStringHelper, private readonly ScopeResolverDispatcher $scopeResolverDispatcher, private readonly ParameterBagInterface $parameterBag, private readonly CenterResolverDispatcher $centerResolverDispatcher) {}
|
||||||
|
|
||||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||||
{
|
{
|
||||||
@@ -56,8 +57,8 @@ class PersonDocumentType extends AbstractType
|
|||||||
|
|
||||||
if ($isScopeConcerned && $this->parameterBag->get('chill_main')['acl']['form_show_scopes']) {
|
if ($isScopeConcerned && $this->parameterBag->get('chill_main')['acl']['form_show_scopes']) {
|
||||||
$builder->add('scope', ScopePickerType::class, [
|
$builder->add('scope', ScopePickerType::class, [
|
||||||
|
'center' => $this->centerResolverDispatcher->resolveCenter($document),
|
||||||
'role' => $options['role'],
|
'role' => $options['role'],
|
||||||
'subject' => $document,
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -486,7 +486,7 @@ final class ParticipationController extends AbstractController
|
|||||||
|
|
||||||
return $this->redirectToRoute(
|
return $this->redirectToRoute(
|
||||||
'chill_event__event_show',
|
'chill_event__event_show',
|
||||||
['id' => $event->getId()]
|
['event_id' => $event->getId()]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@
|
|||||||
|
|
||||||
<ul class="record_actions">
|
<ul class="record_actions">
|
||||||
<li>
|
<li>
|
||||||
<a href="{{ path('chill_event__event_show', { 'id' : event.id } ) }}" class="btn btn-cancel">
|
<a href="{{ path('chill_event__event_show', { 'event_id' : event.id } ) }}" class="btn btn-cancel">
|
||||||
{{ 'Back to the event'|trans }}
|
{{ 'Back to the event'|trans }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ use Chill\MainBundle\Entity\User;
|
|||||||
use Chill\MainBundle\Notification\NotificationFlagManager;
|
use Chill\MainBundle\Notification\NotificationFlagManager;
|
||||||
use Chill\MainBundle\Validation\Constraint\PhonenumberConstraint;
|
use Chill\MainBundle\Validation\Constraint\PhonenumberConstraint;
|
||||||
use libphonenumber\PhoneNumber;
|
use libphonenumber\PhoneNumber;
|
||||||
use Symfony\Component\Validator\Constraints as Assert;
|
|
||||||
|
|
||||||
final class UpdateProfileCommand
|
final class UpdateProfileCommand
|
||||||
{
|
{
|
||||||
@@ -24,13 +23,11 @@ final class UpdateProfileCommand
|
|||||||
public function __construct(
|
public function __construct(
|
||||||
#[PhonenumberConstraint]
|
#[PhonenumberConstraint]
|
||||||
public ?PhoneNumber $phonenumber,
|
public ?PhoneNumber $phonenumber,
|
||||||
#[Assert\Choice(choices: ['fr', 'nl'], message: 'Locale must be either "fr" or "nl"')]
|
|
||||||
public string $locale = 'fr',
|
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public static function create(User $user, NotificationFlagManager $flagManager): self
|
public static function create(User $user, NotificationFlagManager $flagManager): self
|
||||||
{
|
{
|
||||||
$updateProfileCommand = new self($user->getPhonenumber(), $user->getLocale());
|
$updateProfileCommand = new self($user->getPhonenumber());
|
||||||
|
|
||||||
foreach ($flagManager->getAllNotificationFlagProviders() as $provider) {
|
foreach ($flagManager->getAllNotificationFlagProviders() as $provider) {
|
||||||
$updateProfileCommand->setNotificationFlag(
|
$updateProfileCommand->setNotificationFlag(
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ final readonly class UpdateProfileCommandHandler
|
|||||||
public function updateProfile(User $user, UpdateProfileCommand $command): void
|
public function updateProfile(User $user, UpdateProfileCommand $command): void
|
||||||
{
|
{
|
||||||
$user->setPhonenumber($command->phonenumber);
|
$user->setPhonenumber($command->phonenumber);
|
||||||
$user->setLocale($command->locale);
|
|
||||||
|
|
||||||
foreach ($command->notificationFlags as $flag => $values) {
|
foreach ($command->notificationFlags as $flag => $values) {
|
||||||
$user->setNotificationImmediately($flag, $values['immediate_email']);
|
$user->setNotificationImmediately($flag, $values['immediate_email']);
|
||||||
|
|||||||
@@ -12,12 +12,5 @@ declare(strict_types=1);
|
|||||||
namespace Chill\MainBundle\Controller;
|
namespace Chill\MainBundle\Controller;
|
||||||
|
|
||||||
use Chill\MainBundle\CRUD\Controller\ApiController;
|
use Chill\MainBundle\CRUD\Controller\ApiController;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
|
||||||
|
|
||||||
class UserGroupApiController extends ApiController
|
class UserGroupApiController extends ApiController {}
|
||||||
{
|
|
||||||
protected function customizeQuery(string $action, Request $request, $query): void
|
|
||||||
{
|
|
||||||
$query->andWhere('e.active = TRUE');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -128,12 +128,6 @@ class User implements UserInterface, \Stringable, PasswordAuthenticatedUserInter
|
|||||||
#[ORM\Column(type: \Doctrine\DBAL\Types\Types::JSON, nullable: false, options: ['default' => '[]', 'jsonb' => true])]
|
#[ORM\Column(type: \Doctrine\DBAL\Types\Types::JSON, nullable: false, options: ['default' => '[]', 'jsonb' => true])]
|
||||||
private array $notificationFlags = [];
|
private array $notificationFlags = [];
|
||||||
|
|
||||||
/**
|
|
||||||
* User's preferred locale.
|
|
||||||
*/
|
|
||||||
#[ORM\Column(type: \Doctrine\DBAL\Types\Types::STRING, length: 5, nullable: false, options: ['default' => 'fr'])]
|
|
||||||
private string $locale = 'fr';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* User constructor.
|
* User constructor.
|
||||||
*/
|
*/
|
||||||
@@ -722,14 +716,7 @@ class User implements UserInterface, \Stringable, PasswordAuthenticatedUserInter
|
|||||||
|
|
||||||
public function getLocale(): string
|
public function getLocale(): string
|
||||||
{
|
{
|
||||||
return $this->locale;
|
return 'fr';
|
||||||
}
|
|
||||||
|
|
||||||
public function setLocale(string $locale): self
|
|
||||||
{
|
|
||||||
$this->locale = $locale;
|
|
||||||
|
|
||||||
return $this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[Assert\Callback]
|
#[Assert\Callback]
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ use Chill\MainBundle\Entity\Scope;
|
|||||||
use Chill\MainBundle\Entity\User;
|
use Chill\MainBundle\Entity\User;
|
||||||
use Chill\MainBundle\Form\DataMapper\ScopePickerDataMapper;
|
use Chill\MainBundle\Form\DataMapper\ScopePickerDataMapper;
|
||||||
use Chill\MainBundle\Security\Authorization\AuthorizationHelperInterface;
|
use Chill\MainBundle\Security\Authorization\AuthorizationHelperInterface;
|
||||||
use Chill\MainBundle\Security\Resolver\CenterResolverManagerInterface;
|
|
||||||
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
|
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
|
||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
@@ -33,84 +32,65 @@ use Symfony\Component\Security\Core\Security;
|
|||||||
* Allow to pick amongst available scope for the current
|
* Allow to pick amongst available scope for the current
|
||||||
* user.
|
* user.
|
||||||
*
|
*
|
||||||
* Options:
|
* options :
|
||||||
* - `role`: string, the role to check permissions for
|
*
|
||||||
* - Either `subject`: object, entity to resolve centers from
|
* - `center`: the center of the entity
|
||||||
* - Or `center`: Center|array|null, the center(s) to check
|
* - `role` : the role of the user
|
||||||
*/
|
*/
|
||||||
class ScopePickerType extends AbstractType
|
class ScopePickerType extends AbstractType
|
||||||
{
|
{
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
|
||||||
private readonly AuthorizationHelperInterface $authorizationHelper,
|
private readonly AuthorizationHelperInterface $authorizationHelper,
|
||||||
private readonly Security $security,
|
private readonly Security $security,
|
||||||
private readonly CenterResolverManagerInterface $centerResolverManager,
|
private readonly TranslatableStringHelperInterface $translatableStringHelper,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||||
{
|
{
|
||||||
// Compute centers from subject
|
$items = array_values(
|
||||||
$centers = $options['center'] ?? null;
|
|
||||||
if (null === $centers && isset($options['subject'])) {
|
|
||||||
$centers = $this->centerResolverManager->resolveCenters($options['subject']);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (null === $centers) {
|
|
||||||
throw new \RuntimeException('Either "center" or "subject" must be provided');
|
|
||||||
}
|
|
||||||
|
|
||||||
$reachableScopes = array_values(
|
|
||||||
array_filter(
|
array_filter(
|
||||||
$this->authorizationHelper->getReachableScopes(
|
$this->authorizationHelper->getReachableScopes(
|
||||||
$this->security->getUser(),
|
$this->security->getUser(),
|
||||||
$options['role'],
|
$options['role'],
|
||||||
$centers
|
$options['center']
|
||||||
),
|
),
|
||||||
static fn (Scope $s) => $s->isActive()
|
static fn (Scope $s) => $s->isActive()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
$builder->setAttribute('reachable_scopes_count', count($reachableScopes));
|
if (0 === \count($items)) {
|
||||||
|
throw new \RuntimeException('no scopes are reachable. This form should not be shown to user');
|
||||||
if (0 === count($reachableScopes)) {
|
|
||||||
$builder->setAttribute('has_scopes', false);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$builder->setAttribute('has_scopes', true);
|
if (1 !== \count($items)) {
|
||||||
|
|
||||||
if (1 !== count($reachableScopes)) {
|
|
||||||
$builder->add('scope', EntityType::class, [
|
$builder->add('scope', EntityType::class, [
|
||||||
'class' => Scope::class,
|
'class' => Scope::class,
|
||||||
'placeholder' => 'Choose the circle',
|
'placeholder' => 'Choose the circle',
|
||||||
'choice_label' => fn (Scope $c) => $this->translatableStringHelper->localize($c->getName()),
|
'choice_label' => fn (Scope $c) => $this->translatableStringHelper->localize($c->getName()),
|
||||||
'choices' => $reachableScopes,
|
'choices' => $items,
|
||||||
]);
|
]);
|
||||||
$builder->setDataMapper(new ScopePickerDataMapper());
|
$builder->setDataMapper(new ScopePickerDataMapper());
|
||||||
} else {
|
} else {
|
||||||
$builder->add('scope', HiddenType::class, [
|
$builder->add('scope', HiddenType::class, [
|
||||||
'data' => $reachableScopes[0]->getId(),
|
'data' => $items[0]->getId(),
|
||||||
]);
|
]);
|
||||||
$builder->setDataMapper(new ScopePickerDataMapper($reachableScopes[0]));
|
$builder->setDataMapper(new ScopePickerDataMapper($items[0]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function buildView(FormView $view, FormInterface $form, array $options)
|
public function buildView(FormView $view, FormInterface $form, array $options)
|
||||||
{
|
{
|
||||||
$view->vars['fullWidth'] = true;
|
$view->vars['fullWidth'] = true;
|
||||||
// display of label is handled by the EntityType
|
|
||||||
$view->vars['label'] = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function configureOptions(OptionsResolver $resolver)
|
public function configureOptions(OptionsResolver $resolver)
|
||||||
{
|
{
|
||||||
$resolver
|
$resolver
|
||||||
|
// create `center` option
|
||||||
|
->setRequired('center')
|
||||||
|
->setAllowedTypes('center', [Center::class, 'array', 'null'])
|
||||||
|
// create ``role` option
|
||||||
->setRequired('role')
|
->setRequired('role')
|
||||||
->setAllowedTypes('role', ['string'])
|
->setAllowedTypes('role', ['string']);
|
||||||
->setDefined('subject')
|
|
||||||
->setAllowedTypes('subject', ['object'])
|
|
||||||
->setDefined('center')
|
|
||||||
->setAllowedTypes('center', [Center::class, 'array', 'null']);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,43 +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\MainBundle\Form\Type;
|
|
||||||
|
|
||||||
use Symfony\Component\Form\AbstractType;
|
|
||||||
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
|
||||||
use Symfony\Component\Intl\Languages;
|
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
|
||||||
|
|
||||||
class UserLocaleType extends AbstractType
|
|
||||||
{
|
|
||||||
public function __construct(private readonly array $availableLanguages) {}
|
|
||||||
|
|
||||||
public function configureOptions(OptionsResolver $resolver): void
|
|
||||||
{
|
|
||||||
$choices = [];
|
|
||||||
foreach ($this->availableLanguages as $languageCode) {
|
|
||||||
$choices[Languages::getName($languageCode)] = $languageCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
$resolver->setDefaults([
|
|
||||||
'choices' => $choices,
|
|
||||||
'placeholder' => 'user.locale.placeholder',
|
|
||||||
'required' => true,
|
|
||||||
'label' => 'user.locale.label',
|
|
||||||
'help' => 'user.locale.help',
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getParent(): string
|
|
||||||
{
|
|
||||||
return ChoiceType::class;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -14,7 +14,6 @@ namespace Chill\MainBundle\Form;
|
|||||||
use Chill\MainBundle\Action\User\UpdateProfile\UpdateProfileCommand;
|
use Chill\MainBundle\Action\User\UpdateProfile\UpdateProfileCommand;
|
||||||
use Chill\MainBundle\Form\Type\ChillPhoneNumberType;
|
use Chill\MainBundle\Form\Type\ChillPhoneNumberType;
|
||||||
use Chill\MainBundle\Form\Type\NotificationFlagsType;
|
use Chill\MainBundle\Form\Type\NotificationFlagsType;
|
||||||
use Chill\MainBundle\Form\Type\UserLocaleType;
|
|
||||||
use Symfony\Component\Form\AbstractType;
|
use Symfony\Component\Form\AbstractType;
|
||||||
use Symfony\Component\Form\FormBuilderInterface;
|
use Symfony\Component\Form\FormBuilderInterface;
|
||||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||||
@@ -27,7 +26,6 @@ class UpdateProfileType extends AbstractType
|
|||||||
->add('phonenumber', ChillPhoneNumberType::class, [
|
->add('phonenumber', ChillPhoneNumberType::class, [
|
||||||
'required' => false,
|
'required' => false,
|
||||||
])
|
])
|
||||||
->add('locale', UserLocaleType::class)
|
|
||||||
->add('notificationFlags', NotificationFlagsType::class)
|
->add('notificationFlags', NotificationFlagsType::class)
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ use Chill\MainBundle\Entity\UserJob;
|
|||||||
use Chill\MainBundle\Form\Type\ChillDateType;
|
use Chill\MainBundle\Form\Type\ChillDateType;
|
||||||
use Chill\MainBundle\Form\Type\ChillPhoneNumberType;
|
use Chill\MainBundle\Form\Type\ChillPhoneNumberType;
|
||||||
use Chill\MainBundle\Form\Type\PickCivilityType;
|
use Chill\MainBundle\Form\Type\PickCivilityType;
|
||||||
use Chill\MainBundle\Repository\UserJobRepository;
|
|
||||||
use Chill\MainBundle\Templating\TranslatableStringHelper;
|
use Chill\MainBundle\Templating\TranslatableStringHelper;
|
||||||
use Doctrine\ORM\EntityRepository;
|
use Doctrine\ORM\EntityRepository;
|
||||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||||
@@ -37,7 +36,7 @@ use Symfony\Component\Validator\Constraints\Regex;
|
|||||||
|
|
||||||
class UserType extends AbstractType
|
class UserType extends AbstractType
|
||||||
{
|
{
|
||||||
public function __construct(private readonly TranslatableStringHelper $translatableStringHelper, protected ParameterBagInterface $parameterBag, private readonly UserJobRepository $userJobRepository) {}
|
public function __construct(private readonly TranslatableStringHelper $translatableStringHelper, protected ParameterBagInterface $parameterBag) {}
|
||||||
|
|
||||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||||
{
|
{
|
||||||
@@ -81,7 +80,12 @@ class UserType extends AbstractType
|
|||||||
'placeholder' => 'choose a job',
|
'placeholder' => 'choose a job',
|
||||||
'class' => UserJob::class,
|
'class' => UserJob::class,
|
||||||
'choice_label' => fn (UserJob $c) => $this->translatableStringHelper->localize($c->getLabel()),
|
'choice_label' => fn (UserJob $c) => $this->translatableStringHelper->localize($c->getLabel()),
|
||||||
'choices' => $this->loadAndSortUserJobs(),
|
'query_builder' => static function (EntityRepository $er) {
|
||||||
|
$qb = $er->createQueryBuilder('uj');
|
||||||
|
$qb->where('uj.active = TRUE');
|
||||||
|
|
||||||
|
return $qb;
|
||||||
|
},
|
||||||
])
|
])
|
||||||
->add('mainLocation', EntityType::class, [
|
->add('mainLocation', EntityType::class, [
|
||||||
'label' => 'Main location',
|
'label' => 'Main location',
|
||||||
@@ -92,7 +96,6 @@ class UserType extends AbstractType
|
|||||||
'query_builder' => static function (EntityRepository $er) {
|
'query_builder' => static function (EntityRepository $er) {
|
||||||
$qb = $er->createQueryBuilder('l');
|
$qb = $er->createQueryBuilder('l');
|
||||||
$qb->orderBy('l.locationType');
|
$qb->orderBy('l.locationType');
|
||||||
$qb->orderBy('l.name', 'ASC');
|
|
||||||
$qb->where('l.availableForUsers = TRUE');
|
$qb->where('l.availableForUsers = TRUE');
|
||||||
|
|
||||||
return $qb;
|
return $qb;
|
||||||
@@ -152,20 +155,6 @@ class UserType extends AbstractType
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function loadAndSortUserJobs(): array
|
|
||||||
{
|
|
||||||
$items = $this->userJobRepository->findBy(['active' => true]);
|
|
||||||
|
|
||||||
usort(
|
|
||||||
$items,
|
|
||||||
fn ($a, $b) => mb_strtolower((string) $this->translatableStringHelper->localize($a->getLabel()))
|
|
||||||
<=>
|
|
||||||
mb_strtolower((string) $this->translatableStringHelper->localize($b->getLabel()))
|
|
||||||
);
|
|
||||||
|
|
||||||
return $items;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param OptionsResolverInterface $resolver
|
* @param OptionsResolverInterface $resolver
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -24,8 +24,6 @@ use Symfony\Component\Mime\Email;
|
|||||||
use Symfony\Component\Messenger\MessageBusInterface;
|
use Symfony\Component\Messenger\MessageBusInterface;
|
||||||
use Symfony\Contracts\Translation\TranslatorInterface;
|
use Symfony\Contracts\Translation\TranslatorInterface;
|
||||||
|
|
||||||
// use Symfony\Component\Translation\LocaleSwitcher;
|
|
||||||
|
|
||||||
readonly class NotificationMailer
|
readonly class NotificationMailer
|
||||||
{
|
{
|
||||||
public function __construct(
|
public function __construct(
|
||||||
@@ -33,7 +31,6 @@ readonly class NotificationMailer
|
|||||||
private LoggerInterface $logger,
|
private LoggerInterface $logger,
|
||||||
private MessageBusInterface $messageBus,
|
private MessageBusInterface $messageBus,
|
||||||
private TranslatorInterface $translator,
|
private TranslatorInterface $translator,
|
||||||
// private LocaleSwitcher $localeSwitcher,
|
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public function postPersistComment(NotificationComment $comment, PostPersistEventArgs $eventArgs): void
|
public function postPersistComment(NotificationComment $comment, PostPersistEventArgs $eventArgs): void
|
||||||
@@ -59,7 +56,7 @@ readonly class NotificationMailer
|
|||||||
$email
|
$email
|
||||||
->to($dest->getEmail())
|
->to($dest->getEmail())
|
||||||
->subject('Re: '.$comment->getNotification()->getTitle())
|
->subject('Re: '.$comment->getNotification()->getTitle())
|
||||||
->textTemplate('@ChillMain/Notification/email_notification_comment_persist.md.twig')
|
->textTemplate('@ChillMain/Notification/email_notification_comment_persist.fr.md.twig')
|
||||||
->context([
|
->context([
|
||||||
'comment' => $comment,
|
'comment' => $comment,
|
||||||
'dest' => $dest,
|
'dest' => $dest,
|
||||||
@@ -140,53 +137,13 @@ readonly class NotificationMailer
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implementation with LocaleSwitcher (commented out - to be activated after migration to sf7.2):
|
|
||||||
/*
|
|
||||||
$this->localeSwitcher->runWithLocale($addressee->getLocale(), function () use ($notification, $addressee) {
|
|
||||||
if ($notification->isSystem()) {
|
|
||||||
$email = new Email();
|
|
||||||
$email->text($notification->getMessage());
|
|
||||||
} else {
|
|
||||||
$email = new TemplatedEmail();
|
|
||||||
$email
|
|
||||||
->textTemplate('@ChillMain/Notification/email_non_system_notification_content.md.twig')
|
|
||||||
->context([
|
|
||||||
'notification' => $notification,
|
|
||||||
'dest' => $addressee,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$email
|
|
||||||
->subject($notification->getTitle())
|
|
||||||
->to($addressee->getEmail());
|
|
||||||
|
|
||||||
try {
|
|
||||||
$this->mailer->send($email);
|
|
||||||
$this->logger->info('[NotificationMailer] Email sent successfully', [
|
|
||||||
'notification_id' => $notification->getId(),
|
|
||||||
'addressee_email' => $addressee->getEmail(),
|
|
||||||
'locale' => $addressee->getLocale(),
|
|
||||||
]);
|
|
||||||
} catch (TransportExceptionInterface $e) {
|
|
||||||
$this->logger->warning('[NotificationMailer] Could not send an email notification', [
|
|
||||||
'to' => $addressee->getEmail(),
|
|
||||||
'notification_id' => $notification->getId(),
|
|
||||||
'error_message' => $e->getMessage(),
|
|
||||||
'error_trace' => $e->getTraceAsString(),
|
|
||||||
]);
|
|
||||||
throw $e;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Current implementation:
|
|
||||||
if ($notification->isSystem()) {
|
if ($notification->isSystem()) {
|
||||||
$email = new Email();
|
$email = new Email();
|
||||||
$email->text($notification->getMessage());
|
$email->text($notification->getMessage());
|
||||||
} else {
|
} else {
|
||||||
$email = new TemplatedEmail();
|
$email = new TemplatedEmail();
|
||||||
$email
|
$email
|
||||||
->textTemplate('@ChillMain/Notification/email_non_system_notification_content.md.twig')
|
->textTemplate('@ChillMain/Notification/email_non_system_notification_content.fr.md.twig')
|
||||||
->context([
|
->context([
|
||||||
'notification' => $notification,
|
'notification' => $notification,
|
||||||
'dest' => $addressee,
|
'dest' => $addressee,
|
||||||
@@ -225,43 +182,9 @@ readonly class NotificationMailer
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implementation with LocaleSwitcher (commented out - to be activated after migration to sf7.2):
|
|
||||||
/*
|
|
||||||
$this->localeSwitcher->runWithLocale($user->getLocale(), function () use ($user, $notifications) {
|
|
||||||
$email = new TemplatedEmail();
|
|
||||||
$email
|
|
||||||
->htmlTemplate('@ChillMain/Notification/email_daily_digest.md.twig')
|
|
||||||
->context([
|
|
||||||
'user' => $user,
|
|
||||||
'notifications' => $notifications,
|
|
||||||
'notification_count' => count($notifications),
|
|
||||||
])
|
|
||||||
->subject($this->translator->trans('notification.Daily Notification Digest'))
|
|
||||||
->to($user->getEmail());
|
|
||||||
|
|
||||||
try {
|
|
||||||
$this->mailer->send($email);
|
|
||||||
$this->logger->info('[NotificationMailer] Daily digest email sent successfully', [
|
|
||||||
'user_email' => $user->getEmail(),
|
|
||||||
'notification_count' => count($notifications),
|
|
||||||
'locale' => $user->getLocale(),
|
|
||||||
]);
|
|
||||||
} catch (TransportExceptionInterface $e) {
|
|
||||||
$this->logger->warning('[NotificationMailer] Could not send daily digest email', [
|
|
||||||
'to' => $user->getEmail(),
|
|
||||||
'notification_count' => count($notifications),
|
|
||||||
'error_message' => $e->getMessage(),
|
|
||||||
'error_trace' => $e->getTraceAsString(),
|
|
||||||
]);
|
|
||||||
throw $e;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Current implementation:
|
|
||||||
$email = new TemplatedEmail();
|
$email = new TemplatedEmail();
|
||||||
$email
|
$email
|
||||||
->htmlTemplate('@ChillMain/Notification/email_daily_digest.md.twig')
|
->htmlTemplate('@ChillMain/Notification/email_daily_digest.fr.md.twig')
|
||||||
->context([
|
->context([
|
||||||
'user' => $user,
|
'user' => $user,
|
||||||
'notifications' => $notifications,
|
'notifications' => $notifications,
|
||||||
@@ -299,7 +222,7 @@ readonly class NotificationMailer
|
|||||||
|
|
||||||
$email = new TemplatedEmail();
|
$email = new TemplatedEmail();
|
||||||
$email
|
$email
|
||||||
->textTemplate('@ChillMain/Notification/email_non_system_notification_content_to_email.md.twig')
|
->textTemplate('@ChillMain/Notification/email_non_system_notification_content_to_email.fr.md.twig')
|
||||||
->context([
|
->context([
|
||||||
'notification' => $notification,
|
'notification' => $notification,
|
||||||
'dest' => $emailAddress,
|
'dest' => $emailAddress,
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
<img class="logo" alt="{{ 'login_page.logo_alt'|trans }}" src="{{ asset('build/images/logo-chill-outil-accompagnement_white.png') }}">
|
<img class="logo" src="{{ asset('build/images/logo-chill-outil-accompagnement_white.png') }}">
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#}
|
#}
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="{{ app.request.locale }}">
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<title>
|
<title>
|
||||||
@@ -35,10 +35,10 @@
|
|||||||
|
|
||||||
<form method="POST" action="{{ path('login_check') }}">
|
<form method="POST" action="{{ path('login_check') }}">
|
||||||
<label for="_username">{{ 'Username'|trans }}</label>
|
<label for="_username">{{ 'Username'|trans }}</label>
|
||||||
<input type="text" name="_username" value="{{ last_username }}" id="_username" />
|
<input type="text" name="_username" value="{{ last_username }}" />
|
||||||
<br/>
|
<br/>
|
||||||
<label for="_password">{{ 'Password'|trans }}</label>
|
<label for="_password">{{ 'Password'|trans }}</label>
|
||||||
<input type="password" name="_password" id="_password" />
|
<input type="password" name="_password" />
|
||||||
<input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}" />
|
<input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}" />
|
||||||
<br/>
|
<br/>
|
||||||
<button type="submit" name="login">{{ 'Login'|trans }}</button>
|
<button type="submit" name="login">{{ 'Login'|trans }}</button>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
Vous pouvez visualiser la notification et y répondre ici:
|
Vous pouvez visualiser la notification et y répondre ici:
|
||||||
|
|
||||||
{{ absolute_url(path('chill_main_notification_show', {'_locale': dest.locale, 'id': notification.id }, false)) }}
|
{{ absolute_url(path('chill_main_notification_show', {'_locale': 'fr', 'id': notification.id }, false)) }}
|
||||||
|
|
||||||
--
|
--
|
||||||
Le logiciel Chill
|
Le logiciel Chill
|
||||||
@@ -13,7 +13,7 @@ Commentaire:
|
|||||||
|
|
||||||
Vous pouvez visualiser la notification et y répondre ici:
|
Vous pouvez visualiser la notification et y répondre ici:
|
||||||
|
|
||||||
{{ absolute_url(path('chill_main_notification_show', {'_locale': dest.locale, 'id': comment.notification.id }, false)) }}
|
{{ absolute_url(path('chill_main_notification_show', {'_locale': 'fr', 'id': comment.notification.id }, false)) }}
|
||||||
|
|
||||||
--
|
--
|
||||||
Le logiciel Chill
|
Le logiciel Chill
|
||||||
@@ -44,7 +44,6 @@
|
|||||||
<div>
|
<div>
|
||||||
{{ form_start(form) }}
|
{{ form_start(form) }}
|
||||||
{{ form_row(form.phonenumber) }}
|
{{ form_row(form.phonenumber) }}
|
||||||
{{ form_row(form.locale) }}
|
|
||||||
|
|
||||||
<h2 class="mb-4">{{ 'user.profile.notification_preferences'|trans }}</h2>
|
<h2 class="mb-4">{{ 'user.profile.notification_preferences'|trans }}</h2>
|
||||||
<table class="table table-striped align-middle">
|
<table class="table table-striped align-middle">
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
{{ dest.label }},
|
{{ dest.label }},
|
||||||
|
|
||||||
{{ 'workflow.notification.content.new_step_reached'|trans({'%workflow%': workflow.text}) }}
|
Un suivi "{{ workflow.text }}" a atteint une nouvelle étape: {{ workflow.text }}
|
||||||
|
|
||||||
{{ 'workflow.notification.content.workflow_title'|trans({'%title%': title}) }}
|
Titre du workflow: "{{ title }}".
|
||||||
{% if is_dest %}
|
{% if is_dest %}
|
||||||
|
|
||||||
{{ 'workflow.notification.content.validation_needed'|trans }}
|
Vous êtes invités à valider cette étape au plus tôt.
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
{{ 'workflow.notification.content.view_workflow'|trans }}
|
Vous pouvez visualiser le workflow sur cette page:
|
||||||
|
|
||||||
{{ absolute_url(path('chill_main_workflow_show', {'id': entity_workflow.id, '_locale': dest.locale|default('fr')})) }}
|
{{ absolute_url(path('chill_main_workflow_show', {'id': entity_workflow.id, '_locale': 'fr'})) }}
|
||||||
|
|
||||||
{{ 'workflow.notification.content.regards'|trans }}
|
Cordialement,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{%- if is_dest -%}
|
{%- if is_dest -%}
|
||||||
{{ 'workflow.notification.title.attention_needed'|trans({'%workflow%': workflow.text, '%title%': title}) }}
|
Un suivi {{ workflow.text }} demande votre attention: {{ title }}
|
||||||
{%- else -%}
|
{%- else -%}
|
||||||
{{ 'workflow.notification.title.new_step'|trans({'%workflow%': workflow.text, '%place%': place.text, '%title%': title}) }}
|
Un suivi {{ workflow.text }} a atteint une nouvelle étape: {{ place.text }}: {{ title }}
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
|
|||||||
@@ -16,13 +16,11 @@ use Symfony\Bridge\Twig\Mime\TemplatedEmail;
|
|||||||
use Symfony\Component\Mailer\MailerInterface;
|
use Symfony\Component\Mailer\MailerInterface;
|
||||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||||
|
|
||||||
// use Symfony\Component\Translation\LocaleSwitcher;
|
|
||||||
|
|
||||||
class RecoverPasswordHelper
|
class RecoverPasswordHelper
|
||||||
{
|
{
|
||||||
final public const RECOVER_PASSWORD_ROUTE = 'password_recover';
|
final public const RECOVER_PASSWORD_ROUTE = 'password_recover';
|
||||||
|
|
||||||
public function __construct(private readonly TokenManager $tokenManager, private readonly UrlGeneratorInterface $urlGenerator, private readonly MailerInterface $mailer/* , private readonly LocaleSwitcher $localeSwitcher */) {}
|
public function __construct(private readonly TokenManager $tokenManager, private readonly UrlGeneratorInterface $urlGenerator, private readonly MailerInterface $mailer) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param bool $absolute
|
* @param bool $absolute
|
||||||
@@ -55,24 +53,6 @@ class RecoverPasswordHelper
|
|||||||
throw new \UnexpectedValueException('No emaail associated to the user');
|
throw new \UnexpectedValueException('No emaail associated to the user');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Implementation with LocaleSwitcher (commented out - to be activated after migration to sf7.2):
|
|
||||||
/*
|
|
||||||
$this->localeSwitcher->runWithLocale($user->getLocale(), function () use ($user, $expiration, $template, $templateParameters, $emailSubject, $additionalUrlParameters) {
|
|
||||||
$email = (new TemplatedEmail())
|
|
||||||
->subject($emailSubject)
|
|
||||||
->to($user->getEmail())
|
|
||||||
->textTemplate($template)
|
|
||||||
->context([
|
|
||||||
'user' => $user,
|
|
||||||
'url' => $this->generateUrl($user, $expiration, true, $additionalUrlParameters),
|
|
||||||
...$templateParameters,
|
|
||||||
]);
|
|
||||||
|
|
||||||
$this->mailer->send($email);
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Current implementation:
|
|
||||||
$email = (new TemplatedEmail())
|
$email = (new TemplatedEmail())
|
||||||
->subject($emailSubject)
|
->subject($emailSubject)
|
||||||
->to($user->getEmail())
|
->to($user->getEmail())
|
||||||
|
|||||||
@@ -11,11 +11,11 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace Form\Type;
|
namespace Form\Type;
|
||||||
|
|
||||||
|
use Chill\MainBundle\Entity\Center;
|
||||||
use Chill\MainBundle\Entity\Scope;
|
use Chill\MainBundle\Entity\Scope;
|
||||||
use Chill\MainBundle\Entity\User;
|
use Chill\MainBundle\Entity\User;
|
||||||
use Chill\MainBundle\Form\Type\ScopePickerType;
|
use Chill\MainBundle\Form\Type\ScopePickerType;
|
||||||
use Chill\MainBundle\Security\Authorization\AuthorizationHelperInterface;
|
use Chill\MainBundle\Security\Authorization\AuthorizationHelperInterface;
|
||||||
use Chill\MainBundle\Security\Resolver\CenterResolverManagerInterface;
|
|
||||||
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
|
use Chill\MainBundle\Templating\TranslatableStringHelperInterface;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Doctrine\ORM\Mapping\Builder\ClassMetadataBuilder;
|
use Doctrine\ORM\Mapping\Builder\ClassMetadataBuilder;
|
||||||
@@ -39,11 +39,11 @@ final class ScopePickerTypeTest extends TypeTestCase
|
|||||||
{
|
{
|
||||||
use ProphecyTrait;
|
use ProphecyTrait;
|
||||||
|
|
||||||
public function testBuildOneScopeIsSuccessful()
|
public function estBuildOneScopeIsSuccessful()
|
||||||
{
|
{
|
||||||
$form = $this->factory->create(ScopePickerType::class, null, [
|
$form = $this->factory->create(ScopePickerType::class, null, [
|
||||||
|
'center' => new Center(),
|
||||||
'role' => 'ONE_SCOPE',
|
'role' => 'ONE_SCOPE',
|
||||||
'center' => [],
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$view = $form->createView();
|
$view = $form->createView();
|
||||||
@@ -54,8 +54,8 @@ final class ScopePickerTypeTest extends TypeTestCase
|
|||||||
public function testBuildThreeScopesIsSuccessful()
|
public function testBuildThreeScopesIsSuccessful()
|
||||||
{
|
{
|
||||||
$form = $this->factory->create(ScopePickerType::class, null, [
|
$form = $this->factory->create(ScopePickerType::class, null, [
|
||||||
|
'center' => new Center(),
|
||||||
'role' => 'THREE_SCOPE',
|
'role' => 'THREE_SCOPE',
|
||||||
'center' => [],
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$view = $form->createView();
|
$view = $form->createView();
|
||||||
@@ -66,8 +66,8 @@ final class ScopePickerTypeTest extends TypeTestCase
|
|||||||
public function testBuildTwoScopesIsSuccessful()
|
public function testBuildTwoScopesIsSuccessful()
|
||||||
{
|
{
|
||||||
$form = $this->factory->create(ScopePickerType::class, null, [
|
$form = $this->factory->create(ScopePickerType::class, null, [
|
||||||
|
'center' => new Center(),
|
||||||
'role' => 'TWO_SCOPE',
|
'role' => 'TWO_SCOPE',
|
||||||
'center' => [],
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$view = $form->createView();
|
$view = $form->createView();
|
||||||
@@ -101,13 +101,10 @@ final class ScopePickerTypeTest extends TypeTestCase
|
|||||||
static fn ($args) => $args[0]['fr']
|
static fn ($args) => $args[0]['fr']
|
||||||
);
|
);
|
||||||
|
|
||||||
$centerResolverManager = $this->prophesize(CenterResolverManagerInterface::class);
|
|
||||||
|
|
||||||
$type = new ScopePickerType(
|
$type = new ScopePickerType(
|
||||||
$translatableStringHelper->reveal(),
|
|
||||||
$authorizationHelper->reveal(),
|
$authorizationHelper->reveal(),
|
||||||
$security->reveal(),
|
$security->reveal(),
|
||||||
$centerResolverManager->reveal()
|
$translatableStringHelper->reveal()
|
||||||
);
|
);
|
||||||
|
|
||||||
// add the mocks for creating EntityType
|
// add the mocks for creating EntityType
|
||||||
|
|||||||
@@ -22,8 +22,6 @@ use Symfony\Component\Mailer\MailerInterface;
|
|||||||
use Symfony\Component\Workflow\Event\Event;
|
use Symfony\Component\Workflow\Event\Event;
|
||||||
use Symfony\Component\Workflow\Registry;
|
use Symfony\Component\Workflow\Registry;
|
||||||
|
|
||||||
// use Symfony\Component\Translation\LocaleSwitcher;
|
|
||||||
|
|
||||||
final readonly class NotificationToUserGroupsOnTransition implements EventSubscriberInterface
|
final readonly class NotificationToUserGroupsOnTransition implements EventSubscriberInterface
|
||||||
{
|
{
|
||||||
public function __construct(
|
public function __construct(
|
||||||
@@ -33,7 +31,6 @@ final readonly class NotificationToUserGroupsOnTransition implements EventSubscr
|
|||||||
private MailerInterface $mailer,
|
private MailerInterface $mailer,
|
||||||
private EntityManagerInterface $entityManager,
|
private EntityManagerInterface $entityManager,
|
||||||
private EntityWorkflowManager $entityWorkflowManager,
|
private EntityWorkflowManager $entityWorkflowManager,
|
||||||
// private LocaleSwitcher $localeSwitcher,
|
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
public static function getSubscribedEvents(): array
|
public static function getSubscribedEvents(): array
|
||||||
@@ -90,24 +87,6 @@ final readonly class NotificationToUserGroupsOnTransition implements EventSubscr
|
|||||||
'title' => $title,
|
'title' => $title,
|
||||||
];
|
];
|
||||||
|
|
||||||
// Implementation with LocaleSwitcher (commented out - to be activated after migration to sf7.2):
|
|
||||||
// Note: This sends emails to user groups, not individual users, so locale switching may use default locale
|
|
||||||
/*
|
|
||||||
$this->localeSwitcher->runWithLocale('fr', function () use ($context, $userGroup) {
|
|
||||||
$email = new TemplatedEmail();
|
|
||||||
$email
|
|
||||||
->htmlTemplate('@ChillMain/Workflow/workflow_notification_on_transition_completed_content_to_user_group.fr.txt.twig')
|
|
||||||
->context($context)
|
|
||||||
->subject(
|
|
||||||
$this->engine->render('@ChillMain/Workflow/workflow_notification_on_transition_completed_title.fr.txt.twig', $context)
|
|
||||||
)
|
|
||||||
->to($userGroup->getEmail());
|
|
||||||
|
|
||||||
$this->mailer->send($email);
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Current implementation:
|
|
||||||
$email = new TemplatedEmail();
|
$email = new TemplatedEmail();
|
||||||
$email
|
$email
|
||||||
->htmlTemplate('@ChillMain/Workflow/workflow_notification_on_transition_completed_content_to_user_group.fr.txt.twig')
|
->htmlTemplate('@ChillMain/Workflow/workflow_notification_on_transition_completed_content_to_user_group.fr.txt.twig')
|
||||||
|
|||||||
@@ -12,12 +12,6 @@ services:
|
|||||||
tags:
|
tags:
|
||||||
- { name: form.type, alias: translatable_string }
|
- { name: form.type, alias: translatable_string }
|
||||||
|
|
||||||
Chill\MainBundle\Form\Type\UserLocaleType:
|
|
||||||
arguments:
|
|
||||||
- "%chill_main.available_languages%"
|
|
||||||
tags:
|
|
||||||
- { name: form.type }
|
|
||||||
|
|
||||||
chill.main.form.type.select2choice:
|
chill.main.form.type.select2choice:
|
||||||
class: Chill\MainBundle\Form\Type\Select2ChoiceType
|
class: Chill\MainBundle\Form\Type\Select2ChoiceType
|
||||||
tags:
|
tags:
|
||||||
|
|||||||
@@ -1,33 +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\Main;
|
|
||||||
|
|
||||||
use Doctrine\DBAL\Schema\Schema;
|
|
||||||
use Doctrine\Migrations\AbstractMigration;
|
|
||||||
|
|
||||||
final class Version20251022140718 extends AbstractMigration
|
|
||||||
{
|
|
||||||
public function getDescription(): string
|
|
||||||
{
|
|
||||||
return 'Add locale field to users table for user language preferences';
|
|
||||||
}
|
|
||||||
|
|
||||||
public function up(Schema $schema): void
|
|
||||||
{
|
|
||||||
$this->addSql('ALTER TABLE users ADD locale VARCHAR(5) DEFAULT \'fr\' NOT NULL');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function down(Schema $schema): void
|
|
||||||
{
|
|
||||||
$this->addSql('ALTER TABLE users DROP locale');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -56,10 +56,6 @@ user:
|
|||||||
no job: Pas de métier assigné
|
no job: Pas de métier assigné
|
||||||
no scope: Pas de service assigné
|
no scope: Pas de service assigné
|
||||||
notification_preferences: Préférences pour mes notifications
|
notification_preferences: Préférences pour mes notifications
|
||||||
locale:
|
|
||||||
label: Langue de communication
|
|
||||||
help: Langue utilisée pour les notifications par email et autres communications.
|
|
||||||
placeholder: Choisissez une langue
|
|
||||||
|
|
||||||
user_group:
|
user_group:
|
||||||
inactive: Inactif
|
inactive: Inactif
|
||||||
@@ -672,17 +668,6 @@ workflow:
|
|||||||
reject_are_you_sure: Êtes-vous sûr de vouloir rejeter la signature de %signer%
|
reject_are_you_sure: Êtes-vous sûr de vouloir rejeter la signature de %signer%
|
||||||
waiting_for: En attente de modification de l'état de la signature
|
waiting_for: En attente de modification de l'état de la signature
|
||||||
|
|
||||||
notification:
|
|
||||||
title:
|
|
||||||
attention_needed: "Attention requise dans le workflow %workflow% pour %title%"
|
|
||||||
new_step: "Nouvelle étape dans le workflow %workflow% (%place%) pour %title%"
|
|
||||||
content:
|
|
||||||
new_step_reached: "Une nouvelle étape a été atteinte dans le workflow %workflow%."
|
|
||||||
workflow_title: "Titre du workflow : %title%"
|
|
||||||
validation_needed: "Votre validation est nécessaire pour cette étape."
|
|
||||||
view_workflow: "Vous pouvez consulter le workflow ici :"
|
|
||||||
regards: "Cordialement,"
|
|
||||||
|
|
||||||
attachments:
|
attachments:
|
||||||
title: Pièces jointes
|
title: Pièces jointes
|
||||||
no_attachment: Aucune pièce jointe
|
no_attachment: Aucune pièce jointe
|
||||||
@@ -762,22 +747,7 @@ notification:
|
|||||||
greeting: "Bonjour %user%"
|
greeting: "Bonjour %user%"
|
||||||
intro: "Vous avez reçu %notification_count% nouvelle(s) notification(s)."
|
intro: "Vous avez reçu %notification_count% nouvelle(s) notification(s)."
|
||||||
view_notification: "Vous pouvez visualiser la notification et y répondre ici:"
|
view_notification: "Vous pouvez visualiser la notification et y répondre ici:"
|
||||||
signature: "L'équipe Chill"
|
signature: "Le logiciel Chill"
|
||||||
|
|
||||||
daily_notifications: "{1}Vous avez 1 nouvelle notification.|]1,Inf[Vous avez %notification_count% nouvelles notifications."
|
|
||||||
|
|
||||||
docgen:
|
|
||||||
failure_email:
|
|
||||||
"The generation of a document failed": "La génération d'un document a échoué"
|
|
||||||
"The generation of the document %template_name% failed": "La génération du document %template_name% a échoué"
|
|
||||||
"Forward this email to your administrator for solving": "Transmettez cet email à votre administrateur pour résolution"
|
|
||||||
"References": "Références"
|
|
||||||
"The following errors were encoutered": "Les erreurs suivantes ont été rencontrées"
|
|
||||||
data_dump_email:
|
|
||||||
subject: "Export de données disponible"
|
|
||||||
"Dear": "Cher utilisateur,"
|
|
||||||
"data_dump_ready_and_attached": "Votre export de données est prêt et joint à cet email."
|
|
||||||
"filename": "Nom du fichier : %filename%"
|
|
||||||
|
|
||||||
CHILL_MAIN_COMPOSE_EXPORT: Exécuter des exports et les sauvegarder
|
CHILL_MAIN_COMPOSE_EXPORT: Exécuter des exports et les sauvegarder
|
||||||
CHILL_MAIN_GENERATE_SAVED_EXPORT: Exécuter et modifier des exports préalablement sauvegardés
|
CHILL_MAIN_GENERATE_SAVED_EXPORT: Exécuter et modifier des exports préalablement sauvegardés
|
||||||
@@ -1005,6 +975,3 @@ multiselect:
|
|||||||
editor:
|
editor:
|
||||||
switch_to_simple: Éditeur simple
|
switch_to_simple: Éditeur simple
|
||||||
switch_to_complex: Éditeur riche
|
switch_to_complex: Éditeur riche
|
||||||
|
|
||||||
login_page:
|
|
||||||
logo_alt: "Logo de Chill"
|
|
||||||
|
|||||||
@@ -46,14 +46,6 @@ No title: Geen titel
|
|||||||
User profile: Mijn gebruikersprofiel
|
User profile: Mijn gebruikersprofiel
|
||||||
Phonenumber successfully updated!: Telefoonnummer bijgewerkt!
|
Phonenumber successfully updated!: Telefoonnummer bijgewerkt!
|
||||||
|
|
||||||
user:
|
|
||||||
locale:
|
|
||||||
label: Communicatietaal
|
|
||||||
help: Taal gebruikt voor e-mailmeldingen en andere communicatie.
|
|
||||||
placeholder: Kies een taal
|
|
||||||
choice:
|
|
||||||
french: Français
|
|
||||||
dutch: Nederlands
|
|
||||||
|
|
||||||
Edit: Bewerken
|
Edit: Bewerken
|
||||||
Update: Updaten
|
Update: Updaten
|
||||||
@@ -431,17 +423,6 @@ workflow:
|
|||||||
For: Pour
|
For: Pour
|
||||||
Cc: Cc
|
Cc: Cc
|
||||||
|
|
||||||
notification:
|
|
||||||
title:
|
|
||||||
attention_needed: "Aandacht vereist in workflow %workflow% voor %title%"
|
|
||||||
new_step: "Nieuwe stap in workflow %workflow% (%place%) voor %title%"
|
|
||||||
content:
|
|
||||||
new_step_reached: "Een nieuwe stap is bereikt in workflow %workflow%."
|
|
||||||
workflow_title: "Workflow titel: %title%"
|
|
||||||
validation_needed: "Uw validatie is nodig voor deze stap."
|
|
||||||
view_workflow: "U kunt de workflow hier bekijken:"
|
|
||||||
regards: "Met vriendelijke groeten,"
|
|
||||||
|
|
||||||
|
|
||||||
Subscribe final: Recevoir une notification à l'étape finale
|
Subscribe final: Recevoir une notification à l'étape finale
|
||||||
Subscribe all steps: Recevoir une notification à chaque étape
|
Subscribe all steps: Recevoir une notification à chaque étape
|
||||||
|
|||||||
@@ -866,6 +866,29 @@ class Person implements HasCenterInterface, TrackCreationInterface, TrackUpdateI
|
|||||||
return $this->calendars;
|
return $this->calendars;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get next calendars for this person.
|
||||||
|
* Only returns calendars where this person is in the persons collection and the person property is not null.
|
||||||
|
*
|
||||||
|
* @param int $limit Maximum number of calendars to return
|
||||||
|
*
|
||||||
|
* @return ReadableCollection<int, Calendar>
|
||||||
|
*/
|
||||||
|
public function getNextCalendarsForPerson(int $limit = 5): ReadableCollection
|
||||||
|
{
|
||||||
|
$today = new \DateTimeImmutable('today');
|
||||||
|
|
||||||
|
$filtered = $this->calendars->filter(
|
||||||
|
fn (Calendar $calendar) => $calendar->getStartDate() >= $today
|
||||||
|
&& $calendar->getPerson() === $this
|
||||||
|
);
|
||||||
|
|
||||||
|
$sorted = $filtered->toArray();
|
||||||
|
usort($sorted, fn ($a, $b) => $a->getStartDate() <=> $b->getStartDate());
|
||||||
|
|
||||||
|
return new ArrayCollection(array_slice($sorted, 0, $limit));
|
||||||
|
}
|
||||||
|
|
||||||
public function getCenter(): ?Center
|
public function getCenter(): ?Center
|
||||||
{
|
{
|
||||||
if (null !== $this->centerCurrent) {
|
if (null !== $this->centerCurrent) {
|
||||||
|
|||||||
@@ -20,16 +20,16 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<ul class="record_actions">
|
<ul class="record_actions">
|
||||||
<li>
|
|
||||||
<a class="btn btn-delete" :href="deleteLink">
|
|
||||||
{{ $t("confirm.delete") }}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
<li>
|
||||||
<button class="btn btn-save" disabled>
|
<button class="btn btn-save" disabled>
|
||||||
{{ $t("confirm.ok") }}
|
{{ $t("confirm.ok") }}
|
||||||
</button>
|
</button>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="btn btn-delete" :href="deleteLink">
|
||||||
|
{{ $t("confirm.delete") }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -40,11 +40,6 @@
|
|||||||
"
|
"
|
||||||
/>
|
/>
|
||||||
<ul class="record_actions">
|
<ul class="record_actions">
|
||||||
<li>
|
|
||||||
<a class="btn btn-delete" :href="deleteLink">
|
|
||||||
{{ $t("confirm.delete") }}
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
<li>
|
||||||
<button
|
<button
|
||||||
class="btn btn-save"
|
class="btn btn-save"
|
||||||
@@ -53,6 +48,11 @@
|
|||||||
{{ $t("confirm.ok") }}
|
{{ $t("confirm.ok") }}
|
||||||
</button>
|
</button>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a class="btn btn-delete" :href="deleteLink">
|
||||||
|
{{ $t("confirm.delete") }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -112,7 +112,7 @@
|
|||||||
</template>
|
</template>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<button
|
<button
|
||||||
class="btn btn-save"
|
class="btn btn-danger"
|
||||||
:disabled="disableConfirm"
|
:disabled="disableConfirm"
|
||||||
@click="confirmCourse"
|
@click="confirmCourse"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -293,11 +293,11 @@ function onInputDocumentTitle(event) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function addDocument({ stored_object, stored_object_version, file_name }) {
|
function addDocument({ stored_object, stored_object_version }) {
|
||||||
let document = {
|
let document = {
|
||||||
type: "accompanying_period_work_evaluation_document",
|
type: "accompanying_period_work_evaluation_document",
|
||||||
storedObject: stored_object,
|
storedObject: stored_object,
|
||||||
title: file_name,
|
title: "Nouveau document",
|
||||||
};
|
};
|
||||||
store.commit("addDocument", {
|
store.commit("addDocument", {
|
||||||
key: props.evaluation.key,
|
key: props.evaluation.key,
|
||||||
|
|||||||
@@ -190,6 +190,8 @@
|
|||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="item-col">
|
||||||
<ul class="record_actions">
|
<ul class="record_actions">
|
||||||
{% if options['customButtons']['before'] is defined %}
|
{% if options['customButtons']['before'] is defined %}
|
||||||
{{ options['customButtons']['before'] }}
|
{{ options['customButtons']['before'] }}
|
||||||
@@ -212,4 +214,3 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{%- endif -%}
|
{%- endif -%}
|
||||||
|
|
||||||
|
|||||||
@@ -301,6 +301,47 @@
|
|||||||
'customButtons': { 'after': _self.button_person_after(person), 'before': _self.button_person_before((person)) }
|
'customButtons': { 'after': _self.button_person_after(person), 'before': _self.button_person_before((person)) }
|
||||||
}) }}
|
}) }}
|
||||||
|
|
||||||
|
{% set calendars = [] %}
|
||||||
|
{% for c in person.getNextCalendarsForPerson(10) %}
|
||||||
|
{% if is_granted('CHILL_CALENDAR_CALENDAR_SEE', c) %}
|
||||||
|
{% set calendars = calendars|merge([c]) %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% if calendars|length > 0 %}
|
||||||
|
<div class="wrap-list periods-list">
|
||||||
|
<div class="wl-row">
|
||||||
|
<div class="wl-col title">
|
||||||
|
<h3>{{ 'chill_calendar.Next calendars'|trans }}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="wl-col list">
|
||||||
|
<div class="calendar-list">
|
||||||
|
<ul class="calendar-list">
|
||||||
|
{% for c in calendars %}
|
||||||
|
<li>
|
||||||
|
{% if is_granted('CHILL_CALENDAR_CALENDAR_EDIT', c) %}
|
||||||
|
<a href="{{ chill_path_add_return_path('chill_calendar_calendar_edit', { id: c.id }) }}">
|
||||||
|
<span class="badge bg-secondary">
|
||||||
|
{{ c.startDate|format_datetime('long', 'short') }}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
{% else %}
|
||||||
|
<span class="badge bg-secondary">
|
||||||
|
{{ c.startDate|format_datetime('long', 'short') }}
|
||||||
|
</span>
|
||||||
|
{% endif %}
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% if is_granted('CHILL_CALENDAR_CALENDAR_SEE', person) %}
|
||||||
|
<a href="{{ chill_path_add_return_path('chill_calendar_calendar_list_by_person', {'id': person.id}) }}" class="calendar-list__global"><i class="fa fa-list"></i></a>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{#- 'acps' is for AcCompanyingPeriodS #}
|
{#- 'acps' is for AcCompanyingPeriodS #}
|
||||||
{%- set acps = [] %}
|
{%- set acps = [] %}
|
||||||
{%- set acpsClosed = [] %}
|
{%- set acpsClosed = [] %}
|
||||||
|
|||||||
@@ -168,8 +168,9 @@ final readonly class PersonContext implements PersonContextInterface
|
|||||||
|
|
||||||
if ($this->isScopeNecessary($entity)) {
|
if ($this->isScopeNecessary($entity)) {
|
||||||
$builder->add('scope', ScopePickerType::class, [
|
$builder->add('scope', ScopePickerType::class, [
|
||||||
|
'center' => $this->centerResolverManager->resolveCenters($entity),
|
||||||
'role' => PersonDocumentVoter::CREATE,
|
'role' => PersonDocumentVoter::CREATE,
|
||||||
'subject' => $entity,
|
'label' => 'Scope',
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,11 +27,7 @@ use Symfony\Component\OptionsResolver\OptionsResolver;
|
|||||||
|
|
||||||
class SingleTaskType extends AbstractType
|
class SingleTaskType extends AbstractType
|
||||||
{
|
{
|
||||||
public function __construct(
|
public function __construct(private readonly ParameterBagInterface $parameterBag, private readonly CenterResolverDispatcherInterface $centerResolverDispatcher, private readonly ScopeResolverDispatcher $scopeResolverDispatcher) {}
|
||||||
private readonly ParameterBagInterface $parameterBag,
|
|
||||||
private readonly CenterResolverDispatcherInterface $centerResolverDispatcher,
|
|
||||||
private readonly ScopeResolverDispatcher $scopeResolverDispatcher,
|
|
||||||
) {}
|
|
||||||
|
|
||||||
public function buildForm(FormBuilderInterface $builder, array $options)
|
public function buildForm(FormBuilderInterface $builder, array $options)
|
||||||
{
|
{
|
||||||
@@ -68,8 +64,8 @@ class SingleTaskType extends AbstractType
|
|||||||
if ($isScopeConcerned && $this->parameterBag->get('chill_main')['acl']['form_show_scopes']) {
|
if ($isScopeConcerned && $this->parameterBag->get('chill_main')['acl']['form_show_scopes']) {
|
||||||
$builder
|
$builder
|
||||||
->add('circle', ScopePickerType::class, [
|
->add('circle', ScopePickerType::class, [
|
||||||
|
'center' => $center,
|
||||||
'role' => $options['role'],
|
'role' => $options['role'],
|
||||||
'subject' => $task,
|
|
||||||
'required' => true,
|
'required' => true,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
{% block title 'Tasks for {{ name }}'|trans({ '{{ name }}' : person|chill_entity_render_string }) %}
|
{% block title 'Tasks for {{ name }}'|trans({ '{{ name }}' : person|chill_entity_render_string }) %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="task-list"">
|
<div class="col-md-10 col-xxl">
|
||||||
|
|
||||||
<h1>{{ block('title') }}</h1>
|
<h1>{{ block('title') }}</h1>
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="col-md-9 col-xxl tasks">
|
<div class="col-md-10 col-xxl tasks">
|
||||||
{% include '@ChillTask/SingleTask/AccompanyingCourse/list.html.twig' %}
|
{% include '@ChillTask/SingleTask/AccompanyingCourse/list.html.twig' %}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user