Improvements to jitsi a11y and css
[jitsi-ansible.git] / files / index.html
CommitLineData
e04644f3 1<html itemscope itemtype="http://schema.org/Product" prefix="og: http://ogp.me/ns#" xmlns="http://www.w3.org/1999/html">
895a4f53
RR
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-->
e04644f3
RR
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
5a64bc4b
RR
29 <link rel="apple-touch-icon" href="images/apple-touch-icon.png">
30 <link rel="stylesheet" href="css/all.css?v=4289">
20eb5e1b
RR
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;
5a64bc4b 48 padding:15px;
20eb5e1b
RR
49 border-radius: 10px!important;
50 }
51
a13d451b 52 .welcome-page .header-text-title {
5a64bc4b 53 display: none
20eb5e1b
RR
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
a13d451b 81 .welcome-page .header{
20eb5e1b
RR
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 }
a13d451b 92 .welcome-page .leftwatermark, .header-text-description{
5a64bc4b
RR
93 display: none!important;
94 }
a13d451b
RR
95 .invite-more-container{
96 display: none;
97 }
98 .invite-more-dialog.icon-container div:nth-child(n+3)
99 {
100 display:none
101 }
20eb5e1b 102 </style>
895a4f53
RR
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>
5a64bc4b
RR
117 <script>
118 document.addEventListener('DOMContentLoaded', () => {
119 if (!JitsiMeetJS.app) {
120 return;
121 }
895a4f53 122
5a64bc4b
RR
123 JitsiMeetJS.app.renderEntryPoint({
124 Component: JitsiMeetJS.app.entryPoints.APP
125 })
126 })
127 </script>
e04644f3 128 <script>
e04644f3
RR
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)/)) {
5a64bc4b
RR
132 var roomName = encodeURIComponent(window.location.pathname);
133 window.location.href = "static/recommendedBrowsers.html" + "?room=" + roomName;
e04644f3
RR
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",
5a64bc4b 149 "all.css?v=4289"
e04644f3
RR
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 */);
e04644f3
RR
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>
5a64bc4b
RR
265 <script src="libs/lib-jitsi-meet.min.js?v=4289"></script>
266 <script src="libs/app.bundle.min.js?v=4289"></script>
e04644f3
RR
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" -->
20eb5e1b
RR
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
47a2a03e 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.
20eb5e1b
RR
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>
a13d451b
RR
284 <p><center><small>During calls, you can press the question mark key "?" to display a list of key bindings.</small><center></p>
285
20eb5e1b 286 </div>
e04644f3 287 <div id="react"></div>
895a4f53
RR
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>
e04644f3
RR
294 </body>
295</html>