diff --git a/client/components/admin/admin-pages.vue b/client/components/admin/admin-pages.vue
index dec02278..0327a70a 100644
--- a/client/components/admin/admin-pages.vue
+++ b/client/components/admin/admin-pages.vue
@@ -8,43 +8,72 @@
.headline.blue--text.text--darken-2 Pages
.subheading.grey--text Manage pages #[v-chip(label, color='primary', small).white--text coming soon]
v-spacer
- v-btn(color='grey', outline, @click='refresh', large, disabled)
+ v-btn(color='grey', outline, @click='refresh', large)
v-icon.grey--text refresh
v-btn(color='primary', depressed, large, @click='newpage', disabled)
v-icon(left) add
span New Page
- v-card.mt-3
+ v-card.wiki-form.mt-3
+ v-toolbar(flat, :color='$vuetify.dark ? `grey darken-3-d5` : `white`', height='80')
+ v-spacer
+ v-text-field(
+ outline
+ v-model='search'
+ append-icon='search'
+ label='Search Pages...'
+ single-line
+ hide-details
+ )
+ v-select.ml-2(
+ outline
+ hide-details
+ single-line
+ label='Locale'
+ )
+ v-select.ml-2(
+ outline
+ hide-details
+ single-line
+ label='Publish State'
+ )
+ v-spacer
+ v-divider
v-data-table(
- :items='groups'
+ :items='pages'
:headers='headers'
:search='search'
:pagination.sync='pagination'
:rows-per-page-items='[15]'
+ :loading='loading'
+ must-sort,
hide-actions
)
template(slot='items', slot-scope='props')
- tr.is-clickable(:active='props.selected', @click='$router.push("/e/" + props.item.id)')
+ tr.is-clickable(:active='props.selected', @click='$router.push(`/pages/` + props.item.id)')
td.text-xs-right {{ props.item.id }}
- td {{ props.item.name }}
- td {{ props.item.userCount }}
+ td
+ .body-2 {{ props.item.title }}
+ .caption {{ props.item.description }}
+ td.admin-pages-path
+ v-chip(label, small, :color='$vuetify.dark ? `grey darken-4` : `grey lighten-4`') {{ props.item.locale }}
+ span.ml-2.grey--text(:class='$vuetify.dark ? `text--lighten-1` : `text--darken-2`') {{ props.item.path }}
td {{ props.item.createdAt | moment('calendar') }}
td {{ props.item.updatedAt | moment('calendar') }}
template(slot='no-data')
v-alert.ma-3(icon='warning', :value='true', outline) No pages to display.
- .text-xs-center.py-2(v-if='this.pages > 0')
- v-pagination(v-model='pagination.page', :length='pages')
-
- page-selector(v-model='pageSelectorShown', mode='new')
+ .text-xs-center.py-2(v-if='this.pageTotal > 1')
+ v-pagination(v-model='pagination.page', :length='pageTotal')
diff --git a/client/components/editor/editor-modal-media.vue b/client/components/editor/editor-modal-media.vue
index b1ed1326..55b3c6d8 100644
--- a/client/components/editor/editor-modal-media.vue
+++ b/client/components/editor/editor-modal-media.vue
@@ -5,13 +5,13 @@
v-flex(xs9)
v-card.radius-7.animated.fadeInLeft.wait-p1s(light)
v-card-text
- v-toolbar.radius-7(color='teal lighten-5', dense, flat)
- .body-2.teal--text Images
- v-spacer
- v-btn(outline, small, color='teal')
+ .d-flex
+ v-toolbar.radius-7(color='teal lighten-5', dense, flat, height='44')
+ .body-2.teal--text Images
+ v-btn.ml-3.my-0.radius-7(outline, large, color='teal', disabled)
v-icon(left) keyboard_backspace
span Parent Folder
- v-btn(outline, small, color='teal')
+ v-btn.my-0.radius-7(outline, large, color='teal')
v-icon(left) add
span New Folder
v-list.mt-3(dense, two-line)
@@ -26,14 +26,14 @@
v-list-tile-action
.caption.pr-3 2019-04-07
v-list-tile-action
- v-chip(label, small) JPG
+ v-chip.teal--text(label, small, color='teal lighten-5') JPG
v-divider(v-if='idx < 10 - 1')
.d-flex.mt-3
- v-toolbar.radius-7(flat, color='grey lighten-4', dense)
+ v-toolbar.radius-7(flat, color='grey lighten-4', dense, height='44')
.body-2 / universe
v-spacer
.body-1.grey--text.text--darken-1 10 files
- v-btn.ml-3(color='teal', dark, @click='insert')
+ v-btn.ml-3.my-0.radius-7(color='teal', large, @click='insert', disabled)
v-icon(left) save_alt
span Insert
diff --git a/client/graph/admin/pages/pages-query-list.gql b/client/graph/admin/pages/pages-query-list.gql
new file mode 100644
index 00000000..0faf0785
--- /dev/null
+++ b/client/graph/admin/pages/pages-query-list.gql
@@ -0,0 +1,17 @@
+query {
+ pages {
+ list {
+ id
+ locale
+ path
+ title
+ description
+ contentType
+ isPublished
+ isPrivate
+ privateNS
+ createdAt
+ updatedAt
+ }
+ }
+}
diff --git a/server/graph/resolvers/page.js b/server/graph/resolvers/page.js
index df79cb3f..20489179 100644
--- a/server/graph/resolvers/page.js
+++ b/server/graph/resolvers/page.js
@@ -28,6 +28,21 @@ module.exports = {
}
}
},
+ async list (obj, args, context, info) {
+ return WIKI.models.pages.query().column([
+ 'id',
+ 'path',
+ { locale: 'localeCode' },
+ 'title',
+ 'description',
+ 'isPublished',
+ 'isPrivate',
+ 'privateNS',
+ 'contentType',
+ 'createdAt',
+ 'updatedAt'
+ ])
+ }
},
PageMutation: {
async create(obj, args, context) {
diff --git a/server/graph/schemas/page.graphql b/server/graph/schemas/page.graphql
index 24f93d8c..b8ba1819 100644
--- a/server/graph/schemas/page.graphql
+++ b/server/graph/schemas/page.graphql
@@ -26,6 +26,8 @@ type PageQuery {
path: String
locale: String
): PageSearchResponse! @auth(requires: ["manage:system", "read:pages"])
+
+ list: [PageListItem!]! @auth(requires: ["manage:system"])
}
# -----------------------------------------------
@@ -108,3 +110,17 @@ type PageSearchResult {
path: String!
locale: String!
}
+
+type PageListItem {
+ id: Int!
+ path: String!
+ locale: String!
+ title: String
+ description: String
+ contentType: String!
+ isPublished: Boolean!
+ isPrivate: Boolean!
+ privateNS: String
+ createdAt: Date!
+ updatedAt: Date!
+}