The legal notice link in the navbar was hardcoded to the bnvb website. Deployments without that legal notice showed a dead link to a foreign site. Move the URL into assets/config.json (legalNotice), like the Nextcloud and adhoc buttons. The link stays hidden unless the entry is configured.
325 lines
13 KiB
HTML
325 lines
13 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Jitsi Meeting</title>
|
|
<link id="faviconIco" href="assets/images/favicon.ico" rel="alternate icon">
|
|
<link id="appleTouchIcon" href="assets/images/apple-touch-icon.png" rel="apple-touch-icon" sizes="180x180">
|
|
<link id="faviconSvg" href="assets/images/favicon.svg" rel="icon" type="image/svg+xml">
|
|
<link rel="stylesheet" href="assets/css/launch.css">
|
|
</head>
|
|
|
|
<body>
|
|
<svg width="0" height="0" style="position: absolute;" aria-hidden="true">
|
|
<filter id="logo-dark-tint">
|
|
<feColorMatrix type="matrix" values="0 0 0 0 0.8667
|
|
0 0 0 0 0.8431
|
|
0 0 0 0 0.8235
|
|
0 0 0 1 0"/>
|
|
</filter>
|
|
</svg>
|
|
|
|
<nav class="navbar">
|
|
<div id="logoBar" class="logo-bar hidden">
|
|
<img id="logoImage" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" alt="Logo">
|
|
</div>
|
|
<button id="navToggle" class="button secondary nav-toggle" type="button" aria-haspopup="true" aria-expanded="false" aria-controls="navActions" aria-label="Menu">
|
|
<svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
<path d="M4 7h16M4 12h16M4 17h16"/>
|
|
</svg>
|
|
</button>
|
|
<div id="navActions" class="nav-actions">
|
|
<a id="legalNoticeLink" class="button secondary hidden" href="#" target="_blank" rel="noopener noreferrer" data-i18n="legal_notice">
|
|
Legal Notice
|
|
</a>
|
|
<a class="button secondary" href="https://git.bnvb.eu/stefan.tollkuehn/jitsi-launch" target="_blank" rel="noopener noreferrer" data-i18n="source">
|
|
Source
|
|
</a>
|
|
<div id="langMenu" class="lang-menu">
|
|
<button id="langButton" class="button secondary" type="button" aria-haspopup="true" aria-expanded="false">
|
|
<img id="langFlag" class="lang-flag" src="assets/images/uk.svg" alt="">
|
|
<span id="langLabel">English</span>
|
|
</button>
|
|
<div id="langDropdown" class="lang-dropdown">
|
|
<button type="button" data-lang="en"><img class="lang-flag" src="assets/images/uk.svg" alt="">English</button>
|
|
<button type="button" data-lang="de"><img class="lang-flag" src="assets/images/de.svg" alt="">Deutsch</button>
|
|
<button type="button" data-lang="fr"><img class="lang-flag" src="assets/images/fr.svg" alt="">Français</button>
|
|
<button type="button" data-lang="zh"><img class="lang-flag" src="assets/images/cn.svg" alt="">中文</button>
|
|
</div>
|
|
</div>
|
|
<button id="themeButton" class="button secondary" type="button" aria-label="Toggle dark mode">
|
|
<svg id="themeIconMoon" class="theme-icon" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
<path d="M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8z"/>
|
|
</svg>
|
|
<svg id="themeIconSun" class="theme-icon hidden" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
<circle cx="12" cy="12" r="4"/>
|
|
<path d="M12 2v2m0 16v2M4.9 4.9l1.4 1.4m11.4 11.4 1.4 1.4M2 12h2m16 0h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4"/>
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
</nav>
|
|
|
|
<div class="container">
|
|
<div class="card">
|
|
|
|
<!-- NORMALER LAUNCHER -->
|
|
<div id="launcher" class="hidden">
|
|
<h1 data-i18n="launcher.title">Jitsi Meeting</h1>
|
|
|
|
<p>
|
|
<span data-i18n="launcher.meetingPrefix">
|
|
The meeting
|
|
</span>
|
|
<span class="room">
|
|
<strong id="roomName"></strong>
|
|
</span>
|
|
<span data-i18n="launcher.meetingSuffix">
|
|
will be opened.
|
|
</span>
|
|
</p>
|
|
|
|
<button id="openButton" class="button primary" type="button" data-i18n="launcher.openButton">
|
|
Open meeting
|
|
</button>
|
|
|
|
<button id="createNewFromLauncherButton" class="button secondary hidden" type="button" data-i18n="creator.createNewButton">
|
|
Create New Meeting
|
|
</button>
|
|
</div>
|
|
|
|
<!-- STARTVORGANG -->
|
|
<div id="starting" class="hidden">
|
|
<h1 data-i18n="starting.title">
|
|
Starting Jitsi Meet …
|
|
</h1>
|
|
|
|
<div class="status">
|
|
<span class="spinner"></span>
|
|
<span data-i18n="starting.status">
|
|
The Jitsi Meet desktop client is being opened.
|
|
</span>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- FALLBACK -->
|
|
<div id="fallback" class="hidden">
|
|
<h1 data-i18n="fallback.title">
|
|
Jitsi Meet could not be opened
|
|
</h1>
|
|
|
|
<p data-i18n="fallback.description">
|
|
The Jitsi Meet desktop client may not have been started.
|
|
</p>
|
|
|
|
<button id="retryButton" class="button primary" type="button" data-i18n="fallback.retryButton">
|
|
Try again
|
|
</button>
|
|
|
|
<!-- Windows -->
|
|
<div id="windowsDownload" class="download hidden">
|
|
<h2 data-i18n="downloads.windows.title">
|
|
Jitsi Meet for Microsoft Windows
|
|
</h2>
|
|
|
|
<p data-i18n="downloads.windows.description">
|
|
Install the Jitsi Meet desktop client and then try opening the meeting again.
|
|
</p>
|
|
|
|
<a id="windowsLink" class="button secondary" target="_blank" rel="noopener noreferrer" data-i18n="downloads.windows.button">
|
|
Download Jitsi for Windows
|
|
</a>
|
|
</div>
|
|
|
|
<!-- macOS -->
|
|
<div id="macosDownload" class="download hidden">
|
|
<h2 data-i18n="downloads.macos.title">
|
|
Jitsi Meet for Apple macOS
|
|
</h2>
|
|
|
|
<p data-i18n="downloads.macos.description">
|
|
Install the Jitsi Meet desktop client and then try opening the meeting again.
|
|
</p>
|
|
|
|
<a id="macosLink" class="button secondary" target="_blank" rel="noopener noreferrer" data-i18n="downloads.macos.button">
|
|
Download Jitsi for macOS
|
|
</a>
|
|
</div>
|
|
|
|
<!-- 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>
|
|
|
|
<!-- iOS -->
|
|
<div id="iosDownload" class="download hidden">
|
|
<h2 data-i18n="downloads.ios.title">
|
|
Jitsi Meet for iOS
|
|
</h2>
|
|
|
|
<p data-i18n="downloads.ios.description">
|
|
Install the Jitsi Meet app and then try opening the meeting again.
|
|
</p>
|
|
|
|
<a id="iosLink" class="button secondary" target="_blank" rel="noopener noreferrer" data-i18n="downloads.ios.button">
|
|
Download Jitsi for iOS
|
|
</a>
|
|
</div>
|
|
|
|
<!-- Android -->
|
|
<div id="androidDownload" class="download hidden">
|
|
<h2 data-i18n="downloads.android.title">
|
|
Jitsi Meet for Android
|
|
</h2>
|
|
|
|
<p data-i18n="downloads.android.description">
|
|
Install the Jitsi Meet app and then try opening the meeting again.
|
|
</p>
|
|
|
|
<a id="androidLink" class="button secondary" target="_blank" rel="noopener noreferrer" data-i18n="downloads.android.button">
|
|
Download Jitsi for Android
|
|
</a>
|
|
</div>
|
|
|
|
<!-- unknown -->
|
|
<div id="otherDownload" class="download hidden">
|
|
<h2 data-i18n="downloads.other.title">
|
|
Jitsi Meet Desktop
|
|
</h2>
|
|
|
|
<p data-i18n="downloads.other.description">
|
|
No desktop download is configured for your operating system.
|
|
</p>
|
|
</div>
|
|
|
|
<!-- Browser -->
|
|
<div class="download">
|
|
<h2 data-i18n="browser.title">
|
|
Join in browser
|
|
</h2>
|
|
|
|
<p data-i18n="browser.description">
|
|
You can also join the meeting directly in your browser.
|
|
</p>
|
|
|
|
<a id="browserLink" class="button secondary" data-i18n="browser.button">
|
|
Join in browser
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- FEHLER -->
|
|
<div id="invalidRoom" class="hidden">
|
|
<h1 id="missingRoomTitle" data-i18n="error.title">
|
|
No meeting specified
|
|
</h1>
|
|
|
|
<div id="missingRoomError" class="error">
|
|
<span data-i18n="error.description">
|
|
Please specify a meeting using the
|
|
</span>
|
|
<code>?room=...</code>
|
|
<span data-i18n="error.descriptionSuffix">
|
|
parameter.
|
|
</span>
|
|
</div>
|
|
|
|
<h1 id="invalidNameTitle" class="hidden" data-i18n="error.invalidTitle">
|
|
Invalid meeting name
|
|
</h1>
|
|
|
|
<div id="invalidNameError" class="error hidden">
|
|
<span data-i18n="error.invalidDescription">
|
|
Only letters, numbers and hyphens are allowed:
|
|
</span>
|
|
<br>
|
|
<span class="room">
|
|
<strong id="invalidRoomName"></strong>
|
|
</span>
|
|
</div>
|
|
|
|
<div style="margin-top: 24px;">
|
|
<button id="createNewMeetingButton" class="button primary hidden" type="button" data-i18n="creator.createNewButton">
|
|
Create New Meeting
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- MEETING CREATOR -->
|
|
<div id="meetingCreator" class="hidden">
|
|
<h1 data-i18n="creator.title">Create New Meeting</h1>
|
|
|
|
<div class="form-group">
|
|
<label for="meetingName" data-i18n="creator.meetingNameLabel">Meeting Name</label>
|
|
<input type="text" id="meetingName" placeholder="My Meeting" data-i18n-placeholder="creator.meetingNamePlaceholder" />
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="meetingDescription" data-i18n="creator.meetingDescriptionLabel">Description</label>
|
|
<textarea id="meetingDescription" placeholder="Meeting description (optional)" data-i18n-placeholder="creator.meetingDescriptionPlaceholder"></textarea>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="meetingStart" data-i18n="creator.meetingStartLabel">Start Date & Time</label>
|
|
<input type="datetime-local" id="meetingStart" step="900" />
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="meetingEnd" data-i18n="creator.meetingEndLabel">End Date & Time</label>
|
|
<input type="datetime-local" id="meetingEnd" step="900" />
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<label for="meetingOrganizer" data-i18n="creator.meetingOrganizerLabel">Organizer Email</label>
|
|
<input type="email" id="meetingOrganizer" placeholder="organizer@example.com" />
|
|
</div>
|
|
|
|
<div class="form-actions">
|
|
<button id="createMeetingButton" class="button primary" type="button" data-i18n="creator.createButton">
|
|
Create Meeting
|
|
</button>
|
|
<button id="createNextcloudButton" class="button primary hidden" type="button" data-i18n="creator.nextcloudButton">
|
|
Create in Nextcloud Calendar
|
|
</button>
|
|
<button id="createAdhocButton" class="button secondary hidden" type="button" data-i18n="creator.adhocButton">
|
|
Create Adhoc Link
|
|
</button>
|
|
<button id="cancelCreateButton" class="button secondary" type="button" data-i18n="creator.cancelButton">
|
|
Cancel
|
|
</button>
|
|
</div>
|
|
|
|
<div id="adhocResult" class="adhoc-result hidden">
|
|
<span data-i18n="creator.adhocLinkLabel">Your adhoc meeting link:</span>
|
|
<div class="adhoc-link">
|
|
<a id="adhocLink" target="_blank" rel="noopener noreferrer"></a>
|
|
<button id="copyAdhocLinkButton" class="button secondary" type="button" data-i18n="creator.copyLinkButton">Copy Link</button>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="icsSuccess" class="success-message hidden">
|
|
<span data-i18n="creator.successMessage">Meeting created! Download your calendar file and open it to import the meeting into your personal calendar.</span>
|
|
<a id="downloadIcsLink" class="button primary" style="margin-top: 12px; display: inline-block;" data-i18n="creator.downloadButton">Download ICS File</a>
|
|
</div>
|
|
|
|
<div id="nextcloudStatus" class="success-message hidden" aria-live="polite"></div>
|
|
|
|
<div id="nextcloudError" class="error hidden" aria-live="assertive"></div>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<script src="assets/lib/ua-parser.min.js"></script>
|
|
<script src="assets/launch.js"></script>
|
|
</body>
|
|
</html> |