diff --git a/client/web/compose/src/components/Admin/EditorToolbar.vue b/client/web/compose/src/components/Admin/EditorToolbar.vue index 273bd7a89..9cb317ae5 100644 --- a/client/web/compose/src/components/Admin/EditorToolbar.vue +++ b/client/web/compose/src/components/Admin/EditorToolbar.vue @@ -51,13 +51,14 @@ - {{ $t('label.clone') }} + {{ $t('label.saveAsCopy') }} diff --git a/client/web/compose/src/views/Admin/Pages/Builder.vue b/client/web/compose/src/views/Admin/Pages/Builder.vue index ac755ebef..0c3d3ca4a 100644 --- a/client/web/compose/src/views/Admin/Pages/Builder.vue +++ b/client/web/compose/src/views/Admin/Pages/Builder.vue @@ -151,10 +151,12 @@ :back-link="{name: 'admin.pages'}" :hide-delete="hideDelete" :hide-save="!page.canUpdatePage" - hide-clone + :disable-clone="disableClone" + :clone-tooltip="cloneTooltip" @save="handleSave()" @delete="handleDeletePage" @saveAndClose="handleSave({ closeOnSuccess: true })" + @clone="handleClone()" > { + this.$router.push({ name: 'admin.pages.builder', params: { pageID } }) + }) + .catch(this.toastErrorHandler(this.$t('notification:page.cloneFailed'))) + }, }, } diff --git a/client/web/compose/src/views/Admin/Pages/Edit.vue b/client/web/compose/src/views/Admin/Pages/Edit.vue index 98e886b53..2f2bebc91 100644 --- a/client/web/compose/src/views/Admin/Pages/Edit.vue +++ b/client/web/compose/src/views/Admin/Pages/Edit.vue @@ -132,9 +132,9 @@ { + this.page = new compose.Page(page) + const { pageID = '' } = page + this.$router.push({ name: 'admin.pages.edit', params: { pageID } }) + }) + .catch(this.toastErrorHandler(this.$t('notification:page.cloneFailed'))) + }, }, } diff --git a/locale/en/corteza-webapp-compose/general.yaml b/locale/en/corteza-webapp-compose/general.yaml index 8f4b94bdc..bac903dfc 100644 --- a/locale/en/corteza-webapp-compose/general.yaml +++ b/locale/en/corteza-webapp-compose/general.yaml @@ -63,6 +63,7 @@ label: sensitive: Sensitive save: Save saveAndClose: Save and close + saveAsCopy: Save as copy status: Status timeHour: '{{t}}h' timeMinute: '{{t}}min' diff --git a/locale/en/corteza-webapp-compose/notification.yaml b/locale/en/corteza-webapp-compose/notification.yaml index 811895f78..dc33408cc 100644 --- a/locale/en/corteza-webapp-compose/notification.yaml +++ b/locale/en/corteza-webapp-compose/notification.yaml @@ -68,6 +68,7 @@ namespace: importFailed: Namespace failed to import page: createFailed: Could not create a page + cloneFailed: Could not clone this page deleteFailed: Could not delete this page loadFailed: Could not load the page tree noPages: No pages found diff --git a/locale/en/corteza-webapp-compose/page.yaml b/locale/en/corteza-webapp-compose/page.yaml index 09dcf1dd0..d2379ab02 100644 --- a/locale/en/corteza-webapp-compose/page.yaml +++ b/locale/en/corteza-webapp-compose/page.yaml @@ -12,6 +12,7 @@ block: title: Add new block invalid-handle-characters: Should be at least 2 characters long and start with a letter. Can contain only letters, numbers, dashes, underscores and dots changeBlock: Change existing block +copyOf: "Copy of {{title}}" build: addBlock: Add block selectBlockTitle: Select type of the new block @@ -47,6 +48,7 @@ tooltip: edit: page: Edit page block: Edit block + saveAsCopy: Cannot duplicate record page view: View visible: Visible delete: