Commit 0c9063d2 authored by Lê Bảo Hồng Đức's avatar Lê Bảo Hồng Đức

fix

parent 55d771ae
...@@ -35,6 +35,7 @@ import { ...@@ -35,6 +35,7 @@ import {
fetchCmsTagsPage, fetchCmsTagsPage,
updateCmsTag, updateCmsTag,
} from "@/lib/api/cms-admin"; } from "@/lib/api/cms-admin";
import { toCmsSlug } from "@/lib/utils/cms-slug";
interface TagFormValues { interface TagFormValues {
id?: string; id?: string;
...@@ -52,17 +53,7 @@ const EMPTY_FORM: TagFormValues = { ...@@ -52,17 +53,7 @@ const EMPTY_FORM: TagFormValues = {
const fieldClassName = const fieldClassName =
"rounded-xl border-[#063e8e]/15 bg-white text-gray-700 placeholder:text-gray-700 focus-visible:ring-[#063e8e]/30"; "rounded-xl border-[#063e8e]/15 bg-white text-gray-700 placeholder:text-gray-700 focus-visible:ring-[#063e8e]/30";
const slugifyTag = (value: string) => const slugifyTag = (value: string) => toCmsSlug(value);
value
.normalize("NFD")
.replace(/[\u0300-\u036f]/g, "")
.replace(/đ/g, "d")
.replace(/Đ/g, "D")
.toLowerCase()
.trim()
.replace(/[^a-z0-9\s-]/g, "")
.replace(/\s+/g, "-")
.replace(/-+/g, "-");
export default function AdminTagsPage() { export default function AdminTagsPage() {
const [items, setItems] = React.useState<CmsTagItem[]>([]); const [items, setItems] = React.useState<CmsTagItem[]>([]);
......
"use client"; "use client";
import { useCustomClient } from "@/api/mutator/custom-client"; import { useCustomClient } from "@/api/mutator/custom-client";
import { toCmsSlug } from "@/lib/utils/cms-slug";
import { resolveUploadUrl } from "@/links"; import { resolveUploadUrl } from "@/links";
import { categoryFallbackRows } from "@/mockdata/categories"; import { categoryFallbackRows } from "@/mockdata/categories";
...@@ -510,17 +511,7 @@ const toCategoryApiType = (type: CmsHeaderCategoryType) => { ...@@ -510,17 +511,7 @@ const toCategoryApiType = (type: CmsHeaderCategoryType) => {
return "page"; return "page";
}; };
const toTagSlug = (value: string) => const toTagSlug = (value: string) => toCmsSlug(value);
value
.normalize("NFD")
.replace(/[\u0300-\u036f]/g, "")
.replace(/đ/g, "d")
.replace(/Đ/g, "D")
.toLowerCase()
.trim()
.replace(/[^a-z0-9\s-]/g, "")
.replace(/\s+/g, "-")
.replace(/-+/g, "-");
export async function fetchCmsCategories() { export async function fetchCmsCategories() {
const result = await cmsRequest<CmsPagedResult<CmsCategoryItem>>( const result = await cmsRequest<CmsPagedResult<CmsCategoryItem>>(
......
const VIETNAMESE_D_CHARACTERS = /[đĐ]/g;
const DASH_LIKE_CHARACTERS = /[\u2010-\u2015\u2212]+/g;
function replaceVietnameseDCharacter(character: string) {
return character === "Đ" ? "D" : "d";
}
export function toCmsSlug(value: string) {
return value
.trim()
.replace(DASH_LIKE_CHARACTERS, "-")
.replace(VIETNAMESE_D_CHARACTERS, replaceVietnameseDCharacter)
.normalize("NFD")
.replace(/[\u0300-\u036f]/g, "")
.toLowerCase()
.replace(/[^a-z0-9\s-]/g, " ")
.replace(/[\s_-]+/g, "-")
.replace(/^-+|-+$/g, "");
}
"use client"; "use client";
import { toCmsSlug } from "@/lib/utils/cms-slug";
export const ADMIN_NEWS_STORAGE_KEY = "vcci-news.admin-news.data.v3"; export const ADMIN_NEWS_STORAGE_KEY = "vcci-news.admin-news.data.v3";
export const ADMIN_MEDIA_STORAGE_KEY = "vcci-news.admin-media-library.data.v1"; export const ADMIN_MEDIA_STORAGE_KEY = "vcci-news.admin-media-library.data.v1";
...@@ -1252,16 +1254,7 @@ const newsSeed: AdminNewsItem[] = [ ...@@ -1252,16 +1254,7 @@ const newsSeed: AdminNewsItem[] = [
]; ];
export function slugifyAdminNews(value: string) { export function slugifyAdminNews(value: string) {
return value return toCmsSlug(value);
.normalize("NFD")
.replace(/[\u0300-\u036f]/g, "")
.replace(/d/g, "d")
.replace(/�/g, "D")
.toLowerCase()
.trim()
.replace(/[^a-z0-9\s-]/g, "")
.replace(/\s+/g, "-")
.replace(/-+/g, "-");
} }
export function resolveAdminNewsType(value?: string | null): AdminNewsType | undefined { export function resolveAdminNewsType(value?: string | null): AdminNewsType | undefined {
......
"use client"; "use client";
import { toCmsSlug } from "@/lib/utils/cms-slug";
export type HeaderCategoryType = "category" | "page" | "news"; export type HeaderCategoryType = "category" | "page" | "news";
export interface HeaderCategoryItem { export interface HeaderCategoryItem {
...@@ -194,16 +196,7 @@ export const headerArticleCategoryOptions: HeaderArticleCategoryOption[] = [ ...@@ -194,16 +196,7 @@ export const headerArticleCategoryOptions: HeaderArticleCategoryOption[] = [
]; ];
export function toSlug(value: string) { export function toSlug(value: string) {
return value return toCmsSlug(value);
.normalize("NFD")
.replace(/[\u0300-\u036f]/g, "")
.replace(/đ/g, "d")
.replace(/Đ/g, "D")
.toLowerCase()
.trim()
.replace(/[^a-z0-9\s-]/g, "")
.replace(/\s+/g, "-")
.replace(/-+/g, "-");
} }
function normalizeTagsearchValues(values?: string[]) { function normalizeTagsearchValues(values?: string[]) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment