diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2020-12-19 21:41:00 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2020-12-19 21:41:00 +0900 |
| commit | cdc07945af29a4ec3f7e783c26aa1cd0c1e444e8 (patch) | |
| tree | 349271f404dbf2dd54785a4b684f6743e1f13812 /src | |
| parent | pageの選択肢が動作していない問題を修正 (diff) | |
| download | sharkey-cdc07945af29a4ec3f7e783c26aa1cd0c1e444e8.tar.gz sharkey-cdc07945af29a4ec3f7e783c26aa1cd0c1e444e8.tar.bz2 sharkey-cdc07945af29a4ec3f7e783c26aa1cd0c1e444e8.zip | |
Pageの複製を実装
Diffstat (limited to 'src')
| -rw-r--r-- | src/client/pages/page-editor/page-editor.vue | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/src/client/pages/page-editor/page-editor.vue b/src/client/pages/page-editor/page-editor.vue index d33dd1b7fe..f2f6589ab0 100644 --- a/src/client/pages/page-editor/page-editor.vue +++ b/src/client/pages/page-editor/page-editor.vue @@ -5,6 +5,7 @@ <div class="buttons" style="margin: 16px 0;"> <MkButton inline @click="save" primary class="save"><Fa :icon="faSave"/> {{ $t('save') }}</MkButton> + <MkButton inline @click="duplicate" class="duplicate" v-if="pageId"><Fa :icon="faCopy"/> {{ $t('duplicate') }}</MkButton> <MkButton inline @click="del" class="delete" v-if="pageId"><Fa :icon="faTrashAlt"/> {{ $t('delete') }}</MkButton> </div> @@ -93,7 +94,7 @@ import 'prismjs/components/prism-clike'; import 'prismjs/components/prism-javascript'; import 'prismjs/themes/prism-okaidia.css'; import 'vue-prism-editor/dist/prismeditor.min.css'; -import { faICursor, faPlus, faMagic, faCog, faCode, faExternalLinkSquareAlt, faPencilAlt } from '@fortawesome/free-solid-svg-icons'; +import { faICursor, faPlus, faMagic, faCog, faCode, faExternalLinkSquareAlt, faPencilAlt, faCopy } from '@fortawesome/free-solid-svg-icons'; import { faSave, faStickyNote, faTrashAlt } from '@fortawesome/free-regular-svg-icons'; import { v4 as uuid } from 'uuid'; import XVariable from './page-editor.script-block.vue'; @@ -159,7 +160,7 @@ export default defineComponent({ hpml: null, script: '', url, - faPlus, faICursor, faSave, faStickyNote, faMagic, faCog, faTrashAlt, faExternalLinkSquareAlt, faCode + faPlus, faICursor, faSave, faStickyNote, faMagic, faCog, faTrashAlt, faExternalLinkSquareAlt, faCode, faCopy }; }, @@ -231,8 +232,8 @@ export default defineComponent({ }, methods: { - save() { - const options = { + getSaveOptions() { + return { title: this.title.trim(), name: this.name.trim(), summary: this.summary, @@ -244,6 +245,10 @@ export default defineComponent({ variables: this.variables, eyeCatchingImageId: this.eyeCatchingImageId, }; + }, + + save() { + const options = this.getSaveOptions(); const onError = err => { if (err.id == '3d81ceae-475f-4600-b2a8-2bc116157532') { @@ -305,6 +310,20 @@ export default defineComponent({ }); }, + duplicate() { + this.title = this.title + ' - copy'; + this.name = this.name + '-copy'; + os.api('pages/create', this.getSaveOptions()).then(page => { + this.pageId = page.id; + this.currentName = this.name.trim(); + os.dialog({ + type: 'success', + text: this.$t('_pages.created') + }); + this.$router.push(`/pages/edit/${this.pageId}`); + }); + }, + async add() { const { canceled, result: type } = await os.dialog({ type: null, |