added missing pages
This commit is contained in:
@@ -77,25 +77,25 @@ const filterContactPersons = async (req, res) => {
|
|||||||
console.log(configString, typeof configString);
|
console.log(configString, typeof configString);
|
||||||
const config = JSON.parse(configString);
|
const config = JSON.parse(configString);
|
||||||
const where = {};
|
const where = {};
|
||||||
|
const having = [];
|
||||||
|
|
||||||
console.log(config, typeof config);
|
console.log(config, typeof config);
|
||||||
console.log(config.selection);
|
console.log(config.selection);
|
||||||
if (config.selection.id && config.selection.id === 'all') {
|
if (config.selection.id && config.selection.id === 'all') {
|
||||||
|
// No additional filter needed for "all"
|
||||||
} else if (config.selection.id) {
|
} else if (config.selection.id) {
|
||||||
where.id = config.selection.id;
|
where.id = config.selection.id;
|
||||||
} else {
|
} else {
|
||||||
const filters = [];
|
|
||||||
|
|
||||||
if (config.selection.types && config.selection.types.length > 0) {
|
if (config.selection.types && config.selection.types.length > 0) {
|
||||||
filters.push({ '$positions.id$': { [Op.in]: config.selection.types } });
|
having.push({ '$positions.id$': { [Op.in]: config.selection.types } });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.selection.places && config.selection.places.length > 0) {
|
if (config.selection.places && config.selection.places.length > 0) {
|
||||||
filters.push({ '$events.eventPlaceId$': { [Op.in]: config.selection.places } });
|
having.push({ '$events.eventPlaceId$': { [Op.in]: config.selection.places } });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (filters.length > 0) {
|
if (config.selection.positions && config.selection.positions.length > 0) {
|
||||||
where[Op.and] = filters;
|
having.push({ '$positions.id$': { [Op.in]: config.selection.positions } });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -106,13 +106,16 @@ const filterContactPersons = async (req, res) => {
|
|||||||
model: Position,
|
model: Position,
|
||||||
as: 'positions',
|
as: 'positions',
|
||||||
through: { attributes: [] },
|
through: { attributes: [] },
|
||||||
|
required: true, // Ensure only contact persons with matching positions are included
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
model: Event,
|
model: Event,
|
||||||
as: 'events',
|
as: 'events',
|
||||||
through: { attributes: [] },
|
through: { attributes: [] },
|
||||||
|
required: false,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
having: having.length > 0 ? { [Op.and]: having } : undefined,
|
||||||
});
|
});
|
||||||
|
|
||||||
res.json(contactPersons);
|
res.json(contactPersons);
|
||||||
|
|||||||
BIN
public/images/uploads/3cb841cb-6764-4c27-b745-62efb91adb06.jpg
Normal file
BIN
public/images/uploads/3cb841cb-6764-4c27-b745-62efb91adb06.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 848 KiB |
BIN
public/images/uploads/59b29477-6997-4d3c-9010-54ba7c0a7ba3.jpg
Normal file
BIN
public/images/uploads/59b29477-6997-4d3c-9010-54ba7c0a7ba3.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 111 KiB |
@@ -19,8 +19,8 @@
|
|||||||
label="caption" track-by="id" />
|
label="caption" track-by="id" />
|
||||||
</div>
|
</div>
|
||||||
<div v-if="selectedTypes.some(type => type.id === 'position')">
|
<div v-if="selectedTypes.some(type => type.id === 'position')">
|
||||||
<label for="contact-select">Wählen Sie eine Position:</label>
|
<label for="position-select">Wählen Sie eine Position:</label>
|
||||||
<multiselect id="contact-select" v-model="selectedPositions" :options="positions" :multiple="false"
|
<multiselect id="position-select" v-model="selectedPositions" :options="positions" :multiple="false"
|
||||||
label="caption" track-by="id" />
|
label="caption" track-by="id" />
|
||||||
</div>
|
</div>
|
||||||
<div v-if="selectedTypes.some(type => type.id === 'specific')">
|
<div v-if="selectedTypes.some(type => type.id === 'specific')">
|
||||||
@@ -41,8 +41,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<label for="displayStyle">Anzeigen als</label>
|
<label for="displayStyle">Anzeigen als</label>
|
||||||
<select id="displayStyle" v-model="displayStyle">
|
<select id="displayStyle" v-model="displayStyle">
|
||||||
<option v-for="style in displayStyles" :value="style.id" :key="style.id">{{ style.label }}
|
<option v-for="style in displayStyles" :value="style.id" :key="style.id">{{ style.label }}</option>
|
||||||
</option>
|
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -129,12 +128,13 @@ export default {
|
|||||||
selectedContact.value = null;
|
selectedContact.value = null;
|
||||||
} else if (selectedTypes.value.some(type => type.id === 'types')) {
|
} else if (selectedTypes.value.some(type => type.id === 'types')) {
|
||||||
selectedContact.value = null;
|
selectedContact.value = null;
|
||||||
} else if (selectedPositions.value.some(type => type.id === 'position')) {
|
} else if (selectedTypes.value.some(type => type.id === 'position')) {
|
||||||
selectedContact.value = null;
|
selectedContact.value = null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const confirmAddContactConfiguration = () => {
|
const confirmAddContactConfiguration = () => {
|
||||||
|
console.log('Selected positions:', selectedPositions.value); // Log the selected positions
|
||||||
let configString = '';
|
let configString = '';
|
||||||
const displayArray = Object.keys(displayOptions.value).filter((key) => displayOptions.value[key]);
|
const displayArray = Object.keys(displayOptions.value).filter((key) => displayOptions.value[key]);
|
||||||
let selection = {};
|
let selection = {};
|
||||||
@@ -145,7 +145,7 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
selection['types'] = selectedEventTypes.value.map((type) => type.id);
|
selection['types'] = selectedEventTypes.value.map((type) => type.id);
|
||||||
selection['places'] = selectedPlaces.value.map((place) => place.id);
|
selection['places'] = selectedPlaces.value.map((place) => place.id);
|
||||||
selection['positions'] = selectedPositions.value((postion) => postion.id);
|
selection['positions'] = Array.isArray(selectedPositions.value) ? selectedPositions.value.map((position) => position.id) : [];
|
||||||
}
|
}
|
||||||
const contact = {
|
const contact = {
|
||||||
selection: selection,
|
selection: selection,
|
||||||
@@ -153,6 +153,7 @@ export default {
|
|||||||
style: displayStyle.value
|
style: displayStyle.value
|
||||||
}
|
}
|
||||||
configString = '{{ contact:' + JSON.stringify(contact) + ' }}';
|
configString = '{{ contact:' + JSON.stringify(contact) + ' }}';
|
||||||
|
console.log('Emitting config:', configString); // Log the emitted config
|
||||||
emit('confirm', configString);
|
emit('confirm', configString);
|
||||||
closeAddContactDialog();
|
closeAddContactDialog();
|
||||||
};
|
};
|
||||||
@@ -243,4 +244,4 @@ export default {
|
|||||||
.display-options label {
|
.display-options label {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-if="config && config.style === 'box' && contacts && contacts.length && contacts.length > 0">
|
<div v-if="config && config.style === 'box' && contacts && contacts.length && contacts.length > 0">
|
||||||
<div v-for="contact in contacts" :key="contact.id">
|
<div v-for="contact in contacts" :key="contact.id" class="contact-box">
|
||||||
<h3>{{ contact.name }}</h3>
|
<p>{{ contact.name }}</p>
|
||||||
<p v-if="displayOptions.includes('phone')">Telefon: {{ contact.phone }}</p>
|
<p v-if="displayOptions.includes('phone')">Telefon: {{ contact.phone }}</p>
|
||||||
<p v-if="displayOptions.includes('street')">Straße: {{ contact.street }}</p>
|
<p v-if="displayOptions.includes('street')">Straße: {{ contact.street }}</p>
|
||||||
<p v-if="displayOptions.includes('zipcode')">Postleitzahl: {{ contact.zipcode }}</p>
|
<p v-if="displayOptions.includes('zipcode')">Postleitzahl: {{ contact.zipcode }}</p>
|
||||||
@@ -62,5 +62,7 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
/* Add styles if needed */
|
.contact-box p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
23
src/content/AddressesContent.vue
Normal file
23
src/content/AddressesContent.vue
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<template>
|
||||||
|
<div class="some-page">
|
||||||
|
<ContentComponent :link="currentLink" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ContentComponent from '@/components/ContentComponent.vue';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'SomePage',
|
||||||
|
components: {
|
||||||
|
ContentComponent,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
currentLink() {
|
||||||
|
return this.$route.path;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
||||||
@@ -87,6 +87,7 @@
|
|||||||
|
|
||||||
<WorshipDialog ref="worshipDialog" @confirm="insertWorshipList" />
|
<WorshipDialog ref="worshipDialog" @confirm="insertWorshipList" />
|
||||||
<AddImageDialog ref="addImageDialog" @confirm="insertImage" />
|
<AddImageDialog ref="addImageDialog" @confirm="insertImage" />
|
||||||
|
<AddContactDialog ref="addContactDialog" @confirm="insertContact" />
|
||||||
<AddEventDialog ref="addEventDialog" @confirm="insertEvent" />
|
<AddEventDialog ref="addEventDialog" @confirm="insertEvent" />
|
||||||
<AddLinkDialog ref="addLinkDialog" @confirm="insertLink" />
|
<AddLinkDialog ref="addLinkDialog" @confirm="insertLink" />
|
||||||
<AddDownloadDialog ref="addDownloadDialog" @confirm="insertDownload" />
|
<AddDownloadDialog ref="addDownloadDialog" @confirm="insertDownload" />
|
||||||
@@ -116,6 +117,7 @@ import Color from '@tiptap/extension-color';
|
|||||||
import { CustomTableCell, CustomTableHeader } from '../../extensions/CustomTableCell';
|
import { CustomTableCell, CustomTableHeader } from '../../extensions/CustomTableCell';
|
||||||
import WorshipDialog from '@/components/WorshipDialog.vue';
|
import WorshipDialog from '@/components/WorshipDialog.vue';
|
||||||
import AddImageDialog from '@/components/AddImageDialog.vue';
|
import AddImageDialog from '@/components/AddImageDialog.vue';
|
||||||
|
import AddContactDialog from '@/components/AddContactDialog.vue';
|
||||||
import AddEventDialog from '@/components/AddEventDialog.vue';
|
import AddEventDialog from '@/components/AddEventDialog.vue';
|
||||||
import AddLinkDialog from '@/components/AddLinkDialog.vue';
|
import AddLinkDialog from '@/components/AddLinkDialog.vue';
|
||||||
import AddDownloadDialog from '@/components/AddDownloadDialog.vue';
|
import AddDownloadDialog from '@/components/AddDownloadDialog.vue';
|
||||||
@@ -146,6 +148,7 @@ export default {
|
|||||||
AlignLeftBoxIcon,
|
AlignLeftBoxIcon,
|
||||||
StatsReportIcon,
|
StatsReportIcon,
|
||||||
AddEventDialog,
|
AddEventDialog,
|
||||||
|
AddContactDialog,
|
||||||
AddLinkDialog,
|
AddLinkDialog,
|
||||||
AddDownloadDialog,
|
AddDownloadDialog,
|
||||||
AddInstitutionDialog,
|
AddInstitutionDialog,
|
||||||
@@ -160,6 +163,7 @@ export default {
|
|||||||
const worshipDialog = ref(null);
|
const worshipDialog = ref(null);
|
||||||
const addImageDialog = ref(null);
|
const addImageDialog = ref(null);
|
||||||
const addEventDialog = ref(null);
|
const addEventDialog = ref(null);
|
||||||
|
const addContactDialog = ref(null);
|
||||||
const addLinkDialog = ref(null);
|
const addLinkDialog = ref(null);
|
||||||
const addDownloadDialog = ref(null);
|
const addDownloadDialog = ref(null);
|
||||||
const addInstitutionDialog = ref(null);
|
const addInstitutionDialog = ref(null);
|
||||||
@@ -303,6 +307,16 @@ export default {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const openAddContactDialog = () => {
|
||||||
|
addContactDialog.value.openAddContactDialog();
|
||||||
|
};
|
||||||
|
|
||||||
|
const insertContact = (contactPersonString) => {
|
||||||
|
if (editor.value) {
|
||||||
|
editor.value.chain().focus().insertContent(contactPersonString).run();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const openAddLinkDialog = () => {
|
const openAddLinkDialog = () => {
|
||||||
addLinkDialog.value.openAddLinkDialog();
|
addLinkDialog.value.openAddLinkDialog();
|
||||||
};
|
};
|
||||||
@@ -393,6 +407,9 @@ export default {
|
|||||||
insertImage,
|
insertImage,
|
||||||
addEventDialog,
|
addEventDialog,
|
||||||
openAddEventsDialog: openAddEventDialog,
|
openAddEventsDialog: openAddEventDialog,
|
||||||
|
addContactDialog,
|
||||||
|
openAddContactDialog,
|
||||||
|
insertContact,
|
||||||
insertEvent,
|
insertEvent,
|
||||||
addLinkDialog,
|
addLinkDialog,
|
||||||
openAddLinkDialog,
|
openAddLinkDialog,
|
||||||
|
|||||||
@@ -1,11 +1,23 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div class="some-page">
|
||||||
<h2>Kindergottesdiest</h2>
|
<ContentComponent :link="currentLink" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import ContentComponent from '@/components/ContentComponent.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'ChildrensWorshipContent',
|
name: 'SomePage',
|
||||||
|
components: {
|
||||||
|
ContentComponent,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
currentLink() {
|
||||||
|
return this.$route.path;
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
||||||
25
src/content/meetingpoint/ConfirmationClassesContent.vue
Normal file
25
src/content/meetingpoint/ConfirmationClassesContent.vue
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<template>
|
||||||
|
<div class="some-page">
|
||||||
|
<ContentComponent :link="currentLink" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ContentComponent from '@/components/ContentComponent.vue';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'SomePage',
|
||||||
|
components: {
|
||||||
|
ContentComponent,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
currentLink() {
|
||||||
|
return this.$route.path;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
</style>
|
||||||
|
|
||||||
25
src/content/meetingpoint/HeliandPathfinderContent.vue
Normal file
25
src/content/meetingpoint/HeliandPathfinderContent.vue
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<template>
|
||||||
|
<div class="some-page">
|
||||||
|
<ContentComponent :link="currentLink" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ContentComponent from '@/components/ContentComponent.vue';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'SomePage',
|
||||||
|
components: {
|
||||||
|
ContentComponent,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
currentLink() {
|
||||||
|
return this.$route.path;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
</style>
|
||||||
|
|
||||||
25
src/content/meetingpoint/TeenEveningContent.vue
Normal file
25
src/content/meetingpoint/TeenEveningContent.vue
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<template>
|
||||||
|
<div class="some-page">
|
||||||
|
<ContentComponent :link="currentLink" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ContentComponent from '@/components/ContentComponent.vue';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'SomePage',
|
||||||
|
components: {
|
||||||
|
ContentComponent,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
currentLink() {
|
||||||
|
return this.$route.path;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
</style>
|
||||||
|
|
||||||
25
src/content/meetingpoint/YouthMinistryContent.vue
Normal file
25
src/content/meetingpoint/YouthMinistryContent.vue
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<template>
|
||||||
|
<div class="some-page">
|
||||||
|
<ContentComponent :link="currentLink" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ContentComponent from '@/components/ContentComponent.vue';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'SomePage',
|
||||||
|
components: {
|
||||||
|
ContentComponent,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
currentLink() {
|
||||||
|
return this.$route.path;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
</style>
|
||||||
|
|
||||||
@@ -1,11 +1,25 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div class="some-page">
|
||||||
<h2>Flötenkinder</h2>
|
<ContentComponent :link="currentLink" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
import ContentComponent from '@/components/ContentComponent.vue';
|
||||||
name: 'FlootChildrenContent',
|
|
||||||
};
|
export default {
|
||||||
</script>
|
name: 'SomePage',
|
||||||
|
components: {
|
||||||
|
ContentComponent,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
currentLink() {
|
||||||
|
return this.$route.path;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
</style>
|
||||||
|
|
||||||
25
src/content/music/MiriamkantoreiContent.vue
Normal file
25
src/content/music/MiriamkantoreiContent.vue
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<template>
|
||||||
|
<div class="some-page">
|
||||||
|
<ContentComponent :link="currentLink" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ContentComponent from '@/components/ContentComponent.vue';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'SomePage',
|
||||||
|
components: {
|
||||||
|
ContentComponent,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
currentLink() {
|
||||||
|
return this.$route.path;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
</style>
|
||||||
|
|
||||||
23
src/content/music/VocalEnsembleContent.vue
Normal file
23
src/content/music/VocalEnsembleContent.vue
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<template>
|
||||||
|
<div class="some-page">
|
||||||
|
<ContentComponent :link="currentLink" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ContentComponent from '@/components/ContentComponent.vue';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'SomePage',
|
||||||
|
components: {
|
||||||
|
ContentComponent,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
currentLink() {
|
||||||
|
return this.$route.path;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
||||||
Reference in New Issue
Block a user