| 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>
 |