Skip to content

Commit 0dbb30f

Browse files
authored
[User management] Add date time locale (#2085)
1 parent 512b370 commit 0dbb30f

File tree

707 files changed

+22614
-63
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

707 files changed

+22614
-63
lines changed

assets/build/api/docs.jsonopenapi.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

assets/js/src/core/modules/asset/asset-api-slice.gen.ts

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -595,7 +595,7 @@ export type AssetExportZipFolderApiResponse =
595595
export type AssetExportZipFolderApiArg = {
596596
body: {
597597
folders?: number[];
598-
filters?: GridFilter;
598+
filters?: ExportAllFilter;
599599
};
600600
};
601601
export type AssetGetByIdApiResponse = /** status 200 Successfully retrieved one of asset type data as JSON */
@@ -855,7 +855,7 @@ export type AssetPatchFolderByIdApiArg = {
855855
locked?: string | null;
856856
metadata?: PatchCustomMetadata[] | null;
857857
}[];
858-
filters?: GridFilter;
858+
filters?: ExportAllFilter;
859859
};
860860
};
861861
export type AssetClearThumbnailApiResponse = unknown;
@@ -998,17 +998,11 @@ export type CustomSettings = {
998998
/** dynamic custom settings - can be any key-value pair */
999999
dynamicCustomSettings?: object[];
10001000
};
1001-
export type GridFilter = {
1002-
/** Page */
1003-
page: number;
1004-
/** Page Size */
1005-
pageSize: number;
1006-
/** Include Descendant Items */
1007-
includeDescendants: boolean;
1001+
export type ExportAllFilter = {
10081002
/** Column Filter */
1009-
columnFilters?: object;
1003+
columnFilters: object;
10101004
/** Sort Filter */
1011-
sortFilter?: object;
1005+
sortFilter: object;
10121006
};
10131007
export type ElementIcon = {
10141008
/** Icon type */
@@ -1213,10 +1207,22 @@ export type GridColumnRequest = {
12131207
/** Type */
12141208
type: string;
12151209
/** Group */
1216-
group?: string | null;
1210+
group?: string[] | null;
12171211
/** Config */
12181212
config?: (string | AdvancedColumnConfig)[];
12191213
};
1214+
export type GridFilter = {
1215+
/** Page */
1216+
page: number;
1217+
/** Page Size */
1218+
pageSize: number;
1219+
/** Include Descendant Items */
1220+
includeDescendants: boolean;
1221+
/** Column Filter */
1222+
columnFilters?: object;
1223+
/** Sort Filter */
1224+
sortFilter?: object;
1225+
};
12201226
export type GridDetailedConfiguration = {
12211227
/** AdditionalAttributes */
12221228
additionalAttributes?: {

assets/js/src/core/modules/auth/profile/profile-detail.tsx

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,19 +37,26 @@ interface IProfileDetail {
3737
const ProfileDetail = ({ id }: IProfileDetail): React.JSX.Element => {
3838
const [form] = Form.useForm()
3939
const { t } = useTranslation()
40-
const { availableAdminLanguages } = useSettings()
40+
const { availableAdminLanguages, validLocales } = useSettings()
4141
const { getDisplayName } = useLanguageLookup()
4242
const { user, setModifiedCells } = useUserDraft()
4343
const [keyBindingsModified, setKeyBindingsModified] = useState(false)
4444
const { updateUserImageInState } = useUserHelper()
4545

46+
const validLocalesOptions = [{ value: '', label: '(system)' },
47+
...Object.entries(validLocales as Record<string, string>).map(([key, value]) => ({
48+
value: key,
49+
label: value
50+
}))]
51+
4652
useEffect(() => {
4753
if (user?.modified === false) {
4854
form.setFieldsValue({
4955
firstname: user?.firstname,
5056
lastname: user?.lastname,
5157
email: user?.email,
5258
language: user?.language,
59+
dateTimeLocale: user?.dateTimeLocale ?? '',
5360
memorizeTabs: user?.memorizeTabs,
5461
welcomeScreen: user?.welcomeScreen,
5562
keyBindings: user?.keyBindings,
@@ -145,15 +152,14 @@ const ProfileDetail = ({ id }: IProfileDetail): React.JSX.Element => {
145152
</Form.Item>
146153

147154
<Form.Item
148-
label={ 'TODO ' + t('user-management.dateTime') }
149-
name="dateTime"
155+
label={ t('user-management.dateTime') }
156+
name="dateTimeLocale"
150157
>
151158
<Select
152-
options={ availableAdminLanguages.map((language: string) => ({
153-
value: language,
154-
label: getDisplayName(language)
155-
})) }
159+
optionFilterProp="label"
160+
options={ validLocalesOptions }
156161
placeholder={ t('user-management.dateTime') }
162+
showSearch
157163
/>
158164
</Form.Item>
159165

assets/js/src/core/modules/auth/user/user-api-slice.gen.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -457,13 +457,13 @@ export type User = {
457457
/** ID of the User */
458458
id: number;
459459
/** Name of Folder or User */
460-
name?: string | null;
460+
name: string | null;
461461
/** Email of the User */
462-
email?: string | null;
462+
email: string | null;
463463
/** Firstname of the User */
464-
firstname?: string | null;
464+
firstname: string | null;
465465
/** Lastname of the User */
466-
lastname?: string | null;
466+
lastname: string | null;
467467
/** If a User is active */
468468
active: boolean;
469469
/** If User is admin */
@@ -482,6 +482,8 @@ export type User = {
482482
keyBindings: KeyBindingForAUser[];
483483
/** Language of the User */
484484
language: string;
485+
/** Locale for dateTime */
486+
dateTimeLocale?: string | null;
485487
/** Timestamp of the last login */
486488
lastLogin?: number | null;
487489
/** Memorize Tabs */
@@ -513,13 +515,13 @@ export type User = {
513515
};
514516
export type User2 = {
515517
/** Email of the User */
516-
email?: string | null;
518+
email: string | null;
517519
/** Firstname of the User */
518-
firstname?: string | null;
520+
firstname: string | null;
519521
/** Lastname of the User */
520-
lastname?: string | null;
522+
lastname: string | null;
521523
/** If User is admin */
522-
admin?: boolean;
524+
admin: boolean;
523525
/** If User is active */
524526
active: boolean;
525527
/** Classes the user is allows to see */
@@ -534,6 +536,8 @@ export type User2 = {
534536
keyBindings: KeyBindingForAUser[];
535537
/** Language of the User */
536538
language: string;
539+
/** Date Time Locale for the User */
540+
dateTimeLocale?: string;
537541
/** Memorize Tabs */
538542
memorizeTabs: boolean;
539543
/** Parent ID */

assets/js/src/core/modules/data-object/data-object-api-slice.gen.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,8 @@ export type DataObjectPatchFolderByIdApiArg = {
460460
published?: boolean | null;
461461
editableData?: object | null;
462462
}[];
463-
filters?: GridFilter;
463+
filters?: ExportAllFilter;
464+
classId: string;
464465
};
465466
};
466467
export type DataObjectFormatPathApiResponse = /** status 200 Formatted path of the objects */ {
@@ -746,7 +747,7 @@ export type GridColumnRequest = {
746747
/** Type */
747748
type: string;
748749
/** Group */
749-
group?: string | null;
750+
group?: string[] | null;
750751
/** Config */
751752
config?: (string | AdvancedColumnConfig)[];
752753
};
@@ -886,6 +887,12 @@ export type Layout = {
886887
/** Border */
887888
border: boolean;
888889
};
890+
export type ExportAllFilter = {
891+
/** Column Filter */
892+
columnFilters: object;
893+
/** Sort Filter */
894+
sortFilter: object;
895+
};
889896
export type SelectOption = {
890897
/** AdditionalAttributes */
891898
additionalAttributes?: {

assets/js/src/core/modules/data-object/listing/batch-actions/batch-edit-modal/batch-edit-modal.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*/
1010

1111
import React, { useEffect, useMemo } from 'react'
12-
import { isNil, isUndefined } from 'lodash'
12+
import { isUndefined } from 'lodash'
1313
import { ModalFooter } from '@Pimcore/components/modal/footer/modal-footer'
1414
import { Dropdown, type ItemType, type MenuItemType } from '@Pimcore/components/dropdown/dropdown'
1515
import { IconTextButton } from '@Pimcore/components/icon-text-button/icon-text-button'
@@ -118,7 +118,7 @@ export const BatchEditModal = ({ batchEditModalOpen, setBatchEditModalOpen }: Ba
118118
filters: {
119119
...filters
120120
},
121-
...(!isNil(selectedClassDefinition?.id) && { classId: selectedClassDefinition.id })
121+
classId: String(selectedClassDefinition?.id)
122122
}
123123
})
124124

assets/js/src/core/modules/element/dynamic-types/definitions/objects/data-related/components/many-to-many-object-relation/many-to-many-object-relation.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ const ManyToManyObjectRelationInner = (props: ManyToManyObjectRelationProps): Re
120120

121121
const visibleColumns = (visibleFieldDefinitions ?? []).map(col => ({
122122
...col,
123-
group: col?.group?.[0]
123+
group: col?.group
124124
}))
125125

126126
const { data: gridFullData, isLoading: isGridFullDataLoading } = useDataObjectGrids({

assets/js/src/core/modules/element/export-api-slice.gen.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export type ExportCsvApiArg = {
7979
| "id"
8080
| "custom_report_config"
8181
| "custom_report_to_export"
82+
| "element_class_id"
8283
| "element_to_export"
8384
| "element_type"
8485
| "folder_to_export"
@@ -110,12 +111,13 @@ export type ExportCsvFolderApiArg = {
110111
body: {
111112
folders?: number[];
112113
columns?: GridColumnRequest[];
113-
filters?: GridFilter;
114+
filters?: ExportAllFilter;
114115
config?: {
115116
header?:
116117
| "id"
117118
| "custom_report_config"
118119
| "custom_report_to_export"
120+
| "element_class_id"
119121
| "element_to_export"
120122
| "element_type"
121123
| "folder_to_export"
@@ -137,6 +139,7 @@ export type ExportCsvFolderApiArg = {
137139
delimiter?: string;
138140
};
139141
elementType?: "data-object" | "object" | "asset" | "document";
142+
classId?: string | null;
140143
};
141144
};
142145
export type ExportDownloadXlsxApiResponse = /** status 200 XLSX File as attachment */ Blob;
@@ -162,6 +165,7 @@ export type ExportXlsxApiArg = {
162165
| "id"
163166
| "custom_report_config"
164167
| "custom_report_to_export"
168+
| "element_class_id"
165169
| "element_to_export"
166170
| "element_type"
167171
| "folder_to_export"
@@ -193,12 +197,13 @@ export type ExportXlsxFolderApiArg = {
193197
body: {
194198
folders?: number[];
195199
columns?: GridColumnRequest[];
196-
filters?: GridFilter;
200+
filters?: ExportAllFilter;
197201
config?: {
198202
header?:
199203
| "id"
200204
| "custom_report_config"
201205
| "custom_report_to_export"
206+
| "element_class_id"
202207
| "element_to_export"
203208
| "element_type"
204209
| "folder_to_export"
@@ -219,6 +224,7 @@ export type ExportXlsxFolderApiArg = {
219224
| "bool";
220225
};
221226
elementType?: "data-object" | "object" | "asset" | "document";
227+
classId?: string | null;
222228
};
223229
};
224230
export type Error = {
@@ -269,21 +275,15 @@ export type GridColumnRequest = {
269275
/** Type */
270276
type: string;
271277
/** Group */
272-
group?: string | null;
278+
group?: string[] | null;
273279
/** Config */
274280
config?: (string | AdvancedColumnConfig)[];
275281
};
276-
export type GridFilter = {
277-
/** Page */
278-
page: number;
279-
/** Page Size */
280-
pageSize: number;
281-
/** Include Descendant Items */
282-
includeDescendants: boolean;
282+
export type ExportAllFilter = {
283283
/** Column Filter */
284-
columnFilters?: object;
284+
columnFilters: object;
285285
/** Sort Filter */
286-
sortFilter?: object;
286+
sortFilter: object;
287287
};
288288
export const {
289289
useExportDownloadCsvQuery,

assets/js/src/core/modules/perspectives/perspectives-slice.gen.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -370,15 +370,25 @@ export type DocumentContextPermissions = SaveDocumentContextPermissions & {
370370
[key: string]: string | number | boolean | object;
371371
};
372372
};
373+
export type RelatedElementData = {
374+
/** ID */
375+
id: number;
376+
/** Type of the element */
377+
type: string;
378+
/** Subtype of the element */
379+
subtype: string;
380+
/** Full path of the element */
381+
fullPath: string;
382+
/** Is the element published */
383+
isPublished: boolean | null;
384+
};
373385
export type ElementTreeWidget = WidgetConfig & {
374386
/** Context Permissions */
375387
contextPermissions: AssetContextPermissions | DataObjectContextPermissions | DocumentContextPermissions;
376388
/** Element Type */
377389
elementType: string;
378-
/** Root Folder */
379-
rootFolder: string;
380-
/** Root Folder ID */
381-
rootFolderId: number;
390+
/** Data of root folder element */
391+
rootFolder: RelatedElementData;
382392
/** Show Root */
383393
showRoot: boolean;
384394
/** Classes */

0 commit comments

Comments
 (0)