diff --git a/zero.Web.UI/App/components/forms/form.vue b/zero.Web.UI/App/components/forms/form.vue index e4366069..3ca1590c 100644 --- a/zero.Web.UI/App/components/forms/form.vue +++ b/zero.Web.UI/App/components/forms/form.vue @@ -141,7 +141,7 @@ .catch(exception => { this.loadingState = 'error'; - this.loadingError = error; + this.loadingError = exception; }); }); }, diff --git a/zero.Web.UI/App/pages/pages/create.vue b/zero.Web.UI/App/pages/pages/create.vue index d1111c14..f6d186ae 100644 --- a/zero.Web.UI/App/pages/pages/create.vue +++ b/zero.Web.UI/App/pages/pages/create.vue @@ -1,5 +1,5 @@  @@ -46,63 +46,30 @@ created() { - console.info(this.config.parent); this.model.parentId = this.config.parent ? this.config.parent.id : null; }, - methods: { - - onLoad(form) + mounted() + { + PagesApi.getAllowedPageTypes(this.model.parentId).then(response => { - form.load(PagesApi.getAllowedPageTypes(this.model.parentId)).then(response => - { - this.pageTypes = response; - this.loading = false; - }); - }, + this.pageTypes = response; + this.loading = false; + }); + }, + + methods: { onSelect(item) { this.config.close(); this.$router.push({ name: 'page-create', - params: { type: item.alias } + params: { type: item.alias, parent: this.model.parentId } }); }, - - - onSubmit(form) - { - //form.handle(TranslationsApi.save(this.item)).then(response => - //{ - // console.info(response); - //}); - }, - - onDelete() - { - //Overlay.confirmDelete().then((opts) => - //{ - // opts.state('loading'); - - // TranslationsApi.delete(this.model.id).then(response => - // { - // if (response.success) - // { - // opts.state('success'); - // opts.hide(); - // this.config.close(); - // } - // else - // { - // opts.errors(response.errors); - // } - // }); - //}); - } - } } diff --git a/zero.Web.UI/App/pages/pages/page.vue b/zero.Web.UI/App/pages/pages/page.vue index 1c50a4d0..65c23613 100644 --- a/zero.Web.UI/App/pages/pages/page.vue +++ b/zero.Web.UI/App/pages/pages/page.vue @@ -23,7 +23,7 @@ export default { - props: ['id', 'type'], + props: ['id', 'type', 'parent'], components: { UiEditor }, @@ -88,7 +88,7 @@ onLoad(form) { - form.load(PagesApi.getById(this.$route.params.id)).then(response => + form.load(!this.id ? PagesApi.getEmpty(this.type, this.parent) : PagesApi.getById(this.id)).then(response => { this.renderer = 'page.' + response.entity.pageTypeAlias; this.model = response.entity; diff --git a/zero.Web.UI/App/pages/pages/routes.js b/zero.Web.UI/App/pages/pages/routes.js index bb86ddec..589bb9e2 100644 --- a/zero.Web.UI/App/pages/pages/routes.js +++ b/zero.Web.UI/App/pages/pages/routes.js @@ -14,7 +14,7 @@ if (section) }); routes.push({ - path: 'create/:type', + path: 'create/:type/:parent?', props: true, name: 'page-create', component: () => import('zero/pages/' + alias + '/page') diff --git a/zero.Web.UI/App/resources/pages.js b/zero.Web.UI/App/resources/pages.js index 23399d6b..b6e3b180 100644 --- a/zero.Web.UI/App/resources/pages.js +++ b/zero.Web.UI/App/resources/pages.js @@ -23,9 +23,9 @@ export default { }, // get new media model - getEmpty() + getEmpty(type, parent) { - return Axios.get(base + 'getEmpty').then(res => Promise.resolve(res.data)); + return Axios.get(base + 'getEmpty', { params: { type, parent } }).then(res => Promise.resolve(res.data)); }, // get all media items diff --git a/zero.Web/Controllers/PagesController.cs b/zero.Web/Controllers/PagesController.cs index c11e6155..c3265d74 100644 --- a/zero.Web/Controllers/PagesController.cs +++ b/zero.Web/Controllers/PagesController.cs @@ -5,7 +5,7 @@ using zero.Core.Entities; namespace zero.Web.Controllers { - public class PagesController : BackofficeController where T : IPage + public class PagesController : BackofficeController where T : IPage, new() { IPagesApi Api; @@ -23,6 +23,12 @@ namespace zero.Web.Controllers public async Task GetById([FromQuery] string id) => Edit(await Api.GetById(id)); + public IActionResult GetEmpty(string type, string parent = null) => Edit(new T() + { + PageTypeAlias = type, + ParentId = parent + }); + public async Task Save([FromBody] T model) => Json(await Api.Save(model)); diff --git a/zero.Web/Views/Index.cshtml b/zero.Web/Views/Index.cshtml index 7b7f9492..fce66751 100644 --- a/zero.Web/Views/Index.cshtml +++ b/zero.Web/Views/Index.cshtml @@ -16,7 +16,7 @@ zero - +