diff --git a/README.md b/README.md index e70ca0c..7875a83 100644 --- a/README.md +++ b/README.md @@ -78,9 +78,12 @@ $specificData = [ "exampleHardData" => 'Example hard value' ]; -$data = array_merge($genericData, $specificData); +$pageData = array_merge($genericData, $specificData); -echo json_encode($data); +echo json_encode([ + "page" => $pageData, + "user" => $userData +]); ``` `$genericData` are defined in the `/public/site/controllers/site.php` controllers. By default, it contains a simple representation of the page object. diff --git a/public/site/controllers/site.php b/public/site/controllers/site.php index 596e4d4..ac73d43 100644 --- a/public/site/controllers/site.php +++ b/public/site/controllers/site.php @@ -1,9 +1,24 @@ toArray(); $data['template'] = (string) $page->template(); + + $userData = [ + "role" => $kirby->user()->role(), + "uuid" => $kirby->user()->uuid(), + "notifications" => Yaml::decode($kirby->user()->notifications()->value()), + ]; + + if ($kirby->user()->role() == 'client') { + $userData['client'] = [ + "name" => $kirby->user()->client()->toPage()->title(), + "uuid" => $kirby->user()->client()->toPage()->uuid() + ]; + } + return [ 'genericData' => $data, + 'userData' => $userData ]; }; \ No newline at end of file diff --git a/public/site/snippets/footer.php b/public/site/snippets/footer.php index 598ef71..691287b 100644 --- a/public/site/snippets/footer.php +++ b/public/site/snippets/footer.php @@ -1,19 +1,2 @@ - \ No newline at end of file diff --git a/public/site/templates/client-brief.json.php b/public/site/templates/client-brief.json.php index b05b3d9..2f957f9 100644 --- a/public/site/templates/client-brief.json.php +++ b/public/site/templates/client-brief.json.php @@ -11,6 +11,9 @@ $specificData = [ "moodboard" => $moodboard ]; -$data = array_merge($genericData, $specificData); +$pageData = array_merge($genericData, $specificData); -echo json_encode($data); \ No newline at end of file +echo json_encode([ + "page" => $pageData, + "user" => $userData +]); \ No newline at end of file diff --git a/public/site/templates/example.json.php b/public/site/templates/example.json.php index 148baf1..8c7cbe7 100644 --- a/public/site/templates/example.json.php +++ b/public/site/templates/example.json.php @@ -5,6 +5,9 @@ $specificData = [ "exampleHardData" => 'Example hard value' ]; -$data = array_merge($genericData, $specificData); +$pageData = array_merge($genericData, $specificData); -echo json_encode($data); \ No newline at end of file +echo json_encode([ + "page" => $pageData, + "user" => $userData +]); \ No newline at end of file diff --git a/public/site/templates/home.json.php b/public/site/templates/home.json.php index be91710..abd808b 100644 --- a/public/site/templates/home.json.php +++ b/public/site/templates/home.json.php @@ -5,6 +5,9 @@ $specificData = [ 'blocks' => $blocks ]; -$data = array_merge($genericData, $specificData); +$pageData = array_merge($genericData, $specificData); -echo json_encode($data); \ No newline at end of file +echo json_encode([ + "page" => $pageData, + "user" => $userData +]); \ No newline at end of file diff --git a/public/site/templates/images-resources.json.php b/public/site/templates/images-resources.json.php index 7a56453..9d3875d 100644 --- a/public/site/templates/images-resources.json.php +++ b/public/site/templates/images-resources.json.php @@ -16,6 +16,9 @@ $specificData = [ "images" => $images ]; -$data = array_merge($genericData, $specificData); +$pageData = array_merge($genericData, $specificData); -echo json_encode($data); \ No newline at end of file +echo json_encode([ + "page" => $pageData, + "user" => $userData +]); \ No newline at end of file diff --git a/public/site/templates/inspirations.json.php b/public/site/templates/inspirations.json.php index e779b3f..30db0c4 100644 --- a/public/site/templates/inspirations.json.php +++ b/public/site/templates/inspirations.json.php @@ -26,6 +26,9 @@ $specificData = [ "inspirations" => $inspirations ]; -$data = array_merge($genericData, $specificData); +$pageData = array_merge($genericData, $specificData); -echo json_encode($data); \ No newline at end of file +echo json_encode([ + "page" => $pageData, + "user" => $userData +]); \ No newline at end of file diff --git a/public/site/templates/notifications.json.php b/public/site/templates/notifications.json.php index 999c8d3..6e9d2af 100644 --- a/public/site/templates/notifications.json.php +++ b/public/site/templates/notifications.json.php @@ -4,6 +4,9 @@ $specificData = [ 'title' => $page->title()->value(), ]; -$data = array_merge($genericData, $specificData); +$pageData = array_merge($genericData, $specificData); -echo json_encode($data); \ No newline at end of file +echo json_encode([ + "page" => $pageData, + "user" => $userData +]); \ No newline at end of file diff --git a/public/site/templates/project.json.php b/public/site/templates/project.json.php index c1e3db8..44f3bfd 100644 --- a/public/site/templates/project.json.php +++ b/public/site/templates/project.json.php @@ -8,6 +8,9 @@ $project = [ 'steps' => $page->getSteps(), ]; -$data = array_merge($genericData, $project); +$pageData = array_merge($genericData, $project); -echo json_encode($data); \ No newline at end of file +echo json_encode([ + "page" => $pageData, + "user" => $userData +]); \ No newline at end of file diff --git a/public/site/templates/projects.json.php b/public/site/templates/projects.json.php index 3cd43bd..5971c16 100644 --- a/public/site/templates/projects.json.php +++ b/public/site/templates/projects.json.php @@ -15,6 +15,9 @@ $specificData = [ "children" => $children, ]; -$data = array_merge($genericData, $specificData); +$pageData = array_merge($genericData, $specificData); -echo json_encode($data); +echo json_encode([ + "page" => $pageData, + "user" => $userData +]); diff --git a/public/site/templates/reunions.json.php b/public/site/templates/reunions.json.php index 999c8d3..6e9d2af 100644 --- a/public/site/templates/reunions.json.php +++ b/public/site/templates/reunions.json.php @@ -4,6 +4,9 @@ $specificData = [ 'title' => $page->title()->value(), ]; -$data = array_merge($genericData, $specificData); +$pageData = array_merge($genericData, $specificData); -echo json_encode($data); \ No newline at end of file +echo json_encode([ + "page" => $pageData, + "user" => $userData +]); \ No newline at end of file diff --git a/src/App.vue b/src/App.vue index 02f59fc..f4a960c 100644 --- a/src/App.vue +++ b/src/App.vue @@ -13,7 +13,4 @@ import Menu from "./components/Menu.vue"; import { usePageStore } from "./stores/page"; const { page } = storeToRefs(usePageStore()); - -const { user } = storeToRefs(useUserStore()); -user.value = kirbyData.user; diff --git a/src/router/router.js b/src/router/router.js index 79fb91f..0e25560 100644 --- a/src/router/router.js +++ b/src/router/router.js @@ -2,6 +2,7 @@ import { createWebHistory, createRouter } from "vue-router"; import routes from "./routes"; import { useApiStore } from "../stores/api"; import { usePageStore } from "../stores/page"; +import { useUserStore } from "../stores/user"; import { getActivePinia } from "pinia"; const router = createRouter({ @@ -12,12 +13,14 @@ const router = createRouter({ router.beforeEach(async (to, from, next) => { const pinia = getActivePinia(); const api = useApiStore(pinia); - const page = usePageStore(pinia); + const pageStore = usePageStore(pinia); + const userStore = useUserStore(pinia); try { - const res = await api.fetchPageData(to.path); + const res = await api.fetchData(to.path); - page.page = res; + pageStore.page = res.page; + userStore.user = res.user; next(); } catch (error) { console.error(error); diff --git a/src/stores/addImagesModal.js b/src/stores/addImagesModal.js index 574b058..2f8d1a9 100644 --- a/src/stores/addImagesModal.js +++ b/src/stores/addImagesModal.js @@ -55,10 +55,10 @@ export const useAddImagesModalStore = defineStore("add-images-modal", () => { const api = useApiStore(); api - .fetchPageData("materials") + .fetchData("materials") .then((json) => (images.value = tabs.value[1].images = json.images)); - api.fetchPageData("creations").then((json) => { + api.fetchData("creations").then((json) => { images.value = tabs.value[2].images = json.images; }); diff --git a/src/stores/api.js b/src/stores/api.js index 0d648c5..5cf9389 100644 --- a/src/stores/api.js +++ b/src/stores/api.js @@ -16,7 +16,7 @@ export const useApiStore = defineStore("api", () => { * * @example * // Fetch data for the current page - * fetchPageData().then(data => { + * fetchData().then(data => { * console.log(data); * }).catch(error => { * console.error('Error fetching data:', error); @@ -24,13 +24,13 @@ export const useApiStore = defineStore("api", () => { * * @example * // Fetch data for a specific path - * fetchPageData('/about').then(data => { + * fetchData('/about').then(data => { * console.log(data); * }).catch(error => { * console.error('Error fetching data:', error); * }); */ - async function fetchPageData(path = window.location.pathname) { + async function fetchData(path = window.location.pathname) { const isHomePage = path === "/"; path = path === "/" ? "/home" : path; path = path.startsWith("/") ? path : "/" + path; @@ -120,5 +120,5 @@ export const useApiStore = defineStore("api", () => { } } - return { fetchDataThroughKQL, fetchPageData, fetchRoute }; + return { fetchDataThroughKQL, fetchData, fetchRoute }; }); diff --git a/src/stores/projects.js b/src/stores/projects.js index 79e340d..bbad9a2 100644 --- a/src/stores/projects.js +++ b/src/stores/projects.js @@ -14,8 +14,8 @@ export const useProjectsStore = defineStore("projects", () => { const api = useApiStore(); api - .fetchPageData("projects") - .then((json) => (projects.value = json.children)); + .fetchData("projects") + .then((json) => (projects.value = json.page.children)); return { projects, currentProjects, archivedProjects }; });