transliterate special chars better
This commit is contained in:
1 parent
5b128f9d50
commit
de8ea49ee7
1 file changed
+48
-2
+48
-2
@@ -1373,6 +1373,52 @@
|
|||||||
}, CONFIG.launchTimeout);
|
}, CONFIG.launchTimeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ============================================================
|
||||||
|
* ROOM NAME
|
||||||
|
* ============================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sonderzeichen in das nächstliegende ASCII-Zeichen
|
||||||
|
* umwandeln.
|
||||||
|
*
|
||||||
|
* Beispiel:
|
||||||
|
*
|
||||||
|
* "Grundstück" ergibt "Grundstueck"
|
||||||
|
* "François" ergibt "Francois"
|
||||||
|
*/
|
||||||
|
function transliterate(text) {
|
||||||
|
const extras = {
|
||||||
|
"ß": "ss",
|
||||||
|
"ẞ": "ss",
|
||||||
|
"æ": "ae",
|
||||||
|
"Æ": "ae",
|
||||||
|
"œ": "oe",
|
||||||
|
"Œ": "oe",
|
||||||
|
"ø": "o",
|
||||||
|
"Ø": "o"
|
||||||
|
};
|
||||||
|
|
||||||
|
return text
|
||||||
|
.normalize("NFD")
|
||||||
|
.replace(/[\u0300-\u036f]/g, "")
|
||||||
|
.replace(/[ßẞæÆœŒøØ]/g, (char) => extras[char]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Aus dem Meeting-Namen einen gültigen Room-Namen ableiten.
|
||||||
|
*
|
||||||
|
* Beispiel:
|
||||||
|
*
|
||||||
|
* "Grund Stück Planung" ergibt "grund-stuck-planung"
|
||||||
|
*/
|
||||||
|
function createRoomName(meetingName) {
|
||||||
|
return transliterate(meetingName)
|
||||||
|
.toLowerCase()
|
||||||
|
.replace(/\s+/g, "-")
|
||||||
|
.replace(/[^a-z0-9-]/g, "");
|
||||||
|
}
|
||||||
|
|
||||||
/* ============================================================
|
/* ============================================================
|
||||||
* ICS FILE GENERATION
|
* ICS FILE GENERATION
|
||||||
* ============================================================
|
* ============================================================
|
||||||
@@ -1380,7 +1426,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 = createRoomName(meetingName);
|
||||||
const meetingUrl = `https://${CONFIG.jitsiLauncher}/launch.html?room=${encodeURIComponent(roomName)}`;
|
const meetingUrl = `https://${CONFIG.jitsiLauncher}/launch.html?room=${encodeURIComponent(roomName)}`;
|
||||||
|
|
||||||
/* Format dates for ICS */
|
/* Format dates for ICS */
|
||||||
@@ -1525,7 +1571,7 @@ END:VCALENDAR`;
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ROOM_PATTERN.test(meetingName)) {
|
if (!ROOM_PATTERN.test(createRoomName(meetingName))) {
|
||||||
alert(getTranslation('creator.meetingNameInvalid') || 'Meeting name may only contain letters, numbers and hyphens');
|
alert(getTranslation('creator.meetingNameInvalid') || 'Meeting name may only contain letters, numbers and hyphens');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user