어나운스 바 설정 확장 v1.5.38

This commit is contained in:
2026-06-02 16:31:30 +09:00
parent ba17e3aa18
commit e3b8087b09
16 changed files with 240 additions and 43 deletions

View File

@@ -9,6 +9,12 @@ import { getDefaultNavigationItems } from '../utils/navigation-items'
import { buildPublicPrimaryTree, orderNavigationItemsForInsert } from '../utils/navigation-tree'
import { getDefaultSiteSettings } from '../utils/site-settings'
import { toAdminPostFormTitle } from '../../lib/admin-post-title.js'
import {
DEFAULT_ANNOUNCEMENT_ALIGNMENT,
DEFAULT_ANNOUNCEMENT_BACKGROUND_COLOR,
normalizeAnnouncementAlignment,
normalizeAnnouncementBackgroundColor
} from '../../lib/announcement-bar.js'
import { DEFAULT_BRAND_COLOR, normalizeBrandColor } from '../../lib/brand-color.js'
import {
normalizeSignupBlockedUsernames,
@@ -110,7 +116,8 @@ const mapSiteSettingsRow = (row) => ({
announcementEnabled: Boolean(row.announcement_enabled),
announcementText: row.announcement_text || '',
announcementUrl: row.announcement_url || '',
announcementBackgroundColor: row.announcement_background_color || '#15171a',
announcementBackgroundColor: normalizeAnnouncementBackgroundColor(row.announcement_background_color || DEFAULT_ANNOUNCEMENT_BACKGROUND_COLOR),
announcementAlignment: normalizeAnnouncementAlignment(row.announcement_alignment || DEFAULT_ANNOUNCEMENT_ALIGNMENT),
signupBlockedUsernames: parseSignupBlockedUsernamesFromDb(row.signup_blocked_usernames),
adsTxt: row.ads_txt || '',
customHeadCode: row.custom_head_code || '',
@@ -879,6 +886,7 @@ export const updateSiteSettings = async (input) => {
announcement_text,
announcement_url,
announcement_background_color,
announcement_alignment,
signup_blocked_usernames,
ads_txt,
custom_head_code,
@@ -903,7 +911,8 @@ export const updateSiteSettings = async (input) => {
${input.announcementEnabled ? true : false},
${input.announcementText || ''},
${input.announcementUrl || ''},
${input.announcementBackgroundColor || '#15171a'},
${normalizeAnnouncementBackgroundColor(input.announcementBackgroundColor)},
${normalizeAnnouncementAlignment(input.announcementAlignment)},
${JSON.stringify(normalizeSignupBlockedUsernames(input.signupBlockedUsernames))},
${input.adsTxt || ''},
${input.customHeadCode || ''},
@@ -929,6 +938,7 @@ export const updateSiteSettings = async (input) => {
announcement_text = EXCLUDED.announcement_text,
announcement_url = EXCLUDED.announcement_url,
announcement_background_color = EXCLUDED.announcement_background_color,
announcement_alignment = EXCLUDED.announcement_alignment,
signup_blocked_usernames = EXCLUDED.signup_blocked_usernames,
ads_txt = EXCLUDED.ads_txt,
custom_head_code = EXCLUDED.custom_head_code,

View File

@@ -1,7 +1,10 @@
import { z } from 'zod'
import {
DEFAULT_ANNOUNCEMENT_ALIGNMENT,
DEFAULT_ANNOUNCEMENT_BACKGROUND_COLOR,
isValidAnnouncementBackgroundColor,
normalizeAnnouncementAlignment,
normalizeAnnouncementBackgroundColor,
normalizeAnnouncementUrl
} from '../../lib/announcement-bar.js'
import {
@@ -34,6 +37,7 @@ export const adminSiteSettingsInputSchema = z.object({
announcementText: z.string().trim().max(200).optional().default(''),
announcementUrl: z.string().trim().max(500).optional().default(''),
announcementBackgroundColor: z.string().trim().optional().default(DEFAULT_ANNOUNCEMENT_BACKGROUND_COLOR),
announcementAlignment: z.string().trim().optional().default(DEFAULT_ANNOUNCEMENT_ALIGNMENT),
signupBlockedUsernames: z.array(
z.string().trim().min(1).max(MAX_SIGNUP_BLOCKED_USERNAME_LENGTH)
).max(MAX_SIGNUP_BLOCKED_USERNAME_COUNT).optional().default([...DEFAULT_SIGNUP_BLOCKED_USERNAMES]),
@@ -68,6 +72,8 @@ export const adminSiteSettingsInputSchema = z.object({
...data,
brandColor: normalizeBrandColor(data.brandColor),
announcementUrl: normalizeAnnouncementUrl(data.announcementUrl),
announcementBackgroundColor: normalizeAnnouncementBackgroundColor(data.announcementBackgroundColor),
announcementAlignment: normalizeAnnouncementAlignment(data.announcementAlignment),
signupBlockedUsernames: normalizeSignupBlockedUsernames(data.signupBlockedUsernames)
}))

View File

@@ -1,4 +1,8 @@
import { DEFAULT_BRAND_COLOR } from '../../lib/brand-color.js'
import {
DEFAULT_ANNOUNCEMENT_ALIGNMENT,
DEFAULT_ANNOUNCEMENT_BACKGROUND_COLOR
} from '../../lib/announcement-bar.js'
import { DEFAULT_SIGNUP_BLOCKED_USERNAMES } from '../../lib/signup-blocked-usernames.js'
/**
@@ -26,7 +30,8 @@ export const getDefaultSiteSettings = () => {
announcementEnabled: false,
announcementText: '',
announcementUrl: '',
announcementBackgroundColor: '#15171a',
announcementBackgroundColor: DEFAULT_ANNOUNCEMENT_BACKGROUND_COLOR,
announcementAlignment: DEFAULT_ANNOUNCEMENT_ALIGNMENT,
signupBlockedUsernames: [...DEFAULT_SIGNUP_BLOCKED_USERNAMES],
adsTxt: '',
customHeadCode: '',