@@ -563,6 +498,7 @@ import {
} from "../../api/admin";
import DomainSettings from "./components/DomainSettings.vue";
+import TagInput from "../../components/TagInput.vue";
const DEFAULT_REPLY_TEMPLATE = `
@@ -646,11 +582,8 @@ const avatarPrefix = ref("");
const commentAdminEnabled = ref(false);
const adminLayoutTitle = ref("CWD 评论系统");
const allowedDomainTags = ref([]);
-const allowedDomainInput = ref("");
const blockedIpTags = ref([]);
-const blockedIpInput = ref("");
const blockedEmailTags = ref([]);
-const blockedEmailInput = ref("");
const commentAdminKey = ref("");
const adminKeySet = ref(false);
const requireReview = ref(false);
@@ -703,135 +636,6 @@ watch(
},
);
-function addAllowedDomainsFromInput() {
- const raw = allowedDomainInput.value;
- if (!raw) {
- return;
- }
- const parts = raw
- .split(/[,,\s]+/)
- .map((d) => d.trim())
- .filter(Boolean);
- if (parts.length === 0) {
- allowedDomainInput.value = "";
- return;
- }
- const existing = new Set(allowedDomainTags.value);
- for (const part of parts) {
- if (!existing.has(part)) {
- allowedDomainTags.value.push(part);
- existing.add(part);
- }
- }
- allowedDomainInput.value = "";
-}
-
-function handleAllowedDomainKeyup(event: KeyboardEvent) {
- if (
- event.key === " " ||
- event.key === "Spacebar" ||
- event.key === "," ||
- event.key === "," ||
- event.key === "Enter"
- ) {
- addAllowedDomainsFromInput();
- }
-}
-
-function handleAllowedDomainBlur() {
- addAllowedDomainsFromInput();
-}
-
-function removeAllowedDomain(domain: string) {
- allowedDomainTags.value = allowedDomainTags.value.filter((d) => d !== domain);
-}
-
-function addBlockedIpFromInput() {
- const raw = blockedIpInput.value;
- if (!raw) {
- return;
- }
- const parts = raw
- .split(/[,,\s]+/)
- .map((d) => d.trim())
- .filter(Boolean);
- if (parts.length === 0) {
- blockedIpInput.value = "";
- return;
- }
- const existing = new Set(blockedIpTags.value);
- for (const part of parts) {
- if (!existing.has(part)) {
- blockedIpTags.value.push(part);
- existing.add(part);
- }
- }
- blockedIpInput.value = "";
-}
-
-function handleBlockedIpKeyup(event: KeyboardEvent) {
- if (
- event.key === " " ||
- event.key === "Spacebar" ||
- event.key === "," ||
- event.key === "," ||
- event.key === "Enter"
- ) {
- addBlockedIpFromInput();
- }
-}
-
-function handleBlockedIpBlur() {
- addBlockedIpFromInput();
-}
-
-function removeBlockedIp(ip: string) {
- blockedIpTags.value = blockedIpTags.value.filter((t) => t !== ip);
-}
-
-function addBlockedEmailFromInput() {
- const raw = blockedEmailInput.value;
- if (!raw) {
- return;
- }
- const parts = raw
- .split(/[,,\s]+/)
- .map((d) => d.trim())
- .filter(Boolean);
- if (parts.length === 0) {
- blockedEmailInput.value = "";
- return;
- }
- const existing = new Set(blockedEmailTags.value);
- for (const part of parts) {
- if (!existing.has(part)) {
- blockedEmailTags.value.push(part);
- existing.add(part);
- }
- }
- blockedEmailInput.value = "";
-}
-
-function handleBlockedEmailKeyup(event: KeyboardEvent) {
- if (
- event.key === " " ||
- event.key === "Spacebar" ||
- event.key === "," ||
- event.key === "," ||
- event.key === "Enter"
- ) {
- addBlockedEmailFromInput();
- }
-}
-
-function handleBlockedEmailBlur() {
- addBlockedEmailFromInput();
-}
-
-function removeBlockedEmail(email: string) {
- blockedEmailTags.value = blockedEmailTags.value.filter((t) => t !== email);
-}
-
const savingEmail = ref(false);
const testingEmail = ref(false);
const savingComment = ref(false);
@@ -934,15 +738,12 @@ async function load() {
allowedDomainTags.value = domains
.map((d: string) => String(d).trim())
.filter(Boolean);
- allowedDomainInput.value = "";
blockedIpTags.value = Array.isArray(commentRes.blockedIps)
? commentRes.blockedIps
: [];
- blockedIpInput.value = "";
blockedEmailTags.value = Array.isArray(commentRes.blockedEmails)
? commentRes.blockedEmails
: [];
- blockedEmailInput.value = "";
commentAdminKey.value = commentRes.adminKey || "";
adminKeySet.value = !!commentRes.adminKeySet;
requireReview.value = !!commentRes.requireReview;