Pageの複製を実装
This commit is contained in:
		
							parent
							
								
									136a087ae7
								
							
						
					
					
						commit
						cdc07945af
					
				
					 2 changed files with 24 additions and 4 deletions
				
			
		|  | @ -664,6 +664,7 @@ developer: "開発者" | ||||||
| makeExplorable: "アカウントを見つけやすくする" | makeExplorable: "アカウントを見つけやすくする" | ||||||
| makeExplorableDescription: "オフにすると、「みつける」にアカウントが載らなくなります。" | makeExplorableDescription: "オフにすると、「みつける」にアカウントが載らなくなります。" | ||||||
| showGapBetweenNotesInTimeline: "タイムラインのノートを離して表示" | showGapBetweenNotesInTimeline: "タイムラインのノートを離して表示" | ||||||
|  | duplicate: "複製" | ||||||
| 
 | 
 | ||||||
| _aboutMisskey: | _aboutMisskey: | ||||||
|   about: "Misskeyはsyuiloによって2014年から開発されている、オープンソースのソフトウェアです。" |   about: "Misskeyはsyuiloによって2014年から開発されている、オープンソースのソフトウェアです。" | ||||||
|  |  | ||||||
|  | @ -5,6 +5,7 @@ | ||||||
| 
 | 
 | ||||||
| 		<div class="buttons" style="margin: 16px 0;"> | 		<div class="buttons" style="margin: 16px 0;"> | ||||||
| 			<MkButton inline @click="save" primary class="save"><Fa :icon="faSave"/> {{ $t('save') }}</MkButton> | 			<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> | 			<MkButton inline @click="del" class="delete" v-if="pageId"><Fa :icon="faTrashAlt"/> {{ $t('delete') }}</MkButton> | ||||||
| 		</div> | 		</div> | ||||||
| 
 | 
 | ||||||
|  | @ -93,7 +94,7 @@ import 'prismjs/components/prism-clike'; | ||||||
| import 'prismjs/components/prism-javascript'; | import 'prismjs/components/prism-javascript'; | ||||||
| import 'prismjs/themes/prism-okaidia.css'; | import 'prismjs/themes/prism-okaidia.css'; | ||||||
| import 'vue-prism-editor/dist/prismeditor.min.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 { faSave, faStickyNote, faTrashAlt } from '@fortawesome/free-regular-svg-icons'; | ||||||
| import { v4 as uuid } from 'uuid'; | import { v4 as uuid } from 'uuid'; | ||||||
| import XVariable from './page-editor.script-block.vue'; | import XVariable from './page-editor.script-block.vue'; | ||||||
|  | @ -159,7 +160,7 @@ export default defineComponent({ | ||||||
| 			hpml: null, | 			hpml: null, | ||||||
| 			script: '', | 			script: '', | ||||||
| 			url, | 			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: { | 	methods: { | ||||||
| 		save() { | 		getSaveOptions() { | ||||||
| 			const options = { | 			return { | ||||||
| 				title: this.title.trim(), | 				title: this.title.trim(), | ||||||
| 				name: this.name.trim(), | 				name: this.name.trim(), | ||||||
| 				summary: this.summary, | 				summary: this.summary, | ||||||
|  | @ -244,6 +245,10 @@ export default defineComponent({ | ||||||
| 				variables: this.variables, | 				variables: this.variables, | ||||||
| 				eyeCatchingImageId: this.eyeCatchingImageId, | 				eyeCatchingImageId: this.eyeCatchingImageId, | ||||||
| 			}; | 			}; | ||||||
|  | 		}, | ||||||
|  | 
 | ||||||
|  | 		save() { | ||||||
|  | 			const options = this.getSaveOptions(); | ||||||
| 
 | 
 | ||||||
| 			const onError = err => { | 			const onError = err => { | ||||||
| 				if (err.id == '3d81ceae-475f-4600-b2a8-2bc116157532') { | 				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() { | 		async add() { | ||||||
| 			const { canceled, result: type } = await os.dialog({ | 			const { canceled, result: type } = await os.dialog({ | ||||||
| 				type: null, | 				type: null, | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue