'use client'; import React, { useState } from 'react'; import { useRouter } from 'next/navigation'; import { ArrowLeft, Save, X } from 'lucide-react'; import Link from 'next/link'; import TextEditor from '@/app/admin/components/TextEditor'; import ImageUpload from '@/app/admin/components/ImageUpload'; const NEWS_CATEGORIES = [ { id: 'company', name: 'Новости компании' }, { id: 'promotions', name: 'Акции' }, { id: 'other', name: 'Другое' } ]; export default function CreateNewsPage() { const router = useRouter(); const [loading, setLoading] = useState(false); const [formData, setFormData] = useState({ title: '', slug: '', summary: '', content: '', category: 'company', imageUrl: '', featured: false, published: true, publishedAt: new Date().toISOString().slice(0, 16), tags: [] as string[] }); const [tagInput, setTagInput] = useState(''); const generateSlug = (title: string) => { return title .toLowerCase() .replace(/[^a-z0-9а-я]/g, '-') .replace(/-+/g, '-') .replace(/^-|-$/g, ''); }; const handleTitleChange = (title: string) => { setFormData(prev => ({ ...prev, title, slug: generateSlug(title) })); }; const handleAddTag = () => { if (tagInput.trim() && !formData.tags.includes(tagInput.trim())) { setFormData(prev => ({ ...prev, tags: [...prev.tags, tagInput.trim()] })); setTagInput(''); } }; const handleRemoveTag = (tagToRemove: string) => { setFormData(prev => ({ ...prev, tags: prev.tags.filter(tag => tag !== tagToRemove) })); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); try { const response = await fetch('/api/news', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ ...formData, publishedAt: new Date(formData.publishedAt).toISOString() }) }); const data = await response.json(); if (data.success) { router.push('/admin/news'); } else { console.error('Error creating news:', data.error); alert('Ошибка при создании новости'); } } catch (error) { console.error('Error creating news:', error); alert('Ошибка при создании новости'); } finally { setLoading(false); } }; const handleSaveAsDraft = async () => { const draftData = { ...formData, published: false }; setFormData(draftData); // Сохраняем как черновик try { const response = await fetch('/api/news', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ ...draftData, publishedAt: new Date(draftData.publishedAt).toISOString() }) }); const data = await response.json(); if (data.success) { router.push('/admin/news'); } } catch (error) { console.error('Error saving draft:', error); } }; return (
Заполните форму для создания новой новости