| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | <template lang="pug">  transition(:duration="400")    .modal(v-show='isShown', v-cloak)      transition(name='modal-background')        .modal-background(v-show='isShown')      .modal-container        transition(name='modal-content')          .modal-content(v-show='isShown')            header.is-indigo {{ $t('modal.movepagetitle') }}            section              label.label {{ $t('modal.movepagepath') }}              p.control.is-fullwidth(v-bind:class='{ "is-loading": isLoading }')                input.input(type='text', v-bind:placeholder='$t("modal.movepageplaceholder")', v-model='movePath', ref='movePageInput', @keyup.enter='move', @keyup.esc='cancel')                span.help.is-red(v-show='isInvalid') {{ $t('modal.movepageinvalid') }}                span.note {{ $t('modal.movepagewarning') }}            footer              a.button.is-grey.is-outlined(v-on:click='cancel') {{ $t('modal.discard') }}              a.button.is-indigo(v-on:click='move') {{ $t('modal.move') }}</template><script>  export default {    name: 'modal-move-page',    props: ['currentPath'],    data () {      return {        movePath: '',        isLoading: false,        isInvalid: false      }    },    computed: {      isShown () {        if(this.$store.state.modalMovePage.shown) {          this.movePath = this.currentPath          this.makeSelection()        }        return this.$store.state.modalMovePage.shown      }    },    methods: {      makeSelection() {        let self = this;        self._.delay(() => {          let startPos = (self._.includes(self.currentPath, '/')) ? self._.lastIndexOf(self.movePath, '/') + 1 : 0          self.$helpers.form.setInputSelection(self.$refs.movePageInput, startPos, self.movePath.length)        }, 100)      },      cancel() {        this.$store.dispatch('modalMovePage/close')      },      move () {        this.isInvalid = false        let newDocPath = this.$helpers.pages.makeSafePath(this.movePath)        if (this._.isEmpty(newDocPath) || newDocPath === this.currentPath || newDocPath === 'home') {          this.isInvalid = true        } else {          this.isLoading = true          this.$http.put(window.location.href, {            move: newDocPath          }).then(resp => {            return resp.json()          }).then(resp => {            if (resp.ok) {              window.location.assign('/' + newDocPath)            } else {              this.loading = false              self.$store.dispatch('alert', {                style: 'red',                icon: 'ui-2_square-remove-09',                msg: resp.msg              })            }          }).catch(err => {            this.loading = false            self.$store.dispatch('alert', {              style: 'red',              icon: 'ui-2_square-remove-09',              msg: 'Error: ' + err.body.msg            })          })        }      }    }  }</script>
 |