implemented post management dashboard and started work on projects

This commit is contained in:
2024-06-02 00:58:11 +02:00
parent 8c56a9421e
commit a0a938021d
29 changed files with 969 additions and 595 deletions

View File

@@ -0,0 +1,75 @@
'use server'
import { getCookieAuth } from "@/app/lib/actions";
import AdminPanel from "@/components/server/admin/adminPanel";
import ServerAdminPanel from "@/components/server/admin/ServerAdminPanel";
import AuthHandler from "@/components/server/admin/authHandler";
import Sidebar from "@/components/server/admin/views/sidebar";
import { cookies } from "next/headers";
import PostView from "@/components/server/admin/views/PostView";
import { ReactNode } from "react";
type Props = {
params: {
slug: string[]
};
}
export type SidebarEntry = {
label:string;
view:string;
}
function Home(){
return <div>home</div>
}
function PostManager(){
return <div>posts</div>
}
async function getViewMap():Promise<Map<string, JSX.Element>>{
return new Map([
['home', <Home></Home>],
['man-post', <PostView></PostView>]
]);
}
async function getSidebarEntries():Promise<Array<SidebarEntry>>{
return [
{ label: 'Home', view: 'home'},
{ label: 'Post Management', view: 'man-post'},
{ label: 'Project Management', view: 'man-proj'},
{ label: 'Tag Management', view: 'man-tags'},
{ label: 'User Management', view: 'man-user'},
]
}
async function getCurrentView(view:string):Promise<JSX.Element>{
const viewMap = await getViewMap();
const viewJSX = viewMap.get(view);
return viewJSX ? viewJSX : <Home></Home>;
}
export default async function Page(props:Props){
const sidebarEntries:Array<SidebarEntry> = await getSidebarEntries();
const slug:string|string[] = props.params.slug ? props.params.slug : 'home';
return (
<main className="h-screen w-screen flex flex-col p-0 bg-gray-300 box-border m-0">
<AuthHandler params={null}>
<Sidebar sidebarEntries={sidebarEntries} slug={slug.toString()}></Sidebar>
<AdminPanel slug={slug.toString()} auth={await getCookieAuth()}>
{await getCurrentView(slug.toString())}
</AdminPanel>
</AuthHandler>
{/* <section>{JSON.stringify(cookies().getAll())}</section> */}
</main>
);
}

View File

@@ -1,4 +1,4 @@
import '../globals.css'
// import '../globals.css'
import { Inter } from 'next/font/google'
import StyledJsxRegistry from '../registry';
import Providers from '@/providers/providers';

View File

@@ -1,12 +1,45 @@
import AdminPanel from "@/components/client/admin/adminPanel";
'use server'
import { getCookieAuth } from "@/app/lib/actions";
import AdminPanel from "@/components/server/admin/adminPanel";
import ServerAdminPanel from "@/components/server/admin/ServerAdminPanel";
import AuthHandler from "@/components/server/admin/authHandler";
import Sidebar from "@/components/server/admin/views/sidebar";
import { cookies } from "next/headers";
type Props = {
params: {
slug: string[]
};
}
export default async function Page(){
export type SidebarEntry = {
label:string;
view:string;
}
async function getSidebarEntries():Promise<Array<SidebarEntry>>{
return [
{ label: 'Home', view: 'home'},
{ label: 'Post Management', view: 'man-post'},
{ label: 'Project Management', view: 'man-proj'},
{ label: 'Tag Management', view: 'man-tags'},
{ label: 'User Management', view: 'man-user'},
]
}
export default async function Page(props:Props){
const sidebarEntries:Array<SidebarEntry> = await getSidebarEntries();
const slug:string|string[] = props.params.slug ? props.params.slug : 'home';
return (
<main className="h-screen w-screen flex flex-col p-0 bg-background-500 box-border m-0">
<AuthHandler params={null}><AdminPanel></AdminPanel></AuthHandler>
<AuthHandler params={null}>
<Sidebar sidebarEntries={sidebarEntries} slug={""}></Sidebar>
<ServerAdminPanel slug={slug.toString()} auth={await getCookieAuth()}></ServerAdminPanel>
</AuthHandler>
{/* <section>{JSON.stringify(cookies().getAll())}</section> */}
</main>
);

View File

@@ -0,0 +1,14 @@
import AdminPanel from "@/components/client/admin/adminPanel";
import AuthHandler from "@/components/server/admin/authHandler";
import { cookies } from "next/headers";
import { Router } from "next/router";
export default async function Page(){
return (
<main className="h-screen w-screen flex flex-col p-0 bg-background-500 box-border m-0">
<AuthHandler params={null}><AdminPanel></AdminPanel></AuthHandler>
{/* <section>{JSON.stringify(cookies().getAll())}</section> */}
</main>
);
}