Update asset references in index.html: Change script and stylesheet links to new hashed filenames for improved caching and performance.
All checks were successful
Deploy miriamgemeinde / deploy (push) Successful in 7s

This commit is contained in:
Torsten Schulz (local)
2026-04-29 18:32:22 +02:00
parent ddf05bd0e0
commit 7156cc141a
33 changed files with 206 additions and 2 deletions

View File

@@ -0,0 +1,2 @@
import{E as e,L as t,c as n,ct as r,d as i,i as a,ot as o,t as s,u as c,w as l}from"./_plugin-vue_export-helper-Conii5fq.js";import{r as u}from"./router-CLi6dkmN.js";var d={name:`AddImageDialog`,emits:[`confirm`],setup(e,{emit:n}){let r=t(!1),i=t([]),a=t(null),o=()=>{r.value=!0,l()},s=()=>{r.value=!1},c=()=>{a.value&&n(`confirm`,`${a.value.id}`),s()},l=async()=>{try{i.value=(await u.get(`/image`)).data}catch(e){console.error(`Fehler beim Laden der Bilder:`,e),i.value=[]}};return{isOpen:r,images:i,selectedImage:a,openAddImageDialog:o,closeAddImageDialog:s,confirmAddImageConfiguration:c,selectImage:e=>{console.log(e),a.value=e}}}},f={key:0,class:`dialog-overlay`},p={class:`dialog-content`},m={class:`images-container`},h=[`onClick`],g=[`src`],_=[`title`],v={key:1},y={class:`button-container`};function b(t,s,u,d,b,x){return l(),i(`div`,null,[d.isOpen?(l(),i(`div`,f,[n(`div`,p,[s[2]||=n(`h3`,null,`Bild auswählen`,-1),n(`div`,m,[(l(!0),i(a,null,e(d.images,e=>(l(),i(`div`,{key:e.id,class:o([`image-block`,{selected:e.id===d.selectedImage?.id}]),onClick:t=>d.selectImage(e)},[n(`img`,{src:`/images/uploads/`+e.filename},null,8,g),e.description?(l(),i(`span`,{key:0,title:e.description},r(e.title),9,_)):(l(),i(`span`,v,r(e.title),1))],10,h))),128))]),n(`div`,y,[n(`button`,{onClick:s[0]||=(...e)=>d.confirmAddImageConfiguration&&d.confirmAddImageConfiguration(...e)},`Bestätigen`),n(`button`,{onClick:s[1]||=(...e)=>d.closeAddImageDialog&&d.closeAddImageDialog(...e)},`Schließen`)])])])):c(``,!0)])}var x=s(d,[[`render`,b],[`__scopeId`,`data-v-32c70499`]]);export{x as t};
//# sourceMappingURL=AddImageDialog-A4MscbWl.js.map

View File

@@ -0,0 +1,2 @@
import{O as e,c as t,ct as n,d as r,h as i,t as a,w as o}from"./_plugin-vue_export-helper-Conii5fq.js";import{i as s,r as c}from"./vuex.esm-bundler-CDO_-3pz.js";import{r as l}from"./router-CLi6dkmN.js";import{t as u}from"./RenderContentComponent-BTtif_Ul.js";var d={name:`ContentComponent`,components:{RenderContentComponent:u},props:{link:{type:String,required:!0}},data(){return{content:``,title:``}},computed:{...s([`menuData`]),...c([`getMenuData`])},watch:{link:{immediate:!0,handler(e){this.fetchContent(e),this.setTitle(e)}}},methods:{async fetchContent(e){try{this.content=(await l.get(`/page-content?link=${e}`)).data.content}catch(e){console.error(`Fehler beim Abrufen des Inhalts:`,e)}},setTitle(e){let t=(e,n)=>{for(let r of e){if(r.link===n)return r.pageTitle||r.name;if(r.submenu&&r.submenu.length>0){let e=t(r.submenu,n);if(e)return`${e}`}}return``};this.title=t(this.menuData,e)}}};function f(a,s,c,l,u,d){let f=e(`RenderContentComponent`);return o(),r(`div`,null,[t(`h1`,null,n(u.title),1),i(f,{content:u.content},null,8,[`content`])])}var p=a(d,[[`render`,f]]);export{p as t};
//# sourceMappingURL=ContentComponent-6woYegVC.js.map

View File

@@ -0,0 +1,2 @@
import{O as e,c as t,d as n,l as r,t as i,w as a}from"./_plugin-vue_export-helper-Conii5fq.js";import{i as o}from"./vuex.esm-bundler-CDO_-3pz.js";import{t as s}from"./ContentComponent-6woYegVC.js";function c(e){if(!e||typeof e!=`string`)return`/`;let t=e.trim();return t.startsWith(`/`)||(t=`/${t}`),t.length>1&&(t=t.replace(/\/+$/,``)),t||`/`}function l(e,t){let n=c(t);for(let t of e||[])if(c(t?.link||``)===n||Array.isArray(t?.submenu)&&l(t.submenu,n))return!0;return!1}var u={name:`DefaultComponent`,components:{ContentComponent:s},computed:{...o([`menuData`]),normalizedPath(){return c(this.$route.path)},isKnownMenuPath(){return l(this.menuData,this.normalizedPath)}}},d={key:1,class:`not-found`};function f(i,o,s,c,l,u){let f=e(`ContentComponent`);return a(),n(`div`,null,[u.isKnownMenuPath?(a(),r(f,{key:0,link:u.normalizedPath},null,8,[`link`])):(a(),n(`div`,d,[...o[0]||=[t(`h1`,null,`Seite existiert nicht`,-1),t(`p`,null,`Leider existiert die aufgerufene Seite nicht.`,-1)]]))])}var p=i(u,[[`render`,f],[`__scopeId`,`data-v-988aab8e`]]);export{p as default};
//# sourceMappingURL=DefaultComponent-Cc27CsQ5.js.map

View File

@@ -0,0 +1,2 @@
import{O as e,d as t,h as n,t as r,w as i}from"./_plugin-vue_export-helper-Conii5fq.js";import{t as a}from"./ContentComponent-6woYegVC.js";var o={name:`DefaultPage`,components:{ContentComponent:a},computed:{currentLink(){return this.$route.path}}},s={class:`some-page`};function c(r,a,o,c,l,u){let d=e(`ContentComponent`);return i(),t(`div`,s,[n(d,{link:u.currentLink},null,8,[`link`])])}var l=r(o,[[`render`,c]]);export{l as default};
//# sourceMappingURL=DefaultContent-9WJOlfqV.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
import{M as e,O as t,c as n,ct as r,d as i,h as a,j as o,m as s,t as c,u as l,w as u}from"./_plugin-vue_export-helper-Conii5fq.js";import{a as d,c as f}from"./runtime-dom.esm-bundler-CI28bPhn.js";import{r as p}from"./router-CLi6dkmN.js";var m={name:`ForgotPassword`,data(){return{email:``,dialogTitle:``,dialogMessage:``,dialogVisible:!1}},methods:{async submitForgotPassword(){try{let e=await p.post(`/auth/forgot-password`,{email:this.email});this.showDialog(`E-Mail gesendet`,e.data?.message||`Ein Link zum Zurücksetzen wurde an Ihre E-Mail-Adresse gesendet.`),this.email=``}catch(e){let t=e?.response?.data?.message||e?.message||`Ein unbekannter Fehler ist aufgetreten`;this.showDialog(`Fehler`,t)}},showDialog(e,t){this.dialogTitle=e,this.dialogMessage=t,this.dialogVisible=!0},closeDialog(){this.dialogVisible=!1}}},h={class:`forgot-password`},g={key:0,class:`dialog`},_={class:`dialog-content`};function v(c,p,m,v,y,b){let x=t(`router-link`);return u(),i(`div`,h,[p[7]||=n(`h2`,null,`Passwort vergessen`,-1),n(`form`,{onSubmit:p[1]||=f((...e)=>b.submitForgotPassword&&b.submitForgotPassword(...e),[`prevent`])},[p[3]||=n(`label`,{for:`email`},`Email-Adresse:`,-1),e(n(`input`,{type:`email`,id:`email`,"onUpdate:modelValue":p[0]||=e=>y.email=e,required:``},null,512),[[d,y.email]]),p[4]||=n(`button`,{type:`submit`},`Link zum Zurücksetzen senden`,-1)],32),n(`p`,null,[a(x,{to:`/login`},{default:o(()=>[...p[5]||=[s(`Login`,-1)]]),_:1})]),n(`p`,null,[a(x,{to:`/register`},{default:o(()=>[...p[6]||=[s(`Registrieren`,-1)]]),_:1})]),y.dialogVisible?(u(),i(`div`,g,[n(`div`,_,[n(`h3`,null,r(y.dialogTitle),1),n(`p`,null,r(y.dialogMessage),1),n(`button`,{type:`button`,onClick:p[2]||=(...e)=>b.closeDialog&&b.closeDialog(...e)},`Schließen`)])])):l(``,!0)])}var y=c(m,[[`render`,v],[`__scopeId`,`data-v-021070f7`]]);export{y as default};
//# sourceMappingURL=ForgotPasswordContent-CiCJ5m0C.js.map

View File

@@ -0,0 +1,2 @@
import{c as e,d as t,t as n,w as r}from"./_plugin-vue_export-helper-Conii5fq.js";import{i}from"./vuex.esm-bundler-CDO_-3pz.js";var a={name:`ImageContent`,data(){return{defaultImage:`/images/homepage1.png`,currentImage:`/images/homepage1.png`}},computed:{...i([`menuData`])},watch:{$route:{immediate:!0,handler(){this.updateImage()}}},methods:{updateImage(){let e=this.$route.path,t=this.menuData,n=this.findMenuItemByPath(t,e);n&&n.image?this.currentImage=`/images/${n.image}`:this.currentImage=this.defaultImage},findMenuItemByPath(e,t){for(let n of e){if(n.link===t)return n;if(n.submenu){let e=this.findMenuItemByPath(n.submenu,t);if(e)return e}}return null}}},o={class:`side-image`},s=[`src`];function c(n,i,a,c,l,u){return r(),t(`div`,o,[e(`img`,{src:l.currentImage,alt:``,loading:`lazy`,decoding:`async`},null,8,s)])}var l=n(a,[[`render`,c],[`__scopeId`,`data-v-8ec3f511`]]);export{l as default};
//# sourceMappingURL=ImageContent-D10zN_91.js.map

View File

@@ -0,0 +1 @@
.side-image[data-v-8ec3f511]{aspect-ratio:4/3;background:var(--color-bg-subtle);width:100%;overflow:hidden}.side-image img[data-v-8ec3f511]{object-fit:contain;object-position:center;width:100%;height:100%;display:block}

View File

@@ -0,0 +1 @@
form div[data-v-428e8cf1]{margin-bottom:10px}.uploaded-image[data-v-428e8cf1]{border:1px solid #e0e0e0;margin:0 0 .5em .5em;padding:10px;display:inline-block}.uploaded-image input[data-v-428e8cf1],.uploaded-image textarea[data-v-428e8cf1]{width:100%;margin:5px 0}.upload-mode-switch[data-v-428e8cf1]{gap:8px;margin-bottom:12px;display:flex}.upload-mode-switch button.active[data-v-428e8cf1]{font-weight:700}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
import{C as e,E as t,L as n,O as r,c as i,ct as a,d as o,h as s,i as c,j as l,m as u,t as d,w as f}from"./_plugin-vue_export-helper-Conii5fq.js";import{r as p}from"./router-CLi6dkmN.js";var m={name:`DefaultComponent`,setup(){let t=n([]),r=async()=>{try{let e=(await p.get(`/menu-data`)).data.find(e=>e.name===`Admin`);e&&(t.value=e.submenu)}catch(e){console.error(`Fehler beim Abrufen der Menü-Daten:`,e)}};return e(()=>{r()}),{adminSubmenu:t}}};function h(e,n,d,p,m,h){let g=r(`router-link`);return f(),o(`div`,null,[n[0]||=i(`h1`,null,`Seitenpflege`,-1),n[1]||=i(`p`,null,`Herzlich Willkommen. Auf diesen Seiten können Sie die Inhalte der Webseiten pflegen.`,-1),i(`ul`,null,[(f(!0),o(c,null,t(p.adminSubmenu,e=>(f(),o(`li`,{key:e.id},[s(g,{to:e.link},{default:l(()=>[u(a(e.name),1)]),_:2},1032,[`to`])]))),128))])])}var g=d(m,[[`render`,h],[`__scopeId`,`data-v-3f6c9349`]]);export{g as default};
//# sourceMappingURL=IndexContent-DhyEx3zO.js.map

View File

@@ -0,0 +1,2 @@
import{M as e,O as t,c as n,ct as r,d as i,h as a,j as o,m as s,t as c,u as l,w as u}from"./_plugin-vue_export-helper-Conii5fq.js";import{a as d,c as f}from"./runtime-dom.esm-bundler-CI28bPhn.js";import{n as p}from"./vuex.esm-bundler-CDO_-3pz.js";import{r as m}from"./router-CLi6dkmN.js";var h={name:`DialogComponent`,props:{title:{type:String,required:!0},message:{type:String,required:!0},modelValue:{type:Boolean,default:!1}},methods:{closeDialog(){this.$emit(`update:modelValue`,!1),this.$emit(`close`)}}},g={key:0,class:`dialog-overlay`},_={class:`dialog`};function v(e,t,a,o,s,c){return a.modelValue?(u(),i(`div`,g,[n(`div`,_,[n(`h2`,null,r(a.title),1),n(`p`,null,r(a.message),1),n(`button`,{onClick:t[0]||=(...e)=>c.closeDialog&&c.closeDialog(...e)},`OK`)])])):l(``,!0)}var y={name:`LoginComponent`,components:{DialogComponent:c(h,[[`render`,v],[`__scopeId`,`data-v-7743bdb5`]])},data(){return{email:``,password:``,dialogTitle:``,dialogMessage:``,dialogVisible:!1}},methods:{...p([`login`]),async runLogin(){try{let e=await m.post(`/auth/login`,{email:this.email,password:this.password}),t=e.data.token,n=e.data.user;this.login({user:n,token:t}),m.defaults.headers.common.Authorization=`Bearer ${t}`,this.$router.push(`/admin/index`)}catch(e){e.response?this.showDialog(`Fehler`,e.response.data.message):this.showDialog(`Ein Fehler ist aufgetreten`,e.message)}},showDialog(e,t){this.dialogTitle=e,this.dialogMessage=t,this.dialogVisible=!0},closeDialog(){this.dialogVisible=!1}}},b={class:`login`};function x(r,c,l,p,m,h){let g=t(`router-link`),_=t(`DialogComponent`);return u(),i(`div`,b,[c[9]||=n(`h2`,null,`Login`,-1),n(`form`,{onSubmit:c[2]||=f((...e)=>h.runLogin&&h.runLogin(...e),[`prevent`])},[c[4]||=n(`label`,{for:`email`},`Email-Adresse:`,-1),e(n(`input`,{type:`email`,id:`email`,"onUpdate:modelValue":c[0]||=e=>m.email=e,required:``},null,512),[[d,m.email]]),c[5]||=n(`label`,{for:`password`},`Passwort:`,-1),e(n(`input`,{type:`password`,id:`password`,"onUpdate:modelValue":c[1]||=e=>m.password=e,required:``},null,512),[[d,m.password]]),c[6]||=n(`button`,{type:`submit`},`Login`,-1)],32),n(`p`,null,[a(g,{to:`/register`},{default:o(()=>[...c[7]||=[s(`Registrieren`,-1)]]),_:1})]),n(`p`,null,[a(g,{to:`/forgot-password`},{default:o(()=>[...c[8]||=[s(`Passwort vergessen?`,-1)]]),_:1})]),a(_,{title:m.dialogTitle,message:m.dialogMessage,modelValue:m.dialogVisible,"onUpdate:modelValue":c[3]||=e=>m.dialogVisible=e,onClose:h.closeDialog},null,8,[`title`,`message`,`modelValue`,`onClose`])])}var S=c(y,[[`render`,x],[`__scopeId`,`data-v-1f68aa6b`]]);export{S as default};
//# sourceMappingURL=LoginContent-BVO2JiU3.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.newsletter-import[data-v-dba459cc]{max-width:900px;margin:0 auto}.hint[data-v-dba459cc]{color:#555;margin-bottom:10px}.import-section[data-v-dba459cc]{background:#f9f9f9;border:2px solid #ddd;border-radius:8px;padding:15px}.import-content[data-v-dba459cc]{flex-direction:column;gap:10px;display:flex}.submit-import-button[data-v-dba459cc]{width:fit-content}.selected-file[data-v-dba459cc]{background:#e8f5e9;border:1px solid #4caf50;border-radius:4px;padding:8px}.newsletter-preview[data-v-dba459cc]{background:#fff;border:1px solid #ddd;border-radius:6px;margin-top:16px;padding:12px}.newsletter-meta[data-v-dba459cc]{color:#666;margin:0 0 8px}.newsletter-counts[data-v-dba459cc]{padding-left:20px}.questions[data-v-dba459cc]{margin-top:10px}.details[data-v-dba459cc]{margin-top:12px}.detail-group[data-v-dba459cc]{margin-bottom:10px}.detail-group h5[data-v-dba459cc]{margin:0 0 4px}.detail-group li[data-v-dba459cc]{align-items:flex-start;gap:8px;margin-bottom:6px;display:flex}.transfer-button[data-v-dba459cc]{white-space:nowrap}.bulk-actions[data-v-dba459cc]{margin-bottom:10px}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
import{A as e,O as t,c as n,ct as r,d as i,h as a,s as o,t as s,w as c}from"./_plugin-vue_export-helper-Conii5fq.js";import{a as l}from"./vuex.esm-bundler-CDO_-3pz.js";import{t as u}from"./RenderContentComponent-BTtif_Ul.js";var d={name:`PagePreview`,components:{RenderContentComponent:u},setup(){let t=l(),n=o(()=>t.state.pageContent),r=o(()=>t.state.selectedPage),i=o(()=>t.state.menuData),a=o(()=>t.state.pageTitle),s=e=>{let n=(e,t)=>{for(let r of e){if(r.link===t)return r.pageTitle||r.name;if(r.submenu&&r.submenu.length>0){let e=n(r.submenu,t);if(e)return e}}return``};t.dispatch(`setPageTitle`,n(i.value,e))};return e(()=>{s(r.value)}),{content:n,title:a}}};function f(e,o,s,l,u,d){let f=t(`RenderContentComponent`);return c(),i(`div`,null,[o[0]||=n(`div`,{class:`previewinfo`},`Dies ist eine Vorschau.`,-1),n(`h1`,null,r(l.title),1),a(f,{content:l.content},null,8,[`content`])])}var p=s(d,[[`render`,f],[`__scopeId`,`data-v-e0906dd8`]]);export{p as default};
//# sourceMappingURL=PagePreviewComponent-_zx9XSTU.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
import{M as e,O as t,c as n,ct as r,d as i,h as a,j as o,m as s,t as c,u as l,w as u}from"./_plugin-vue_export-helper-Conii5fq.js";import{a as d,c as f}from"./runtime-dom.esm-bundler-CI28bPhn.js";import{r as p}from"./router-CLi6dkmN.js";var m={name:`RegisterComponent`,components:{},data(){return{name:``,email:``,password:``,dialogTitle:``,dialogMessage:``,dialogVisible:!1}},methods:{async register(){try{let e=await p.post(`/auth/register`,{name:this.name,email:this.email,password:this.password});this.showDialog(`Registrierung erfolgreich`,e.data?.message||`Ihr Konto wurde erfolgreich erstellt.`),this.name=``,this.email=``,this.password=``}catch(e){let t=e?.response?.data?.message||e?.message||`Ein unbekannter Fehler ist aufgetreten`;this.showDialog(`Fehler`,t)}},showDialog(e,t){this.dialogTitle=e,this.dialogMessage=t,this.dialogVisible=!0},closeDialog(){this.dialogVisible=!1}}},h={class:`register`},g={key:0,class:`dialog`},_={class:`dialog-content`};function v(c,p,m,v,y,b){let x=t(`router-link`);return u(),i(`div`,h,[p[11]||=n(`h2`,null,`Registrieren`,-1),n(`form`,{onSubmit:p[3]||=f((...e)=>b.register&&b.register(...e),[`prevent`])},[p[5]||=n(`label`,{for:`name`},`Name:`,-1),e(n(`input`,{type:`text`,id:`name`,"onUpdate:modelValue":p[0]||=e=>y.name=e,required:``},null,512),[[d,y.name]]),p[6]||=n(`label`,{for:`email`},`Email-Adresse:`,-1),e(n(`input`,{type:`email`,id:`email`,"onUpdate:modelValue":p[1]||=e=>y.email=e,required:``},null,512),[[d,y.email]]),p[7]||=n(`label`,{for:`password`},`Passwort:`,-1),e(n(`input`,{type:`password`,id:`password`,"onUpdate:modelValue":p[2]||=e=>y.password=e,required:``},null,512),[[d,y.password]]),p[8]||=n(`button`,{type:`submit`},`Registrieren`,-1)],32),n(`p`,null,[a(x,{to:`/login`},{default:o(()=>[...p[9]||=[s(`Login`,-1)]]),_:1})]),n(`p`,null,[a(x,{to:`/forgot-password`},{default:o(()=>[...p[10]||=[s(`Passwort vergessen?`,-1)]]),_:1})]),y.dialogVisible?(u(),i(`div`,g,[n(`div`,_,[n(`h3`,null,r(y.dialogTitle),1),n(`p`,null,r(y.dialogMessage),1),n(`button`,{type:`button`,onClick:p[4]||=(...e)=>b.closeDialog&&b.closeDialog(...e)},`Schließen`)])])):l(``,!0)])}var y=c(m,[[`render`,v],[`__scopeId`,`data-v-70d90412`]]);export{y as default};
//# sourceMappingURL=RegisterContent-Dt4Xcnsj.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.worship-card[data-v-1e78851e]{gap:var(--space-4);grid-template-columns:180px 1fr;align-items:start;display:grid}@media (width<=640px){.worship-card[data-v-1e78851e]{gap:var(--space-3);grid-template-columns:1fr}}.worship-card__left[data-v-1e78851e]{padding:var(--space-3);color:var(--color-text);background:var(--color-bg-subtle);border:1px solid #00000014;border-radius:6px}.worship-card__date[data-v-1e78851e]{font-weight:600}.worship-card__day[data-v-1e78851e],.worship-card__place[data-v-1e78851e]{margin-top:var(--space-1);color:#000000bf}.worship-card__right[data-v-1e78851e]{min-width:0}.highlight-time[data-v-1e78851e]{text-decoration:underline}.neighborhood-invitation[data-v-1e78851e]{font-weight:600}a[data-v-1e78851e]{color:var(--color-brand-primary-hover)}.internal-information[data-v-1e78851e]{color:#a01935;font-style:italic}.stack-tight[data-v-1e78851e]{gap:var(--space-2)}.image[data-v-f81373cb]{max-width:400px;max-height:300px}.mg-title[data-v-e9d6187e]{margin-top:0}.mg-card__grid--no-media[data-v-e9d6187e]{grid-template-columns:1fr}.expiry-date[data-v-124908c6]{color:var(--color-text-muted);font-size:.9em;font-style:italic}.stack-tight[data-v-124908c6]{gap:var(--space-2)}.float-list[data-v-124908c6]{gap:var(--space-3);display:grid}.float-item[data-v-124908c6]{margin:0}span[data-v-bfbab2d9]{cursor:pointer;color:#00f;text-decoration:underline}.content-render[data-v-956c804a] ul,.content-render[data-v-956c804a] ol{margin:.2rem 0 .35rem;padding-left:1.05rem}.content-render[data-v-956c804a] li{margin:.08rem 0;line-height:1.35}.content-render[data-v-956c804a] ul{padding-left:0;list-style:none}.content-render[data-v-956c804a] ul>li{padding-left:1.05rem;position:relative}.content-render[data-v-956c804a] ul>li:before{content:"•";color:var(--color-brand-primary-hover);font-size:.95em;line-height:1;position:absolute;top:.02em;left:0}.content-render[data-v-956c804a] ul ul{margin-top:.08rem;margin-bottom:.18rem}.content-render[data-v-956c804a] ul ul>li{padding-left:.95rem}.content-render[data-v-956c804a] ul ul>li:before{content:"◦";color:var(--color-text-muted);font-size:.9em}.content-render[data-v-956c804a] ol{list-style-position:outside}.content-render[data-v-956c804a] ol>li::marker{color:var(--color-brand-primary-hover);font-weight:600}

View File

@@ -0,0 +1,2 @@
import{M as e,O as t,c as n,ct as r,d as i,h as a,j as o,m as s,t as c,u as l,w as u}from"./_plugin-vue_export-helper-Conii5fq.js";import{a as d,c as f}from"./runtime-dom.esm-bundler-CI28bPhn.js";import{r as p}from"./router-CLi6dkmN.js";var m={name:`ResetPasswordComponent`,data(){return{password:``,confirmPassword:``,token:``,dialogTitle:``,dialogMessage:``,dialogVisible:!1}},computed:{isFormValid(){return this.password.length>=6&&this.password===this.confirmPassword&&this.token}},mounted(){this.token=new URLSearchParams(window.location.search).get(`token`),this.token||this.showDialog(`Fehler`,`Ungültiger Reset-Link. Bitte fordern Sie einen neuen Link an.`)},methods:{async submitResetPassword(){if(this.password!==this.confirmPassword){this.showDialog(`Fehler`,`Die Passwörter stimmen nicht überein.`);return}try{let e=await p.post(`/auth/reset-password`,{token:this.token,password:this.password});this.showDialog(`Erfolg`,e.data?.message||`Passwort erfolgreich zurückgesetzt. Sie können sich jetzt anmelden.`),this.password=``,this.confirmPassword=``,setTimeout(()=>{this.$router.push(`/auth/login`)},3e3)}catch(e){let t=e?.response?.data?.message||e?.message||`Ein unbekannter Fehler ist aufgetreten`;this.showDialog(`Fehler`,t)}},showDialog(e,t){this.dialogTitle=e,this.dialogMessage=t,this.dialogVisible=!0},closeDialog(){this.dialogVisible=!1}}},h={class:`reset-password`},g=[`disabled`],_={key:0,class:`dialog`},v={class:`dialog-content`};function y(c,p,m,y,b,x){let S=t(`router-link`);return u(),i(`div`,h,[p[7]||=n(`h2`,null,`Neues Passwort setzen`,-1),n(`form`,{onSubmit:p[2]||=f((...e)=>x.submitResetPassword&&x.submitResetPassword(...e),[`prevent`])},[p[4]||=n(`label`,{for:`password`},`Neues Passwort:`,-1),e(n(`input`,{type:`password`,id:`password`,"onUpdate:modelValue":p[0]||=e=>b.password=e,required:``,minlength:`6`},null,512),[[d,b.password]]),p[5]||=n(`label`,{for:`confirmPassword`},`Passwort bestätigen:`,-1),e(n(`input`,{type:`password`,id:`confirmPassword`,"onUpdate:modelValue":p[1]||=e=>b.confirmPassword=e,required:``,minlength:`6`},null,512),[[d,b.confirmPassword]]),n(`button`,{type:`submit`,disabled:!x.isFormValid},`Passwort zurücksetzen`,8,g)],32),n(`p`,null,[a(S,{to:`/login`},{default:o(()=>[...p[6]||=[s(`Zurück zum Login`,-1)]]),_:1})]),b.dialogVisible?(u(),i(`div`,_,[n(`div`,v,[n(`h3`,null,r(b.dialogTitle),1),n(`p`,null,r(b.dialogMessage),1),n(`button`,{type:`button`,onClick:p[3]||=(...e)=>x.closeDialog&&x.closeDialog(...e)},`Schließen`)])])):l(``,!0)])}var b=c(m,[[`render`,y],[`__scopeId`,`data-v-3a4e9538`]]);export{b as default};
//# sourceMappingURL=ResetPasswordContent-BrTwf_fI.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
import{C as e,E as t,L as n,M as r,c as i,ct as a,d as o,i as s,t as c,w as l}from"./_plugin-vue_export-helper-Conii5fq.js";import{a as u}from"./runtime-dom.esm-bundler-CI28bPhn.js";import{r as d}from"./router-CLi6dkmN.js";var f={name:`UploadFilesComponent`,setup(){let t=n(null),r=n(``),i=n([]);return e(async()=>{try{i.value=(await d.get(`/files`)).data}catch(e){console.error(`Fehler beim Abrufen der Dateien:`,e)}}),{fileToUpload:t,fileTitle:r,uploadedFiles:i,handleFileUpload:e=>{t.value=e.target.files[0]},uploadFiles:async()=>{if(!t.value||!r.value){alert(`Bitte wählen Sie eine Datei aus und geben Sie einen Titel ein.`);return}let e=new FormData;e.append(`file`,t.value),e.append(`title`,r.value);try{let n=(await d.post(`/files`,e,{headers:{"Content-Type":`multipart/form-data`}})).data;i.value.push({id:n.id,title:n.title,originalName:n.originalName,createdAt:n.createdAt,hash:n.hash}),t.value=null,r.value=``}catch(e){console.error(`Fehler beim Hochladen der Datei:`,e)}},downloadFile:async e=>{let t=e.originalName.substring(e.originalName.lastIndexOf(`.`)),n=await d.get(`/files/download/${e.hash}`,{responseType:`blob`}),r=new Blob([n.data],{type:n.data.type}),i=document.createElement(`a`);i.href=window.URL.createObjectURL(r),i.download=`${e.title}${t}`,i.click(),window.URL.revokeObjectURL(i.href)},formatDate:e=>new Date(e).toLocaleDateString(void 0,{year:`numeric`,month:`long`,day:`numeric`})}}},p={class:`upload-files`},m={class:`file-list`},h={class:`file-info`},g=[`onClick`],_=[`onClick`],v={class:`file-date`};function y(e,n,c,d,f,y){return l(),o(`div`,p,[n[5]||=i(`h2`,null,`Dateien hochladen`,-1),i(`div`,null,[n[3]||=i(`label`,{for:`file-upload`},`Datei auswählen:`,-1),i(`input`,{id:`file-upload`,type:`file`,onChange:n[0]||=(...e)=>d.handleFileUpload&&d.handleFileUpload(...e)},null,32)]),i(`div`,null,[n[4]||=i(`label`,{for:`file-title`},`Titel eingeben:`,-1),r(i(`input`,{id:`file-title`,type:`text`,"onUpdate:modelValue":n[1]||=e=>d.fileTitle=e},null,512),[[u,d.fileTitle]])]),i(`button`,{onClick:n[2]||=(...e)=>d.uploadFiles&&d.uploadFiles(...e)},`Hochladen`),i(`ul`,m,[(l(!0),o(s,null,t(d.uploadedFiles,e=>(l(),o(`li`,{key:e.id},[i(`div`,h,[i(`span`,{class:`file-title`,onClick:t=>d.downloadFile(e)},a(e.title),9,g),i(`span`,{class:`file-name`,onClick:t=>d.downloadFile(e)},a(e.originalName),9,_),i(`span`,v,a(d.formatDate(e.createdAt)),1)])]))),128))])])}var b=c(f,[[`render`,y],[`__scopeId`,`data-v-8ac38dc3`]]);export{b as default};
//# sourceMappingURL=UploadFileManagement-W8Ia-7nM.js.map

View File

@@ -0,0 +1,2 @@
import{E as e,M as t,c as n,ct as r,d as i,i as a,t as o,u as s,w as c}from"./_plugin-vue_export-helper-Conii5fq.js";import{a as l,c as u,r as d}from"./runtime-dom.esm-bundler-CI28bPhn.js";import{r as f}from"./router-CLi6dkmN.js";var p={name:`UserAdministration`,data(){return{users:[],currentUser:{name:``,email:``,password:``,active:!1},isCreating:!0}},computed:{formTitle(){return this.isCreating?`Benutzer erstellen`:`Benutzer bearbeiten`}},methods:{async fetchUsers(){try{this.users=(await f.get(`/users`)).data}catch(e){console.error(`Fehler beim Abrufen der Benutzer:`,e)}},async saveUser(){this.isCreating?await this.createUser():await this.updateUser(),this.resetForm(),this.fetchUsers()},async createUser(){try{await f.post(`/users`,this.currentUser)}catch(e){console.error(`Fehler beim Erstellen des Benutzers:`,e)}},async updateUser(){try{await f.put(`/users/${this.currentUser.id}`,this.currentUser)}catch(e){console.error(`Fehler beim Aktualisieren des Benutzers:`,e)}},editUser(e){this.currentUser={...e,password:``},this.isCreating=!1},resetForm(){this.currentUser={name:``,email:``,password:``,active:!1},this.isCreating=!0}},mounted(){this.fetchUsers()}},m={class:`user-administration`},h=[`required`],g={type:`submit`},_={key:1},v=[`onClick`];function y(o,f,p,y,b,x){return c(),i(`div`,m,[f[11]||=n(`h1`,null,`Benutzerverwaltung`,-1),n(`h2`,null,r(x.formTitle),1),n(`form`,{onSubmit:f[4]||=u((...e)=>x.saveUser&&x.saveUser(...e),[`prevent`])},[f[7]||=n(`label`,{for:`name`},`Name:`,-1),t(n(`input`,{id:`name`,"onUpdate:modelValue":f[0]||=e=>b.currentUser.name=e,required:``},null,512),[[l,b.currentUser.name]]),f[8]||=n(`label`,{for:`email`},`Email:`,-1),t(n(`input`,{id:`email`,"onUpdate:modelValue":f[1]||=e=>b.currentUser.email=e,type:`email`,required:``},null,512),[[l,b.currentUser.email]]),f[9]||=n(`label`,{for:`password`},`Passwort:`,-1),t(n(`input`,{id:`password`,"onUpdate:modelValue":f[2]||=e=>b.currentUser.password=e,type:`password`,required:b.isCreating},null,8,h),[[l,b.currentUser.password]]),n(`div`,null,[f[6]||=n(`label`,{for:`active`},`Aktiv:`,-1),t(n(`input`,{id:`active`,"onUpdate:modelValue":f[3]||=e=>b.currentUser.active=e,type:`checkbox`},null,512),[[d,b.currentUser.active]])]),n(`button`,g,r(b.isCreating?`Erstellen`:`Aktualisieren`),1)],32),b.isCreating?s(``,!0):(c(),i(`button`,{key:0,onClick:f[5]||=(...e)=>x.resetForm&&x.resetForm(...e)},`Zurück zu Benutzer erstellen`)),b.users.length?(c(),i(`div`,_,[f[10]||=n(`h2`,null,`Vorhandene Benutzer`,-1),n(`ul`,null,[(c(!0),i(a,null,e(b.users,e=>(c(),i(`li`,{key:e.id,onClick:t=>x.editUser(e)},r(e.name)+` (`+r(e.email)+`) `,9,v))),128))])])):s(``,!0)])}var b=o(p,[[`render`,y],[`__scopeId`,`data-v-b4cc64c6`]]);export{b as default};
//# sourceMappingURL=UserAdministration-BEbYGi-0.js.map

View File

@@ -0,0 +1 @@
.worship-leader-admin[data-v-46ecca06]{padding:20px}form[data-v-46ecca06]{gap:8px;max-width:520px;display:grid}.row[data-v-46ecca06]{align-items:center;gap:10px;display:flex}.list[data-v-46ecca06]{margin-top:18px}.tools[data-v-46ecca06]{margin:8px 0}.item[data-v-46ecca06]{align-items:center;gap:10px;margin:6px 0;display:flex}.link[data-v-46ecca06]{color:#1a73e8;cursor:pointer;text-align:left;background:0 0;border:none;padding:0}.danger[data-v-46ecca06]{color:#fff;cursor:pointer;background:#c62828;border:none;border-radius:4px;padding:4px 8px}

View File

@@ -0,0 +1,2 @@
import{E as e,M as t,c as n,ct as r,d as i,i as a,m as o,t as s,u as c,w as l}from"./_plugin-vue_export-helper-Conii5fq.js";import{a as u,c as d,r as f}from"./runtime-dom.esm-bundler-CI28bPhn.js";import{r as p}from"./router-CLi6dkmN.js";var m={name:`WorshipLeaderAdministration`,data(){return{leaders:[],includeInactive:!1,currentLeader:{code:``,name:``,aliases:``,active:!0},isCreating:!0}},computed:{formTitle(){return this.isCreating?`Kürzel anlegen`:`Kürzel bearbeiten`}},methods:{async fetchLeaders(){try{this.leaders=(await p.get(`/worship-leaders`,{params:{includeInactive:+!!this.includeInactive}})).data||[]}catch(e){console.error(`Fehler beim Abrufen der Kürzel:`,e)}},async saveLeader(){try{this.isCreating?await p.post(`/worship-leaders`,this.currentLeader):await p.put(`/worship-leaders/${this.currentLeader.id}`,this.currentLeader),this.resetForm(),await this.fetchLeaders()}catch(e){let t=e.response?.data?.message||e.message;alert(`Fehler: ${t}`)}},editLeader(e){this.currentLeader={...e},this.isCreating=!1},async deleteLeader(e){if(confirm(`Kürzel "${e.code}" wirklich löschen?`))try{await p.delete(`/worship-leaders/${e.id}`),await this.fetchLeaders()}catch(e){console.error(`Fehler beim Löschen:`,e)}},resetForm(){this.currentLeader={code:``,name:``,aliases:``,active:!0},this.isCreating=!0}},mounted(){this.fetchLeaders()}},h={class:`worship-leader-admin`},g={class:`row`},_={type:`submit`},v={class:`list`},y={class:`tools`},b={key:0},x=[`onClick`],S={key:0},C={key:1},w=[`onClick`],T={key:1};function E(s,p,m,E,D,O){return l(),i(`div`,h,[p[14]||=n(`h1`,null,`Gestalter (Kürzel)`,-1),n(`h2`,null,r(O.formTitle),1),n(`form`,{onSubmit:p[5]||=d((...e)=>O.saveLeader&&O.saveLeader(...e),[`prevent`])},[p[9]||=n(`label`,{for:`code`},`Kürzel (z.B. "Eif"):`,-1),t(n(`input`,{id:`code`,"onUpdate:modelValue":p[0]||=e=>D.currentLeader.code=e,required:``},null,512),[[u,D.currentLeader.code]]),p[10]||=n(`label`,{for:`name`},`Name (wird als Gestalter gespeichert):`,-1),t(n(`input`,{id:`name`,"onUpdate:modelValue":p[1]||=e=>D.currentLeader.name=e,required:``},null,512),[[u,D.currentLeader.name]]),p[11]||=n(`label`,{for:`aliases`},`Aliase (kommagetrennt):`,-1),t(n(`input`,{id:`aliases`,"onUpdate:modelValue":p[2]||=e=>D.currentLeader.aliases=e},null,512),[[u,D.currentLeader.aliases]]),n(`div`,g,[p[8]||=n(`label`,{for:`active`},`Aktiv:`,-1),t(n(`input`,{id:`active`,"onUpdate:modelValue":p[3]||=e=>D.currentLeader.active=e,type:`checkbox`},null,512),[[f,D.currentLeader.active]])]),n(`button`,_,r(D.isCreating?`Erstellen`:`Aktualisieren`),1),D.isCreating?c(``,!0):(l(),i(`button`,{key:0,type:`button`,onClick:p[4]||=(...e)=>O.resetForm&&O.resetForm(...e)},`Abbrechen`))],32),n(`div`,v,[p[13]||=n(`h2`,null,`Vorhandene Kürzel`,-1),n(`div`,y,[n(`label`,null,[t(n(`input`,{type:`checkbox`,"onUpdate:modelValue":p[6]||=e=>D.includeInactive=e,onChange:p[7]||=(...e)=>O.fetchLeaders&&O.fetchLeaders(...e)},null,544),[[f,D.includeInactive]]),p[12]||=o(` Inaktive anzeigen`,-1)])]),D.leaders.length?(l(),i(`ul`,b,[(l(!0),i(a,null,e(D.leaders,e=>(l(),i(`li`,{key:e.id,class:`item`},[n(`button`,{type:`button`,class:`link`,onClick:t=>O.editLeader(e)},[n(`strong`,null,r(e.code),1),o(` `+r(e.name)+` `,1),e.aliases?(l(),i(`span`,S,` (`+r(e.aliases)+`)`,1)):c(``,!0),e.active?c(``,!0):(l(),i(`span`,C,` [inaktiv]`))],8,x),n(`button`,{type:`button`,class:`danger`,onClick:t=>O.deleteLeader(e)},`Löschen`,8,w)]))),128))])):(l(),i(`p`,T,`Keine Einträge.`))])])}var D=s(m,[[`render`,E],[`__scopeId`,`data-v-46ecca06`]]);export{D as default};
//# sourceMappingURL=WorshipLeaderAdministration-CNLQ0jVC.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -5,11 +5,11 @@
<meta name="viewport" content="width=device-width,initial-scale=1" /> <meta name="viewport" content="width=device-width,initial-scale=1" />
<link rel="icon" href="/favicon.ico" /> <link rel="icon" href="/favicon.ico" />
<title>Miriamgemeinde</title> <title>Miriamgemeinde</title>
<script type="module" crossorigin src="/assets/index-B6eWboNW.js"></script> <script type="module" crossorigin src="/assets/index-Du6sfhKY.js"></script>
<link rel="modulepreload" crossorigin href="/assets/_plugin-vue_export-helper-Conii5fq.js"> <link rel="modulepreload" crossorigin href="/assets/_plugin-vue_export-helper-Conii5fq.js">
<link rel="modulepreload" crossorigin href="/assets/axios-DHQprbt3.js"> <link rel="modulepreload" crossorigin href="/assets/axios-DHQprbt3.js">
<link rel="modulepreload" crossorigin href="/assets/vuex.esm-bundler-CDO_-3pz.js"> <link rel="modulepreload" crossorigin href="/assets/vuex.esm-bundler-CDO_-3pz.js">
<link rel="modulepreload" crossorigin href="/assets/router-BZsF9d_r.js"> <link rel="modulepreload" crossorigin href="/assets/router-CLi6dkmN.js">
<link rel="modulepreload" crossorigin href="/assets/runtime-dom.esm-bundler-CI28bPhn.js"> <link rel="modulepreload" crossorigin href="/assets/runtime-dom.esm-bundler-CI28bPhn.js">
<link rel="stylesheet" crossorigin href="/assets/index-FsAvsxvA.css"> <link rel="stylesheet" crossorigin href="/assets/index-FsAvsxvA.css">
<link rel="stylesheet" crossorigin href="/assets/vue-multiselect-d_KC3g6j.css"> <link rel="stylesheet" crossorigin href="/assets/vue-multiselect-d_KC3g6j.css">