Files
harheimertc/.output/public/_nuxt/CwfNFVsO.js

7 lines
6.0 KiB
JavaScript

import{e as E,j as V,r as p,f as $,g as B,c as o,a as e,h as d,b as n,d as f,u as r,F,i as I,k as N,t as c,l as S,v as z,m as P,o as l,U}from"#entry";import{u as q}from"./Qy3ajxTk.js";import{L as C}from"./CUq_0rkE.js";import{C as H}from"./YJHbYJtA.js";import{S as M,T as K}from"./CGpRzXRB.js";import{N as O}from"./DAACT36i.js";import{A as W}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 G=E("PlusIcon",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]),J={class:"min-h-full py-16 bg-gray-50"},Q={class:"max-w-4xl mx-auto px-4 sm:px-6 lg:px-8"},R={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"},ae={class:"flex items-center"},le={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"],xe={key:0,class:"flex items-center p-3 rounded-md bg-red-50 text-red-700 text-sm"},ye={class:"flex justify-end space-x-4 pt-4"},he=["disabled"],be=["disabled"],Me={__name:"news",setup(ge){const _=V(),y=p(!0),i=p(!1),h=p([]),x=p(!1),v=p(null),u=p(""),m=p({title:"",content:""}),b=$(()=>_.role==="admin"||_.role==="vorstand"),g=async()=>{y.value=!0;try{const t=await $fetch("/api/news");h.value=t.news}catch(t){console.error("Fehler beim Laden der News:",t)}finally{y.value=!1}},L=()=>{v.value=null,m.value={title:"",content:""},x.value=!0,u.value=""},D=t=>{v.value=t,m.value={title:t.title,content:t.content},x.value=!0,u.value=""},w=()=>{x.value=!1,v.value=null,u.value=""},T=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}},j=async t=>{if(confirm(`Möchten Sie die News "${t.title}" wirklich löschen?`))try{await $fetch("/api/news",{method:"DELETE",body:{id:t.id}}),await g()}catch{alert("Fehler beim Löschen der News.")}},k=t=>t?new Date(t).toLocaleDateString("de-DE",{year:"numeric",month:"long",day:"numeric",hour:"2-digit",minute:"2-digit"}):"";return B(()=>{g()}),q({title:"Interne News - Harheimer TC"}),(t,s)=>(l(),o("div",J,[e("div",Q,[e("div",R,[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?(l(),o("button",{key:0,onClick:L,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(G),{size:20,class:"mr-2"}),s[2]||(s[2]=f(" News erstellen ",-1))])):d("",!0)]),y.value?(l(),o("div",X,[n(r(C),{size:40,class:"animate-spin text-primary-600"})])):(l(),o("div",Y,[(l(!0),o(F,null,I(h.value,a=>(l(),o("article",{key:a.id,class:"bg-white rounded-xl shadow-lg p-6 border border-gray-100"},[e("div",Z,[e("div",ee,[e("h2",te,c(a.title),1),e("div",se,[e("div",ae,[n(r(U),{size:16,class:"mr-1"}),f(" "+c(a.author),1)]),e("div",le,[n(r(H),{size:16,class:"mr-1"}),f(" "+c(k(a.created)),1)]),a.updated!==a.created?(l(),o("div",oe,[n(r(M),{size:16,class:"mr-1"}),f(" Aktualisiert: "+c(k(a.updated)),1)])):d("",!0)])]),b.value?(l(),o("div",re,[e("button",{onClick:A=>D(a),class:"p-2 text-blue-600 hover:bg-blue-50 rounded-lg transition-colors",title:"Bearbeiten"},[n(r(M),{size:20})],8,ne),e("button",{onClick:A=>j(a),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(a.content),1)]))),128)),h.value.length===0?(l(),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?(l(),o("p",ue,' Klicken Sie auf "News erstellen", um die erste News zu veröffentlichen. ')):d("",!0)])):d("",!0)])),x.value?(l(),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(T,["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)),S(e("input",{"onUpdate:modelValue":s[0]||(s[0]=a=>m.value.title=a),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),[[z,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)),S(e("textarea",{"onUpdate:modelValue":s[1]||(s[1]=a=>m.value.content=a),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),[[z,m.value.content]])]),u.value?(l(),o("div",xe,[n(r(W),{size:20,class:"mr-2"}),f(" "+c(u.value),1)])):d("",!0),e("div",ye,[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,he),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?(l(),P(r(C),{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{Me as default};