diff --git a/app/pages/admin/events/create.vue b/app/pages/admin/events/create.vue index a3d56e3..07267e5 100644 --- a/app/pages/admin/events/create.vue +++ b/app/pages/admin/events/create.vue @@ -232,6 +232,26 @@ + +
+

Tags

+ +
+ + +

+ Tag this event to help with discovery and recommendations +

+
+
+

Ticketing

@@ -584,6 +604,11 @@ const formErrors = ref([]); const fieldErrors = ref({}); const selectedSeriesId = ref(null); const availableSeries = ref([]); +const availableTags = ref([]); + +const tagOptions = computed(() => + availableTags.value.map((t) => ({ label: t.label, value: t.slug })) +); const eventForm = reactive({ title: "", @@ -599,6 +624,7 @@ const eventForm = reactive({ isCancelled: false, cancellationMessage: "", targetCircles: [], + tags: [], maxAttendees: "", registrationRequired: false, registrationDeadline: "", @@ -632,15 +658,17 @@ const removeAgendaItem = (index) => { eventForm.agenda.splice(index, 1); }; -// Load available series +// Load available series and tags onMounted(async () => { try { - const response = await $fetch("/api/admin/series"); - console.log("Loaded series:", response); - availableSeries.value = response; - console.log("availableSeries.value:", availableSeries.value); + const [seriesResponse, tagsResponse] = await Promise.all([ + $fetch("/api/admin/series"), + $fetch("/api/tags"), + ]); + availableSeries.value = seriesResponse; + availableTags.value = tagsResponse.tags || []; } catch (error) { - console.error("Failed to load series:", error); + console.error("Failed to load form data:", error); } }); @@ -692,6 +720,7 @@ if (route.query.edit) { isCancelled: event.isCancelled || false, cancellationMessage: event.cancellationMessage || "", targetCircles: event.targetCircles || [], + tags: event.tags || [], maxAttendees: event.maxAttendees || "", registrationRequired: event.registrationRequired, registrationDeadline: event.registrationDeadline @@ -912,6 +941,7 @@ const saveAndCreateAnother = async () => { isCancelled: false, cancellationMessage: "", targetCircles: [], + tags: [], maxAttendees: "", registrationRequired: false, registrationDeadline: "", diff --git a/server/models/event.js b/server/models/event.js index 16245bc..ff2e2b0 100644 --- a/server/models/event.js +++ b/server/models/event.js @@ -142,6 +142,7 @@ const eventSchema = new mongoose.Schema({ maxAttendees: Number, registrationRequired: { type: Boolean, default: false }, registrationDeadline: Date, + tags: [String], // Tag slugs from Tag collection agenda: [String], speakers: [ {