mirror of https://github.com/Requarks/wiki.git
committed by
Nick
24 changed files with 2123 additions and 2952 deletions
Split 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