fix
This commit is contained in:
143
dist/server/pages/api/admin/save.astro.mjs
vendored
Normal file
143
dist/server/pages/api/admin/save.astro.mjs
vendored
Normal file
@@ -0,0 +1,143 @@
|
||||
import { r as requireAdmin } from '../../../chunks/adminAuth_CY4OwU1a.mjs';
|
||||
import { r as readCms, w as writeCms } from '../../../chunks/cms_CRTVymfB.mjs';
|
||||
import { p as publishPost } from '../../../chunks/publisher_Dj_UvF8J.mjs';
|
||||
import { g as getTassFeedLinks } from '../../../chunks/tassAgent_jxZgSz7r.mjs';
|
||||
export { renderers } from '../../../renderers.mjs';
|
||||
|
||||
const toList = (value) => String(value ?? "").split(/\r?\n|,/).map((item) => item.trim()).filter(Boolean);
|
||||
const toParagraphs = (value) => String(value ?? "").split(/\n\s*\n/).map((item) => item.trim()).filter(Boolean);
|
||||
const POST = async (context) => {
|
||||
const unauthorized = requireAdmin(context);
|
||||
if (unauthorized) {
|
||||
return unauthorized;
|
||||
}
|
||||
const formData = await context.request.formData();
|
||||
const action = String(formData.get("action") ?? "");
|
||||
const cms = await readCms();
|
||||
const tab = String(formData.get("tab") ?? "pending");
|
||||
if (action === "post-status") {
|
||||
const slug = String(formData.get("slug") ?? "");
|
||||
const status = String(formData.get("status") ?? "pending");
|
||||
cms.posts = cms.posts.map((post) => post.slug === slug ? { ...post, status } : post);
|
||||
}
|
||||
if (action === "toggle-post-flag") {
|
||||
const slug = String(formData.get("slug") ?? "");
|
||||
const flag = String(formData.get("flag") ?? "");
|
||||
cms.posts = cms.posts.map((post) => {
|
||||
if (post.slug !== slug) {
|
||||
return post;
|
||||
}
|
||||
if (flag === "urgent") {
|
||||
return { ...post, urgent: !post.urgent };
|
||||
}
|
||||
if (flag === "sidebar") {
|
||||
return { ...post, sidebar: !post.sidebar };
|
||||
}
|
||||
return post;
|
||||
});
|
||||
}
|
||||
if (action === "set-breaking-post") {
|
||||
const slug = String(formData.get("slug") ?? "");
|
||||
const post = cms.posts.find((item) => item.slug === slug);
|
||||
if (post) {
|
||||
cms.settings.breakingNews = {
|
||||
...cms.settings.breakingNews,
|
||||
href: `/posts/${post.slug}/`,
|
||||
items: [post.title],
|
||||
postSlugs: [post.slug]
|
||||
};
|
||||
}
|
||||
}
|
||||
if (action === "set-home-featured") {
|
||||
const slug = String(formData.get("slug") ?? "");
|
||||
cms.settings.homeLayout.featuredSlug = slug;
|
||||
}
|
||||
if (action === "clear-tass-memory") {
|
||||
cms.settings.agents = {
|
||||
...cms.settings.agents,
|
||||
tass: { processedLinks: [] }
|
||||
};
|
||||
}
|
||||
if (action === "fill-tass-memory") {
|
||||
const links = cms.posts.map((post) => post.sourceUrl).filter(Boolean);
|
||||
const feedLinks = await getTassFeedLinks(50);
|
||||
cms.settings.agents = {
|
||||
...cms.settings.agents,
|
||||
tass: { processedLinks: Array.from(/* @__PURE__ */ new Set([...links, ...feedLinks])) }
|
||||
};
|
||||
}
|
||||
if (action === "delete-post") {
|
||||
const slug = String(formData.get("slug") ?? "");
|
||||
const confirm = String(formData.get("confirm") ?? "");
|
||||
if (confirm !== "confirm") {
|
||||
return context.redirect(`/admin/?deleteError=1&tab=${encodeURIComponent(tab)}`, 302);
|
||||
}
|
||||
cms.posts = cms.posts.filter((post) => post.slug !== slug);
|
||||
}
|
||||
if (action === "delete-all-posts") {
|
||||
const confirm = String(formData.get("confirm") ?? "");
|
||||
if (confirm !== "confirm") {
|
||||
return context.redirect(`/admin/?deleteError=1&tab=${encodeURIComponent(tab)}`, 302);
|
||||
}
|
||||
cms.posts = [];
|
||||
}
|
||||
if (action === "save-post") {
|
||||
const originalSlug = String(formData.get("originalSlug") ?? "");
|
||||
const title = String(formData.get("title") ?? "").trim();
|
||||
const post = await publishPost({
|
||||
slug: String(formData.get("slug") ?? "") || title,
|
||||
title,
|
||||
category: String(formData.get("category") ?? cms.categories[0] ?? "عمومی"),
|
||||
time: String(formData.get("time") ?? "").trim() || "هماکنون",
|
||||
readTime: String(formData.get("readTime") ?? "").trim() || "۳ دقیقه",
|
||||
excerpt: String(formData.get("excerpt") ?? "").trim(),
|
||||
status: String(formData.get("status") ?? "pending"),
|
||||
body: toParagraphs(formData.get("body")),
|
||||
image: String(formData.get("image") ?? "").trim() || void 0,
|
||||
thumbnail: String(formData.get("thumbnail") ?? "").trim() || void 0,
|
||||
urgent: formData.get("urgent") === "on",
|
||||
sidebar: formData.get("sidebar") === "on"
|
||||
});
|
||||
if (originalSlug && originalSlug !== post.slug) {
|
||||
const updatedCms = await readCms();
|
||||
updatedCms.posts = updatedCms.posts.filter((post2) => post2.slug !== originalSlug);
|
||||
await writeCms(updatedCms);
|
||||
}
|
||||
return context.redirect(`/admin/?saved=1&tab=${post.status === "approved" ? "approved" : "pending"}`, 302);
|
||||
}
|
||||
if (action === "categories") {
|
||||
cms.categories = toList(formData.get("categories"));
|
||||
}
|
||||
if (action === "settings") {
|
||||
cms.settings.breakingNews = {
|
||||
label: String(formData.get("breakingLabel") ?? "فوری").trim(),
|
||||
href: String(formData.get("breakingHref") ?? "/").trim(),
|
||||
items: toList(formData.get("breakingItems")),
|
||||
postSlugs: toList(formData.get("breakingPostSlugs"))
|
||||
};
|
||||
cms.settings.hotTopics = toList(formData.get("hotTopics"));
|
||||
cms.settings.homeLayout = {
|
||||
featuredSlug: String(formData.get("featuredSlug") ?? "").trim(),
|
||||
sideFeaturedSlugs: toList(formData.get("sideFeaturedSlugs")).slice(0, 2),
|
||||
latestCount: Math.max(1, Number(formData.get("latestCount") ?? 4)),
|
||||
showAd: formData.get("showAd") === "on"
|
||||
};
|
||||
cms.settings.ad = {
|
||||
enabled: formData.get("adEnabled") === "on",
|
||||
label: String(formData.get("adLabel") ?? "آگهی").trim(),
|
||||
href: String(formData.get("adHref") ?? "/advertise/").trim(),
|
||||
text: String(formData.get("adText") ?? "").trim()
|
||||
};
|
||||
}
|
||||
await writeCms(cms);
|
||||
return context.redirect(`/admin/?saved=1&tab=${encodeURIComponent(tab)}`, 302);
|
||||
};
|
||||
|
||||
const _page = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
|
||||
__proto__: null,
|
||||
POST
|
||||
}, Symbol.toStringTag, { value: 'Module' }));
|
||||
|
||||
const page = () => _page;
|
||||
|
||||
export { page };
|
||||
Reference in New Issue
Block a user