From 6ab622a83d6e35698f4ae05e10796ea90176b5be Mon Sep 17 00:00:00 2001 From: Tobias Klika Date: Sat, 11 Apr 2020 19:04:29 +0200 Subject: [PATCH] nested routing seems to work :-) --- .gitignore | 1 + zero.Web/App/app.vue | 2 +- zero.Web/App/axios.config.js | 6 +- zero.Web/App/pages/pages/page.vue | 113 ++---------------- zero.Web/App/pages/pages/pages.vue | 109 +++++++++++++++++ zero.Web/App/pages/settings/settings.vue | 1 + .../App/{app.router.js => router.config.js} | 40 ++++++- zero.Web/ZeroVue.cs | 3 + 8 files changed, 164 insertions(+), 111 deletions(-) create mode 100644 zero.Web/App/pages/pages/pages.vue rename zero.Web/App/{app.router.js => router.config.js} (63%) diff --git a/.gitignore b/.gitignore index 41e03aa3..97ef142a 100644 --- a/.gitignore +++ b/.gitignore @@ -267,4 +267,5 @@ wwwroot/Media/ Temp/ **/Assets/app.* **/Assets/setup.* +**/Assets/*.js deps/*.dll \ No newline at end of file diff --git a/zero.Web/App/app.vue b/zero.Web/App/app.vue index 04d758a3..f2a1cf24 100644 --- a/zero.Web/App/app.vue +++ b/zero.Web/App/app.vue @@ -17,7 +17,7 @@ import AppNavigation from 'zero/navigation.vue' import AppLogin from 'zeropages/login/login.vue' import AppOverlays from 'zerocomponents/overlays/overlay-holder.vue' - import Router from 'zero/app.router.js' + import Router from 'zero/router.config.js' import AuthApi from 'zeroservices/auth.js' import 'zero/axios.config.js' diff --git a/zero.Web/App/axios.config.js b/zero.Web/App/axios.config.js index d9841089..8aae4e86 100644 --- a/zero.Web/App/axios.config.js +++ b/zero.Web/App/axios.config.js @@ -1,12 +1,12 @@ import Axios from 'axios'; import Auth from 'zeroservices/auth'; -if (!zero || !zero.path) +if (!zero || !zero.apiPath) { - throw Exception('window.zero and zero.path (= base path) have to be configured'); + throw Exception('window.zero and zero.apiPath (= base path to the backoffice API) have to be configured'); } -Axios.defaults.baseURL = zero.path + 'api/'; +Axios.defaults.baseURL = zero.apiPath; Axios.defaults.withCredentials = true; Axios.interceptors.response.use(response => response, error => diff --git a/zero.Web/App/pages/pages/page.vue b/zero.Web/App/pages/pages/page.vue index 79a05855..77b00d50 100644 --- a/zero.Web/App/pages/pages/page.vue +++ b/zero.Web/App/pages/pages/page.vue @@ -1,48 +1,26 @@  - - - \ No newline at end of file + \ No newline at end of file diff --git a/zero.Web/App/pages/pages/pages.vue b/zero.Web/App/pages/pages/pages.vue new file mode 100644 index 00000000..9974e752 --- /dev/null +++ b/zero.Web/App/pages/pages/pages.vue @@ -0,0 +1,109 @@ + + + + + + + \ No newline at end of file diff --git a/zero.Web/App/pages/settings/settings.vue b/zero.Web/App/pages/settings/settings.vue index 80035f85..7636430b 100644 --- a/zero.Web/App/pages/settings/settings.vue +++ b/zero.Web/App/pages/settings/settings.vue @@ -15,6 +15,7 @@ + diff --git a/zero.Web/App/app.router.js b/zero.Web/App/router.config.js similarity index 63% rename from zero.Web/App/app.router.js rename to zero.Web/App/router.config.js index 46ce8e57..ba0c6cb1 100644 --- a/zero.Web/App/app.router.js +++ b/zero.Web/App/router.config.js @@ -1,7 +1,6 @@ import Vue from 'vue'; import VueRouter from 'vue-router'; import Localization from 'zeroservices/localization'; -import ViewDefault from 'zeropages/pages/page'; Vue.use(VueRouter); @@ -13,18 +12,45 @@ const routes = []; let addSection = (section, component) => { - routes.push({ - path: section.url, + let route = { + path: section.url, component: component, meta: { section: section } - }); + }; + + //if (section.alias != 'pages') + //{ + // route.component = component; + //} + //else + //{ + // route.components = { + // default: component, + // footer: () => import('zeropages/' + section.alias + '/user') + // }; + //} + + routes.push(route); + + return route; }; zero.sections.forEach(section => { - addSection(section, () => import('zeropages/' + section.alias + '/' + section.alias)); + let route = addSection(section, () => import('zeropages/' + section.alias + '/' + section.alias)); + + if (section.alias === 'pages') + { + route.children = [{ + path: ':page', + props: true, + name: 'page', + component: () => import('zeropages/' + section.alias + '/page') + }]; + + } if (section.children.length > 0) { @@ -35,11 +61,13 @@ zero.sections.forEach(section => } }); +console.table(routes); + // add fallback route (this should probably by 404 page) -routes.push({ path: '*', component: ViewDefault }); +//routes.push({ path: '*', component: ViewDefault }); diff --git a/zero.Web/ZeroVue.cs b/zero.Web/ZeroVue.cs index b67537ad..0f0fe9f0 100644 --- a/zero.Web/ZeroVue.cs +++ b/zero.Web/ZeroVue.cs @@ -42,6 +42,7 @@ namespace zero.Web ZeroVueConfig config = new ZeroVueConfig(); config.Path = Options.BackofficePath.EnsureEndsWith('/'); + config.ApiPath = config.Path + "api/"; config.Sections = CreateSections(); config.Translations = CreateTranslations(); config.Applications = await CreateApplications(); @@ -137,6 +138,8 @@ namespace zero.Web { public string Path { get; set; } + public string ApiPath { get; set; } + public IList Sections { get; set; } = new List(); public IList Applications { get; set; } = new List();