feat: github sponsor button + keep parent path in page selector
This commit is contained in:
parent
acb57879dd
commit
daa8174d7f
@ -25,6 +25,9 @@
|
|||||||
slider-color='#FFF'
|
slider-color='#FFF'
|
||||||
icons-and-text
|
icons-and-text
|
||||||
)
|
)
|
||||||
|
v-tab
|
||||||
|
span GitHub
|
||||||
|
v-icon.my-1(size='24') mdi-github-circle
|
||||||
v-tab
|
v-tab
|
||||||
span Patreon
|
span Patreon
|
||||||
img.my-1(src='/svg/icon-patreon.svg', style='height: 24px;')
|
img.my-1(src='/svg/icon-patreon.svg', style='height: 24px;')
|
||||||
@ -40,6 +43,10 @@
|
|||||||
v-tab
|
v-tab
|
||||||
span T-Shirts
|
span T-Shirts
|
||||||
img.my-1(src='/svg/icon-t-shirt.svg', style='height: 24px;')
|
img.my-1(src='/svg/icon-t-shirt.svg', style='height: 24px;')
|
||||||
|
v-tab-item(:transition='false', :reverse-transition='false')
|
||||||
|
.body-2.pa-3 {{ $t('admin:contribute.github') }}
|
||||||
|
a.ml-3(href='https://github.com/users/NGPixel/sponsorship', :title='$t(`admin:contribute.becomeASponsor`)')
|
||||||
|
img(src='/img/donate_github.svg', :alt='$t(`admin:contribute.becomeASponsor`)' style='width:200px;')
|
||||||
v-tab-item(:transition='false', :reverse-transition='false')
|
v-tab-item(:transition='false', :reverse-transition='false')
|
||||||
.body-2.pa-3 {{ $t('admin:contribute.patreon') }}
|
.body-2.pa-3 {{ $t('admin:contribute.patreon') }}
|
||||||
a.ml-3(href='https://www.patreon.com/bePatron?u=16744039', :title='$t(`admin:contribute.becomeAPatron`)')
|
a.ml-3(href='https://www.patreon.com/bePatron?u=16744039', :title='$t(`admin:contribute.becomeAPatron`)')
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<template lang='pug'>
|
<template lang='pug'>
|
||||||
v-dialog(v-model='value', persistent, max-width='350')
|
v-dialog(v-model='value', persistent, max-width='350', :overlay-color='color', overlay-opacity='.7')
|
||||||
v-card.loader-dialog.radius-7(:color='color', dark)
|
v-card.loader-dialog.radius-7(:color='color', dark)
|
||||||
v-card-text.text-center.py-4
|
v-card-text.text-center.py-4
|
||||||
atom-spinner.is-inline(
|
atom-spinner.is-inline(
|
||||||
|
@ -132,10 +132,9 @@
|
|||||||
v-list-item-avatar(size='24'): v-icon(color='indigo') mdi-code-tags
|
v-list-item-avatar(size='24'): v-icon(color='indigo') mdi-code-tags
|
||||||
v-list-item-title.body-2 {{$t('common:header.viewSource')}}
|
v-list-item-title.body-2 {{$t('common:header.viewSource')}}
|
||||||
v-list-item.pl-4(@click='pageMove', v-if='isAuthenticated')
|
v-list-item.pl-4(@click='pageMove', v-if='isAuthenticated')
|
||||||
v-list-item-avatar(size='24'): v-icon(color='grey lighten-2') mdi-content-save-move-outline
|
v-list-item-avatar(size='24'): v-icon(color='indigo') mdi-content-save-move-outline
|
||||||
v-list-item-content
|
v-list-item-content
|
||||||
v-list-item-title.body-2.grey--text.text--ligten-2 {{$t('common:header.move')}}
|
v-list-item-title.body-2 {{$t('common:header.move')}}
|
||||||
v-list-item-subtitle.overline.grey--text.text--lighten-2 Coming soon
|
|
||||||
v-list-item.pl-4(@click='pageDelete', v-if='isAuthenticated')
|
v-list-item.pl-4(@click='pageDelete', v-if='isAuthenticated')
|
||||||
v-list-item-avatar(size='24'): v-icon(color='red darken-2') mdi-trash-can-outline
|
v-list-item-avatar(size='24'): v-icon(color='red darken-2') mdi-trash-can-outline
|
||||||
v-list-item-title.body-2 {{$t('common:header.delete')}}
|
v-list-item-title.body-2 {{$t('common:header.delete')}}
|
||||||
@ -196,6 +195,7 @@
|
|||||||
span {{$t('common:header.login')}}
|
span {{$t('common:header.login')}}
|
||||||
|
|
||||||
page-selector(mode='create', v-model='newPageModal', :open-handler='pageNewCreate', :locale='locale')
|
page-selector(mode='create', v-model='newPageModal', :open-handler='pageNewCreate', :locale='locale')
|
||||||
|
page-selector(mode='move', v-model='movePageModal', :open-handler='pageMoveRename', :path='path', :locale='locale')
|
||||||
page-delete(v-model='deletePageModal', v-if='path && path.length')
|
page-delete(v-model='deletePageModal', v-if='path && path.length')
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -226,6 +226,7 @@ export default {
|
|||||||
searchIsShown: true,
|
searchIsShown: true,
|
||||||
searchAdvMenuShown: false,
|
searchAdvMenuShown: false,
|
||||||
newPageModal: false,
|
newPageModal: false,
|
||||||
|
movePageModal: false,
|
||||||
deletePageModal: false,
|
deletePageModal: false,
|
||||||
locales: siteLangs
|
locales: siteLangs
|
||||||
}
|
}
|
||||||
@ -339,11 +340,10 @@ export default {
|
|||||||
window.location.assign(`/s/${this.locale}/${this.path}`)
|
window.location.assign(`/s/${this.locale}/${this.path}`)
|
||||||
},
|
},
|
||||||
pageMove () {
|
pageMove () {
|
||||||
this.$store.commit('showNotification', {
|
this.movePageModal = true
|
||||||
style: 'indigo',
|
},
|
||||||
message: `Coming soon...`,
|
pageMoveRename ({ path, locale }) {
|
||||||
icon: 'ferry'
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
pageDelete () {
|
pageDelete () {
|
||||||
this.deletePageModal = true
|
this.deletePageModal = true
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
<template lang='pug'>
|
<template lang='pug'>
|
||||||
v-dialog(v-model='isShown', max-width='550', persistent)
|
v-dialog(
|
||||||
|
v-model='isShown'
|
||||||
|
max-width='550'
|
||||||
|
persistent
|
||||||
|
overlay-color='red darken-4'
|
||||||
|
overlay-opacity='.7'
|
||||||
|
)
|
||||||
v-card
|
v-card
|
||||||
.dialog-header.is-short.is-red
|
.dialog-header.is-short.is-red
|
||||||
v-icon.mr-2(color='white') mdi-file-document-box-remove-outline
|
v-icon.mr-2(color='white') mdi-file-document-box-remove-outline
|
||||||
|
@ -1,9 +1,15 @@
|
|||||||
<template lang="pug">
|
<template lang="pug">
|
||||||
v-dialog(v-model='isShown', max-width='850px')
|
v-dialog(
|
||||||
|
v-model='isShown'
|
||||||
|
max-width='850px'
|
||||||
|
overlay-color='blue darken-4'
|
||||||
|
overlay-opacity='.7'
|
||||||
|
)
|
||||||
v-card.page-selector
|
v-card.page-selector
|
||||||
.dialog-header.is-blue
|
.dialog-header.is-blue
|
||||||
v-icon.mr-3(color='white') mdi-page-next-outline
|
v-icon.mr-3(color='white') mdi-page-next-outline
|
||||||
.body-1 Select Page Location
|
.body-1(v-if='mode === `create`') Select New Page Location
|
||||||
|
.body-1(v-else-if='mode === `move`') Move / Rename Page Location
|
||||||
v-spacer
|
v-spacer
|
||||||
v-progress-circular(
|
v-progress-circular(
|
||||||
indeterminate
|
indeterminate
|
||||||
@ -13,11 +19,11 @@
|
|||||||
v-show='searchLoading'
|
v-show='searchLoading'
|
||||||
)
|
)
|
||||||
.d-flex(style='min-height:400px;')
|
.d-flex(style='min-height:400px;')
|
||||||
v-flex.grey(xs4, :class='darkMode ? `darken-4` : `lighten-3`')
|
v-flex.grey(xs5, :class='darkMode ? `darken-4` : `lighten-3`')
|
||||||
v-toolbar(color='grey darken-3', dark, dense, flat)
|
v-toolbar(color='grey darken-3', dark, dense, flat)
|
||||||
.body-2 Virtual Folders
|
.body-2 Virtual Folders
|
||||||
v-spacer
|
v-spacer
|
||||||
v-btn(icon, tile, href='https://docs.requarks.io/', target='_blank')
|
v-btn(icon, tile, href='https://docs.requarks.io/guide/pages#folders', target='_blank')
|
||||||
v-icon mdi-help-box
|
v-icon mdi-help-box
|
||||||
v-treeview(
|
v-treeview(
|
||||||
:active.sync='currentNode'
|
:active.sync='currentNode'
|
||||||
@ -33,7 +39,7 @@
|
|||||||
)
|
)
|
||||||
template(slot='prepend', slot-scope='{ item, open, leaf }')
|
template(slot='prepend', slot-scope='{ item, open, leaf }')
|
||||||
v-icon mdi-{{ open ? 'folder-open' : 'folder' }}
|
v-icon mdi-{{ open ? 'folder-open' : 'folder' }}
|
||||||
v-flex(xs8)
|
v-flex(xs7)
|
||||||
v-toolbar(color='blue darken-2', dark, dense, flat)
|
v-toolbar(color='blue darken-2', dark, dense, flat)
|
||||||
.body-2 Pages
|
.body-2 Pages
|
||||||
v-spacer
|
v-spacer
|
||||||
@ -121,6 +127,7 @@ export default {
|
|||||||
return {
|
return {
|
||||||
searchLoading: false,
|
searchLoading: false,
|
||||||
currentLocale: siteConfig.lang,
|
currentLocale: siteConfig.lang,
|
||||||
|
currentFolderPath: '',
|
||||||
currentPath: 'new-page',
|
currentPath: 'new-page',
|
||||||
currentPage: null,
|
currentPage: null,
|
||||||
currentNode: [0],
|
currentNode: [0],
|
||||||
@ -142,7 +149,7 @@ export default {
|
|||||||
set(val) { this.$emit('input', val) }
|
set(val) { this.$emit('input', val) }
|
||||||
},
|
},
|
||||||
currentPages () {
|
currentPages () {
|
||||||
return _.filter(this.pages, ['parent', _.head(this.currentNode) || 0])
|
return _.sortBy(_.filter(this.pages, ['parent', _.head(this.currentNode) || 0]), ['title', 'path'])
|
||||||
},
|
},
|
||||||
isValidPath () {
|
isValidPath () {
|
||||||
return this.currentPath && this.currentPath.length > 2
|
return this.currentPath && this.currentPath.length > 2
|
||||||
@ -164,8 +171,9 @@ export default {
|
|||||||
this.currentNode = oldValue
|
this.currentNode = oldValue
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
if (this.openNodes.indexOf(newValue[0]) < 0) { // auto open and load children
|
|
||||||
const current = _.find(this.all, ['id', newValue[0]])
|
const current = _.find(this.all, ['id', newValue[0]])
|
||||||
|
|
||||||
|
if (this.openNodes.indexOf(newValue[0]) < 0) { // auto open and load children
|
||||||
if (current) {
|
if (current) {
|
||||||
if (this.openNodes.indexOf(current.parent) < 0) {
|
if (this.openNodes.indexOf(current.parent) < 0) {
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
@ -177,6 +185,8 @@ export default {
|
|||||||
this.openNodes.push(newValue[0])
|
this.openNodes.push(newValue[0])
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.currentPath = _.compact([_.get(current, 'path', ''), _.last(this.currentPath.split('/'))]).join('/')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
currentPage (newValue, oldValue) {
|
currentPage (newValue, oldValue) {
|
||||||
@ -211,7 +221,7 @@ export default {
|
|||||||
})
|
})
|
||||||
const items = _.get(resp, 'data.pages.tree', [])
|
const items = _.get(resp, 'data.pages.tree', [])
|
||||||
const itemFolders = _.filter(items, ['isFolder', true]).map(f => ({...f, children: []}))
|
const itemFolders = _.filter(items, ['isFolder', true]).map(f => ({...f, children: []}))
|
||||||
const itemPages = _.filter(items, ['isFolder', false])
|
const itemPages = _.filter(items, i => i.pageId > 0)
|
||||||
if (itemFolders.length > 0) {
|
if (itemFolders.length > 0) {
|
||||||
item.children = itemFolders
|
item.children = itemFolders
|
||||||
} else {
|
} else {
|
||||||
@ -233,6 +243,9 @@ export default {
|
|||||||
.v-treeview-node__label {
|
.v-treeview-node__label {
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
}
|
}
|
||||||
|
.v-treeview-node__content {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
@ -5,6 +5,7 @@ query ($parent: Int!, $mode: PageTreeMode!, $locale: String!) {
|
|||||||
path
|
path
|
||||||
title
|
title
|
||||||
isFolder
|
isFolder
|
||||||
|
pageId
|
||||||
parent
|
parent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
1
client/static/img/donate_github.svg
Normal file
1
client/static/img/donate_github.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 16 KiB |
Loading…
Reference in New Issue
Block a user