7 lines
6.3 KiB
JavaScript
7 lines
6.3 KiB
JavaScript
import{e as j,j as A,r as p,f as E,g as F,c as o,a as e,h as d,b as n,d as f,u as r,F as V,i as B,k as N,t as c,l as D,v as C,m as U,o as a,U as P}from"#entry";import{u as q}from"./Qy3ajxTk.js";import{L as S}from"./CUq_0rkE.js";import{C as H}from"./YJHbYJtA.js";import{S as z,T as K}from"./CGpRzXRB.js";import{N as O}from"./DAACT36i.js";import{A as R}from"./C8kQt0fa.js";/**
|
|
* @license lucide-vue-next v0.344.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/const W=j("PlusIcon",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]),G={class:"min-h-full py-16 bg-gray-50"},J={class:"max-w-4xl mx-auto px-4 sm:px-6 lg:px-8"},Q={class:"flex justify-between items-center mb-6"},X={key:0,class:"flex items-center justify-center py-12"},Y={key:1,class:"space-y-6"},Z={class:"flex justify-between items-start mb-4"},ee={class:"flex-1"},te={class:"text-2xl font-display font-bold text-gray-900 mb-2"},se={class:"flex items-center text-sm text-gray-500 space-x-4"},le={class:"flex items-center"},ae={class:"flex items-center"},oe={key:0,class:"flex items-center"},re={key:0,class:"flex space-x-2 ml-4"},ne=["onClick"],ie=["onClick"],de={class:"prose prose-lg max-w-none text-gray-700 whitespace-pre-wrap"},ce={key:0,class:"text-center py-12"},ue={key:0,class:"text-gray-400 text-sm mt-2"},me={class:"bg-white rounded-xl shadow-2xl max-w-3xl w-full p-8 max-h-[90vh] overflow-y-auto"},pe={class:"text-2xl font-display font-bold text-gray-900 mb-6"},ve=["disabled"],fe=["disabled"],he={key:0,class:"flex items-center p-3 rounded-md bg-red-50 text-red-700 text-sm"},xe={class:"flex justify-end space-x-4 pt-4"},ye=["disabled"],be=["disabled"],ze={__name:"news",setup(ge){const _=A(),x=p(!0),i=p(!1),y=p([]),h=p(!1),v=p(null),u=p(""),m=p({title:"",content:""}),b=E(()=>_.role==="admin"||_.role==="vorstand"),g=async()=>{x.value=!0;try{const t=await $fetch("/api/news");y.value=t.news}catch(t){console.error("Fehler beim Laden der News:",t)}finally{x.value=!1}},M=()=>{v.value=null,m.value={title:"",content:""},h.value=!0,u.value=""},L=t=>{v.value=t,m.value={title:t.title,content:t.content},h.value=!0,u.value=""},w=()=>{h.value=!1,v.value=null,u.value=""},I=async()=>{i.value=!0,u.value="";try{await $fetch("/api/news",{method:"POST",body:{id:v.value?.id,...m.value}}),w(),await g()}catch(t){u.value=t.data?.message||"Fehler beim Speichern der News."}finally{i.value=!1}},T=async t=>{if(console.log("Delete item:",t),console.log("Delete item.id:",t.id),!!confirm(`Möchten Sie die News "${t.title}" wirklich löschen?`)){if(!t.id){alert("Fehler: News-ID fehlt!");return}try{console.log("Deleting with ID:",t.id),await $fetch(`/api/news?id=${encodeURIComponent(t.id)}`,{method:"DELETE"}),await g()}catch(s){console.error("Delete error:",s),alert("Fehler beim Löschen der News: "+(s.data?.message||s.message))}}},k=t=>t?new Date(t).toLocaleDateString("de-DE",{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit"}):"";return F(()=>{g()}),q({title:"Interne News - Harheimer TC"}),(t,s)=>(a(),o("div",G,[e("div",J,[e("div",Q,[s[3]||(s[3]=e("div",null,[e("h1",{class:"text-4xl sm:text-5xl font-display font-bold text-gray-900 mb-2"}," Interne News "),e("div",{class:"w-24 h-1 bg-primary-600 mb-4"})],-1)),b.value?(a(),o("button",{key:0,onClick:M,class:"flex items-center px-4 py-2 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors"},[n(r(W),{size:20,class:"mr-2"}),s[2]||(s[2]=f(" News erstellen ",-1))])):d("",!0)]),x.value?(a(),o("div",X,[n(r(S),{size:40,class:"animate-spin text-primary-600"})])):(a(),o("div",Y,[(a(!0),o(V,null,B(y.value,l=>(a(),o("article",{key:l.id,class:"bg-white rounded-xl shadow-lg p-6 border border-gray-100"},[e("div",Z,[e("div",ee,[e("h2",te,c(l.title),1),e("div",se,[e("div",le,[n(r(P),{size:16,class:"mr-1"}),f(" "+c(l.author),1)]),e("div",ae,[n(r(H),{size:16,class:"mr-1"}),f(" "+c(k(l.created)),1)]),l.updated!==l.created?(a(),o("div",oe,[n(r(z),{size:16,class:"mr-1"}),f(" Aktualisiert: "+c(k(l.updated)),1)])):d("",!0)])]),b.value?(a(),o("div",re,[e("button",{onClick:$=>L(l),class:"p-2 text-blue-600 hover:bg-blue-50 rounded-lg transition-colors",title:"Bearbeiten"},[n(r(z),{size:20})],8,ne),e("button",{onClick:$=>T(l),class:"p-2 text-red-600 hover:bg-red-50 rounded-lg transition-colors",title:"Löschen"},[n(r(K),{size:20})],8,ie)])):d("",!0)]),e("div",de,c(l.content),1)]))),128)),y.value.length===0?(a(),o("div",ce,[n(r(O),{size:48,class:"mx-auto text-gray-400 mb-4"}),s[4]||(s[4]=e("p",{class:"text-gray-500 text-lg"},"Noch keine internen News vorhanden.",-1)),b.value?(a(),o("p",ue,' Klicken Sie auf "News erstellen", um die erste News zu veröffentlichen. ')):d("",!0)])):d("",!0)])),h.value?(a(),o("div",{key:2,class:"fixed inset-0 z-50 bg-black/50 flex items-center justify-center p-4",onClick:N(w,["self"])},[e("div",me,[e("h2",pe,c(v.value?"News bearbeiten":"News erstellen"),1),e("form",{onSubmit:N(I,["prevent"]),class:"space-y-4"},[e("div",null,[s[5]||(s[5]=e("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Titel *",-1)),D(e("input",{"onUpdate:modelValue":s[0]||(s[0]=l=>m.value.title=l),type:"text",required:"",class:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500",disabled:i.value},null,8,ve),[[C,m.value.title]])]),e("div",null,[s[6]||(s[6]=e("label",{class:"block text-sm font-medium text-gray-700 mb-2"},"Inhalt *",-1)),D(e("textarea",{"onUpdate:modelValue":s[1]||(s[1]=l=>m.value.content=l),rows:"12",required:"",class:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500",disabled:i.value},null,8,fe),[[C,m.value.content]])]),u.value?(a(),o("div",he,[n(r(R),{size:20,class:"mr-2"}),f(" "+c(u.value),1)])):d("",!0),e("div",xe,[e("button",{type:"button",onClick:w,class:"px-6 py-2 border border-gray-300 text-gray-700 rounded-lg hover:bg-gray-50 transition-colors",disabled:i.value}," Abbrechen ",8,ye),e("button",{type:"submit",class:"px-6 py-2 bg-primary-600 hover:bg-primary-700 text-white font-semibold rounded-lg transition-colors flex items-center",disabled:i.value},[i.value?(a(),U(r(S),{key:0,size:20,class:"animate-spin mr-2"})):d("",!0),e("span",null,c(i.value?"Speichert...":"Speichern"),1)],8,be)])],32)])])):d("",!0)])]))}};export{ze as default};
|