From d8796989a259ea0e1923b5b56f05acf8ac4f6bd9 Mon Sep 17 00:00:00 2001
From: Dominik Schwind
Date: Fri, 9 Aug 2024 16:09:24 +0200
Subject: [PATCH] Version 1.0.5 changes * Search input field improved *
Creation of new folders and collections improved * Admin backend improvements
---
...view-collection-autocomplete_controller.ts | 41 ++
.../controllers/assetview_controller.ts | 18 +-
.../clear-input-button_controller.ts | 35 ++
app/assets/styles/components/input.scss | 4 +
app/assets/styles/components/search-form.scss | 33 ++
app/composer.lock | 445 +++++++++---------
app/package.json | 2 +-
.../Admin/RegistrationCodeController.php | 20 +-
.../Controller/Admin/WorkspaceController.php | 20 +-
.../Controller/Workspace/FileController.php | 4 +-
.../Utility/SortFilterPaginateArguments.php | 4 +-
app/src/Form/File/EditType.php | 69 ++-
app/src/Repository/UserRepository.php | 8 +-
.../Service/File/FilePaginationHandler.php | 4 +-
app/src/Service/User/UserHandler.php | 9 +-
app/src/Service/User/UserHandlerInterface.php | 6 +-
app/templates/admin/index.html.twig | 1 +
.../admin/registration_code/show.html.twig | 41 ++
app/templates/admin/users/index.html.twig | 26 +-
app/templates/admin/workspace.html.twig | 30 +-
app/templates/components/SearchForm.html.twig | 12 +-
app/templates/workspace/file/view.html.twig | 4 +-
app/translations/messages+intl-icu.de.yml | 4 +
app/translations/messages+intl-icu.en.yml | 4 +
app/translations/validators.de.yml | 6 +
app/translations/validators.en.yml | 6 +
app/tsconfig.json | 5 +-
27 files changed, 578 insertions(+), 283 deletions(-)
create mode 100644 app/assets/controllers/assetview-collection-autocomplete_controller.ts
create mode 100644 app/assets/controllers/clear-input-button_controller.ts
diff --git a/app/assets/controllers/assetview-collection-autocomplete_controller.ts b/app/assets/controllers/assetview-collection-autocomplete_controller.ts
new file mode 100644
index 0000000..4ab50eb
--- /dev/null
+++ b/app/assets/controllers/assetview-collection-autocomplete_controller.ts
@@ -0,0 +1,41 @@
+import {Controller} from '@hotwired/stimulus';
+import TomSelect from 'tom-select';
+import {TomOptions} from 'tom-select/dist/types/types';
+
+let collectionSelect:TomSelect | null = null;
+let collectionSelectOptions:TomOptions | null = null;
+
+export default class extends Controller {
+ initialize() {
+ this._onConnect = this._onConnect.bind(this);
+ this._onAddCollection = this._onAddCollection.bind(this);
+ }
+
+ connect() {
+ // eslint-disable-next-line @typescript-eslint/unbound-method
+ this.element.addEventListener('autocomplete:connect', this._onConnect);
+ // eslint-disable-next-line @typescript-eslint/unbound-method
+ this.element.addEventListener('assetviewAddCollection', this._onAddCollection);
+ }
+
+ disconnect() {
+ // eslint-disable-next-line @typescript-eslint/unbound-method
+ this.element.removeEventListener('autocomplete:connect', this._onConnect);
+ // eslint-disable-next-line @typescript-eslint/unbound-method
+ this.element.removeEventListener('assetviewAddCollection', this._onAddCollection);
+ }
+
+ _onAddCollection(event) {
+ if (!collectionSelect || !collectionSelectOptions) {
+ return;
+ }
+ collectionSelect.addOption(event.detail.option);
+ collectionSelect.refreshOptions();
+ collectionSelect.addItem(event.detail.slug);
+ }
+
+ _onConnect(event) {
+ collectionSelect = event.detail.tomSelect;
+ collectionSelectOptions = event.detail.options;
+ }
+}
diff --git a/app/assets/controllers/assetview_controller.ts b/app/assets/controllers/assetview_controller.ts
index dc93d6c..eca391c 100644
--- a/app/assets/controllers/assetview_controller.ts
+++ b/app/assets/controllers/assetview_controller.ts
@@ -25,6 +25,9 @@ export default class extends Controller {
'collectionSelect',
];
+ private hasCategoryFormTarget: boolean;
+ private hasCollectionFormTarget: boolean;
+
connect() {
hotkeys('esc', (event) => this.close(event));
hotkeys('right,arrowright', () => this.navigateNext());
@@ -78,16 +81,19 @@ export default class extends Controller {
if (response.data.body) {
const option = new Option(response.data.body.title, response.data.body.slug);
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore
if (this.hasCategoryFormTarget && currentForm === this.categoryFormTarget) {
this.categorySelectTarget.append(option);
this.categorySelectTarget.value = response.data.body.slug;
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
- // @ts-ignore
} else if (this.hasCollectionFormTarget && currentForm === this.collectionFormTarget) {
- option.selected = true;
- this.collectionSelectTarget.insertBefore(option, this.collectionSelectTarget.firstChild);
+ // option.selected = true;
+ // this.collectionSelectTarget.insertBefore(option, this.collectionSelectTarget.firstChild);
+
+ this.collectionSelectTarget.dispatchEvent(
+ new CustomEvent(
+ 'assetviewAddCollection',
+ {detail: {title: response.data.body.title, slug: response.data.body.slug, option}},
+ ),
+ );
}
if (response.data.message) {
diff --git a/app/assets/controllers/clear-input-button_controller.ts b/app/assets/controllers/clear-input-button_controller.ts
new file mode 100644
index 0000000..297face
--- /dev/null
+++ b/app/assets/controllers/clear-input-button_controller.ts
@@ -0,0 +1,35 @@
+import {Controller} from '@hotwired/stimulus';
+
+export default class extends Controller {
+ declare readonly buttonTarget: HTMLButtonElement;
+ declare readonly inputTarget: HTMLInputElement;
+
+ static targets = ['button', 'input'];
+
+ connect() {
+ if (!('content' in document.createElement('template'))) {
+ return;
+ }
+
+ const template: HTMLTemplateElement | null = document.querySelector('#clear-input-button');
+ const clone: Node | undefined = template?.content.cloneNode(true);
+
+ if (clone === undefined) {
+ return;
+ }
+
+ this.element.appendChild(clone);
+ this.buttonTarget.addEventListener('click', () => {
+ this.inputTarget.value = '';
+ this.inputTarget.focus();
+ this.element.classList.remove('is-touched');
+ });
+ this.inputTarget.addEventListener('input', (event) => {
+ if ((event.target as HTMLInputElement)?.value && !this.element.classList.contains('is-touched')) {
+ this.element.classList.add('is-touched');
+ } else if (!(event.target as HTMLInputElement)?.value && this.element.classList.contains('is-touched')) {
+ this.element.classList.remove('is-touched');
+ }
+ });
+ }
+}
diff --git a/app/assets/styles/components/input.scss b/app/assets/styles/components/input.scss
index 7d16374..4a3f128 100644
--- a/app/assets/styles/components/input.scss
+++ b/app/assets/styles/components/input.scss
@@ -209,6 +209,10 @@ input[type="file"]::file-selector-button {
border-radius: border-radius(m);
}
+ .ts-wrapper.multi & {
+ padding: 0.5rem 1rem;
+ }
+
.ts-wrapper.multi.has-items & {
padding: 0.5rem;
}
diff --git a/app/assets/styles/components/search-form.scss b/app/assets/styles/components/search-form.scss
index a6eb5b0..48f24eb 100644
--- a/app/assets/styles/components/search-form.scss
+++ b/app/assets/styles/components/search-form.scss
@@ -1,4 +1,6 @@
.search-form {
+ $this: &;
+
position: relative;
display: inline-flex;
align-items: center;
@@ -51,8 +53,39 @@
background-size: 14px;
}
+ body:not(.no-js) & {
+ &::-webkit-search-cancel-button{
+ display: none;
+ }
+ }
+
&:focus {
outline: none;
}
}
+
+ &__clear {
+ @include button-reset;
+
+ & {
+ display: block;
+ height: 24px;
+ width: 24px;
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAn0lEQVR42u3UMQrDMBBEUZ9WfQqDmm22EaTyjRMHAlM5K+Y7lb0wnUZPIKHlnutOa+25Z4D++MRBX98MD1V/trSppLKHqj9TTBWKcoUqffbUcbBBEhTjBOV4ja4l4OIAZThEOV6jHO8ARXD+gPPvKMABinGOrnu6gTNUawrcQKNCAQ7QeTxORzle3+sDfjJpPCqhJh7GixZq4rHcc9l5A9qZ+WeBhgEuAAAAAElFTkSuQmCC);
+ background-repeat: no-repeat;
+ background-size: 14px;
+ cursor: pointer;
+ visibility: hidden;
+ pointer-events: none;
+ background-position: center;
+ border-radius: 50%;
+ flex: 0 0 1.5rem;
+ }
+
+ #{$this}.is-touched:hover &,
+ #{$this}.is-touched:focus-within & {
+ visibility: visible;
+ pointer-events: all;
+ }
+ }
}
diff --git a/app/composer.lock b/app/composer.lock
index e92485d..8ccde73 100644
--- a/app/composer.lock
+++ b/app/composer.lock
@@ -2308,16 +2308,16 @@
},
{
"name": "nelmio/api-doc-bundle",
- "version": "v4.28.0",
+ "version": "v4.29.0",
"source": {
"type": "git",
"url": "https://github.com/nelmio/NelmioApiDocBundle.git",
- "reference": "684391a5fab4bdfac752560d3483d0f7109448a5"
+ "reference": "c9523906023e61351f03dbab8d077173f5ec4883"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nelmio/NelmioApiDocBundle/zipball/684391a5fab4bdfac752560d3483d0f7109448a5",
- "reference": "684391a5fab4bdfac752560d3483d0f7109448a5",
+ "url": "https://api.github.com/repos/nelmio/NelmioApiDocBundle/zipball/c9523906023e61351f03dbab8d077173f5ec4883",
+ "reference": "c9523906023e61351f03dbab8d077173f5ec4883",
"shasum": ""
},
"require": {
@@ -2418,9 +2418,15 @@
],
"support": {
"issues": "https://github.com/nelmio/NelmioApiDocBundle/issues",
- "source": "https://github.com/nelmio/NelmioApiDocBundle/tree/v4.28.0"
+ "source": "https://github.com/nelmio/NelmioApiDocBundle/tree/v4.29.0"
},
- "time": "2024-06-19T14:37:45+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/DjordyKoert",
+ "type": "github"
+ }
+ ],
+ "time": "2024-07-22T08:40:00+00:00"
},
{
"name": "overblog/graphql-bundle",
@@ -3146,16 +3152,16 @@
},
{
"name": "symfony/cache",
- "version": "v7.1.2",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache.git",
- "reference": "e933e1d947ffb88efcdd34a2bd51561cab7deaae"
+ "reference": "8ac37acee794372f9732fe8a61a8221f6762148e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache/zipball/e933e1d947ffb88efcdd34a2bd51561cab7deaae",
- "reference": "e933e1d947ffb88efcdd34a2bd51561cab7deaae",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/8ac37acee794372f9732fe8a61a8221f6762148e",
+ "reference": "8ac37acee794372f9732fe8a61a8221f6762148e",
"shasum": ""
},
"require": {
@@ -3223,7 +3229,7 @@
"psr6"
],
"support": {
- "source": "https://github.com/symfony/cache/tree/v7.1.2"
+ "source": "https://github.com/symfony/cache/tree/v7.1.3"
},
"funding": [
{
@@ -3239,7 +3245,7 @@
"type": "tidelift"
}
],
- "time": "2024-06-11T13:32:38+00:00"
+ "time": "2024-07-17T06:10:24+00:00"
},
{
"name": "symfony/cache-contracts",
@@ -3468,16 +3474,16 @@
},
{
"name": "symfony/console",
- "version": "v7.1.2",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "0aa29ca177f432ab68533432db0de059f39c92ae"
+ "reference": "cb1dcb30ebc7005c29864ee78adb47b5fb7c3cd9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/0aa29ca177f432ab68533432db0de059f39c92ae",
- "reference": "0aa29ca177f432ab68533432db0de059f39c92ae",
+ "url": "https://api.github.com/repos/symfony/console/zipball/cb1dcb30ebc7005c29864ee78adb47b5fb7c3cd9",
+ "reference": "cb1dcb30ebc7005c29864ee78adb47b5fb7c3cd9",
"shasum": ""
},
"require": {
@@ -3541,7 +3547,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v7.1.2"
+ "source": "https://github.com/symfony/console/tree/v7.1.3"
},
"funding": [
{
@@ -3557,20 +3563,20 @@
"type": "tidelift"
}
],
- "time": "2024-06-28T10:03:55+00:00"
+ "time": "2024-07-26T12:41:01+00:00"
},
{
"name": "symfony/dependency-injection",
- "version": "v7.1.2",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "6e108cded928bdafaf1da3fabe30dd5af20e36b9"
+ "reference": "8126f0be4ff984e4db0140e60917900a53facb49"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/6e108cded928bdafaf1da3fabe30dd5af20e36b9",
- "reference": "6e108cded928bdafaf1da3fabe30dd5af20e36b9",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/8126f0be4ff984e4db0140e60917900a53facb49",
+ "reference": "8126f0be4ff984e4db0140e60917900a53facb49",
"shasum": ""
},
"require": {
@@ -3621,7 +3627,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dependency-injection/tree/v7.1.2"
+ "source": "https://github.com/symfony/dependency-injection/tree/v7.1.3"
},
"funding": [
{
@@ -3637,7 +3643,7 @@
"type": "tidelift"
}
],
- "time": "2024-06-28T10:03:55+00:00"
+ "time": "2024-07-26T07:35:39+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -3708,16 +3714,16 @@
},
{
"name": "symfony/doctrine-bridge",
- "version": "v7.1.2",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/doctrine-bridge.git",
- "reference": "9fc4bebf69f00d4ebb12ee904d808b496035e2f6"
+ "reference": "b526822483124b62ff3cda14237418408f444e4d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/9fc4bebf69f00d4ebb12ee904d808b496035e2f6",
- "reference": "9fc4bebf69f00d4ebb12ee904d808b496035e2f6",
+ "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/b526822483124b62ff3cda14237418408f444e4d",
+ "reference": "b526822483124b62ff3cda14237418408f444e4d",
"shasum": ""
},
"require": {
@@ -3796,7 +3802,7 @@
"description": "Provides integration for Doctrine with various Symfony components",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/doctrine-bridge/tree/v7.1.2"
+ "source": "https://github.com/symfony/doctrine-bridge/tree/v7.1.3"
},
"funding": [
{
@@ -3812,7 +3818,7 @@
"type": "tidelift"
}
],
- "time": "2024-06-28T09:27:18+00:00"
+ "time": "2024-07-26T12:41:01+00:00"
},
{
"name": "symfony/doctrine-messenger",
@@ -3888,16 +3894,16 @@
},
{
"name": "symfony/dotenv",
- "version": "v7.1.1",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/dotenv.git",
- "reference": "efa715ec40c098f2fba62444f4fd75d0d4248ede"
+ "reference": "a26be30fd61678dab694a18a85084cea7673bbf3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dotenv/zipball/efa715ec40c098f2fba62444f4fd75d0d4248ede",
- "reference": "efa715ec40c098f2fba62444f4fd75d0d4248ede",
+ "url": "https://api.github.com/repos/symfony/dotenv/zipball/a26be30fd61678dab694a18a85084cea7673bbf3",
+ "reference": "a26be30fd61678dab694a18a85084cea7673bbf3",
"shasum": ""
},
"require": {
@@ -3942,7 +3948,7 @@
"environment"
],
"support": {
- "source": "https://github.com/symfony/dotenv/tree/v7.1.1"
+ "source": "https://github.com/symfony/dotenv/tree/v7.1.3"
},
"funding": [
{
@@ -3958,20 +3964,20 @@
"type": "tidelift"
}
],
- "time": "2024-05-31T14:57:53+00:00"
+ "time": "2024-07-09T19:36:07+00:00"
},
{
"name": "symfony/error-handler",
- "version": "v7.1.2",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "2412d3dddb5c9ea51a39cfbff1c565fc9844ca32"
+ "reference": "432bb369952795c61ca1def65e078c4a80dad13c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/2412d3dddb5c9ea51a39cfbff1c565fc9844ca32",
- "reference": "2412d3dddb5c9ea51a39cfbff1c565fc9844ca32",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/432bb369952795c61ca1def65e078c4a80dad13c",
+ "reference": "432bb369952795c61ca1def65e078c4a80dad13c",
"shasum": ""
},
"require": {
@@ -4017,7 +4023,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/error-handler/tree/v7.1.2"
+ "source": "https://github.com/symfony/error-handler/tree/v7.1.3"
},
"funding": [
{
@@ -4033,7 +4039,7 @@
"type": "tidelift"
}
],
- "time": "2024-06-25T19:55:06+00:00"
+ "time": "2024-07-26T13:02:51+00:00"
},
{
"name": "symfony/event-dispatcher",
@@ -4323,16 +4329,16 @@
},
{
"name": "symfony/finder",
- "version": "v7.1.1",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "fbb0ba67688b780efbc886c1a0a0948dcf7205d6"
+ "reference": "717c6329886f32dc65e27461f80f2a465412fdca"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/fbb0ba67688b780efbc886c1a0a0948dcf7205d6",
- "reference": "fbb0ba67688b780efbc886c1a0a0948dcf7205d6",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/717c6329886f32dc65e27461f80f2a465412fdca",
+ "reference": "717c6329886f32dc65e27461f80f2a465412fdca",
"shasum": ""
},
"require": {
@@ -4367,7 +4373,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v7.1.1"
+ "source": "https://github.com/symfony/finder/tree/v7.1.3"
},
"funding": [
{
@@ -4383,7 +4389,7 @@
"type": "tidelift"
}
],
- "time": "2024-05-31T14:57:53+00:00"
+ "time": "2024-07-24T07:08:44+00:00"
},
{
"name": "symfony/flex",
@@ -4452,16 +4458,16 @@
},
{
"name": "symfony/form",
- "version": "v7.1.1",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/form.git",
- "reference": "b23a44f0edaceb8d70b0e7f8937feae81e6dede5"
+ "reference": "11df2e2e142161824eb341e96cbb3c56c3bb57dc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/form/zipball/b23a44f0edaceb8d70b0e7f8937feae81e6dede5",
- "reference": "b23a44f0edaceb8d70b0e7f8937feae81e6dede5",
+ "url": "https://api.github.com/repos/symfony/form/zipball/11df2e2e142161824eb341e96cbb3c56c3bb57dc",
+ "reference": "11df2e2e142161824eb341e96cbb3c56c3bb57dc",
"shasum": ""
},
"require": {
@@ -4529,7 +4535,7 @@
"description": "Allows to easily create, process and reuse HTML forms",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/form/tree/v7.1.1"
+ "source": "https://github.com/symfony/form/tree/v7.1.3"
},
"funding": [
{
@@ -4545,20 +4551,20 @@
"type": "tidelift"
}
],
- "time": "2024-05-31T14:57:53+00:00"
+ "time": "2024-07-19T08:30:01+00:00"
},
{
"name": "symfony/framework-bundle",
- "version": "v7.1.2",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/framework-bundle.git",
- "reference": "54a84f49658e2e87167396b2259a55e55e11f4a2"
+ "reference": "a32ec544bd501eb4619eb977860ad3076ee55061"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/54a84f49658e2e87167396b2259a55e55e11f4a2",
- "reference": "54a84f49658e2e87167396b2259a55e55e11f4a2",
+ "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/a32ec544bd501eb4619eb977860ad3076ee55061",
+ "reference": "a32ec544bd501eb4619eb977860ad3076ee55061",
"shasum": ""
},
"require": {
@@ -4676,7 +4682,7 @@
"description": "Provides a tight integration between Symfony components and the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/framework-bundle/tree/v7.1.2"
+ "source": "https://github.com/symfony/framework-bundle/tree/v7.1.3"
},
"funding": [
{
@@ -4692,20 +4698,20 @@
"type": "tidelift"
}
],
- "time": "2024-06-28T08:00:31+00:00"
+ "time": "2024-07-26T13:24:34+00:00"
},
{
"name": "symfony/http-client",
- "version": "v7.1.2",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client.git",
- "reference": "90ace27d17ccc9afc6f7ec0081e8529fb0e29425"
+ "reference": "b79858aa7a051ea791b0d50269a234a0b50cb231"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client/zipball/90ace27d17ccc9afc6f7ec0081e8529fb0e29425",
- "reference": "90ace27d17ccc9afc6f7ec0081e8529fb0e29425",
+ "url": "https://api.github.com/repos/symfony/http-client/zipball/b79858aa7a051ea791b0d50269a234a0b50cb231",
+ "reference": "b79858aa7a051ea791b0d50269a234a0b50cb231",
"shasum": ""
},
"require": {
@@ -4770,7 +4776,7 @@
"http"
],
"support": {
- "source": "https://github.com/symfony/http-client/tree/v7.1.2"
+ "source": "https://github.com/symfony/http-client/tree/v7.1.3"
},
"funding": [
{
@@ -4786,7 +4792,7 @@
"type": "tidelift"
}
],
- "time": "2024-06-28T08:00:31+00:00"
+ "time": "2024-07-17T06:10:24+00:00"
},
{
"name": "symfony/http-client-contracts",
@@ -4868,16 +4874,16 @@
},
{
"name": "symfony/http-foundation",
- "version": "v7.1.1",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "74d171d5b6a1d9e4bfee09a41937c17a7536acfa"
+ "reference": "f602d5c17d1fa02f8019ace2687d9d136b7f4a1a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/74d171d5b6a1d9e4bfee09a41937c17a7536acfa",
- "reference": "74d171d5b6a1d9e4bfee09a41937c17a7536acfa",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f602d5c17d1fa02f8019ace2687d9d136b7f4a1a",
+ "reference": "f602d5c17d1fa02f8019ace2687d9d136b7f4a1a",
"shasum": ""
},
"require": {
@@ -4925,7 +4931,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-foundation/tree/v7.1.1"
+ "source": "https://github.com/symfony/http-foundation/tree/v7.1.3"
},
"funding": [
{
@@ -4941,20 +4947,20 @@
"type": "tidelift"
}
],
- "time": "2024-05-31T14:57:53+00:00"
+ "time": "2024-07-26T12:41:01+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v7.1.2",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "ae3fa717db4d41a55d14c2bd92399e37cf5bc0f6"
+ "reference": "db9702f3a04cc471ec8c70e881825db26ac5f186"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/ae3fa717db4d41a55d14c2bd92399e37cf5bc0f6",
- "reference": "ae3fa717db4d41a55d14c2bd92399e37cf5bc0f6",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/db9702f3a04cc471ec8c70e881825db26ac5f186",
+ "reference": "db9702f3a04cc471ec8c70e881825db26ac5f186",
"shasum": ""
},
"require": {
@@ -5039,7 +5045,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-kernel/tree/v7.1.2"
+ "source": "https://github.com/symfony/http-kernel/tree/v7.1.3"
},
"funding": [
{
@@ -5055,7 +5061,7 @@
"type": "tidelift"
}
],
- "time": "2024-06-28T13:13:31+00:00"
+ "time": "2024-07-26T14:58:15+00:00"
},
{
"name": "symfony/intl",
@@ -5291,16 +5297,16 @@
},
{
"name": "symfony/messenger",
- "version": "v7.1.2",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/messenger.git",
- "reference": "8cafca5f0fade46acf4a6b32b2d5e495f798a56b"
+ "reference": "604e182a7758ceea35921a8ad5dd492a6e13bae4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/messenger/zipball/8cafca5f0fade46acf4a6b32b2d5e495f798a56b",
- "reference": "8cafca5f0fade46acf4a6b32b2d5e495f798a56b",
+ "url": "https://api.github.com/repos/symfony/messenger/zipball/604e182a7758ceea35921a8ad5dd492a6e13bae4",
+ "reference": "604e182a7758ceea35921a8ad5dd492a6e13bae4",
"shasum": ""
},
"require": {
@@ -5357,7 +5363,7 @@
"description": "Helps applications send and receive messages to/from other applications or via message queues",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/messenger/tree/v7.1.2"
+ "source": "https://github.com/symfony/messenger/tree/v7.1.3"
},
"funding": [
{
@@ -5373,7 +5379,7 @@
"type": "tidelift"
}
],
- "time": "2024-06-28T08:00:31+00:00"
+ "time": "2024-07-09T19:36:07+00:00"
},
{
"name": "symfony/mime",
@@ -6399,16 +6405,16 @@
},
{
"name": "symfony/process",
- "version": "v7.1.1",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "febf90124323a093c7ee06fdb30e765ca3c20028"
+ "reference": "7f2f542c668ad6c313dc4a5e9c3321f733197eca"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/febf90124323a093c7ee06fdb30e765ca3c20028",
- "reference": "febf90124323a093c7ee06fdb30e765ca3c20028",
+ "url": "https://api.github.com/repos/symfony/process/zipball/7f2f542c668ad6c313dc4a5e9c3321f733197eca",
+ "reference": "7f2f542c668ad6c313dc4a5e9c3321f733197eca",
"shasum": ""
},
"require": {
@@ -6440,7 +6446,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v7.1.1"
+ "source": "https://github.com/symfony/process/tree/v7.1.3"
},
"funding": [
{
@@ -6456,7 +6462,7 @@
"type": "tidelift"
}
],
- "time": "2024-05-31T14:57:53+00:00"
+ "time": "2024-07-26T12:44:47+00:00"
},
{
"name": "symfony/property-access",
@@ -6536,16 +6542,16 @@
},
{
"name": "symfony/property-info",
- "version": "v7.1.2",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-info.git",
- "reference": "d7b91e4aa07e822a9b935fc29a7254c12d502f16"
+ "reference": "88a279df2db5b7919cac6f35d6a5d1d7147e6a9b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/property-info/zipball/d7b91e4aa07e822a9b935fc29a7254c12d502f16",
- "reference": "d7b91e4aa07e822a9b935fc29a7254c12d502f16",
+ "url": "https://api.github.com/repos/symfony/property-info/zipball/88a279df2db5b7919cac6f35d6a5d1d7147e6a9b",
+ "reference": "88a279df2db5b7919cac6f35d6a5d1d7147e6a9b",
"shasum": ""
},
"require": {
@@ -6600,7 +6606,7 @@
"validator"
],
"support": {
- "source": "https://github.com/symfony/property-info/tree/v7.1.2"
+ "source": "https://github.com/symfony/property-info/tree/v7.1.3"
},
"funding": [
{
@@ -6616,20 +6622,20 @@
"type": "tidelift"
}
],
- "time": "2024-06-26T07:21:35+00:00"
+ "time": "2024-07-26T07:36:36+00:00"
},
{
"name": "symfony/routing",
- "version": "v7.1.1",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "60c31bab5c45af7f13091b87deb708830f3c96c0"
+ "reference": "8a908a3f22d5a1b5d297578c2ceb41b02fa916d0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/60c31bab5c45af7f13091b87deb708830f3c96c0",
- "reference": "60c31bab5c45af7f13091b87deb708830f3c96c0",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/8a908a3f22d5a1b5d297578c2ceb41b02fa916d0",
+ "reference": "8a908a3f22d5a1b5d297578c2ceb41b02fa916d0",
"shasum": ""
},
"require": {
@@ -6681,7 +6687,7 @@
"url"
],
"support": {
- "source": "https://github.com/symfony/routing/tree/v7.1.1"
+ "source": "https://github.com/symfony/routing/tree/v7.1.3"
},
"funding": [
{
@@ -6697,7 +6703,7 @@
"type": "tidelift"
}
],
- "time": "2024-05-31T14:57:53+00:00"
+ "time": "2024-07-17T06:10:24+00:00"
},
{
"name": "symfony/runtime",
@@ -6860,16 +6866,16 @@
},
{
"name": "symfony/security-bundle",
- "version": "v7.1.2",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-bundle.git",
- "reference": "a6746372202512d2c75ba9bdbc36e15022a56c42"
+ "reference": "4f77a89e21c2e700b5fbbf3c1eccd71b9a5d69ad"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/security-bundle/zipball/a6746372202512d2c75ba9bdbc36e15022a56c42",
- "reference": "a6746372202512d2c75ba9bdbc36e15022a56c42",
+ "url": "https://api.github.com/repos/symfony/security-bundle/zipball/4f77a89e21c2e700b5fbbf3c1eccd71b9a5d69ad",
+ "reference": "4f77a89e21c2e700b5fbbf3c1eccd71b9a5d69ad",
"shasum": ""
},
"require": {
@@ -6918,7 +6924,7 @@
"symfony/validator": "^6.4|^7.0",
"symfony/yaml": "^6.4|^7.0",
"twig/twig": "^3.0.4",
- "web-token/jwt-library": "^3.3.2"
+ "web-token/jwt-library": "^3.3.2|^4.0"
},
"type": "symfony-bundle",
"autoload": {
@@ -6946,7 +6952,7 @@
"description": "Provides a tight integration of the Security component into the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/security-bundle/tree/v7.1.2"
+ "source": "https://github.com/symfony/security-bundle/tree/v7.1.3"
},
"funding": [
{
@@ -6962,20 +6968,20 @@
"type": "tidelift"
}
],
- "time": "2024-06-28T10:35:32+00:00"
+ "time": "2024-07-26T07:24:20+00:00"
},
{
"name": "symfony/security-core",
- "version": "v7.1.2",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-core.git",
- "reference": "d615960211a11913e70f8576e5c38cd05d90ec3f"
+ "reference": "aa4f432586a129017ce0ba34e2b1bfe6babfe8c7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/security-core/zipball/d615960211a11913e70f8576e5c38cd05d90ec3f",
- "reference": "d615960211a11913e70f8576e5c38cd05d90ec3f",
+ "url": "https://api.github.com/repos/symfony/security-core/zipball/aa4f432586a129017ce0ba34e2b1bfe6babfe8c7",
+ "reference": "aa4f432586a129017ce0ba34e2b1bfe6babfe8c7",
"shasum": ""
},
"require": {
@@ -7032,7 +7038,7 @@
"description": "Symfony Security Component - Core Library",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/security-core/tree/v7.1.2"
+ "source": "https://github.com/symfony/security-core/tree/v7.1.3"
},
"funding": [
{
@@ -7048,7 +7054,7 @@
"type": "tidelift"
}
],
- "time": "2024-06-28T08:00:31+00:00"
+ "time": "2024-07-26T12:41:01+00:00"
},
{
"name": "symfony/security-csrf",
@@ -7120,16 +7126,16 @@
},
{
"name": "symfony/security-http",
- "version": "v7.1.2",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-http.git",
- "reference": "e9dc3ef093dac3d4982fcd96002525aa7a1d6989"
+ "reference": "19f07b6530dbb82017c38ee7582b154f5c42b179"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/security-http/zipball/e9dc3ef093dac3d4982fcd96002525aa7a1d6989",
- "reference": "e9dc3ef093dac3d4982fcd96002525aa7a1d6989",
+ "url": "https://api.github.com/repos/symfony/security-http/zipball/19f07b6530dbb82017c38ee7582b154f5c42b179",
+ "reference": "19f07b6530dbb82017c38ee7582b154f5c42b179",
"shasum": ""
},
"require": {
@@ -7160,7 +7166,7 @@
"symfony/routing": "^6.4|^7.0",
"symfony/security-csrf": "^6.4|^7.0",
"symfony/translation": "^6.4|^7.0",
- "web-token/jwt-library": "^3.3.2"
+ "web-token/jwt-library": "^3.3.2|^4.0"
},
"type": "library",
"autoload": {
@@ -7188,7 +7194,7 @@
"description": "Symfony Security Component - HTTP Integration",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/security-http/tree/v7.1.2"
+ "source": "https://github.com/symfony/security-http/tree/v7.1.3"
},
"funding": [
{
@@ -7204,20 +7210,20 @@
"type": "tidelift"
}
],
- "time": "2024-06-25T19:55:06+00:00"
+ "time": "2024-07-26T07:24:20+00:00"
},
{
"name": "symfony/serializer",
- "version": "v7.1.2",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/serializer.git",
- "reference": "d2077674aaaff02a95f290de512aa358947e6bbe"
+ "reference": "0d5ddac365fbfffc30ca9bc944ad3eb9b3763c09"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/serializer/zipball/d2077674aaaff02a95f290de512aa358947e6bbe",
- "reference": "d2077674aaaff02a95f290de512aa358947e6bbe",
+ "url": "https://api.github.com/repos/symfony/serializer/zipball/0d5ddac365fbfffc30ca9bc944ad3eb9b3763c09",
+ "reference": "0d5ddac365fbfffc30ca9bc944ad3eb9b3763c09",
"shasum": ""
},
"require": {
@@ -7285,7 +7291,7 @@
"description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/serializer/tree/v7.1.2"
+ "source": "https://github.com/symfony/serializer/tree/v7.1.3"
},
"funding": [
{
@@ -7301,7 +7307,7 @@
"type": "tidelift"
}
],
- "time": "2024-06-28T07:42:43+00:00"
+ "time": "2024-07-17T06:10:24+00:00"
},
{
"name": "symfony/service-contracts",
@@ -7519,16 +7525,16 @@
},
{
"name": "symfony/string",
- "version": "v7.1.2",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "14221089ac66cf82e3cf3d1c1da65de305587ff8"
+ "reference": "ea272a882be7f20cad58d5d78c215001617b7f07"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/14221089ac66cf82e3cf3d1c1da65de305587ff8",
- "reference": "14221089ac66cf82e3cf3d1c1da65de305587ff8",
+ "url": "https://api.github.com/repos/symfony/string/zipball/ea272a882be7f20cad58d5d78c215001617b7f07",
+ "reference": "ea272a882be7f20cad58d5d78c215001617b7f07",
"shasum": ""
},
"require": {
@@ -7586,7 +7592,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v7.1.2"
+ "source": "https://github.com/symfony/string/tree/v7.1.3"
},
"funding": [
{
@@ -7602,20 +7608,20 @@
"type": "tidelift"
}
],
- "time": "2024-06-28T09:27:18+00:00"
+ "time": "2024-07-22T10:25:37+00:00"
},
{
"name": "symfony/translation",
- "version": "v7.1.1",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "cf5ae136e124fc7681b34ce9fac9d5b9ae8ceee3"
+ "reference": "8d5e50c813ba2859a6dfc99a0765c550507934a1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/cf5ae136e124fc7681b34ce9fac9d5b9ae8ceee3",
- "reference": "cf5ae136e124fc7681b34ce9fac9d5b9ae8ceee3",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/8d5e50c813ba2859a6dfc99a0765c550507934a1",
+ "reference": "8d5e50c813ba2859a6dfc99a0765c550507934a1",
"shasum": ""
},
"require": {
@@ -7680,7 +7686,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/translation/tree/v7.1.1"
+ "source": "https://github.com/symfony/translation/tree/v7.1.3"
},
"funding": [
{
@@ -7696,7 +7702,7 @@
"type": "tidelift"
}
],
- "time": "2024-05-31T14:57:53+00:00"
+ "time": "2024-07-26T12:41:01+00:00"
},
{
"name": "symfony/translation-contracts",
@@ -8303,16 +8309,16 @@
},
{
"name": "symfony/validator",
- "version": "v7.1.2",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/validator.git",
- "reference": "bed12b7d5bd4dac452db5fa6203331c876b489e7"
+ "reference": "ba711a6cfc008544dad059abb3c1d997f1472237"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/validator/zipball/bed12b7d5bd4dac452db5fa6203331c876b489e7",
- "reference": "bed12b7d5bd4dac452db5fa6203331c876b489e7",
+ "url": "https://api.github.com/repos/symfony/validator/zipball/ba711a6cfc008544dad059abb3c1d997f1472237",
+ "reference": "ba711a6cfc008544dad059abb3c1d997f1472237",
"shasum": ""
},
"require": {
@@ -8380,7 +8386,7 @@
"description": "Provides tools to validate values",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/validator/tree/v7.1.2"
+ "source": "https://github.com/symfony/validator/tree/v7.1.3"
},
"funding": [
{
@@ -8396,20 +8402,20 @@
"type": "tidelift"
}
],
- "time": "2024-06-25T19:55:06+00:00"
+ "time": "2024-07-26T12:41:01+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v7.1.2",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "5857c57c6b4b86524c08cf4f4bc95327270a816d"
+ "reference": "86af4617cca75a6e28598f49ae0690f3b9d4591f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/5857c57c6b4b86524c08cf4f4bc95327270a816d",
- "reference": "5857c57c6b4b86524c08cf4f4bc95327270a816d",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/86af4617cca75a6e28598f49ae0690f3b9d4591f",
+ "reference": "86af4617cca75a6e28598f49ae0690f3b9d4591f",
"shasum": ""
},
"require": {
@@ -8463,7 +8469,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v7.1.2"
+ "source": "https://github.com/symfony/var-dumper/tree/v7.1.3"
},
"funding": [
{
@@ -8479,7 +8485,7 @@
"type": "tidelift"
}
],
- "time": "2024-06-28T08:00:31+00:00"
+ "time": "2024-07-26T12:41:01+00:00"
},
{
"name": "symfony/var-exporter",
@@ -9179,16 +9185,16 @@
},
{
"name": "zircote/swagger-php",
- "version": "4.10.4",
+ "version": "4.10.6",
"source": {
"type": "git",
"url": "https://github.com/zircote/swagger-php.git",
- "reference": "88895afcfaac955ed061489a2b19a431bf58b3e2"
+ "reference": "e462ff5269ea0ec91070edd5d51dc7215bdea3b6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/zircote/swagger-php/zipball/88895afcfaac955ed061489a2b19a431bf58b3e2",
- "reference": "88895afcfaac955ed061489a2b19a431bf58b3e2",
+ "url": "https://api.github.com/repos/zircote/swagger-php/zipball/e462ff5269ea0ec91070edd5d51dc7215bdea3b6",
+ "reference": "e462ff5269ea0ec91070edd5d51dc7215bdea3b6",
"shasum": ""
},
"require": {
@@ -9254,9 +9260,9 @@
],
"support": {
"issues": "https://github.com/zircote/swagger-php/issues",
- "source": "https://github.com/zircote/swagger-php/tree/4.10.4"
+ "source": "https://github.com/zircote/swagger-php/tree/4.10.6"
},
- "time": "2024-07-10T02:06:32+00:00"
+ "time": "2024-07-26T03:04:43+00:00"
}
],
"packages-dev": [
@@ -9835,16 +9841,16 @@
},
{
"name": "phpstan/phpstan",
- "version": "1.11.7",
+ "version": "1.11.9",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
- "reference": "52d2bbfdcae7f895915629e4694e9497d0f8e28d"
+ "reference": "e370bcddadaede0c1716338b262346f40d296f82"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/52d2bbfdcae7f895915629e4694e9497d0f8e28d",
- "reference": "52d2bbfdcae7f895915629e4694e9497d0f8e28d",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e370bcddadaede0c1716338b262346f40d296f82",
+ "reference": "e370bcddadaede0c1716338b262346f40d296f82",
"shasum": ""
},
"require": {
@@ -9889,25 +9895,25 @@
"type": "github"
}
],
- "time": "2024-07-06T11:17:41+00:00"
+ "time": "2024-08-01T16:25:18+00:00"
},
{
"name": "phpstan/phpstan-doctrine",
- "version": "1.4.5",
+ "version": "1.4.8",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan-doctrine.git",
- "reference": "c87ee295de7573d9c015c492693e7af7f8cd85dc"
+ "reference": "fa497c5cf8a3f9cd3db8cb4033daf5244793d3e1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/c87ee295de7573d9c015c492693e7af7f8cd85dc",
- "reference": "c87ee295de7573d9c015c492693e7af7f8cd85dc",
+ "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/fa497c5cf8a3f9cd3db8cb4033daf5244793d3e1",
+ "reference": "fa497c5cf8a3f9cd3db8cb4033daf5244793d3e1",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0",
- "phpstan/phpstan": "^1.11"
+ "phpstan/phpstan": "^1.11.7"
},
"conflict": {
"doctrine/collections": "<1.0",
@@ -9959,9 +9965,9 @@
"description": "Doctrine extensions for PHPStan",
"support": {
"issues": "https://github.com/phpstan/phpstan-doctrine/issues",
- "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.4.5"
+ "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.4.8"
},
- "time": "2024-07-02T17:02:12+00:00"
+ "time": "2024-07-16T11:31:01+00:00"
},
{
"name": "phpstan/phpstan-phpunit",
@@ -10017,22 +10023,22 @@
},
{
"name": "phpstan/phpstan-symfony",
- "version": "1.4.5",
+ "version": "1.4.6",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan-symfony.git",
- "reference": "1bd7c339f622dfb5a1a97dcaf1a862734eabfa1d"
+ "reference": "e909a075d69e0d4db262ac3407350ae2c6b6ab5f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/1bd7c339f622dfb5a1a97dcaf1a862734eabfa1d",
- "reference": "1bd7c339f622dfb5a1a97dcaf1a862734eabfa1d",
+ "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/e909a075d69e0d4db262ac3407350ae2c6b6ab5f",
+ "reference": "e909a075d69e0d4db262ac3407350ae2c6b6ab5f",
"shasum": ""
},
"require": {
"ext-simplexml": "*",
"php": "^7.2 || ^8.0",
- "phpstan/phpstan": "^1.11"
+ "phpstan/phpstan": "^1.11.7"
},
"conflict": {
"symfony/framework-bundle": "<3.0"
@@ -10083,9 +10089,9 @@
"description": "Symfony Framework extensions and rules for PHPStan",
"support": {
"issues": "https://github.com/phpstan/phpstan-symfony/issues",
- "source": "https://github.com/phpstan/phpstan-symfony/tree/1.4.5"
+ "source": "https://github.com/phpstan/phpstan-symfony/tree/1.4.6"
},
- "time": "2024-06-26T12:19:42+00:00"
+ "time": "2024-07-16T11:48:54+00:00"
},
{
"name": "phpunit/php-code-coverage",
@@ -10511,16 +10517,16 @@
},
{
"name": "rector/rector",
- "version": "1.2.0",
+ "version": "1.2.2",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
- "reference": "2fa387553db22b6f9bcccf5ff16f2c2c18a52a65"
+ "reference": "044e6364017882d1e346da8690eeabc154da5495"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/2fa387553db22b6f9bcccf5ff16f2c2c18a52a65",
- "reference": "2fa387553db22b6f9bcccf5ff16f2c2c18a52a65",
+ "url": "https://api.github.com/repos/rectorphp/rector/zipball/044e6364017882d1e346da8690eeabc154da5495",
+ "reference": "044e6364017882d1e346da8690eeabc154da5495",
"shasum": ""
},
"require": {
@@ -10558,7 +10564,7 @@
],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
- "source": "https://github.com/rectorphp/rector/tree/1.2.0"
+ "source": "https://github.com/rectorphp/rector/tree/1.2.2"
},
"funding": [
{
@@ -10566,7 +10572,7 @@
"type": "github"
}
],
- "time": "2024-07-01T14:24:45+00:00"
+ "time": "2024-07-25T07:44:34+00:00"
},
{
"name": "roave/security-advisories",
@@ -10574,17 +10580,17 @@
"source": {
"type": "git",
"url": "https://github.com/Roave/SecurityAdvisories.git",
- "reference": "fc38d77fa25d52b7da4c00962fa4189549c60e16"
+ "reference": "ee27abe60d541524cca97592ac68119cab33afce"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/fc38d77fa25d52b7da4c00962fa4189549c60e16",
- "reference": "fc38d77fa25d52b7da4c00962fa4189549c60e16",
+ "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/ee27abe60d541524cca97592ac68119cab33afce",
+ "reference": "ee27abe60d541524cca97592ac68119cab33afce",
"shasum": ""
},
"conflict": {
"3f/pygmentize": "<1.2",
- "admidio/admidio": "<4.2.13",
+ "admidio/admidio": "<4.3.10",
"adodb/adodb-php": "<=5.20.20|>=5.21,<=5.21.3",
"aheinze/cockpit": "<2.2",
"aimeos/ai-admin-graphql": ">=2022.04.1,<2022.10.10|>=2023.04.1,<2023.10.6|>=2024.04.1,<2024.04.6",
@@ -10616,12 +10622,13 @@
"athlon1600/php-proxy": "<=5.1",
"athlon1600/php-proxy-app": "<=3",
"austintoddj/canvas": "<=3.4.2",
- "automad/automad": "<=1.10.9",
+ "auth0/wordpress": "<=4.6",
+ "automad/automad": "<=2.0.0.0-alpha5",
"automattic/jetpack": "<9.8",
"awesome-support/awesome-support": "<=6.0.7",
"aws/aws-sdk-php": "<3.288.1",
"azuracast/azuracast": "<0.18.3",
- "backdrop/backdrop": "<1.24.2",
+ "backdrop/backdrop": "<1.27.3|>=1.28,<1.28.2",
"backpack/crud": "<3.4.9",
"bacula-web/bacula-web": "<8.0.0.0-RC2-dev",
"badaso/core": "<2.7",
@@ -10636,7 +10643,7 @@
"bcosca/fatfree": "<3.7.2",
"bedita/bedita": "<4",
"bigfork/silverstripe-form-capture": ">=3,<3.1.1",
- "billz/raspap-webgui": "<2.9.5",
+ "billz/raspap-webgui": "<=3.1.4",
"bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3",
"blueimp/jquery-file-upload": "==6.4.4",
"bmarshall511/wordpress_zero_spam": "<5.2.13",
@@ -10686,7 +10693,7 @@
"contao/managed-edition": "<=1.5",
"corveda/phpsandbox": "<1.3.5",
"cosenary/instagram": "<=2.3",
- "craftcms/cms": "<4.6.2",
+ "craftcms/cms": "<4.6.2|>=5.0.0.0-beta1,<=5.2.2",
"croogo/croogo": "<4",
"cuyz/valinor": "<0.12",
"czproject/git-php": "<4.0.3",
@@ -10739,7 +10746,7 @@
"ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1-dev",
"ezsystems/ezfind-ls": ">=5.3,<5.3.6.1-dev|>=5.4,<5.4.11.1-dev|>=2017.12,<2017.12.0.1-dev",
"ezsystems/ezplatform": "<=1.13.6|>=2,<=2.5.24",
- "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.26",
+ "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.26|>=3.3,<3.3.39",
"ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1",
"ezsystems/ezplatform-graphql": ">=1.0.0.0-RC1-dev,<1.0.13|>=2.0.0.0-beta1,<2.3.12",
"ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.35",
@@ -10784,7 +10791,7 @@
"friendsofsymfony/rest-bundle": ">=1.2,<1.2.2",
"friendsofsymfony/user-bundle": ">=1,<1.3.5",
"friendsofsymfony1/swiftmailer": ">=4,<5.4.13|>=6,<6.2.5",
- "friendsofsymfony1/symfony1": ">=1.1,<1.15.19",
+ "friendsofsymfony1/symfony1": ">=1.1,<1.5.19",
"friendsoftypo3/mediace": ">=7.6.2,<7.6.5",
"friendsoftypo3/openid": ">=4.5,<4.5.31|>=4.7,<4.7.16|>=6,<6.0.11|>=6.1,<6.1.6",
"froala/wysiwyg-editor": "<3.2.7|>=4.0.1,<=4.1.3",
@@ -10822,7 +10829,7 @@
"hov/jobfair": "<1.0.13|>=2,<2.0.2",
"httpsoft/http-message": "<1.0.12",
"hyn/multi-tenant": ">=5.6,<5.7.2",
- "ibexa/admin-ui": ">=4.2,<4.2.3",
+ "ibexa/admin-ui": ">=4.2,<4.2.3|>=4.6.0.0-beta1,<4.6.9",
"ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3|>=4.5,<4.5.6|>=4.6,<4.6.2",
"ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3",
"ibexa/post-install": "<=1.0.4",
@@ -10907,7 +10914,7 @@
"magento/core": "<=1.9.4.5",
"magento/magento1ce": "<1.9.4.3-dev",
"magento/magento1ee": ">=1,<1.14.4.3-dev",
- "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2.0-patch2",
+ "magento/product-community-edition": "<2.4.4.0-patch9|>=2.4.5,<2.4.5.0-patch8|>=2.4.6,<2.4.6.0-patch6|>=2.4.7,<2.4.7.0-patch1",
"magneto/core": "<1.9.4.4-dev",
"maikuolan/phpmussel": ">=1,<1.6",
"mainwp/mainwp": "<=4.4.3.3",
@@ -10978,9 +10985,9 @@
"onelogin/php-saml": "<2.10.4",
"oneup/uploader-bundle": ">=1,<1.9.3|>=2,<2.1.5",
"open-web-analytics/open-web-analytics": "<1.7.4",
- "opencart/opencart": "<=3.0.3.9|>=4",
+ "opencart/opencart": ">=0",
"openid/php-openid": "<2.3",
- "openmage/magento-lts": "<20.5",
+ "openmage/magento-lts": "<20.10.1",
"opensolutions/vimbadmin": "<=3.0.15",
"opensource-workshop/connect-cms": "<1.7.2|>=2,<2.3.2",
"orchid/platform": ">=9,<9.4.4|>=14.0.0.0-alpha4,<14.5",
@@ -10990,6 +10997,7 @@
"oro/crm-call-bundle": ">=4.2,<=4.2.5|>=5,<5.0.4|>=5.1,<5.1.1",
"oro/customer-portal": ">=4.1,<=4.1.13|>=4.2,<=4.2.10|>=5,<=5.0.11|>=5.1,<=5.1.3",
"oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<=4.2.10|>=5,<=5.0.12|>=5.1,<=5.1.3",
+ "oveleon/contao-cookiebar": "<1.16.3|>=2,<2.1.3",
"oxid-esales/oxideshop-ce": "<4.5",
"oxid-esales/paymorrow-module": ">=1,<1.0.2|>=2,<2.0.1",
"packbackbooks/lti-1-3-php-library": "<5",
@@ -11031,7 +11039,7 @@
"phpxmlrpc/extras": "<0.6.1",
"phpxmlrpc/phpxmlrpc": "<4.9.2",
"pi/pi": "<=2.5",
- "pimcore/admin-ui-classic-bundle": "<=1.4.2",
+ "pimcore/admin-ui-classic-bundle": "<=1.5.1",
"pimcore/customer-management-framework-bundle": "<4.0.6",
"pimcore/data-hub": "<1.2.4",
"pimcore/demo": "<10.3",
@@ -11055,7 +11063,7 @@
"prestashop/ps_facetedsearch": "<3.4.1",
"prestashop/ps_linklist": "<3.1",
"privatebin/privatebin": "<1.4|>=1.5,<1.7.4",
- "processwire/processwire": "<=3.0.210",
+ "processwire/processwire": "<=3.0.229",
"propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7",
"propel/propel1": ">=1,<=1.7.1",
"pterodactyl/panel": "<1.11.6",
@@ -11104,11 +11112,12 @@
"silverstripe/cms": "<4.11.3",
"silverstripe/comments": ">=1.3,<3.1.1",
"silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3",
- "silverstripe/framework": "<4.13.39|>=5,<5.1.11",
+ "silverstripe/framework": "<5.2.16",
"silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3",
"silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1",
"silverstripe/recipe-cms": ">=4.5,<4.5.3",
"silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1",
+ "silverstripe/reports": "<5.2.3",
"silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4|>=2.1,<2.1.2",
"silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1",
"silverstripe/subsites": ">=2,<2.6.1",
@@ -11141,7 +11150,7 @@
"ssddanbrown/bookstack": "<24.05.1",
"statamic/cms": "<4.46|>=5.3,<5.6.2",
"stormpath/sdk": "<9.9.99",
- "studio-42/elfinder": "<2.1.62",
+ "studio-42/elfinder": "<=2.1.64",
"studiomitte/friendlycaptcha": "<0.1.4",
"subhh/libconnect": "<7.0.8|>=8,<8.1",
"sukohi/surpass": "<1",
@@ -11157,7 +11166,7 @@
"sylius/grid-bundle": "<1.10.1",
"sylius/paypal-plugin": ">=1,<1.2.4|>=1.3,<1.3.1",
"sylius/resource-bundle": ">=1,<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4",
- "sylius/sylius": "<1.9.10|>=1.10,<1.10.11|>=1.11,<1.11.2|>=1.12.0.0-alpha1,<1.12.16|>=1.13.0.0-alpha1,<1.13.1",
+ "sylius/sylius": "<1.12.19|>=1.13.0.0-alpha1,<1.13.4",
"symbiote/silverstripe-multivaluefield": ">=3,<3.1",
"symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4",
"symbiote/silverstripe-seed": "<6.0.3",
@@ -11216,11 +11225,12 @@
"topthink/framework": "<6.0.17|>=6.1,<6.1.5|>=8,<8.0.4",
"topthink/think": "<=6.1.1",
"topthink/thinkphp": "<=3.2.3",
- "torrentpier/torrentpier": "<=2.4.1",
+ "torrentpier/torrentpier": "<=2.4.3",
"tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2",
"tribalsystems/zenario": "<9.5.60602",
"truckersmp/phpwhois": "<=4.3.1",
"ttskch/pagination-service-provider": "<1",
+ "twbs/bootstrap": "<=3.4.1|>=4,<=4.6.2",
"twig/twig": "<1.44.7|>=2,<2.15.3|>=3,<3.4.3",
"typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2",
"typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
@@ -11258,7 +11268,8 @@
"wallabag/tcpdf": "<6.2.22",
"wallabag/wallabag": "<2.6.7",
"wanglelecc/laracms": "<=1.0.3",
- "web-auth/webauthn-framework": ">=3.3,<3.3.4",
+ "web-auth/webauthn-framework": ">=3.3,<3.3.4|>=4.5,<4.9",
+ "web-auth/webauthn-lib": ">=4.5,<4.9",
"web-feet/coastercms": "==5.5",
"webbuilders-group/silverstripe-kapost-bridge": "<0.4",
"webcoast/deferred-image-processing": "<1.0.2",
@@ -11374,7 +11385,7 @@
"type": "tidelift"
}
],
- "time": "2024-07-10T17:04:19+00:00"
+ "time": "2024-08-01T22:04:46+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -12707,16 +12718,16 @@
},
{
"name": "symfony/phpunit-bridge",
- "version": "v7.1.2",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/phpunit-bridge.git",
- "reference": "8eb63f1c0e2001f97b3cd9ed550b18765cdeb1c8"
+ "reference": "e823122d31935eb711e2767c31f3d71cb0b87fb1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/8eb63f1c0e2001f97b3cd9ed550b18765cdeb1c8",
- "reference": "8eb63f1c0e2001f97b3cd9ed550b18765cdeb1c8",
+ "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/e823122d31935eb711e2767c31f3d71cb0b87fb1",
+ "reference": "e823122d31935eb711e2767c31f3d71cb0b87fb1",
"shasum": ""
},
"require": {
@@ -12769,7 +12780,7 @@
"description": "Provides utilities for PHPUnit, especially user deprecation notices management",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/phpunit-bridge/tree/v7.1.2"
+ "source": "https://github.com/symfony/phpunit-bridge/tree/v7.1.3"
},
"funding": [
{
@@ -12785,20 +12796,20 @@
"type": "tidelift"
}
],
- "time": "2024-06-25T19:55:06+00:00"
+ "time": "2024-07-26T12:41:01+00:00"
},
{
"name": "symfony/web-profiler-bundle",
- "version": "v7.1.2",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/web-profiler-bundle.git",
- "reference": "82b22245d9f3ef8ccb1d55d4e8ade8bc3885c302"
+ "reference": "b9357f73d2c14dcd36783a67386f510654828668"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/82b22245d9f3ef8ccb1d55d4e8ade8bc3885c302",
- "reference": "82b22245d9f3ef8ccb1d55d4e8ade8bc3885c302",
+ "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/b9357f73d2c14dcd36783a67386f510654828668",
+ "reference": "b9357f73d2c14dcd36783a67386f510654828668",
"shasum": ""
},
"require": {
@@ -12850,7 +12861,7 @@
"dev"
],
"support": {
- "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.1.2"
+ "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.1.3"
},
"funding": [
{
@@ -12866,7 +12877,7 @@
"type": "tidelift"
}
],
- "time": "2024-06-25T19:55:06+00:00"
+ "time": "2024-07-26T12:41:01+00:00"
},
{
"name": "theseer/tokenizer",
diff --git a/app/package.json b/app/package.json
index c707891..d1aede7 100644
--- a/app/package.json
+++ b/app/package.json
@@ -16,7 +16,6 @@
"regenerator-runtime": "^0.14.1",
"sass": "^1.77.7",
"sass-loader": "^14.2.1",
- "tom-select": "^2.3.1",
"ts-loader": "^9.5.1",
"typescript": "^5.5.3",
"webpack": "^5.92.1",
@@ -32,6 +31,7 @@
"build": "encore production --progress"
},
"dependencies": {
+ "tom-select": "^2.3.1",
"@hotwired/stimulus": "^3.2.2",
"@symfony/stimulus-bridge": "^3.2.2",
"@uppy/core": "^4.0.0",
diff --git a/app/src/Controller/Admin/RegistrationCodeController.php b/app/src/Controller/Admin/RegistrationCodeController.php
index cb9f3c1..969b501 100644
--- a/app/src/Controller/Admin/RegistrationCodeController.php
+++ b/app/src/Controller/Admin/RegistrationCodeController.php
@@ -2,11 +2,14 @@
namespace App\Controller\Admin;
+use App\Dto\Utility\DefaultRequestValues;
use App\Entity\RegistrationCode;
use App\Entity\User;
use App\Enum\UserRole;
use App\Form\Admin\RegistrationCodeType;
use App\Repository\RegistrationCodeRepository;
+use App\Service\User\UserHandlerInterface;
+use App\Util\RequestArgumentHelper;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
@@ -51,10 +54,23 @@ public function new(Request $request, EntityManagerInterface $entityManager): Re
}
#[Route('/{id}', name: 'show', methods: ['GET'])]
- public function show(RegistrationCode $registrationCode): Response
- {
+ public function show(
+ RegistrationCode $registrationCode,
+ UserHandlerInterface $userHandler,
+ Request $request
+ ): Response {
+ $arguments = RequestArgumentHelper::extractArguments(
+ request: $request,
+ defaultValues: new DefaultRequestValues(limit: 100)
+ );
+ $users = $userHandler->filterAndPaginateUsers(
+ $arguments,
+ $registrationCode
+ );
+
return $this->render('admin/registration_code/show.html.twig', [
'registration_code' => $registrationCode,
+ 'users' => $users,
]);
}
diff --git a/app/src/Controller/Admin/WorkspaceController.php b/app/src/Controller/Admin/WorkspaceController.php
index ed1a5ea..9fa26d5 100644
--- a/app/src/Controller/Admin/WorkspaceController.php
+++ b/app/src/Controller/Admin/WorkspaceController.php
@@ -6,11 +6,17 @@
use App\Dto\Admin\Form\WorkspaceEdit;
use App\Dto\Utility\DefaultRequestValues;
+use App\Dto\Utility\SortFilterPaginateArguments;
use App\Entity\Workspace;
+use App\Enum\FileType;
use App\Enum\FlashType;
use App\Enum\UserRole;
use App\Enum\WorkspaceStatus;
+use App\Exception\FileHandlerException;
use App\Form\Admin\WorkspaceEditType;
+use App\Service\File\FilePaginationHandlerInterface;
+use App\Service\File\Filter\ChoiceFilter;
+use App\Service\File\Filter\FileTypeFilter;
use App\Service\User\MembershipHandlerInterface;
use App\Service\Workspace\WorkspaceHandlerInterface;
use App\Util\Paginator\PaginatorException;
@@ -27,6 +33,7 @@ class WorkspaceController extends AbstractAdminController
{
/**
* @throws PaginatorException
+ * @throws FileHandlerException
*/
#[Route('/{workspace}', name: 'index')]
public function index(
@@ -34,7 +41,8 @@ public function index(
Request $request,
WorkspaceHandlerInterface $workspaceHandler,
TranslatorInterface $translator,
- MembershipHandlerInterface $membershipHandler
+ MembershipHandlerInterface $membershipHandler,
+ FilePaginationHandlerInterface $filePaginationHandler,
): Response {
$edit = (new WorkspaceEdit())
->setStatus(
@@ -60,9 +68,19 @@ public function index(
sortFilterPaginateArguments: $arguments,
);
+ $files = $filePaginationHandler->filterAndPaginateFiles(
+ $workspace,
+ new SortFilterPaginateArguments(page: 1, limit: 5),
+ [
+ new ChoiceFilter(['deletedAt', 'isNull']),
+ new FileTypeFilter(FileType::ASSET),
+ ]
+ );
+
return $this->render('admin/workspace.html.twig', [
'workspace' => $workspace,
'memberships' => $memberships,
+ 'files' => $files,
'form' => $form->createView(),
]);
}
diff --git a/app/src/Controller/Workspace/FileController.php b/app/src/Controller/Workspace/FileController.php
index 592cc52..3f85d04 100644
--- a/app/src/Controller/Workspace/FileController.php
+++ b/app/src/Controller/Workspace/FileController.php
@@ -215,7 +215,7 @@ public function newFolder(string $filename, CategoryHandlerInterface $categoryHa
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$category = $categoryHandler->createCategory($create, $workspace, $user, $file);
- $message = sprintf($this->translator->trans('file.updateSuccess'), $file->getFilename());
+ $message = sprintf($this->translator->trans('file.addFolderSuccess'), $file->getFilename());
if ($request->isXmlHttpRequest()) {
return $this->json(
@@ -267,7 +267,7 @@ public function newCollection(string $filename, CollectionHandlerInterface $coll
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$collection = $collectionHandler->createCollection($create, $workspace, $user, $file);
- $message = sprintf($this->translator->trans('file.updateSuccess'), $file->getFilename());
+ $message = sprintf($this->translator->trans('file.newCollectionSuccess'), $file->getFilename());
if ($request->isXmlHttpRequest()) {
return $this->json(
diff --git a/app/src/Dto/Utility/SortFilterPaginateArguments.php b/app/src/Dto/Utility/SortFilterPaginateArguments.php
index 4530093..25d74bb 100644
--- a/app/src/Dto/Utility/SortFilterPaginateArguments.php
+++ b/app/src/Dto/Utility/SortFilterPaginateArguments.php
@@ -16,10 +16,10 @@
* @param string[] $uploadedBy
*/
public function __construct(
- private SortParam $sort,
+ private SortParam $sort = SortParam::UPLOADED_DESC,
private int $page = 1,
private int $limit = 30,
- private ?ViewParam $view = null,
+ private ?ViewParam $view = ViewParam::VIEW_GRID,
private ?string $search = null,
private array $mimeTypes = [],
private array $tags = [],
diff --git a/app/src/Form/File/EditType.php b/app/src/Form/File/EditType.php
index 5e5caad..a5a4efb 100644
--- a/app/src/Form/File/EditType.php
+++ b/app/src/Form/File/EditType.php
@@ -102,44 +102,43 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
'disabled' => !$canEdit,
],
]);
- if ([] !== $collectionChoices) {
- $builder
- ->add('assetCollections', ChoiceType::class, [
- 'label' => 'label.collections',
- 'placeholder' => 'label.select',
- 'choices' => $collectionChoices,
- 'required' => false,
- 'multiple' => true,
- 'attr' => [
- 'readonly' => !$canEdit,
- ],
- 'autocomplete' => true,
- ]);
- $builder->get('assetCollections')
- ->addModelTransformer(
- new CallbackTransformer(
- function ($assetCollections) {
- $pickedCollections = [];
- /** @var AssetCollection $collection */
- foreach ($assetCollections as $collection) {
- $pickedCollections[] = $collection->getId();
- }
+ $builder
+ ->add('assetCollections', ChoiceType::class, [
+ 'label' => 'label.collections',
+ 'placeholder' => 'label.select',
+ 'choices' => $collectionChoices,
+ 'required' => false,
+ 'multiple' => true,
+ 'attr' => [
+ 'readonly' => !$canEdit,
+ 'data-controller' => 'assetview-collection-autocomplete',
+ ],
+ 'autocomplete' => true,
+ ]);
+ $builder->get('assetCollections')
+ ->addModelTransformer(
+ new CallbackTransformer(
+ function ($assetCollections) {
+ $pickedCollections = [];
+ /** @var AssetCollection $collection */
+ foreach ($assetCollections as $collection) {
+ $pickedCollections[] = $collection->getId();
+ }
- return $pickedCollections;
- },
- function (array $selection) use ($collections): array {
- $pickedCollections = [];
- foreach ($collections as $collection) {
- if (in_array($collection->getId(), $selection, true)) {
- $pickedCollections[] = $collection;
- }
+ return $pickedCollections;
+ },
+ function (array $selection) use ($collections): array {
+ $pickedCollections = [];
+ foreach ($collections as $collection) {
+ if (in_array($collection->getId(), $selection, true)) {
+ $pickedCollections[] = $collection;
}
-
- return $pickedCollections;
}
- )
- );
- }
+
+ return $pickedCollections;
+ }
+ )
+ );
}
public function configureOptions(OptionsResolver $resolver): void
diff --git a/app/src/Repository/UserRepository.php b/app/src/Repository/UserRepository.php
index 81d6090..932894e 100644
--- a/app/src/Repository/UserRepository.php
+++ b/app/src/Repository/UserRepository.php
@@ -2,6 +2,7 @@
namespace App\Repository;
+use App\Entity\RegistrationCode;
use App\Entity\User;
use App\Entity\Workspace;
use App\Enum\SortParam;
@@ -92,11 +93,16 @@ public function findForAutocomplete(array $ids, ?string $query, int $limit): arr
return $result;
}
- public function getUserQuery(SortParam $sortParam): Query
+ public function getUserQuery(SortParam $sortParam, ?RegistrationCode $registrationCode = null): Query
{
$qb = $this->createQueryBuilder('u')
->orderBy($this->getOrderBy($sortParam));
+ if ($registrationCode instanceof RegistrationCode) {
+ $qb->andWhere('u.registrationCode = :registrationCode')
+ ->setParameter('registrationCode', $registrationCode);
+ }
+
return $qb->getQuery();
}
diff --git a/app/src/Service/File/FilePaginationHandler.php b/app/src/Service/File/FilePaginationHandler.php
index e373453..bb764ee 100644
--- a/app/src/Service/File/FilePaginationHandler.php
+++ b/app/src/Service/File/FilePaginationHandler.php
@@ -76,7 +76,9 @@ public function filterAndPaginateFiles(
$files = $this->fileRepository->filterFiles($scope, $filters);
$query = $this->fileRepository->sortFiles($files, $orderBy);
- return $this->paginator->paginate(
+ $paginator = clone $this->paginator;
+
+ return $paginator->paginate(
query: $query,
page: $sortFilterPaginateArguments->getPage(),
limit: $sortFilterPaginateArguments->getLimit()
diff --git a/app/src/Service/User/UserHandler.php b/app/src/Service/User/UserHandler.php
index 7152f19..4df6f43 100644
--- a/app/src/Service/User/UserHandler.php
+++ b/app/src/Service/User/UserHandler.php
@@ -9,6 +9,7 @@
use App\Dto\User\Interface\NameRequestInterface;
use App\Dto\User\Interface\UsernameRequestInterface;
use App\Dto\Utility\SortFilterPaginateArguments;
+use App\Entity\RegistrationCode;
use App\Entity\User;
use App\Entity\Workspace;
use App\Enum\UserAction;
@@ -124,10 +125,12 @@ public function getWorkspaceUserUploadCounts(Workspace $workspace, bool $cached
/**
* @throws PaginatorException
*/
- public function filterAndPaginateUsers(SortFilterPaginateArguments $sortFilterPaginateArguments): Paginator
- {
+ public function filterAndPaginateUsers(
+ SortFilterPaginateArguments $sortFilterPaginateArguments,
+ ?RegistrationCode $registrationCode = null
+ ): Paginator {
return $this->paginator->paginate(
- query: $this->userRepository->getUserQuery($sortFilterPaginateArguments->getSort()),
+ query: $this->userRepository->getUserQuery($sortFilterPaginateArguments->getSort(), $registrationCode),
page: $sortFilterPaginateArguments->getPage(),
limit: $sortFilterPaginateArguments->getLimit()
);
diff --git a/app/src/Service/User/UserHandlerInterface.php b/app/src/Service/User/UserHandlerInterface.php
index e9de647..497e1f2 100644
--- a/app/src/Service/User/UserHandlerInterface.php
+++ b/app/src/Service/User/UserHandlerInterface.php
@@ -9,6 +9,7 @@
use App\Dto\User\Interface\NameRequestInterface;
use App\Dto\User\Interface\UsernameRequestInterface;
use App\Dto\Utility\SortFilterPaginateArguments;
+use App\Entity\RegistrationCode;
use App\Entity\User;
use App\Entity\Workspace;
use App\Exception\UserHandlerException;
@@ -31,7 +32,10 @@ public function changeUsername(UsernameRequestInterface $action): void;
public function changeLocale(LocaleRequestChangeInterface $action): void;
- public function filterAndPaginateUsers(SortFilterPaginateArguments $sortFilterPaginateArguments): Paginator;
+ public function filterAndPaginateUsers(
+ SortFilterPaginateArguments $sortFilterPaginateArguments,
+ ?RegistrationCode $registrationCode = null
+ ): Paginator;
public function adminUpdateUser(User $userToEdit, UserEdit $edit, User $user): void;
diff --git a/app/templates/admin/index.html.twig b/app/templates/admin/index.html.twig
index 353a5c8..3a56c50 100644
--- a/app/templates/admin/index.html.twig
+++ b/app/templates/admin/index.html.twig
@@ -25,6 +25,7 @@
{% endfor %}
+ {% include 'partials/_pagination.html.twig' with {'pages': workspaces.pages, 'page': workspaces.page, 'classicPagination': true} %}
{% endblock %}
diff --git a/app/templates/admin/registration_code/show.html.twig b/app/templates/admin/registration_code/show.html.twig
index 7eb0122..3ea1ae3 100644
--- a/app/templates/admin/registration_code/show.html.twig
+++ b/app/templates/admin/registration_code/show.html.twig
@@ -39,4 +39,45 @@
edit
{{ include('admin/registration_code/_delete_form.html.twig') }}
+
+ {% if users.total > 0 %}
+
+
+
+
+ {{ 'admin.user.emailadress'|trans }}
+ {{ 'admin.user.name'|trans }}
+ {{ 'admin.user.username'|trans }}
+ {{ 'admin.user.workspace'|trans }}
+
+
+
+ {% for user in users.items %}
+
+ {{ user.email|default }}
+ {{ user.name|default }}
+ {{ user.username|default }}
+
+ {% if user.memberships.count|default(0) > 0 %}
+
+ {% endif %}
+
+
+ {% endfor %}
+
+
+
+ {% include 'partials/_pagination.html.twig' with {'pages': users.pages, 'page': users.page, 'classicPagination': true} %}
+ {% endif %}
{% endblock %}
diff --git a/app/templates/admin/users/index.html.twig b/app/templates/admin/users/index.html.twig
index 43c79d7..60d35a9 100644
--- a/app/templates/admin/users/index.html.twig
+++ b/app/templates/admin/users/index.html.twig
@@ -14,6 +14,7 @@
{{ 'admin.user.registeredAt'|trans }}
{{ 'admin.user.status'|trans }}
{{ 'admin.user.notice'|trans }}
+ {{ 'admin.user.registrationCode'|trans }}
@@ -22,20 +23,37 @@
{{ user.id }}
{{ user.name }} ({{ user.username }} / {{ user.email }})
- {% if user.lastUsedWorkspace %}
-
- {{ user.lastUsedWorkspace.slug }} / {{ user.lastUsedWorkspace.name }}
-
+ {% if user.memberships.count|default(0) > 0 %}
+
{% endif %}
{{ user|daminikRole }}
{{ user.createdAt|format_datetime('short', 'none') }}
{{ user.status }}
{{ user.adminNotice }}
+
+ {% if user.registrationCode %}
+
+ {{ user.registrationCode.code }}
+
+ {% endif %}
+
{% endfor %}
+ {% include 'partials/_pagination.html.twig' with {'pages': users.pages, 'page': users.page, 'classicPagination': true} %}
{% endblock %}
diff --git a/app/templates/admin/workspace.html.twig b/app/templates/admin/workspace.html.twig
index 3e7ea48..4f7a3ab 100644
--- a/app/templates/admin/workspace.html.twig
+++ b/app/templates/admin/workspace.html.twig
@@ -27,8 +27,36 @@
- {% include 'partials/_pagination.html.twig' with {'pages': memberships.pages, 'page': memberships.page} %}
+ {% include 'partials/_pagination.html.twig' with {'pages': memberships.pages, 'page': memberships.page, 'classicPagination': true} %}
{% endif %}
+ {% if files.total > 0 %}
+ {% endif %}
{% endblock %}
diff --git a/app/templates/components/SearchForm.html.twig b/app/templates/components/SearchForm.html.twig
index 337c6e7..1e27b8e 100644
--- a/app/templates/components/SearchForm.html.twig
+++ b/app/templates/components/SearchForm.html.twig
@@ -10,8 +10,16 @@
{% endif %}
{{ form_end(searchForm) }}
{% else %}
-
diff --git a/app/templates/workspace/file/view.html.twig b/app/templates/workspace/file/view.html.twig
index 3120429..24fc394 100644
--- a/app/templates/workspace/file/view.html.twig
+++ b/app/templates/workspace/file/view.html.twig
@@ -131,7 +131,7 @@
{{ form_help(form.category) }}
- {% if form.assetCollections is defined %}
+{# {% if form.assetCollections is defined %}#}
{{ form_label(form.assetCollections) }}
@@ -143,7 +143,7 @@
{{ form_widget(form.assetCollections, {'attr': {'class': 'multiselect', 'data-assetview-target': 'collectionSelect'}}) }}
{{ form_help(form.assetCollections) }}
- {% endif %}
+{# {% endif %}#}
{% include 'partials/_file-dates-table.html.twig' %}
diff --git a/app/translations/messages+intl-icu.de.yml b/app/translations/messages+intl-icu.de.yml
index d2f2858..e4728cc 100644
--- a/app/translations/messages+intl-icu.de.yml
+++ b/app/translations/messages+intl-icu.de.yml
@@ -63,6 +63,7 @@ base:
backToApp: 'Zurück zur App'
cancel: Abbrechen
apply: Anwenden
+ clearInput: 'Feld leeren'
invites:
invite: Einladen
inviteInstruction: '(Um einen neuen Einladungslink zu generieren, kannst du einfach das Formular ohne E-Mail Adresse abschicken.)'
@@ -96,6 +97,8 @@ registration:
noAccountYet: 'Du hast noch keinen Account?
Jetzt registrieren '
file:
updateSuccess: 'Die Datei %s wurde erfolgreich aktualisiert.'
+ addFolderSuccess: 'Die Datei %s wurde erfolgreich verschoben.'
+ newCollectionSuccess: 'Die Datei %s wurde erfolgreich der Kollektion zugewiesen.'
accessDenied: 'Zugriff verweigert.'
tryAgainCsrf: 'Bitte noch einmal versuchen. (CSRF-Token)'
deletedSuccess: 'Die Datei %s wurde erfolgreich gelöscht.'
@@ -240,6 +243,7 @@ admin:
role: Rolle
actions: Aktionen
registeredAt: 'Registriert am'
+ registrationCode: 'Registrierungscode'
message:
user:
lastOwner: 'Der Workspace braucht mindestens einen Besitzer.'
diff --git a/app/translations/messages+intl-icu.en.yml b/app/translations/messages+intl-icu.en.yml
index 4270a5f..8f3ae69 100644
--- a/app/translations/messages+intl-icu.en.yml
+++ b/app/translations/messages+intl-icu.en.yml
@@ -63,6 +63,7 @@ base:
select: Select
cancel: Cancel
apply: Apply
+ clearInput: 'Clear input'
invites:
invite: Invite
inviteInstruction: '(Generate new invite link: submit form without email address.)'
@@ -96,6 +97,8 @@ registration:
noAccountYet: 'You do not have an account, yet?
Why not register '
file:
updateSuccess: 'The file %s has been successfully updated.'
+ addFolderSuccess: 'The file %s has been moved to the folder.'
+ newCollectionSuccess: 'The file %s has been added to the collection.'
accessDenied: 'Access Denied.'
tryAgainCsrf: 'Please try again. (CSRF-Token)'
deletedSuccess: 'File %s successfully deleted'
@@ -240,6 +243,7 @@ admin:
role: Role
actions: Actions
registeredAt: 'Registered at'
+ registrationCode: 'Registration Code'
message:
user:
lastOwner: 'The workspace needs at least one owner'
diff --git a/app/translations/validators.de.yml b/app/translations/validators.de.yml
index a68d59a..d881f87 100644
--- a/app/translations/validators.de.yml
+++ b/app/translations/validators.de.yml
@@ -24,11 +24,17 @@
' It should have {{ limit }} character or less':
'|This value is too long':
' It should have {{ limit }} characters or less.': 'Diese Zeichenkette ist zu lang. Sie sollte höchstens {{ limit }} Zeichen haben.|Diese Zeichenkette ist zu lang. Sie sollte höchstens {{ limit }} Zeichen haben.'
+ ' It should contain one word':
+ '|This value is too long':
+ ' It should contain {{ max }} words or less.': 'Dieser Wert ist zu lang. Er darf maximal aus einem Wort bestehen.|Dieser Wert ist zu lang. Er darf maximal {{ max }} Wörter enthalten.'
'This value should be {{ limit }} or more.': 'Dieser Wert sollte größer oder gleich {{ limit }} sein.'
'This value is too short':
' It should have {{ limit }} character or more':
'|This value is too short':
' It should have {{ limit }} characters or more.': 'Diese Zeichenkette ist zu kurz. Sie sollte mindestens {{ limit }} Zeichen haben.|Diese Zeichenkette ist zu kurz. Sie sollte mindestens {{ limit }} Zeichen haben.'
+ ' It should contain at least one word':
+ '|This value is too short':
+ ' It should contain at least {{ min }} words.': 'Dieser Wert ist zu kurz. Er muss aus mindestens einem Wort bestehen.|Dieser Wert ist zu kurz. Er muss mindestens {{ min }} Wörter enthalten.'
'This value should not be blank.': 'Dieser Wert sollte nicht leer sein.'
'This value should not be null.': 'Dieser Wert sollte nicht null sein.'
'This value should be null.': 'Dieser Wert sollte null sein.'
diff --git a/app/translations/validators.en.yml b/app/translations/validators.en.yml
index a4a6ba3..2c55716 100644
--- a/app/translations/validators.en.yml
+++ b/app/translations/validators.en.yml
@@ -24,11 +24,17 @@
' It should have {{ limit }} character or less':
'|This value is too long':
' It should have {{ limit }} characters or less.': 'This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less.'
+ ' It should contain one word':
+ '|This value is too long':
+ ' It should contain {{ max }} words or less.': 'This value is too long. It should contain one word.|This value is too long. It should contain {{ max }} words or less.'
'This value should be {{ limit }} or more.': 'This value should be {{ limit }} or more.'
'This value is too short':
' It should have {{ limit }} character or more':
'|This value is too short':
' It should have {{ limit }} characters or more.': 'This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more.'
+ ' It should contain at least one word':
+ '|This value is too short':
+ ' It should contain at least {{ min }} words.': 'This value is too short. It should contain at least one word.|This value is too short. It should contain at least {{ min }} words.'
'This value should not be blank.': 'This value should not be blank.'
'This value should not be null.': 'This value should not be null.'
'This value should be null.': 'This value should be null.'
diff --git a/app/tsconfig.json b/app/tsconfig.json
index da35a53..0bad406 100644
--- a/app/tsconfig.json
+++ b/app/tsconfig.json
@@ -25,10 +25,11 @@
"noUnusedParameters": true,
"incremental": true,
"noFallthroughCasesInSwitch": true,
- "noImplicitThis": false
+ "noImplicitThis": false,
+ "strictPropertyInitialization": false
},
"include": [
"assets/**/*"
],
"exclude": ["node_modules", "build"]
-}
\ No newline at end of file
+}