From 5e3029fb7e9643b18a0bd96378e3c3e4fa2548aa Mon Sep 17 00:00:00 2001 From: Remko Date: Fri, 17 Jan 2025 11:11:20 +0100 Subject: [PATCH 1/9] Backend fix --- lib/Service/ObjectService.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/Service/ObjectService.php b/lib/Service/ObjectService.php index d237e181..f6572ccb 100644 --- a/lib/Service/ObjectService.php +++ b/lib/Service/ObjectService.php @@ -310,7 +310,7 @@ public function getAllObjects(string $objectType, ?int $limit = null, ?int $offs * @return mixed The created or updated object. * @throws ContainerExceptionInterface|DoesNotExistException|MultipleObjectsReturnedException|NotFoundExceptionInterface */ - public function saveObject(string $objectType, array $object, bool $updateVersion = true): mixed + public function saveObject(string $objectType, array $object, array $extend = [], bool $updateVersion = true): mixed { if ($objectType === 'publication') { $object = $this->validationService->validatePublication($object); @@ -321,10 +321,10 @@ public function saveObject(string $objectType, array $object, bool $updateVersio // If the object has an id, update it; otherwise, create a new object if (isset($object['id']) === true) { - return $mapper->updateFromArray($object['id'], $object, $updateVersion, patch: true); + return $mapper->updateFromArray($object['id'], $object, $updateVersion, patch: true, extend: $extend); } else { - return $mapper->createFromArray($object); + return $mapper->createFromArray(object: $object, extend: $extend); } } From bd3f8093ffa7d2dbd3aa0ed8852d6b7647e7e064 Mon Sep 17 00:00:00 2001 From: Remko Date: Fri, 17 Jan 2025 11:12:40 +0100 Subject: [PATCH 2/9] Lint --- src/entities/index.js | 2 +- src/entities/menu/index.js | 1 - src/entities/menu/menu.mock.ts | 10 +++++----- src/entities/menu/menu.types.ts | 14 +++++++------- src/entities/page/index.js | 1 - src/entities/page/page.mock.ts | 14 +++++++------- src/entities/page/page.types.ts | 14 +++++++------- src/sidebars/directory/DirectorySideBar.vue | 4 ++-- src/store/modules/menu.spec.ts | 2 +- src/store/modules/navigation.ts | 4 ++-- 10 files changed, 32 insertions(+), 34 deletions(-) diff --git a/src/entities/index.js b/src/entities/index.js index d810d83e..766dfe33 100644 --- a/src/entities/index.js +++ b/src/entities/index.js @@ -8,4 +8,4 @@ export * from './publication/index.js' export * from './theme/index.js' export * from './publicationType/index.js' export * from './page/index.js' -export * from './menu/index.js' \ No newline at end of file +export * from './menu/index.js' diff --git a/src/entities/menu/index.js b/src/entities/menu/index.js index 2b3a6dd1..b81d2cbe 100644 --- a/src/entities/menu/index.js +++ b/src/entities/menu/index.js @@ -1,4 +1,3 @@ export * from './menu.ts' export * from './menu.types.ts' export * from './menu.mock.ts' - diff --git a/src/entities/menu/menu.mock.ts b/src/entities/menu/menu.mock.ts index 80a2f270..ca31827e 100644 --- a/src/entities/menu/menu.mock.ts +++ b/src/entities/menu/menu.mock.ts @@ -13,16 +13,16 @@ export const mockMenuData = (): TMenu[] => [ position: 1, items: '[{"id": 1, "title": "Home", "url": "/"}]', createdAt: new Date().toISOString(), - updatedAt: new Date().toISOString() + updatedAt: new Date().toISOString(), }, // @ts-expect-error -- expected missing items { // partial data id: '2', - uuid: '123e4567-e89b-12d3-a456-426614174001', + uuid: '123e4567-e89b-12d3-a456-426614174001', name: 'Footer Menu', position: 2, createdAt: new Date().toISOString(), - updatedAt: new Date().toISOString() + updatedAt: new Date().toISOString(), }, { // invalid data id: '3', @@ -31,13 +31,13 @@ export const mockMenuData = (): TMenu[] => [ position: -1, items: '[]', createdAt: new Date().toISOString(), - updatedAt: new Date().toISOString() + updatedAt: new Date().toISOString(), }, ] /** * Creates an array of Menu instances from provided data or default mock data * @param data Optional array of menu data to convert to Menu instances - * @returns Array of Menu instances + * @return Array of Menu instances */ export const mockMenu = (data: TMenu[] = mockMenuData()): TMenu[] => data.map(item => new Menu(item)) diff --git a/src/entities/menu/menu.types.ts b/src/entities/menu/menu.types.ts index f9d13aac..a08a8947 100644 --- a/src/entities/menu/menu.types.ts +++ b/src/entities/menu/menu.types.ts @@ -3,11 +3,11 @@ * Represents the structure of a navigation menu with items and metadata */ export type TMenu = { - id: string // Unique identifier for the menu - uuid: string // UUID for the menu - name: string // Display name of the menu - position: number // Order/position of the menu in navigation - items: string // JSON string containing menu items and their structure - createdAt: string // Creation timestamp - updatedAt: string // Last update timestamp + id: string // Unique identifier for the menu + uuid: string // UUID for the menu + name: string // Display name of the menu + position: number // Order/position of the menu in navigation + items: string // JSON string containing menu items and their structure + createdAt: string // Creation timestamp + updatedAt: string // Last update timestamp } diff --git a/src/entities/page/index.js b/src/entities/page/index.js index b496e408..fb5cc473 100644 --- a/src/entities/page/index.js +++ b/src/entities/page/index.js @@ -1,4 +1,3 @@ export * from './page.ts' export * from './page.types.ts' export * from './page.mock.ts' - diff --git a/src/entities/page/page.mock.ts b/src/entities/page/page.mock.ts index 347adfc9..5e3bc074 100644 --- a/src/entities/page/page.mock.ts +++ b/src/entities/page/page.mock.ts @@ -10,34 +10,34 @@ export const mockPageData = (): TPage[] => [ id: '1', uuid: '123e4567-e89b-12d3-a456-426614174000', name: 'Test Page', - slug: 'test-page', + slug: 'test-page', contents: '{}', createdAt: new Date().toISOString(), - updatedAt: new Date().toISOString() + updatedAt: new Date().toISOString(), }, // @ts-expect-error -- expected missing contents { // partial data - id: '2', + id: '2', uuid: '123e4567-e89b-12d3-a456-426614174001', name: 'Another Page', slug: 'another-page', createdAt: new Date().toISOString(), - updatedAt: new Date().toISOString() + updatedAt: new Date().toISOString(), }, { // invalid data id: '3', - uuid: '123e4567-e89b-12d3-a456-426614174002', + uuid: '123e4567-e89b-12d3-a456-426614174002', name: '', slug: '', contents: '{}', createdAt: new Date().toISOString(), - updatedAt: new Date().toISOString() + updatedAt: new Date().toISOString(), }, ] /** * Creates an array of Page instances from provided data or default mock data * @param data Optional array of page data to convert to Page instances - * @returns Array of Page instances + * @return Array of Page instances */ export const mockPage = (data: TPage[] = mockPageData()): TPage[] => data.map(item => new Page(item)) diff --git a/src/entities/page/page.types.ts b/src/entities/page/page.types.ts index b005d72c..8e909ac8 100644 --- a/src/entities/page/page.types.ts +++ b/src/entities/page/page.types.ts @@ -3,11 +3,11 @@ * Represents the structure of a page with content and metadata */ export type TPage = { - id: string // Unique identifier for the page - uuid: string // Unique identifier for the page - name: string // Title/heading of the page - contents: string // JSON object, Main content/body of the page - can contain any type of content - slug: string // URL-friendly version of the title - createdAt: string // Creation timestamp - updatedAt: string // Last update timestamp + id: string // Unique identifier for the page + uuid: string // Unique identifier for the page + name: string // Title/heading of the page + contents: string // JSON object, Main content/body of the page - can contain any type of content + slug: string // URL-friendly version of the title + createdAt: string // Creation timestamp + updatedAt: string // Last update timestamp } diff --git a/src/sidebars/directory/DirectorySideBar.vue b/src/sidebars/directory/DirectorySideBar.vue index 849c394d..063d672a 100644 --- a/src/sidebars/directory/DirectorySideBar.vue +++ b/src/sidebars/directory/DirectorySideBar.vue @@ -350,7 +350,7 @@ export default { synchronizePublicationType(publicationType) { this.publicationTypeLoading = true fetch( - `/index.php/apps/opencatalogi/api/publication_types/synchronise`, + '/index.php/apps/opencatalogi/api/publication_types/synchronise', { method: 'POST', headers: { @@ -358,7 +358,7 @@ export default { }, body: JSON.stringify({ listed: publicationType.listed, - source: publicationType.source + source: publicationType.source, }), }, ) diff --git a/src/store/modules/menu.spec.ts b/src/store/modules/menu.spec.ts index 4e433315..38057061 100644 --- a/src/store/modules/menu.spec.ts +++ b/src/store/modules/menu.spec.ts @@ -38,7 +38,7 @@ describe('Menu Store', () => { expect(store.menuList[0]).toEqual(mockMenu()[0]) expect(store.menuList[0].validate().success).toBe(true) - // Test second menu item + // Test second menu item expect(store.menuList[1]).toBeInstanceOf(Menu) expect(store.menuList[1]).toEqual(mockMenu()[1]) expect(store.menuList[1].validate().success).toBe(true) diff --git a/src/store/modules/navigation.ts b/src/store/modules/navigation.ts index 46b78ef5..3c4b0495 100644 --- a/src/store/modules/navigation.ts +++ b/src/store/modules/navigation.ts @@ -39,10 +39,10 @@ export const useNavigationStore = defineStore('ui', { this.dialog = dialog console.log('Active dialog set to ' + dialog) }, - setTransferData(transferData: NavigationStoreState['transferData'] ) { + setTransferData(transferData: NavigationStoreState['transferData']) { this.transferData = transferData }, - getTransferData(): NavigationStoreState['transferData'] { + getTransferData(): NavigationStoreState['transferData'] { const tempData = this.transferData this.transferData = null return tempData From e623ca22482ce48deff5ece9be9079f40cbe0bbb Mon Sep 17 00:00:00 2001 From: Remko Date: Fri, 17 Jan 2025 11:18:42 +0100 Subject: [PATCH 3/9] Lint --- src/entities/listing/listing.ts | 1 + src/entities/listing/listing.types.ts | 1 + src/entities/menu/menu.mock.ts | 2 +- src/entities/menu/menu.ts | 4 ++-- src/entities/page/page.mock.ts | 4 ++-- src/entities/page/page.ts | 3 +-- 6 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/entities/listing/listing.ts b/src/entities/listing/listing.ts index 38246d66..97e0bd54 100644 --- a/src/entities/listing/listing.ts +++ b/src/entities/listing/listing.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { TOrganization } from '../organization' import { TListing } from './listing.types' import { SafeParseReturnType, z } from 'zod' diff --git a/src/entities/listing/listing.types.ts b/src/entities/listing/listing.types.ts index 01cc49ee..47eaa48f 100644 --- a/src/entities/listing/listing.types.ts +++ b/src/entities/listing/listing.types.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { TOrganization } from '../organization' export type TListing = { diff --git a/src/entities/menu/menu.mock.ts b/src/entities/menu/menu.mock.ts index ca31827e..97387bc1 100644 --- a/src/entities/menu/menu.mock.ts +++ b/src/entities/menu/menu.mock.ts @@ -38,6 +38,6 @@ export const mockMenuData = (): TMenu[] => [ /** * Creates an array of Menu instances from provided data or default mock data * @param data Optional array of menu data to convert to Menu instances - * @return Array of Menu instances + * @return {TMenu[]} Array of Menu instances */ export const mockMenu = (data: TMenu[] = mockMenuData()): TMenu[] => data.map(item => new Menu(item)) diff --git a/src/entities/menu/menu.ts b/src/entities/menu/menu.ts index 753c975f..e1c4dc56 100644 --- a/src/entities/menu/menu.ts +++ b/src/entities/menu/menu.ts @@ -26,7 +26,7 @@ export class Menu implements TMenu { /* istanbul ignore next */ // Jest does not recognize the code coverage of these 2 methods /** * Hydrates the menu object with provided data - * @param data Menu data to populate the instance + * @param {TMenu} data Menu data to populate the instance */ private hydrate(data: TMenu) { this.id = data?.id?.toString() || '' @@ -41,7 +41,7 @@ export class Menu implements TMenu { /* istanbul ignore next */ /** * Validates the menu data against a schema - * @return SafeParseReturnType containing validation result + * @return {SafeParseReturnType} SafeParseReturnType containing validation result */ public validate(): SafeParseReturnType { // Schema validation for menu data diff --git a/src/entities/page/page.mock.ts b/src/entities/page/page.mock.ts index 5e3bc074..559386c5 100644 --- a/src/entities/page/page.mock.ts +++ b/src/entities/page/page.mock.ts @@ -37,7 +37,7 @@ export const mockPageData = (): TPage[] => [ /** * Creates an array of Page instances from provided data or default mock data - * @param data Optional array of page data to convert to Page instances - * @return Array of Page instances + * @param {TPage[]} data Optional array of page data to convert to Page instances + * @return {TPage[]} Array of Page instances */ export const mockPage = (data: TPage[] = mockPageData()): TPage[] => data.map(item => new Page(item)) diff --git a/src/entities/page/page.ts b/src/entities/page/page.ts index a58e1d78..77f4523a 100644 --- a/src/entities/page/page.ts +++ b/src/entities/page/page.ts @@ -38,10 +38,9 @@ export class Page implements TPage { this.updatedAt = data?.updatedAt || '' } - /* istanbul ignore next */ /** * Validates the page data against a schema - * @return SafeParseReturnType containing validation result + * @return {SafeParseReturnType} SafeParseReturnType containing validation result */ public validate(): SafeParseReturnType { // Schema validation for page data From a97ad60c71a016bcc2c14c87257da8a694d94a29 Mon Sep 17 00:00:00 2001 From: Remko Date: Fri, 17 Jan 2025 11:26:37 +0100 Subject: [PATCH 4/9] Fixed menu modals and details --- src/modals/Modals.vue | 7 +- .../{DeleteMenu.vue => DeleteMenuModal.vue} | 20 +- src/modals/menu/EditMenu.vue | 144 ------------ src/modals/menu/EditMenuModal.vue | 210 ++++++++++++++++++ src/sidebars/search/SearchSideBar.vue | 8 +- src/store/modules/menu.ts | 39 ++++ src/store/modules/navigation.ts | 2 +- src/views/menus/MenuDetail.vue | 62 +++--- src/views/menus/MenuIndex.vue | 2 +- src/views/menus/MenuList.vue | 10 +- 10 files changed, 298 insertions(+), 206 deletions(-) rename src/modals/menu/{DeleteMenu.vue => DeleteMenuModal.vue} (82%) delete mode 100644 src/modals/menu/EditMenu.vue create mode 100644 src/modals/menu/EditMenuModal.vue diff --git a/src/modals/Modals.vue b/src/modals/Modals.vue index 94482e76..d5875062 100644 --- a/src/modals/Modals.vue +++ b/src/modals/Modals.vue @@ -27,6 +27,8 @@ import { publicationStore } from './../store/store.js' + + @@ -55,7 +57,8 @@ import AddThemeModal from './theme/AddThemeModal.vue' import EditThemeModal from './theme/EditThemeModal.vue' import AddPageModal from './page/AddPageModal.vue' import EditPageModal from './page/EditPageModal.vue' - +import EditMenuModal from './menu/EditMenuModal.vue' +import DeleteMenuModal from './menu/DeleteMenuModal.vue' /** * Component that contains all modals used in the application */ @@ -84,6 +87,8 @@ export default { EditThemeModal, AddPageModal, EditPageModal, + EditMenuModal, + DeleteMenuModal, }, } diff --git a/src/modals/menu/DeleteMenu.vue b/src/modals/menu/DeleteMenuModal.vue similarity index 82% rename from src/modals/menu/DeleteMenu.vue rename to src/modals/menu/DeleteMenuModal.vue index fb3ac308..aef416d3 100644 --- a/src/modals/menu/DeleteMenu.vue +++ b/src/modals/menu/DeleteMenuModal.vue @@ -3,23 +3,23 @@ import { menuStore, navigationStore } from '../../store/store.js' Ververs - + @@ -59,13 +59,7 @@ import { navigationStore, menuStore } from '../../store/store.js' Bewerken - - - Kopiëren - - + From bdacfc4b7ef96c479c6ac53f3b8b55a05f924e5b Mon Sep 17 00:00:00 2001 From: Remko Date: Fri, 17 Jan 2025 11:32:44 +0100 Subject: [PATCH 5/9] english to dutch --- src/modals/menu/EditMenuModal.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/modals/menu/EditMenuModal.vue b/src/modals/menu/EditMenuModal.vue index 28926119..305dcbeb 100644 --- a/src/modals/menu/EditMenuModal.vue +++ b/src/modals/menu/EditMenuModal.vue @@ -9,7 +9,7 @@ import { getTheme } from '../../services/getTheme.js' size="normal" :can-close="false"> -

Menu successfully modified

+

Menu succesvol bewerkt

{{ error }}

@@ -21,7 +21,7 @@ import { getTheme } from '../../services/getTheme.js' - {{ success ? 'Close' : 'Cancel' }} + {{ success ? 'Sluiten' : 'Annuleren' }} - {{ menuStore.menuItem?.id ? 'Save' : 'Add' }} + {{ menuStore.menuItem?.id ? 'Opslaan' : 'Toevoegen' }} From 991504c9ee8392be49179604855fdf9b3cb03f78 Mon Sep 17 00:00:00 2001 From: Remko Date: Fri, 17 Jan 2025 11:11:20 +0100 Subject: [PATCH 6/9] Backend fix --- lib/Service/ObjectService.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/Service/ObjectService.php b/lib/Service/ObjectService.php index d237e181..f6572ccb 100644 --- a/lib/Service/ObjectService.php +++ b/lib/Service/ObjectService.php @@ -310,7 +310,7 @@ public function getAllObjects(string $objectType, ?int $limit = null, ?int $offs * @return mixed The created or updated object. * @throws ContainerExceptionInterface|DoesNotExistException|MultipleObjectsReturnedException|NotFoundExceptionInterface */ - public function saveObject(string $objectType, array $object, bool $updateVersion = true): mixed + public function saveObject(string $objectType, array $object, array $extend = [], bool $updateVersion = true): mixed { if ($objectType === 'publication') { $object = $this->validationService->validatePublication($object); @@ -321,10 +321,10 @@ public function saveObject(string $objectType, array $object, bool $updateVersio // If the object has an id, update it; otherwise, create a new object if (isset($object['id']) === true) { - return $mapper->updateFromArray($object['id'], $object, $updateVersion, patch: true); + return $mapper->updateFromArray($object['id'], $object, $updateVersion, patch: true, extend: $extend); } else { - return $mapper->createFromArray($object); + return $mapper->createFromArray(object: $object, extend: $extend); } } From 16bc55ce6b34bf00e263fddf93801262ccaceea1 Mon Sep 17 00:00:00 2001 From: Remko Date: Mon, 20 Jan 2025 11:41:03 +0100 Subject: [PATCH 7/9] cleanup --- src/modals/menu/EditMenuModal.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modals/menu/EditMenuModal.vue b/src/modals/menu/EditMenuModal.vue index 305dcbeb..60a02756 100644 --- a/src/modals/menu/EditMenuModal.vue +++ b/src/modals/menu/EditMenuModal.vue @@ -153,7 +153,6 @@ export default { if (menuStore.menuItem?.id) { this.menuItem = { ...menuStore.menuItem, - content: menuStore.menuItem.content || '', } } }, From 0a07f2b3dbcfd1a826cd38d2e556c3f8b4175324 Mon Sep 17 00:00:00 2001 From: Remko Huisman <43807324+remko48@users.noreply.github.com> Date: Mon, 20 Jan 2025 12:46:38 +0100 Subject: [PATCH 8/9] Revert "feature/IBOC-107/nextcloud-menu" --- src/entities/index.js | 2 +- src/entities/listing/listing.ts | 1 - src/entities/listing/listing.types.ts | 1 - src/entities/menu/index.js | 1 + src/entities/menu/menu.mock.ts | 10 +- src/entities/menu/menu.ts | 4 +- src/entities/menu/menu.types.ts | 14 +- src/entities/page/index.js | 1 + src/entities/page/page.mock.ts | 16 +- src/entities/page/page.ts | 3 +- src/entities/page/page.types.ts | 14 +- src/modals/Modals.vue | 7 +- .../{DeleteMenuModal.vue => DeleteMenu.vue} | 20 +- src/modals/menu/EditMenu.vue | 144 ++++++++++++ src/modals/menu/EditMenuModal.vue | 209 ------------------ src/sidebars/directory/DirectorySideBar.vue | 4 +- src/sidebars/search/SearchSideBar.vue | 8 +- src/store/modules/menu.spec.ts | 2 +- src/store/modules/menu.ts | 39 ---- src/store/modules/navigation.ts | 6 +- src/views/menus/MenuDetail.vue | 62 +++--- src/views/menus/MenuIndex.vue | 2 +- src/views/menus/MenuList.vue | 10 +- 23 files changed, 245 insertions(+), 335 deletions(-) rename src/modals/menu/{DeleteMenuModal.vue => DeleteMenu.vue} (82%) create mode 100644 src/modals/menu/EditMenu.vue delete mode 100644 src/modals/menu/EditMenuModal.vue diff --git a/src/entities/index.js b/src/entities/index.js index 766dfe33..d810d83e 100644 --- a/src/entities/index.js +++ b/src/entities/index.js @@ -8,4 +8,4 @@ export * from './publication/index.js' export * from './theme/index.js' export * from './publicationType/index.js' export * from './page/index.js' -export * from './menu/index.js' +export * from './menu/index.js' \ No newline at end of file diff --git a/src/entities/listing/listing.ts b/src/entities/listing/listing.ts index 97e0bd54..38246d66 100644 --- a/src/entities/listing/listing.ts +++ b/src/entities/listing/listing.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ import { TOrganization } from '../organization' import { TListing } from './listing.types' import { SafeParseReturnType, z } from 'zod' diff --git a/src/entities/listing/listing.types.ts b/src/entities/listing/listing.types.ts index 47eaa48f..01cc49ee 100644 --- a/src/entities/listing/listing.types.ts +++ b/src/entities/listing/listing.types.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ import { TOrganization } from '../organization' export type TListing = { diff --git a/src/entities/menu/index.js b/src/entities/menu/index.js index b81d2cbe..2b3a6dd1 100644 --- a/src/entities/menu/index.js +++ b/src/entities/menu/index.js @@ -1,3 +1,4 @@ export * from './menu.ts' export * from './menu.types.ts' export * from './menu.mock.ts' + diff --git a/src/entities/menu/menu.mock.ts b/src/entities/menu/menu.mock.ts index 97387bc1..80a2f270 100644 --- a/src/entities/menu/menu.mock.ts +++ b/src/entities/menu/menu.mock.ts @@ -13,16 +13,16 @@ export const mockMenuData = (): TMenu[] => [ position: 1, items: '[{"id": 1, "title": "Home", "url": "/"}]', createdAt: new Date().toISOString(), - updatedAt: new Date().toISOString(), + updatedAt: new Date().toISOString() }, // @ts-expect-error -- expected missing items { // partial data id: '2', - uuid: '123e4567-e89b-12d3-a456-426614174001', + uuid: '123e4567-e89b-12d3-a456-426614174001', name: 'Footer Menu', position: 2, createdAt: new Date().toISOString(), - updatedAt: new Date().toISOString(), + updatedAt: new Date().toISOString() }, { // invalid data id: '3', @@ -31,13 +31,13 @@ export const mockMenuData = (): TMenu[] => [ position: -1, items: '[]', createdAt: new Date().toISOString(), - updatedAt: new Date().toISOString(), + updatedAt: new Date().toISOString() }, ] /** * Creates an array of Menu instances from provided data or default mock data * @param data Optional array of menu data to convert to Menu instances - * @return {TMenu[]} Array of Menu instances + * @returns Array of Menu instances */ export const mockMenu = (data: TMenu[] = mockMenuData()): TMenu[] => data.map(item => new Menu(item)) diff --git a/src/entities/menu/menu.ts b/src/entities/menu/menu.ts index e1c4dc56..753c975f 100644 --- a/src/entities/menu/menu.ts +++ b/src/entities/menu/menu.ts @@ -26,7 +26,7 @@ export class Menu implements TMenu { /* istanbul ignore next */ // Jest does not recognize the code coverage of these 2 methods /** * Hydrates the menu object with provided data - * @param {TMenu} data Menu data to populate the instance + * @param data Menu data to populate the instance */ private hydrate(data: TMenu) { this.id = data?.id?.toString() || '' @@ -41,7 +41,7 @@ export class Menu implements TMenu { /* istanbul ignore next */ /** * Validates the menu data against a schema - * @return {SafeParseReturnType} SafeParseReturnType containing validation result + * @return SafeParseReturnType containing validation result */ public validate(): SafeParseReturnType { // Schema validation for menu data diff --git a/src/entities/menu/menu.types.ts b/src/entities/menu/menu.types.ts index a08a8947..f9d13aac 100644 --- a/src/entities/menu/menu.types.ts +++ b/src/entities/menu/menu.types.ts @@ -3,11 +3,11 @@ * Represents the structure of a navigation menu with items and metadata */ export type TMenu = { - id: string // Unique identifier for the menu - uuid: string // UUID for the menu - name: string // Display name of the menu - position: number // Order/position of the menu in navigation - items: string // JSON string containing menu items and their structure - createdAt: string // Creation timestamp - updatedAt: string // Last update timestamp + id: string // Unique identifier for the menu + uuid: string // UUID for the menu + name: string // Display name of the menu + position: number // Order/position of the menu in navigation + items: string // JSON string containing menu items and their structure + createdAt: string // Creation timestamp + updatedAt: string // Last update timestamp } diff --git a/src/entities/page/index.js b/src/entities/page/index.js index fb5cc473..b496e408 100644 --- a/src/entities/page/index.js +++ b/src/entities/page/index.js @@ -1,3 +1,4 @@ export * from './page.ts' export * from './page.types.ts' export * from './page.mock.ts' + diff --git a/src/entities/page/page.mock.ts b/src/entities/page/page.mock.ts index 559386c5..347adfc9 100644 --- a/src/entities/page/page.mock.ts +++ b/src/entities/page/page.mock.ts @@ -10,34 +10,34 @@ export const mockPageData = (): TPage[] => [ id: '1', uuid: '123e4567-e89b-12d3-a456-426614174000', name: 'Test Page', - slug: 'test-page', + slug: 'test-page', contents: '{}', createdAt: new Date().toISOString(), - updatedAt: new Date().toISOString(), + updatedAt: new Date().toISOString() }, // @ts-expect-error -- expected missing contents { // partial data - id: '2', + id: '2', uuid: '123e4567-e89b-12d3-a456-426614174001', name: 'Another Page', slug: 'another-page', createdAt: new Date().toISOString(), - updatedAt: new Date().toISOString(), + updatedAt: new Date().toISOString() }, { // invalid data id: '3', - uuid: '123e4567-e89b-12d3-a456-426614174002', + uuid: '123e4567-e89b-12d3-a456-426614174002', name: '', slug: '', contents: '{}', createdAt: new Date().toISOString(), - updatedAt: new Date().toISOString(), + updatedAt: new Date().toISOString() }, ] /** * Creates an array of Page instances from provided data or default mock data - * @param {TPage[]} data Optional array of page data to convert to Page instances - * @return {TPage[]} Array of Page instances + * @param data Optional array of page data to convert to Page instances + * @returns Array of Page instances */ export const mockPage = (data: TPage[] = mockPageData()): TPage[] => data.map(item => new Page(item)) diff --git a/src/entities/page/page.ts b/src/entities/page/page.ts index 77f4523a..a58e1d78 100644 --- a/src/entities/page/page.ts +++ b/src/entities/page/page.ts @@ -38,9 +38,10 @@ export class Page implements TPage { this.updatedAt = data?.updatedAt || '' } + /* istanbul ignore next */ /** * Validates the page data against a schema - * @return {SafeParseReturnType} SafeParseReturnType containing validation result + * @return SafeParseReturnType containing validation result */ public validate(): SafeParseReturnType { // Schema validation for page data diff --git a/src/entities/page/page.types.ts b/src/entities/page/page.types.ts index 8e909ac8..b005d72c 100644 --- a/src/entities/page/page.types.ts +++ b/src/entities/page/page.types.ts @@ -3,11 +3,11 @@ * Represents the structure of a page with content and metadata */ export type TPage = { - id: string // Unique identifier for the page - uuid: string // Unique identifier for the page - name: string // Title/heading of the page - contents: string // JSON object, Main content/body of the page - can contain any type of content - slug: string // URL-friendly version of the title - createdAt: string // Creation timestamp - updatedAt: string // Last update timestamp + id: string // Unique identifier for the page + uuid: string // Unique identifier for the page + name: string // Title/heading of the page + contents: string // JSON object, Main content/body of the page - can contain any type of content + slug: string // URL-friendly version of the title + createdAt: string // Creation timestamp + updatedAt: string // Last update timestamp } diff --git a/src/modals/Modals.vue b/src/modals/Modals.vue index d5875062..94482e76 100644 --- a/src/modals/Modals.vue +++ b/src/modals/Modals.vue @@ -27,8 +27,6 @@ import { publicationStore } from './../store/store.js' - - @@ -57,8 +55,7 @@ import AddThemeModal from './theme/AddThemeModal.vue' import EditThemeModal from './theme/EditThemeModal.vue' import AddPageModal from './page/AddPageModal.vue' import EditPageModal from './page/EditPageModal.vue' -import EditMenuModal from './menu/EditMenuModal.vue' -import DeleteMenuModal from './menu/DeleteMenuModal.vue' + /** * Component that contains all modals used in the application */ @@ -87,8 +84,6 @@ export default { EditThemeModal, AddPageModal, EditPageModal, - EditMenuModal, - DeleteMenuModal, }, } diff --git a/src/modals/menu/DeleteMenuModal.vue b/src/modals/menu/DeleteMenu.vue similarity index 82% rename from src/modals/menu/DeleteMenuModal.vue rename to src/modals/menu/DeleteMenu.vue index aef416d3..fb3ac308 100644 --- a/src/modals/menu/DeleteMenuModal.vue +++ b/src/modals/menu/DeleteMenu.vue @@ -3,23 +3,23 @@ import { menuStore, navigationStore } from '../../store/store.js' Ververs
- + @@ -59,7 +59,13 @@ import { navigationStore, menuStore } from '../../store/store.js' Bewerken - + + + Kopiëren + + From 6b14d21af779b039423c0e2a5dde21b96d37abd7 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Tue, 21 Jan 2025 10:24:19 +0100 Subject: [PATCH 9/9] Fix breaking issue --- lib/Service/DirectoryService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Service/DirectoryService.php b/lib/Service/DirectoryService.php index 5dd45779..a039372c 100644 --- a/lib/Service/DirectoryService.php +++ b/lib/Service/DirectoryService.php @@ -295,7 +295,7 @@ public function updateListing(array $newListing, array $oldListing): array{ } // Do not update version, because we copy the version from the source - $newListing = $this->objectService->saveObject('listing', $oldListing, false); + $newListing = $this->objectService->saveObject('listing', $oldListing, updateVersion: false); return $newListing instanceof Listing === true ? $newListing->jsonSerialize() : $newListing; }