Skip to content

Commit b26f30a

Browse files
committed
feat: navigation save / load
1 parent b870a47 commit b26f30a

File tree

4 files changed

+54
-17
lines changed

4 files changed

+54
-17
lines changed

client/components/admin/admin-navigation.vue

+24-4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
.headline.primary--text {{$t('navigation.title')}}
99
.subheading.grey--text {{$t('navigation.subtitle')}}
1010
v-spacer
11+
v-btn(outline, color='grey', @click='refresh', large)
12+
v-icon refresh
1113
v-btn(color='success', depressed, @click='save', large)
1214
v-icon(left) check
1315
span {{$t('common:actions.apply')}}
@@ -185,20 +187,38 @@ export default {
185187
async save() {
186188
this.$store.commit(`loadingStart`, 'admin-navigation-save')
187189
try {
188-
await this.$apollo.mutate({
190+
const resp = await this.$apollo.mutate({
189191
mutation: treeSaveMutation,
190192
variables: {
191193
tree: this.navTree
192194
}
193195
})
196+
if (_.get(resp, 'data.navigation.updateTree.responseResult.succeeded', false)) {
197+
this.$store.commit('showNotification', {
198+
message: this.$t('navigation.saveSuccess'),
199+
style: 'success',
200+
icon: 'check'
201+
})
202+
} else {
203+
throw new Error(_.get(resp, 'data.navigation.updateTree.responseResult.message', 'An unexpected error occured.'))
204+
}
194205
} catch (err) {
195206
this.$store.commit('showNotification', {
196-
message: this.$t('navigation.saveSuccess'),
197-
style: 'success',
198-
icon: 'check'
207+
message: err.message,
208+
style: 'red',
209+
icon: 'warning'
199210
})
200211
}
201212
this.$store.commit(`loadingStop`, 'admin-navigation-save')
213+
},
214+
async refresh() {
215+
await this.$apollo.queries.navTree.refetch()
216+
this.current = {}
217+
this.$store.commit('showNotification', {
218+
message: 'Navigation has been refreshed.',
219+
style: 'success',
220+
icon: 'cached'
221+
})
202222
}
203223
},
204224
apollo: {

server/graph/resolvers/navigation.js

+5-11
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,16 @@ module.exports = {
1212
},
1313
NavigationQuery: {
1414
async tree(obj, args, context, info) {
15-
// let renderers = await WIKI.models.renderers.getRenderers()
16-
return []
15+
return WIKI.models.navigation.getTree()
1716
}
1817
},
1918
NavigationMutation: {
2019
async updateTree(obj, args, context) {
2120
try {
22-
// for (let rdr of args.renderers) {
23-
// await WIKI.models.storage.query().patch({
24-
// isEnabled: rdr.isEnabled,
25-
// config: _.reduce(rdr.config, (result, value, key) => {
26-
// _.set(result, `${value.key}`, value.value)
27-
// return result
28-
// }, {})
29-
// }).where('key', rdr.key)
30-
// }
21+
await WIKI.models.navigation.query().patch({
22+
config: args.tree
23+
}).where('key', 'site')
24+
3125
return {
3226
responseResult: graphHelper.generateSuccess('Navigation updated successfully')
3327
}

server/models/navigation.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,18 @@ module.exports = class Navigation extends Model {
1616

1717
properties: {
1818
key: {type: 'string'},
19-
config: {type: 'object'}
19+
config: {type: 'array', items: {type: 'object'}}
2020
}
2121
}
2222
}
2323

2424
static async getTree() {
25-
return WIKI.models.navigation.query()
25+
const navTree = await WIKI.models.navigation.query().findOne('key', 'site')
26+
if (navTree) {
27+
return navTree.config
28+
} else {
29+
WIKI.logger.warn('Site Navigation is missing or corrupted.')
30+
return []
31+
}
2632
}
2733
}

server/setup.js

+17
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,23 @@ module.exports = () => {
201201
})
202202
await guestUser.$relatedQuery('groups').relate(guestGroup.id)
203203

204+
// Create site nav
205+
206+
WIKI.logger.info('Creating default site navigation')
207+
await WIKI.models.navigation.query().delete().where({ key: 'site' })
208+
await WIKI.models.navigation.query().insert({
209+
key: 'site',
210+
config: JSON.stringify([
211+
{
212+
icon: 'home',
213+
kind: 'link',
214+
label: 'Home',
215+
target: '/',
216+
targetType: 'home'
217+
}
218+
])
219+
})
220+
204221
WIKI.logger.info('Setup is complete!')
205222
res.json({
206223
ok: true,

0 commit comments

Comments
 (0)