implemented post management dashboard and started work on projects
This commit is contained in:
75
src/app/admin/[...slug]/page.tsx
Normal file
75
src/app/admin/[...slug]/page.tsx
Normal 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>
|
||||
);
|
||||
}
|
||||
@@ -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';
|
||||
|
||||
@@ -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>
|
||||
);
|
||||
|
||||
14
src/app/admin/page.tsx.bak
Normal file
14
src/app/admin/page.tsx.bak
Normal 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>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user