diff --git a/.changes/unreleased/Feature-20250722-155039.yaml b/.changes/unreleased/Feature-20250722-155039.yaml deleted file mode 100644 index 28f9031b9..000000000 --- a/.changes/unreleased/Feature-20250722-155039.yaml +++ /dev/null @@ -1,6 +0,0 @@ -kind: Feature -body: Show filters on list pages unfolded by default -time: 2025-07-22T15:50:39.338057044+02:00 -custom: - Issue: "399" - SchemaChange: No schema change diff --git a/.changes/unreleased/UX-20250722-132637.yaml b/.changes/unreleased/UX-20250722-132637.yaml deleted file mode 100644 index 9f0766794..000000000 --- a/.changes/unreleased/UX-20250722-132637.yaml +++ /dev/null @@ -1,6 +0,0 @@ -kind: UX -body: Limit display of participations in event list -time: 2025-07-22T13:26:37.500656935+02:00 -custom: - Issue: "" - SchemaChange: No schema change diff --git a/.changes/v4.1.0.md b/.changes/v4.1.0.md new file mode 100644 index 000000000..fd67c0c9a --- /dev/null +++ b/.changes/v4.1.0.md @@ -0,0 +1,12 @@ +## v4.1.0 - 2025-08-26 +### 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 +* ([#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 + + **Schema Change**: Add columns or tables +### 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. +* ([#384](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/384)) add min and step attributes to integer field in DateIntervalType +### UX +* Limit display of participations in event list diff --git a/.changes/v4.2.0.md b/.changes/v4.2.0.md new file mode 100644 index 000000000..6e2835ada --- /dev/null +++ b/.changes/v4.2.0.md @@ -0,0 +1,10 @@ +## v4.2.0 - 2025-09-02 +### Feature +* ([#64](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/64)) Add external identifier for a Person + + **Schema Change**: Add columns or tables +* ([#330](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/330) Allow users to choose for which notifications they want to receive an email +### Fixed +* ([#422](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/422)) Fixed html layout of pages for recovering password +* Fix typo in 'uncheckAll' script for centers selection +* Fix incorrect parameter name in event details link diff --git a/.changes/v4.2.1.md b/.changes/v4.2.1.md new file mode 100644 index 000000000..c2dbf65a6 --- /dev/null +++ b/.changes/v4.2.1.md @@ -0,0 +1,6 @@ +## v4.2.1 - 2025-09-03 +### Fixed +* Fix exports to work with DirectExportInterface +### DX +* Improve error message when a stored object cannot be written on local disk + diff --git a/.changes/v4.3.0.md b/.changes/v4.3.0.md new file mode 100644 index 000000000..ef13ad3cd --- /dev/null +++ b/.changes/v4.3.0.md @@ -0,0 +1,10 @@ +## v4.3.0 - 2025-09-08 +### Feature +* ([#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 +* ([#412](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/412)) Add an absence end date + + **Schema Change**: Add columns or tables +### Fixed +* fix date formatting in calendar range display +* Change route URL to avoid clash with person duplicate controller method diff --git a/.eslint-baseline.json b/.eslint-baseline.json index 6483e47b3..a8bf01c0d 100644 --- a/.eslint-baseline.json +++ b/.eslint-baseline.json @@ -7,14 +7,6 @@ "message": "'app' is assigned a value but never used.", "hash": "f8c2979921289906e3baabae31ba101ead91504f" }, - { - "path": "src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/index.js", - "line": 57, - "column": 23, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'event' is defined but never used.", - "hash": "cf0cf378f71403f62a6425f384ccbbdec433d1f2" - }, { "path": "src/Bundle/ChillCalendarBundle/Resources/public/module/Invite/answer.js", "line": 7, @@ -127,46 +119,6 @@ "message": "'payload' is defined but never used.", "hash": "66c545917093ba30f1d6ca10ddaa676140e749bd" }, - { - "path": "src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App2.vue", - "line": 224, - "column": 10, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'reactive' is defined but never used.", - "hash": "96ed76a9828138fb125fc36c4b55e900bbfe87c2" - }, - { - "path": "src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App2.vue", - "line": 230, - "column": 5, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'DropArg' is defined but never used.", - "hash": "bd405399a4091d65e8391404bfb0c4611816c8e0" - }, - { - "path": "src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App2.vue", - "line": 251, - "column": 9, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'t' is assigned a value but never used.", - "hash": "bc09207a496405f7a71c178e522b89aeb1f7ebd3" - }, - { - "path": "src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App2.vue", - "line": 356, - "column": 32, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'arg' is defined but never used.", - "hash": "aeae152f0669b946a1ad681dd52b0ef03393ae79" - }, - { - "path": "src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/App2.vue", - "line": 434, - "column": 11, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'changedEvent' is assigned a value but never used.", - "hash": "a7a81a6bf09d00c0364e3aa8207ffad853f0547b" - }, { "path": "src/Bundle/ChillCalendarBundle/Resources/public/vuejs/MyCalendarRange/Components/EditLocation.vue", "line": 77, @@ -399,14 +351,6 @@ "message": "'error' is defined but never used.", "hash": "e26e5e101e90d2b7ee84d6f5de8c819e52129c17" }, - { - "path": "src/Bundle/ChillDocStoreBundle/Resources/public/module/async_upload/index.ts", - "line": 29, - "column": 14, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'vm' is defined but never used.", - "hash": "8e7f5e89dd72c54459cf82156389b88988f97d63" - }, { "path": "src/Bundle/ChillDocStoreBundle/Resources/public/module/async_upload/uploader.js", "line": 39, @@ -615,14 +559,6 @@ "message": "'ref' is defined but never used.", "hash": "2a27cd6d06a26e1326654c929068e3704137e24b" }, - { - "path": "src/Bundle/ChillDocStoreBundle/Resources/public/vuejs/StoredObjectButton/HistoryButton/HistoryButtonList.vue", - "line": 57, - "column": 17, - "ruleId": "vue/valid-v-for", - "message": "Custom elements in iteration require 'v-bind:key' directives.", - "hash": "cce787939524e83dd135869e13738ef332d7156c" - }, { "path": "src/Bundle/ChillDocStoreBundle/Resources/public/vuejs/StoredObjectButton/WopiEditButton.vue", "line": 15, @@ -983,22 +919,6 @@ "message": "'_e' is defined but never used.", "hash": "1d6448401778e8c56554020fe5abd47851ed33f3" }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/module/wopi-link/index.js", - "line": 21, - "column": 55, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'e' is defined but never used.", - "hash": "eae499e4f6e9f43a9d17f9cd917cb6d3d97be25c" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/page/export/download-export.js", - "line": 3, - "column": 55, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'e' is defined but never used.", - "hash": "088fd383e7807e484aefc9825209bc7c8942bd22" - }, { "path": "src/Bundle/ChillMainBundle/Resources/public/page/homepage_widget/index.js", "line": 9, @@ -1089,115 +1009,19 @@ }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress.vue", - "line": 247, - "column": 5, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'postAddressToPerson' is defined but never used.", - "hash": "8a41c437cf2b5554cbbe1704cd51f3102b3d5994" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress.vue", - "line": 248, - "column": 5, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'postAddressToHousehold' is defined but never used.", - "hash": "66dec84b2ece299daf21308e5e60d497ba442b27" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress.vue", - "line": 490, + "line": 516, "column": 21, "ruleId": "vue/no-mutating-props", "message": "Unexpected mutation of \"context\" prop.", - "hash": "0d3f40c47974a4371072b3b9ee04b197c830162d" + "hash": "984c4203f2ac1e1bb65f9ce76ecd03b763cfaa83" }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress.vue", - "line": 491, + "line": 517, "column": 21, "ruleId": "vue/no-mutating-props", "message": "Unexpected mutation of \"context\" prop.", - "hash": "8e877b7e588c30e182f7b572bdb9685360f9cf99" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress.vue", - "line": 508, - "column": 47, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'reject' is defined but never used.", - "hash": "5a3e3401bc3c765d91faaf4cfde57697af1262b7" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress.vue", - "line": 525, - "column": 47, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'reject' is defined but never used.", - "hash": "35a741d90379574b9323279f5802193d0c98a9dc" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress.vue", - "line": 553, - "column": 47, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'reject' is defined but never used.", - "hash": "c23d1ddf6c0d10ae97948e74aee9c14b9320b86c" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress.vue", - "line": 572, - "column": 47, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'reject' is defined but never used.", - "hash": "4322e81c6ea9d9734c680633a724d5bd4fabacb2" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress.vue", - "line": 803, - "column": 47, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'reject' is defined but never used.", - "hash": "7928a6461b9d394c7d97f048933553936f7d8963" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress.vue", - "line": 852, - "column": 47, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'reject' is defined but never used.", - "hash": "e5afdb8efccb5470a08dde48f755b1268fa947b5" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressMore.vue", - "line": 93, - "column": 17, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "68f5e1cf5c03f9ada59c9e0afca0b74c7f3fca4b" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressMore.vue", - "line": 101, - "column": 17, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "50d730f6109092baff2db66adc44dc1315e2bda2" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressMore.vue", - "line": 109, - "column": 17, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "573e4c041ce663f28b933d7a675c2a525aba644c" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressMore.vue", - "line": 117, - "column": 17, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "293f845eeab515b1df4649d136c2d8219ed59c4d" + "hash": "c9fb019bc21bfa77d989ed596913b99dd653c594" }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressMore.vue", @@ -1224,204 +1048,180 @@ "hash": "2d5a5e680ff207ad97c7e7b7d999064b561dfd8a" }, { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", - "line": 106, + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressMore.vue", + "line": 149, "column": 17, "ruleId": "vue/no-mutating-props", "message": "Unexpected mutation of \"entity\" prop.", - "hash": "d52356f2af31d0167c02330ec22d09fbfa6b2b9f" + "hash": "e4c1ecd7ae77d46ac3625c5bbe92a24d6a964db9" }, { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", - "line": 114, + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressMore.vue", + "line": 157, "column": 17, "ruleId": "vue/no-mutating-props", "message": "Unexpected mutation of \"entity\" prop.", - "hash": "c8e8e06f370f93bf05867e93b5f037dfa46937b1" + "hash": "4dece2db87c6ce1c04ae06c088ddfe916c1c0c61" + }, + { + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressMore.vue", + "line": 165, + "column": 17, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "facc7a0f17bdf19396fae3d0de3da82e60503c0d" + }, + { + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressMore.vue", + "line": 173, + "column": 17, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "19de32c76518387218264d7c4dab914d143a9cca" }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", - "line": 128, - "column": 13, + "line": 130, + "column": 17, "ruleId": "vue/no-mutating-props", "message": "Unexpected mutation of \"entity\" prop.", - "hash": "9abaf71ca4b4f292b3b01e724d0a7733365e71f1" + "hash": "239ac02a02694d5b20ab30d4c7ce5838c51d1515" }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", - "line": 129, - "column": 13, + "line": 138, + "column": 17, "ruleId": "vue/no-mutating-props", "message": "Unexpected mutation of \"entity\" prop.", - "hash": "0b0743959778a9e3d93089b132608816ee4e6646" + "hash": "a54f9bc6d1edfa4df93c7dd7d409cfef3fccf99e" }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", - "line": 132, + "line": 152, "column": 13, "ruleId": "vue/no-mutating-props", "message": "Unexpected mutation of \"entity\" prop.", - "hash": "9759da7b7859b8ee8efaf74876430658ac6b6fe2" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", - "line": 133, - "column": 13, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "dba8be9a27ab74ec743b7d9e07c05d857b407dd3" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", - "line": 134, - "column": 13, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "9b1f5bce779aafc46b19d7a5d266eaa29f8f9be9" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", - "line": 139, - "column": 13, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "fe6fc4aea0994ba9da15b7c09d308842b67958cb" + "hash": "74a5f664d18f3916ea908897fcd0291cb0128f29" }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", "line": 153, - "column": 55, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'reject' is defined but never used.", - "hash": "bd0e024fcad2e3f4566f15293e3c25c840f6dd3e" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", - "line": 154, - "column": 37, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "596c4b180b926b7829f987384328bf5636cd367a" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", - "line": 171, - "column": 59, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'reject' is defined but never used.", - "hash": "5b41d5f9b45da074fb7bbbbd45e0da501da72071" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", - "line": 172, - "column": 41, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "d92b92a25043244cca809bd129633b7e024e26b4" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", - "line": 190, - "column": 17, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "dd9a85ea740742d620e864796f67c5bff834486d" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", - "line": 191, - "column": 17, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "e3e59960d0d50709a57b336f66b586710b774892" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", - "line": 192, - "column": 17, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "fe11b0e54396511e7b3b08615a78d22fc27e2fad" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", - "line": 222, "column": 13, "ruleId": "vue/no-mutating-props", "message": "Unexpected mutation of \"entity\" prop.", - "hash": "63c14c2150c33ec701bc4a0ff94efde69537d490" + "hash": "740ea5d793c7a34c9f352d8b333f3aa04cc80ee8" + }, + { + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", + "line": 156, + "column": 13, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "af8aca18f0226a5988ed90d44d95e2d607bfb5e6" + }, + { + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", + "line": 157, + "column": 13, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "7bc2453017793ae20cd6c10005f941d384b59d84" + }, + { + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", + "line": 158, + "column": 13, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "571b4ee5f22358dd165ec59696bb3439b7c9ff6c" + }, + { + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", + "line": 163, + "column": 13, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "cfcb5946c86e289fc61623a794284a5a272d02e8" + }, + { + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", + "line": 178, + "column": 37, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "0ec402e43cb08bf129e0737c0d2c4f6d0c7af8bd" + }, + { + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", + "line": 196, + "column": 41, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "ec178d33e067aac892e015002afb6f3a2ff98762" + }, + { + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", + "line": 214, + "column": 17, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "c0f4e5454e672b6064eb9cf6c235c6810f7bfa80" + }, + { + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", + "line": 215, + "column": 17, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "e3dd840d2474f9865a45822872bf9ecfb15961d7" + }, + { + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", + "line": 216, + "column": 17, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "a32a60382b145cc7a4a7ebe01ec435b8e3103320" + }, + { + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressSelection.vue", + "line": 246, + "column": 13, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "082447e5c731012f3acc282943502775dfd24797" }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", - "line": 96, + "line": 118, "column": 20, "ruleId": "vue/no-mutating-props", "message": "Unexpected mutation of \"entity\" prop.", - "hash": "d2a9fdaeef0e2810f480022d4c6f99e4f76a818e" + "hash": "d4fba4fe09af3c0937c0dd164928c8930c1591b5" }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", - "line": 96, + "line": 118, "column": 20, "ruleId": "vue/no-side-effects-in-computed-properties", "message": "Unexpected side effect in \"cities\" computed property.", - "hash": "dd92a60a9b1ebefeb9a90941d45326fbfa483733" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", - "line": 102, - "column": 17, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "04be01ab638ce01f568fb0216929e65e1175ca23" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", - "line": 110, - "column": 17, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "8619c8e0b63e87d09268832f90e4fba06b87e41f" + "hash": "1113a114d5aaf9f32f442916d25458541c5af35c" }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", "line": 124, - "column": 13, + "column": 17, "ruleId": "vue/no-mutating-props", "message": "Unexpected mutation of \"entity\" prop.", - "hash": "281f918da00635079501418b1e6b2c05b62eb4a7" + "hash": "fa56a7c93583f0a9d0c2ecac10228c4f4fc1bc3a" }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", - "line": 125, - "column": 13, + "line": 132, + "column": 17, "ruleId": "vue/no-mutating-props", "message": "Unexpected mutation of \"entity\" prop.", - "hash": "c131b09fa67ab1d069f1d04a54582d6b0f206153" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", - "line": 126, - "column": 13, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "3d3a2a4add64c291b8f5f1cddd90a173cd6a819d" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", - "line": 131, - "column": 21, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "ed48f4988914d7897018a2e06830a97e6740b3e8" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", - "line": 145, - "column": 13, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "744f3a7610d4d6015e50e25149bceffd6c6e2763" + "hash": "9fe87937ea67d1dae95fb3d44d4be0da2eba0905" }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", @@ -1441,115 +1241,139 @@ }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", - "line": 149, - "column": 17, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "1e7b1ad55866f708baaca72dfa4ff26d6f8e5d21" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", - "line": 152, + "line": 148, "column": 13, "ruleId": "vue/no-mutating-props", "message": "Unexpected mutation of \"entity\" prop.", - "hash": "84779331536ffceec8d4a8c5ca4307310b882549" + "hash": "ab4f478fbfbc954b8dff75176dcd432f9ff28cfc" }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", - "line": 161, + "line": 153, + "column": 21, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "1d907d149f9ddb62e32140a90efe9a74b3e71fef" + }, + { + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", + "line": 167, "column": 13, "ruleId": "vue/no-mutating-props", "message": "Unexpected mutation of \"entity\" prop.", - "hash": "0789999841be671a4d8ab080d6fdb679f843eb52" + "hash": "8aa37d2d4f011773e68838a2c88017875de563b5" }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", - "line": 170, - "column": 51, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'reject' is defined but never used.", - "hash": "bbb17afa114f016e2058d90aa32d2a625804f0d1" + "line": 168, + "column": 13, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "a4827a357e52a51fa9262319114d81a130296acf" + }, + { + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", + "line": 169, + "column": 13, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "a4c9715664202949e3242b8d4aa4098288b46dc4" }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", "line": 171, + "column": 17, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "f3e9e21e433e90ec7b615b8940d43c4177372b66" + }, + { + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", + "line": 174, + "column": 13, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "770b7a24cc24b380e88db47d62422c8e1ece2571" + }, + { + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", + "line": 183, + "column": 13, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "2aef3c519a9ec6abcfe7573989d3de19d5c4c752" + }, + { + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", + "line": 193, "column": 33, "ruleId": "vue/no-mutating-props", "message": "Unexpected mutation of \"entity\" prop.", - "hash": "5fbe407ceceb37bff2ac800ceddd7942540132f1" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", - "line": 190, - "column": 55, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'reject' is defined but never used.", - "hash": "e2af91def877befbabef8e93deba4c58a3ee2ded" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", - "line": 191, - "column": 37, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "ee8544ee45681a650ed7d4918ae979685cdd8f0f" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", - "line": 210, - "column": 17, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "5d9d2217c8c7e6571bc9f72a98ea5b370edb4968" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", - "line": 211, - "column": 17, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "6e04619b373c23c91f6c36c2aad314ac16cdb697" - }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", - "line": 212, - "column": 17, - "ruleId": "vue/no-mutating-props", - "message": "Unexpected mutation of \"entity\" prop.", - "hash": "39df045639a62f64ccdb03a80e286bc3ad772587" + "hash": "5d1f97e4d7d9f47399d312e8b9f95ef9e3843b8c" }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", "line": 213, - "column": 17, + "column": 37, "ruleId": "vue/no-mutating-props", "message": "Unexpected mutation of \"entity\" prop.", - "hash": "c399a43fa797a8ce61c9d96a644a39cc84a387b7" + "hash": "c1df874f790ef0c036bf58ae8a8db1ee173685d4" }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", - "line": 245, + "line": 232, + "column": 17, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "476e6588a28ac9382e8b9d2e63a8babecd23bad8" + }, + { + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", + "line": 233, + "column": 17, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "6a0c82ba72d6d87217bf33a6ad8e40a4b81bc802" + }, + { + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", + "line": 234, + "column": 17, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "741d5af6c7d90041c0dc1c1df2e8699b80fca69a" + }, + { + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", + "line": 235, + "column": 17, + "ruleId": "vue/no-mutating-props", + "message": "Unexpected mutation of \"entity\" prop.", + "hash": "c3ffd141f58d532663875cc5c7d338ed00db2a6d" + }, + { + "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CitySelection.vue", + "line": 267, "column": 13, "ruleId": "vue/no-mutating-props", "message": "Unexpected mutation of \"entity\" prop.", - "hash": "04337a07944caaa4819cfebcf29e1a7cbfdf248b" + "hash": "2700f258396516a2fe971618fafbcdf72cdda3ab" }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CountrySelection.vue", - "line": 76, + "line": 94, "column": 13, "ruleId": "vue/no-mutating-props", "message": "Unexpected mutation of \"entity\" prop.", - "hash": "373a2e31f110d138c66d77f1faf5dc61545c55af" + "hash": "4be1b0592efa775092a91a1d744e16ce98bd216e" }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/CountrySelection.vue", - "line": 81, + "line": 99, "column": 13, "ruleId": "vue/no-mutating-props", "message": "Unexpected mutation of \"entity\" prop.", - "hash": "421eb6a63224b4b1d81b216677a710c5c99ddee3" + "hash": "19b54b6d76c30249d520a296f826eda9d6eb0668" }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/DatePane.vue", @@ -1569,19 +1393,19 @@ }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/EditPane.vue", - "line": 155, + "line": 169, "column": 17, "ruleId": "vue/no-mutating-props", "message": "Unexpected mutation of \"entity\" prop.", - "hash": "b3a822914fcb5e2fcf28efc331a45b9205002eeb" + "hash": "dcb7b34098062760ddbb849655a5bb3ca65c36d3" }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/EditPane.vue", - "line": 164, + "line": 178, "column": 17, "ruleId": "vue/no-mutating-props", "message": "Unexpected mutation of \"entity\" prop.", - "hash": "72c7d850f6cdeaf65b373a33234222f9766ee30b" + "hash": "86b3ecf201025cac36878c5e4bf8850fb9d58cb5" }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/index.js", @@ -1631,14 +1455,6 @@ "message": "'app' is assigned a value but never used.", "hash": "9e6125f4fc387dc362c69cc6e3ce360eb2851f1b" }, - { - "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/PickEntity/PickEntity.vue", - "line": 60, - "column": 22, - "ruleId": "vue/require-valid-default-prop", - "message": "Type of the default value for 'suggested' prop must be a function.", - "hash": "d30212820bc2e97fa02d75dbc3a014558693f169" - }, { "path": "src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddressDetails/Parts/AddressDetailsMap.vue", "line": 24, @@ -1727,14 +1543,6 @@ "message": "'tags' is assigned a value but never used.", "hash": "ae9bb2e0651c118ed9efd227e88b86cc83f5d80d" }, - { - "path": "src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/StickyNav.vue", - "line": 116, - "column": 18, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'event' is defined but never used.", - "hash": "201f182769c6dfb87148b841e7d9b592be429669" - }, { "path": "src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/index.js", "line": 19, @@ -1767,14 +1575,6 @@ "message": "'app' is assigned a value but never used.", "hash": "aaaaa63e7a60443b8cbf8191feb9142852ebdf1c" }, - { - "path": "src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/FormEvaluation.vue", - "line": 79, - "column": 13, - "ruleId": "vue/require-v-for-key", - "message": "Elements in iteration expect to have 'v-bind:key' directives.", - "hash": "422f53925922e59655d0f71624c19af75d41628c" - }, { "path": "src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/index.js", "line": 12, @@ -1815,22 +1615,6 @@ "message": "'evalFQDN' is assigned a value but never used.", "hash": "7fc32caafa23addddf44f3acbc5045b4523a0271" }, - { - "path": "src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/store.js", - "line": 611, - "column": 9, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'errors' is assigned a value but never used.", - "hash": "c41cf979fc1626c38328dbf1028800c3395496bd" - }, - { - "path": "src/Bundle/ChillPersonBundle/Resources/public/vuejs/ExportFormActionGoalResult/App.vue", - "line": 282, - "column": 7, - "ruleId": "@typescript-eslint/no-unused-expressions", - "message": "Expected an assignment or function call and instead saw an expression.", - "hash": "de3a6e2bb10a80a2bacba665be74266c7efc7d64" - }, { "path": "src/Bundle/ChillPersonBundle/Resources/public/vuejs/ExportFormActionGoalResult/index.js", "line": 16, @@ -1847,38 +1631,6 @@ "message": "'app' is assigned a value but never used.", "hash": "2f161e663689e3e4dfe2c53b0d64c91a4d2b1a60" }, - { - "path": "src/Bundle/ChillPersonBundle/Resources/public/vuejs/VisGraph/App.vue", - "line": 263, - "column": 19, - "ruleId": "vue/return-in-computed-property", - "message": "Expected to return a value in \"refreshNetwork\" computed property.", - "hash": "2c1b08a49098c83b09058cedc0a962126e91e544" - }, - { - "path": "src/Bundle/ChillPersonBundle/Resources/public/vuejs/VisGraph/App.vue", - "line": 270, - "column": 7, - "ruleId": "vue/no-side-effects-in-computed-properties", - "message": "Unexpected side effect in \"legendLayers\" computed property.", - "hash": "760948d2187c853f17ac9a1bd7107e883092d4f4" - }, - { - "path": "src/Bundle/ChillPersonBundle/Resources/public/vuejs/VisGraph/App.vue", - "line": 281, - "column": 5, - "ruleId": "vue/no-dupe-keys", - "message": "Duplicate key 'checkedLayers'. May cause name collision in script or template tag.", - "hash": "447edb461e15e3ff5c60c8ecba88131e442539aa" - }, - { - "path": "src/Bundle/ChillPersonBundle/Resources/public/vuejs/VisGraph/App.vue", - "line": 353, - "column": 7, - "ruleId": "@typescript-eslint/no-unused-expressions", - "message": "Expected an assignment or function call and instead saw an expression.", - "hash": "9cf656cbf1eb3d7cc0082e63adcd320b6093d14f" - }, { "path": "src/Bundle/ChillPersonBundle/Resources/public/vuejs/VisGraph/index.js", "line": 20, @@ -1887,22 +1639,6 @@ "message": "'app' is assigned a value but never used.", "hash": "9e94e6412b8a44e47bfe8e66218cad09cff5bed4" }, - { - "path": "src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AccompanyingPeriod/SetReferrer.vue", - "line": 42, - "column": 16, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'response' is defined but never used.", - "hash": "62de07b13c662e32332bb062038acee23978ea70" - }, - { - "path": "src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AddPersons.vue", - "line": 356, - "column": 28, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'_response' is defined but never used.", - "hash": "097e7788a2b5dea500b80b8a3cf968e57063a66a" - }, { "path": "src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AddPersons/TypeUserGroup.vue", "line": 6, @@ -1918,45 +1654,5 @@ "ruleId": "@typescript-eslint/no-unused-vars", "message": "'UserRenderBoxBadge' is defined but never used.", "hash": "99eba0d8633b2c9497417f4f61ec4194dbb2a96b" - }, - { - "path": "src/Bundle/ChillWopiBundle/src/Resources/public/module/pending/index.ts", - "line": 4, - "column": 3, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'StoredObjectStatus' is defined but never used.", - "hash": "63f8c4572293916850d6165647774b27d4b732c6" - }, - { - "path": "src/Bundle/ChillWopiBundle/src/Resources/public/module/pending/index.ts", - "line": 5, - "column": 3, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'StoredObjectStatusChange' is defined but never used.", - "hash": "a87c178e3eb5999bf0f46b3fa1c6da77e1be08b9" - }, - { - "path": "src/Bundle/ChillWopiBundle/src/Resources/public/module/pending/index.ts", - "line": 30, - "column": 61, - "ruleId": "@typescript-eslint/no-unused-vars", - "message": "'e' is defined but never used.", - "hash": "02953121583f4f73742a19adab099ab63df9076e" - }, - { - "path": "src/Bundle/ChillWopiBundle/src/Resources/public/module/pending/index.ts", - "line": 31, - "column": 32, - "ruleId": "@typescript-eslint/no-explicit-any", - "message": "Unexpected any. Specify a different type.", - "hash": "af48e21a1651b6017ede882dab249c00a818a44d" - }, - { - "path": "src/Bundle/ChillWopiBundle/src/Resources/public/module/pending/index.ts", - "line": 37, - "column": 16, - "ruleId": "@typescript-eslint/no-explicit-any", - "message": "Unexpected any. Specify a different type.", - "hash": "7513ea552a0a649ce4ab93b6cf9d40bfef4f68d9" } ] \ No newline at end of file diff --git a/.gitignore b/.gitignore index 88a448071..b81e6112e 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,9 @@ migrations/* templates/* translations/* +# we allow developers to add customization on their installation, without commiting it +config/packages/dev/* + ###> symfony/framework-bundle ### /.env.local /.env.local.php diff --git a/.junie/guidelines.md b/.junie/guidelines.md index 97a2be27d..a53bfe8cf 100644 --- a/.junie/guidelines.md +++ b/.junie/guidelines.md @@ -27,11 +27,11 @@ Chill is a comprehensive web application built as a set of Symfony bundles. It i ## Project Structure -Note: This is a project which exists from a long time ago, and we found multiple structure inside each bundle. When having the choice, the developers should choose the new structure. +Note: This is a project that's existed for a long time, and throughout the years we've used multiple structures inside each bundle. When having the choice, the developers should choose the new structure. The project follows a standard Symfony bundle structure: - `/src/Bundle/`: Contains all the Chill bundles. The code is either at the root of the bundle directory, or within a `src/` directory (preferred). See psr4 mapping at the root's `composer.json`. -- each bundle come with his own tests, either in the `Tests` directory (when the code is directly within the bundle directory (for instance `src/Bundle/ChillMainBundle/Tests`, `src/Bundle/ChillPersonBundle/Tests`)), or inside the `tests` directory, alongside to the `src/` sub-directory (example: `src/Bundle/ChillWopiBundle/tests`) (this is the preferred way). +- each bundle comes with its own tests, either in the `Tests` directory (when the code is directly within the bundle directory (for instance `src/Bundle/ChillMainBundle/Tests`, `src/Bundle/ChillPersonBundle/Tests`)), or inside the `tests` directory, alongside the `src/` sub-directory (example: `src/Bundle/ChillWopiBundle/tests`) (this is the preferred way). - `/docs/`: Contains project documentation Each bundle typically has the following structure: @@ -46,13 +46,13 @@ Each bundle typically has the following structure: ### A special word about TicketBundle -The ticket bundle is developed using a kind of "Command" pattern. The controller fill a "Command", and a "CommandHandler" handle this command. They are savec in the `src/Bundle/ChillTicketBundle/src/Action` directory. +The ticket bundle is developed using a kind of "Command" pattern. The controller fills a "Command," and a "CommandHandler" handles this command. They are saved in the `src/Bundle/ChillTicketBundle/src/Action` directory. ## Development Guidelines ### Building and Configuration Instructions -All the command should be run through the `symfony` command, which will configure the required variables. +All the commands should be run through the `symfony` command, which will configure the required variables. For assets, we must ensure that we use node at version `^20.0.0`. This is done using `nvm use 20`. @@ -87,7 +87,7 @@ For assets, we must ensure that we use node at version `^20.0.0`. This is done u docker compose up -d ``` -5. **Set Up the Database**: +6. **Set Up the Database**: ```bash # Create the database symfony console doctrine:database:create @@ -99,20 +99,20 @@ For assets, we must ensure that we use node at version `^20.0.0`. This is done u symfony console doctrine:fixtures:load ``` -6. **Build Assets**: +7. **Build Assets**: ```bash nvm use 20 yarn run encore dev ``` -7. **Start the Development Server**: +8. **Start the Development Server**: ```bash symfony server:start -d ``` #### Docker Setup -The project includes Docker configuration for easier development: +The project includes a Docker configuration for easier development: 1. **Start Docker Services**: ```bash @@ -153,9 +153,9 @@ Key configuration files: Each time a doctrine entity is created, we generate migration to adapt the database. -The migration are created using the command `symfony console doctrine:migrations:diff --no-interaction --namespace `, where the namespace is the relevant namespace for migration. As this is a bash script, do not forget to quote the `\` (`\` must become `\\` in your command). +The migration is created using the command `symfony console doctrine:migrations:diff --no-interaction --namespace `, where the namespace is the relevant namespace for migration. As this is a bash script, remember to quote the `\` (`\` must become `\\` in your command). -Each bundle has his own namespace for migration (always ask me to confirm that command, with a list of updated / created entities so that I can confirm you that it is ok): +Each bundle has his own namespace for migration (always ask me to confirm that command with a list of updated / created entities so that I can confirm to you that it is ok): - `Chill\Bundle\ActivityBundle` writes migrations to `Chill\Migrations\Activity`; - `Chill\Bundle\BudgetBundle` writes migrations to `Chill\Migrations\Budget`; @@ -183,7 +183,7 @@ Once created the, comment's classes should be removed and a description of the c When we need to use a DateTime or DateTimeImmutable that need to express "now", we prefer the usage of `Symfony\Component\Clock\ClockInterface`, where possible. This is usually not possible in doctrine entities, -where injection does not work when restoring an entity from database, but usually possible in services. +where injection does not work when restoring an entity from a database, but usually possible in services. In test, we use `\Symfony\Component\Clock\MockClock` which is an implementation of `Symfony\Component\Clock\ClockInterface` where we have full and easy control of the date. @@ -198,9 +198,9 @@ The project uses PHPUnit for testing. Each bundle has its own test suite, and th For creating mock, we prefer using prophecy (library phpspec/prophecy). -##### Useful helpers and tips that avoid create a mock +##### Useful helpers and tips that avoid creating a mock -Some notable implementations that are tests helper, and avoid to create a mock: +Some notable implementations that are test helpers and avoid creating a mock: - `\Psr\Log\NullLogger`, an implementation of `\Psr\Log\LoggerInterface`; - `\Symfony\Component\Clock\MockClock`, an implementation of `Symfony\Component\Clock\ClockInterface` (already mentioned above); @@ -297,7 +297,7 @@ class TicketTest extends TestCase #### Test Database -For tests that require a database, the project uses postgresql database filled by fixtures (usage of doctrine-fixtures). You can configure a different database for testing in the `.env.test` file. +For tests that require a database, the project uses a postgresql database filled with fixtures (usage of doctrine-fixtures). You can configure a different database for testing in the `.env.test` file. ### Code Quality Tools diff --git a/CHANGELOG.md b/CHANGELOG.md index 332db3e10..dd6e978ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,48 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html), and is generated by [Changie](https://github.com/miniscruff/changie). +## v4.3.0 - 2025-09-08 +### Feature +* ([#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 +* ([#412](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/412)) Add an absence end date + + **Schema Change**: Add columns or tables +### Fixed +* fix date formatting in calendar range display +* Change route URL to avoid clash with person duplicate controller method + +## v4.2.1 - 2025-09-03 +### Fixed +* Fix exports to work with DirectExportInterface +### DX +* Improve error message when a stored object cannot be written on local disk + + +## v4.2.0 - 2025-09-02 +### Feature +* ([#64](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/64)) Add external identifier for a Person + + **Schema Change**: Add columns or tables +* ([#330](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/330) Allow users to choose for which notifications they want to receive an email +### Fixed +* ([#422](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/422)) Fixed html layout of pages for recovering password +* Fix typo in 'uncheckAll' script for centers selection +* Fix incorrect parameter name in event details link + +## v4.1.0 - 2025-08-26 +### 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 +* ([#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 + + **Schema Change**: Add columns or tables +### 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. +* ([#384](https://gitlab.com/Chill-Projet/chill-bundles/-/issues/384)) add min and step attributes to integer field in DateIntervalType +### UX +* Limit display of participations in event list + ## v4.0.2 - 2025-07-09 ### Fixed * Fix add missing translation diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/App.vue b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/App.vue index 794f05657..27acb901a 100644 --- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/App.vue +++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/App.vue @@ -70,6 +70,8 @@ + + + {{ form_end(form_add_participation_by_person) }} + + + + + +
+ {{ chill_delegated_block('block_footer_show', { 'event': event }) }} +
- -

{{ 'Participations'|trans }}

- {% set count = event.participations|length %} -

{{ 'count participations to this event'|trans({'count': count}) }}

- - {% if count > 0 %} - - - - - - - - - - - - {% for participation in event.participations %} - - - - - - - - {% endfor %} - -
{{ 'Person'|trans }}{{ 'Role'|trans }}{{ 'Status'|trans }}{{ 'Last update'|trans }} 
- {% include '@ChillMain/OnTheFly/_insert_vue_onthefly.html.twig' with { - targetEntity: { name: 'person', id: participation.person.id }, - action: 'show', - displayBadge: true, - buttonText: participation.person|chill_entity_render_string, - isDead: participation.person.deathdate is not null - } %} - {{ participation.role.name|localize_translatable_string }}{{ participation.status.name|localize_translatable_string }}{{ participation.lastUpdate|ago }} {# sf4 check: filter 'time_diff' is abandoned, - alternative: knplabs/knp-time-bundle provide filter 'ago' #} - - -
    - {% if is_granted('CHILL_EVENT_PARTICIPATION_UPDATE', participation) %} -
  • - -
  • -
  • - -
  • - {% endif %} -
-
- - - {% endif %} - - - -
-
- {{ form_start(form_add_participation_by_person) }} -
- {{ form_widget(form_add_participation_by_person.person_id, { 'attr' : { - 'class' : 'custom-select', - 'style': 'min-width: 15em; max-width: 18em; display: inline-block;' - }} ) }} -
- - {{ form_end(form_add_participation_by_person) }} -
- -
- {{ form_start(form_export, {'attr': {'id': 'export_tableur'}}) }} -
- {{ form_widget(form_export.format, { 'attr' : { 'class': 'custom-select' } }) }} -
- {{ form_widget(form_export.submit, { 'attr' : { 'class': 'btn btn-save' } }) }} -
- -
- {{ form_rest(form_export) }} - {{ form_end(form_export) }} -
-
- -
- {{ chill_delegated_block('block_footer_show', { 'event': event }) }} -
{% endblock %} diff --git a/src/Bundle/ChillEventBundle/Resources/views/Participation/confirm_delete.html.twig b/src/Bundle/ChillEventBundle/Resources/views/Participation/confirm_delete.html.twig index 0d993b075..4d88caf59 100644 --- a/src/Bundle/ChillEventBundle/Resources/views/Participation/confirm_delete.html.twig +++ b/src/Bundle/ChillEventBundle/Resources/views/Participation/confirm_delete.html.twig @@ -11,7 +11,7 @@ 'title' : 'Remove participation'|trans, 'confirm_question' : 'Are you sure you want to remove that participation ?'|trans, 'cancel_route' : activeRouteKey, - 'cancel_parameters' : { 'event_id' : event_id }, + 'cancel_parameters' : { 'id' : event_id }, 'form' : delete_form } ) }} diff --git a/src/Bundle/ChillEventBundle/Resources/views/Participation/edit.html.twig b/src/Bundle/ChillEventBundle/Resources/views/Participation/edit.html.twig index d1995b625..ab6bbdb37 100644 --- a/src/Bundle/ChillEventBundle/Resources/views/Participation/edit.html.twig +++ b/src/Bundle/ChillEventBundle/Resources/views/Participation/edit.html.twig @@ -33,7 +33,7 @@ {% set returnPath = app.request.get('return_path') %} {% set returnLabel = app.request.get('return_label') %} - + {{ returnLabel |default('Back to the event'|trans) }} diff --git a/src/Bundle/ChillEventBundle/Resources/views/Participation/new.html.twig b/src/Bundle/ChillEventBundle/Resources/views/Participation/new.html.twig index 620bc7995..180b16c59 100644 --- a/src/Bundle/ChillEventBundle/Resources/views/Participation/new.html.twig +++ b/src/Bundle/ChillEventBundle/Resources/views/Participation/new.html.twig @@ -34,7 +34,7 @@