feat: page history UI + nav links fix
This commit is contained in:
parent
b26f30ae20
commit
9a2a9c220a
@ -159,6 +159,7 @@ Vue.prototype.Velocity = Velocity
|
|||||||
|
|
||||||
Vue.component('admin', () => import(/* webpackChunkName: "admin" */ './components/admin.vue'))
|
Vue.component('admin', () => import(/* webpackChunkName: "admin" */ './components/admin.vue'))
|
||||||
Vue.component('editor', () => import(/* webpackPrefetch: -100, webpackChunkName: "editor" */ './components/editor.vue'))
|
Vue.component('editor', () => import(/* webpackPrefetch: -100, webpackChunkName: "editor" */ './components/editor.vue'))
|
||||||
|
Vue.component('history', () => import(/* webpackChunkName: "history" */ './components/history.vue'))
|
||||||
Vue.component('login', () => import(/* webpackPrefetch: true, webpackChunkName: "login" */ './components/login.vue'))
|
Vue.component('login', () => import(/* webpackPrefetch: true, webpackChunkName: "login" */ './components/login.vue'))
|
||||||
Vue.component('nav-footer', () => import(/* webpackMode: "eager" */ './components/common/nav-footer.vue'))
|
Vue.component('nav-footer', () => import(/* webpackMode: "eager" */ './components/common/nav-footer.vue'))
|
||||||
Vue.component('nav-header', () => import(/* webpackMode: "eager" */ './components/common/nav-header.vue'))
|
Vue.component('nav-header', () => import(/* webpackMode: "eager" */ './components/common/nav-header.vue'))
|
||||||
|
@ -134,7 +134,8 @@ export default {
|
|||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
isLoading: get('isLoading'),
|
isLoading: get('isLoading'),
|
||||||
title: get('site/title')
|
title: get('site/title'),
|
||||||
|
path: get('page/path')
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
if (this.hideSearch || this.dense || this.$vuetify.breakpoint.smAndDown) {
|
if (this.hideSearch || this.dense || this.$vuetify.breakpoint.smAndDown) {
|
||||||
@ -157,10 +158,10 @@ export default {
|
|||||||
|
|
||||||
},
|
},
|
||||||
pageEdit () {
|
pageEdit () {
|
||||||
|
window.location.assign(`/e/${this.path}`)
|
||||||
},
|
},
|
||||||
pageHistory () {
|
pageHistory () {
|
||||||
|
window.location.assign(`/h/${this.path}`)
|
||||||
},
|
},
|
||||||
pageSource () {
|
pageSource () {
|
||||||
|
|
||||||
|
@ -157,6 +157,14 @@ export default {
|
|||||||
notification: get('notification'),
|
notification: get('notification'),
|
||||||
notificationState: sync('notification@isActive')
|
notificationState: sync('notification@isActive')
|
||||||
},
|
},
|
||||||
|
created() {
|
||||||
|
this.$store.commit('page/SET_DESCRIPTION', this.description)
|
||||||
|
this.$store.commit('page/SET_IS_PUBLISHED', this.isPublished)
|
||||||
|
this.$store.commit('page/SET_LOCALE', this.locale)
|
||||||
|
this.$store.commit('page/SET_PATH', this.path)
|
||||||
|
this.$store.commit('page/SET_TAGS', this.tags)
|
||||||
|
this.$store.commit('page/SET_TITLE', this.title)
|
||||||
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.$store.set('editor/mode', this.initMode || 'create')
|
this.$store.set('editor/mode', this.initMode || 'create')
|
||||||
this.$store.set('editor/content', this.initContent ? window.atob(this.initContent) : '# Header\n\nYour content here')
|
this.$store.set('editor/content', this.initContent ? window.atob(this.initContent) : '# Header\n\nYour content here')
|
||||||
|
136
client/components/history.vue
Normal file
136
client/components/history.vue
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
<template lang='pug'>
|
||||||
|
v-app(:dark='darkMode').history
|
||||||
|
nav-header
|
||||||
|
v-content
|
||||||
|
v-toolbar(color='primary', dark)
|
||||||
|
.subheading Viewing history of page #[strong /{{path}}]
|
||||||
|
v-spacer
|
||||||
|
.caption.blue--text.text--lighten-3 ID {{id}}
|
||||||
|
v-btn.ml-4(depressed, color='blue darken-1', @click='goLive') Return to Live Version
|
||||||
|
v-container(fluid, grid-list-xl)
|
||||||
|
v-layout(row, wrap)
|
||||||
|
v-flex(xs5)
|
||||||
|
v-chip.ma-0.grey--text.text--darken-2(
|
||||||
|
label
|
||||||
|
small
|
||||||
|
color='grey lighten-2'
|
||||||
|
)
|
||||||
|
span Live
|
||||||
|
v-timeline(
|
||||||
|
dense
|
||||||
|
)
|
||||||
|
v-timeline-item(
|
||||||
|
fill-dot
|
||||||
|
color='primary'
|
||||||
|
icon='edit'
|
||||||
|
)
|
||||||
|
v-card.grey.lighten-3.radius-7(flat)
|
||||||
|
v-card-text
|
||||||
|
v-layout(justify-space-between)
|
||||||
|
v-flex(xs7)
|
||||||
|
v-chip.ml-0.mr-3(
|
||||||
|
label
|
||||||
|
small
|
||||||
|
color='primary'
|
||||||
|
)
|
||||||
|
span.white--text Viewing
|
||||||
|
span Edited by John Doe
|
||||||
|
v-flex(xs5, text-xs-right, align-center, d-flex)
|
||||||
|
.caption Today at 12:34 PM
|
||||||
|
|
||||||
|
v-timeline-item(
|
||||||
|
fill-dot
|
||||||
|
small
|
||||||
|
color='primary'
|
||||||
|
icon='edit'
|
||||||
|
)
|
||||||
|
v-card.grey.lighten-3.radius-7(flat)
|
||||||
|
v-card-text
|
||||||
|
v-layout(justify-space-between)
|
||||||
|
v-flex(xs7)
|
||||||
|
span Edited by Jane Doe
|
||||||
|
v-flex(xs5, text-xs-right, align-center, d-flex)
|
||||||
|
.caption Today at 12:27 PM
|
||||||
|
|
||||||
|
v-timeline-item(
|
||||||
|
fill-dot
|
||||||
|
small
|
||||||
|
color='purple'
|
||||||
|
icon='forward'
|
||||||
|
)
|
||||||
|
v-card.purple.lighten-5.radius-7(flat)
|
||||||
|
v-card-text
|
||||||
|
v-layout(justify-space-between)
|
||||||
|
v-flex(xs7)
|
||||||
|
span Moved page from #[strong /test] to #[strong /home] by John Doe
|
||||||
|
v-flex(xs5, text-xs-right, align-center, d-flex)
|
||||||
|
.caption Yesterday at 10:45 AM
|
||||||
|
|
||||||
|
v-timeline-item(
|
||||||
|
fill-dot
|
||||||
|
color='teal'
|
||||||
|
icon='add'
|
||||||
|
)
|
||||||
|
v-card.teal.lighten-5.radius-7(flat)
|
||||||
|
v-card-text
|
||||||
|
v-layout(justify-space-between)
|
||||||
|
v-flex(xs7): span Initial page creation by John Doe
|
||||||
|
v-flex(xs5, text-xs-right, align-center, d-flex)
|
||||||
|
.caption Last Tuesday at 7:56 PM
|
||||||
|
v-chip.ma-0.grey--text.text--darken-2(
|
||||||
|
label
|
||||||
|
small
|
||||||
|
color='grey lighten-2'
|
||||||
|
) End of history
|
||||||
|
|
||||||
|
v-flex(xs7)
|
||||||
|
v-card.radius-7
|
||||||
|
v-card-text
|
||||||
|
v-card.grey.lighten-4.radius-7(flat)
|
||||||
|
v-card-text
|
||||||
|
.subheading Page Title
|
||||||
|
.caption Some page description
|
||||||
|
|
||||||
|
nav-footer
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
/* global siteConfig */
|
||||||
|
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
id: {
|
||||||
|
type: Number,
|
||||||
|
default: 0
|
||||||
|
},
|
||||||
|
locale: {
|
||||||
|
type: String,
|
||||||
|
default: 'en'
|
||||||
|
},
|
||||||
|
path: {
|
||||||
|
type: String,
|
||||||
|
default: 'home'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
darkMode() { return siteConfig.darkMode }
|
||||||
|
},
|
||||||
|
created () {
|
||||||
|
this.$store.commit('page/SET_ID', this.id)
|
||||||
|
this.$store.commit('page/SET_LOCALE', this.locale)
|
||||||
|
this.$store.commit('page/SET_PATH', this.path)
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
goLive() {
|
||||||
|
window.location.assign(`/${this.path}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang='scss'>
|
||||||
|
|
||||||
|
</style>
|
@ -4,6 +4,7 @@ import Vuex from 'vuex'
|
|||||||
import pathify from 'vuex-pathify' // eslint-disable-line import/no-duplicates
|
import pathify from 'vuex-pathify' // eslint-disable-line import/no-duplicates
|
||||||
import { make } from 'vuex-pathify' // eslint-disable-line import/no-duplicates
|
import { make } from 'vuex-pathify' // eslint-disable-line import/no-duplicates
|
||||||
|
|
||||||
|
import page from './page'
|
||||||
import site from './site'
|
import site from './site'
|
||||||
|
|
||||||
Vue.use(Vuex)
|
Vue.use(Vuex)
|
||||||
@ -49,6 +50,7 @@ export default new Vuex.Store({
|
|||||||
},
|
},
|
||||||
actions: { },
|
actions: { },
|
||||||
modules: {
|
modules: {
|
||||||
|
page,
|
||||||
site
|
site
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
21
client/store/page.js
Normal file
21
client/store/page.js
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import { make } from 'vuex-pathify'
|
||||||
|
|
||||||
|
const state = {
|
||||||
|
id: 0,
|
||||||
|
authorId: 0,
|
||||||
|
authorName: 'Unknown',
|
||||||
|
createdAt: '',
|
||||||
|
description: '',
|
||||||
|
isPublished: true,
|
||||||
|
locale: 'en',
|
||||||
|
path: '',
|
||||||
|
tags: [],
|
||||||
|
title: '',
|
||||||
|
updatedAt: ''
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
namespaced: true,
|
||||||
|
state,
|
||||||
|
mutations: make.mutations(state)
|
||||||
|
}
|
@ -194,6 +194,18 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
created() {
|
||||||
|
this.$store.commit('page/SET_AUTHOR_ID', this.authorId)
|
||||||
|
this.$store.commit('page/SET_AUTHOR_NAME', this.authorName)
|
||||||
|
this.$store.commit('page/SET_CREATED_AT', this.createdAt)
|
||||||
|
this.$store.commit('page/SET_DESCRIPTION', this.description)
|
||||||
|
this.$store.commit('page/SET_IS_PUBLISHED', this.isPublished)
|
||||||
|
this.$store.commit('page/SET_LOCALE', this.locale)
|
||||||
|
this.$store.commit('page/SET_PATH', this.path)
|
||||||
|
this.$store.commit('page/SET_TAGS', this.tags)
|
||||||
|
this.$store.commit('page/SET_TITLE', this.title)
|
||||||
|
this.$store.commit('page/SET_UPDATED_AT', this.updatedAt)
|
||||||
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
Prism.highlightAllUnder(this.$refs.container)
|
Prism.highlightAllUnder(this.$refs.container)
|
||||||
},
|
},
|
||||||
|
68
package.json
68
package.json
@ -67,7 +67,7 @@
|
|||||||
"express-brute": "1.0.1",
|
"express-brute": "1.0.1",
|
||||||
"express-brute-redis": "0.0.1",
|
"express-brute-redis": "0.0.1",
|
||||||
"express-session": "1.15.6",
|
"express-session": "1.15.6",
|
||||||
"file-type": "10.0.0",
|
"file-type": "10.2.0",
|
||||||
"filesize.js": "1.0.2",
|
"filesize.js": "1.0.2",
|
||||||
"follow-redirects": "1.5.9",
|
"follow-redirects": "1.5.9",
|
||||||
"fs-extra": "7.0.0",
|
"fs-extra": "7.0.0",
|
||||||
@ -75,14 +75,14 @@
|
|||||||
"graphql": "14.0.2",
|
"graphql": "14.0.2",
|
||||||
"graphql-list-fields": "2.0.2",
|
"graphql-list-fields": "2.0.2",
|
||||||
"graphql-subscriptions": "1.0.0",
|
"graphql-subscriptions": "1.0.0",
|
||||||
"graphql-tools": "4.0.1",
|
"graphql-tools": "4.0.2",
|
||||||
"highlight.js": "9.13.0",
|
"highlight.js": "9.13.1",
|
||||||
"i18next": "11.9.1",
|
"i18next": "12.0.0",
|
||||||
"i18next-express-middleware": "1.4.1",
|
"i18next-express-middleware": "1.4.1",
|
||||||
"i18next-localstorage-cache": "1.1.1",
|
"i18next-localstorage-cache": "1.1.1",
|
||||||
"i18next-node-fs-backend": "2.1.0",
|
"i18next-node-fs-backend": "2.1.0",
|
||||||
"image-size": "0.6.3",
|
"image-size": "0.6.3",
|
||||||
"ioredis": "4.0.2",
|
"ioredis": "4.2.0",
|
||||||
"js-binary": "1.2.0",
|
"js-binary": "1.2.0",
|
||||||
"js-yaml": "3.12.0",
|
"js-yaml": "3.12.0",
|
||||||
"jsonwebtoken": "8.3.0",
|
"jsonwebtoken": "8.3.0",
|
||||||
@ -104,20 +104,20 @@
|
|||||||
"markdown-it-sup": "1.0.0",
|
"markdown-it-sup": "1.0.0",
|
||||||
"markdown-it-task-lists": "2.1.1",
|
"markdown-it-task-lists": "2.1.1",
|
||||||
"mathjax-node": "2.1.1",
|
"mathjax-node": "2.1.1",
|
||||||
"mime-types": "2.1.20",
|
"mime-types": "2.1.21",
|
||||||
"moment": "2.22.2",
|
"moment": "2.22.2",
|
||||||
"moment-timezone": "0.5.21",
|
"moment-timezone": "0.5.21",
|
||||||
"mongodb": "3.1.8",
|
"mongodb": "3.1.8",
|
||||||
"mssql": "4.2.1",
|
"mssql": "4.2.2",
|
||||||
"multer": "1.4.1",
|
"multer": "1.4.1",
|
||||||
"mysql2": "1.6.1",
|
"mysql2": "1.6.1",
|
||||||
"node-2fa": "1.1.2",
|
"node-2fa": "1.1.2",
|
||||||
"node-cache": "4.2.0",
|
"node-cache": "4.2.0",
|
||||||
"oauth2orize": "1.11.0",
|
"oauth2orize": "1.11.0",
|
||||||
"objection": "1.3.0",
|
"objection": "1.4.0",
|
||||||
"ora": "3.0.0",
|
"ora": "3.0.0",
|
||||||
"passport": "0.4.0",
|
"passport": "0.4.0",
|
||||||
"passport-auth0": "1.0.0",
|
"passport-auth0": "1.1.0",
|
||||||
"passport-azure-ad-oauth2": "0.0.4",
|
"passport-azure-ad-oauth2": "0.0.4",
|
||||||
"passport-cas": "0.1.1",
|
"passport-cas": "0.1.1",
|
||||||
"passport-discord": "0.1.3",
|
"passport-discord": "0.1.3",
|
||||||
@ -135,7 +135,7 @@
|
|||||||
"passport-slack": "0.0.7",
|
"passport-slack": "0.0.7",
|
||||||
"passport-twitch": "1.0.3",
|
"passport-twitch": "1.0.3",
|
||||||
"passport-windowslive": "1.0.2",
|
"passport-windowslive": "1.0.2",
|
||||||
"pg": "7.5.0",
|
"pg": "7.6.0",
|
||||||
"pg-hstore": "2.3.2",
|
"pg-hstore": "2.3.2",
|
||||||
"pm2": "3.2.2",
|
"pm2": "3.2.2",
|
||||||
"pug": "2.0.3",
|
"pug": "2.0.3",
|
||||||
@ -148,7 +148,7 @@
|
|||||||
"scim-query-filter-parser": "1.1.0",
|
"scim-query-filter-parser": "1.1.0",
|
||||||
"semver": "5.6.0",
|
"semver": "5.6.0",
|
||||||
"serve-favicon": "2.5.0",
|
"serve-favicon": "2.5.0",
|
||||||
"sqlite3": "4.0.2",
|
"sqlite3": "4.0.3",
|
||||||
"subscriptions-transport-ws": "0.9.15",
|
"subscriptions-transport-ws": "0.9.15",
|
||||||
"uslug": "1.0.4",
|
"uslug": "1.0.4",
|
||||||
"uuid": "3.3.2",
|
"uuid": "3.3.2",
|
||||||
@ -174,8 +174,8 @@
|
|||||||
"@panter/vue-i18next": "0.13.0",
|
"@panter/vue-i18next": "0.13.0",
|
||||||
"@vue/cli": "3.0.5",
|
"@vue/cli": "3.0.5",
|
||||||
"animated-number-vue": "0.1.3",
|
"animated-number-vue": "0.1.3",
|
||||||
"apollo-cache-inmemory": "1.3.5",
|
"apollo-cache-inmemory": "1.3.7",
|
||||||
"apollo-client": "2.4.2",
|
"apollo-client": "2.4.4",
|
||||||
"apollo-fetch": "0.7.0",
|
"apollo-fetch": "0.7.0",
|
||||||
"apollo-link": "1.2.3",
|
"apollo-link": "1.2.3",
|
||||||
"apollo-link-batch-http": "1.2.3",
|
"apollo-link-batch-http": "1.2.3",
|
||||||
@ -183,8 +183,8 @@
|
|||||||
"apollo-link-http": "1.5.5",
|
"apollo-link-http": "1.5.5",
|
||||||
"apollo-link-persisted-queries": "0.2.1",
|
"apollo-link-persisted-queries": "0.2.1",
|
||||||
"apollo-link-ws": "1.0.9",
|
"apollo-link-ws": "1.0.9",
|
||||||
"apollo-utilities": "1.0.21",
|
"apollo-utilities": "1.0.24",
|
||||||
"autoprefixer": "9.1.5",
|
"autoprefixer": "9.3.1",
|
||||||
"babel-eslint": "10.0.1",
|
"babel-eslint": "10.0.1",
|
||||||
"babel-jest": "23.6.0",
|
"babel-jest": "23.6.0",
|
||||||
"babel-loader": "^8.0.4",
|
"babel-loader": "^8.0.4",
|
||||||
@ -193,18 +193,18 @@
|
|||||||
"babel-plugin-transform-imports": "1.5.1",
|
"babel-plugin-transform-imports": "1.5.1",
|
||||||
"brace": "0.11.1",
|
"brace": "0.11.1",
|
||||||
"cache-loader": "1.2.2",
|
"cache-loader": "1.2.2",
|
||||||
"chart.js": "2.7.2",
|
"chart.js": "2.7.3",
|
||||||
"clean-webpack-plugin": "0.1.19",
|
"clean-webpack-plugin": "0.1.19",
|
||||||
"copy-webpack-plugin": "4.5.3",
|
"copy-webpack-plugin": "4.5.4",
|
||||||
"css-loader": "1.0.0",
|
"css-loader": "1.0.0",
|
||||||
"cssnano": "4.1.4",
|
"cssnano": "4.1.7",
|
||||||
"duplicate-package-checker-webpack-plugin": "3.0.0",
|
"duplicate-package-checker-webpack-plugin": "3.0.0",
|
||||||
"epic-spinners": "1.0.3",
|
"epic-spinners": "1.0.4",
|
||||||
"eslint": "5.7.0",
|
"eslint": "5.8.0",
|
||||||
"eslint-config-requarks": "1.0.7",
|
"eslint-config-requarks": "1.0.7",
|
||||||
"eslint-config-standard": "12.0.0",
|
"eslint-config-standard": "12.0.0",
|
||||||
"eslint-plugin-import": "2.14.0",
|
"eslint-plugin-import": "2.14.0",
|
||||||
"eslint-plugin-node": "7.0.1",
|
"eslint-plugin-node": "8.0.0",
|
||||||
"eslint-plugin-promise": "4.0.1",
|
"eslint-plugin-promise": "4.0.1",
|
||||||
"eslint-plugin-standard": "4.0.0",
|
"eslint-plugin-standard": "4.0.0",
|
||||||
"eslint-plugin-vue": "4.7.1",
|
"eslint-plugin-vue": "4.7.1",
|
||||||
@ -221,25 +221,25 @@
|
|||||||
"ignore-loader": "0.1.2",
|
"ignore-loader": "0.1.2",
|
||||||
"js-cookie": "2.2.0",
|
"js-cookie": "2.2.0",
|
||||||
"mini-css-extract-plugin": "0.4.4",
|
"mini-css-extract-plugin": "0.4.4",
|
||||||
"node-sass": "4.9.3",
|
"node-sass": "4.9.4",
|
||||||
"offline-plugin": "5.0.5",
|
"offline-plugin": "5.0.5",
|
||||||
"optimize-css-assets-webpack-plugin": "5.0.1",
|
"optimize-css-assets-webpack-plugin": "5.0.1",
|
||||||
"postcss-cssnext": "3.1.0",
|
"postcss-cssnext": "3.1.0",
|
||||||
"postcss-flexbugs-fixes": "4.1.0",
|
"postcss-flexbugs-fixes": "4.1.0",
|
||||||
"postcss-flexibility": "2.0.0",
|
"postcss-flexibility": "2.0.0",
|
||||||
"postcss-import": "12.0.0",
|
"postcss-import": "12.0.1",
|
||||||
"postcss-loader": "3.0.0",
|
"postcss-loader": "3.0.0",
|
||||||
"postcss-preset-env": "6.1.1",
|
"postcss-preset-env": "6.3.0",
|
||||||
"postcss-selector-parser": "5.0.0-rc.3",
|
"postcss-selector-parser": "5.0.0-rc.4",
|
||||||
"pug-lint": "2.5.0",
|
"pug-lint": "2.5.0",
|
||||||
"pug-loader": "2.4.0",
|
"pug-loader": "2.4.0",
|
||||||
"pug-plain-loader": "1.0.0",
|
"pug-plain-loader": "1.0.0",
|
||||||
"raw-loader": "0.5.1",
|
"raw-loader": "0.5.1",
|
||||||
"react": "16.5.2",
|
"react": "16.6.0",
|
||||||
"react-dom": "16.5.2",
|
"react-dom": "16.6.0",
|
||||||
"resolve-url-loader": "3.0.0",
|
"resolve-url-loader": "3.0.0",
|
||||||
"sass-loader": "7.1.0",
|
"sass-loader": "7.1.0",
|
||||||
"sass-resources-loader": "1.3.3",
|
"sass-resources-loader": "1.3.4",
|
||||||
"script-ext-html-webpack-plugin": "2.0.1",
|
"script-ext-html-webpack-plugin": "2.0.1",
|
||||||
"simple-progress-webpack-plugin": "1.1.2",
|
"simple-progress-webpack-plugin": "1.1.2",
|
||||||
"style-loader": "0.23.1",
|
"style-loader": "0.23.1",
|
||||||
@ -247,7 +247,7 @@
|
|||||||
"stylus-loader": "3.0.2",
|
"stylus-loader": "3.0.2",
|
||||||
"twemoji-awesome": "1.0.6",
|
"twemoji-awesome": "1.0.6",
|
||||||
"url-loader": "1.1.2",
|
"url-loader": "1.1.2",
|
||||||
"vee-validate": "2.1.0-beta.11",
|
"vee-validate": "2.1.1",
|
||||||
"velocity-animate": "1.5.2",
|
"velocity-animate": "1.5.2",
|
||||||
"viz.js": "2.0.0",
|
"viz.js": "2.0.0",
|
||||||
"vue": "2.5.17",
|
"vue": "2.5.17",
|
||||||
@ -261,18 +261,18 @@
|
|||||||
"vue-moment": "4.0.0",
|
"vue-moment": "4.0.0",
|
||||||
"vue-router": "3.0.1",
|
"vue-router": "3.0.1",
|
||||||
"vue-simple-breakpoints": "1.0.3",
|
"vue-simple-breakpoints": "1.0.3",
|
||||||
"vue-status-indicator": "1.1.0",
|
"vue-status-indicator": "1.1.1",
|
||||||
"vue-template-compiler": "2.5.17",
|
"vue-template-compiler": "2.5.17",
|
||||||
"vue-tour": "1.0.1",
|
"vue-tour": "1.1.0",
|
||||||
"vue-tree-navigation": "3.0.1",
|
"vue-tree-navigation": "3.0.1",
|
||||||
"vue2-animate": "2.1.0",
|
"vue2-animate": "2.1.0",
|
||||||
"vuedraggable": "2.16.0",
|
"vuedraggable": "2.16.0",
|
||||||
"vuetify": "1.2.9",
|
"vuetify": "1.3.3",
|
||||||
"vuex": "3.0.1",
|
"vuex": "3.0.1",
|
||||||
"vuex-pathify": "1.1.3",
|
"vuex-pathify": "1.1.3",
|
||||||
"vuex-persistedstate": "2.5.4",
|
"vuex-persistedstate": "2.5.4",
|
||||||
"webpack": "4.20.2",
|
"webpack": "4.23.1",
|
||||||
"webpack-bundle-analyzer": "3.0.2",
|
"webpack-bundle-analyzer": "3.0.3",
|
||||||
"webpack-cli": "3.1.2",
|
"webpack-cli": "3.1.2",
|
||||||
"webpack-dev-middleware": "3.4.0",
|
"webpack-dev-middleware": "3.4.0",
|
||||||
"webpack-hot-middleware": "2.24.3",
|
"webpack-hot-middleware": "2.24.3",
|
||||||
|
@ -45,6 +45,24 @@ router.get(['/p', '/p/*'], (req, res, next) => {
|
|||||||
res.render('profile')
|
res.render('profile')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* View document
|
||||||
|
*/
|
||||||
|
router.get(['/h', '/h/*'], async (req, res, next) => {
|
||||||
|
const pageArgs = pageHelper.parsePath(req.path)
|
||||||
|
const page = await WIKI.models.pages.getPage({
|
||||||
|
path: pageArgs.path,
|
||||||
|
locale: pageArgs.locale,
|
||||||
|
userId: req.user.id,
|
||||||
|
isPrivate: false
|
||||||
|
})
|
||||||
|
if (page) {
|
||||||
|
res.render('history', { page })
|
||||||
|
} else {
|
||||||
|
res.redirect(`/${pageArgs.path}`)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* View document
|
* View document
|
||||||
*/
|
*/
|
||||||
|
11
server/views/history.pug
Normal file
11
server/views/history.pug
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
extends master.pug
|
||||||
|
|
||||||
|
block head
|
||||||
|
|
||||||
|
block body
|
||||||
|
#root
|
||||||
|
history(
|
||||||
|
id=page.id
|
||||||
|
locale=page.localeCode
|
||||||
|
path=page.path
|
||||||
|
)
|
Loading…
x
Reference in New Issue
Block a user