123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- <template lang="pug">
- v-dialog(
- v-model='isShown'
- max-width='700'
- )
- v-card
- .dialog-header.is-short.is-indigo
- v-icon.mr-2(color='white') mdi-alert
- span {{$t('editor:conflict.title')}}
- v-card-text.pt-4
- i18next.body-2(tag='div', path='editor:conflict.infoGeneric')
- strong(place='authorName') {{latest.authorName}}
- span(place='date', :title='$options.filters.moment(latest.updatedAt, `LLL`)') {{ latest.updatedAt | moment('from') }}.
- v-btn.mt-2(outlined, color='indigo', small, :href='`/` + latest.locale + `/` + latest.path', target='_blank')
- v-icon(left) mdi-open-in-new
- span {{$t('editor:conflict.viewLatestVersion')}}
- .body-2.mt-5: strong {{$t('editor:conflict.whatToDo')}}
- .body-2.mt-1 #[v-icon(color='indigo') mdi-alpha-l-box] {{$t('editor:conflict.whatToDoLocal')}}
- .body-2.mt-1 #[v-icon(color='indigo') mdi-alpha-r-box] {{$t('editor:conflict.whatToDoRemote')}}
- v-card-chin
- v-spacer
- v-btn(text, @click='close') {{$t('common:actions.cancel')}}
- v-btn.px-4(color='indigo', @click='useLocal', dark, :title='$t(`editor:conflict.useLocalHint`)')
- v-icon(left) mdi-alpha-l-box
- span {{$t('editor:conflict.useLocal')}}
- v-dialog(
- v-model='isRemoteConfirmDiagShown'
- width='500'
- )
- template(v-slot:activator='{ on }')
- v-btn.ml-3(color='indigo', dark, v-on='on', :title='$t(`editor:conflict.useRemoteHint`)')
- v-icon(left) mdi-alpha-r-box
- span {{$t('editor:conflict.useRemote')}}
- v-card
- .dialog-header.is-short.is-indigo
- v-icon.mr-3(color='white') mdi-alpha-r-box
- span {{$t('editor:conflict.overwrite.title')}}
- v-card-text.pa-4
- i18next.body-2(tag='div', path='editor:conflict.overwrite.description')
- strong(place='refEditsLost') {{$t('editor:conflict.overwrite.editsLost')}}
- v-card-chin
- v-spacer
- v-btn(outlined, color='indigo', @click='isRemoteConfirmDiagShown = false')
- v-icon(left) mdi-close
- span {{$t('common:actions.cancel')}}
- v-btn(@click='useRemote', color='indigo', dark)
- v-icon(left) mdi-check
- span {{$t('common:actions.confirm')}}
- </template>
- <script>
- import _ from 'lodash'
- import gql from 'graphql-tag'
- export default {
- props: {
- value: {
- type: Boolean,
- default: false
- }
- },
- data() {
- return {
- latest: {
- updatedAt: '',
- authorName: '',
- content: '',
- locale: '',
- path: ''
- },
- isRemoteConfirmDiagShown: false
- }
- },
- computed: {
- isShown: {
- get() { return this.value },
- set(val) { this.$emit('input', val) }
- }
- },
- methods: {
- close () {
- this.isShown = false
- },
- useLocal () {
- this.$store.set('editor/checkoutDateActive', this.latest.updatedAt)
- this.$root.$emit('resetEditorConflict')
- this.close()
- },
- useRemote () {
- this.$store.set('editor/checkoutDateActive', this.latest.updatedAt)
- this.$store.set('editor/content', this.latest.content)
- this.$root.$emit('overwriteEditorContent')
- this.$root.$emit('resetEditorConflict')
- this.close()
- }
- },
- async mounted () {
- let resp = await this.$apollo.query({
- query: gql`
- query ($id: Int!) {
- pages {
- conflictLatest(id: $id) {
- authorName
- locale
- path
- content
- updatedAt
- }
- }
- }
- `,
- fetchPolicy: 'network-only',
- variables: {
- id: this.$store.get('page/id')
- }
- })
- resp = _.get(resp, 'data.pages.conflictLatest', false)
- if (!resp) {
- return this.$store.commit('showNotification', {
- message: 'Failed to fetch latest version.',
- style: 'warning',
- icon: 'warning'
- })
- }
- this.latest = resp
- }
- }
- </script>
|