Compare commits

..
2 Commits
Author SHA1 Message Date
stefan.tollkuehn eb1e62c511 add email validator 2026-09-29 14:38:34 +02:00
stefan.tollkuehn a557d76e72 - rename AGENT.md to AGENTS.md
- show new meeting button only if the room parameter is not provided
2026-09-23 17:35:16 +02:00
2 changed files with 80 additions and 15 deletions

No files matched your search

View File
File renamed without changes.
+80 -15
View File
@@ -241,7 +241,7 @@
Open meeting Open meeting
</button> </button>
<button id="createNewFromLauncherButton" class="button secondary" type="button" data-i18n="creator.createNewButton"> <button id="createNewFromLauncherButton" class="button secondary hidden" type="button" data-i18n="creator.createNewButton">
Create New Meeting Create New Meeting
</button> </button>
</div> </div>
@@ -277,12 +277,11 @@
<!-- Windows --> <!-- Windows -->
<div id="windowsDownload" class="download hidden"> <div id="windowsDownload" class="download hidden">
<h2 data-i18n="downloads.windows.title"> <h2 data-i18n="downloads.windows.title">
Jitsi Meet for Windows Jitsi Meet for Microsoft Windows
</h2> </h2>
<p data-i18n="downloads.windows.description"> <p data-i18n="downloads.windows.description">
Install the Jitsi Meet desktop client and then try opening the Install the Jitsi Meet desktop client and then try opening the meeting again.
meeting again.
</p> </p>
<a id="windowsLink" class="button secondary" target="_blank" rel="noopener noreferrer" data-i18n="downloads.windows.button"> <a id="windowsLink" class="button secondary" target="_blank" rel="noopener noreferrer" data-i18n="downloads.windows.button">
@@ -293,12 +292,11 @@
<!-- macOS --> <!-- macOS -->
<div id="macosDownload" class="download hidden"> <div id="macosDownload" class="download hidden">
<h2 data-i18n="downloads.macos.title"> <h2 data-i18n="downloads.macos.title">
Jitsi Meet for macOS Jitsi Meet for Apple macOS
</h2> </h2>
<p data-i18n="downloads.macos.description"> <p data-i18n="downloads.macos.description">
Install the Jitsi Meet desktop client and then try opening the Install the Jitsi Meet desktop client and then try opening the meeting again.
meeting again.
</p> </p>
<a id="macosLink" class="button secondary" target="_blank" rel="noopener noreferrer" data-i18n="downloads.macos.button"> <a id="macosLink" class="button secondary" target="_blank" rel="noopener noreferrer" data-i18n="downloads.macos.button">
@@ -306,7 +304,22 @@
</a> </a>
</div> </div>
<!-- Linux / unbekannt --> <!-- Linux -->
<div id="linuxDownload" class="download hidden">
<h2 data-i18n="downloads.linux.title">
Jitsi Meet for Linux
</h2>
<p data-i18n="downloads.linux.description">
Install the Jitsi Meet desktop client and then try opening the meeting again.
</p>
<a id="linuxLink" class="button secondary" target="_blank" rel="noopener noreferrer" data-i18n="downloads.linux.button">
Download Jitsi for Linux
</a>
</div>
<!-- unknown -->
<div id="otherDownload" class="download hidden"> <div id="otherDownload" class="download hidden">
<h2 data-i18n="downloads.other.title"> <h2 data-i18n="downloads.other.title">
Jitsi Meet Desktop Jitsi Meet Desktop
@@ -350,7 +363,7 @@
</div> </div>
<div style="margin-top: 24px;"> <div style="margin-top: 24px;">
<button id="createNewMeetingButton" class="button primary" type="button" data-i18n="creator.createNewButton"> <button id="createNewMeetingButton" class="button primary hidden" type="button" data-i18n="creator.createNewButton">
Create New Meeting Create New Meeting
</button> </button>
</div> </div>
@@ -416,7 +429,11 @@
const CONFIG = { const CONFIG = {
/* /*
* Your Jitsi Domain. * Your Jitsi Launcher domain
*/
jitsiLauncher: "meet.bnvb.eu",
/*
* Your Jitsi domain.
*/ */
jitsiHost: "meet.bnvb-ingenieure.de", jitsiHost: "meet.bnvb-ingenieure.de",
/* /*
@@ -429,7 +446,8 @@
*/ */
downloads: { downloads: {
windows: "https://github.com/jitsi/jitsi-meet-electron/releases", windows: "https://github.com/jitsi/jitsi-meet-electron/releases",
macos: "https://github.com/jitsi/jitsi-meet-electron/releases" macos: "https://github.com/jitsi/jitsi-meet-electron/releases",
linux: "https://github.com/jitsi/jitsi-meet-electron/releases"
} }
}; };
@@ -475,6 +493,13 @@
button: "Download Jitsi for macOS" button: "Download Jitsi for macOS"
}, },
linux: {
title: "Jitsi Meet for Linux",
description:
"Install the Jitsi Meet desktop client and then try opening the meeting again.",
button: "Download Jitsi for Linux"
},
other: { other: {
title: "Jitsi Meet Desktop", title: "Jitsi Meet Desktop",
description: description:
@@ -511,7 +536,8 @@
startTimeRequired: "Please select a start time", startTimeRequired: "Please select a start time",
endTimeRequired: "Please select an end time", endTimeRequired: "Please select an end time",
endAfterStart: "End time must be after start time", endAfterStart: "End time must be after start time",
organizerRequired: "Please enter an organizer email" organizerRequired: "Please enter an organizer email",
organizerInvalid: "Please enter a valid organizer email address"
} }
}, },
@@ -552,6 +578,13 @@
button: "Jitsi für macOS herunterladen" button: "Jitsi für macOS herunterladen"
}, },
linux: {
title: "Jitsi Meet für Linux",
description:
"Installiere den Jitsi Meet Desktop-Client und versuche anschließend erneut, das Meeting zu öffnen.",
button: "Jitsi für Linux herunterladen"
},
other: { other: {
title: "Jitsi Meet Desktop", title: "Jitsi Meet Desktop",
description: description:
@@ -589,7 +622,8 @@
startTimeRequired: "Bitte wähle eine Startzeit", startTimeRequired: "Bitte wähle eine Startzeit",
endTimeRequired: "Bitte wähle eine Endzeit", endTimeRequired: "Bitte wähle eine Endzeit",
endAfterStart: "Die Endzeit muss nach der Startzeit liegen", endAfterStart: "Die Endzeit muss nach der Startzeit liegen",
organizerRequired: "Bitte gib eine Organisator-E-Mail ein" organizerRequired: "Bitte gib eine Organisator-E-Mail ein",
organizerInvalid: "Bitte gib eine gültige Organisator-E-Mail-Adresse ein"
} }
}, },
@@ -630,6 +664,13 @@
button: "Télécharger Jitsi pour macOS" button: "Télécharger Jitsi pour macOS"
}, },
linux: {
title: "Jitsi Meet pour Linux",
description:
"Installez le client bureau Jitsi Meet, puis essayez de rouvrir la réunion.",
button: "Télécharger Jitsi pour Linux"
},
other: { other: {
title: "Jitsi Meet Desktop", title: "Jitsi Meet Desktop",
description: description:
@@ -666,7 +707,8 @@
startTimeRequired: "Veuillez sélectionner une heure de début", startTimeRequired: "Veuillez sélectionner une heure de début",
endTimeRequired: "Veuillez sélectionner une heure de fin", endTimeRequired: "Veuillez sélectionner une heure de fin",
endAfterStart: "L'heure de fin doit être après l'heure de début", endAfterStart: "L'heure de fin doit être après l'heure de début",
organizerRequired: "Veuillez entrer un email d'organisateur" organizerRequired: "Veuillez entrer un email d'organisateur",
organizerInvalid: "Veuillez entrer une adresse email d'organisateur valide"
} }
} }
}; };
@@ -770,9 +812,11 @@
const browserLink = document.getElementById("browserLink"); const browserLink = document.getElementById("browserLink");
const windowsDownload = document.getElementById("windowsDownload"); const windowsDownload = document.getElementById("windowsDownload");
const macosDownload = document.getElementById("macosDownload"); const macosDownload = document.getElementById("macosDownload");
const linuxDownload = document.getElementById("linuxDownload");
const otherDownload = document.getElementById("otherDownload"); const otherDownload = document.getElementById("otherDownload");
const windowsLink = document.getElementById("windowsLink"); const windowsLink = document.getElementById("windowsLink");
const macosLink = document.getElementById("macosLink"); const macosLink = document.getElementById("macosLink");
const linuxLink = document.getElementById("linuxLink");
const createNewMeetingButton = document.getElementById("createNewMeetingButton"); const createNewMeetingButton = document.getElementById("createNewMeetingButton");
const createNewFromLauncherButton = document.getElementById("createNewFromLauncherButton"); const createNewFromLauncherButton = document.getElementById("createNewFromLauncherButton");
@@ -977,6 +1021,7 @@
windowsDownload.classList.add("hidden"); windowsDownload.classList.add("hidden");
macosDownload.classList.add("hidden"); macosDownload.classList.add("hidden");
linuxDownload.classList.add("hidden");
otherDownload.classList.add("hidden"); otherDownload.classList.add("hidden");
/* Windows */ /* Windows */
@@ -993,6 +1038,13 @@
return; return;
} }
/* Linux */
if (os === "linux") {
linuxLink.href = CONFIG.downloads.linux;
linuxDownload.classList.remove("hidden");
return;
}
/* Alles andere */ /* Alles andere */
otherDownload.classList.remove("hidden"); otherDownload.classList.remove("hidden");
} }
@@ -1135,7 +1187,7 @@
function generateICS(meetingName, description, startTime, endTime, organizer) { function generateICS(meetingName, description, startTime, endTime, organizer) {
/* Generate a unique room name from the meeting name */ /* Generate a unique room name from the meeting name */
const roomName = meetingName.toLowerCase().replace(/\s+/g, '-').replace(/[^a-z0-9-]/g, ''); const roomName = meetingName.toLowerCase().replace(/\s+/g, '-').replace(/[^a-z0-9-]/g, '');
const meetingUrl = `https://${CONFIG.jitsiHost}/launch.html?room=${encodeURIComponent(roomName)}`; const meetingUrl = `https://${CONFIG.jitsiLauncher}/launch.html?room=${encodeURIComponent(roomName)}`;
/* Format dates for ICS */ /* Format dates for ICS */
const formatICSDate = (date) => { const formatICSDate = (date) => {
@@ -1252,6 +1304,12 @@ END:VCALENDAR`;
return; return;
} }
const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailPattern.test(organizer)) {
alert(getTranslation('creator.organizerInvalid') || 'Please enter a valid organizer email address');
return;
}
/* Generate ICS */ /* Generate ICS */
const icsData = generateICS(meetingName, description || meetingName, startTime, endTime, organizer); const icsData = generateICS(meetingName, description || meetingName, startTime, endTime, organizer);
@@ -1295,6 +1353,8 @@ END:VCALENDAR`;
*/ */
if (!isValidRoom(room)) { if (!isValidRoom(room)) {
invalidRoom.classList.remove("hidden"); invalidRoom.classList.remove("hidden");
/* Show the create new meeting button when no room is specified */
createNewMeetingButton.classList.remove("hidden");
return; return;
} }
@@ -1313,6 +1373,11 @@ END:VCALENDAR`;
*/ */
launcher.classList.remove("hidden"); launcher.classList.remove("hidden");
/*
* Hide the "Create New Meeting" button when a valid room is specified
*/
createNewFromLauncherButton.classList.add("hidden");
/* /*
* Debug-Informationen. * Debug-Informationen.
*/ */