From c172c057eb458f7eacde13054fc369c3761654c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Tollk=C3=BChn?= Date: Wed, 7 Oct 2026 22:14:56 +0200 Subject: [PATCH] add compatibility to nextcloud app jitsi_calendar --- assets/i18n.json | 12 ++++++++---- assets/launch.js | 26 +++++++++++++++++++------- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/assets/i18n.json b/assets/i18n.json index bd09faf..ad8ca94 100644 --- a/assets/i18n.json +++ b/assets/i18n.json @@ -83,7 +83,8 @@ "endTimeRequired": "Please select an end time", "endAfterStart": "End time must be after start time", "organizerRequired": "Please enter an organizer email", - "organizerInvalid": "Please enter a valid organizer email address" + "organizerInvalid": "Please enter a valid organizer email address", + "nextcloudButton": "Create in Nextcloud Calendar" } }, "de": { @@ -170,7 +171,8 @@ "endTimeRequired": "Bitte wählen Sie eine Endzeit", "endAfterStart": "Die Endzeit muss nach der Startzeit liegen", "organizerRequired": "Bitte geben Sie eine Organisator-E-Mail ein", - "organizerInvalid": "Bitte geben Sie eine gültige Organisator-E-Mail-Adresse ein" + "organizerInvalid": "Bitte geben Sie eine gültige Organisator-E-Mail-Adresse ein", + "nextcloudButton": "Im Nextcloud-Kalender erstellen" } }, "fr": { @@ -257,7 +259,8 @@ "endTimeRequired": "Veuillez sélectionner une heure de fin", "endAfterStart": "L'heure de fin doit être après l'heure de début", "organizerRequired": "Veuillez entrer un email d'organisateur", - "organizerInvalid": "Veuillez entrer une adresse email d'organisateur valide" + "organizerInvalid": "Veuillez entrer une adresse email d'organisateur valide", + "nextcloudButton": "Créer dans le calendrier Nextcloud" } }, "zh": { @@ -344,7 +347,8 @@ "endTimeRequired": "请选择结束时间", "endAfterStart": "结束时间必须晚于开始时间", "organizerRequired": "请输入组织者邮箱", - "organizerInvalid": "请输入有效的组织者邮箱地址" + "organizerInvalid": "请输入有效的组织者邮箱地址", + "nextcloudButton": "在 Nextcloud 日历中创建" } } } diff --git a/assets/launch.js b/assets/launch.js index 6628049..f573416 100644 --- a/assets/launch.js +++ b/assets/launch.js @@ -14,6 +14,10 @@ const CONFIG = { * Your Jitsi domain. */ jitsiHost: "meet.bnvb-ingenieure.de", + /* + * Your Nextcloud instance (calendar event creation). + */ + nextcloudBase: "https://cloud.bnvb-ingenieure.de", /* * Timeout trying to start the jitsi-meet-electron client */ @@ -1020,13 +1024,13 @@ function openNextcloudCalendarCreator() { meetingOrganizerInput.value.trim(); if (!meetingName) { - alert('Please enter a meeting name.'); + alert(getTranslation('creator.meetingNameRequired') || 'Please enter a meeting name.'); meetingNameInput.focus(); return; } if (!startTime || !endTime) { - alert('Please enter start and end time.'); + alert(getTranslation('creator.startTimeRequired') || 'Please select a start time.'); return; } @@ -1040,7 +1044,18 @@ function openNextcloudCalendarCreator() { } if (end <= start) { - alert('End time must be after start time.'); + alert(getTranslation('creator.endAfterStart') || 'End time must be after start time.'); + return; + } + + /* + * Nextcloud validiert die E-Mail serverseitig und + * bricht sonst mit einer Fehlerseite ab. + */ + const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; + + if (organizer && !emailPattern.test(organizer)) { + alert(getTranslation('creator.organizerInvalid') || 'Please enter a valid organizer email address.'); return; } @@ -1053,9 +1068,6 @@ function openNextcloudCalendarCreator() { const meetingUrl = createLaunchUrl(roomName); - const nextcloudBase = - 'https://cloud.bnvb-ingenieure.de'; - const params = new URLSearchParams(); params.set('summary', meetingName); @@ -1075,7 +1087,7 @@ function openNextcloudCalendarCreator() { params.set('url', meetingUrl); const nextcloudUrl = - nextcloudBase + + CONFIG.nextcloudBase + '/index.php/apps/jitsi_calendar/confirm?' + params.toString();