fix: setup editors add + page view responsive
This commit is contained in:
		@@ -32,13 +32,13 @@
 | 
				
			|||||||
        v-list-tile(avatar, @click='')
 | 
					        v-list-tile(avatar, @click='')
 | 
				
			||||||
          v-list-tile-avatar: v-icon(color='blue-grey') burst_mode
 | 
					          v-list-tile-avatar: v-icon(color='blue-grey') burst_mode
 | 
				
			||||||
          v-list-tile-content Images & Files
 | 
					          v-list-tile-content Images & Files
 | 
				
			||||||
    v-toolbar-title
 | 
					    v-toolbar-title.ml-2
 | 
				
			||||||
      span.subheading {{title}}
 | 
					      span.subheading {{title}}
 | 
				
			||||||
    v-spacer
 | 
					    v-spacer
 | 
				
			||||||
    transition(name='navHeaderSearch')
 | 
					    transition(name='navHeaderSearch')
 | 
				
			||||||
      v-text-field(
 | 
					      v-text-field(
 | 
				
			||||||
        ref='searchField',
 | 
					        ref='searchField',
 | 
				
			||||||
        v-if='searchIsShown',
 | 
					        v-if='searchIsShown && $vuetify.breakpoint.mdAndUp',
 | 
				
			||||||
        v-model='search',
 | 
					        v-model='search',
 | 
				
			||||||
        clearable,
 | 
					        clearable,
 | 
				
			||||||
        color='white',
 | 
					        color='white',
 | 
				
			||||||
@@ -61,6 +61,8 @@
 | 
				
			|||||||
    .navHeaderLoading.mr-3
 | 
					    .navHeaderLoading.mr-3
 | 
				
			||||||
      v-progress-circular(indeterminate, color='blue', :size='22', :width='2' v-show='isLoading')
 | 
					      v-progress-circular(indeterminate, color='blue', :size='22', :width='2' v-show='isLoading')
 | 
				
			||||||
    slot(name='actions')
 | 
					    slot(name='actions')
 | 
				
			||||||
 | 
					    v-btn(v-if='searchIsShown && $vuetify.breakpoint.smAndDown', icon)
 | 
				
			||||||
 | 
					      v-icon(color='grey') search
 | 
				
			||||||
    v-tooltip(bottom)
 | 
					    v-tooltip(bottom)
 | 
				
			||||||
      v-btn(icon, href='/a', slot='activator')
 | 
					      v-btn(icon, href='/a', slot='activator')
 | 
				
			||||||
        v-icon(color='grey') settings
 | 
					        v-icon(color='grey') settings
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -309,6 +309,16 @@ $material-colors: (
 | 
				
			|||||||
	'800': #37474f,
 | 
						'800': #37474f,
 | 
				
			||||||
	'900': #263238,
 | 
						'900': #263238,
 | 
				
			||||||
	'1000': #11171a
 | 
						'1000': #11171a
 | 
				
			||||||
 | 
					  ),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  'theme': (
 | 
				
			||||||
 | 
					    'primary': #1976D2,
 | 
				
			||||||
 | 
					    'secondary': #424242,
 | 
				
			||||||
 | 
					    'accent': #82B1FF,
 | 
				
			||||||
 | 
					    'error': #FF5252,
 | 
				
			||||||
 | 
					    'info': #2196F3,
 | 
				
			||||||
 | 
					    'success': #4CAF50,
 | 
				
			||||||
 | 
					    'warning': #FFC107
 | 
				
			||||||
  )
 | 
					  )
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,18 @@
 | 
				
			|||||||
<template lang="pug">
 | 
					<template lang="pug">
 | 
				
			||||||
  v-app
 | 
					  v-app
 | 
				
			||||||
    nav-header
 | 
					    nav-header
 | 
				
			||||||
    v-navigation-drawer.primary(dark, app, clipped, permanent)
 | 
					    v-navigation-drawer.primary(
 | 
				
			||||||
 | 
					      dark
 | 
				
			||||||
 | 
					      app
 | 
				
			||||||
 | 
					      clipped
 | 
				
			||||||
 | 
					      :mini-variant='$vuetify.breakpoint.md || $vuetify.breakpoint.sm'
 | 
				
			||||||
 | 
					      mini-variant-width='80'
 | 
				
			||||||
 | 
					      mobile-break-point='600'
 | 
				
			||||||
 | 
					      :temporary='$vuetify.breakpoint.xs'
 | 
				
			||||||
 | 
					      v-model='navShown'
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
      v-list(dense)
 | 
					      v-list(dense)
 | 
				
			||||||
        v-list-tile.pt-2
 | 
					        v-list-tile.pt-2(href='/')
 | 
				
			||||||
          v-list-tile-avatar: v-icon home
 | 
					          v-list-tile-avatar: v-icon home
 | 
				
			||||||
          v-list-tile-title Home
 | 
					          v-list-tile-title Home
 | 
				
			||||||
        v-divider.my-2
 | 
					        v-divider.my-2
 | 
				
			||||||
@@ -20,7 +29,10 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    v-content
 | 
					    v-content
 | 
				
			||||||
      v-toolbar(color='grey lighten-3', flat, dense)
 | 
					      v-toolbar(color='grey lighten-3', flat, dense)
 | 
				
			||||||
        v-breadcrumbs.pl-0(divider='/')
 | 
					        v-btn.pl-0(v-if='$vuetify.breakpoint.xsOnly', flat, @click='toggleNavigation')
 | 
				
			||||||
 | 
					          v-icon(color='grey darken-2', left) menu
 | 
				
			||||||
 | 
					          span Navigation
 | 
				
			||||||
 | 
					        v-breadcrumbs.pl-0(v-else, divider='/')
 | 
				
			||||||
          v-breadcrumbs-item Universe
 | 
					          v-breadcrumbs-item Universe
 | 
				
			||||||
          v-breadcrumbs-item Galaxy
 | 
					          v-breadcrumbs-item Galaxy
 | 
				
			||||||
          v-breadcrumbs-item Solar System
 | 
					          v-breadcrumbs-item Solar System
 | 
				
			||||||
@@ -28,21 +40,24 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      v-divider
 | 
					      v-divider
 | 
				
			||||||
      v-layout(row)
 | 
					      v-layout(row)
 | 
				
			||||||
        v-flex(xs10)
 | 
					        v-flex(xs12, lg9, xl10)
 | 
				
			||||||
          v-toolbar(color='grey lighten-4', flat, :height='90')
 | 
					          v-toolbar(color='grey lighten-4', flat, :height='90')
 | 
				
			||||||
            div
 | 
					            div
 | 
				
			||||||
              .headline.grey--text.text--darken-3 {{title}}
 | 
					              .headline.grey--text.text--darken-3 {{title}}
 | 
				
			||||||
              .caption.grey--text.text--darken-1 {{description}}
 | 
					              .caption.grey--text.text--darken-1 {{description}}
 | 
				
			||||||
          .contents
 | 
					          .contents
 | 
				
			||||||
            slot(name='contents')
 | 
					            slot(name='contents')
 | 
				
			||||||
        v-flex(xs2, fill-height)
 | 
					        v-flex(lg3, xl2, fill-height, v-if='$vuetify.breakpoint.lgAndUp')
 | 
				
			||||||
          v-toolbar(color='grey lighten-4', flat, :height='90')
 | 
					          v-toolbar(color='grey lighten-4', flat, :height='90')
 | 
				
			||||||
            div
 | 
					            div
 | 
				
			||||||
              .caption.grey--text.text--lighten-1 Last edited by
 | 
					              .caption.grey--text.text--lighten-1 Last edited by
 | 
				
			||||||
              .body-2.grey--text.text--darken-3 John Doe
 | 
					              .body-2.grey--text.text--darken-3 John Doe
 | 
				
			||||||
              .caption.grey--text.text--darken-1 Monday at 12:34 PM
 | 
					              .caption.grey--text.text--darken-1 Monday at 12:34 PM
 | 
				
			||||||
            v-spacer
 | 
					            v-spacer
 | 
				
			||||||
            v-icon edit
 | 
					            v-tooltip(bottom)
 | 
				
			||||||
 | 
					              v-btn(icon, slot='activator')
 | 
				
			||||||
 | 
					                v-icon(color='grey') edit
 | 
				
			||||||
 | 
					              span Edit Page
 | 
				
			||||||
          v-list.grey.lighten-3(dense)
 | 
					          v-list.grey.lighten-3(dense)
 | 
				
			||||||
            v-subheader.pl-4 Table of contents
 | 
					            v-subheader.pl-4 Table of contents
 | 
				
			||||||
            v-list-tile
 | 
					            v-list-tile
 | 
				
			||||||
@@ -79,6 +94,22 @@ export default {
 | 
				
			|||||||
      type: String,
 | 
					      type: String,
 | 
				
			||||||
      default: ''
 | 
					      default: ''
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  data() {
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					      navOpen: false
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  computed: {
 | 
				
			||||||
 | 
					    navShown: {
 | 
				
			||||||
 | 
					      get() { return this.navOpen || this.$vuetify.breakpoint.smAndUp },
 | 
				
			||||||
 | 
					      set(val) { this.navOpen = val }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  methods: {
 | 
				
			||||||
 | 
					    toggleNavigation () {
 | 
				
			||||||
 | 
					      this.navOpen = !this.navOpen
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,8 @@
 | 
				
			|||||||
/* THEME SPECIFIC STYLES */
 | 
					/* THEME SPECIFIC STYLES */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.contents {
 | 
					.contents {
 | 
				
			||||||
 | 
					  color: mc('grey', '800');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  h1 {
 | 
					  h1 {
 | 
				
			||||||
    padding-left: 16px;
 | 
					    padding-left: 16px;
 | 
				
			||||||
    color: mc('blue', '800');
 | 
					    color: mc('blue', '800');
 | 
				
			||||||
@@ -14,7 +16,7 @@
 | 
				
			|||||||
      left: 0;
 | 
					      left: 0;
 | 
				
			||||||
      width: 100%;
 | 
					      width: 100%;
 | 
				
			||||||
      height: 2px;
 | 
					      height: 2px;
 | 
				
			||||||
      background: linear-gradient(to right, mc('blue', '500'), rgba(mc('blue', '500'), 0));
 | 
					      background: linear-gradient(to right, mc('theme', 'primary'), rgba(mc('theme', 'primary'), 0));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    & + h2 {
 | 
					    & + h2 {
 | 
				
			||||||
@@ -41,5 +43,6 @@
 | 
				
			|||||||
  p {
 | 
					  p {
 | 
				
			||||||
    padding: 16px 16px 0 16px;
 | 
					    padding: 16px 16px 0 16px;
 | 
				
			||||||
    margin: 0;
 | 
					    margin: 0;
 | 
				
			||||||
 | 
					    text-align: justify;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,9 +44,8 @@ exports.up = knex => {
 | 
				
			|||||||
    .createTable('editors', table => {
 | 
					    .createTable('editors', table => {
 | 
				
			||||||
      table.increments('id').primary()
 | 
					      table.increments('id').primary()
 | 
				
			||||||
      table.string('key').notNullable().unique()
 | 
					      table.string('key').notNullable().unique()
 | 
				
			||||||
      table.string('title').notNullable()
 | 
					 | 
				
			||||||
      table.boolean('isEnabled').notNullable().defaultTo(false)
 | 
					      table.boolean('isEnabled').notNullable().defaultTo(false)
 | 
				
			||||||
      table.jsonb('config')
 | 
					      table.jsonb('config').notNullable()
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
    // GROUPS ------------------------------
 | 
					    // GROUPS ------------------------------
 | 
				
			||||||
    .createTable('groups', table => {
 | 
					    .createTable('groups', table => {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,10 +36,10 @@ module.exports = class Editor extends Model {
 | 
				
			|||||||
      const dbEditors = await WIKI.models.editors.query()
 | 
					      const dbEditors = await WIKI.models.editors.query()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      // -> Fetch definitions from disk
 | 
					      // -> Fetch definitions from disk
 | 
				
			||||||
      const editorDirs = await fs.readdir(path.join(WIKI.SERVERPATH, 'modules/editors'))
 | 
					      const editorDirs = await fs.readdir(path.join(WIKI.SERVERPATH, 'modules/editor'))
 | 
				
			||||||
      let diskEditors = []
 | 
					      let diskEditors = []
 | 
				
			||||||
      for (let dir of editorDirs) {
 | 
					      for (let dir of editorDirs) {
 | 
				
			||||||
        const def = await fs.readFile(path.join(WIKI.SERVERPATH, 'modules/editors', dir, 'definition.yml'), 'utf8')
 | 
					        const def = await fs.readFile(path.join(WIKI.SERVERPATH, 'modules/editor', dir, 'definition.yml'), 'utf8')
 | 
				
			||||||
        diskEditors.push(yaml.safeLoad(def))
 | 
					        diskEditors.push(yaml.safeLoad(def))
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      WIKI.data.editors = diskEditors.map(editor => ({
 | 
					      WIKI.data.editors = diskEditors.map(editor => ({
 | 
				
			||||||
@@ -72,7 +72,7 @@ module.exports = class Editor extends Model {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      if (newEditors.length > 0) {
 | 
					      if (newEditors.length > 0) {
 | 
				
			||||||
        await WIKI.models.storage.query().insert(newEditors)
 | 
					        await WIKI.models.editors.query().insert(newEditors)
 | 
				
			||||||
        WIKI.logger.info(`Loaded ${newEditors.length} new editors: [ OK ]`)
 | 
					        WIKI.logger.info(`Loaded ${newEditors.length} new editors: [ OK ]`)
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        WIKI.logger.info(`No new editors found: [ SKIPPED ]`)
 | 
					        WIKI.logger.info(`No new editors found: [ SKIPPED ]`)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user