Compare commits

3 Commits

227 changed files with 1725 additions and 580 deletions

View File

@@ -1,205 +1,59 @@
const bcrypt = require('bcryptjs'); const AuthService = require('../services/AuthService');
const { User, PasswordResetToken } = require('../models'); const ErrorHandler = require('../utils/ErrorHandler');
const jwt = require('jsonwebtoken');
const { addTokenToBlacklist } = require('../utils/blacklist');
const { transporter, getPasswordResetEmailTemplate } = require('../config/email');
const crypto = require('crypto');
function delay(ms) { /**
return new Promise(resolve => setTimeout(resolve, ms)); * Controller für Authentifizierungsendpunkte
*/
class AuthController {
/**
* Benutzerregistrierung
*/
static register = ErrorHandler.asyncHandler(async (req, res) => {
const result = await AuthService.register(req.body);
ErrorHandler.successResponse(res, result, result.message, 201);
});
/**
* Benutzeranmeldung
*/
static login = ErrorHandler.asyncHandler(async (req, res) => {
const { email, password } = req.body;
const result = await AuthService.login(email, password);
ErrorHandler.successResponse(res, result, result.message);
});
/**
* Passwort vergessen
*/
static forgotPassword = ErrorHandler.asyncHandler(async (req, res) => {
const result = await AuthService.forgotPassword(req.body.email);
ErrorHandler.successResponse(res, result, result.message);
});
/**
* Passwort zurücksetzen
*/
static resetPassword = ErrorHandler.asyncHandler(async (req, res) => {
const result = await AuthService.resetPassword(req.body.token, req.body.password);
ErrorHandler.successResponse(res, result, result.message);
});
/**
* Benutzerabmeldung
*/
static logout = ErrorHandler.asyncHandler(async (req, res) => {
const authHeader = req.header('Authorization');
const token = authHeader ? authHeader.replace('Bearer ', '') : null;
const result = await AuthService.logout(token);
ErrorHandler.successResponse(res, result, result.message);
});
} }
exports.register = async (req, res) => { // Export der statischen Methoden für die Routen
const { name, email, password } = req.body; module.exports = {
if (!name || !email || !password) { register: AuthController.register,
return res.status(400).json({ message: 'Alle Felder sind erforderlich' }); login: AuthController.login,
} forgotPassword: AuthController.forgotPassword,
try { resetPassword: AuthController.resetPassword,
const hashedPassword = await bcrypt.hash(password, 10); logout: AuthController.logout
console.log('Register: creating user', { email }); };
const maxAttempts = 3;
let attempt = 0;
let createdUser = null;
let lastError = null;
while (attempt < maxAttempts && !createdUser) {
try {
createdUser = await User.create({ name, email, password: hashedPassword, active: false });
} catch (err) {
lastError = err;
// Spezifisch auf Lock-Timeout reagieren und erneut versuchen
if ((err.code === 'ER_LOCK_WAIT_TIMEOUT' || err?.parent?.code === 'ER_LOCK_WAIT_TIMEOUT') && attempt < maxAttempts - 1) {
const backoffMs = 300 * (attempt + 1);
console.warn(`Register: ER_LOCK_WAIT_TIMEOUT, retry in ${backoffMs}ms (attempt ${attempt + 1}/${maxAttempts})`);
await delay(backoffMs);
attempt++;
continue;
}
throw err;
}
}
if (!createdUser && lastError) {
console.error('Register error (after retries):', lastError);
return res.status(503).json({ message: 'Zeitüberschreitung beim Zugriff auf die Datenbank. Bitte erneut versuchen.' });
}
console.log('Register: user created', { id: createdUser.id });
const safeUser = {
id: createdUser.id,
name: createdUser.name,
email: createdUser.email,
active: createdUser.active,
created_at: createdUser.created_at
};
return res.status(201).json({ message: 'Benutzer erfolgreich registriert', user: safeUser });
} catch (error) {
if (error.name === 'SequelizeUniqueConstraintError') {
return res.status(400).json({ message: 'Email-Adresse bereits in Verwendung' });
}
console.error('Register error:', error);
return res.status(500).json({ message: 'Ein Fehler ist aufgetreten', error: error.message });
}
};
exports.login = async (req, res) => {
const { email, password } = req.body;
if (!email || !password) {
return res.status(400).json({ message: 'Email und Passwort sind erforderlich' });
}
try {
const user = await User.findOne({ where: { email } });
if (!user) {
return res.status(401).json({ message: 'Ungültige Anmeldedaten' });
}
const validPassword = await bcrypt.compare(password, user.password);
if (!validPassword) {
return res.status(401).json({ message: 'Ungültige Anmeldedaten' });
}
if (!user.active) {
return res.status(403).json({ message: 'Benutzerkonto ist nicht aktiv' });
}
const token = jwt.sign({ id: user.id, name: user.name, email: user.email }, 'zTxVgptmPl9!_dr%xxx9999(dd)', { expiresIn: '1h' });
return res.status(200).json({ message: 'Login erfolgreich', token, 'user': user });
} catch (error) {
return res.status(500).json({ message: 'Ein Fehler ist aufgetreten' });
}
};
exports.forgotPassword = async (req, res) => {
const { email } = req.body;
if (!email) {
return res.status(400).json({ message: 'E-Mail-Adresse ist erforderlich' });
}
try {
const user = await User.findOne({ where: { email } });
if (!user) {
// Aus Sicherheitsgründen immer Erfolg melden, auch wenn E-Mail nicht existiert
return res.status(200).json({ message: 'Falls die E-Mail-Adresse in unserem System registriert ist, erhalten Sie einen Link zum Zurücksetzen des Passworts.' });
}
// Alte Reset-Tokens für diesen User löschen
await PasswordResetToken.destroy({ where: { userId: user.id } });
// Neuen Reset-Token generieren
const token = crypto.randomBytes(32).toString('hex');
const expiresAt = new Date(Date.now() + 60 * 60 * 1000); // 1 Stunde
await PasswordResetToken.create({
userId: user.id,
token,
expiresAt
});
// Reset-URL generieren
const resetUrl = `${process.env.FRONTEND_URL || 'http://localhost:8080'}/reset-password?token=${token}`;
// E-Mail versenden
const emailTemplate = getPasswordResetEmailTemplate(resetUrl, user.name);
const mailOptions = {
from: process.env.SMTP_FROM || 'noreply@miriamgemeinde.de',
to: email,
subject: emailTemplate.subject,
html: emailTemplate.html,
text: emailTemplate.text
};
console.log('=== EMAIL SENDING DEBUG ===');
console.log('From:', mailOptions.from);
console.log('To:', mailOptions.to);
console.log('Subject:', mailOptions.subject);
console.log('Reset URL:', resetUrl);
console.log('===========================');
await transporter.sendMail(mailOptions);
console.log('Password reset email sent to:', email);
return res.status(200).json({ message: 'Falls die E-Mail-Adresse in unserem System registriert ist, erhalten Sie einen Link zum Zurücksetzen des Passworts.' });
} catch (error) {
console.error('Forgot password error:', error);
return res.status(500).json({ message: 'Ein Fehler ist aufgetreten' });
}
};
exports.resetPassword = async (req, res) => {
const { token, password } = req.body;
if (!token || !password) {
return res.status(400).json({ message: 'Token und neues Passwort sind erforderlich' });
}
if (password.length < 6) {
return res.status(400).json({ message: 'Passwort muss mindestens 6 Zeichen lang sein' });
}
try {
// Token validieren
const resetToken = await PasswordResetToken.findOne({
where: {
token,
used: false,
expiresAt: {
[require('sequelize').Op.gt]: new Date()
}
},
include: [{ model: User, as: 'user' }]
});
if (!resetToken) {
return res.status(400).json({ message: 'Ungültiger oder abgelaufener Token' });
}
// Passwort hashen und aktualisieren
const hashedPassword = await bcrypt.hash(password, 10);
await User.update(
{ password: hashedPassword },
{ where: { id: resetToken.userId } }
);
// Token als verwendet markieren
await resetToken.update({ used: true });
console.log('Password reset successful for user:', resetToken.userId);
return res.status(200).json({ message: 'Passwort erfolgreich zurückgesetzt' });
} catch (error) {
console.error('Reset password error:', error);
return res.status(500).json({ message: 'Ein Fehler ist aufgetreten' });
}
};
exports.logout = async (req, res) => {
const authHeader = req.header('Authorization');
if (!authHeader) {
return res.status(400).json({ message: 'Kein Token bereitgestellt' });
}
const token = authHeader.replace('Bearer ', '');
try {
addTokenToBlacklist(token);
return res.status(200).json({ message: 'Logout erfolgreich' });
} catch (error) {
console.log(error);
return res.status(500).json({ message: 'Ein Fehler ist beim Logout aufgetreten' });
}
};

View File

@@ -1,188 +1,32 @@
const { Event, Institution, EventPlace, ContactPerson, EventType } = require('../models'); const EventService = require('../services/EventService');
const { Op } = require('sequelize'); const ErrorHandler = require('../utils/ErrorHandler');
const moment = require('moment'); // Import von Moment.js
const getAllEvents = async (req, res) => { exports.getAllEvents = ErrorHandler.asyncHandler(async (req, res) => {
try { const events = await EventService.getAllEvents();
const events = await Event.findAll({ ErrorHandler.successResponse(res, events, 'Events erfolgreich abgerufen');
include: [ });
{ model: Institution, as: 'institution' },
{ model: EventPlace, as: 'eventPlace' },
{ model: EventType, as: 'eventType' },
{ model: ContactPerson, as: 'contactPersons', through: { attributes: [] } }
],
order: ['name', 'date', 'time']
});
res.json(events);
} catch (error) {
res.status(500).json({ error: 'Failed to fetch events' });
console.error(error);
}
};
const filterEvents = async (req, res) => { exports.getEventById = ErrorHandler.asyncHandler(async (req, res) => {
try { const event = await EventService.getEventById(req.params.id);
const request = req.body; ErrorHandler.successResponse(res, event, 'Event erfolgreich abgerufen');
const where = { });
[Op.or]: [
{
date: {
[Op.or]: [
{ [Op.gte]: moment().startOf('day').toDate() },
{ [Op.eq]: null }
]
}
},
{ dayOfWeek: { [Op.gte]: 0 } }
]
};
const order = [
['date', 'ASC'],
['time', 'ASC']
];
if (request.id === 'all') { exports.filterEvents = ErrorHandler.asyncHandler(async (req, res) => {
const events = await Event.findAll({ const result = await EventService.filterEvents(req.body);
where, ErrorHandler.successResponse(res, result, 'Events erfolgreich gefiltert');
include: [ });
{ model: Institution, as: 'institution' },
{ model: EventPlace, as: 'eventPlace' },
{ model: EventType, as: 'eventType' },
{ model: ContactPerson, as: 'contactPersons', through: { attributes: [] } }
],
order: order,
logging: console.log // Log the generated SQL query
});
return res.json({ events });
}
if (request.id === 'home') { exports.createEvent = ErrorHandler.asyncHandler(async (req, res) => {
const events = await Event.findAll({ const event = await EventService.createEvent(req.body);
where: { ErrorHandler.successResponse(res, event, 'Event erfolgreich erstellt', 201);
alsoOnHomepage: 1, });
date: { [Op.gte]: moment().startOf('day').toDate() }
},
include: [
{ model: Institution, as: 'institution' },
{ model: EventPlace, as: 'eventPlace' },
{ model: EventType, as: 'eventType' },
{ model: ContactPerson, as: 'contactPersons', through: { attributes: [] } },
],
order: order,
});
return res.json({ events });
}
if (!request.id && !request.places && !request.types) { exports.updateEvent = ErrorHandler.asyncHandler(async (req, res) => {
return res.json({ events: [], places: [], types: [], contactPersons: [] }); const event = await EventService.updateEvent(req.params.id, req.body);
} ErrorHandler.successResponse(res, event, 'Event erfolgreich aktualisiert');
});
if (request.id) { exports.deleteEvent = ErrorHandler.asyncHandler(async (req, res) => {
where.id = request.id; const result = await EventService.deleteEvent(req.params.id);
} ErrorHandler.successResponse(res, result, result.message);
});
if (request.places && request.places.length > 0) {
where.event_place_id = {
[Op.in]: request.places.map(id => parseInt(id))
};
}
if (request.types && request.types.length > 0) {
where.eventTypeId = {
[Op.in]: request.types.map(id => parseInt(id))
};
}
const events = await Event.findAll({
where,
include: [
{ model: Institution, as: 'institution' },
{ model: EventPlace, as: 'eventPlace' },
{ model: EventType, as: 'eventType' },
{ model: ContactPerson, as: 'contactPersons', through: { attributes: [] } }
],
order: order,
});
const displayFields = request.display ? request.display : [];
const filteredEvents = events.map(event => {
const filteredEvent = { ...event.toJSON() };
if (!displayFields.includes('name')) delete filteredEvent.name;
if (!displayFields.includes('type')) delete filteredEvent.eventType;
if (!displayFields.includes('place')) delete filteredEvent.eventPlace;
if (!displayFields.includes('description')) delete filteredEvent.description;
if (!displayFields.includes('time')) delete filteredEvent.time;
if (!displayFields.includes('time')) delete filteredEvent.endTime;
if (!displayFields.includes('contactPerson')) delete filteredEvent.contactPersons;
if (!displayFields.includes('day')) delete filteredEvent.dayOfWeek;
if (!displayFields.includes('institution')) delete filteredEvent.institution;
return filteredEvent;
});
res.json({ events: filteredEvents });
} catch (error) {
res.status(500).json({ error: 'Failed to filter events' });
console.error(error);
}
};
const createEvent = async (req, res) => {
try {
const { contactPersonIds, ...eventData } = req.body;
eventData.alsoOnHomepage = eventData.alsoOnHomepage ?? 0;
const event = await Event.create(eventData);
if (contactPersonIds) {
await event.setContactPersons(contactPersonIds);
}
res.status(201).json(event);
} catch (error) {
res.status(500).json({ error: 'Failed to create event' });
console.error(error);
}
};
const updateEvent = async (req, res) => {
try {
const { id } = req.params;
const { contactPersonIds, ...eventData } = req.body;
const event = await Event.findByPk(id);
if (!event) {
return res.status(404).json({ error: 'Event not found' });
}
await event.update(eventData);
if (contactPersonIds) {
await event.setContactPersons(contactPersonIds);
}
res.status(200).json(event);
} catch (error) {
res.status(500).json({ error: 'Failed to update event' });
console.error(error);
}
};
const deleteEvent = async (req, res) => {
try {
const { id } = req.params;
const deleted = await Event.destroy({
where: { id: id }
});
if (deleted) {
res.status(204).json();
} else {
res.status(404).json({ error: 'Event not found' });
}
} catch (error) {
res.status(500).json({ error: 'Failed to delete event' });
console.error(error);
}
};
module.exports = {
getAllEvents,
createEvent,
updateEvent,
deleteEvent,
filterEvents
};

View File

@@ -1,30 +1,12 @@
const { MenuItem } = require('../models'); const MenuDataService = require('../services/MenuDataService');
const fetchMenuData = require('../utils/fetchMenuData'); const ErrorHandler = require('../utils/ErrorHandler');
exports.getMenuData = async (req, res) => { exports.getMenuData = ErrorHandler.asyncHandler(async (req, res) => {
try { const menuData = await MenuDataService.getMenuData();
const menuData = await fetchMenuData(); ErrorHandler.successResponse(res, menuData, 'Menü-Daten erfolgreich abgerufen');
res.json(menuData); });
} catch (error) {
res.status(500).send('Error fetching menu data');
}
};
exports.saveMenuData = async (req, res) => { exports.saveMenuData = ErrorHandler.asyncHandler(async (req, res) => {
try { const result = await MenuDataService.saveMenuData(req.body);
const menuData = req.body; ErrorHandler.successResponse(res, result, result.message);
const adjustedMenuData = menuData.map(item => { });
item.parent_id = item.parent_id < 0 ? null : item.parent_id;
return item;
})
.sort((a, b) => (a.parent_id === null ? -1 : 1) - (b.parent_id === null ? -1 : 1));
await MenuItem.destroy({ where: {} });
for (const item of adjustedMenuData) {
await MenuItem.create(item);
}
res.status(200).send('Menü-Daten erfolgreich gespeichert');
} catch (error) {
console.error('Fehler beim Speichern der Menü-Daten:', error);
res.status(500).send('Fehler beim Speichern der Menü-Daten');
}
};

View File

@@ -1,48 +1,27 @@
// controllers/pageController.js const PageService = require('../services/PageService');
const { Page } = require('../models'); const ErrorHandler = require('../utils/ErrorHandler');
exports.getMenuData = async (req, res) => { exports.getMenuData = ErrorHandler.asyncHandler(async (req, res) => {
try { const pages = await PageService.getAllPages();
const pages = await Page.findAll({ ErrorHandler.successResponse(res, pages, 'Seiten erfolgreich abgerufen');
attributes: ['link', 'name'] });
});
res.json(pages);
} catch (error) {
console.error('Fehler beim Abrufen der Seiten:', error);
res.status(500).json({ message: 'Fehler beim Abrufen der Seiten' });
}
};
exports.getPageContent = async (req, res) => { exports.getPageContent = ErrorHandler.asyncHandler(async (req, res) => {
try { const result = await PageService.getPageContent(req.query.link);
const page = await Page.findOne({ ErrorHandler.successResponse(res, result, 'Seiteninhalt erfolgreich abgerufen');
where: { link: req.query.link } });
});
if (page) {
res.json({ content: page.content });
} else {
res.json({ content: "" });
}
} catch (error) {
console.error('Fehler beim Laden des Seiteninhalts:', error);
res.status(500).json({ message: 'Fehler beim Laden des Seiteninhalts' });
}
};
exports.savePageContent = async (req, res) => { exports.savePageContent = ErrorHandler.asyncHandler(async (req, res) => {
try { const result = await PageService.savePageContent(req.body);
const { link, name, content } = req.body; ErrorHandler.successResponse(res, result, result.message);
let page = await Page.findOne({ where: { link } }); });
if (page) {
page.content = content; exports.getPageById = ErrorHandler.asyncHandler(async (req, res) => {
page.name = name; const page = await PageService.getPageById(req.params.id);
} else { ErrorHandler.successResponse(res, page, 'Seite erfolgreich abgerufen');
page = await Page.create({ link, name, content }); });
}
await page.save(); exports.deletePage = ErrorHandler.asyncHandler(async (req, res) => {
res.json({ message: 'Seiteninhalt gespeichert', page }); const result = await PageService.deletePage(req.params.id);
} catch (error) { ErrorHandler.successResponse(res, result, result.message);
console.error('Fehler beim Speichern des Seiteninhalts:', error); });
res.status(500).json({ message: 'Fehler beim Speichern des Seiteninhalts' });
}
};

View File

@@ -1,104 +1,42 @@
const { User } = require('../models'); const UserService = require('../services/UserService');
const UserValidator = require('../validators/UserValidator');
const ErrorHandler = require('../utils/ErrorHandler');
exports.getAllUsers = async (req, res) => { exports.getAllUsers = ErrorHandler.asyncHandler(async (req, res) => {
try { const users = await UserService.getAllUsers();
const users = await User.findAll({ ErrorHandler.successResponse(res, users, 'Benutzer erfolgreich abgerufen');
order: [['name', 'ASC']], });
attributes: ['id', 'name', 'email', 'active', 'created_at'] // Passwort ausschließen
});
res.status(200).json(users);
} catch (error) {
console.error('Error fetching users:', error);
res.status(500).json({ message: 'Error fetching users' });
}
};
exports.getUserById = async (req, res) => { exports.getUserById = ErrorHandler.asyncHandler(async (req, res) => {
try { UserValidator.validateId(req.params.id);
const user = await User.findByPk(req.params.id, { const user = await UserService.getUserById(req.params.id);
attributes: ['id', 'name', 'email', 'active', 'created_at'] // Passwort ausschließen ErrorHandler.successResponse(res, user, 'Benutzer erfolgreich abgerufen');
}); });
if (user) {
res.status(200).json(user);
} else {
res.status(404).json({ message: 'User not found' });
}
} catch (error) {
console.error('Error fetching user:', error);
res.status(500).json({ message: 'Error fetching user' });
}
};
exports.createUser = async (req, res) => { exports.createUser = ErrorHandler.asyncHandler(async (req, res) => {
try { UserValidator.validateCreateUser(req.body);
const user = await User.create(req.body); const user = await UserService.createUser(req.body);
ErrorHandler.successResponse(res, user, 'Benutzer erfolgreich erstellt', 201);
// Sichere User-Daten zurückgeben (ohne Passwort) });
const safeUser = {
id: user.id,
name: user.name,
email: user.email,
active: user.active,
created_at: user.created_at
};
res.status(201).json(safeUser);
} catch (error) {
console.error('Error creating user:', error);
res.status(500).json({ message: 'Error creating user' });
}
};
exports.updateUser = async (req, res) => { exports.updateUser = ErrorHandler.asyncHandler(async (req, res) => {
try { UserValidator.validateId(req.params.id);
const user = await User.findByPk(req.params.id); UserValidator.validateUpdateUser(req.body);
if (user) { const user = await UserService.updateUser(req.params.id, req.body);
// Erstelle eine Kopie der Request-Daten ohne sensible Felder ErrorHandler.successResponse(res, user, 'Benutzer erfolgreich aktualisiert');
const updateData = { ...req.body }; });
// Entferne sensible Felder, die niemals über diese Route geändert werden dürfen
delete updateData.password;
delete updateData.id;
delete updateData.created_at;
// Setze updated_at auf aktuelle Zeit
updateData.updated_at = new Date();
// Logging für Debugging
console.log('Updating user:', req.params.id, 'with data:', updateData);
await user.update(updateData);
// Sichere User-Daten zurückgeben (ohne Passwort)
const safeUser = {
id: user.id,
name: user.name,
email: user.email,
active: user.active,
created_at: user.created_at
};
res.status(200).json(safeUser);
} else {
res.status(404).json({ message: 'User not found' });
}
} catch (error) {
console.error('Error updating user:', error);
res.status(500).json({ message: 'Error updating user' });
}
};
exports.deleteUser = async (req, res) => { exports.deleteUser = ErrorHandler.asyncHandler(async (req, res) => {
try { UserValidator.validateId(req.params.id);
const user = await User.findByPk(req.params.id); await UserService.deleteUser(req.params.id);
if (user) { ErrorHandler.successResponse(res, null, 'Benutzer erfolgreich gelöscht');
await user.destroy(); });
res.status(200).json({ message: 'User deleted successfully' });
} else { // Neue Route für Passwort-Änderung
res.status(404).json({ message: 'User not found' }); exports.changePassword = ErrorHandler.asyncHandler(async (req, res) => {
} const { currentPassword, newPassword } = req.body;
} catch (error) { UserValidator.validateId(req.params.id);
console.error('Error deleting user:', error); UserValidator.validatePasswordChange(currentPassword, newPassword);
res.status(500).json({ message: 'Error deleting user' }); await UserService.changePassword(req.params.id, currentPassword, newPassword);
} ErrorHandler.successResponse(res, null, 'Passwort erfolgreich geändert');
}; });

View File

@@ -5,7 +5,7 @@
"scripts": { "scripts": {
"serve": "vue-cli-service serve", "serve": "vue-cli-service serve",
"build": "vue-cli-service build && npm run copy-dist", "build": "vue-cli-service build && npm run copy-dist",
"copy-dist": "cp -r dist/* public/", "copy-dist": "rm -rf public/* && cp -r dist/* public/",
"lint": "vue-cli-service lint" "lint": "vue-cli-service lint"
}, },
"dependencies": { "dependencies": {

View File

@@ -0,0 +1 @@
.privacy-policy[data-v-91660a08]{max-width:800px;margin:auto;padding:20px}h1[data-v-91660a08],h2[data-v-91660a08],h3[data-v-91660a08],h4[data-v-91660a08],h5[data-v-91660a08]{margin-top:20px;color:#333}p[data-v-91660a08]{line-height:1.6}ul[data-v-91660a08]{margin:10px 0;padding-left:20px}ul li[data-v-91660a08]{list-style-type:disc}a[data-v-91660a08]{color:#007bff;text-decoration:none}a[data-v-91660a08]:hover{text-decoration:underline}

View File

@@ -0,0 +1 @@
table.worships[data-v-6bd31626]{border-collapse:collapse;width:100%}table.worships td[data-v-6bd31626]{border:1px solid #000;text-align:center}h3[data-v-6bd31626]{margin:0}table.worships td div[data-v-6bd31626]{margin:5px}.highlight-time[data-v-6bd31626]{text-decoration:underline}.neighborhood-invitation[data-v-6bd31626]{font-weight:700;color:#0020e0}a[data-v-6bd31626]{color:#0020e0}.internal-information[data-v-6bd31626]{color:#e45;font-style:italic}.image[data-v-9b711a1e]{max-width:400px;max-height:300px}.event-name[data-v-708e6f45]{font-weight:700}.event-table[data-v-708e6f45]{border-collapse:collapse}.event-table td[data-v-708e6f45]{border:1px solid #000}.homepage[data-v-708e6f45]{border:1px solid #9400ff;padding:.5em;text-align:center}.description[data-v-708e6f45]{padding:.5em 0}.event-image>img[data-v-708e6f45]{max-width:12em;max-height:12em}.contact-box p[data-v-0cc91918]{margin:0}.bottom-margin[data-v-0cc91918]{margin-bottom:1rem}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}

View 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}

View 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}

View 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}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
.dialog-overlay[data-v-64c2e06a]{top:calc(50% - 25em);left:5%;width:90%;height:50em;background:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;overflow:auto}.dialog[data-v-64c2e06a]{background:#fff;padding:20px;border-radius:5px;max-width:400px;width:100%;text-align:center}button[data-v-64c2e06a]{margin-top:20px}

View 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%}

View 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}

View 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}

View 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%}

View 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%}

View 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}

View File

@@ -0,0 +1 @@
.privacy-policy[data-v-91660a08]{max-width:800px;margin:auto;padding:20px}h1[data-v-91660a08],h2[data-v-91660a08],h3[data-v-91660a08],h4[data-v-91660a08],h5[data-v-91660a08]{margin-top:20px;color:#333}p[data-v-91660a08]{line-height:1.6}ul[data-v-91660a08]{margin:10px 0;padding-left:20px}ul li[data-v-91660a08]{list-style-type:disc}a[data-v-91660a08]{color:#007bff;text-decoration:none}a[data-v-91660a08]:hover{text-decoration:underline}

View 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}

View File

@@ -0,0 +1 @@
div[data-v-334e7b82]{padding:20px}

View 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%}

View 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}

View File

@@ -0,0 +1 @@
.dialog-overlay[data-v-64c2e06a]{top:calc(50% - 25em);left:5%;width:90%;height:50em;background:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;overflow:auto}.dialog[data-v-64c2e06a]{background:#fff;padding:20px;border-radius:5px;max-width:400px;width:100%;text-align:center}button[data-v-64c2e06a]{margin-top:20px}

View 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%}

View 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}

View 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}

View 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}

View File

@@ -0,0 +1 @@
.dialog-overlay[data-v-64c2e06a]{top:calc(50% - 25em);left:5%;width:90%;height:50em;background:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;overflow:auto}.dialog[data-v-64c2e06a]{background:#fff;padding:20px;border-radius:5px;max-width:400px;width:100%;text-align:center}button[data-v-64c2e06a]{margin-top:20px}.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}

View 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%}

View File

@@ -0,0 +1 @@
.impressum[data-v-612786fa]{max-width:800px;margin:auto;padding:20px}h1[data-v-612786fa],h2[data-v-612786fa],h3[data-v-612786fa],h4[data-v-612786fa]{margin-top:20px;color:#333}p[data-v-612786fa]{line-height:1.6}a[data-v-612786fa]{color:#007bff;text-decoration:none}a[data-v-612786fa]:hover{text-decoration:underline}

File diff suppressed because one or more lines are too long

View 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}

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 @@
.dialog-overlay[data-v-64c2e06a]{top:calc(50% - 25em);left:5%;width:90%;height:50em;background:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;overflow:auto}.dialog[data-v-64c2e06a]{background:#fff;padding:20px;border-radius:5px;max-width:400px;width:100%;text-align:center}button[data-v-64c2e06a]{margin-top:20px}.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}

View 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}

View 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}

File diff suppressed because one or more lines are too long

View 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}

View File

@@ -0,0 +1 @@
table.worships[data-v-6bd31626]{border-collapse:collapse;width:100%}table.worships td[data-v-6bd31626]{border:1px solid #000;text-align:center}h3[data-v-6bd31626]{margin:0}table.worships td div[data-v-6bd31626]{margin:5px}.highlight-time[data-v-6bd31626]{text-decoration:underline}.neighborhood-invitation[data-v-6bd31626]{font-weight:700;color:#0020e0}a[data-v-6bd31626]{color:#0020e0}.internal-information[data-v-6bd31626]{color:#e45;font-style:italic}.image[data-v-9b711a1e]{max-width:400px;max-height:300px}.event-name[data-v-708e6f45]{font-weight:700}.event-table[data-v-708e6f45]{border-collapse:collapse}.event-table td[data-v-708e6f45]{border:1px solid #000}.homepage[data-v-708e6f45]{border:1px solid #9400ff;padding:.5em;text-align:center}.description[data-v-708e6f45]{padding:.5em 0}.event-image>img[data-v-708e6f45]{max-width:12em;max-height:12em}.contact-box p[data-v-0cc91918]{margin:0}.bottom-margin[data-v-0cc91918]{margin-bottom:1rem}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}

View File

@@ -0,0 +1 @@
table.worships[data-v-6bd31626]{border-collapse:collapse;width:100%}table.worships td[data-v-6bd31626]{border:1px solid #000;text-align:center}h3[data-v-6bd31626]{margin:0}table.worships td div[data-v-6bd31626]{margin:5px}.highlight-time[data-v-6bd31626]{text-decoration:underline}.neighborhood-invitation[data-v-6bd31626]{font-weight:700;color:#0020e0}a[data-v-6bd31626]{color:#0020e0}.internal-information[data-v-6bd31626]{color:#e45;font-style:italic}.image[data-v-9b711a1e]{max-width:400px;max-height:300px}.event-name[data-v-708e6f45]{font-weight:700}.event-table[data-v-708e6f45]{border-collapse:collapse}.event-table td[data-v-708e6f45]{border:1px solid #000}.homepage[data-v-708e6f45]{border:1px solid #9400ff;padding:.5em;text-align:center}.description[data-v-708e6f45]{padding:.5em 0}.event-image>img[data-v-708e6f45]{max-width:12em;max-height:12em}.contact-box p[data-v-0cc91918]{margin:0}.bottom-margin[data-v-0cc91918]{margin-bottom:1rem}span[data-v-2bbf7aa9]{cursor:pointer;color:blue;text-decoration:underline}

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 @@
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}

View File

@@ -0,0 +1 @@
div[data-v-334e7b82]{padding:20px}

View File

@@ -0,0 +1 @@
table.worships[data-v-6bd31626]{border-collapse:collapse;width:100%}table.worships td[data-v-6bd31626]{border:1px solid #000;text-align:center}h3[data-v-6bd31626]{margin:0}table.worships td div[data-v-6bd31626]{margin:5px}.highlight-time[data-v-6bd31626]{text-decoration:underline}.neighborhood-invitation[data-v-6bd31626]{font-weight:700;color:#0020e0}a[data-v-6bd31626]{color:#0020e0}.internal-information[data-v-6bd31626]{color:#e45;font-style:italic}.image[data-v-9b711a1e]{max-width:400px;max-height:300px}.event-name[data-v-708e6f45]{font-weight:700}.event-table[data-v-708e6f45]{border-collapse:collapse}.event-table td[data-v-708e6f45]{border:1px solid #000}.homepage[data-v-708e6f45]{border:1px solid #9400ff;padding:.5em;text-align:center}.description[data-v-708e6f45]{padding:.5em 0}.event-image>img[data-v-708e6f45]{max-width:12em;max-height:12em}.contact-box p[data-v-0cc91918]{margin:0}.bottom-margin[data-v-0cc91918]{margin-bottom:1rem}span[data-v-2bbf7aa9]{cursor:pointer;color:blue;text-decoration:underline}

File diff suppressed because one or more lines are too long

View 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}

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 @@
.navbar[data-v-3c558f6e]{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-3c558f6e]{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-3c558f6e]{list-style-type:none;margin:0;padding:0;display:flex}.navbar li[data-v-3c558f6e]{position:relative}.navbar a[data-v-3c558f6e],.navbar li>span[data-v-3c558f6e]{display:block;color:#fff;text-align:center;padding:6px 20px;text-decoration:none;font-weight:700}.navbar a[data-v-3c558f6e]:hover{background-color:#7a00d1}.menu-icon[data-v-3c558f6e]{width:20px;height:20px;margin-right:5px}.dropdown-content[data-v-3c558f6e]{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-3c558f6e]{color:#fff;padding:12px 16px;text-decoration:none;display:block;text-align:left}.dropdown-content a[data-v-3c558f6e]:hover{background-color:#7a00d1}.navbar li:hover .dropdown-content[data-v-3c558f6e]{opacity:1;visibility:visible}.fade-enter-active[data-v-3c558f6e],.fade-leave-active[data-v-3c558f6e]{transition:opacity .2s ease-in-out,visibility .2s ease-in-out}.fade-enter[data-v-3c558f6e],.fade-leave-to[data-v-3c558f6e]{opacity:0;visibility:hidden}@media (max-width:768px){.navbar ul[data-v-3c558f6e],.navbar[data-v-3c558f6e]{flex-direction:column}.navbar li[data-v-3c558f6e]{width:100%}.navbar a[data-v-3c558f6e],.navbar li>span[data-v-3c558f6e]{text-align:left;padding:14px 20px}.menu-toggle[data-v-3c558f6e]{display:block}.dropdown-content[data-v-3c558f6e]{position:static;box-shadow:none;opacity:1;visibility:visible;display:none;padding-left:1em}.navbar li:hover .dropdown-content[data-v-3c558f6e]{display:block}}.pointer[data-v-3c558f6e]{cursor:pointer}.facettenkreuz[data-v-3c558f6e]{max-width:30px;max-height:30px;position:fixed}.ekhnlogo[data-v-3c558f6e]{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-65c666da]{background-color:#0b1735;bottom:0;left:0;width:100%;padding:7px;justify-content:space-between}.footer[data-v-65c666da],.left-links[data-v-65c666da],.right-links[data-v-65c666da]{display:flex;align-items:center}.footer a[data-v-65c666da]{color:#fff;padding-right:20px;text-decoration:none}.footer a.login-link[data-v-65c666da]{color:#444}.footer a.logout-link[data-v-65c666da]{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}

View File

@@ -1 +1,19 @@
<!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.4be41350.js"></script>
<script defer="defer" src="/js/app.09342435.js"></script>
<link href="/css/app.d740bb01.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>

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

@@ -0,0 +1,2 @@
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[150],{3909:function(e,t,n){n.r(t),n.d(t,{default:function(){return f}});var a=n(641),s=n(33);const i=e=>((0,a.Qi)("data-v-9a71cbf6"),e=e(),(0,a.jt)(),e),u=i((()=>(0,a.Lk)("div",{class:"previewinfo"},"Dies ist eine Vorschau.",-1)));function o(e,t,n,i,o,r){const c=(0,a.g2)("RenderContentComponent");return(0,a.uX)(),(0,a.CE)("div",null,[u,(0,a.Lk)("h1",null,(0,s.v_)(i.title),1),(0,a.bF)(c,{content:i.content},null,8,["content"])])}var r=n(6278),c=n(1708),l={name:"PagePreview",components:{RenderContentComponent:c.A},setup(){const e=(0,r.Pj)(),t=(0,a.EW)((()=>e.state.pageContent)),n=(0,a.EW)((()=>e.state.selectedPage)),s=(0,a.EW)((()=>e.state.menuData)),i=(0,a.EW)((()=>e.state.pageTitle)),u=t=>{const n=(e,t)=>{for(const a of e){if(a.link===t)return a.pageTitle||a.name;if(a.submenu&&a.submenu.length>0){const e=n(a.submenu,t);if(e)return e}}return""};e.dispatch("setPageTitle",n(s.value,t))};return(0,a.nT)((()=>{u(n.value)})),{content:t,title:i}}},m=n(6262);const d=(0,m.A)(l,[["render",o],["__scopeId","data-v-9a71cbf6"]]);var f=d}}]);
//# sourceMappingURL=150.927ca906.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"js/150.927ca906.js","mappings":"mQAEIA,EAAAA,EAAAA,IAAsD,OAAjDC,MAAM,eAAc,2BAAuB,K,qFADlDC,EAAAA,EAAAA,IAIM,YAHJC,GACAH,EAAAA,EAAAA,IAAoB,WAAAI,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,KAAS,IAAMF,EAAMG,MAAMC,cACrCC,GAAeH,EAAAA,EAAAA,KAAS,IAAMF,EAAMG,MAAME,eAC1CC,GAAWJ,EAAAA,EAAAA,KAAS,IAAMF,EAAMG,MAAMG,WACtCd,GAAQU,EAAAA,EAAAA,KAAS,IAAMF,EAAMG,MAAMI,YAEnCC,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,EAAE,EAEXf,EAAMgB,SAAS,eAAgBN,EAAUJ,EAASW,MAAOR,GAAM,EAOjE,OAJAS,EAAAA,EAAAA,KAAY,KACVV,EAASH,EAAaY,MAAM,IAGvB,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":["_createElementVNode","class","_createElementBlock","_hoisted_1","_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"],"sourceRoot":""}

View File

@@ -0,0 +1,2 @@
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[183],{8183:function(e,r,t){t.r(r),t.d(r,{default:function(){return y}});var s=t(641),n=t(33),a=t(3751);const i=e=>((0,s.Qi)("data-v-a495c756"),e=e(),(0,s.jt)(),e),u={class:"user-administration"},l=i((()=>(0,s.Lk)("h1",null,"Benutzerverwaltung",-1))),o=i((()=>(0,s.Lk)("label",{for:"name"},"Name:",-1))),c=i((()=>(0,s.Lk)("label",{for:"email"},"Email:",-1))),d=i((()=>(0,s.Lk)("label",{for:"password"},"Passwort:",-1))),m=["required"],h=i((()=>(0,s.Lk)("label",{for:"active"},"Aktiv:",-1))),p={type:"submit"},U={key:1},k=i((()=>(0,s.Lk)("h2",null,"Vorhandene Benutzer",-1))),v=["onClick"];function b(e,r,t,i,b,C){return(0,s.uX)(),(0,s.CE)("div",u,[l,(0,s.Lk)("h2",null,(0,n.v_)(C.formTitle),1),(0,s.Lk)("form",{onSubmit:r[4]||(r[4]=(0,a.D$)(((...e)=>C.saveUser&&C.saveUser(...e)),["prevent"]))},[o,(0,s.bo)((0,s.Lk)("input",{id:"name","onUpdate:modelValue":r[0]||(r[0]=e=>b.currentUser.name=e),required:""},null,512),[[a.Jo,b.currentUser.name]]),c,(0,s.bo)((0,s.Lk)("input",{id:"email","onUpdate:modelValue":r[1]||(r[1]=e=>b.currentUser.email=e),type:"email",required:""},null,512),[[a.Jo,b.currentUser.email]]),d,(0,s.bo)((0,s.Lk)("input",{id:"password","onUpdate:modelValue":r[2]||(r[2]=e=>b.currentUser.password=e),type:"password",required:b.isCreating},null,8,m),[[a.Jo,b.currentUser.password]]),(0,s.Lk)("div",null,[h,(0,s.bo)((0,s.Lk)("input",{id:"active","onUpdate:modelValue":r[3]||(r[3]=e=>b.currentUser.active=e),type:"checkbox"},null,512),[[a.lH,b.currentUser.active]])]),(0,s.Lk)("button",p,(0,n.v_)(b.isCreating?"Erstellen":"Aktualisieren"),1)],32),b.isCreating?(0,s.Q3)("",!0):((0,s.uX)(),(0,s.CE)("button",{key:0,onClick:r[5]||(r[5]=(...e)=>C.resetForm&&C.resetForm(...e))},"Zurück zu Benutzer erstellen")),b.users.length?((0,s.uX)(),(0,s.CE)("div",U,[k,(0,s.Lk)("ul",null,[((0,s.uX)(!0),(0,s.CE)(s.FK,null,(0,s.pI)(b.users,(e=>((0,s.uX)(),(0,s.CE)("li",{key:e.id,onClick:r=>C.editUser(e)},(0,n.v_)(e.name)+" ("+(0,n.v_)(e.email)+") ",9,v)))),128))])])):(0,s.Q3)("",!0)])}var C=t(3173),f={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 C.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 C.A.post("/users",this.currentUser)}catch(e){console.error("Fehler beim Erstellen des Benutzers:",e)}},async updateUser(){try{await C.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()}},w=t(6262);const L=(0,w.A)(f,[["render",b],["__scopeId","data-v-a495c756"]]);var y=L}}]);
//# sourceMappingURL=183.0b8efb45.js.map

File diff suppressed because one or more lines are too long

View 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 C}});var l=n(641),a=n(3751),i=n(33);const d=e=>((0,l.Qi)("data-v-4e6631f7"),e=e(),(0,l.jt)(),e),c={class:"event-places-management"},o=d((()=>(0,l.Lk)("h2",null,"Veranstaltungsorte verwalten",-1))),r=d((()=>(0,l.Lk)("label",{for:"name"},"Name:",-1))),s=d((()=>(0,l.Lk)("label",{for:"street"},"Straße:",-1))),u=d((()=>(0,l.Lk)("label",{for:"zipcode"},"PLZ:",-1))),p=d((()=>(0,l.Lk)("label",{for:"city"},"Stadt:",-1))),v=d((()=>(0,l.Lk)("label",{for:"city"},"Webseite:",-1))),k=d((()=>(0,l.Lk)("label",{for:"backgroundColor"},"Hintergrundfarbe:",-1))),h=d((()=>(0,l.Lk)("button",{type:"submit"},"Speichern",-1))),b=d((()=>(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))),P=["onClick"],f=["onClick"];function E(e,t,n,d,E,m){return(0,l.uX)(),(0,l.CE)("div",c,[o,(0,l.Lk)("form",{onSubmit:t[7]||(t[7]=(0,a.D$)(((...e)=>m.addEventPlace&&m.addEventPlace(...e)),["prevent"]))},[r,(0,l.bo)((0,l.Lk)("input",{type:"text",id:"name","onUpdate:modelValue":t[0]||(t[0]=e=>E.newEventPlace.name=e),placeholder:"Name",required:""},null,512),[[a.Jo,E.newEventPlace.name]]),s,(0,l.bo)((0,l.Lk)("input",{type:"text",id:"street","onUpdate:modelValue":t[1]||(t[1]=e=>E.newEventPlace.street=e),placeholder:"Straße",required:""},null,512),[[a.Jo,E.newEventPlace.street]]),u,(0,l.bo)((0,l.Lk)("input",{type:"text",id:"zipcode","onUpdate:modelValue":t[2]||(t[2]=e=>E.newEventPlace.zipcode=e),placeholder:"PLZ",required:""},null,512),[[a.Jo,E.newEventPlace.zipcode]]),p,(0,l.bo)((0,l.Lk)("input",{type:"text",id:"city","onUpdate:modelValue":t[3]||(t[3]=e=>E.newEventPlace.city=e),placeholder:"Stadt",required:""},null,512),[[a.Jo,E.newEventPlace.city]]),v,(0,l.bo)((0,l.Lk)("input",{type:"text",id:"website","onUpdate:modelValue":t[4]||(t[4]=e=>E.newEventPlace.website=e),placeholder:"Webseite",required:""},null,512),[[a.Jo,E.newEventPlace.website]]),k,(0,l.bo)((0,l.Lk)("input",{type:"color",id:"backgroundColor","onUpdate:modelValue":t[5]||(t[5]=e=>E.newEventPlace.backgroundColor=e)},null,512),[[a.Jo,E.newEventPlace.backgroundColor]]),h,E.editMode?((0,l.uX)(),(0,l.CE)("button",{key:0,type:"button",onClick:t[6]||(t[6]=(...e)=>m.resetForm&&m.resetForm(...e))},"Neuen Veranstaltungsort erstellen")):(0,l.Q3)("",!0)],32),(0,l.Lk)("table",null,[b,(0,l.Lk)("tbody",null,[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(E.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=>m.editEventPlace(e)},"Bearbeiten",8,P)]),(0,l.Lk)("td",null,[(0,l.Lk)("button",{onClick:t=>m.deleteEventPlace(e.id)},"Löschen",8,f)])])))),128))])])])}n(4114);var m=n(4335),w={data(){return{eventPlaces:[],newEventPlace:{name:"",street:"",zipcode:"",city:"",backgroundColor:"#ffffff",website:""},editMode:!1,editId:null}},methods:{async fetchEventPlaces(){const e=await m.A.get("/event-places");this.eventPlaces=e.data},async addEventPlace(){if(this.editMode)await m.A.put(`/event-places/${this.editId}`,this.newEventPlace);else{const e=await m.A.post("/event-places",this.newEventPlace);this.eventPlaces.push(e.data)}this.resetForm(),await this.fetchEventPlaces()},async updateEventPlace(e){await m.A.put(`/event-places/${e.id}`,e),this.fetchEventPlaces()},async deleteEventPlace(e){await m.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()}},L=n(6262);const y=(0,L.A)(w,[["render",E],["__scopeId","data-v-4e6631f7"]]);var C=y}}]);
//# sourceMappingURL=187.7a1ca760.js.map

File diff suppressed because one or more lines are too long

View 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 C}});var l=n(641),a=n(3751),i=n(33);const d=e=>((0,l.Qi)("data-v-4e6631f7"),e=e(),(0,l.jt)(),e),c={class:"event-places-management"},o=d((()=>(0,l.Lk)("h2",null,"Veranstaltungsorte verwalten",-1))),r=d((()=>(0,l.Lk)("label",{for:"name"},"Name:",-1))),s=d((()=>(0,l.Lk)("label",{for:"street"},"Straße:",-1))),u=d((()=>(0,l.Lk)("label",{for:"zipcode"},"PLZ:",-1))),p=d((()=>(0,l.Lk)("label",{for:"city"},"Stadt:",-1))),v=d((()=>(0,l.Lk)("label",{for:"city"},"Webseite:",-1))),k=d((()=>(0,l.Lk)("label",{for:"backgroundColor"},"Hintergrundfarbe:",-1))),h=d((()=>(0,l.Lk)("button",{type:"submit"},"Speichern",-1))),b=d((()=>(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))),P=["onClick"],f=["onClick"];function E(e,t,n,d,E,m){return(0,l.uX)(),(0,l.CE)("div",c,[o,(0,l.Lk)("form",{onSubmit:t[7]||(t[7]=(0,a.D$)(((...e)=>m.addEventPlace&&m.addEventPlace(...e)),["prevent"]))},[r,(0,l.bo)((0,l.Lk)("input",{type:"text",id:"name","onUpdate:modelValue":t[0]||(t[0]=e=>E.newEventPlace.name=e),placeholder:"Name",required:""},null,512),[[a.Jo,E.newEventPlace.name]]),s,(0,l.bo)((0,l.Lk)("input",{type:"text",id:"street","onUpdate:modelValue":t[1]||(t[1]=e=>E.newEventPlace.street=e),placeholder:"Straße",required:""},null,512),[[a.Jo,E.newEventPlace.street]]),u,(0,l.bo)((0,l.Lk)("input",{type:"text",id:"zipcode","onUpdate:modelValue":t[2]||(t[2]=e=>E.newEventPlace.zipcode=e),placeholder:"PLZ",required:""},null,512),[[a.Jo,E.newEventPlace.zipcode]]),p,(0,l.bo)((0,l.Lk)("input",{type:"text",id:"city","onUpdate:modelValue":t[3]||(t[3]=e=>E.newEventPlace.city=e),placeholder:"Stadt",required:""},null,512),[[a.Jo,E.newEventPlace.city]]),v,(0,l.bo)((0,l.Lk)("input",{type:"text",id:"website","onUpdate:modelValue":t[4]||(t[4]=e=>E.newEventPlace.website=e),placeholder:"Webseite",required:""},null,512),[[a.Jo,E.newEventPlace.website]]),k,(0,l.bo)((0,l.Lk)("input",{type:"color",id:"backgroundColor","onUpdate:modelValue":t[5]||(t[5]=e=>E.newEventPlace.backgroundColor=e)},null,512),[[a.Jo,E.newEventPlace.backgroundColor]]),h,E.editMode?((0,l.uX)(),(0,l.CE)("button",{key:0,type:"button",onClick:t[6]||(t[6]=(...e)=>m.resetForm&&m.resetForm(...e))},"Neuen Veranstaltungsort erstellen")):(0,l.Q3)("",!0)],32),(0,l.Lk)("table",null,[b,(0,l.Lk)("tbody",null,[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(E.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=>m.editEventPlace(e)},"Bearbeiten",8,P)]),(0,l.Lk)("td",null,[(0,l.Lk)("button",{onClick:t=>m.deleteEventPlace(e.id)},"Löschen",8,f)])])))),128))])])])}n(4114);var m=n(4335),w={data(){return{eventPlaces:[],newEventPlace:{name:"",street:"",zipcode:"",city:"",backgroundColor:"#ffffff",website:""},editMode:!1,editId:null}},methods:{async fetchEventPlaces(){const e=await m.A.get("/event-places");this.eventPlaces=e.data},async addEventPlace(){if(this.editMode)await m.A.put(`/event-places/${this.editId}`,this.newEventPlace);else{const e=await m.A.post("/event-places",this.newEventPlace);this.eventPlaces.push(e.data)}this.resetForm(),await this.fetchEventPlaces()},async updateEventPlace(e){await m.A.put(`/event-places/${e.id}`,e),this.fetchEventPlaces()},async deleteEventPlace(e){await m.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()}},L=n(6262);const y=(0,L.A)(w,[["render",E],["__scopeId","data-v-4e6631f7"]]);var C=y}}]);
//# sourceMappingURL=187.83b148e8.js.map

File diff suppressed because one or more lines are too long

2
public/js/23.179aa174.js Normal file
View File

@@ -0,0 +1,2 @@
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[23],{2023:function(e,n,t){t.r(n),t.d(n,{default:function(){return k}});var u=t(641),r=t(33);const i=e=>((0,u.Qi)("data-v-68b32234"),e=e(),(0,u.jt)(),e),a=i((()=>(0,u.Lk)("h1",null,"Seitenpflege",-1))),l=i((()=>(0,u.Lk)("p",null,"Herzlich Willkommen. Auf diesen Seiten können Sie die Inhalte der Webseiten pflegen.",-1)));function o(e,n,t,i,o,d){const s=(0,u.g2)("router-link");return(0,u.uX)(),(0,u.CE)("div",null,[a,l,(0,u.Lk)("ul",null,[((0,u.uX)(!0),(0,u.CE)(u.FK,null,(0,u.pI)(i.adminSubmenu,(e=>((0,u.uX)(),(0,u.CE)("li",{key:e.id},[(0,u.bF)(s,{to:e.link},{default:(0,u.k6)((()=>[(0,u.eW)((0,r.v_)(e.name),1)])),_:2},1032,["to"])])))),128))])])}t(8992),t(2577);var d=t(6296),s=t(953),c={name:"DefaultComponent",setup(){const e=(0,s.KR)([]),n=async()=>{try{const n=await d.A.get("/menu-data"),t=n.data,u=t.find((e=>"Admin"===e.name));u&&(e.value=u.submenu)}catch(n){console.error("Fehler beim Abrufen der Menü-Daten:",n)}};return(0,u.sV)((()=>{n()})),{adminSubmenu:e}}},m=t(6262);const f=(0,m.A)(c,[["render",o],["__scopeId","data-v-68b32234"]]);var k=f},2577:function(e,n,t){var u=t(6518),r=t(2652),i=t(9306),a=t(8551),l=t(1767);u({target:"Iterator",proto:!0,real:!0},{find:function(e){a(this),i(e);var n=l(this),t=0;return r(n,(function(n,u){if(e(n,t++))return u(n)}),{IS_RECORD:!0,INTERRUPTED:!0}).result}})}}]);
//# sourceMappingURL=23.179aa174.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"js/23.179aa174.js","mappings":"kQAEIA,EAAAA,EAAAA,IAAqB,UAAjB,gBAAY,K,UAChBA,EAAAA,EAAAA,IAA2F,SAAxF,wFAAoF,K,0EAFzFC,EAAAA,EAAAA,IAQM,YAPJC,EACAC,GACAH,EAAAA,EAAAA,IAIK,a,aAHHC,EAAAA,EAAAA,IAEKG,EAAAA,GAAA,MAPXC,EAAAA,EAAAA,IAKyBC,EAAAC,cAARC,K,WAAXP,EAAAA,EAAAA,IAEK,MAF6BQ,IAAKD,EAAKE,I,EAC1CC,EAAAA,EAAAA,IAA0DC,EAAA,CAA5CC,GAAIL,EAAKM,M,CAN/BC,SAAAC,EAAAA,EAAAA,KAMqC,IAAe,EANpDC,EAAAA,EAAAA,KAAAC,EAAAA,EAAAA,IAMwCV,EAAKW,MAAI,MANjDC,EAAA,G,mEAgBA,GACED,KAAM,mBACNE,KAAAA,GACE,MAAMd,GAAee,EAAAA,EAAAA,IAAI,IAEnBC,EAAgBC,UACpB,IACE,MAAMC,QAAiBC,EAAAA,EAAMC,IAAI,cAC3BC,EAAWH,EAASI,KAGpBC,EAAYF,EAASG,MAAKvB,GAAsB,UAAdA,EAAKW,OACzCW,IACFvB,EAAayB,MAAQF,EAAUG,QAEnC,CAAE,MAAOC,GACPC,QAAQD,MAAM,sCAAuCA,EACvD,GAOF,OAJAE,EAAAA,EAAAA,KAAU,KACRb,GAAe,IAGV,CACLhB,eAEJ,G,UCpCF,MAAM8B,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASC,GAAQ,CAAC,YAAY,qBAEzF,O,uBCRA,IAAIC,EAAI,EAAQ,MACZC,EAAU,EAAQ,MAClBC,EAAY,EAAQ,MACpBC,EAAW,EAAQ,MACnBC,EAAoB,EAAQ,MAIhCJ,EAAE,CAAEK,OAAQ,WAAYC,OAAO,EAAMC,MAAM,GAAQ,CACjDf,KAAM,SAAcgB,GAClBL,EAASM,MACTP,EAAUM,GACV,IAAIE,EAASN,EAAkBK,MAC3BE,EAAU,EACd,OAAOV,EAAQS,GAAQ,SAAUjB,EAAOmB,GACtC,GAAIJ,EAAUf,EAAOkB,KAAY,OAAOC,EAAKnB,EAC/C,GAAG,CAAEoB,WAAW,EAAMC,aAAa,IAAQC,MAC7C,G","sources":["webpack://miriamgemeinde/./src/content/admin/IndexContent.vue","webpack://miriamgemeinde/./src/content/admin/IndexContent.vue?5c80","webpack://miriamgemeinde/./node_modules/core-js/modules/esnext.iterator.find.js"],"sourcesContent":["<template>\n <div>\n <h1>Seitenpflege</h1>\n <p>Herzlich Willkommen. Auf diesen Seiten können Sie die Inhalte der Webseiten pflegen.</p>\n <ul>\n <li v-for=\"item in adminSubmenu\" :key=\"item.id\">\n <router-link :to=\"item.link\">{{ item.name }}</router-link>\n </li>\n </ul>\n </div>\n</template>\n\n<script>\nimport axios from \"../../axios\";\nimport { ref, onMounted } from 'vue';\n\nexport default {\n name: 'DefaultComponent',\n setup() {\n const adminSubmenu = ref([]);\n\n const fetchMenuData = async () => {\n try {\n const response = await axios.get('/menu-data');\n const menuData = response.data;\n\n // Suche nach dem Admin-Submenü\n const adminMenu = menuData.find(item => item.name === 'Admin');\n if (adminMenu) {\n adminSubmenu.value = adminMenu.submenu;\n }\n } catch (error) {\n console.error('Fehler beim Abrufen der Menü-Daten:', error);\n }\n };\n\n onMounted(() => {\n fetchMenuData();\n });\n\n return {\n adminSubmenu\n };\n }\n};\n</script>\n\n<style scoped>\ndiv {\n padding: 20px;\n}\n\nul {\n list-style: none;\n padding: 0;\n margin: 0;\n}\n\nli {\n padding: 0;\n margin: 0;\n}\n</style>\n","import { render } from \"./IndexContent.vue?vue&type=template&id=68b32234&scoped=true\"\nimport script from \"./IndexContent.vue?vue&type=script&lang=js\"\nexport * from \"./IndexContent.vue?vue&type=script&lang=js\"\n\nimport \"./IndexContent.vue?vue&type=style&index=0&id=68b32234&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-68b32234\"]])\n\nexport default __exports__","'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\n// `Iterator.prototype.find` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true }, {\n find: function find(predicate) {\n anObject(this);\n aCallable(predicate);\n var record = getIteratorDirect(this);\n var counter = 0;\n return iterate(record, function (value, stop) {\n if (predicate(value, counter++)) return stop(value);\n }, { IS_RECORD: true, INTERRUPTED: true }).result;\n }\n});\n"],"names":["_createElementVNode","_createElementBlock","_hoisted_1","_hoisted_2","_Fragment","_renderList","$setup","adminSubmenu","item","key","id","_createVNode","_component_router_link","to","link","default","_withCtx","_createTextVNode","_toDisplayString","name","_","setup","ref","fetchMenuData","async","response","axios","get","menuData","data","adminMenu","find","value","submenu","error","console","onMounted","__exports__","render","$","iterate","aCallable","anObject","getIteratorDirect","target","proto","real","predicate","this","record","counter","stop","IS_RECORD","INTERRUPTED","result"],"sourceRoot":""}

2
public/js/23.86dde413.js Normal file
View File

@@ -0,0 +1,2 @@
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[23],{2023:function(e,n,t){t.r(n),t.d(n,{default:function(){return k}});var u=t(641),r=t(33);const i=e=>((0,u.Qi)("data-v-68b32234"),e=e(),(0,u.jt)(),e),a=i((()=>(0,u.Lk)("h1",null,"Seitenpflege",-1))),l=i((()=>(0,u.Lk)("p",null,"Herzlich Willkommen. Auf diesen Seiten können Sie die Inhalte der Webseiten pflegen.",-1)));function o(e,n,t,i,o,d){const s=(0,u.g2)("router-link");return(0,u.uX)(),(0,u.CE)("div",null,[a,l,(0,u.Lk)("ul",null,[((0,u.uX)(!0),(0,u.CE)(u.FK,null,(0,u.pI)(i.adminSubmenu,(e=>((0,u.uX)(),(0,u.CE)("li",{key:e.id},[(0,u.bF)(s,{to:e.link},{default:(0,u.k6)((()=>[(0,u.eW)((0,r.v_)(e.name),1)])),_:2},1032,["to"])])))),128))])])}t(8992),t(2577);var d=t(6296),s=t(953),c={name:"DefaultComponent",setup(){const e=(0,s.KR)([]),n=async()=>{try{const n=await d.A.get("/menu-data"),t=n.data,u=t.find((e=>"Admin"===e.name));u&&(e.value=u.submenu)}catch(n){console.error("Fehler beim Abrufen der Menü-Daten:",n)}};return(0,u.sV)((()=>{n()})),{adminSubmenu:e}}},m=t(6262);const f=(0,m.A)(c,[["render",o],["__scopeId","data-v-68b32234"]]);var k=f},2577:function(e,n,t){var u=t(6518),r=t(2652),i=t(9306),a=t(8551),l=t(1767);u({target:"Iterator",proto:!0,real:!0},{find:function(e){a(this),i(e);var n=l(this),t=0;return r(n,(function(n,u){if(e(n,t++))return u(n)}),{IS_RECORD:!0,INTERRUPTED:!0}).result}})}}]);
//# sourceMappingURL=23.86dde413.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"js/23.86dde413.js","mappings":"kQAEIA,EAAAA,EAAAA,IAAqB,UAAjB,gBAAY,K,UAChBA,EAAAA,EAAAA,IAA2F,SAAxF,wFAAoF,K,0EAFzFC,EAAAA,EAAAA,IAQM,YAPJC,EACAC,GACAH,EAAAA,EAAAA,IAIK,a,aAHHC,EAAAA,EAAAA,IAEKG,EAAAA,GAAA,MAPXC,EAAAA,EAAAA,IAKyBC,EAAAC,cAARC,K,WAAXP,EAAAA,EAAAA,IAEK,MAF6BQ,IAAKD,EAAKE,I,EAC1CC,EAAAA,EAAAA,IAA0DC,EAAA,CAA5CC,GAAIL,EAAKM,M,CAN/BC,SAAAC,EAAAA,EAAAA,KAMqC,IAAe,EANpDC,EAAAA,EAAAA,KAAAC,EAAAA,EAAAA,IAMwCV,EAAKW,MAAI,MANjDC,EAAA,G,mEAgBA,GACED,KAAM,mBACNE,KAAAA,GACE,MAAMd,GAAee,EAAAA,EAAAA,IAAI,IAEnBC,EAAgBC,UACpB,IACE,MAAMC,QAAiBC,EAAAA,EAAMC,IAAI,cAC3BC,EAAWH,EAASI,KAGpBC,EAAYF,EAASG,MAAKvB,GAAsB,UAAdA,EAAKW,OACzCW,IACFvB,EAAayB,MAAQF,EAAUG,QAEnC,CAAE,MAAOC,GACPC,QAAQD,MAAM,sCAAuCA,EACvD,GAOF,OAJAE,EAAAA,EAAAA,KAAU,KACRb,GAAe,IAGV,CACLhB,eAEJ,G,UCpCF,MAAM8B,GAA2B,OAAgB,EAAQ,CAAC,CAAC,SAASC,GAAQ,CAAC,YAAY,qBAEzF,O,uBCRA,IAAIC,EAAI,EAAQ,MACZC,EAAU,EAAQ,MAClBC,EAAY,EAAQ,MACpBC,EAAW,EAAQ,MACnBC,EAAoB,EAAQ,MAIhCJ,EAAE,CAAEK,OAAQ,WAAYC,OAAO,EAAMC,MAAM,GAAQ,CACjDf,KAAM,SAAcgB,GAClBL,EAASM,MACTP,EAAUM,GACV,IAAIE,EAASN,EAAkBK,MAC3BE,EAAU,EACd,OAAOV,EAAQS,GAAQ,SAAUjB,EAAOmB,GACtC,GAAIJ,EAAUf,EAAOkB,KAAY,OAAOC,EAAKnB,EAC/C,GAAG,CAAEoB,WAAW,EAAMC,aAAa,IAAQC,MAC7C,G","sources":["webpack://miriamgemeinde/./src/content/admin/IndexContent.vue","webpack://miriamgemeinde/./src/content/admin/IndexContent.vue?5c80","webpack://miriamgemeinde/./node_modules/core-js/modules/esnext.iterator.find.js"],"sourcesContent":["<template>\n <div>\n <h1>Seitenpflege</h1>\n <p>Herzlich Willkommen. Auf diesen Seiten können Sie die Inhalte der Webseiten pflegen.</p>\n <ul>\n <li v-for=\"item in adminSubmenu\" :key=\"item.id\">\n <router-link :to=\"item.link\">{{ item.name }}</router-link>\n </li>\n </ul>\n </div>\n</template>\n\n<script>\nimport axios from \"../../axios\";\nimport { ref, onMounted } from 'vue';\n\nexport default {\n name: 'DefaultComponent',\n setup() {\n const adminSubmenu = ref([]);\n\n const fetchMenuData = async () => {\n try {\n const response = await axios.get('/menu-data');\n const menuData = response.data;\n\n // Suche nach dem Admin-Submenü\n const adminMenu = menuData.find(item => item.name === 'Admin');\n if (adminMenu) {\n adminSubmenu.value = adminMenu.submenu;\n }\n } catch (error) {\n console.error('Fehler beim Abrufen der Menü-Daten:', error);\n }\n };\n\n onMounted(() => {\n fetchMenuData();\n });\n\n return {\n adminSubmenu\n };\n }\n};\n</script>\n\n<style scoped>\ndiv {\n padding: 20px;\n}\n\nul {\n list-style: none;\n padding: 0;\n margin: 0;\n}\n\nli {\n padding: 0;\n margin: 0;\n}\n</style>\n","import { render } from \"./IndexContent.vue?vue&type=template&id=68b32234&scoped=true\"\nimport script from \"./IndexContent.vue?vue&type=script&lang=js\"\nexport * from \"./IndexContent.vue?vue&type=script&lang=js\"\n\nimport \"./IndexContent.vue?vue&type=style&index=0&id=68b32234&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-68b32234\"]])\n\nexport default __exports__","'use strict';\nvar $ = require('../internals/export');\nvar iterate = require('../internals/iterate');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\n\n// `Iterator.prototype.find` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true }, {\n find: function find(predicate) {\n anObject(this);\n aCallable(predicate);\n var record = getIteratorDirect(this);\n var counter = 0;\n return iterate(record, function (value, stop) {\n if (predicate(value, counter++)) return stop(value);\n }, { IS_RECORD: true, INTERRUPTED: true }).result;\n }\n});\n"],"names":["_createElementVNode","_createElementBlock","_hoisted_1","_hoisted_2","_Fragment","_renderList","$setup","adminSubmenu","item","key","id","_createVNode","_component_router_link","to","link","default","_withCtx","_createTextVNode","_toDisplayString","name","_","setup","ref","fetchMenuData","async","response","axios","get","menuData","data","adminMenu","find","value","submenu","error","console","onMounted","__exports__","render","$","iterate","aCallable","anObject","getIteratorDirect","target","proto","real","predicate","this","record","counter","stop","IS_RECORD","INTERRUPTED","result"],"sourceRoot":""}

View 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 E}});var a=n(641),i=n(3751),s=n(33);const p=e=>((0,a.Qi)("data-v-60fe58a4"),e=e(),(0,a.jt)(),e),d={class:"event-types-management"},r=p((()=>(0,a.Lk)("h2",null,"Event-Typen Verwaltung",-1))),o=p((()=>(0,a.Lk)("label",{for:"newEventType"},"Event-Typ:",-1))),v={type:"submit"},y=["onClick"],l=["onClick"];function c(e,t,n,p,c,u){return(0,a.uX)(),(0,a.CE)("div",d,[r,(0,a.Lk)("form",{onSubmit:t[2]||(t[2]=(0,i.D$)(((...e)=>u.saveEventType&&u.saveEventType(...e)),["prevent"]))},[o,(0,a.bo)((0,a.Lk)("input",{type:"text",id:"newEventType","onUpdate:modelValue":t[0]||(t[0]=e=>c.eventTypeData.caption=e),placeholder:"Event-Typ",required:""},null,512),[[i.Jo,c.eventTypeData.caption]]),(0,a.Lk)("button",v,(0,s.v_)(c.editMode?"Aktualisieren":"Hinzufügen"),1),c.editMode?((0,a.uX)(),(0,a.CE)("button",{key:0,type:"button",onClick:t[1]||(t[1]=(...e)=>u.resetForm&&u.resetForm(...e))},"Abbrechen")):(0,a.Q3)("",!0)],32),(0,a.Lk)("table",null,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(c.eventTypes,(e=>((0,a.uX)(),(0,a.CE)("tr",{key:e.id},[(0,a.Lk)("td",null,(0,s.v_)(e.caption),1),(0,a.Lk)("td",null,[(0,a.Lk)("button",{onClick:t=>u.editEventType(e)},"Bearbeiten",8,y)]),(0,a.Lk)("td",null,[(0,a.Lk)("button",{onClick:t=>u.deleteEventType(e.id)},"Löschen",8,l)])])))),128))])])}n(4114);var u=n(4335),h={data(){return{eventTypes:[],eventTypeData:{caption:""},editMode:!1,editId:null}},methods:{async fetchEventTypes(){try{const e=await u.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 u.A.put(`/event-types/${this.editId}`,this.eventTypeData);else{const e=await u.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 u.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()}},T=n(6262);const k=(0,T.A)(h,[["render",c],["__scopeId","data-v-60fe58a4"]]);var E=k}}]);
//# sourceMappingURL=246.760602fa.js.map

File diff suppressed because one or more lines are too long

View 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 E}});var a=n(641),i=n(3751),s=n(33);const p=e=>((0,a.Qi)("data-v-60fe58a4"),e=e(),(0,a.jt)(),e),d={class:"event-types-management"},r=p((()=>(0,a.Lk)("h2",null,"Event-Typen Verwaltung",-1))),o=p((()=>(0,a.Lk)("label",{for:"newEventType"},"Event-Typ:",-1))),v={type:"submit"},y=["onClick"],l=["onClick"];function c(e,t,n,p,c,u){return(0,a.uX)(),(0,a.CE)("div",d,[r,(0,a.Lk)("form",{onSubmit:t[2]||(t[2]=(0,i.D$)(((...e)=>u.saveEventType&&u.saveEventType(...e)),["prevent"]))},[o,(0,a.bo)((0,a.Lk)("input",{type:"text",id:"newEventType","onUpdate:modelValue":t[0]||(t[0]=e=>c.eventTypeData.caption=e),placeholder:"Event-Typ",required:""},null,512),[[i.Jo,c.eventTypeData.caption]]),(0,a.Lk)("button",v,(0,s.v_)(c.editMode?"Aktualisieren":"Hinzufügen"),1),c.editMode?((0,a.uX)(),(0,a.CE)("button",{key:0,type:"button",onClick:t[1]||(t[1]=(...e)=>u.resetForm&&u.resetForm(...e))},"Abbrechen")):(0,a.Q3)("",!0)],32),(0,a.Lk)("table",null,[((0,a.uX)(!0),(0,a.CE)(a.FK,null,(0,a.pI)(c.eventTypes,(e=>((0,a.uX)(),(0,a.CE)("tr",{key:e.id},[(0,a.Lk)("td",null,(0,s.v_)(e.caption),1),(0,a.Lk)("td",null,[(0,a.Lk)("button",{onClick:t=>u.editEventType(e)},"Bearbeiten",8,y)]),(0,a.Lk)("td",null,[(0,a.Lk)("button",{onClick:t=>u.deleteEventType(e.id)},"Löschen",8,l)])])))),128))])])}n(4114);var u=n(4335),h={data(){return{eventTypes:[],eventTypeData:{caption:""},editMode:!1,editId:null}},methods:{async fetchEventTypes(){try{const e=await u.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 u.A.put(`/event-types/${this.editId}`,this.eventTypeData);else{const e=await u.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 u.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()}},T=n(6262);const k=(0,T.A)(h,[["render",c],["__scopeId","data-v-60fe58a4"]]);var E=k}}]);
//# sourceMappingURL=246.bc7aeb2e.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[260],{4260:function(e,l,t){t.r(l),t.d(l,{default:function(){return c}});var a=t(641),i=t(33);const o={key:0,class:"dialog-overlay"},n={class:"dialog"};function s(e,l,t,s,r,u){return t.modelValue?((0,a.uX)(),(0,a.CE)("div",o,[(0,a.Lk)("div",n,[(0,a.Lk)("h2",null,(0,i.v_)(t.title),1),(0,a.Lk)("p",null,(0,i.v_)(t.message),1),(0,a.Lk)("button",{onClick:l[0]||(l[0]=(...e)=>u.closeDialog&&u.closeDialog(...e))},"OK")])])):(0,a.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-64c2e06a"]]);var c=d}}]);
//# sourceMappingURL=260.a0d49da0.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"js/260.a0d49da0.js","mappings":"sMAAAA,IAAA,EACyBC,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,YALnCG,EAAAA,EAAAA,IAAA,M,CAWA,OACEC,KAAM,kBACNC,MAAO,CACLT,MAAO,CACLU,KAAMC,OACNC,UAAU,GAEZX,QAAS,CACPS,KAAMC,OACNC,UAAU,GAEZlB,WAAY,CACVgB,KAAMG,QACNC,SAAS,IAGbC,QAAS,CACPT,WAAAA,GACEU,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 top: calc(50% - 25em);\n left: 5%;\n width: 90%;\n height: 50em;\n background: rgba(0, 0, 0, .5);\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: auto;\n}\n\n.dialog {\n background: white;\n padding: 20px;\n border-radius: 5px;\n max-width: 400px;\n width: 100%;\n text-align: center;\n}\n\nbutton {\n margin-top: 20px;\n}\n</style>","import { render } from \"./DialogComponent.vue?vue&type=template&id=64c2e06a&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=64c2e06a&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-64c2e06a\"]])\n\nexport default __exports__"],"names":["key","class","$props","modelValue","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_toDisplayString","title","message","onClick","_cache","args","$options","closeDialog","_createCommentVNode","name","props","type","String","required","Boolean","default","methods","this","$emit","__exports__","render"],"sourceRoot":""}

View File

@@ -0,0 +1,2 @@
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[281],{7281:function(e,i,s){s.r(i),s.d(i,{default:function(){return f}});var a=s(641),t=s(3751),o=s(33);const l=e=>((0,a.Qi)("data-v-c694cf4e"),e=e(),(0,a.jt)(),e),n={class:"forgot-password"},r=l((()=>(0,a.Lk)("h2",null,"Passwort vergessen",-1))),d=l((()=>(0,a.Lk)("label",{for:"email"},"Email-Adresse:",-1))),g=l((()=>(0,a.Lk)("button",{type:"submit"},"Link zum Zurücksetzen senden",-1))),u={key:0,class:"dialog"},c={class:"dialog-content"};function m(e,i,s,l,m,k){const h=(0,a.g2)("router-link");return(0,a.uX)(),(0,a.CE)("div",n,[r,(0,a.Lk)("form",{onSubmit:i[1]||(i[1]=(0,t.D$)(((...e)=>k.submitForgotPassword&&k.submitForgotPassword(...e)),["prevent"]))},[d,(0,a.bo)((0,a.Lk)("input",{type:"email",id:"email","onUpdate:modelValue":i[0]||(i[0]=e=>m.email=e),required:""},null,512),[[t.Jo,m.email]]),g],32),(0,a.Lk)("p",null,[(0,a.bF)(h,{to:"/login"},{default:(0,a.k6)((()=>[(0,a.eW)("Login")])),_:1})]),(0,a.Lk)("p",null,[(0,a.bF)(h,{to:"/register"},{default:(0,a.k6)((()=>[(0,a.eW)("Registrieren")])),_:1})]),m.dialogVisible?((0,a.uX)(),(0,a.CE)("div",u,[(0,a.Lk)("div",c,[(0,a.Lk)("h3",null,(0,o.v_)(m.dialogTitle),1),(0,a.Lk)("p",null,(0,o.v_)(m.dialogMessage),1),(0,a.Lk)("button",{type:"button",onClick:i[2]||(i[2]=(...e)=>k.closeDialog&&k.closeDialog(...e))},"Schließen")])])):(0,a.Q3)("",!0)])}var k=s(3173),h={name:"ForgotPassword",data(){return{email:"",dialogTitle:"",dialogMessage:"",dialogVisible:!1}},methods:{async submitForgotPassword(){try{const e=await k.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}}},b=s(6262);const p=(0,b.A)(h,[["render",m],["__scopeId","data-v-c694cf4e"]]);var f=p}}]);
//# sourceMappingURL=281.46d980f9.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[289],{4289: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=289.442f0887.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"js/289.442f0887.js","mappings":"6LAAA,Q,0CACIA,EAAAA,EAAAA,IAA2B,OAArBC,IAAKC,EAAAC,cAAY,OAD3BC,E,eAOA,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"],"sourceRoot":""}

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 @@
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[324],{1324:function(e,i,s){s.r(i),s.d(i,{default:function(){return f}});var a=s(641),t=s(3751),o=s(33);const l=e=>((0,a.Qi)("data-v-c694cf4e"),e=e(),(0,a.jt)(),e),n={class:"forgot-password"},r=l((()=>(0,a.Lk)("h2",null,"Passwort vergessen",-1))),d=l((()=>(0,a.Lk)("label",{for:"email"},"Email-Adresse:",-1))),g=l((()=>(0,a.Lk)("button",{type:"submit"},"Link zum Zurücksetzen senden",-1))),u={key:0,class:"dialog"},c={class:"dialog-content"};function m(e,i,s,l,m,k){const h=(0,a.g2)("router-link");return(0,a.uX)(),(0,a.CE)("div",n,[r,(0,a.Lk)("form",{onSubmit:i[1]||(i[1]=(0,t.D$)(((...e)=>k.submitForgotPassword&&k.submitForgotPassword(...e)),["prevent"]))},[d,(0,a.bo)((0,a.Lk)("input",{type:"email",id:"email","onUpdate:modelValue":i[0]||(i[0]=e=>m.email=e),required:""},null,512),[[t.Jo,m.email]]),g],32),(0,a.Lk)("p",null,[(0,a.bF)(h,{to:"/login"},{default:(0,a.k6)((()=>[(0,a.eW)("Login")])),_:1})]),(0,a.Lk)("p",null,[(0,a.bF)(h,{to:"/register"},{default:(0,a.k6)((()=>[(0,a.eW)("Registrieren")])),_:1})]),m.dialogVisible?((0,a.uX)(),(0,a.CE)("div",u,[(0,a.Lk)("div",c,[(0,a.Lk)("h3",null,(0,o.v_)(m.dialogTitle),1),(0,a.Lk)("p",null,(0,o.v_)(m.dialogMessage),1),(0,a.Lk)("button",{type:"button",onClick:i[2]||(i[2]=(...e)=>k.closeDialog&&k.closeDialog(...e))},"Schließen")])])):(0,a.Q3)("",!0)])}var k=s(6296),h={name:"ForgotPassword",data(){return{email:"",dialogTitle:"",dialogMessage:"",dialogVisible:!1}},methods:{async submitForgotPassword(){try{const e=await k.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}}},b=s(6262);const p=(0,b.A)(h,[["render",m],["__scopeId","data-v-c694cf4e"]]);var f=p}}]);
//# sourceMappingURL=324.45a1757a.js.map

File diff suppressed because one or more lines are too long

View 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 f}});var a=s(641),t=s(3751),o=s(33);const l=e=>((0,a.Qi)("data-v-c694cf4e"),e=e(),(0,a.jt)(),e),n={class:"forgot-password"},r=l((()=>(0,a.Lk)("h2",null,"Passwort vergessen",-1))),d=l((()=>(0,a.Lk)("label",{for:"email"},"Email-Adresse:",-1))),g=l((()=>(0,a.Lk)("button",{type:"submit"},"Link zum Zurücksetzen senden",-1))),u={key:0,class:"dialog"},c={class:"dialog-content"};function m(e,i,s,l,m,k){const h=(0,a.g2)("router-link");return(0,a.uX)(),(0,a.CE)("div",n,[r,(0,a.Lk)("form",{onSubmit:i[1]||(i[1]=(0,t.D$)(((...e)=>k.submitForgotPassword&&k.submitForgotPassword(...e)),["prevent"]))},[d,(0,a.bo)((0,a.Lk)("input",{type:"email",id:"email","onUpdate:modelValue":i[0]||(i[0]=e=>m.email=e),required:""},null,512),[[t.Jo,m.email]]),g],32),(0,a.Lk)("p",null,[(0,a.bF)(h,{to:"/login"},{default:(0,a.k6)((()=>[(0,a.eW)("Login")])),_:1})]),(0,a.Lk)("p",null,[(0,a.bF)(h,{to:"/register"},{default:(0,a.k6)((()=>[(0,a.eW)("Registrieren")])),_:1})]),m.dialogVisible?((0,a.uX)(),(0,a.CE)("div",u,[(0,a.Lk)("div",c,[(0,a.Lk)("h3",null,(0,o.v_)(m.dialogTitle),1),(0,a.Lk)("p",null,(0,o.v_)(m.dialogMessage),1),(0,a.Lk)("button",{type:"button",onClick:i[2]||(i[2]=(...e)=>k.closeDialog&&k.closeDialog(...e))},"Schließen")])])):(0,a.Q3)("",!0)])}var k=s(6296),h={name:"ForgotPassword",data(){return{email:"",dialogTitle:"",dialogMessage:"",dialogVisible:!1}},methods:{async submitForgotPassword(){try{const e=await k.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}}},b=s(6262);const p=(0,b.A)(h,[["render",m],["__scopeId","data-v-c694cf4e"]]);var f=p}}]);
//# sourceMappingURL=324.d5182513.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[331],{7331:function(e,i,a){a.r(i),a.d(i,{default:function(){return L}});var s=a(641),t=a(3751),o=a(33);const l=e=>((0,s.Qi)("data-v-63b3c0a3"),e=e(),(0,s.jt)(),e),r={class:"register"},n=l((()=>(0,s.Lk)("h2",null,"Registrieren",-1))),d=l((()=>(0,s.Lk)("label",{for:"name"},"Name:",-1))),g=l((()=>(0,s.Lk)("label",{for:"email"},"Email-Adresse:",-1))),u=l((()=>(0,s.Lk)("label",{for:"password"},"Passwort:",-1))),m=l((()=>(0,s.Lk)("button",{type:"submit"},"Registrieren",-1))),p={key:0,class:"dialog"},c={class:"dialog-content"};function h(e,i,a,l,h,k){const b=(0,s.g2)("router-link");return(0,s.uX)(),(0,s.CE)("div",r,[n,(0,s.Lk)("form",{onSubmit:i[3]||(i[3]=(0,t.D$)(((...e)=>k.register&&k.register(...e)),["prevent"]))},[d,(0,s.bo)((0,s.Lk)("input",{type:"text",id:"name","onUpdate:modelValue":i[0]||(i[0]=e=>h.name=e),required:""},null,512),[[t.Jo,h.name]]),g,(0,s.bo)((0,s.Lk)("input",{type:"email",id:"email","onUpdate:modelValue":i[1]||(i[1]=e=>h.email=e),required:""},null,512),[[t.Jo,h.email]]),u,(0,s.bo)((0,s.Lk)("input",{type:"password",id:"password","onUpdate:modelValue":i[2]||(i[2]=e=>h.password=e),required:""},null,512),[[t.Jo,h.password]]),m],32),(0,s.Lk)("p",null,[(0,s.bF)(b,{to:"/login"},{default:(0,s.k6)((()=>[(0,s.eW)("Login")])),_:1})]),(0,s.Lk)("p",null,[(0,s.bF)(b,{to:"/forgot-password"},{default:(0,s.k6)((()=>[(0,s.eW)("Passwort vergessen?")])),_:1})]),h.dialogVisible?((0,s.uX)(),(0,s.CE)("div",p,[(0,s.Lk)("div",c,[(0,s.Lk)("h3",null,(0,o.v_)(h.dialogTitle),1),(0,s.Lk)("p",null,(0,o.v_)(h.dialogMessage),1),(0,s.Lk)("button",{type:"button",onClick:i[4]||(i[4]=(...e)=>k.closeDialog&&k.closeDialog(...e))},"Schließen")])])):(0,s.Q3)("",!0)])}var k=a(3173),b={name:"RegisterComponent",components:{},data(){return{name:"",email:"",password:"",dialogTitle:"",dialogMessage:"",dialogVisible:!1}},methods:{async register(){try{const e=await k.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}}},w=a(6262);const f=(0,w.A)(b,[["render",h],["__scopeId","data-v-63b3c0a3"]]);var L=f}}]);
//# sourceMappingURL=331.4e6f5293.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[353],{655:function(e,a,t){var l=t(6955),n=String;e.exports=function(e){if("Symbol"===l(e))throw new TypeError("Cannot convert a Symbol value to a string");return n(e)}},2353:function(e,a,t){t.r(a),t.d(a,{default:function(){return L}});var l=t(641),n=t(3751),i=t(33);const o=e=>((0,l.Qi)("data-v-f2694614"),e=e(),(0,l.jt)(),e),r={class:"upload-files"},u=o((()=>(0,l.Lk)("h2",null,"Dateien hochladen",-1))),s=o((()=>(0,l.Lk)("label",{for:"file-upload"},"Datei auswählen:",-1))),d=o((()=>(0,l.Lk)("label",{for:"file-title"},"Titel eingeben:",-1))),c={class:"file-list"},f={class:"file-info"},h=["onClick"],p=["onClick"],v={class:"file-date"};function m(e,a,t,o,m,k){return(0,l.uX)(),(0,l.CE)("div",r,[u,(0,l.Lk)("div",null,[s,(0,l.Lk)("input",{id:"file-upload",type:"file",onChange:a[0]||(a[0]=(...e)=>o.handleFileUpload&&o.handleFileUpload(...e))},null,32)]),(0,l.Lk)("div",null,[d,(0,l.bo)((0,l.Lk)("input",{id:"file-title",type:"text","onUpdate:modelValue":a[1]||(a[1]=e=>o.fileTitle=e)},null,512),[[n.Jo,o.fileTitle]])]),(0,l.Lk)("button",{onClick:a[2]||(a[2]=(...e)=>o.uploadFiles&&o.uploadFiles(...e))},"Hochladen"),(0,l.Lk)("ul",c,[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(o.uploadedFiles,(e=>((0,l.uX)(),(0,l.CE)("li",{key:e.id},[(0,l.Lk)("div",f,[(0,l.Lk)("span",{class:"file-title",onClick:a=>o.downloadFile(e)},(0,i.v_)(e.title),9,h),(0,l.Lk)("span",{class:"file-name",onClick:a=>o.downloadFile(e)},(0,i.v_)(e.originalName),9,p),(0,l.Lk)("span",v,(0,i.v_)(o.formatDate(e.createdAt)),1)])])))),128))])])}t(4114),t(4603),t(7566),t(8721);var k=t(953),w=t(3173),g={name:"UploadFilesComponent",setup(){const e=(0,k.KR)(null),a=(0,k.KR)(""),t=(0,k.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 l=new FormData;l.append("file",e.value),l.append("title",a.value);try{const n=await w.A.post("/files",l,{headers:{"Content-Type":"multipart/form-data"}}),i=n.data;t.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(".")),t=await w.A.get(`/files/download/${e.hash}`,{responseType:"blob"}),l=new Blob([t.data],{type:t.data.type}),n=document.createElement("a");n.href=window.URL.createObjectURL(l),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 w.A.get("/files");t.value=e.data}catch(e){console.error("Fehler beim Abrufen der Dateien:",e)}};return(0,l.sV)(u),{fileToUpload:e,fileTitle:a,uploadedFiles:t,handleFileUpload:n,uploadFiles:i,downloadFile:o,formatDate:r}}},y=t(6262);const b=(0,y.A)(g,[["render",m],["__scopeId","data-v-f2694614"]]);var L=b},2812:function(e){var a=TypeError;e.exports=function(e,t){if(e<t)throw new a("Not enough arguments");return e}},4603:function(e,a,t){var l=t(6840),n=t(9504),i=t(655),o=t(2812),r=URLSearchParams,u=r.prototype,s=n(u.append),d=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"&&l(u,"delete",(function(e){var a=arguments.length,t=a<2?void 0:arguments[1];if(a&&void 0===t)return d(this,e);var l=[];c(this,(function(e,a){f(l,{key:a,value:e})})),o(a,1);var n,r=i(e),u=i(t),h=0,p=0,v=!1,m=l.length;while(h<m)n=l[h++],v||n.key===r?(v=!0,d(this,n.key)):p++;while(p<m)n=l[p++],n.key===r&&n.value===u||s(this,n.key,n.value)}),{enumerable:!0,unsafe:!0})},7566:function(e,a,t){var l=t(6840),n=t(9504),i=t(655),o=t(2812),r=URLSearchParams,u=r.prototype,s=n(u.getAll),d=n(u.has),c=new r("a=1");!c.has("a",2)&&c.has("a",void 0)||l(u,"has",(function(e){var a=arguments.length,t=a<2?void 0:arguments[1];if(a&&void 0===t)return d(this,e);var l=s(this,e);o(a,1);var n=i(t),r=0;while(r<l.length)if(l[r++]===n)return!0;return!1}),{enumerable:!0,unsafe:!0})},8721:function(e,a,t){var l=t(3724),n=t(9504),i=t(2106),o=URLSearchParams.prototype,r=n(o.forEach);l&&!("size"in o)&&i(o,"size",{get:function(){var e=0;return r(this,(function(){e++})),e},configurable:!0,enumerable:!0})}}]);
//# sourceMappingURL=353.5e96c713.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 @@
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[362],{5362:function(e,t,n){n.r(t),n.d(t,{default:function(){return C}});var l=n(641),a=n(3751),i=n(33);const d=e=>((0,l.Qi)("data-v-4e6631f7"),e=e(),(0,l.jt)(),e),c={class:"event-places-management"},o=d((()=>(0,l.Lk)("h2",null,"Veranstaltungsorte verwalten",-1))),r=d((()=>(0,l.Lk)("label",{for:"name"},"Name:",-1))),s=d((()=>(0,l.Lk)("label",{for:"street"},"Straße:",-1))),u=d((()=>(0,l.Lk)("label",{for:"zipcode"},"PLZ:",-1))),p=d((()=>(0,l.Lk)("label",{for:"city"},"Stadt:",-1))),v=d((()=>(0,l.Lk)("label",{for:"city"},"Webseite:",-1))),k=d((()=>(0,l.Lk)("label",{for:"backgroundColor"},"Hintergrundfarbe:",-1))),h=d((()=>(0,l.Lk)("button",{type:"submit"},"Speichern",-1))),b=d((()=>(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))),P=["onClick"],f=["onClick"];function E(e,t,n,d,E,m){return(0,l.uX)(),(0,l.CE)("div",c,[o,(0,l.Lk)("form",{onSubmit:t[7]||(t[7]=(0,a.D$)(((...e)=>m.addEventPlace&&m.addEventPlace(...e)),["prevent"]))},[r,(0,l.bo)((0,l.Lk)("input",{type:"text",id:"name","onUpdate:modelValue":t[0]||(t[0]=e=>E.newEventPlace.name=e),placeholder:"Name",required:""},null,512),[[a.Jo,E.newEventPlace.name]]),s,(0,l.bo)((0,l.Lk)("input",{type:"text",id:"street","onUpdate:modelValue":t[1]||(t[1]=e=>E.newEventPlace.street=e),placeholder:"Straße",required:""},null,512),[[a.Jo,E.newEventPlace.street]]),u,(0,l.bo)((0,l.Lk)("input",{type:"text",id:"zipcode","onUpdate:modelValue":t[2]||(t[2]=e=>E.newEventPlace.zipcode=e),placeholder:"PLZ",required:""},null,512),[[a.Jo,E.newEventPlace.zipcode]]),p,(0,l.bo)((0,l.Lk)("input",{type:"text",id:"city","onUpdate:modelValue":t[3]||(t[3]=e=>E.newEventPlace.city=e),placeholder:"Stadt",required:""},null,512),[[a.Jo,E.newEventPlace.city]]),v,(0,l.bo)((0,l.Lk)("input",{type:"text",id:"website","onUpdate:modelValue":t[4]||(t[4]=e=>E.newEventPlace.website=e),placeholder:"Webseite",required:""},null,512),[[a.Jo,E.newEventPlace.website]]),k,(0,l.bo)((0,l.Lk)("input",{type:"color",id:"backgroundColor","onUpdate:modelValue":t[5]||(t[5]=e=>E.newEventPlace.backgroundColor=e)},null,512),[[a.Jo,E.newEventPlace.backgroundColor]]),h,E.editMode?((0,l.uX)(),(0,l.CE)("button",{key:0,type:"button",onClick:t[6]||(t[6]=(...e)=>m.resetForm&&m.resetForm(...e))},"Neuen Veranstaltungsort erstellen")):(0,l.Q3)("",!0)],32),(0,l.Lk)("table",null,[b,(0,l.Lk)("tbody",null,[((0,l.uX)(!0),(0,l.CE)(l.FK,null,(0,l.pI)(E.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=>m.editEventPlace(e)},"Bearbeiten",8,P)]),(0,l.Lk)("td",null,[(0,l.Lk)("button",{onClick:t=>m.deleteEventPlace(e.id)},"Löschen",8,f)])])))),128))])])])}n(4114);var m=n(4335),w={data(){return{eventPlaces:[],newEventPlace:{name:"",street:"",zipcode:"",city:"",backgroundColor:"#ffffff",website:""},editMode:!1,editId:null}},methods:{async fetchEventPlaces(){const e=await m.A.get("/event-places");this.eventPlaces=e.data},async addEventPlace(){if(this.editMode)await m.A.put(`/event-places/${this.editId}`,this.newEventPlace);else{const e=await m.A.post("/event-places",this.newEventPlace);this.eventPlaces.push(e.data)}this.resetForm(),await this.fetchEventPlaces()},async updateEventPlace(e){await m.A.put(`/event-places/${e.id}`,e),this.fetchEventPlaces()},async deleteEventPlace(e){await m.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()}},L=n(6262);const y=(0,L.A)(w,[["render",E],["__scopeId","data-v-4e6631f7"]]);var C=y}}]);
//# sourceMappingURL=362.48c7a08c.js.map

File diff suppressed because one or more lines are too long

2
public/js/39.2922e0be.js Normal file
View File

@@ -0,0 +1,2 @@
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[39],{4039:function(e,n,t){t.r(n),t.d(n,{default:function(){return m}});var i=t(641);const r=e=>((0,i.Qi)("data-v-334e7b82"),e=e(),(0,i.jt)(),e),u=r((()=>(0,i.Lk)("h1",null,"Seite existiert nicht",-1))),a=r((()=>(0,i.Lk)("p",null,"Leider existiert die aufgerufene Seite nicht.",-1))),c=[u,a];function d(e,n,t,r,u,a){return(0,i.uX)(),(0,i.CE)("div",null,c)}var l={name:"DefaultComponent"},s=t(6262);const f=(0,s.A)(l,[["render",d],["__scopeId","data-v-334e7b82"]]);var m=f}}]);
//# sourceMappingURL=39.2922e0be.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"js/39.2922e0be.js","mappings":"0PAEMA,EAAAA,EAAAA,IAA8B,UAA1B,yBAAqB,K,UACzBA,EAAAA,EAAAA,IAAoD,SAAjD,iDAA6C,K,GADhDC,EACAC,G,0CAFFC,EAAAA,EAAAA,IAGM,WAJVC,E,CAQE,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":["_createElementVNode","_hoisted_1","_hoisted_2","_createElementBlock","_hoisted_3","name","__exports__","render"],"sourceRoot":""}

View File

@@ -0,0 +1,2 @@
"use strict";(self["webpackChunkmiriamgemeinde"]=self["webpackChunkmiriamgemeinde"]||[]).push([[398],{655:function(e,s,t){var o=t(6955),i=String;e.exports=function(e){if("Symbol"===o(e))throw new TypeError("Cannot convert a Symbol value to a string");return i(e)}},2812:function(e){var s=TypeError;e.exports=function(e,t){if(e<t)throw new s("Not enough arguments");return e}},4398:function(e,s,t){t.r(s),t.d(s,{default:function(){return v}});var o=t(641),i=t(3751),a=t(33);const n=e=>((0,o.Qi)("data-v-e49a033c"),e=e(),(0,o.jt)(),e),r={class:"reset-password"},l=n((()=>(0,o.Lk)("h2",null,"Neues Passwort setzen",-1))),d=n((()=>(0,o.Lk)("label",{for:"password"},"Neues Passwort:",-1))),u=n((()=>(0,o.Lk)("label",{for:"confirmPassword"},"Passwort bestätigen:",-1))),h=["disabled"],c={key:0,class:"dialog"},g={class:"dialog-content"};function w(e,s,t,n,w,m){const p=(0,o.g2)("router-link");return(0,o.uX)(),(0,o.CE)("div",r,[l,(0,o.Lk)("form",{onSubmit:s[2]||(s[2]=(0,i.D$)(((...e)=>m.submitResetPassword&&m.submitResetPassword(...e)),["prevent"]))},[d,(0,o.bo)((0,o.Lk)("input",{type:"password",id:"password","onUpdate:modelValue":s[0]||(s[0]=e=>w.password=e),required:"",minlength:"6"},null,512),[[i.Jo,w.password]]),u,(0,o.bo)((0,o.Lk)("input",{type:"password",id:"confirmPassword","onUpdate:modelValue":s[1]||(s[1]=e=>w.confirmPassword=e),required:"",minlength:"6"},null,512),[[i.Jo,w.confirmPassword]]),(0,o.Lk)("button",{type:"submit",disabled:!m.isFormValid},"Passwort zurücksetzen",8,h)],32),(0,o.Lk)("p",null,[(0,o.bF)(p,{to:"/login"},{default:(0,o.k6)((()=>[(0,o.eW)("Zurück zum Login")])),_:1})]),w.dialogVisible?((0,o.uX)(),(0,o.CE)("div",c,[(0,o.Lk)("div",g,[(0,o.Lk)("h3",null,(0,a.v_)(w.dialogTitle),1),(0,o.Lk)("p",null,(0,a.v_)(w.dialogMessage),1),(0,o.Lk)("button",{type:"button",onClick:s[3]||(s[3]=(...e)=>m.closeDialog&&m.closeDialog(...e))},"Schließen")])])):(0,o.Q3)("",!0)])}t(4114),t(4603),t(7566),t(8721);var m=t(3173),p={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 m.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}}},f=t(6262);const k=(0,f.A)(p,[["render",w],["__scopeId","data-v-e49a033c"]]);var v=k},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=398.7dc48f0a.js.map

File diff suppressed because one or more lines are too long

View 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 x}});var n=i(641),o=i(3751),a=i(33);const s=t=>((0,n.Qi)("data-v-ff992c44"),t=t(),(0,n.jt)(),t),u={class:"institution-management"},l=s((()=>(0,n.Lk)("h2",null,"Institutionenverwaltung",-1))),r=s((()=>(0,n.Lk)("label",{for:"name"},"Name:",-1))),d=s((()=>(0,n.Lk)("label",{for:"street"},"Straße:",-1))),c=s((()=>(0,n.Lk)("label",{for:"zipcode"},"PLZ:",-1))),h=s((()=>(0,n.Lk)("label",{for:"city"},"Stadt:",-1))),m=s((()=>(0,n.Lk)("label",{for:"phone"},"Telefon:",-1))),p=s((()=>(0,n.Lk)("label",{for:"fax"},"Fax:",-1))),k=s((()=>(0,n.Lk)("label",{for:"email"},"Email:",-1))),f=s((()=>(0,n.Lk)("button",{type:"submit"},"Speichern",-1))),b=s((()=>(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))),L=["onClick"],y=["onClick"];function I(t,e,i,s,I,D){return(0,n.uX)(),(0,n.CE)("div",u,[l,(0,n.Lk)("form",{onSubmit:e[8]||(e[8]=(0,o.D$)(((...t)=>D.saveInstitution&&D.saveInstitution(...t)),["prevent"]))},[r,(0,n.bo)((0,n.Lk)("input",{type:"text",id:"name","onUpdate:modelValue":e[0]||(e[0]=t=>I.institutionData.name=t),required:""},null,512),[[o.Jo,I.institutionData.name]]),d,(0,n.bo)((0,n.Lk)("input",{type:"text",id:"street","onUpdate:modelValue":e[1]||(e[1]=t=>I.institutionData.street=t)},null,512),[[o.Jo,I.institutionData.street]]),c,(0,n.bo)((0,n.Lk)("input",{type:"text",id:"zipcode","onUpdate:modelValue":e[2]||(e[2]=t=>I.institutionData.zipcode=t)},null,512),[[o.Jo,I.institutionData.zipcode]]),h,(0,n.bo)((0,n.Lk)("input",{type:"text",id:"city","onUpdate:modelValue":e[3]||(e[3]=t=>I.institutionData.city=t)},null,512),[[o.Jo,I.institutionData.city]]),m,(0,n.bo)((0,n.Lk)("input",{type:"text",id:"phone","onUpdate:modelValue":e[4]||(e[4]=t=>I.institutionData.phone=t)},null,512),[[o.Jo,I.institutionData.phone]]),p,(0,n.bo)((0,n.Lk)("input",{type:"text",id:"fax","onUpdate:modelValue":e[5]||(e[5]=t=>I.institutionData.fax=t)},null,512),[[o.Jo,I.institutionData.fax]]),k,(0,n.bo)((0,n.Lk)("input",{type:"email",id:"email","onUpdate:modelValue":e[6]||(e[6]=t=>I.institutionData.email=t)},null,512),[[o.Jo,I.institutionData.email]]),f,I.editMode?((0,n.uX)(),(0,n.CE)("button",{key:0,type:"button",onClick:e[7]||(e[7]=(...t)=>D.resetForm&&D.resetForm(...t))},"Neue Institution erstellen")):(0,n.Q3)("",!0)],32),(0,n.Lk)("table",null,[b,(0,n.Lk)("tbody",null,[((0,n.uX)(!0),(0,n.CE)(n.FK,null,(0,n.pI)(I.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=>D.editInstitution(t)},"Bearbeiten",8,L)]),(0,n.Lk)("td",null,[(0,n.Lk)("button",{onClick:e=>D.deleteInstitution(t.id)},"Löschen",8,y)])])))),128))])])])}i(4114);var D=i(4335),F={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}}},w=i(6262);const C=(0,w.A)(F,[["render",I],["__scopeId","data-v-ff992c44"]]);var x=C}}]);
//# sourceMappingURL=404.2e5bf375.js.map

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More