refactor: modal-delete-user -> vue component + localizations

pull/119/head
NGPixel 8 years ago
parent fa098f8ece
commit 8239adfe7b

@ -60,6 +60,7 @@ import editorVideoComponent from './components/editor-video.vue'
import loadingSpinnerComponent from './components/loading-spinner.vue'
import modalCreatePageComponent from './components/modal-create-page.vue'
import modalCreateUserComponent from './components/modal-create-user.vue'
import modalDeleteUserComponent from './components/modal-delete-user.vue'
import modalDiscardPageComponent from './components/modal-discard-page.vue'
import modalMovePageComponent from './components/modal-move-page.vue'
import pageLoaderComponent from './components/page-loader.vue'
@ -162,6 +163,7 @@ $(() => {
loadingSpinner: loadingSpinnerComponent,
modalCreatePage: modalCreatePageComponent,
modalCreateUser: modalCreateUserComponent,
modalDeleteUser: modalDeleteUserComponent,
modalDiscardPage: modalDiscardPageComponent,
modalMovePage: modalMovePageComponent,
pageLoader: pageLoaderComponent,

@ -7,13 +7,13 @@
transition(name='modal-content')
.modal-content(v-show='isShown')
header.is-blue
span Copy link to this section
span {{ $t('modal.anchortitle') }}
section
p.control.is-fullwidth
input.input(type='text', ref='anchorURLinput', v-model='anchorURL')
footer
a.button.is-grey.is-outlined(v-on:click='cancel') Discard
a.button.is-blue(v-clipboard='anchorURL', @success="clipboardSuccess", @error="clipboardError") Copy to Clipboard
a.button.is-grey.is-outlined(v-on:click='cancel') {{ $t('modal.discard') }}
a.button.is-blue(v-clipboard='anchorURL', @success="clipboardSuccess", @error="clipboardError") {{ $t('modal.copyclipboard') }}
</template>
<script>
@ -38,7 +38,7 @@
this.$store.dispatch('alert', {
style: 'blue',
icon: 'clipboard',
msg: 'The URL has been copied to your clipboard.'
msg: this.$t('modal.anchorsuccess')
})
this.$store.dispatch('anchorClose')
},
@ -46,7 +46,7 @@
this.$store.dispatch('alert', {
style: 'red',
icon: 'clipboard',
msg: 'Clipboard copy failed. Copy the URL manually.'
msg: this.$t('modal.anchorerror')
})
this.$refs.anchorURLinput.select()
}

@ -6,15 +6,15 @@
.modal-container
transition(name='modal-content')
.modal-content(v-show='isShown')
header.is-light-blue Create New Document
header.is-light-blue {{ $t('modal.createpagetitle') }}
section
label.label Enter the new document path:
label.label {{ $t('modal.createpagepath') }}
p.control.is-fullwidth(v-bind:class='{ "is-loading": isLoading }')
input.input(type='text', placeholder='page-name', v-model='userPath', ref='createPageInput', @keyup.enter='create', @keyup.esc='cancel')
span.help.is-red(v-show='isInvalid') This document path is invalid!
span.help.is-red(v-show='isInvalid') {{ $t('modal.createpageinvalid') }}
footer
a.button.is-grey.is-outlined(v-on:click='cancel') Discard
a.button.is-light-blue(v-on:click='create') Create
a.button.is-grey.is-outlined(v-on:click='cancel') {{ $t('modal.discard') }}
a.button.is-light-blue(v-on:click='create') {{ $t('modal.create') }}
</template>
<script>

@ -0,0 +1,65 @@
<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-red
span {{ $t('modal.deleteusertitle') }}
p.modal-notify(v-bind:class='{ "is-active": isLoading }'): i
section
span {{ $t('modal.deleteuserwarning') }}
footer
a.button.is-grey.is-outlined(v-on:click='cancel') {{ $t('modal.abort') }}
a.button.is-red(v-on:click='deleteUser') {{ $t('modal.delete') }}
</template>
<script>
export default {
name: 'modal-delete-user',
props: ['currentUser'],
data () {
return {
isLoading: false
}
},
computed: {
isShown () {
return this.$store.state.modalDeleteUser.shown
}
},
methods: {
cancel: function () {
this.isLoading = false
this.$store.dispatch('modalDeleteUser/close')
},
discard: function () {
let self = this
this.isLoading = true
this.$http.delete('/admin/users/' + this.currentUser).then(resp => {
return resp.json()
}).then(resp => {
if (resp.ok) {
window.location.assign('/admin/users')
} else {
self.isLoading = false
self.$store.dispatch('alert', {
style: 'red',
icon: 'square-cross',
msg: resp.msg
})
}
}).catch(err => {
self.isLoading = false
self.$store.dispatch('alert', {
style: 'red',
icon: 'square-cross',
msg: 'Error: ' + err.body.msg
})
})
}
}
}
</script>

@ -6,13 +6,13 @@
.modal-container
transition(name='modal-content')
.modal-content(v-show='isShown')
header.is-orange Discard?
header.is-orange {{ $t('modal.discardpagetitle') }}
section
span(v-if='mode === "create"') Are you sure you want to leave this page and loose anything you wrote so far?
span(v-else) Are you sure you want to leave this page and loose any modifications?
span(v-if='mode === "create"') {{ $t('modal.discardpagecreate') }}
span(v-else) {{ $t('modal.discardpageedit') }}
footer
a.button.is-grey.is-outlined(v-on:click='stay') Stay on page
a.button.is-orange(v-on:click='discard') Discard
a.button.is-grey.is-outlined(v-on:click='stay') {{ $t('modal.discardpagestay') }}
a.button.is-orange(v-on:click='discard') {{ $t('modal.discard') }}
</template>
<script>

@ -6,16 +6,16 @@
.modal-container
transition(name='modal-content')
.modal-content(v-show='isShown')
header.is-indigo Move document
header.is-indigo {{ $t('modal.movepagetitle') }}
section
label.label Enter the new document path:
label.label {{ $t('modal.movepagepath') }}
p.control.is-fullwidth(v-bind:class='{ "is-loading": isLoading }')
input.input(type='text', placeholder='page-name', v-model='movePath', ref='movePageInput', @keyup.enter='move', @keyup.esc='cancel')
span.help.is-red(v-show='isInvalid') This document path is invalid or not allowed!
span.note Note that moving or renaming documents can lead to broken links. Make sure to edit any page that links to this document afterwards!
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') Discard
a.button.is-indigo(v-on:click='move') Move
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>

@ -1,43 +0,0 @@
'use strict'
/* global usrData */
'use strict'
import $ from 'jquery'
import Vue from 'vue'
// Vue Delete User instance
module.exports = (alerts) => {
let vueDeleteUser = new Vue({
el: '#modal-admin-users-delete',
data: {
loading: false
},
methods: {
open: (ev) => {
$('#modal-admin-users-delete').addClass('is-active')
},
cancel: (ev) => {
$('#modal-admin-users-delete').removeClass('is-active')
},
deleteUser: (ev) => {
vueDeleteUser.loading = true
$.ajax('/admin/users/' + usrData._id, {
dataType: 'json',
method: 'DELETE'
}).then((rData, rStatus, rXHR) => {
vueDeleteUser.loading = false
vueDeleteUser.cancel()
window.location.assign('/admin/users')
}, (rXHR, rStatus, err) => {
vueDeleteUser.loading = false
alerts.pushError('Error', rXHR.responseJSON.msg)
})
}
}
})
$('.btn-deluser-prompt').on('click', vueDeleteUser.open)
}

@ -8,6 +8,7 @@ import editorCodeblock from './modules/editor-codeblock'
import editorVideo from './modules/editor-video'
import modalCreatePage from './modules/modal-create-page'
import modalCreateUser from './modules/modal-create-user'
import modalDeleteUser from './modules/modal-delete-user'
import modalDiscardPage from './modules/modal-discard-page'
import modalMovePage from './modules/modal-move-page'
import pageLoader from './modules/page-loader'
@ -34,6 +35,7 @@ export default new Vuex.Store({
editorVideo,
modalCreatePage,
modalCreateUser,
modalDeleteUser,
modalDiscardPage,
modalMovePage,
pageLoader

@ -0,0 +1,16 @@
'use strict'
export default {
namespaced: true,
state: {
shown: false
},
getters: {},
mutations: {
shownChange: (state, shownState) => { state.shown = shownState }
},
actions: {
open({ commit }) { commit('shownChange', true) },
close({ commit }) { commit('shownChange', false) }
}
}

@ -15,6 +15,31 @@
"videoanymp4file": "Any standard MP4 file",
"videosuccess": "The video code has been inserted."
},
"modal": {
"abort": "Abort",
"anchortitle": "Copy link to this section",
"anchorsuccess": "The URL has been copied to your clipboard.",
"anchorerror": "Clipboard copy failed. Copy the URL manually.",
"copyclipboard": "Copy to Clipboard",
"create": "Create",
"createpagetitle": "Create New Page",
"createpagepath": "Enter the new page path:",
"createpageinvalid": "This page path is invalid!",
"discard": "Discard",
"discardpagestay": "Stay on page",
"discardpagetitle": "Discard?",
"discardpagecreate": "Are you sure you want to leave this page and loose anything you wrote so far?",
"discardpageedit": "Are you sure you want to leave this page and loose any modifications?",
"delete": "Delete",
"deleteusertitle": "Delete User Account?",
"deleteuserwarning": "Are you sure you want to delete this user account? This action cannot be undone!",
"move": "Move",
"movepagetitle": "Move Page",
"movepagepath": "Enter the new page path:",
"movepageinvalid": "This page path is invalid or not allowed!",
"movepagewarning": "Note that moving or renaming pages can lead to broken links. Make sure to edit any page that links to this page afterwards!",
"movepageplaceholder": "page-name"
},
"nav": {
"home": "Home"
},

@ -1,12 +0,0 @@
.modal#modal-admin-users-delete
.modal-background
.modal-container
.modal-content
header.is-red
span Delete User Account?
p.modal-notify(v-bind:class='{ "is-active": loading }'): i
section
span Are you sure you want to delete this user account? This action cannot be undone!
footer
a.button.is-grey.is-outlined(v-on:click='cancel') Abort
a.button.is-red(v-on:click='deleteUser') Delete

@ -1,10 +0,0 @@
.modal#modal-create-discard
.modal-background
.modal-container
.modal-content
header.is-orange Discard?
section
span Are you sure you want to leave this page and loose anything you wrote so far?
footer
a.button.is-grey.is-outlined.btn-create-discard Stay on page
a.button.is-orange(href='/') Discard

@ -1,11 +0,0 @@
.modal#modal-edit-discard
.modal-background
.modal-container
.modal-content
header.is-orange Discard?
section
span Are you sure you want to leave this page and loose any modifications?
footer
a.button.is-grey.is-outlined.btn-edit-discard Stay on page
a.button.is-orange(href='/' + pageData.meta.path) Discard

@ -1,33 +0,0 @@
//.modallayer#modal-editor-link
.modallayer-content
.tabs.is-boxed
ul
li
a
span.icon.is-small
i.fa.fa-file-text-o
span Internal Document Link
li.is-active
a
span.icon.is-small
i.fa.fa-external-link
span External Link
.columns.is-hidden
.column
label.label Text to display
p.control
input.input(type='text', placeholder='Text input')
.column
label.label Link
p.control
input.input(type='text', placeholder='http://')
.columns
.column
label.label Text to display
p.control
input.input(type='text', placeholder='Text input')
.column
label.label Link
p.control
input.input(type='text', placeholder='http://')

@ -1,7 +1,7 @@
extends ./_layout.pug
block rootNavRight
i.nav-item#notifload
loading-spinner
.nav-item
a.button(href='/admin/users')
i.icon-reply
@ -113,11 +113,11 @@ block adminContent
.column.is-narrow
section
if usrOpts.canBeDeleted
button.button.is-red.btn-deluser-prompt
button.button.is-red(v-on:click='$store.dispatch("modalDeleteUser/open")')
i.icon-trash2
span Delete Account
include ../../modals/admin-deleteuser.pug
modal-delete-user(current-user=usr._id)
script(type='text/javascript').
var usrData = !{JSON.stringify(usr)};

Loading…
Cancel
Save