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: