Improve error handling for menu data fetching and update HTML structure: Enhance error logging in menuDataController, provide user-friendly error messages, and streamline the index.html file by adding new script references while removing an unused image.
This commit is contained in:
@@ -6,7 +6,8 @@ exports.getMenuData = async (req, res) => {
|
||||
const menuData = await fetchMenuData();
|
||||
res.json(menuData);
|
||||
} catch (error) {
|
||||
res.status(500).send('Error fetching menu data');
|
||||
console.error('getMenuData:', error);
|
||||
res.status(500).json({ error: 'Menü konnte nicht geladen werden (Datenbank nicht erreichbar).' });
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
1
public/css/119.9fd877d4.css
Normal file
1
public/css/119.9fd877d4.css
Normal file
File diff suppressed because one or more lines are too long
1
public/css/187.f4e467b4.css
Normal file
1
public/css/187.f4e467b4.css
Normal file
@@ -0,0 +1 @@
|
||||
.event-places-management[data-v-4e6631f7]{max-width:600px;margin:auto;padding:20px;border:1px solid #ccc;border-radius:5px}form[data-v-4e6631f7]{display:flex;flex-direction:column;margin-bottom:20px}label[data-v-4e6631f7]{margin-top:10px}input[data-v-4e6631f7]{margin-top:5px;margin-bottom:10px;padding:8px}button[data-v-4e6631f7]{margin-top:10px;padding:10px}table[data-v-4e6631f7]{width:100%;border-collapse:collapse;margin-top:20px}td[data-v-4e6631f7],th[data-v-4e6631f7]{border:1px solid #ccc;padding:10px;text-align:left}th[data-v-4e6631f7]{background-color:#f4f4f4}
|
||||
1
public/css/23.78894bf8.css
Normal file
1
public/css/23.78894bf8.css
Normal file
@@ -0,0 +1 @@
|
||||
div[data-v-68b32234]{padding:20px}ul[data-v-68b32234]{list-style:none;padding:0;margin:0}li[data-v-68b32234]{padding:0;margin:0}
|
||||
1
public/css/246.1e896a7d.css
Normal file
1
public/css/246.1e896a7d.css
Normal file
File diff suppressed because one or more lines are too long
1
public/css/324.2d192723.css
Normal file
1
public/css/324.2d192723.css
Normal file
@@ -0,0 +1 @@
|
||||
.forgot-password[data-v-c694cf4e]{max-width:400px;margin:auto}form[data-v-c694cf4e]{display:flex;flex-direction:column}label[data-v-c694cf4e]{margin-top:10px}button[data-v-c694cf4e]{margin-top:20px}.dialog[data-v-c694cf4e]{position:fixed;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.4)}.dialog-content[data-v-c694cf4e]{background:#fff;padding:16px;border-radius:4px;max-width:420px;width:90%}
|
||||
1
public/css/355.ad78254c.css
Normal file
1
public/css/355.ad78254c.css
Normal file
@@ -0,0 +1 @@
|
||||
.dialog-overlay[data-v-ce9d9498]{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:1000}.dialog[data-v-ce9d9498]{background:#fff;padding:30px;border-radius:8px;max-width:400px;width:90%;text-align:center;box-shadow:0 4px 6px rgba(0,0,0,.1)}.dialog h2[data-v-ce9d9498]{margin-top:0;margin-bottom:15px;color:#333;font-size:20px}.dialog p[data-v-ce9d9498]{margin:15px 0;color:#666;line-height:1.5}.dialog button[data-v-ce9d9498]{margin-top:20px;padding:10px 20px;background-color:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:16px}.dialog button[data-v-ce9d9498]:hover{background-color:#0056b3}
|
||||
1
public/css/404.4bd58cd7.css
Normal file
1
public/css/404.4bd58cd7.css
Normal file
@@ -0,0 +1 @@
|
||||
.institution-management[data-v-ff992c44]{max-width:600px;margin:auto;padding:20px;border:1px solid #ccc;border-radius:5px}form[data-v-ff992c44]{display:flex;flex-direction:column;margin-bottom:20px}label[data-v-ff992c44]{margin-top:10px}input[data-v-ff992c44]{margin-top:5px;margin-bottom:10px;padding:8px}button[data-v-ff992c44]{margin-top:10px;padding:10px}table[data-v-ff992c44]{width:100%;border-collapse:collapse;margin-top:20px}td[data-v-ff992c44],th[data-v-ff992c44]{border:1px solid #ccc;padding:10px;text-align:left}th[data-v-ff992c44]{background-color:#f4f4f4}
|
||||
1
public/css/414.30c15939.css
Normal file
1
public/css/414.30c15939.css
Normal file
File diff suppressed because one or more lines are too long
1
public/css/423.63d77ea0.css
Normal file
1
public/css/423.63d77ea0.css
Normal file
@@ -0,0 +1 @@
|
||||
.reset-password[data-v-e49a033c]{max-width:400px;margin:auto}form[data-v-e49a033c]{display:flex;flex-direction:column}label[data-v-e49a033c]{margin-top:10px}input[data-v-e49a033c]{margin-top:5px;padding:8px;border:1px solid #ddd;border-radius:4px}button[data-v-e49a033c]{margin-top:20px;padding:10px;background-color:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer}button[data-v-e49a033c]:disabled{background-color:#ccc;cursor:not-allowed}.dialog[data-v-e49a033c]{position:fixed;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.4)}.dialog-content[data-v-e49a033c]{background:#fff;padding:16px;border-radius:4px;max-width:420px;width:90%}
|
||||
1
public/css/441.bdb3d500.css
Normal file
1
public/css/441.bdb3d500.css
Normal file
@@ -0,0 +1 @@
|
||||
.position-management[data-v-1684a375]{max-width:600px;margin:auto;padding:20px;border:1px solid #ccc;border-radius:5px}form[data-v-1684a375]{display:flex;flex-direction:column;margin-bottom:20px}label[data-v-1684a375]{margin-top:10px}input[data-v-1684a375]{margin-top:5px;margin-bottom:10px;padding:8px}button[data-v-1684a375]{margin-top:10px;padding:10px}table[data-v-1684a375]{width:100%;border-collapse:collapse;margin-top:20px}td[data-v-1684a375],th[data-v-1684a375]{border:1px solid #ccc;padding:10px;text-align:left}th[data-v-1684a375]{background-color:#f4f4f4}
|
||||
1
public/css/446.9504c97b.css
Normal file
1
public/css/446.9504c97b.css
Normal file
@@ -0,0 +1 @@
|
||||
.upload-files[data-v-f2694614]{width:100%;margin:auto}.upload-files div[data-v-f2694614]{margin-bottom:10px}.file-list[data-v-f2694614]{list-style-type:none;padding:0;margin-top:20px}.file-list li[data-v-f2694614]{border-bottom:1px solid #ddd;padding:10px 0}.file-info[data-v-f2694614]{display:flex;justify-content:space-between;cursor:pointer}.file-title[data-v-f2694614]{font-weight:700}.file-name[data-v-f2694614]{color:#555}.file-date[data-v-f2694614]{color:#888}
|
||||
1
public/css/448.be11324e.css
Normal file
1
public/css/448.be11324e.css
Normal file
@@ -0,0 +1 @@
|
||||
div[data-v-334e7b82]{padding:20px}
|
||||
1
public/css/468.43cc4f81.css
Normal file
1
public/css/468.43cc4f81.css
Normal file
@@ -0,0 +1 @@
|
||||
.user-administration[data-v-a495c756]{padding:20px}.user-administration h1[data-v-a495c756],.user-administration h2[data-v-a495c756]{margin-bottom:20px}.user-administration form[data-v-a495c756]{display:flex;flex-direction:column;margin-bottom:20px}.user-administration label[data-v-a495c756]{margin-top:10px}.user-administration input[type=email][data-v-a495c756],.user-administration input[type=password][data-v-a495c756],.user-administration input[type=text][data-v-a495c756]{padding:5px;font-size:16px}.user-administration ul[data-v-a495c756]{list-style-type:none;padding:0}.user-administration li[data-v-a495c756]{padding:10px;border-bottom:1px solid #ddd;cursor:pointer}.user-administration li[data-v-a495c756]:hover{background-color:#f0f0f0}
|
||||
1
public/css/493.65e45809.css
Normal file
1
public/css/493.65e45809.css
Normal file
@@ -0,0 +1 @@
|
||||
.register[data-v-63b3c0a3]{max-width:400px;margin:auto}form[data-v-63b3c0a3]{display:flex;flex-direction:column}label[data-v-63b3c0a3]{margin-top:10px}button[data-v-63b3c0a3]{margin-top:20px}.dialog[data-v-63b3c0a3]{position:fixed;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.4)}.dialog-content[data-v-63b3c0a3]{background:#fff;padding:16px;border-radius:4px;max-width:420px;width:90%}
|
||||
1
public/css/636.7f8b0e61.css
Normal file
1
public/css/636.7f8b0e61.css
Normal file
@@ -0,0 +1 @@
|
||||
form div[data-v-403a0e0b]{margin-bottom:10px}.uploaded-image[data-v-403a0e0b]{display:inline-block;margin:0 0 .5em .5em;border:1px solid #e0e0e0;padding:10px}.uploaded-image input[data-v-403a0e0b],.uploaded-image textarea[data-v-403a0e0b]{width:100%;margin:5px 0}
|
||||
1
public/css/698.dbbad9eb.css
Normal file
1
public/css/698.dbbad9eb.css
Normal file
@@ -0,0 +1 @@
|
||||
.impressum[data-v-8b4b087a]{max-width:800px;margin:auto;padding:20px}h1[data-v-8b4b087a],h2[data-v-8b4b087a],h3[data-v-8b4b087a],h4[data-v-8b4b087a]{margin-top:20px;color:#333}p[data-v-8b4b087a]{line-height:1.6}a[data-v-8b4b087a]{color:#007bff;text-decoration:none}a[data-v-8b4b087a]:hover{text-decoration:underline}
|
||||
1
public/css/701.e7f92719.css
Normal file
1
public/css/701.e7f92719.css
Normal file
File diff suppressed because one or more lines are too long
1
public/css/702.48bbd10b.css
Normal file
1
public/css/702.48bbd10b.css
Normal file
@@ -0,0 +1 @@
|
||||
.dialog-overlay[data-v-ce9d9498]{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:1000}.dialog[data-v-ce9d9498]{background:#fff;padding:30px;border-radius:8px;max-width:400px;width:90%;text-align:center;box-shadow:0 4px 6px rgba(0,0,0,.1)}.dialog h2[data-v-ce9d9498]{margin-top:0;margin-bottom:15px;color:#333;font-size:20px}.dialog p[data-v-ce9d9498]{margin:15px 0;color:#666;line-height:1.5}.dialog button[data-v-ce9d9498]{margin-top:20px;padding:10px 20px;background-color:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:16px}.dialog button[data-v-ce9d9498]:hover{background-color:#0056b3}.login[data-v-40a158c0]{max-width:400px;margin:auto}form[data-v-40a158c0]{display:flex;flex-direction:column}label[data-v-40a158c0]{margin-top:10px}button[data-v-40a158c0]{margin-top:20px}
|
||||
1
public/css/703.5760daa0.css
Normal file
1
public/css/703.5760daa0.css
Normal file
@@ -0,0 +1 @@
|
||||
.menu-management[data-v-0e6a0522]{width:100%;margin:auto}.button-container[data-v-0e6a0522]{display:inline-flex;gap:10px;margin-bottom:20px}.tree-view[data-v-0e6a0522]{margin-top:20px}.tree-view ul[data-v-0e6a0522]{list-style-type:none;padding:0}.tree-view li[data-v-0e6a0522]{margin-bottom:5px;padding-left:20px}.tree-view .menu-item[data-v-0e6a0522]{display:inline-flex;width:100%;justify-content:space-between;align-items:center}.tree-view span[data-v-0e6a0522]{cursor:pointer;color:#000}.tree-view button[data-v-0e6a0522]{border:none;height:1.6em;padding:0 .5em;margin:1px;border-radius:5px}.tree-view span[data-v-0e6a0522]:hover{text-decoration:underline}.edit-form[data-v-0e6a0522]{margin-top:20px}.edit-form label[data-v-0e6a0522]{display:block;margin-bottom:5px;font-weight:700}.edit-form input[data-v-0e6a0522]:not([type=checkbox]){display:block;margin-bottom:10px}.edit-form .checkbox-container[data-v-0e6a0522]{display:flex;flex-direction:column;margin-right:10px}.edit-form .order-id[data-v-0e6a0522]{width:50px}.edit-form button[data-v-0e6a0522]{margin-top:5px}
|
||||
1
public/css/718.d23bc4ce.css
Normal file
1
public/css/718.d23bc4ce.css
Normal file
@@ -0,0 +1 @@
|
||||
.privacy-policy[data-v-6785ba18]{max-width:800px;margin:auto;padding:20px}h1[data-v-6785ba18],h2[data-v-6785ba18],h3[data-v-6785ba18],h4[data-v-6785ba18],h5[data-v-6785ba18]{margin-top:20px;color:#333}p[data-v-6785ba18]{line-height:1.6}ul[data-v-6785ba18]{margin:10px 0;padding-left:20px}ul li[data-v-6785ba18]{list-style-type:disc}a[data-v-6785ba18]{color:#007bff;text-decoration:none}a[data-v-6785ba18]:hover{text-decoration:underline}
|
||||
1
public/css/768.e2f8f0fa.css
Normal file
1
public/css/768.e2f8f0fa.css
Normal file
@@ -0,0 +1 @@
|
||||
.service-unavailable[data-v-fd9b1088]{padding:20px}.hint[data-v-fd9b1088]{color:#444;margin-top:1rem}
|
||||
1
public/css/785.a0abc21b.css
Normal file
1
public/css/785.a0abc21b.css
Normal file
@@ -0,0 +1 @@
|
||||
table.worships[data-v-dc6acbe6]{border-collapse:collapse;width:100%}table.worships td[data-v-dc6acbe6]{border:1px solid #000;text-align:center}h3[data-v-dc6acbe6]{margin:0}table.worships td div[data-v-dc6acbe6]{margin:5px}.highlight-time[data-v-dc6acbe6]{text-decoration:underline}.neighborhood-invitation[data-v-dc6acbe6]{font-weight:700;color:#0020e0}a[data-v-dc6acbe6]{color:#0020e0}.internal-information[data-v-dc6acbe6]{color:#e45;font-style:italic}.image[data-v-9b711a1e]{max-width:400px;max-height:300px}.event-name[data-v-a3df5f54]{font-weight:700}.event-table[data-v-a3df5f54]{border-collapse:collapse}.event-table td[data-v-a3df5f54]{border:1px solid #000}.homepage[data-v-a3df5f54]{border:1px solid #9400ff;padding:.5em;text-align:center}.description[data-v-a3df5f54]{padding:.5em 0}.event-image>img[data-v-a3df5f54]{max-width:12em;max-height:12em}.contact-box p[data-v-1f5987da]{margin:0}.bottom-margin[data-v-1f5987da]{margin-bottom:1rem}.expiry-date[data-v-1f5987da]{font-size:.9em;color:#666;font-style:italic}span[data-v-2bbf7aa9]{cursor:pointer;color:blue;text-decoration:underline}
|
||||
1
public/css/812.aa420e38.css
Normal file
1
public/css/812.aa420e38.css
Normal file
File diff suppressed because one or more lines are too long
1
public/css/814.5d40e08d.css
Normal file
1
public/css/814.5d40e08d.css
Normal file
@@ -0,0 +1 @@
|
||||
table.worships[data-v-dc6acbe6]{border-collapse:collapse;width:100%}table.worships td[data-v-dc6acbe6]{border:1px solid #000;text-align:center}h3[data-v-dc6acbe6]{margin:0}table.worships td div[data-v-dc6acbe6]{margin:5px}.highlight-time[data-v-dc6acbe6]{text-decoration:underline}.neighborhood-invitation[data-v-dc6acbe6]{font-weight:700;color:#0020e0}a[data-v-dc6acbe6]{color:#0020e0}.internal-information[data-v-dc6acbe6]{color:#e45;font-style:italic}.image[data-v-9b711a1e]{max-width:400px;max-height:300px}.event-name[data-v-a3df5f54]{font-weight:700}.event-table[data-v-a3df5f54]{border-collapse:collapse}.event-table td[data-v-a3df5f54]{border:1px solid #000}.homepage[data-v-a3df5f54]{border:1px solid #9400ff;padding:.5em;text-align:center}.description[data-v-a3df5f54]{padding:.5em 0}.event-image>img[data-v-a3df5f54]{max-width:12em;max-height:12em}.contact-box p[data-v-1f5987da]{margin:0}.bottom-margin[data-v-1f5987da]{margin-bottom:1rem}.expiry-date[data-v-1f5987da]{font-size:.9em;color:#666;font-style:italic}span[data-v-2bbf7aa9]{cursor:pointer;color:blue;text-decoration:underline}.previewinfo[data-v-9a71cbf6]{background-color:#000;color:#d00000;position:absolute;top:93px;left:0;padding:2px 10px;font-weight:700}
|
||||
1
public/css/957.56e284e6.css
Normal file
1
public/css/957.56e284e6.css
Normal file
@@ -0,0 +1 @@
|
||||
.right-column h2[data-v-d1b58e08]{text-align:center;color:#000}.right-column img[data-v-d1b58e08]{display:block;margin:0 auto;max-width:100%;height:auto}
|
||||
1
public/css/app.3e68accd.css
Normal file
1
public/css/app.3e68accd.css
Normal file
@@ -0,0 +1 @@
|
||||
.navbar[data-v-47f1407d]{background-color:#9400ff;overflow:visible;min-height:31px;display:inline-flex;flex-direction:column;width:auto;margin:.1em .75em 9px .75em;box-shadow:0 0 2px 5px #9400ff}.menu-toggle[data-v-47f1407d]{background-color:#9400ff;color:#fff;border:none;padding:14px 20px;text-align:center;text-decoration:none;display:none;font-weight:700}.navbar ul[data-v-47f1407d]{list-style-type:none;margin:0;padding:0;display:flex}.navbar li[data-v-47f1407d]{position:relative}.navbar a[data-v-47f1407d],.navbar li>span[data-v-47f1407d]{display:block;color:#fff;text-align:center;padding:6px 20px;text-decoration:none;font-weight:700}.navbar a[data-v-47f1407d]:hover{background-color:#7a00d1}.menu-icon[data-v-47f1407d]{width:20px;height:20px;margin-right:5px}.dropdown-content[data-v-47f1407d]{position:absolute;background-color:#9400ff;min-width:200px;z-index:1;top:100%;left:0;opacity:0;visibility:hidden;transition:opacity .2s ease-in-out,visibility .2s ease-in-out;box-shadow:2px 2px 4px #666}.dropdown-content a[data-v-47f1407d]{color:#fff;padding:12px 16px;text-decoration:none;display:block;text-align:left}.dropdown-content a[data-v-47f1407d]:hover{background-color:#7a00d1}.navbar li:hover .dropdown-content[data-v-47f1407d]{opacity:1;visibility:visible}.fade-enter-active[data-v-47f1407d],.fade-leave-active[data-v-47f1407d]{transition:opacity .2s ease-in-out,visibility .2s ease-in-out}.fade-enter[data-v-47f1407d],.fade-leave-to[data-v-47f1407d]{opacity:0;visibility:hidden}@media (max-width:768px){.navbar ul[data-v-47f1407d],.navbar[data-v-47f1407d]{flex-direction:column}.navbar li[data-v-47f1407d]{width:100%}.navbar a[data-v-47f1407d],.navbar li>span[data-v-47f1407d]{text-align:left;padding:14px 20px}.menu-toggle[data-v-47f1407d]{display:block}.dropdown-content[data-v-47f1407d]{position:static;box-shadow:none;opacity:1;visibility:visible;display:none;padding-left:1em}.navbar li:hover .dropdown-content[data-v-47f1407d]{display:block}}.pointer[data-v-47f1407d]{cursor:pointer}.facettenkreuz[data-v-47f1407d]{max-width:30px;max-height:30px;position:fixed}.ekhnlogo[data-v-47f1407d]{width:32px}header[data-v-4e068f05]{display:flex;flex-direction:column;width:100%;background-color:#fff}.header-title[data-v-4e068f05]{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.3em .5em}header h1[data-v-4e068f05]{margin:0;flex:1;text-align:center;text-shadow:2px 2px 1px #e0bfff;padding-bottom:4px}.reload-icon[data-v-4e068f05]{font-size:16px;cursor:pointer;margin-left:10px;background-color:#e0bfff;color:#fff;padding:5px;border-radius:50%}.reload-icon[data-v-4e068f05]:hover{color:#7a00d1}.footer[data-v-57063e3c]{background-color:#0b1735;bottom:0;left:0;width:100%;padding:7px;justify-content:space-between}.footer[data-v-57063e3c],.left-links[data-v-57063e3c],.right-links[data-v-57063e3c]{display:flex;align-items:center}.footer a[data-v-57063e3c]{color:#fff;padding-right:20px;text-decoration:none}.footer a.login-link[data-v-57063e3c]{color:#444}.footer a.logout-link[data-v-57063e3c]{cursor:pointer}body,html{height:100%;margin:0;padding:0;background-color:#fff;font-family:Arial,sans-serif;width:100%;overflow-x:hidden}#app{display:flex;flex-direction:column;height:100%}.content-section{flex:1;display:flex;color:#000;overflow-y:hidden}.left-column{flex:1;min-width:1000px;margin:.5em 0 .5em .5em;padding-right:.5em;background-color:#fff;overflow-y:auto}.right-column{flex:1;background-color:#d9e2f3;overflow-y:auto;margin:0 7px 7px 0}.right-column h2{text-align:center;color:#000}.right-column img{display:block;margin:0 auto;max-width:100%;height:auto}.right-column-overlay{max-height:150px;overflow-y:hidden;margin-top:10px;background-color:#d9e2f3;display:flex;justify-content:center;align-items:center}.right-column-overlay img{max-height:100%;max-width:100%;-o-object-fit:contain;object-fit:contain}@media (max-width:1200px){.content-section{flex-direction:column}.left-column{padding:10px}.right-column{display:none}.right-column-overlay{display:flex;max-height:150px;background-color:#fff}.right-column-overlay img{max-height:150px;max-width:100%;-o-object-fit:contain;object-fit:contain}}@media (max-width:767px){.content-section{flex-direction:column}.left-column,.right-column{padding:10px}.right-column{display:none}.right-column-overlay{display:flex}}.htmleditor{background-color:#fff;width:calc(100% - 26px);height:31em;border:1px solid #000;margin:7px;padding:5px;overflow:auto}.htmleditor table{border:1px solid #e0e0e0;border-collapse:collapse}.htmleditor td,.htmleditor th{border:1px solid #e0e0e0}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.1 MiB |
@@ -1 +1 @@
|
||||
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>miriamgemeinde</title><script defer="defer" src="/js/chunk-vendors.a58901d9.js"></script><script defer="defer" src="/js/app.2b3ac443.js"></script><link href="/css/app.c2c4030a.css" rel="stylesheet"><script defer="defer" src="/js/chunk-vendors.a58901d9.js"></script><script defer="defer" src="/js/app.62331f73.js"></script><link href="/css/app.c2c4030a.css" rel="stylesheet"><script defer="defer" src="/js/chunk-vendors.a58901d9.js"></script><script defer="defer" src="/js/app.f7f58406.js"></script><link href="/css/app.c2c4030a.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but miriamgemeinde doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
||||
<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>miriamgemeinde</title><script defer="defer" src="/js/chunk-vendors.a58901d9.js"></script><script defer="defer" src="/js/app.2b3ac443.js"></script><link href="/css/app.c2c4030a.css" rel="stylesheet"><script defer="defer" src="/js/chunk-vendors.a58901d9.js"></script><script defer="defer" src="/js/app.62331f73.js"></script><link href="/css/app.c2c4030a.css" rel="stylesheet"><script defer="defer" src="/js/chunk-vendors.a58901d9.js"></script><script defer="defer" src="/js/app.f7f58406.js"></script><link href="/css/app.c2c4030a.css" rel="stylesheet"><script defer="defer" src="/js/chunk-vendors.b7e76d39.js"></script><script defer="defer" src="/js/app.c50b5429.js"></script><link href="/css/app.3e68accd.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but miriamgemeinde doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
|
||||
2
public/js/119.04d5ce1d.js
Normal file
2
public/js/119.04d5ce1d.js
Normal file
File diff suppressed because one or more lines are too long
1
public/js/119.04d5ce1d.js.map
Normal file
1
public/js/119.04d5ce1d.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/187.80c77f03.js
Normal file
2
public/js/187.80c77f03.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[187],{8187:function(e,t,n){n.r(t),n.d(t,{default:function(){return k}});var l=n(641),a=n(3751),i=n(33);const c={class:"event-places-management"},d=["onClick"],o=["onClick"];function r(e,t,n,r,s,u){return(0,l.uX)(),(0,l.CE)("div",c,[t[16]||(t[16]=(0,l.Lk)("h2",null,"Veranstaltungsorte verwalten",-1)),(0,l.Lk)("form",{onSubmit:t[7]||(t[7]=(0,a.D$)((...e)=>u.addEventPlace&&u.addEventPlace(...e),["prevent"]))},[t[8]||(t[8]=(0,l.Lk)("label",{for:"name"},"Name:",-1)),(0,l.bo)((0,l.Lk)("input",{type:"text",id:"name","onUpdate:modelValue":t[0]||(t[0]=e=>s.newEventPlace.name=e),placeholder:"Name",required:""},null,512),[[a.Jo,s.newEventPlace.name]]),t[9]||(t[9]=(0,l.Lk)("label",{for:"street"},"Straße:",-1)),(0,l.bo)((0,l.Lk)("input",{type:"text",id:"street","onUpdate:modelValue":t[1]||(t[1]=e=>s.newEventPlace.street=e),placeholder:"Straße",required:""},null,512),[[a.Jo,s.newEventPlace.street]]),t[10]||(t[10]=(0,l.Lk)("label",{for:"zipcode"},"PLZ:",-1)),(0,l.bo)((0,l.Lk)("input",{type:"text",id:"zipcode","onUpdate:modelValue":t[2]||(t[2]=e=>s.newEventPlace.zipcode=e),placeholder:"PLZ",required:""},null,512),[[a.Jo,s.newEventPlace.zipcode]]),t[11]||(t[11]=(0,l.Lk)("label",{for:"city"},"Stadt:",-1)),(0,l.bo)((0,l.Lk)("input",{type:"text",id:"city","onUpdate:modelValue":t[3]||(t[3]=e=>s.newEventPlace.city=e),placeholder:"Stadt",required:""},null,512),[[a.Jo,s.newEventPlace.city]]),t[12]||(t[12]=(0,l.Lk)("label",{for:"city"},"Webseite:",-1)),(0,l.bo)((0,l.Lk)("input",{type:"text",id:"website","onUpdate:modelValue":t[4]||(t[4]=e=>s.newEventPlace.website=e),placeholder:"Webseite",required:""},null,512),[[a.Jo,s.newEventPlace.website]]),t[13]||(t[13]=(0,l.Lk)("label",{for:"backgroundColor"},"Hintergrundfarbe:",-1)),(0,l.bo)((0,l.Lk)("input",{type:"color",id:"backgroundColor","onUpdate:modelValue":t[5]||(t[5]=e=>s.newEventPlace.backgroundColor=e)},null,512),[[a.Jo,s.newEventPlace.backgroundColor]]),t[14]||(t[14]=(0,l.Lk)("button",{type:"submit"},"Speichern",-1)),s.editMode?((0,l.uX)(),(0,l.CE)("button",{key:0,type:"button",onClick:t[6]||(t[6]=(...e)=>u.resetForm&&u.resetForm(...e))},"Neuen Veranstaltungsort erstellen")):(0,l.Q3)("",!0)],32),(0,l.Lk)("table",null,[t[15]||(t[15]=(0,l.Lk)("thead",null,[(0,l.Lk)("tr",null,[(0,l.Lk)("th",null,"Name"),(0,l.Lk)("th",null,"Bearbeiten"),(0,l.Lk)("th",null,"Löschen")])],-1)),(0,l.Lk)("tbody",null,[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(s.eventPlaces,e=>((0,l.uX)(),(0,l.CE)("tr",{key:e.id},[(0,l.Lk)("td",null,(0,i.v_)(e.name),1),(0,l.Lk)("td",null,[(0,l.Lk)("button",{onClick:t=>u.editEventPlace(e)},"Bearbeiten",8,d)]),(0,l.Lk)("td",null,[(0,l.Lk)("button",{onClick:t=>u.deleteEventPlace(e.id)},"Löschen",8,o)])]))),128))])])])}n(4114);var s=n(4335),u={data(){return{eventPlaces:[],newEventPlace:{name:"",street:"",zipcode:"",city:"",backgroundColor:"#ffffff",website:""},editMode:!1,editId:null}},methods:{async fetchEventPlaces(){const e=await s.A.get("/event-places");this.eventPlaces=e.data},async addEventPlace(){if(this.editMode)await s.A.put(`/event-places/${this.editId}`,this.newEventPlace);else{const e=await s.A.post("/event-places",this.newEventPlace);this.eventPlaces.push(e.data)}this.resetForm(),await this.fetchEventPlaces()},async updateEventPlace(e){await s.A.put(`/event-places/${e.id}`,e),this.fetchEventPlaces()},async deleteEventPlace(e){await s.A.delete(`/event-places/${e}`),this.fetchEventPlaces()},editEventPlace(e){this.newEventPlace={...e},this.editMode=!0,this.editId=e.id},resetForm(){this.newEventPlace={name:"",street:"",zipcode:"",city:"",backgroundColor:"#ffffff",website:""},this.editMode=!1,this.editId=null}},created(){this.fetchEventPlaces()}},p=n(6262);const v=(0,p.A)(u,[["render",r],["__scopeId","data-v-4e6631f7"]]);var k=v}}]);
|
||||
//# sourceMappingURL=187.80c77f03.js.map
|
||||
1
public/js/187.80c77f03.js.map
Normal file
1
public/js/187.80c77f03.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/23.33b1e241.js
Normal file
2
public/js/23.33b1e241.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[23],{116:function(e,n,t){var r=t(6518),u=t(9565),i=t(2652),a=t(9306),l=t(8551),o=t(1767),d=t(9539),c=t(4549),s=c("find",TypeError);r({target:"Iterator",proto:!0,real:!0,forced:s},{find:function(e){l(this);try{a(e)}catch(r){d(this,"throw",r)}if(s)return u(s,this,e);var n=o(this),t=0;return i(n,function(n,r){if(e(n,t++))return r(n)},{IS_RECORD:!0,INTERRUPTED:!0}).result}})},2023:function(e,n,t){t.r(n),t.d(n,{default:function(){return s}});var r=t(641),u=t(33);function i(e,n,t,i,a,l){const o=(0,r.g2)("router-link");return(0,r.uX)(),(0,r.CE)("div",null,[n[0]||(n[0]=(0,r.Lk)("h1",null,"Seitenpflege",-1)),n[1]||(n[1]=(0,r.Lk)("p",null,"Herzlich Willkommen. Auf diesen Seiten können Sie die Inhalte der Webseiten pflegen.",-1)),(0,r.Lk)("ul",null,[((0,r.uX)(!0),(0,r.CE)(r.FK,null,(0,r.pI)(i.adminSubmenu,e=>((0,r.uX)(),(0,r.CE)("li",{key:e.id},[(0,r.bF)(o,{to:e.link},{default:(0,r.k6)(()=>[(0,r.eW)((0,u.v_)(e.name),1)]),_:2},1032,["to"])]))),128))])])}t(8111),t(116);var a=t(6296),l=t(953),o={name:"DefaultComponent",setup(){const e=(0,l.KR)([]),n=async()=>{try{const n=await a.A.get("/menu-data"),t=n.data,r=t.find(e=>"Admin"===e.name);r&&(e.value=r.submenu)}catch(n){console.error("Fehler beim Abrufen der Menü-Daten:",n)}};return(0,r.sV)(()=>{n()}),{adminSubmenu:e}}},d=t(6262);const c=(0,d.A)(o,[["render",i],["__scopeId","data-v-68b32234"]]);var s=c}}]);
|
||||
//# sourceMappingURL=23.33b1e241.js.map
|
||||
1
public/js/23.33b1e241.js.map
Normal file
1
public/js/23.33b1e241.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/246.96a28aca.js
Normal file
2
public/js/246.96a28aca.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[246],{6246:function(e,t,n){n.r(t),n.d(t,{default:function(){return h}});var i=n(641),a=n(3751),s=n(33);const p={class:"event-types-management"},r={type:"submit"},d=["onClick"],o=["onClick"];function y(e,t,n,y,l,v){return(0,i.uX)(),(0,i.CE)("div",p,[t[4]||(t[4]=(0,i.Lk)("h2",null,"Event-Typen Verwaltung",-1)),(0,i.Lk)("form",{onSubmit:t[2]||(t[2]=(0,a.D$)((...e)=>v.saveEventType&&v.saveEventType(...e),["prevent"]))},[t[3]||(t[3]=(0,i.Lk)("label",{for:"newEventType"},"Event-Typ:",-1)),(0,i.bo)((0,i.Lk)("input",{type:"text",id:"newEventType","onUpdate:modelValue":t[0]||(t[0]=e=>l.eventTypeData.caption=e),placeholder:"Event-Typ",required:""},null,512),[[a.Jo,l.eventTypeData.caption]]),(0,i.Lk)("button",r,(0,s.v_)(l.editMode?"Aktualisieren":"Hinzufügen"),1),l.editMode?((0,i.uX)(),(0,i.CE)("button",{key:0,type:"button",onClick:t[1]||(t[1]=(...e)=>v.resetForm&&v.resetForm(...e))},"Abbrechen")):(0,i.Q3)("",!0)],32),(0,i.Lk)("table",null,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(l.eventTypes,e=>((0,i.uX)(),(0,i.CE)("tr",{key:e.id},[(0,i.Lk)("td",null,(0,s.v_)(e.caption),1),(0,i.Lk)("td",null,[(0,i.Lk)("button",{onClick:t=>v.editEventType(e)},"Bearbeiten",8,d)]),(0,i.Lk)("td",null,[(0,i.Lk)("button",{onClick:t=>v.deleteEventType(e.id)},"Löschen",8,o)])]))),128))])])}n(4114);var l=n(4335),v={data(){return{eventTypes:[],eventTypeData:{caption:""},editMode:!1,editId:null}},methods:{async fetchEventTypes(){try{const e=await l.A.get("/event-types");this.eventTypes=e.data}catch(e){console.error("Fehler beim Abrufen der Event-Typen:",e)}},async saveEventType(){try{if(this.editMode)await l.A.put(`/event-types/${this.editId}`,this.eventTypeData);else{const e=await l.A.post("/event-types",this.eventTypeData);this.eventTypes.push(e.data)}this.resetForm(),await this.fetchEventTypes()}catch(e){console.error("Fehler beim Speichern des Event-Typs:",e)}},editEventType(e){this.eventTypeData={...e},this.editMode=!0,this.editId=e.id},async deleteEventType(e){try{await l.A.delete(`/event-types/${e}`),await this.fetchEventTypes()}catch(t){console.error("Fehler beim Löschen des Event-Typs:",t)}},resetForm(){this.eventTypeData={caption:""},this.editMode=!1,this.editId=null}},async created(){await this.fetchEventTypes()}},c=n(6262);const u=(0,c.A)(v,[["render",y],["__scopeId","data-v-60fe58a4"]]);var h=u}}]);
|
||||
//# sourceMappingURL=246.96a28aca.js.map
|
||||
1
public/js/246.96a28aca.js.map
Normal file
1
public/js/246.96a28aca.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/324.2e62d15a.js
Normal file
2
public/js/324.2e62d15a.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[324],{1324:function(e,i,s){s.r(i),s.d(i,{default:function(){return k}});var a=s(641),t=s(3751),o=s(33);const l={class:"forgot-password"},n={key:0,class:"dialog"},r={class:"dialog-content"};function d(e,i,s,d,g,u){const m=(0,a.g2)("router-link");return(0,a.uX)(),(0,a.CE)("div",l,[i[7]||(i[7]=(0,a.Lk)("h2",null,"Passwort vergessen",-1)),(0,a.Lk)("form",{onSubmit:i[1]||(i[1]=(0,t.D$)((...e)=>u.submitForgotPassword&&u.submitForgotPassword(...e),["prevent"]))},[i[3]||(i[3]=(0,a.Lk)("label",{for:"email"},"Email-Adresse:",-1)),(0,a.bo)((0,a.Lk)("input",{type:"email",id:"email","onUpdate:modelValue":i[0]||(i[0]=e=>g.email=e),required:""},null,512),[[t.Jo,g.email]]),i[4]||(i[4]=(0,a.Lk)("button",{type:"submit"},"Link zum Zurücksetzen senden",-1))],32),(0,a.Lk)("p",null,[(0,a.bF)(m,{to:"/login"},{default:(0,a.k6)(()=>[...i[5]||(i[5]=[(0,a.eW)("Login",-1)])]),_:1})]),(0,a.Lk)("p",null,[(0,a.bF)(m,{to:"/register"},{default:(0,a.k6)(()=>[...i[6]||(i[6]=[(0,a.eW)("Registrieren",-1)])]),_:1})]),g.dialogVisible?((0,a.uX)(),(0,a.CE)("div",n,[(0,a.Lk)("div",r,[(0,a.Lk)("h3",null,(0,o.v_)(g.dialogTitle),1),(0,a.Lk)("p",null,(0,o.v_)(g.dialogMessage),1),(0,a.Lk)("button",{type:"button",onClick:i[2]||(i[2]=(...e)=>u.closeDialog&&u.closeDialog(...e))},"Schließen")])])):(0,a.Q3)("",!0)])}var g=s(6296),u={name:"ForgotPassword",data(){return{email:"",dialogTitle:"",dialogMessage:"",dialogVisible:!1}},methods:{async submitForgotPassword(){try{const e=await g.A.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){const i=e?.response?.data?.message||e?.message||"Ein unbekannter Fehler ist aufgetreten";this.showDialog("Fehler",i)}},showDialog(e,i){this.dialogTitle=e,this.dialogMessage=i,this.dialogVisible=!0},closeDialog(){this.dialogVisible=!1}}},m=s(6262);const c=(0,m.A)(u,[["render",d],["__scopeId","data-v-c694cf4e"]]);var k=c}}]);
|
||||
//# sourceMappingURL=324.2e62d15a.js.map
|
||||
1
public/js/324.2e62d15a.js.map
Normal file
1
public/js/324.2e62d15a.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/355.48d81d5a.js
Normal file
2
public/js/355.48d81d5a.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[355],{5355:function(e,l,t){t.r(l),t.d(l,{default:function(){return c}});var i=t(641),a=t(33);const o={key:0,class:"dialog-overlay"},n={class:"dialog"};function s(e,l,t,s,r,u){return t.modelValue?((0,i.uX)(),(0,i.CE)("div",o,[(0,i.Lk)("div",n,[(0,i.Lk)("h2",null,(0,a.v_)(t.title),1),(0,i.Lk)("p",null,(0,a.v_)(t.message),1),(0,i.Lk)("button",{onClick:l[0]||(l[0]=(...e)=>u.closeDialog&&u.closeDialog(...e))},"OK")])])):(0,i.Q3)("",!0)}var r={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")}}},u=t(6262);const d=(0,u.A)(r,[["render",s],["__scopeId","data-v-ce9d9498"]]);var c=d}}]);
|
||||
//# sourceMappingURL=355.48d81d5a.js.map
|
||||
1
public/js/355.48d81d5a.js.map
Normal file
1
public/js/355.48d81d5a.js.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"js/355.48d81d5a.js","mappings":"4MACyBA,MAAM,kB,GACtBA,MAAM,U,+BADFC,EAAAC,a,WAAXC,EAAAA,EAAAA,IAMM,MANNC,EAMM,EALJC,EAAAA,EAAAA,IAIM,MAJNC,EAIM,EAHJD,EAAAA,EAAAA,IAAoB,WAAAE,EAAAA,EAAAA,IAAbN,EAAAO,OAAK,IACZH,EAAAA,EAAAA,IAAoB,UAAAE,EAAAA,EAAAA,IAAdN,EAAAQ,SAAO,IACbJ,EAAAA,EAAAA,IAAwC,UAA/BK,QAAKC,EAAA,KAAAA,EAAA,OAAAC,IAAEC,EAAAC,aAAAD,EAAAC,eAAAF,KAAa,Y,eAMnC,OACEG,KAAM,kBACNC,MAAO,CACLR,MAAO,CACLS,KAAMC,OACNC,UAAU,GAEZV,QAAS,CACPQ,KAAMC,OACNC,UAAU,GAEZjB,WAAY,CACVe,KAAMG,QACNC,SAAS,IAGbC,QAAS,CACPR,WAAAA,GACES,KAAKC,MAAM,qBAAqB,GAChCD,KAAKC,MAAM,QACb,I,UCxBJ,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASC,GAAQ,CAAC,YAAY,qBAEzF,O","sources":["webpack://miriamgemeinde/./src/common/components/DialogComponent.vue","webpack://miriamgemeinde/./src/common/components/DialogComponent.vue?92fc"],"sourcesContent":["<template>\n <div v-if=\"modelValue\" class=\"dialog-overlay\">\n <div class=\"dialog\">\n <h2>{{ title }}</h2>\n <p>{{ message }}</p>\n <button @click=\"closeDialog\">OK</button>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n name: 'DialogComponent',\n props: {\n title: {\n type: String,\n required: true\n },\n message: {\n type: String,\n required: true\n },\n modelValue: {\n type: Boolean,\n default: false\n }\n },\n methods: {\n closeDialog() {\n this.$emit('update:modelValue', false);\n this.$emit('close');\n }\n }\n};\n</script>\n\n<style scoped>\n.dialog-overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n}\n\n.dialog {\n background: white;\n padding: 30px;\n border-radius: 8px;\n max-width: 400px;\n width: 90%;\n text-align: center;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n}\n\n.dialog h2 {\n margin-top: 0;\n margin-bottom: 15px;\n color: #333;\n font-size: 20px;\n}\n\n.dialog p {\n margin: 15px 0;\n color: #666;\n line-height: 1.5;\n}\n\n.dialog button {\n margin-top: 20px;\n padding: 10px 20px;\n background-color: #007BFF;\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 16px;\n}\n\n.dialog button:hover {\n background-color: #0056b3;\n}\n</style>","import { render } from \"./DialogComponent.vue?vue&type=template&id=ce9d9498&scoped=true\"\nimport script from \"./DialogComponent.vue?vue&type=script&lang=js\"\nexport * from \"./DialogComponent.vue?vue&type=script&lang=js\"\n\nimport \"./DialogComponent.vue?vue&type=style&index=0&id=ce9d9498&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-ce9d9498\"]])\n\nexport default __exports__"],"names":["class","$props","modelValue","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_toDisplayString","title","message","onClick","_cache","args","$options","closeDialog","name","props","type","String","required","Boolean","default","methods","this","$emit","__exports__","render"],"ignoreList":[],"sourceRoot":""}
|
||||
2
public/js/404.8b5b638f.js
Normal file
2
public/js/404.8b5b638f.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[404],{3023:function(t,e,i){i.r(e),i.d(e,{default:function(){return p}});var n=i(641),o=i(3751),a=i(33);const s={class:"institution-management"},u=["onClick"],l=["onClick"];function r(t,e,i,r,d,c){return(0,n.uX)(),(0,n.CE)("div",s,[e[18]||(e[18]=(0,n.Lk)("h2",null,"Institutionenverwaltung",-1)),(0,n.Lk)("form",{onSubmit:e[8]||(e[8]=(0,o.D$)((...t)=>c.saveInstitution&&c.saveInstitution(...t),["prevent"]))},[e[9]||(e[9]=(0,n.Lk)("label",{for:"name"},"Name:",-1)),(0,n.bo)((0,n.Lk)("input",{type:"text",id:"name","onUpdate:modelValue":e[0]||(e[0]=t=>d.institutionData.name=t),required:""},null,512),[[o.Jo,d.institutionData.name]]),e[10]||(e[10]=(0,n.Lk)("label",{for:"street"},"Straße:",-1)),(0,n.bo)((0,n.Lk)("input",{type:"text",id:"street","onUpdate:modelValue":e[1]||(e[1]=t=>d.institutionData.street=t)},null,512),[[o.Jo,d.institutionData.street]]),e[11]||(e[11]=(0,n.Lk)("label",{for:"zipcode"},"PLZ:",-1)),(0,n.bo)((0,n.Lk)("input",{type:"text",id:"zipcode","onUpdate:modelValue":e[2]||(e[2]=t=>d.institutionData.zipcode=t)},null,512),[[o.Jo,d.institutionData.zipcode]]),e[12]||(e[12]=(0,n.Lk)("label",{for:"city"},"Stadt:",-1)),(0,n.bo)((0,n.Lk)("input",{type:"text",id:"city","onUpdate:modelValue":e[3]||(e[3]=t=>d.institutionData.city=t)},null,512),[[o.Jo,d.institutionData.city]]),e[13]||(e[13]=(0,n.Lk)("label",{for:"phone"},"Telefon:",-1)),(0,n.bo)((0,n.Lk)("input",{type:"text",id:"phone","onUpdate:modelValue":e[4]||(e[4]=t=>d.institutionData.phone=t)},null,512),[[o.Jo,d.institutionData.phone]]),e[14]||(e[14]=(0,n.Lk)("label",{for:"fax"},"Fax:",-1)),(0,n.bo)((0,n.Lk)("input",{type:"text",id:"fax","onUpdate:modelValue":e[5]||(e[5]=t=>d.institutionData.fax=t)},null,512),[[o.Jo,d.institutionData.fax]]),e[15]||(e[15]=(0,n.Lk)("label",{for:"email"},"Email:",-1)),(0,n.bo)((0,n.Lk)("input",{type:"email",id:"email","onUpdate:modelValue":e[6]||(e[6]=t=>d.institutionData.email=t)},null,512),[[o.Jo,d.institutionData.email]]),e[16]||(e[16]=(0,n.Lk)("button",{type:"submit"},"Speichern",-1)),d.editMode?((0,n.uX)(),(0,n.CE)("button",{key:0,type:"button",onClick:e[7]||(e[7]=(...t)=>c.resetForm&&c.resetForm(...t))},"Neue Institution erstellen")):(0,n.Q3)("",!0)],32),(0,n.Lk)("table",null,[e[17]||(e[17]=(0,n.Lk)("thead",null,[(0,n.Lk)("tr",null,[(0,n.Lk)("th",null,"Name"),(0,n.Lk)("th",null,"Bearbeiten"),(0,n.Lk)("th",null,"Löschen")])],-1)),(0,n.Lk)("tbody",null,[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(d.institutions,t=>((0,n.uX)(),(0,n.CE)("tr",{key:t.id},[(0,n.Lk)("td",null,(0,a.v_)(t.name),1),(0,n.Lk)("td",null,[(0,n.Lk)("button",{onClick:e=>c.editInstitution(t)},"Bearbeiten",8,u)]),(0,n.Lk)("td",null,[(0,n.Lk)("button",{onClick:e=>c.deleteInstitution(t.id)},"Löschen",8,l)])]))),128))])])])}i(4114);var d=i(4335),c={name:"InstitutionManagement",data(){return{institutions:[],contactPersons:[],institutionData:{name:"",street:"",zipcode:"",city:"",phone:"",fax:"",email:""},selectedInstitution:null,showForm:!1,editMode:!1,editId:null}},created(){this.fetchInstitutions(),this.fetchContactPersons()},methods:{async fetchInstitutions(){try{const t=await d.A.get("/institutions");this.institutions=t.data}catch(t){console.error("Fehler beim Abrufen der Institutionen:",t)}},async fetchContactPersons(){try{const t=await d.A.get("/contact-persons");this.contactPersons=t.data}catch(t){console.error("Fehler beim Abrufen der Kontaktpersonen:",t)}},async saveInstitution(){try{if(this.editMode)await d.A.put(`/institutions/${this.editId}`,this.institutionData);else{const t=await d.A.post("/institutions",this.institutionData);this.institutions.push(t.data)}this.resetForm(),await this.fetchInstitutions()}catch(t){console.error("Fehler beim Speichern der Institution:",t)}},editInstitution(t){this.institutionData={...t},this.editMode=!0,this.editId=t.id,this.showForm=!0},async deleteInstitution(t){try{await d.A.delete(`/institutions/${t}`),this.fetchInstitutions()}catch(e){console.error("Fehler beim Löschen der Institution:",e)}},resetForm(){this.institutionData={name:"",street:"",zipcode:"",city:"",phone:"",fax:"",email:""},this.editMode=!1,this.editId=null,this.showForm=!1},showCreateForm(){this.resetForm(),this.showForm=!0}}},h=i(6262);const m=(0,h.A)(c,[["render",r],["__scopeId","data-v-ff992c44"]]);var p=m}}]);
|
||||
//# sourceMappingURL=404.8b5b638f.js.map
|
||||
1
public/js/404.8b5b638f.js.map
Normal file
1
public/js/404.8b5b638f.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/414.d6becd70.js
Normal file
2
public/js/414.d6becd70.js
Normal file
File diff suppressed because one or more lines are too long
1
public/js/414.d6becd70.js.map
Normal file
1
public/js/414.d6becd70.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/423.1e86915f.js
Normal file
2
public/js/423.1e86915f.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[423],{1423:function(e,s,t){t.r(s),t.d(s,{default:function(){return m}});var o=t(641),i=t(3751),a=t(33);const n={class:"reset-password"},r=["disabled"],l={key:0,class:"dialog"},d={class:"dialog-content"};function u(e,s,t,u,h,c){const g=(0,o.g2)("router-link");return(0,o.uX)(),(0,o.CE)("div",n,[s[7]||(s[7]=(0,o.Lk)("h2",null,"Neues Passwort setzen",-1)),(0,o.Lk)("form",{onSubmit:s[2]||(s[2]=(0,i.D$)((...e)=>c.submitResetPassword&&c.submitResetPassword(...e),["prevent"]))},[s[4]||(s[4]=(0,o.Lk)("label",{for:"password"},"Neues Passwort:",-1)),(0,o.bo)((0,o.Lk)("input",{type:"password",id:"password","onUpdate:modelValue":s[0]||(s[0]=e=>h.password=e),required:"",minlength:"6"},null,512),[[i.Jo,h.password]]),s[5]||(s[5]=(0,o.Lk)("label",{for:"confirmPassword"},"Passwort bestätigen:",-1)),(0,o.bo)((0,o.Lk)("input",{type:"password",id:"confirmPassword","onUpdate:modelValue":s[1]||(s[1]=e=>h.confirmPassword=e),required:"",minlength:"6"},null,512),[[i.Jo,h.confirmPassword]]),(0,o.Lk)("button",{type:"submit",disabled:!c.isFormValid},"Passwort zurücksetzen",8,r)],32),(0,o.Lk)("p",null,[(0,o.bF)(g,{to:"/login"},{default:(0,o.k6)(()=>[...s[6]||(s[6]=[(0,o.eW)("Zurück zum Login",-1)])]),_:1})]),h.dialogVisible?((0,o.uX)(),(0,o.CE)("div",l,[(0,o.Lk)("div",d,[(0,o.Lk)("h3",null,(0,a.v_)(h.dialogTitle),1),(0,o.Lk)("p",null,(0,a.v_)(h.dialogMessage),1),(0,o.Lk)("button",{type:"button",onClick:s[3]||(s[3]=(...e)=>c.closeDialog&&c.closeDialog(...e))},"Schließen")])])):(0,o.Q3)("",!0)])}t(4114),t(4603),t(7566),t(8721);var h=t(6296),c={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(){const e=new URLSearchParams(window.location.search);this.token=e.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)try{const e=await h.A.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){const s=e?.response?.data?.message||e?.message||"Ein unbekannter Fehler ist aufgetreten";this.showDialog("Fehler",s)}else this.showDialog("Fehler","Die Passwörter stimmen nicht überein.")},showDialog(e,s){this.dialogTitle=e,this.dialogMessage=s,this.dialogVisible=!0},closeDialog(){this.dialogVisible=!1}}},g=t(6262);const w=(0,g.A)(c,[["render",u],["__scopeId","data-v-e49a033c"]]);var m=w},2812:function(e){var s=TypeError;e.exports=function(e,t){if(e<t)throw new s("Not enough arguments");return e}},4603:function(e,s,t){var o=t(6840),i=t(9504),a=t(655),n=t(2812),r=URLSearchParams,l=r.prototype,d=i(l.append),u=i(l["delete"]),h=i(l.forEach),c=i([].push),g=new r("a=1&a=2&b=3");g["delete"]("a",1),g["delete"]("b",void 0),g+""!=="a=2"&&o(l,"delete",function(e){var s=arguments.length,t=s<2?void 0:arguments[1];if(s&&void 0===t)return u(this,e);var o=[];h(this,function(e,s){c(o,{key:s,value:e})}),n(s,1);var i,r=a(e),l=a(t),g=0,w=0,m=!1,p=o.length;while(g<p)i=o[g++],m||i.key===r?(m=!0,u(this,i.key)):w++;while(w<p)i=o[w++],i.key===r&&i.value===l||d(this,i.key,i.value)},{enumerable:!0,unsafe:!0})},7566:function(e,s,t){var o=t(6840),i=t(9504),a=t(655),n=t(2812),r=URLSearchParams,l=r.prototype,d=i(l.getAll),u=i(l.has),h=new r("a=1");!h.has("a",2)&&h.has("a",void 0)||o(l,"has",function(e){var s=arguments.length,t=s<2?void 0:arguments[1];if(s&&void 0===t)return u(this,e);var o=d(this,e);n(s,1);var i=a(t),r=0;while(r<o.length)if(o[r++]===i)return!0;return!1},{enumerable:!0,unsafe:!0})},8721:function(e,s,t){var o=t(3724),i=t(9504),a=t(2106),n=URLSearchParams.prototype,r=i(n.forEach);o&&!("size"in n)&&a(n,"size",{get:function(){var e=0;return r(this,function(){e++}),e},configurable:!0,enumerable:!0})}}]);
|
||||
//# sourceMappingURL=423.1e86915f.js.map
|
||||
1
public/js/423.1e86915f.js.map
Normal file
1
public/js/423.1e86915f.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/441.4fa6a813.js
Normal file
2
public/js/441.4fa6a813.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[441],{3441:function(t,i,e){e.r(i),e.d(i,{default:function(){return k}});var n=e(641),o=e(3751),s=e(33);const l={class:"position-management"},d=["onClick"],a=["onClick"];function u(t,i,e,u,c,h){return(0,n.uX)(),(0,n.CE)("div",l,[i[6]||(i[6]=(0,n.Lk)("h2",null,"Verwalten der Rollen",-1)),(0,n.Lk)("form",{onSubmit:i[2]||(i[2]=(0,o.D$)((...t)=>h.addPosition&&h.addPosition(...t),["prevent"]))},[i[3]||(i[3]=(0,n.Lk)("label",{for:"caption"},"Rollenbezeichnung:",-1)),(0,n.bo)((0,n.Lk)("input",{type:"text",id:"caption","onUpdate:modelValue":i[0]||(i[0]=t=>c.newPosition.caption=t),placeholder:"Rollenbezeichnung",required:""},null,512),[[o.Jo,c.newPosition.caption]]),i[4]||(i[4]=(0,n.Lk)("button",{type:"submit"},"Speichern",-1)),c.editMode?((0,n.uX)(),(0,n.CE)("button",{key:0,type:"button",onClick:i[1]||(i[1]=(...t)=>h.resetForm&&h.resetForm(...t))},"Neue Rolle erstellen")):(0,n.Q3)("",!0)],32),(0,n.Lk)("table",null,[i[5]||(i[5]=(0,n.Lk)("thead",null,[(0,n.Lk)("tr",null,[(0,n.Lk)("th",null,"Rollenbezeichnung"),(0,n.Lk)("th",null,"Bearbeiten"),(0,n.Lk)("th",null,"Löschen")])],-1)),(0,n.Lk)("tbody",null,[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(c.positions,t=>((0,n.uX)(),(0,n.CE)("tr",{key:t.id},[(0,n.Lk)("td",null,(0,s.v_)(t.caption),1),(0,n.Lk)("td",null,[(0,n.Lk)("button",{onClick:i=>h.editPosition(t)},"Bearbeiten",8,d)]),(0,n.Lk)("td",null,[(0,n.Lk)("button",{onClick:i=>h.deletePosition(t.id)},"Löschen",8,a)])]))),128))])])])}e(4114);var c=e(4335),h={data(){return{positions:[],newPosition:{caption:""},editMode:!1,editId:null}},methods:{async fetchPositions(){const t=await c.A.get("/positions");this.positions=t.data},async addPosition(){if(this.editMode)await c.A.put(`/positions/${this.editId}`,this.newPosition);else{const t=await c.A.post("/positions",this.newPosition);this.positions.push(t.data)}this.resetForm(),await this.fetchPositions()},async updatePosition(t){await c.A.put(`/positions/${t.id}`,t),this.fetchPositions()},async deletePosition(t){await c.A.delete(`/positions/${t}`),this.fetchPositions()},editPosition(t){this.newPosition={...t},this.editMode=!0,this.editId=t.id},resetForm(){this.newPosition={caption:""},this.editMode=!1,this.editId=null}},created(){this.fetchPositions()}},r=e(6262);const p=(0,r.A)(h,[["render",u],["__scopeId","data-v-1684a375"]]);var k=p}}]);
|
||||
//# sourceMappingURL=441.4fa6a813.js.map
|
||||
1
public/js/441.4fa6a813.js.map
Normal file
1
public/js/441.4fa6a813.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/446.730851ef.js
Normal file
2
public/js/446.730851ef.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[446],{446:function(e,a,l){l.r(a),l.d(a,{default:function(){return w}});var t=l(641),n=l(3751),i=l(33);const o={class:"upload-files"},r={class:"file-list"},u={class:"file-info"},d=["onClick"],s=["onClick"],c={class:"file-date"};function f(e,a,l,f,h,p){return(0,t.uX)(),(0,t.CE)("div",o,[a[5]||(a[5]=(0,t.Lk)("h2",null,"Dateien hochladen",-1)),(0,t.Lk)("div",null,[a[3]||(a[3]=(0,t.Lk)("label",{for:"file-upload"},"Datei auswählen:",-1)),(0,t.Lk)("input",{id:"file-upload",type:"file",onChange:a[0]||(a[0]=(...e)=>f.handleFileUpload&&f.handleFileUpload(...e))},null,32)]),(0,t.Lk)("div",null,[a[4]||(a[4]=(0,t.Lk)("label",{for:"file-title"},"Titel eingeben:",-1)),(0,t.bo)((0,t.Lk)("input",{id:"file-title",type:"text","onUpdate:modelValue":a[1]||(a[1]=e=>f.fileTitle=e)},null,512),[[n.Jo,f.fileTitle]])]),(0,t.Lk)("button",{onClick:a[2]||(a[2]=(...e)=>f.uploadFiles&&f.uploadFiles(...e))},"Hochladen"),(0,t.Lk)("ul",r,[((0,t.uX)(!0),(0,t.CE)(t.FK,null,(0,t.pI)(f.uploadedFiles,e=>((0,t.uX)(),(0,t.CE)("li",{key:e.id},[(0,t.Lk)("div",u,[(0,t.Lk)("span",{class:"file-title",onClick:a=>f.downloadFile(e)},(0,i.v_)(e.title),9,d),(0,t.Lk)("span",{class:"file-name",onClick:a=>f.downloadFile(e)},(0,i.v_)(e.originalName),9,s),(0,t.Lk)("span",c,(0,i.v_)(f.formatDate(e.createdAt)),1)])]))),128))])])}l(4114),l(4603),l(7566),l(8721);var h=l(953),p=l(6296),v={name:"UploadFilesComponent",setup(){const e=(0,h.KR)(null),a=(0,h.KR)(""),l=(0,h.KR)([]),n=a=>{e.value=a.target.files[0]},i=async()=>{if(!e.value||!a.value)return void alert("Bitte wählen Sie eine Datei aus und geben Sie einen Titel ein.");const t=new FormData;t.append("file",e.value),t.append("title",a.value);try{const n=await p.A.post("/files",t,{headers:{"Content-Type":"multipart/form-data"}}),i=n.data;l.value.push({id:i.id,title:i.title,originalName:i.originalName,createdAt:i.createdAt,hash:i.hash}),e.value=null,a.value=""}catch(n){console.error("Fehler beim Hochladen der Datei:",n)}},o=async e=>{const a=e.originalName.substring(e.originalName.lastIndexOf(".")),l=await p.A.get(`/files/download/${e.hash}`,{responseType:"blob"}),t=new Blob([l.data],{type:l.data.type}),n=document.createElement("a");n.href=window.URL.createObjectURL(t),n.download=`${e.title}${a}`,n.click(),window.URL.revokeObjectURL(n.href)},r=e=>{const a={year:"numeric",month:"long",day:"numeric"};return new Date(e).toLocaleDateString(void 0,a)},u=async()=>{try{const e=await p.A.get("/files");l.value=e.data}catch(e){console.error("Fehler beim Abrufen der Dateien:",e)}};return(0,t.sV)(u),{fileToUpload:e,fileTitle:a,uploadedFiles:l,handleFileUpload:n,uploadFiles:i,downloadFile:o,formatDate:r}}},m=l(6262);const k=(0,m.A)(v,[["render",f],["__scopeId","data-v-f2694614"]]);var w=k},2812:function(e){var a=TypeError;e.exports=function(e,l){if(e<l)throw new a("Not enough arguments");return e}},4603:function(e,a,l){var t=l(6840),n=l(9504),i=l(655),o=l(2812),r=URLSearchParams,u=r.prototype,d=n(u.append),s=n(u["delete"]),c=n(u.forEach),f=n([].push),h=new r("a=1&a=2&b=3");h["delete"]("a",1),h["delete"]("b",void 0),h+""!=="a=2"&&t(u,"delete",function(e){var a=arguments.length,l=a<2?void 0:arguments[1];if(a&&void 0===l)return s(this,e);var t=[];c(this,function(e,a){f(t,{key:a,value:e})}),o(a,1);var n,r=i(e),u=i(l),h=0,p=0,v=!1,m=t.length;while(h<m)n=t[h++],v||n.key===r?(v=!0,s(this,n.key)):p++;while(p<m)n=t[p++],n.key===r&&n.value===u||d(this,n.key,n.value)},{enumerable:!0,unsafe:!0})},7566:function(e,a,l){var t=l(6840),n=l(9504),i=l(655),o=l(2812),r=URLSearchParams,u=r.prototype,d=n(u.getAll),s=n(u.has),c=new r("a=1");!c.has("a",2)&&c.has("a",void 0)||t(u,"has",function(e){var a=arguments.length,l=a<2?void 0:arguments[1];if(a&&void 0===l)return s(this,e);var t=d(this,e);o(a,1);var n=i(l),r=0;while(r<t.length)if(t[r++]===n)return!0;return!1},{enumerable:!0,unsafe:!0})},8721:function(e,a,l){var t=l(3724),n=l(9504),i=l(2106),o=URLSearchParams.prototype,r=n(o.forEach);t&&!("size"in o)&&i(o,"size",{get:function(){var e=0;return r(this,function(){e++}),e},configurable:!0,enumerable:!0})}}]);
|
||||
//# sourceMappingURL=446.730851ef.js.map
|
||||
1
public/js/446.730851ef.js.map
Normal file
1
public/js/446.730851ef.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/448.10071411.js
Normal file
2
public/js/448.10071411.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[448],{7448:function(e,n,i){i.r(n),i.d(n,{default:function(){return d}});var t=i(641);function r(e,n,i,r,u,a){return(0,t.uX)(),(0,t.CE)("div",null,[...n[0]||(n[0]=[(0,t.Lk)("h1",null,"Seite existiert nicht",-1),(0,t.Lk)("p",null,"Leider existiert die aufgerufene Seite nicht.",-1)])])}var u={name:"DefaultComponent"},a=i(6262);const c=(0,a.A)(u,[["render",r],["__scopeId","data-v-334e7b82"]]);var d=c}}]);
|
||||
//# sourceMappingURL=448.10071411.js.map
|
||||
1
public/js/448.10071411.js.map
Normal file
1
public/js/448.10071411.js.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"js/448.10071411.js","mappings":"+NACIA,EAAAA,EAAAA,IAGM,eAAAC,EAAA,KAAAA,EAAA,KAFJC,EAAAA,EAAAA,IAA8B,UAA1B,yBAAqB,IACzBA,EAAAA,EAAAA,IAAoD,SAAjD,iDAA6C,M,CAKpD,OACEC,KAAM,oB,UCFV,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASC,GAAQ,CAAC,YAAY,qBAEzF,O","sources":["webpack://miriamgemeinde/./src/content/DefaultComponent.vue","webpack://miriamgemeinde/./src/content/DefaultComponent.vue?e630"],"sourcesContent":["<template>\n <div>\n <h1>Seite existiert nicht</h1>\n <p>Leider existiert die aufgerufene Seite nicht.</p>\n </div>\n </template>\n \n <script>\n export default {\n name: 'DefaultComponent'\n };\n </script>\n \n <style scoped>\n div {\n padding: 20px;\n }\n </style>\n ","import { render } from \"./DefaultComponent.vue?vue&type=template&id=334e7b82&scoped=true\"\nimport script from \"./DefaultComponent.vue?vue&type=script&lang=js\"\nexport * from \"./DefaultComponent.vue?vue&type=script&lang=js\"\n\nimport \"./DefaultComponent.vue?vue&type=style&index=0&id=334e7b82&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-334e7b82\"]])\n\nexport default __exports__"],"names":["_createElementBlock","_cache","_createElementVNode","name","__exports__","render"],"ignoreList":[],"sourceRoot":""}
|
||||
2
public/js/468.f740a55f.js
Normal file
2
public/js/468.f740a55f.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[468],{5468:function(e,r,t){t.r(r),t.d(r,{default:function(){return k}});var s=t(641),n=t(33),i=t(3751);const a={class:"user-administration"},u=["required"],l={type:"submit"},o={key:1},c=["onClick"];function d(e,r,t,d,m,h){return(0,s.uX)(),(0,s.CE)("div",a,[r[11]||(r[11]=(0,s.Lk)("h1",null,"Benutzerverwaltung",-1)),(0,s.Lk)("h2",null,(0,n.v_)(h.formTitle),1),(0,s.Lk)("form",{onSubmit:r[4]||(r[4]=(0,i.D$)((...e)=>h.saveUser&&h.saveUser(...e),["prevent"]))},[r[7]||(r[7]=(0,s.Lk)("label",{for:"name"},"Name:",-1)),(0,s.bo)((0,s.Lk)("input",{id:"name","onUpdate:modelValue":r[0]||(r[0]=e=>m.currentUser.name=e),required:""},null,512),[[i.Jo,m.currentUser.name]]),r[8]||(r[8]=(0,s.Lk)("label",{for:"email"},"Email:",-1)),(0,s.bo)((0,s.Lk)("input",{id:"email","onUpdate:modelValue":r[1]||(r[1]=e=>m.currentUser.email=e),type:"email",required:""},null,512),[[i.Jo,m.currentUser.email]]),r[9]||(r[9]=(0,s.Lk)("label",{for:"password"},"Passwort:",-1)),(0,s.bo)((0,s.Lk)("input",{id:"password","onUpdate:modelValue":r[2]||(r[2]=e=>m.currentUser.password=e),type:"password",required:m.isCreating},null,8,u),[[i.Jo,m.currentUser.password]]),(0,s.Lk)("div",null,[r[6]||(r[6]=(0,s.Lk)("label",{for:"active"},"Aktiv:",-1)),(0,s.bo)((0,s.Lk)("input",{id:"active","onUpdate:modelValue":r[3]||(r[3]=e=>m.currentUser.active=e),type:"checkbox"},null,512),[[i.lH,m.currentUser.active]])]),(0,s.Lk)("button",l,(0,n.v_)(m.isCreating?"Erstellen":"Aktualisieren"),1)],32),m.isCreating?(0,s.Q3)("",!0):((0,s.uX)(),(0,s.CE)("button",{key:0,onClick:r[5]||(r[5]=(...e)=>h.resetForm&&h.resetForm(...e))},"Zurück zu Benutzer erstellen")),m.users.length?((0,s.uX)(),(0,s.CE)("div",o,[r[10]||(r[10]=(0,s.Lk)("h2",null,"Vorhandene Benutzer",-1)),(0,s.Lk)("ul",null,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(m.users,e=>((0,s.uX)(),(0,s.CE)("li",{key:e.id,onClick:r=>h.editUser(e)},(0,n.v_)(e.name)+" ("+(0,n.v_)(e.email)+") ",9,c))),128))])])):(0,s.Q3)("",!0)])}var m=t(6296),h={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{const e=await m.A.get("/users");this.users=e.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 m.A.post("/users",this.currentUser)}catch(e){console.error("Fehler beim Erstellen des Benutzers:",e)}},async updateUser(){try{await m.A.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()}},p=t(6262);const U=(0,p.A)(h,[["render",d],["__scopeId","data-v-a495c756"]]);var k=U}}]);
|
||||
//# sourceMappingURL=468.f740a55f.js.map
|
||||
1
public/js/468.f740a55f.js.map
Normal file
1
public/js/468.f740a55f.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/493.8b03db87.js
Normal file
2
public/js/493.8b03db87.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[493],{5493:function(e,i,s){s.r(i),s.d(i,{default:function(){return h}});var a=s(641),t=s(3751),o=s(33);const l={class:"register"},r={key:0,class:"dialog"},n={class:"dialog-content"};function d(e,i,s,d,g,u){const m=(0,a.g2)("router-link");return(0,a.uX)(),(0,a.CE)("div",l,[i[11]||(i[11]=(0,a.Lk)("h2",null,"Registrieren",-1)),(0,a.Lk)("form",{onSubmit:i[3]||(i[3]=(0,t.D$)((...e)=>u.register&&u.register(...e),["prevent"]))},[i[5]||(i[5]=(0,a.Lk)("label",{for:"name"},"Name:",-1)),(0,a.bo)((0,a.Lk)("input",{type:"text",id:"name","onUpdate:modelValue":i[0]||(i[0]=e=>g.name=e),required:""},null,512),[[t.Jo,g.name]]),i[6]||(i[6]=(0,a.Lk)("label",{for:"email"},"Email-Adresse:",-1)),(0,a.bo)((0,a.Lk)("input",{type:"email",id:"email","onUpdate:modelValue":i[1]||(i[1]=e=>g.email=e),required:""},null,512),[[t.Jo,g.email]]),i[7]||(i[7]=(0,a.Lk)("label",{for:"password"},"Passwort:",-1)),(0,a.bo)((0,a.Lk)("input",{type:"password",id:"password","onUpdate:modelValue":i[2]||(i[2]=e=>g.password=e),required:""},null,512),[[t.Jo,g.password]]),i[8]||(i[8]=(0,a.Lk)("button",{type:"submit"},"Registrieren",-1))],32),(0,a.Lk)("p",null,[(0,a.bF)(m,{to:"/login"},{default:(0,a.k6)(()=>[...i[9]||(i[9]=[(0,a.eW)("Login",-1)])]),_:1})]),(0,a.Lk)("p",null,[(0,a.bF)(m,{to:"/forgot-password"},{default:(0,a.k6)(()=>[...i[10]||(i[10]=[(0,a.eW)("Passwort vergessen?",-1)])]),_:1})]),g.dialogVisible?((0,a.uX)(),(0,a.CE)("div",r,[(0,a.Lk)("div",n,[(0,a.Lk)("h3",null,(0,o.v_)(g.dialogTitle),1),(0,a.Lk)("p",null,(0,o.v_)(g.dialogMessage),1),(0,a.Lk)("button",{type:"button",onClick:i[4]||(i[4]=(...e)=>u.closeDialog&&u.closeDialog(...e))},"Schließen")])])):(0,a.Q3)("",!0)])}var g=s(6296),u={name:"RegisterComponent",components:{},data(){return{name:"",email:"",password:"",dialogTitle:"",dialogMessage:"",dialogVisible:!1}},methods:{async register(){try{const e=await g.A.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){const i=e?.response?.data?.message||e?.message||"Ein unbekannter Fehler ist aufgetreten";this.showDialog("Fehler",i)}},showDialog(e,i){this.dialogTitle=e,this.dialogMessage=i,this.dialogVisible=!0},closeDialog(){this.dialogVisible=!1}}},m=s(6262);const p=(0,m.A)(u,[["render",d],["__scopeId","data-v-63b3c0a3"]]);var h=p}}]);
|
||||
//# sourceMappingURL=493.8b03db87.js.map
|
||||
1
public/js/493.8b03db87.js.map
Normal file
1
public/js/493.8b03db87.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/562.b3af6519.js
Normal file
2
public/js/562.b3af6519.js
Normal file
File diff suppressed because one or more lines are too long
1
public/js/562.b3af6519.js.map
Normal file
1
public/js/562.b3af6519.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/636.cdb315d8.js
Normal file
2
public/js/636.cdb315d8.js
Normal file
File diff suppressed because one or more lines are too long
1
public/js/636.cdb315d8.js.map
Normal file
1
public/js/636.cdb315d8.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/698.3adc1912.js
Normal file
2
public/js/698.3adc1912.js
Normal file
File diff suppressed because one or more lines are too long
1
public/js/698.3adc1912.js.map
Normal file
1
public/js/698.3adc1912.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/701.ed174a6b.js
Normal file
2
public/js/701.ed174a6b.js
Normal file
File diff suppressed because one or more lines are too long
1
public/js/701.ed174a6b.js.map
Normal file
1
public/js/701.ed174a6b.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/702.dd26645a.js
Normal file
2
public/js/702.dd26645a.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[355,702],{5355:function(e,o,a){a.r(o),a.d(o,{default:function(){return g}});var i=a(641),l=a(33);const s={key:0,class:"dialog-overlay"},t={class:"dialog"};function n(e,o,a,n,r,d){return a.modelValue?((0,i.uX)(),(0,i.CE)("div",s,[(0,i.Lk)("div",t,[(0,i.Lk)("h2",null,(0,l.v_)(a.title),1),(0,i.Lk)("p",null,(0,l.v_)(a.message),1),(0,i.Lk)("button",{onClick:o[0]||(o[0]=(...e)=>d.closeDialog&&d.closeDialog(...e))},"OK")])])):(0,i.Q3)("",!0)}var r={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")}}},d=a(6262);const u=(0,d.A)(r,[["render",n],["__scopeId","data-v-ce9d9498"]]);var g=u},9702:function(e,o,a){a.r(o),a.d(o,{default:function(){return p}});var i=a(641),l=a(3751);const s={class:"login"};function t(e,o,a,t,n,r){const d=(0,i.g2)("router-link"),u=(0,i.g2)("DialogComponent");return(0,i.uX)(),(0,i.CE)("div",s,[o[9]||(o[9]=(0,i.Lk)("h2",null,"Login",-1)),(0,i.Lk)("form",{onSubmit:o[2]||(o[2]=(0,l.D$)((...e)=>r.runLogin&&r.runLogin(...e),["prevent"]))},[o[4]||(o[4]=(0,i.Lk)("label",{for:"email"},"Email-Adresse:",-1)),(0,i.bo)((0,i.Lk)("input",{type:"email",id:"email","onUpdate:modelValue":o[0]||(o[0]=e=>n.email=e),required:""},null,512),[[l.Jo,n.email]]),o[5]||(o[5]=(0,i.Lk)("label",{for:"password"},"Passwort:",-1)),(0,i.bo)((0,i.Lk)("input",{type:"password",id:"password","onUpdate:modelValue":o[1]||(o[1]=e=>n.password=e),required:""},null,512),[[l.Jo,n.password]]),o[6]||(o[6]=(0,i.Lk)("button",{type:"submit"},"Login",-1))],32),(0,i.Lk)("p",null,[(0,i.bF)(d,{to:"/register"},{default:(0,i.k6)(()=>[...o[7]||(o[7]=[(0,i.eW)("Registrieren",-1)])]),_:1})]),(0,i.Lk)("p",null,[(0,i.bF)(d,{to:"/forgot-password"},{default:(0,i.k6)(()=>[...o[8]||(o[8]=[(0,i.eW)("Passwort vergessen?",-1)])]),_:1})]),(0,i.bF)(u,{title:n.dialogTitle,message:n.dialogMessage,modelValue:n.dialogVisible,"onUpdate:modelValue":o[3]||(o[3]=e=>n.dialogVisible=e),onClose:r.closeDialog},null,8,["title","message","modelValue","onClose"])])}a(4114);var n=a(4335),r=a(5355),d=a(6278),u={name:"LoginComponent",components:{DialogComponent:r["default"]},data(){return{email:"",password:"",dialogTitle:"",dialogMessage:"",dialogVisible:!1}},methods:{...(0,d.i0)(["login"]),async runLogin(){try{const e=await n.A.post("/auth/login",{email:this.email,password:this.password}),o=e.data.token,a=e.data;localStorage.setItem("token",o),this.login(a.user),n.A.defaults.headers.common["Authorization"]=`Bearer ${o}`,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,o){this.dialogTitle=e,this.dialogMessage=o,this.dialogVisible=!0},closeDialog(){this.dialogVisible=!1}}},g=a(6262);const m=(0,g.A)(u,[["render",t],["__scopeId","data-v-40a158c0"]]);var p=m}}]);
|
||||
//# sourceMappingURL=702.dd26645a.js.map
|
||||
1
public/js/702.dd26645a.js.map
Normal file
1
public/js/702.dd26645a.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/703.55a76dd0.js
Normal file
2
public/js/703.55a76dd0.js
Normal file
File diff suppressed because one or more lines are too long
1
public/js/703.55a76dd0.js.map
Normal file
1
public/js/703.55a76dd0.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/718.a5205fd8.js
Normal file
2
public/js/718.a5205fd8.js
Normal file
File diff suppressed because one or more lines are too long
1
public/js/718.a5205fd8.js.map
Normal file
1
public/js/718.a5205fd8.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/768.1d5b1c25.js
Normal file
2
public/js/768.1d5b1c25.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[768],{1768:function(e,n,i){i.r(n),i.d(n,{default:function(){return o}});var r=i(641),t=i(33);const a={class:"service-unavailable"};function s(e,n,i,s,c,u){return(0,r.uX)(),(0,r.CE)("div",a,[n[0]||(n[0]=(0,r.Lk)("h1",null,"Vorübergehend nicht erreichbar",-1)),(0,r.Lk)("p",null,(0,t.v_)(u.message),1),n[1]||(n[1]=(0,r.Lk)("p",{class:"hint"}," Es liegt vermutlich ein technisches Problem vor (z. B. die Datenbank). Bitte laden Sie die Seite in einigen Minuten erneut. ",-1))])}var c=i(6278),u={name:"ServiceUnavailableComponent",computed:{...(0,c.L8)(["menuLoadError"]),message(){return this.menuLoadError||"Die Website ist vorübergehend nicht vollständig erreichbar."}}},l=i(6262);const d=(0,l.A)(u,[["render",s],["__scopeId","data-v-fd9b1088"]]);var o=d}}]);
|
||||
//# sourceMappingURL=768.1d5b1c25.js.map
|
||||
1
public/js/768.1d5b1c25.js.map
Normal file
1
public/js/768.1d5b1c25.js.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"js/768.1d5b1c25.js","mappings":"sMACOA,MAAM,uB,0CAAXC,EAAAA,EAAAA,IAMM,MANNC,EAMM,C,aALJC,EAAAA,EAAAA,IAAuC,UAAnC,kCAA8B,KAClCA,EAAAA,EAAAA,IAAoB,UAAAC,EAAAA,EAAAA,IAAdC,EAAAC,SAAO,G,aACbH,EAAAA,EAAAA,IAEI,KAFDH,MAAM,QAAO,iIAEhB,K,eAOJ,GACEO,KAAM,8BACNC,SAAU,KACLC,EAAAA,EAAAA,IAAW,CAAC,kBACfH,OAAAA,GACE,OACEI,KAAKC,eACL,6DAEJ,I,UCfJ,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASC,GAAQ,CAAC,YAAY,qBAEzF,O","sources":["webpack://miriamgemeinde/./src/content/ServiceUnavailableComponent.vue","webpack://miriamgemeinde/./src/content/ServiceUnavailableComponent.vue?7a9d"],"sourcesContent":["<template>\n <div class=\"service-unavailable\">\n <h1>Vorübergehend nicht erreichbar</h1>\n <p>{{ message }}</p>\n <p class=\"hint\">\n Es liegt vermutlich ein technisches Problem vor (z. B. die Datenbank). Bitte laden Sie die Seite in einigen Minuten erneut.\n </p>\n </div>\n</template>\n\n<script>\nimport { mapGetters } from 'vuex';\n\nexport default {\n name: 'ServiceUnavailableComponent',\n computed: {\n ...mapGetters(['menuLoadError']),\n message() {\n return (\n this.menuLoadError ||\n 'Die Website ist vorübergehend nicht vollständig erreichbar.'\n );\n },\n },\n};\n</script>\n\n<style scoped>\n.service-unavailable {\n padding: 20px;\n}\n.hint {\n color: #444;\n margin-top: 1rem;\n}\n</style>\n","import { render } from \"./ServiceUnavailableComponent.vue?vue&type=template&id=fd9b1088&scoped=true\"\nimport script from \"./ServiceUnavailableComponent.vue?vue&type=script&lang=js\"\nexport * from \"./ServiceUnavailableComponent.vue?vue&type=script&lang=js\"\n\nimport \"./ServiceUnavailableComponent.vue?vue&type=style&index=0&id=fd9b1088&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-fd9b1088\"]])\n\nexport default __exports__"],"names":["class","_createElementBlock","_hoisted_1","_createElementVNode","_toDisplayString","$options","message","name","computed","mapGetters","this","menuLoadError","__exports__","render"],"ignoreList":[],"sourceRoot":""}
|
||||
2
public/js/785.13515298.js
Normal file
2
public/js/785.13515298.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[785],{3149:function(n,t,e){e.r(t),e.d(t,{default:function(){return k}});var o=e(641);const r={class:"some-page"};function i(n,t,e,i,u,a){const c=(0,o.g2)("ContentComponent");return(0,o.uX)(),(0,o.CE)("div",r,[(0,o.bF)(c,{link:a.currentLink},null,8,["link"])])}var u=e(33);function a(n,t,e,r,i,a){const c=(0,o.g2)("RenderContentComponent");return(0,o.uX)(),(0,o.CE)("div",null,[(0,o.Lk)("h1",null,(0,u.v_)(i.title),1),(0,o.bF)(c,{content:i.content},null,8,["content"])])}var c=e(6296),s=e(6278),l=e(6562),m={name:"ContentComponent",components:{RenderContentComponent:l.A},props:{link:{type:String,required:!0}},data(){return{content:"",title:""}},computed:{...(0,s.aH)(["menuData"]),...(0,s.L8)(["getMenuData"])},watch:{link:{immediate:!0,handler(n){this.fetchContent(n),this.setTitle(n)}}},methods:{async fetchContent(n){try{const t=await c.A.get(`/page-content?link=${n}`);this.content=t.data.content}catch(t){console.error("Fehler beim Abrufen des Inhalts:",t)}},setTitle(n){const t=(n,e)=>{for(const o of n){if(o.link===e)return o.pageTitle||o.name;if(o.submenu&&o.submenu.length>0){const n=t(o.submenu,e);if(n)return`${n}`}}return""};this.title=t(this.menuData,n)}}},h=e(6262);const d=(0,h.A)(m,[["render",a]]);var p=d,f={name:"DefaultPage",components:{ContentComponent:p},computed:{currentLink(){return this.$route.path}}};const C=(0,h.A)(f,[["render",i]]);var k=C}}]);
|
||||
//# sourceMappingURL=785.13515298.js.map
|
||||
1
public/js/785.13515298.js.map
Normal file
1
public/js/785.13515298.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/812.8fc8c0c0.js
Normal file
2
public/js/812.8fc8c0c0.js
Normal file
File diff suppressed because one or more lines are too long
1
public/js/812.8fc8c0c0.js.map
Normal file
1
public/js/812.8fc8c0c0.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/814.46594c38.js
Normal file
2
public/js/814.46594c38.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[814],{9644:function(e,n,t){t.r(n),t.d(n,{default:function(){return m}});var a=t(641),s=t(33);function u(e,n,t,u,i,o){const r=(0,a.g2)("RenderContentComponent");return(0,a.uX)(),(0,a.CE)("div",null,[n[0]||(n[0]=(0,a.Lk)("div",{class:"previewinfo"},"Dies ist eine Vorschau.",-1)),(0,a.Lk)("h1",null,(0,s.v_)(u.title),1),(0,a.bF)(r,{content:u.content},null,8,["content"])])}var i=t(6278),o=t(6562),r={name:"PagePreview",components:{RenderContentComponent:o.A},setup(){const e=(0,i.Pj)(),n=(0,a.EW)(()=>e.state.pageContent),t=(0,a.EW)(()=>e.state.selectedPage),s=(0,a.EW)(()=>e.state.menuData),u=(0,a.EW)(()=>e.state.pageTitle),o=n=>{const t=(e,n)=>{for(const a of e){if(a.link===n)return a.pageTitle||a.name;if(a.submenu&&a.submenu.length>0){const e=t(a.submenu,n);if(e)return e}}return""};e.dispatch("setPageTitle",t(s.value,n))};return(0,a.nT)(()=>{o(t.value)}),{content:n,title:u}}},c=t(6262);const l=(0,c.A)(r,[["render",u],["__scopeId","data-v-9a71cbf6"]]);var m=l}}]);
|
||||
//# sourceMappingURL=814.46594c38.js.map
|
||||
1
public/js/814.46594c38.js.map
Normal file
1
public/js/814.46594c38.js.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"js/814.46594c38.js","mappings":"kRACEA,EAAAA,EAAAA,IAIM,Y,aAHJC,EAAAA,EAAAA,IAAsD,OAAjDC,MAAM,eAAc,2BAAuB,KAChDD,EAAAA,EAAAA,IAAoB,WAAAE,EAAAA,EAAAA,IAAbC,EAAAC,OAAK,IACZC,EAAAA,EAAAA,IAA6CC,EAAA,CAApBC,QAASJ,EAAAI,SAAO,qB,yBAS7C,GACEC,KAAM,cACNC,WAAY,CACVC,uBAAsBA,EAAAA,GAExBC,KAAAA,GACE,MAAMC,GAAQC,EAAAA,EAAAA,MACRN,GAAUO,EAAAA,EAAAA,IAAS,IAAMF,EAAMG,MAAMC,aACrCC,GAAeH,EAAAA,EAAAA,IAAS,IAAMF,EAAMG,MAAME,cAC1CC,GAAWJ,EAAAA,EAAAA,IAAS,IAAMF,EAAMG,MAAMG,UACtCd,GAAQU,EAAAA,EAAAA,IAAS,IAAMF,EAAMG,MAAMI,WAEnCC,EAAYC,IAChB,MAAMC,EAAYA,CAACC,EAAWF,KAC5B,IAAK,MAAMG,KAAQD,EAAW,CAC5B,GAAIC,EAAKH,OAASA,EAChB,OAAOG,EAAKL,WAAaK,EAAKhB,KAEhC,GAAIgB,EAAKC,SAAWD,EAAKC,QAAQC,OAAS,EAAG,CAC3C,MAAMC,EAAQL,EAAUE,EAAKC,QAASJ,GACtC,GAAIM,EACF,OAAOA,CAEX,CACF,CACA,MAAO,IAETf,EAAMgB,SAAS,eAAgBN,EAAUJ,EAASW,MAAOR,KAO3D,OAJAS,EAAAA,EAAAA,IAAY,KACVV,EAASH,EAAaY,SAGjB,CACLtB,UACAH,QAEJ,G,UC5CF,MAAM2B,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASC,GAAQ,CAAC,YAAY,qBAEzF,O","sources":["webpack://miriamgemeinde/./src/content/admin/PagePreviewComponent.vue","webpack://miriamgemeinde/./src/content/admin/PagePreviewComponent.vue?4023"],"sourcesContent":["<template>\n <div>\n <div class=\"previewinfo\">Dies ist eine Vorschau.</div>\n <h1>{{ title }}</h1>\n <RenderContentComponent :content=\"content\" />\n </div>\n</template>\n\n<script>\nimport { computed, watchEffect } from 'vue';\nimport { useStore } from 'vuex';\nimport RenderContentComponent from '@/components/RenderContentComponent.vue';\n\nexport default {\n name: 'PagePreview',\n components: {\n RenderContentComponent\n },\n setup() {\n const store = useStore();\n const content = computed(() => store.state.pageContent);\n const selectedPage = computed(() => store.state.selectedPage);\n const menuData = computed(() => store.state.menuData);\n const title = computed(() => store.state.pageTitle);\n\n const setTitle = (link) => {\n const findTitle = (menuItems, link) => {\n for (const item of menuItems) {\n if (item.link === link) {\n return item.pageTitle || item.name;\n }\n if (item.submenu && item.submenu.length > 0) {\n const found = findTitle(item.submenu, link);\n if (found) {\n return found;\n }\n }\n }\n return '';\n };\n store.dispatch('setPageTitle', findTitle(menuData.value, link));\n };\n\n watchEffect(() => {\n setTitle(selectedPage.value);\n });\n\n return {\n content,\n title\n };\n }\n};\n</script>\n\n<style scoped>\n.previewinfo {\n background-color: black;\n color: #d00000;\n position: absolute;\n top: 93px;\n left: 0;\n padding: 2px 10px;\n font-weight: bold;\n}\n</style>\n","import { render } from \"./PagePreviewComponent.vue?vue&type=template&id=9a71cbf6&scoped=true\"\nimport script from \"./PagePreviewComponent.vue?vue&type=script&lang=js\"\nexport * from \"./PagePreviewComponent.vue?vue&type=script&lang=js\"\n\nimport \"./PagePreviewComponent.vue?vue&type=style&index=0&id=9a71cbf6&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-9a71cbf6\"]])\n\nexport default __exports__"],"names":["_createElementBlock","_createElementVNode","class","_toDisplayString","$setup","title","_createVNode","_component_RenderContentComponent","content","name","components","RenderContentComponent","setup","store","useStore","computed","state","pageContent","selectedPage","menuData","pageTitle","setTitle","link","findTitle","menuItems","item","submenu","length","found","dispatch","value","watchEffect","__exports__","render"],"ignoreList":[],"sourceRoot":""}
|
||||
2
public/js/877.1c3ea2d8.js
Normal file
2
public/js/877.1c3ea2d8.js
Normal file
File diff suppressed because one or more lines are too long
1
public/js/877.1c3ea2d8.js.map
Normal file
1
public/js/877.1c3ea2d8.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/js/957.ed84cda8.js
Normal file
2
public/js/957.ed84cda8.js
Normal file
@@ -0,0 +1,2 @@
|
||||
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[957],{8957:function(e,t,a){a.r(t),a.d(t,{default:function(){return d}});var n=a(641);const u=["src"];function m(e,t,a,m,r,i){return(0,n.uX)(),(0,n.CE)("img",{src:r.currentImage},null,8,u)}var r=a(6278),i={name:"ImageContent",data(){return{defaultImage:"/images/homepage1.png",currentImage:"/images/homepage1.png"}},computed:{...(0,r.aH)(["menuData"])},watch:{$route:{immediate:!0,handler(){this.updateImage()}}},methods:{updateImage(){const e=this.$route.path,t=this.menuData,a=this.findMenuItemByPath(t,e);a&&a.image?this.currentImage=`/images/${a.image}`:this.currentImage=this.defaultImage},findMenuItemByPath(e,t){for(let a of e){if(a.link===t)return a;if(a.submenu){const e=this.findMenuItemByPath(a.submenu,t);if(e)return e}}return null}}},s=a(6262);const g=(0,s.A)(i,[["render",m],["__scopeId","data-v-d1b58e08"]]);var d=g}}]);
|
||||
//# sourceMappingURL=957.ed84cda8.js.map
|
||||
1
public/js/957.ed84cda8.js.map
Normal file
1
public/js/957.ed84cda8.js.map
Normal file
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"js/957.ed84cda8.js","mappings":"+OACIA,EAAAA,EAAAA,IAA2B,OAArBC,IAAKC,EAAAC,cAAY,OAAAC,E,eAM3B,GACEC,KAAM,eACNC,IAAAA,GACE,MAAO,CACLC,aAAc,wBACdJ,aAAc,wBAElB,EACAK,SAAU,KACLC,EAAAA,EAAAA,IAAS,CAAC,cAEfC,MAAO,CACLC,OAAQ,CACNC,WAAW,EACXC,OAAAA,GACEC,KAAKC,aACP,IAGJC,QAAS,CACPD,WAAAA,GACE,MAAME,EAAYH,KAAKH,OAAOO,KACxBC,EAAWL,KAAKK,SAChBC,EAAWN,KAAKO,mBAAmBF,EAAUF,GAC/CG,GAAYA,EAASE,MACvBR,KAAKX,aAAe,WAAWiB,EAASE,QAExCR,KAAKX,aAAeW,KAAKP,YAE7B,EACAc,kBAAAA,CAAmBE,EAAML,GACvB,IAAK,IAAIM,KAAQD,EAAM,CACrB,GAAIC,EAAKC,OAASP,EAChB,OAAOM,EAET,GAAIA,EAAKE,QAAS,CAChB,MAAMC,EAAUb,KAAKO,mBAAmBG,EAAKE,QAASR,GACtD,GAAIS,EACF,OAAOA,CAEX,CACF,CACA,OAAO,IACT,I,UC3CJ,MAAMC,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASC,GAAQ,CAAC,YAAY,qBAEzF,O","sources":["webpack://miriamgemeinde/./src/content/ImageContent.vue","webpack://miriamgemeinde/./src/content/ImageContent.vue?ee30"],"sourcesContent":["<template>\n <img :src=\"currentImage\" />\n</template>\n\n<script>\nimport { mapState } from 'vuex';\n\nexport default {\n name: 'ImageContent',\n data() {\n return {\n defaultImage: '/images/homepage1.png',\n currentImage: '/images/homepage1.png'\n };\n },\n computed: {\n ...mapState(['menuData']),\n },\n watch: {\n $route: {\n immediate: true,\n handler() {\n this.updateImage();\n }\n }\n },\n methods: {\n updateImage() {\n const routePath = this.$route.path;\n const menuData = this.menuData;\n const menuItem = this.findMenuItemByPath(menuData, routePath);\n if (menuItem && menuItem.image) {\n this.currentImage = `/images/${menuItem.image}`;\n } else {\n this.currentImage = this.defaultImage;\n }\n },\n findMenuItemByPath(menu, path) {\n for (let item of menu) {\n if (item.link === path) {\n return item;\n }\n if (item.submenu) {\n const subItem = this.findMenuItemByPath(item.submenu, path);\n if (subItem) {\n return subItem;\n }\n }\n }\n return null;\n }\n }\n};\n</script>\n\n<style scoped>\n.right-column h2 {\n text-align: center;\n color: #000;\n}\n\n.right-column img {\n display: block;\n margin: 0 auto;\n max-width: 100%;\n height: auto;\n}\n</style>\n","import { render } from \"./ImageContent.vue?vue&type=template&id=d1b58e08&scoped=true\"\nimport script from \"./ImageContent.vue?vue&type=script&lang=js\"\nexport * from \"./ImageContent.vue?vue&type=script&lang=js\"\n\nimport \"./ImageContent.vue?vue&type=style&index=0&id=d1b58e08&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-d1b58e08\"]])\n\nexport default __exports__"],"names":["_createElementBlock","src","$data","currentImage","_hoisted_1","name","data","defaultImage","computed","mapState","watch","$route","immediate","handler","this","updateImage","methods","routePath","path","menuData","menuItem","findMenuItemByPath","image","menu","item","link","submenu","subItem","__exports__","render"],"ignoreList":[],"sourceRoot":""}
|
||||
2
public/js/app.c50b5429.js
Normal file
2
public/js/app.c50b5429.js
Normal file
File diff suppressed because one or more lines are too long
1
public/js/app.c50b5429.js.map
Normal file
1
public/js/app.c50b5429.js.map
Normal file
File diff suppressed because one or more lines are too long
37
public/js/chunk-vendors.b7e76d39.js
Normal file
37
public/js/chunk-vendors.b7e76d39.js
Normal file
File diff suppressed because one or more lines are too long
1
public/js/chunk-vendors.b7e76d39.js.map
Normal file
1
public/js/chunk-vendors.b7e76d39.js.map
Normal file
File diff suppressed because one or more lines are too long
36
src/content/ServiceUnavailableComponent.vue
Normal file
36
src/content/ServiceUnavailableComponent.vue
Normal file
@@ -0,0 +1,36 @@
|
||||
<template>
|
||||
<div class="service-unavailable">
|
||||
<h1>Vorübergehend nicht erreichbar</h1>
|
||||
<p>{{ message }}</p>
|
||||
<p class="hint">
|
||||
Es liegt vermutlich ein technisches Problem vor (z. B. die Datenbank). Bitte laden Sie die Seite in einigen Minuten erneut.
|
||||
</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex';
|
||||
|
||||
export default {
|
||||
name: 'ServiceUnavailableComponent',
|
||||
computed: {
|
||||
...mapGetters(['menuLoadError']),
|
||||
message() {
|
||||
return (
|
||||
this.menuLoadError ||
|
||||
'Die Website ist vorübergehend nicht vollständig erreichbar.'
|
||||
);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.service-unavailable {
|
||||
padding: 20px;
|
||||
}
|
||||
.hint {
|
||||
color: #444;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
</style>
|
||||
14
src/main.js
14
src/main.js
@@ -5,20 +5,6 @@ import store from './store';
|
||||
import axios from './axios';
|
||||
import './assets/css/editor.css';
|
||||
|
||||
// Menü-Daten über das konfigurierte Axios-Backend laden
|
||||
async function fetchMenuData() {
|
||||
const response = await axios.get('/menu-data');
|
||||
return response.data;
|
||||
}
|
||||
|
||||
fetchMenuData()
|
||||
.then(menuData => {
|
||||
store.commit('setMenuData', menuData);
|
||||
})
|
||||
.catch(err => {
|
||||
console.error('Fehler beim Laden der Menü-Daten:', err);
|
||||
});
|
||||
|
||||
const app = createApp(AppComponent);
|
||||
app.use(router);
|
||||
app.use(store);
|
||||
|
||||
@@ -60,10 +60,13 @@ router.beforeEach(async (to, from, next) => {
|
||||
addForgotPasswordRoute();
|
||||
addResetPasswordRoute();
|
||||
addAuthLoginRoute();
|
||||
const fallbackMain = store.state.menuLoadError
|
||||
? 'ServiceUnavailableComponent'
|
||||
: 'DefaultComponent';
|
||||
router.addRoute({
|
||||
path: '/:pathMatch(.*)*',
|
||||
components: {
|
||||
default: loadComponent('DefaultComponent'),
|
||||
default: loadComponent(fallbackMain),
|
||||
rightColumn: loadComponent('ImageContent')
|
||||
}
|
||||
});
|
||||
|
||||
@@ -15,6 +15,8 @@ export default createStore({
|
||||
user: user,
|
||||
token: localStorage.getItem('token') || '',
|
||||
menuData: [],
|
||||
/** gesetzt, wenn /menu-data fehlschlägt (z. B. DB weg) — nicht mit „Seite nicht gefunden“ verwechseln */
|
||||
menuLoadError: null,
|
||||
pageContent: '',
|
||||
pageTitle: '',
|
||||
selectedPage: '',
|
||||
@@ -38,6 +40,10 @@ export default createStore({
|
||||
},
|
||||
setMenuData(state, menuData) {
|
||||
state.menuData = menuData;
|
||||
state.menuLoadError = null;
|
||||
},
|
||||
setMenuLoadError(state, message) {
|
||||
state.menuLoadError = message;
|
||||
},
|
||||
SET_PAGE_CONTENT(state, content) {
|
||||
state.pageContent = content;
|
||||
@@ -59,6 +65,15 @@ export default createStore({
|
||||
commit('setMenuData', response.data);
|
||||
} catch (error) {
|
||||
console.error('Fehler beim Laden der Menü-Daten:', error);
|
||||
const fromApi =
|
||||
error.response?.data &&
|
||||
typeof error.response.data === 'object' &&
|
||||
error.response.data.error;
|
||||
const msg =
|
||||
typeof fromApi === 'string'
|
||||
? fromApi
|
||||
: 'Die Website ist vorübergehend nicht vollständig erreichbar. Bitte versuchen Sie es später erneut.';
|
||||
commit('setMenuLoadError', msg);
|
||||
}
|
||||
},
|
||||
async loadPageContent({ commit }, link) {
|
||||
@@ -114,5 +129,6 @@ export default createStore({
|
||||
pageContent: state => state.pageContent,
|
||||
pageTitle: state => state.pageTitle,
|
||||
selectedPage: state => state.selectedPage,
|
||||
menuLoadError: state => state.menuLoadError,
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1,24 +1,22 @@
|
||||
const { MenuItem } = require('../models');
|
||||
const { withDbRetries } = require('./withDbRetries');
|
||||
|
||||
async function fetchMenuData() {
|
||||
try {
|
||||
const menuItems = await MenuItem.findAll({
|
||||
order: [['order_id', 'ASC']],
|
||||
include: [{
|
||||
model: MenuItem,
|
||||
as: 'submenu',
|
||||
required: false,
|
||||
order: [['order_id', 'ASC']]
|
||||
}]
|
||||
});
|
||||
|
||||
const menuData = buildMenuStructure(menuItems);
|
||||
|
||||
return menuData;
|
||||
} catch (error) {
|
||||
console.error('There was a problem fetching the menu data:', error);
|
||||
return [];
|
||||
}
|
||||
return withDbRetries(
|
||||
async () => {
|
||||
const menuItems = await MenuItem.findAll({
|
||||
order: [['order_id', 'ASC']],
|
||||
include: [{
|
||||
model: MenuItem,
|
||||
as: 'submenu',
|
||||
required: false,
|
||||
order: [['order_id', 'ASC']]
|
||||
}]
|
||||
});
|
||||
return buildMenuStructure(menuItems);
|
||||
},
|
||||
{ attempts: 3, baseDelayMs: 200 }
|
||||
);
|
||||
}
|
||||
|
||||
function buildMenuStructure(menuItems) {
|
||||
|
||||
51
utils/withDbRetries.js
Normal file
51
utils/withDbRetries.js
Normal file
@@ -0,0 +1,51 @@
|
||||
const sequelize = require('../config/database');
|
||||
|
||||
const DEFAULTS = {
|
||||
attempts: 3,
|
||||
baseDelayMs: 200,
|
||||
};
|
||||
|
||||
function delay(ms) {
|
||||
return new Promise((resolve) => setTimeout(resolve, ms));
|
||||
}
|
||||
|
||||
/**
|
||||
* Führt eine DB-Operation bis zu `attempts` mal aus. Nach einem Fehler:
|
||||
* kurzes Backoff, dann Verbindung mit authenticate() neu prüfen (frische
|
||||
* Verbindung aus dem Pool), erneuter Versuch.
|
||||
* Kein sequelize.close() — würde die gemeinsame Instanz für alle Requests killen.
|
||||
*/
|
||||
async function withDbRetries(operation, options = {}) {
|
||||
const { attempts, baseDelayMs } = { ...DEFAULTS, ...options };
|
||||
let lastError;
|
||||
|
||||
for (let attempt = 1; attempt <= attempts; attempt++) {
|
||||
try {
|
||||
if (attempt > 1) {
|
||||
const backoff = baseDelayMs * 2 ** (attempt - 2);
|
||||
await delay(backoff);
|
||||
try {
|
||||
await sequelize.authenticate();
|
||||
} catch (authErr) {
|
||||
console.warn(
|
||||
`DB authenticate vor Wiederholung ${attempt}/${attempts} fehlgeschlagen:`,
|
||||
authErr.message
|
||||
);
|
||||
}
|
||||
}
|
||||
return await operation();
|
||||
} catch (error) {
|
||||
lastError = error;
|
||||
console.error(
|
||||
`DB-Operation Versuch ${attempt}/${attempts} fehlgeschlagen:`,
|
||||
error.message
|
||||
);
|
||||
if (attempt === attempts) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
throw lastError;
|
||||
}
|
||||
|
||||
module.exports = { withDbRetries };
|
||||
Reference in New Issue
Block a user