mirror of https://github.com/Requarks/wiki.git
18 changed files with 436 additions and 41 deletions
Split View
Diff Options
-
1client/app.js
-
19client/components/admin-general.vue
-
84client/components/admin-locale.vue
-
114client/components/admin-system.vue
-
49client/components/admin-theme.vue
-
76client/components/admin-users.vue
-
52client/components/admin.vue
-
32client/components/editor-code.vue
-
36client/components/nav-header.vue
-
6client/scss/base/icons.scss
-
1dev/webpack/webpack.common.js
-
1package.json
-
0server/modules/search/algolia.js
-
0server/modules/search/db.js
-
0server/modules/search/elasticsearch.js
-
0server/modules/search/solr.js
-
2server/views/master.pug
-
4yarn.lock
@ -0,0 +1,84 @@ |
|||
<template lang='pug'> |
|||
v-container(fluid, fill-height, grid-list-lg) |
|||
v-layout(row wrap) |
|||
v-flex(xs12) |
|||
.headline.blue--text.text--darken-2 Locale |
|||
.subheading.grey--text Set localization options for your wiki |
|||
v-form.pt-3 |
|||
v-layout(row wrap) |
|||
v-flex(lg6 xs12) |
|||
v-card |
|||
v-toolbar(color='blue', dark, dense, flat) |
|||
v-toolbar-title |
|||
.subheading Locale |
|||
v-btn(fab, absolute, right, bottom, small, light): v-icon save |
|||
v-card-text |
|||
v-select(:items='locales', prepend-icon='public', v-model='selectedLocale', label='Site Locale', persistent-hint, hint='All UI text elements will be displayed in selected language.') |
|||
template(slot='item', slot-scope='data') |
|||
v-list-tile-avatar |
|||
v-avatar.blue.white--text(tile, size='40', v-html='data.item.value.toUpperCase()') |
|||
v-list-tile-content |
|||
v-list-tile-title(v-html='data.item.text') |
|||
v-list-tile-sub-title(v-html='data.item.original') |
|||
v-divider |
|||
v-switch(v-model='rtlEnabled', label='RTL Text Display', color='blue darken-2', persistent-hint, hint='For Right-to-Left languages, e.g. Arabic') |
|||
v-flex(lg6 xs12) |
|||
v-card |
|||
v-toolbar(color='blue', dark, dense, flat) |
|||
v-toolbar-title |
|||
.subheading Download Locale |
|||
v-list |
|||
v-list-tile(@click='') |
|||
v-list-tile-avatar |
|||
v-avatar.blue.white--text(tile, size='40') ZH |
|||
v-list-tile-content |
|||
v-list-tile-title Chinese |
|||
v-list-tile-sub-title 中文 |
|||
v-list-tile-action |
|||
v-btn(icon) |
|||
v-icon.grey--text cloud_download |
|||
v-list-tile(@click='') |
|||
v-list-tile-avatar |
|||
v-avatar.blue.white--text(tile, size='40') EN |
|||
v-list-tile-content |
|||
v-list-tile-title English |
|||
v-list-tile-sub-title English |
|||
v-list-tile-action |
|||
v-icon.green--text check |
|||
v-list-tile(@click='') |
|||
v-list-tile-avatar |
|||
v-avatar.blue.white--text(tile, size='40') FR |
|||
v-list-tile-content |
|||
v-list-tile-title French |
|||
v-list-tile-sub-title Français |
|||
v-list-tile-action |
|||
v-icon.green--text check |
|||
v-list-tile(@click='') |
|||
v-list-tile-avatar |
|||
v-avatar.blue.white--text(tile, size='40') RU |
|||
v-list-tile-content |
|||
v-list-tile-title Russian |
|||
v-list-tile-sub-title Русский |
|||
v-list-tile-action |
|||
v-btn(icon) |
|||
v-icon.blue--text update |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
data() { |
|||
return { |
|||
locales: [ |
|||
{ text: 'English', original: 'English', value: 'en' }, |
|||
{ text: 'French', original: 'Français', value: 'fr' } |
|||
], |
|||
selectedLocale: 'en', |
|||
rtlEnabled: false |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang='scss'> |
|||
|
|||
</style> |
@ -0,0 +1,114 @@ |
|||
<template lang='pug'> |
|||
v-container(fluid, fill-height, grid-list-lg) |
|||
v-layout(row, wrap) |
|||
v-flex(xs12) |
|||
.headline.blue--text.text--darken-2 System Info |
|||
.subheading.grey--text Information about your system |
|||
v-layout.mt-3(row wrap) |
|||
v-flex(lg6 xs12) |
|||
v-card |
|||
v-btn(fab, absolute, right, top, small, light): v-icon refresh |
|||
v-list(two-line, dense) |
|||
v-subheader Wiki.js |
|||
v-list-tile(avatar) |
|||
v-list-tile-avatar |
|||
v-icon.blue.white--text system_update_alt |
|||
v-list-tile-content |
|||
v-list-tile-title Current Version |
|||
v-list-tile-sub-title 2.0.0 |
|||
v-list-tile(avatar) |
|||
v-list-tile-avatar |
|||
v-icon.blue.white--text open_in_browser |
|||
v-list-tile-content |
|||
v-list-tile-title Latest Version |
|||
v-list-tile-sub-title 2.0.0 |
|||
v-list-tile-action |
|||
v-list-tile-action-text Published 4 days ago |
|||
|
|||
v-divider |
|||
|
|||
v-subheader Host Information |
|||
v-list-tile(avatar) |
|||
v-list-tile-avatar |
|||
v-icon.blue-grey.white--text bubble_chart |
|||
v-list-tile-content |
|||
v-list-tile-title Operating System |
|||
v-list-tile-sub-title Linux (linux) 4.4.0-116-generic x64 |
|||
v-list-tile(avatar) |
|||
v-list-tile-avatar |
|||
v-icon.blue-grey.white--text computer |
|||
v-list-tile-content |
|||
v-list-tile-title Hostname |
|||
v-list-tile-sub-title wikijs |
|||
v-list-tile(avatar) |
|||
v-list-tile-avatar |
|||
v-icon.blue-grey.white--text nfc |
|||
v-list-tile-content |
|||
v-list-tile-title CPU Cores |
|||
v-list-tile-sub-title 8 |
|||
v-list-tile(avatar) |
|||
v-list-tile-avatar |
|||
v-icon.blue-grey.white--text memory |
|||
v-list-tile-content |
|||
v-list-tile-title Total RAM |
|||
v-list-tile-sub-title 16.0 Gb |
|||
v-list-tile(avatar) |
|||
v-list-tile-avatar |
|||
v-icon.blue-grey.white--text last_page |
|||
v-list-tile-content |
|||
v-list-tile-title Working Directory |
|||
v-list-tile-sub-title /var/wiki |
|||
|
|||
v-flex(lg6 xs12) |
|||
v-card.pb-3 |
|||
v-list(dense) |
|||
v-subheader Node.js |
|||
v-list-tile(avatar) |
|||
v-list-tile-avatar |
|||
v-avatar.light-green(size='40') |
|||
icon-node-js(fillColor='#FFFFFF') |
|||
v-list-tile-content |
|||
v-list-tile-title v8.9.4 |
|||
|
|||
v-divider |
|||
|
|||
v-subheader Redis |
|||
v-list-tile(avatar) |
|||
v-list-tile-avatar |
|||
v-avatar.red(size='40') |
|||
icon-cube(fillColor='#FFFFFF') |
|||
v-list-tile-content |
|||
v-list-tile-title 4.0.8 |
|||
|
|||
v-divider |
|||
|
|||
v-subheader PostgreSQL |
|||
v-list-tile(avatar) |
|||
v-list-tile-avatar |
|||
v-avatar.indigo.darken-1(size='40') |
|||
icon-database(fillColor='#FFFFFF') |
|||
v-list-tile-content |
|||
v-list-tile-title 9.6.8 |
|||
|
|||
</template> |
|||
|
|||
<script> |
|||
import IconCube from 'mdi/cube' |
|||
import IconDatabase from 'mdi/database' |
|||
import IconNodeJs from 'mdi/nodejs' |
|||
|
|||
export default { |
|||
components: { |
|||
IconCube, |
|||
IconDatabase, |
|||
IconNodeJs |
|||
}, |
|||
data() { |
|||
return {} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang='scss'> |
|||
|
|||
</style> |
@ -0,0 +1,49 @@ |
|||
<template lang='pug'> |
|||
v-container(fluid, fill-height, grid-list-lg) |
|||
v-layout(row wrap) |
|||
v-flex(xs12) |
|||
.headline.blue--text.text--darken-2 Theme |
|||
.subheading.grey--text Modify the look & feel of your wiki |
|||
v-form.pt-3 |
|||
v-layout(row wrap) |
|||
v-flex(lg6 xs12) |
|||
v-card |
|||
v-toolbar(color='blue', dark, dense, flat) |
|||
v-toolbar-title |
|||
.subheading Theme |
|||
v-btn(fab, absolute, right, bottom, small, light): v-icon save |
|||
v-card-text |
|||
v-select(:items='themes', prepend-icon='palette', v-model='selectedTheme', label='Site Theme', persistent-hint, hint='Themes affect how content pages are displayed. Other site sections (such as the editor or admin area) are not affected.') |
|||
template(slot='item', slot-scope='data') |
|||
v-list-tile-avatar |
|||
v-icon.blue--text(dark) filter_frames |
|||
v-list-tile-content |
|||
v-list-tile-title(v-html='data.item.text') |
|||
v-list-tile-sub-title(v-html='data.item.author') |
|||
v-divider |
|||
v-switch(v-model='darkMode', label='Dark Mode', color='blue darken-2', persistent-hint, hint='Not recommended for accessibility') |
|||
v-flex(lg6 xs12) |
|||
v-card |
|||
v-toolbar(color='blue', dark, dense, flat) |
|||
v-toolbar-title |
|||
.subheading Theme Options |
|||
v-list |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
data() { |
|||
return { |
|||
themes: [ |
|||
{ text: 'Default', author: 'requarks.io', value: 'default' } |
|||
], |
|||
selectedTheme: 'default', |
|||
darkMode: false |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang='scss'> |
|||
|
|||
</style> |
@ -0,0 +1,76 @@ |
|||
<template lang='pug'> |
|||
v-container(fluid, fill-height, grid-list-lg) |
|||
v-layout(row wrap) |
|||
v-flex(xs12) |
|||
.headline.blue--text.text--darken-2 Users |
|||
.subheading.grey--text Manage users |
|||
v-card.mt-3.elevation-1 |
|||
v-card-title |
|||
v-btn() New User |
|||
v-btn() Authorize User |
|||
v-spacer |
|||
v-text-field(append-icon='search', label='Search', single-line, hide-details, v-model='search') |
|||
v-data-table( |
|||
v-model='selected' |
|||
:items='items', |
|||
:headers='headers', |
|||
:search='search', |
|||
:pagination.sync='pagination', |
|||
select-all, |
|||
hide-actions |
|||
) |
|||
template(slot='items', slot-scope='props') |
|||
tr(:active='props.selected', @click='props.selected = !props.selected') |
|||
td |
|||
v-checkbox(hide-details, :input-value='props.selected') |
|||
td.text-xs-right {{ props.item.id }} |
|||
td {{ props.item.email }} |
|||
td {{ props.item.name }} |
|||
td {{ props.item.provider }} |
|||
template(slot='no-data') |
|||
v-alert(icon='warning', :value='true') No users to display! |
|||
.text-xs-center.py-2 |
|||
v-pagination(v-model='pagination.page', :length='pages') |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
data() { |
|||
return { |
|||
selected: [], |
|||
pagination: {}, |
|||
items: [ |
|||
{ id: 1, email: 'user@test.com', name: 'John Doe', provider: 'local' } |
|||
], |
|||
headers: [ |
|||
{ |
|||
text: 'ID', |
|||
align: 'right', |
|||
value: 'id', |
|||
width: 80 |
|||
}, |
|||
{ text: 'Email', value: 'email' }, |
|||
{ text: 'Name', value: 'name' }, |
|||
{ text: 'Provider', value: 'provider' }, |
|||
{ text: 'Created On', value: 'createdOn' }, |
|||
{ text: 'Updated On', value: 'updatedOn' }, |
|||
{ text: 'Actions', value: 'actions', sortable: false } |
|||
], |
|||
search: '' |
|||
} |
|||
}, |
|||
computed: { |
|||
pages () { |
|||
if (this.pagination.rowsPerPage == null || this.pagination.totalItems == null) { |
|||
return 0 |
|||
} |
|||
|
|||
return Math.ceil(this.pagination.totalItems / this.pagination.rowsPerPage) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang='scss'> |
|||
|
|||
</style> |
@ -0,0 +1,36 @@ |
|||
<template lang='pug'> |
|||
v-toolbar(color='black', dark, app, clipped-left, fixed, flat) |
|||
v-toolbar-side-icon(@click.native='') |
|||
v-toolbar-title |
|||
span.subheading Wiki.js |
|||
v-spacer |
|||
v-progress-circular.mr-3(indeterminate, color='blue') |
|||
v-btn(icon) |
|||
v-icon(color='grey') search |
|||
v-btn(icon, @click.native='darkTheme = !darkTheme') |
|||
v-icon(color='grey') settings |
|||
v-menu(offset-y, min-width='300') |
|||
v-btn(icon, slot='activator') |
|||
v-icon(color='grey') account_circle |
|||
v-list.py-0 |
|||
v-list-tile.py-3(avatar) |
|||
v-list-tile-avatar |
|||
v-avatar.red(:size='40'): span.white--text.subheading JD |
|||
v-list-tile-content |
|||
v-list-tile-title John Doe |
|||
v-list-tile-sub-title john.doe@example.com |
|||
v-divider.my-0 |
|||
v-list-tile(@click='') |
|||
v-list-tile-action: v-icon(color='red') exit_to_app |
|||
v-list-tile-title Logout |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
|
|||
} |
|||
</script> |
|||
|
|||
<style> |
|||
|
|||
</style> |
Write
Preview
Loading…
Cancel
Save