- {indeksData?.map(
- (indeks: any, index: number) =>
- index == count && (
-
-

-
-
{indeks?.categoryName}
-
-
{indeks?.title}
-
-
- {formatDateToIndonesian(new Date(indeks?.createdAt))} {indeks?.timezone ? indeks?.timezone : "WIB"}|{" "}
- {" "}
- {indeks?.clickCount}
-
+ {isLoading ? (
+
+
+
+ ) : (
+
+ {indeksData?.map(
+ (indeks: any, index: number) =>
+ index == count && (
+
+
+
+
+ {indeks?.categoryName}
+
+
+
+ {indeks?.title}
+
+
+
+ {formatDateToIndonesian(new Date(indeks?.createdAt))}{" "}
+ {indeks?.timezone ? indeks?.timezone : "WIB"} |{" "}
+ {/* {" "} */}
+ {/* {indeks?.clickCount} */}
+
+
-
- )
- )}
-
+ )
+ )}
+
+ )}
{/* Hero Right */}
- {indeksData?.map(
- (indeksRight: any, index: number) =>
- (index == count + 1 || index == count + 2) && (
-
-

-
-
{indeksRight?.categoryName}
-
-
{indeksRight?.title}
-
-
- {formatDateToIndonesian(new Date(indeksRight?.createdAt))} {indeksRight?.timezone ? indeksRight?.timezone : "WIB"}|{" "}
- {" "}
- {indeksRight?.clickCount}
-
-
-
- )
+ {isLoading ? (
+ <>
+
+
+
+
+ >
+ ) : (
+ <>
+ {indeksData?.map(
+ (indeksRight: any, index: number) =>
+ (index == count + 1 || index == count + 2) && (
+
+
+
+
+ {indeksRight?.categoryName}
+
+
+
+ {indeksRight?.title}
+
+
+
+ {formatDateToIndonesian(
+ new Date(indeksRight?.createdAt)
+ )}{" "}
+ {indeksRight?.timezone
+ ? indeksRight?.timezone
+ : "WIB"}
+ |{" "}
+ {/* {" "}
+ {indeksRight?.clickCount} */}
+
+
+
+ )
+ )}
+ >
)}
);
diff --git a/app/[locale]/(public)/(polda)/polda/[polda_name]/layout.tsx b/app/[locale]/(public)/(polda)/polda/[polda_name]/layout.tsx
index 2a601604..28704e63 100644
--- a/app/[locale]/(public)/(polda)/polda/[polda_name]/layout.tsx
+++ b/app/[locale]/(public)/(polda)/polda/[polda_name]/layout.tsx
@@ -16,9 +16,9 @@ import { useParams } from "next/navigation";
const layout = ({ children }: { children: React.ReactNode }) => {
const params = useParams();
const poldaName: any = params?.polda_name;
- return poldaName === "kaltara" ? (
- children
- ) : (
+ return (
+ // children
+ // ) : (
<>
{children}
diff --git a/app/[locale]/(public)/(polda)/polda/[polda_name]/page.tsx b/app/[locale]/(public)/(polda)/polda/[polda_name]/page.tsx
index 8990af65..cd71c68a 100644
--- a/app/[locale]/(public)/(polda)/polda/[polda_name]/page.tsx
+++ b/app/[locale]/(public)/(polda)/polda/[polda_name]/page.tsx
@@ -23,19 +23,19 @@ import HeroNewPolda from "@/components/landing-page/hero-new-polda";
const page = () => {
const params = useParams();
const poldaName: any = params?.polda_name;
- return poldaName === "kaltara" ? (
-
// {/*
*/}
//
diff --git a/app/[locale]/(public)/(polda)/tbnews-mediahub/[polda_name]/page.tsx b/app/[locale]/(public)/(polda)/tbnews-mediahub/[polda_name]/page.tsx
new file mode 100644
index 00000000..d62837bf
--- /dev/null
+++ b/app/[locale]/(public)/(polda)/tbnews-mediahub/[polda_name]/page.tsx
@@ -0,0 +1,38 @@
+"use client";
+
+import ContactUsKaltara from "@/components/landing-page/landing-polda-kaltara/contact-us-kaltara";
+import ContentCategoryKaltara from "@/components/landing-page/landing-polda-kaltara/content-category-kaltara";
+import HeaderBannerKaltara from "@/components/landing-page/landing-polda-kaltara/header-banner-kaltara";
+import LatestContentKaltara from "@/components/landing-page/landing-polda-kaltara/latest-content-kaltara";
+import NavbarKaltara from "@/components/landing-page/landing-polda-kaltara/navbar-polda-kaltara";
+import WelcomePolda from "@/components/landing-page/welcome-polda";
+import React from "react";
+import NewsTickerKaltara from "../../tbnews/[polda_name]/components/news-tickers-kaltara";
+import { useParams } from "next/navigation";
+
+const PoldaKaltara2 = () => {
+ const params = useParams();
+ const poldaName: string | undefined = params?.polda_name as string;
+
+ if (poldaName !== "kaltara") {
+ return null;
+ }
+
+ return (
+
+
+
+ {/*
*/}
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default PoldaKaltara2;
diff --git a/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/navbar-kaltara.tsx b/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/navbar-kaltara.tsx
index 9fa94e0d..94a0452d 100644
--- a/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/navbar-kaltara.tsx
+++ b/app/[locale]/(public)/(polda)/tbnews/[polda_name]/components/navbar-kaltara.tsx
@@ -47,7 +47,7 @@ const categoryLinks: any = {
MediaHub: "https://new.netidhub.com/in/polda/kaltara",
};
-const NavbarKaltara = () => {
+const NavbarKaltaraTbnews = () => {
const [menuOpen, setMenuOpen] = useState(false);
return (
@@ -111,4 +111,4 @@ const NavbarKaltara = () => {
);
};
-export default NavbarKaltara;
+export default NavbarKaltaraTbnews;
diff --git a/app/[locale]/(public)/(polda)/tbnews/[polda_name]/page.tsx b/app/[locale]/(public)/(polda)/tbnews/[polda_name]/page.tsx
index dbd15db9..6a88f688 100644
--- a/app/[locale]/(public)/(polda)/tbnews/[polda_name]/page.tsx
+++ b/app/[locale]/(public)/(polda)/tbnews/[polda_name]/page.tsx
@@ -1,7 +1,6 @@
"use client";
import React from "react";
-import NavbarKaltara from "./components/navbar-kaltara";
import HeroKaltara from "./components/hero-kaltara";
import LatestNews from "./components/latest-news";
import PopularNews from "./components/popular-news";
@@ -12,11 +11,15 @@ import SocialMedia from "./components/social-media";
import NewsTickerKaltara from "./components/news-tickers-kaltara";
import PpsSection from "./components/pps-section";
import ContactUsKaltara from "@/components/landing-page/landing-polda-kaltara/contact-us-kaltara";
+import WelcomePolda from "@/components/landing-page/welcome-polda";
+import LatestContentKaltara from "@/components/landing-page/landing-polda-kaltara/latest-content-kaltara";
+import ContentCategoryKaltara from "@/components/landing-page/landing-polda-kaltara/content-category-kaltara";
+import NavbarKaltaraTbnews from "./components/navbar-kaltara";
const PoldaKaltara = () => {
return (
-
+
@@ -29,6 +32,16 @@ const PoldaKaltara = () => {
+ //
+ //
+ // {/* */}
+ //
+ //
+ //
+ //
+ //
+ //
+ //
);
};
diff --git a/app/[locale]/(public)/(satker)/satker/[satker_name]/indeks/detail/[slug]/page.tsx b/app/[locale]/(public)/(satker)/satker/[satker_name]/indeks/detail/[slug]/page.tsx
index b76f2d03..ef5df705 100644
--- a/app/[locale]/(public)/(satker)/satker/[satker_name]/indeks/detail/[slug]/page.tsx
+++ b/app/[locale]/(public)/(satker)/satker/[satker_name]/indeks/detail/[slug]/page.tsx
@@ -1,18 +1,45 @@
"use client";
import { Textarea } from "@/components/ui/textarea";
-import { useParams, usePathname, useRouter } from "next/navigation";
+import { useParams, usePathname, useSearchParams } from "next/navigation";
import React, { useEffect, useState } from "react";
-import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from "@/components/ui/carousel";
-import { Link } from "@/i18n/routing";
-import { getDetailIndeks, publicDetailBlog } from "@/service/landing/landing";
+import {
+ Carousel,
+ CarouselContent,
+ CarouselItem,
+ CarouselNext,
+ CarouselPrevious,
+} from "@/components/ui/carousel";
+import { Link, useRouter } from "@/i18n/routing";
+import {
+ deleteBlogComments,
+ getBlogComments,
+ getDetailIndeks,
+ getPublicSuggestionList,
+ postBlogComments,
+ publicDetailBlog,
+} from "@/service/landing/landing";
import { formatDateToIndonesian } from "@/utils/globals";
import { Icon } from "@iconify/react/dist/iconify.js";
+import { getCookiesDecrypt } from "@/lib/utils";
+import { close, loading } from "@/config/swal";
+import { Input } from "@/components/ui/input";
+import { useTranslations } from "next-intl";
+import Image from "next/image";
const IndeksDetail = () => {
+ const searchParams = useSearchParams();
+ const id = searchParams?.get("id");
const [indeksData, setIndeksData] = useState
();
const params = useParams();
const slug = params?.slug;
- const [relatedPost, setRelatedPost] = useState();
+ const [indexData, setIndexData] = useState();
+ const [message, setMessage] = useState("");
+ const [messageChild, setMessageChild] = useState("");
+ const userId = getCookiesDecrypt("uie");
+ const userRoleId = getCookiesDecrypt("urie");
+ const router: any = useRouter();
+ const [listComments, setListComments] = useState([]);
+ const t = useTranslations("LandingPage");
useEffect(() => {
initFetch();
@@ -21,63 +48,512 @@ const IndeksDetail = () => {
const initFetch = async () => {
const response = await getDetailIndeks();
console.log(response);
- setRelatedPost(response?.data?.data?.content);
+ setIndexData(response?.data?.data?.content);
};
const detailFetch = async () => {
const response = await publicDetailBlog(slug);
console.log(response);
setIndeksData(response?.data?.data);
+ getDataComment(response?.data?.data?.id);
};
+ async function getDataComment(id?: any) {
+ const response = await getBlogComments(id || indeksData?.id);
+ console.log(response.data?.data);
+ setListComments(response.data?.data);
+ }
+
+ const showInput = (e: any) => {
+ console.log(document.querySelector(`#${e}`)?.classList);
+ document.querySelector(`#${e}`)?.classList.toggle("hidden");
+ };
+
+ async function sendCommentParent() {
+ if (message?.length > 3) {
+ loading();
+ const data = {
+ blogId: indeksData?.id,
+ message: message,
+ parentId: null,
+ };
+
+ const response = await postBlogComments(data);
+
+ console.log(response);
+ setMessage("");
+ getDataComment();
+ close();
+ }
+ }
+
+ // async function sendCommentChild(parentId: any) {
+ // if (messageChild.length > 3) {
+ // loading();
+ // const data = {
+ // blogId: indeksData?.id,
+ // message: messageChild,
+ // parentId,
+ // };
+
+ // console.log(data);
+ // const response = await postBlogComments(data);
+ // console.log(response);
+ // const responseGet = await getPublicSuggestionList(slug);
+ // console.log(responseGet?.data?.data);
+ // setMessageChild("");
+ // // $(":input").val("");
+ // close();
+ // }
+ // }
+
+ async function sendCommentChild(parentId: any) {
+ const inputMsg = document.querySelector(
+ `#input-comment-${parentId}`
+ ) as HTMLInputElement;
+
+ if (inputMsg && inputMsg.value.length > 3) {
+ loading();
+ const data = {
+ blogId: indeksData?.id,
+ message: inputMsg.value,
+ parentId,
+ };
+
+ console.log(data);
+ const response = await postBlogComments(data);
+ console.log(response);
+ const responseGet = await getPublicSuggestionList(slug);
+ console.log(responseGet?.data?.data);
+ getDataComment();
+ inputMsg.value = "";
+ close();
+ }
+ }
+
+ async function deleteDataComment(dataId: any) {
+ loading();
+ const response = await deleteBlogComments(dataId);
+ console.log(response);
+ getDataComment();
+ close();
+ }
+
+ const getInputValue = (e: any) => {
+ const message = e.target.value;
+ console.log(message);
+ setMessage(message);
+ getDataComment();
+ };
+
+ const postData = () => {
+ if (Number(userRoleId) < 1) {
+ router.push("/auth");
+ } else {
+ sendCommentParent();
+ }
+ getDataComment();
+ };
+
+ const postDataChild = (id: any) => {
+ if (Number(userRoleId) < 1) {
+ router.push("/auth");
+ } else {
+ sendCommentChild(id);
+ }
+ };
+
+ const deleteData = (dataId: any) => {
+ deleteDataComment(dataId);
+ console.log(dataId);
+ };
+
+ const shimmer = (w: number, h: number) => `
+ `;
+
+ const toBase64 = (str: string) =>
+ typeof window === "undefined"
+ ? Buffer.from(str).toString("base64")
+ : window.btoa(str);
+
return (
<>
-
+
{/* Judul */}
-
-
Indeks / Detail
-
{indeksData?.title}
+
+
Index / Detail
+
+ {indeksData?.title}
+
{/* Gambar Utama */}
-

+
+
{/* Footer Informasi */}
-
-
- oleh
{indeksData?.uploaderName} | Diupdate pada {indeksData?.createdAt} WIB
+
+
+
+
+ {t("by")}
+
+ {indeksData?.uploaderName}
+
+ | {t("updatedOn")} {indeksData?.createdAt} WIB
+
+
+
{/* Keterangan */}
-
{/* Comment */}
-
-
-
-
Berikan Komentar
-
-
+
+
+
+
+ {t("comment")}
+
+
+
+
+
+
+
+
+ {listComments?.map((data: any) => (
+
+
+
+
+
+
+ {Number(data.commentFrom?.roleId) == 2 ||
+ Number(data.commentFrom?.roleId) == 3 ||
+ Number(data.commentFrom?.roleId) == 4
+ ? "HUMAS POLRI"
+ : data.commentFrom?.fullname}
+
+ {`${new Date(data.createdAt).getDate()}/${
+ new Date(data.createdAt).getMonth() + 1
+ }/${new Date(data.createdAt).getFullYear()} ${new Date(
+ data.createdAt
+ ).getHours()}:${new Date(data.createdAt).getMinutes()}`}
+
+
+ {data.message}
+
+
+
+
+
+ {data.children.length > 0
+ ? data.children?.map((child1: any) => (
+
+
+
+
+
+
+ {Number(child1.commentFrom?.roleId) == 2 ||
+ Number(child1.commentFrom?.roleId) == 3 ||
+ Number(child1.commentFrom?.roleId) == 4
+ ? "HUMAS POLRI"
+ : child1.commentFrom?.fullname}
+
+ {`${new Date(child1.createdAt).getDate()}/${
+ new Date(child1.createdAt).getMonth() + 1
+ }/${new Date(
+ child1.createdAt
+ ).getFullYear()} ${new Date(
+ child1.createdAt
+ ).getHours()}:${new Date(
+ child1.createdAt
+ ).getMinutes()}`}
+
+
+ {child1.message}
+
+
+
+
+
+ {child1.children.length > 0
+ ? child1.children?.map((child2: any) => (
+
+
+
+
+
+
+ {Number(child2.commentFrom?.roleId) ==
+ 2 ||
+ Number(child2.commentFrom?.roleId) ==
+ 3 ||
+ Number(child2.commentFrom?.roleId) == 4
+ ? "HUMAS POLRI"
+ : child2.commentFrom?.fullname}
+
+ {`${new Date(
+ child2.createdAt
+ ).getDate()}/${
+ new Date(child2.createdAt).getMonth() +
+ 1
+ }/${new Date(
+ child2.createdAt
+ ).getFullYear()} ${new Date(
+ child2.createdAt
+ ).getHours()}:${new Date(
+ child2.createdAt
+ ).getMinutes()}`}
+
+
+ {child2.message}
+
+
+
+
+
+
+ ))
+ : ""}
+
+ ))
+ : ""}
+
+ ))}
{/* Konten Serupa */}
-
-
Post Terkait
+
+
+ {" "}
+ {t("relatedPosts")}
+
- {relatedPost?.map((relate: any) => (
-
-
-
+ {indexData?.map((relate: any) => (
+
+
+
-
{relate?.categoryName}
-
{relate?.title}
+
+ {relate?.categoryName}
+
+
+ {relate?.title}
+
- {formatDateToIndonesian(new Date(relate?.createdAt))} {relate?.timezone ? relate?.timezone : "WIB"} | {relate.clickCount}{" "}
+ {formatDateToIndonesian(new Date(relate?.createdAt))}{" "}
+ {relate?.timezone ? relate?.timezone : "WIB"} |{" "}
+ {" "}
+ {relate.clickCount}{" "}
diff --git a/app/[locale]/(public)/(satker)/satker/[satker_name]/indeks/page.tsx b/app/[locale]/(public)/(satker)/satker/[satker_name]/indeks/page.tsx
index ebf34670..7a72e0bd 100644
--- a/app/[locale]/(public)/(satker)/satker/[satker_name]/indeks/page.tsx
+++ b/app/[locale]/(public)/(satker)/satker/[satker_name]/indeks/page.tsx
@@ -1,15 +1,31 @@
"use client";
+import { Skeleton } from "@/components/ui/skeleton";
import { Link } from "@/i18n/routing";
import { getIndeksData } from "@/service/landing/landing";
-import { formatDateToIndonesian } from "@/utils/globals";
-import { usePathname } from "next/navigation";
+import { formatDateToIndonesian, htmlToString } from "@/utils/globals";
+import Image from "next/image";
+import { useParams, usePathname } from "next/navigation";
import React, { useEffect, useState } from "react";
const Indeks: React.FC = () => {
const pathname = usePathname();
const [indeksData, setIndeksData] = useState();
+ const [isLoading, setIsLoading] = useState(true);
+ const params = useParams();
+ const sarkerName: any = params?.satker_name;
+ let prefixPath = sarkerName ? `/satker/${sarkerName}` : "/";
+
+ useEffect(() => {
+ const timer = setTimeout(() => {
+ setIsLoading(false);
+ }, 3000);
+
+ return () => clearTimeout(timer);
+ }, []);
+
let count: number = 0;
+
useEffect(() => {
if (indeksData) {
const intervalId = setInterval(() => {
@@ -21,93 +37,230 @@ const Indeks: React.FC = () => {
}, [indeksData]);
useEffect(() => {
- initFetch();
- }, []);
- const initFetch = async () => {
- const response = await getIndeksData();
- console.log(response);
- setIndeksData(response?.data?.data?.content);
+ if (sarkerName) {
+ initFetch(sarkerName);
+ }
+ }, [sarkerName]);
+
+ const initFetch = async (sarkerName: string) => {
+ try {
+ const response = await getIndeksData();
+ console.log(response);
+ setIndeksData(response?.data?.data?.content);
+ } catch (error) {
+ console.error("Failed to fetch indeks data:", error);
+ }
};
+ const shimmer = (w: number, h: number) => `
+ `;
+
+ const toBase64 = (str: string) =>
+ typeof window === "undefined"
+ ? Buffer.from(str).toString("base64")
+ : window.btoa(str);
+
return (
-
+
{/* Hero Left */}
-
- {indeksData?.map(
- (indeks: any, index: number) =>
- index == count && (
-
-

-
-
{indeks?.categoryName}
-
-
{indeks?.title}
-
-
- {formatDateToIndonesian(new Date(indeks?.createdAt))} {indeks?.timezone ? indeks?.timezone : "WIB"}|{" "}
- {" "}
- {indeks?.clickCount}
-
+ {isLoading ? (
+
+
+
+ ) : (
+
+ {indeksData?.map(
+ (indeks: any, index: number) =>
+ index == count && (
+
+
+
+
+ {indeks?.categoryName}
+
+
+
+ {indeks?.title}
+
+
+
+ {formatDateToIndonesian(new Date(indeks?.createdAt))}{" "}
+ {indeks?.timezone ? indeks?.timezone : "WIB"} |{" "}
+ {/* {" "} */}
+ {/* {indeks?.clickCount} */}
+
+
-
- )
- )}
-
+ )
+ )}
+
+ )}
{/* Hero Right */}
- {indeksData?.map(
- (indeksRight: any, index: number) =>
- (index == count + 1 || index == count + 2) && (
-
-

-
-
{indeksRight?.categoryName}
-
-
{indeksRight?.title}
-
-
- {formatDateToIndonesian(new Date(indeksRight?.createdAt))} {indeksRight?.timezone ? indeksRight?.timezone : "WIB"}|{" "}
- {" "}
- {indeksRight?.clickCount}
-
-
-
- )
+ {isLoading ? (
+ <>
+
+
+
+
+ >
+ ) : (
+ <>
+ {indeksData?.map(
+ (indeksRight: any, index: number) =>
+ (index == count + 1 || index == count + 2) && (
+
+
+
+
+ {indeksRight?.categoryName}
+
+
+
+ {indeksRight?.title}
+
+
+
+ {formatDateToIndonesian(
+ new Date(indeksRight?.createdAt)
+ )}{" "}
+ {indeksRight?.timezone
+ ? indeksRight?.timezone
+ : "WIB"}
+ |{" "}
+ {/* {" "}
+ {indeksRight?.clickCount} */}
+
+
+
+ )
+ )}
+ >
)}
{/* Bottom */}
-
- {indeksData?.map(
- (indeksBottom: any, index: number) =>
- index < 3 && (
-
-

-
-
{indeksBottom?.date}
-
- {indeksBottom?.title}
-
-
{indeksBottom?.description}
+ {isLoading ? (
+
+ ) : (
+
+ {indeksData?.map(
+ (indeksBottom: any, index: number) =>
+ index < 3 && (
+
+
+
+
{indeksBottom?.date}
+
+ {indeksBottom?.title}
+
+
+ {htmlToString(indeksBottom?.description)}
+
+
-
- )
- )}
-
+ )
+ )}
+
+ )}
);
diff --git a/app/[locale]/(public)/indeks/detail/[slug]/page.tsx b/app/[locale]/(public)/indeks/detail/[slug]/page.tsx
index a452ccc3..ef5df705 100644
--- a/app/[locale]/(public)/indeks/detail/[slug]/page.tsx
+++ b/app/[locale]/(public)/indeks/detail/[slug]/page.tsx
@@ -188,9 +188,9 @@ const IndeksDetail = () => {
return (
<>
-
+
{/* Judul */}
-
+
Index / Detail
{indeksData?.title}
@@ -206,25 +206,28 @@ const IndeksDetail = () => {
height={1440}
src={indeksData?.thumbnailLink}
alt="Main"
- className="w-full max-h-[550px] object-contain rounded-xl "
+ className="w-full max-h-[550px] object-contain rounded-xl"
/>
{/* Footer Informasi */}
-
-
-
- {t("by")}
-
- {indeksData?.uploaderName}
-
- | {t("updatedOn")} {indeksData?.createdAt} WIB
-
+
+
+
+
+ {t("by")}
+
+ {indeksData?.uploaderName}
+
+ | {t("updatedOn")} {indeksData?.createdAt} WIB
+
+
+
{/* Keterangan */}
-
+
{/* Comment */}
-
+
-
+
{t("comment")}
@@ -253,9 +256,11 @@ const IndeksDetail = () => {
-
+
-
+
{listComments?.map((data: any) => (
@@ -511,7 +516,7 @@ const IndeksDetail = () => {
{/* Konten Serupa */}
-