| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 | <template lang='pug'>  v-dialog(    v-model='isShown'    max-width='550'    persistent    overlay-color='blue-grey darken-4'    overlay-opacity='.7'    )    v-card      .dialog-header.is-short.is-dark        v-icon.mr-2(color='white') mdi-lightning-bolt        span {{$t('common:page.convert')}}      v-card-text.pt-5        i18next.body-2(path='common:page.convertTitle', tag='div')          span.blue-grey--text.text--darken-2(place='title') {{pageTitle}}        v-select.mt-5(          :items=`[            { value: 'markdown', text: 'Markdown' },            { value: 'ckeditor', text: 'Visual Editor' },            { value: 'code', text: 'Raw HTML' }          ]`          outlined          dense          hide-details          v-model='newEditor'        )        .caption.mt-5 {{$t('common:page.convertSubtitle')}}      v-card-chin        v-spacer        v-btn(text, @click='discard', :disabled='loading') {{$t('common:actions.cancel')}}        v-btn.px-4(color='grey darken-3', @click='convertPage', :loading='loading').white--text {{$t('common:actions.convert')}}</template><script>import _ from 'lodash'import { get } from 'vuex-pathify'import gql from 'graphql-tag'export default {  props: {    value: {      type: Boolean,      default: false    }  },  data() {    return {      loading: false,      newEditor: ''    }  },  computed: {    isShown: {      get() { return this.value },      set(val) { this.$emit('input', val) }    },    pageTitle: get('page/title'),    pagePath: get('page/path'),    pageLocale: get('page/locale'),    pageId: get('page/id'),    pageEditor: get('page/editor')  },  mounted () {    this.newEditor = this.pageEditor  },  methods: {    discard() {      this.isShown = false    },    async convertPage() {      this.loading = true      this.$store.commit(`loadingStart`, 'page-convert')      this.$nextTick(async () => {        try {          const resp = await this.$apollo.mutate({            mutation: gql`              mutation (                $id: Int!                $editor: String!                ) {                  pages {                    convert(                      id: $id                      editor: $editor                    ) {                      responseResult {                        succeeded                        errorCode                        slug                        message                      }                    }                  }              }            `,            variables: {              id: this.pageId,              editor: this.newEditor            }          })          if (_.get(resp, 'data.pages.convert.responseResult.succeeded', false)) {            this.isShown = false            window.location.assign(`/e/${this.pageLocale}/${this.pagePath}`)          } else {            throw new Error(_.get(resp, 'data.pages.convert.responseResult.message', this.$t('common:error.unexpected')))          }        } catch (err) {          this.$store.commit('pushGraphError', err)        }        this.$store.commit(`loadingStop`, 'page-convert')        this.loading = false      })    }  }}</script><style lang='scss'></style>
 |