mirror of https://github.com/Requarks/wiki.git
committed by
Nick
24 changed files with 2123 additions and 2952 deletions
Unified View
Diff Options
-
1.gitignore
-
4CHANGELOG.md
-
5Makefile
-
2client/components/admin.vue
-
14client/components/admin/admin-groups-edit-permissions.vue
-
2client/components/admin/admin-groups-edit-rules.vue
-
13client/components/common/nav-header.vue
-
110client/components/common/page-delete.vue
-
6client/components/editor.vue
-
12client/graph/common/common-pages-mutation-delete.gql
-
13client/scss/base/base.scss
-
5client/themes/default/components/page.vue
-
2dev/docker/Dockerfile
-
3dev/examples/docker-compose.yml
-
200package.json
-
8server/core/db.js
-
5server/core/system.js
-
15server/db/migrations/2.0.0-beta.11.js
-
28server/db/migrator-source.js
-
7server/graph/resolvers/page.js
-
5server/models/pageHistory.js
-
28server/models/pages.js
-
1server/views/page.pug
-
4586yarn.lock
@ -0,0 +1,110 @@ |
|||||
|
<template lang='pug'> |
||||
|
v-dialog(v-model='isShown', max-width='550', persistent) |
||||
|
v-card.wiki-form |
||||
|
.dialog-header.is-short.is-red |
||||
|
v-icon.mr-2(color='white') highlight_off |
||||
|
span Delete Page |
||||
|
v-card-text |
||||
|
.body-2 Are you sure you want to delete page #[span.red--text.text--darken-2 {{pageTitle}}]? |
||||
|
.caption The page can be restored from the administration area. |
||||
|
v-chip.mt-3.ml-0.mr-1(label, color='red lighten-4', disabled, small) |
||||
|
.caption.red--text.text--darken-2 {{pageLocale.toUpperCase()}} |
||||
|
v-chip.mt-3.mx-0(label, color='red lighten-5', disabled, small) |
||||
|
span.red--text.text--darken-2 /{{pagePath}} |
||||
|
v-card-chin |
||||
|
v-spacer |
||||
|
v-btn(flat, @click='discard', :disabled='loading') Cancel |
||||
|
v-btn(color='red darken-2', @click='deletePage', :loading='loading').white--text Delete |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import _ from 'lodash' |
||||
|
import { get } from 'vuex-pathify' |
||||
|
|
||||
|
import deletePageMutation from 'gql/common/common-pages-mutation-delete.gql' |
||||
|
|
||||
|
export default { |
||||
|
props: { |
||||
|
value: { |
||||
|
type: Boolean, |
||||
|
default: false |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
loading: false |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
isShown: { |
||||
|
get() { return this.value }, |
||||
|
set(val) { this.$emit('input', val) } |
||||
|
}, |
||||
|
pageTitle: get('page/title'), |
||||
|
pagePath: get('page/path'), |
||||
|
pageLocale: get('page/locale'), |
||||
|
pageId: get('page/id') |
||||
|
}, |
||||
|
watch: { |
||||
|
isShown(newValue, oldValue) { |
||||
|
if (newValue) { |
||||
|
document.body.classList.add('page-deleted-pending') |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
discard() { |
||||
|
document.body.classList.remove('page-deleted-pending') |
||||
|
this.isShown = false |
||||
|
}, |
||||
|
async deletePage() { |
||||
|
this.loading = true |
||||
|
this.$store.commit(`loadingStart`, 'page-delete') |
||||
|
this.$nextTick(async () => { |
||||
|
try { |
||||
|
const resp = await this.$apollo.mutate({ |
||||
|
mutation: deletePageMutation, |
||||
|
variables: { |
||||
|
id: this.pageId |
||||
|
} |
||||
|
}) |
||||
|
if (_.get(resp, 'data.pages.delete.responseResult.succeeded', false)) { |
||||
|
this.isShown = false |
||||
|
_.delay(() => { |
||||
|
document.body.classList.add('page-deleted') |
||||
|
_.delay(() => { |
||||
|
window.location.assign('/') |
||||
|
}, 1200) |
||||
|
}, 400) |
||||
|
} else { |
||||
|
throw new Error(_.get(resp, 'data.pages.delete.responseResult.message', 'An unexpected error occured.')) |
||||
|
} |
||||
|
} catch (err) { |
||||
|
this.$store.commit('pushGraphError', err) |
||||
|
} |
||||
|
this.$store.commit(`loadingStop`, 'page-delete') |
||||
|
this.loading = false |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang='scss'> |
||||
|
body.page-deleted-pending { |
||||
|
.application { |
||||
|
background-color: mc('grey', '900'); |
||||
|
} |
||||
|
.application--wrap { |
||||
|
transform: translateZ(-5vw) rotateX(2deg); |
||||
|
border-radius: 7px; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
} |
||||
|
body.page-deleted { |
||||
|
.application--wrap { |
||||
|
transform: translateZ(-1000vw) rotateX(60deg); |
||||
|
opacity: 0; |
||||
|
} |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,12 @@ |
|||||
|
mutation($id: Int!) { |
||||
|
pages { |
||||
|
delete(id: $id) { |
||||
|
responseResult { |
||||
|
succeeded |
||||
|
errorCode |
||||
|
slug |
||||
|
message |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,15 @@ |
|||||
|
exports.up = knex => { |
||||
|
return knex.schema |
||||
|
.table('pageHistory', table => { |
||||
|
table.string('action').defaultTo('updated') |
||||
|
table.dropForeign('pageId') |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
exports.down = knex => { |
||||
|
return knex.schema |
||||
|
.table('pageHistory', table => { |
||||
|
table.dropColumn('action') |
||||
|
table.integer('pageId').unsigned().references('id').inTable('pages') |
||||
|
}) |
||||
|
} |
@ -0,0 +1,28 @@ |
|||||
|
const path = require('path') |
||||
|
const fs = require('fs-extra') |
||||
|
const semver = require('semver') |
||||
|
|
||||
|
/* global WIKI */ |
||||
|
|
||||
|
module.exports = { |
||||
|
/** |
||||
|
* Gets the migration names |
||||
|
* @returns Promise<string[]> |
||||
|
*/ |
||||
|
async getMigrations() { |
||||
|
const absoluteDir = path.join(WIKI.SERVERPATH, 'db/migrations') |
||||
|
const migrationFiles = await fs.readdirAsync(absoluteDir) |
||||
|
return migrationFiles.sort(semver.compare).map(m => ({ |
||||
|
file: m, |
||||
|
directory: absoluteDir |
||||
|
})) |
||||
|
}, |
||||
|
|
||||
|
getMigrationName(migration) { |
||||
|
return migration.file; |
||||
|
}, |
||||
|
|
||||
|
getMigration(migration) { |
||||
|
return require(path.join(WIKI.SERVERPATH, 'db/migrations', migration.file)); |
||||
|
} |
||||
|
} |
4586
yarn.lock
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
Write
Preview
Loading…
Cancel
Save