Improvements to jitsi a11y and css
[jitsi-ansible.git] / files / index.html
1 <html itemscope itemtype="http://schema.org/Product" prefix="og: http://ogp.me/ns#" xmlns="http://www.w3.org/1999/html">
2 <!--
3
4 Copyright (C) 2020 8x8, Inc
5 Copyright (C) 2020 Free Software Foundation
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20
21 -->
22 <head>
23 <!--#include virtual="head.html" -->
24 <meta charset="utf-8">
25 <meta http-equiv="content-type" content="text/html;charset=utf-8">
26 <meta name="viewport" content="width=device-width, initial-scale=1.0">
27 <!--#include virtual="base.html" -->
28
29 <link rel="apple-touch-icon" href="images/apple-touch-icon.png">
30 <link rel="stylesheet" href="css/all.css?v=4289">
31 <style>
32 body {background: #222!important}
33 #fsflogo{
34 background: #800000;
35 }
36
37 #site-logo{
38 width:400px;
39 padding:40px;
40 margin: auto;
41 }
42
43 #fsfcustom{
44 color:black!important;
45 background: #fff;
46 width:680px;
47 margin: 30px auto;
48 padding:15px;
49 border-radius: 10px!important;
50 }
51
52 .welcome-page .header-text-title {
53 display: none
54 }
55
56 #fsfcustom p {
57 font-size:medium;
58 padding:10px;
59 }
60
61 #fsffooter a{
62 color:#75A7E7
63 }
64
65 #fsffooter{
66 font-size:larger;
67 background: #222;
68 height:200px;
69 }
70
71 #fsffooter .content{
72 padding-top:50px;
73 width:680px;
74 margin: auto;
75 }
76
77 #welcome_page{
78 min-height:0!important;
79 }
80
81 .welcome-page .header{
82 margin-bottom: 40px!important;
83 }
84
85 .welcome .welcome-page-settings{
86 position:relative;
87 }
88
89 .welcome .header-text{
90 margin-top:22px!important;
91 }
92 .welcome-page .leftwatermark, .header-text-description{
93 display: none!important;
94 }
95 .invite-more-container{
96 display: none;
97 }
98 .invite-more-dialog.icon-container div:nth-child(n+3)
99 {
100 display:none
101 }
102 </style>
103 <script type="text/javascript">
104 /** @licstart The following is the entire license notice for the
105 * JavaScript code in this page
106 *
107 * Copyright (C) 8x8, Inc.
108 *
109 * Licensed under the Apache License, Version 2.0 (the \"License\");
110 * you may not use this file except in compliance with the License.
111 * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
112 *
113 * @licend The above is the entire license notice
114 * for the JavaScript code in this page.
115 */
116 </script>
117 <script>
118 document.addEventListener('DOMContentLoaded', () => {
119 if (!JitsiMeetJS.app) {
120 return;
121 }
122
123 JitsiMeetJS.app.renderEntryPoint({
124 Component: JitsiMeetJS.app.entryPoints.APP
125 })
126 })
127 </script>
128 <script>
129 // IE11 and earlier can be identified via their user agent and be
130 // redirected to a page that is known to have no newer js syntax.
131 if (window.navigator.userAgent.match(/(MSIE|Trident)/)) {
132 var roomName = encodeURIComponent(window.location.pathname);
133 window.location.href = "static/recommendedBrowsers.html" + "?room=" + roomName;
134 }
135
136 window.indexLoadedTime = window.performance.now();
137 console.log("(TIME) index.html loaded:\t", indexLoadedTime);
138 // XXX the code below listeners for errors and displays an error message
139 // in the document body when any of the required files fails to load.
140 // The intention is to prevent from displaying broken page.
141 var criticalFiles = [
142 "config.js",
143 "utils.js",
144 "do_external_connect.js",
145 "interface_config.js",
146 "logging_config.js",
147 "lib-jitsi-meet.min.js",
148 "app.bundle.min.js",
149 "all.css?v=4289"
150 ];
151 var loadErrHandler = function(e) {
152 var target = e.target;
153 // Error on <script> and <link>(CSS)
154 // <script> will have .src and <link> .href
155 var fileRef = (target.src ? target.src : target.href);
156 if (("SCRIPT" === target.tagName || "LINK" === target.tagName)
157 && criticalFiles.some(
158 function(file) { return fileRef.indexOf(file) !== -1 })) {
159 window.onload = function() {
160 // The whole complex part below implements page reloads with
161 // "exponential backoff". The retry attempt is passes as
162 // "rCounter" query parameter
163 var href = window.location.href;
164
165 var retryMatch = href.match(/.+(\?|&)rCounter=(\d+)/);
166 var retryCountStr = retryMatch ? retryMatch[2] : "0";
167 var retryCount = Number.parseInt(retryCountStr);
168
169 if (retryMatch == null) {
170 var separator = href.indexOf("?") === -1 ? "?" : "&";
171 var hashIdx = href.indexOf("#");
172
173 if (hashIdx === -1) {
174 href += separator + "rCounter=1";
175 } else {
176 var hashPart = href.substr(hashIdx);
177
178 href = href.substr(0, hashIdx)
179 + separator + "rCounter=1" + hashPart;
180 }
181 } else {
182 var separator = retryMatch[1];
183
184 href = href.replace(
185 /(\?|&)rCounter=(\d+)/,
186 separator + "rCounter=" + (retryCount + 1));
187 }
188
189 var delay = Math.pow(2, retryCount) * 2000;
190 if (isNaN(delay) || delay < 2000 || delay > 60000)
191 delay = 10000;
192
193 var showMoreText = "show more";
194 var showLessText = "show less";
195
196 document.body.innerHTML
197 = "<div style='"
198 + "position: absolute;top: 50%;left: 50%;"
199 + "text-align: center;"
200 + "font-size: medium;"
201 + "font-weight: 400;"
202 + "transform: translate(-50%, -50%)'>"
203 + "Uh oh! We couldn't fully download everything we needed :("
204 + "<br/> "
205 + "We will try again shortly. In the mean time, check for problems with your Internet connection!"
206 + "<br/><br/> "
207 + "<div id='moreInfo' style='"
208 + "display: none;'>" + "Missing " + fileRef
209 + "<br/><br/></div>"
210 + "<a id='showMore' style='"
211 + "text-decoration: underline;"
212 + "font-size:small;"
213 + "cursor: pointer'>" + showMoreText + "</a>"
214 + "&nbsp;&nbsp;&nbsp;"
215 + "<a id ='reloadLink' style='"
216 + "text-decoration: underline;"
217 + "font-size:small;"
218 + "'>reload now</a>"
219 + "</div>";
220
221 var reloadLink = document.getElementById('reloadLink');
222 reloadLink.setAttribute('href', href);
223
224 var showMoreElem = document.getElementById("showMore");
225 showMoreElem.addEventListener('click', function () {
226 var moreInfoElem
227 = document.getElementById("moreInfo");
228
229 if (showMoreElem.innerHTML === showMoreText) {
230 moreInfoElem.setAttribute(
231 "style",
232 "display: block;"
233 + "color:#FF991F;"
234 + "font-size:small;"
235 + "user-select:text;");
236 showMoreElem.innerHTML = showLessText;
237 }
238 else {
239 moreInfoElem.setAttribute(
240 "style", "display: none;");
241 showMoreElem.innerHTML = showMoreText;
242 }
243 });
244
245 window.setTimeout(
246 function () { window.location.replace(href); }, delay);
247
248 // Call extra handler if defined.
249 if (typeof postLoadErrorHandler === "function") {
250 postLoadErrorHandler(fileRef);
251 }
252 };
253 window.removeEventListener(
254 'error', loadErrHandler, true /* capture phase */);
255 }
256 };
257 window.addEventListener(
258 'error', loadErrHandler, true /* capture phase type of listener */);
259 </script>
260 <script><!--#include virtual="/config.js" --></script><!-- adapt to your needs, i.e. set hosts and bosh path -->
261 <!--#include virtual="connection_optimization/connection_optimization.html" -->
262 <script src="libs/do_external_connect.min.js?v=1"></script>
263 <script><!--#include virtual="/interface_config.js" --></script>
264 <script><!--#include virtual="/logging_config.js" --></script>
265 <script src="libs/lib-jitsi-meet.min.js?v=4289"></script>
266 <script src="libs/app.bundle.min.js?v=4289"></script>
267 <!--#include virtual="title.html" -->
268 <!--#include virtual="plugin.head.html" -->
269 <!--#include virtual="static/welcomePageAdditionalContent.html" -->
270 <!--#include virtual="static/settingsToolbarAdditionalContent.html" -->
271 </head>
272 <body>
273 <!--#include virtual="body.html" -->
274 <div id="fsflogo" >
275 <div id="site-logo"><a href="/" title="Home">
276 <img src="https://my.fsf.org/sites/default/files/fsf-logo_1.png" alt="Home" />
277 </a></div> </div>
278 <div id="fsfcustom">
279 <p>Welcome to the free (as in freedom) videoconferencing service for <a href="https://www.fsf.org/associate/">associate members</a> of the <a href="https://www.fsf.org/">Free Software Foundation</a>. Members can use their FSF account login credentials to start new conference rooms, and invite family, colleagues, and friends to join by sending them the room link. We recommend using a password for your conference for better security, you can find this option under the info button.</p>
280
281 <p>This service uses <a href="https://jitsi.org/jitsi-meet/">Jitsi Meet</a>, with some small changes made for the sake of privacy and <a href="https://www.gnu.org/philosophy/free-software-even-more-important.html">software freedom</a>. It does not use any third party servers for network initialization, does not recommend or link to proprietary services or programs. It also labels all JavaScript files with their free software licenses following <a href="https://www.gnu.org/software/librejs/">LibreJS</a> practice.
282
283 <p><a href="https://fsf.org/join?pk_campaign=jitsi&pk_source=joinhome">Become an associate member</a> today, or support the FSF by making a <a href="https://fsf.org/donate?pk_campaign=jitsi&pk_source=donatehome">donation</a>.</p>
284 <p><center><small>During calls, you can press the question mark key "?" to display a list of key bindings.</small><center></p>
285
286 </div>
287 <div id="react"></div>
288
289 <div id="fsffooter">
290 <div class="content">
291 <p style="color: white">We prioritize your privacy and do not sell or distribute our contact lists. Read our full <a href="https://www.fsf.org/about/free-software-foundation-privacy-policy">privacy policy</a>.</p>
292 <p ><a href="https://weblabels.fsf.org/jitsi.member.fsf.org/CURRENT/" rel="jslicense">JavaScript license information</a></p>
293 </div>
294 </body>
295 </html>