Procházet zdrojové kódy

Implements welcome page.

j8
hristoterezov před 11 roky
rodič
revize
1794003875
8 změnil soubory, kde provedl 348 přidání a 93 odebrání
  1. 27
    0
      app.js
  2. 3
    1
      config.js
  3. 150
    0
      css/main.css
  4. binární
      images/welcome_page/bubble.png
  5. binární
      images/welcome_page/jitsi-logo.png
  6. binární
      images/welcome_page/pattern-body.png
  7. binární
      images/welcome_page/pattern-header.png
  8. 168
    92
      index.html

+ 27
- 0
app.js Zobrazit soubor

@@ -1115,6 +1115,33 @@ function getCameraVideoSize(videoWidth,
1115 1115
 }
1116 1116
 
1117 1117
 $(document).ready(function () {
1118
+
1119
+    if(config.enableWelcomePage && window.location.pathname == "/")
1120
+    {
1121
+        $("#videoconference_page").hide();
1122
+        $("#enter_room_button").click(function()
1123
+        {
1124
+            var val = Util.escapeHtml($("#enter_room_field").val());
1125
+            window.location.pathname = "/" + val;
1126
+        });
1127
+
1128
+        $("#enter_room_field").keydown(function (event) {
1129
+            if (event.keyCode === 13) {
1130
+                var val = Util.escapeHtml(this.value);
1131
+                window.location.pathname = "/" + val;
1132
+            }
1133
+        });
1134
+
1135
+        if(!config.isBrand)
1136
+        {
1137
+            $("#brand_logo").hide();
1138
+            $("#brand_header").hide();
1139
+            $("#header_text").hide();
1140
+        }
1141
+        return;
1142
+    }
1143
+
1144
+    $("#welcome_page").hide();
1118 1145
     Chat.init();
1119 1146
 
1120 1147
     $('body').popover({ selector: '[data-toggle=popover]',

+ 3
- 1
config.js Zobrazit soubor

@@ -19,5 +19,7 @@ var config = {
19 19
 //    channelLastN: -1, // The default value of the channel attribute last-n.
20 20
 //    useRtcpMux: true,
21 21
 //    useBundle: true,
22
-    enableRecording: false
22
+    enableRecording: false,
23
+    enableWelcomePage: false,
24
+    isBrand: false
23 25
 };

+ 150
- 0
css/main.css Zobrazit soubor

@@ -259,3 +259,153 @@ form {
259 259
     overflow: visible;
260 260
     z-index: 100;
261 261
 }
262
+
263
+#enter_room_field {
264
+    border-radius: 10px;
265
+    font-size: 16px;
266
+    padding: 15px 55px 10px 30px;
267
+    border: none;
268
+    -moz-border-radius: 10px;
269
+    -webkit-border-radius: 10px;
270
+    -webkit-appearance: none;
271
+    width: 318px;
272
+    height: 55px;
273
+    position:absolute;
274
+    font-weight: 500;
275
+    font-family: Helvetica;
276
+    box-shadow: none;
277
+    z-index: 2;
278
+ }
279
+
280
+#enter_room_button {
281
+    width: 73px;
282
+    height: 45px;
283
+    background-color: #16a8fe;
284
+    moz-border-radius: 15px;
285
+    -webkit-border-radius: 15px;
286
+    color: #ffffff;
287
+    font-weight: 600;
288
+    border: none;
289
+    position:absolute;
290
+    margin-left: 240px;
291
+    margin-top: 5px;
292
+    font-size: 19px;
293
+    font-family: Helvetica;
294
+    padding-top: 6px;
295
+    z-index: 2;
296
+    outline: none;
297
+}
298
+
299
+#enter_room {
300
+    margin: 70px auto 0px auto;
301
+    width:318px;
302
+}
303
+
304
+#welcome_page_header
305
+{
306
+    background-image: url(../images/welcome_page/pattern-header.png);
307
+    height: 290px;
308
+    width: 100%;
309
+    position: absolute;
310
+}
311
+
312
+#welcome_page_main
313
+{
314
+    background-image:url(../images/welcome_page/pattern-body.png);
315
+    width: 100%;
316
+    position: absolute;
317
+    margin-top: 290px;
318
+}
319
+
320
+#jitsi_logo
321
+{
322
+    background-image:url(../images/welcome_page/jitsi-logo.png);
323
+    width: 186px;
324
+    height: 74px;
325
+    position: absolute;
326
+    top: 15px;
327
+    left: 30px;
328
+}
329
+
330
+#brand_logo
331
+{
332
+    background-image:url(../images/welcome_page/unicef-logo.png);
333
+    width: 215px;
334
+    height: 55px;
335
+    position: absolute;
336
+    top: 15px;
337
+    right: 30px;
338
+
339
+}
340
+
341
+#brand_header
342
+{
343
+    background-image:url(../images/welcome_page/unicef-header-big.png);
344
+    position:absolute;
345
+    width: 583px;
346
+    height: 274px;
347
+    left: 340px;
348
+    top:15px;
349
+}
350
+
351
+#header_text
352
+{
353
+    position: absolute;
354
+    left: 200px;
355
+    top: 150px;
356
+    width: 885px;
357
+    height: 100px;
358
+    color: #ffffff;
359
+    font-family: Helvetica;
360
+    font-size: 24px;
361
+    text-align: center;
362
+}
363
+
364
+#features
365
+{
366
+    margin-top: 30px;
367
+}
368
+
369
+.feature_row
370
+{
371
+    width: 100%;
372
+    left: 115px;
373
+    position: relative;
374
+    float: left;
375
+    margin-bottom: 30px;
376
+}
377
+
378
+.feature_holder
379
+{
380
+    float:left;
381
+    width: 169px;
382
+    padding-left: 75px;
383
+}
384
+
385
+.feature_icon
386
+{
387
+    background-image:url(../images/welcome_page/bubble.png);
388
+    background-repeat: no-repeat;
389
+    width: 169px;
390
+    height: 169px;
391
+    font-family: Helvetica;
392
+    color: #ffffff;
393
+    font-size: 22px;
394
+    /*font-weight: bold;*/
395
+    text-align: center;
396
+    display: table-cell;
397
+    padding: 50px 29px 0px 17px;
398
+}
399
+
400
+.feature_description
401
+{
402
+    width: 169px;
403
+    font-family: Helvetica;
404
+    color: #ffffff;
405
+    font-size: 16px;
406
+    padding-top: 30px;
407
+    line-height: 22px;
408
+    font-weight: 200;
409
+}
410
+
411
+

binární
images/welcome_page/bubble.png Zobrazit soubor


binární
images/welcome_page/jitsi-logo.png Zobrazit soubor


binární
images/welcome_page/pattern-body.png Zobrazit soubor


binární
images/welcome_page/pattern-header.png Zobrazit soubor


+ 168
- 92
index.html Zobrazit soubor

@@ -1,4 +1,4 @@
1
-<html itemscope itemtype="http://schema.org/Product" prefix="og: http://ogp.me/ns#">
1
+<html itemscope itemtype="http://schema.org/Product" prefix="og: http://ogp.me/ns#" xmlns="http://www.w3.org/1999/html">
2 2
   <head>
3 3
     <title>Jitsi Videobridge meets WebRTC</title>
4 4
     <link rel="icon" type="image/png" href="/images/favicon.ico"/>
@@ -61,110 +61,186 @@
61 61
     <script src="libs/prezi_player.js?v=2"></script>
62 62
   </head>
63 63
   <body>
64
-    <div style="position: relative;" id="header_container">
65
-        <div id="header">
66
-            <span id="toolbar">
67
-                <a class="button" data-toggle="popover" data-placement="bottom" data-content="Mute / Unmute" onclick='toggleAudio();'>
68
-                    <i id="mute" class="icon-microphone"></i>
69
-                </a>
70
-                <div class="header_button_separator"></div>
71
-                <a class="button" data-toggle="popover" data-placement="bottom" data-content="Start / stop camera" onclick='buttonClick("#video", "icon-camera icon-camera-disabled");toggleVideo();'>
72
-                    <i id="video" class="icon-camera"></i>
73
-                </a>
74
-                <span id="recording" style="display: none">
64
+    <div id="welcome_page">
65
+        <div id="welcome_page_header">
66
+            <a href="http://jitsi.org" target="_new">
67
+                <div id="jitsi_logo"></div>
68
+            </a>
69
+            <a href="http://unicefuganda.org/" target="_new">
70
+                <div id="brand_logo"></div>
71
+            </a>
72
+            <div id="enter_room">
73
+                <input id="enter_room_field" type="text" placeholder="Enter room name" />
74
+                <input id="enter_room_button" type="button" value="GO" />
75
+            </div>
76
+            <div id="brand_header"></div>
77
+            <div id="header_text">
78
+                Welcome to uTalk! A free and open-source WebRTC video conferencing system developed by BlueJimp and UNICEF Uganda in collaboration with the Jitsi.org community.
79
+            </div>
80
+        </div>
81
+        <div id="welcome_page_main">
82
+            <div id="features">
83
+                <div class="feature_row">
84
+                    <div class="feature_holder">
85
+                        <div class="feature_icon">Simple to use</div>
86
+                        <div class="feature_description">
87
+                            No downloads required. uTalk works directly within your browser. Simply share your conference URL with others to get started.
88
+                        </div>
89
+                    </div>
90
+                    <div class="feature_holder">
91
+                        <div class="feature_icon">Low bandwidth</div>
92
+                        <div class="feature_description">
93
+                            Multi-party video conferences work with as little as 128Kbps. Screen-sharing and audio-only conferences are possible with far less.
94
+                        </div>
95
+                    </div>
96
+                    <div class="feature_holder">
97
+                        <div class="feature_icon">Open source</div>
98
+                        <div class="feature_description">
99
+                            uTalk is licensed under the &lt;GPL/LGPL/WHATEVER&gt;. You can download, use, modify, and share the software without any restrictions.
100
+                        </div>
101
+                    </div>
102
+                    <div class="feature_holder">
103
+                        <div class="feature_icon">Unlimited users</div>
104
+                        <div class="feature_description">
105
+                            There are no artificial restrictions on the number of users or conference participants. Server power and bandwidth are the only limiting factors.
106
+                        </div>
107
+                    </div>
108
+                </div>
109
+                <div class="feature_row">
110
+                    <div class="feature_holder">
111
+                        <div class="feature_icon">Screen sharing</div>
112
+                        <div class="feature_description">
113
+                            It's easy to share your screen with others. uTalk is ideal for on-line presentations, lectures, and tech support sessions.
114
+                        </div>
115
+                    </div>
116
+                    <div class="feature_holder">
117
+                        <div class="feature_icon">Secure rooms</div>
118
+                        <div class="feature_description">
119
+                            Need some privacy? uTalk conference rooms can be secured with a password in order to exclude unwanted guests and prevent interruptions.
120
+                        </div>
121
+                    </div>
122
+                    <div class="feature_holder">
123
+                        <div class="feature_icon">Shared notes</div>
124
+                        <div class="feature_description">
125
+                            uTalk features Etherpad, a real-time collaborative text editor that's great for meeting minutes, writing articles, and more.
126
+                        </div>
127
+                    </div>
128
+                    <div class="feature_holder">
129
+                        <div class="feature_icon">Usage statistics</div>
130
+                        <div class="feature_description">
131
+                            Learn about your users through easy integration with Piwik, Google Analytics, and other usage monitoring and statistics systems.
132
+                        </div>
133
+                    </div>
134
+                </div>
135
+            </div>
136
+        </div>
137
+    </div>
138
+    <div id="videoconference_page">
139
+        <div style="position: relative;" id="header_container">
140
+            <div id="header">
141
+                <span id="toolbar">
142
+                    <a class="button" data-toggle="popover" data-placement="bottom" data-content="Mute / Unmute" onclick='toggleAudio();'>
143
+                        <i id="mute" class="icon-microphone"></i>
144
+                    </a>
75 145
                     <div class="header_button_separator"></div>
76
-                    <a class="button" data-toggle="popover" data-placement="bottom" data-content="Record" onclick='toggleRecording();'>
77
-                        <i id="recordButton" class="icon-recEnable"></i>
146
+                    <a class="button" data-toggle="popover" data-placement="bottom" data-content="Start / stop camera" onclick='buttonClick("#video", "icon-camera icon-camera-disabled");toggleVideo();'>
147
+                        <i id="video" class="icon-camera"></i>
78 148
                     </a>
79
-                </span>
80
-                <div class="header_button_separator"></div>
81
-                <a class="button" data-toggle="popover" data-placement="bottom" data-content="Lock / unlock room" onclick="Toolbar.openLockDialog();">
82
-                    <i id="lockIcon" class="icon-security"></i>
83
-                </a>
84
-                <div class="header_button_separator"></div>
85
-                <a class="button" data-toggle="popover" data-placement="bottom" data-content="Invite others" onclick="Toolbar.openLinkDialog();">
86
-                    <i class="icon-link"></i>
87
-                </a>
88
-                <div class="header_button_separator"></div>
89
-                <span class="toolbar_span">
90
-                    <a class="button" data-toggle="popover" data-placement="bottom" data-content="Open / close chat" onclick='Chat.toggleChat();'>
91
-                        <i id="chatButton" class="icon-chat"></i>
149
+                    <span id="recording" style="display: none">
150
+                        <div class="header_button_separator"></div>
151
+                        <a class="button" data-toggle="popover" data-placement="bottom" data-content="Record" onclick='toggleRecording();'>
152
+                            <i id="recordButton" class="icon-recEnable"></i>
153
+                        </a>
154
+                    </span>
155
+                    <div class="header_button_separator"></div>
156
+                    <a class="button" data-toggle="popover" data-placement="bottom" data-content="Lock / unlock room" onclick="Toolbar.openLockDialog();">
157
+                        <i id="lockIcon" class="icon-security"></i>
92 158
                     </a>
93
-                    <span id="unreadMessages"></span>
94
-                </span>
95
-                <div class="header_button_separator"></div>
96
-                <a class="button" data-toggle="popover" data-placement="bottom" data-content="Share Prezi" onclick='Prezi.openPreziDialog();'>
97
-                    <i class="icon-prezi"></i>
98
-                </a>
99
-                <span id="etherpadButton">
100 159
                     <div class="header_button_separator"></div>
101
-                    <a class="button" data-toggle="popover" data-placement="bottom" data-content="Shared document" onclick='Etherpad.toggleEtherpad(0);'>
102
-                        <i class="icon-share-doc"></i>
160
+                    <a class="button" data-toggle="popover" data-placement="bottom" data-content="Invite others" onclick="Toolbar.openLinkDialog();">
161
+                        <i class="icon-link"></i>
103 162
                     </a>
104
-                </span>
105
-                <div class="header_button_separator"></div>
106
-                <span id="desktopsharing" style="display: none">
107
-                    <a class="button" data-toggle="popover" data-placement="bottom" data-content="Share screen" onclick="toggleScreenSharing();">
108
-                        <i class="icon-share-desktop"></i>
163
+                    <div class="header_button_separator"></div>
164
+                    <span class="toolbar_span">
165
+                        <a class="button" data-toggle="popover" data-placement="bottom" data-content="Open / close chat" onclick='Chat.toggleChat();'>
166
+                            <i id="chatButton" class="icon-chat"></i>
167
+                        </a>
168
+                        <span id="unreadMessages"></span>
169
+                    </span>
170
+                    <div class="header_button_separator"></div>
171
+                    <a class="button" data-toggle="popover" data-placement="bottom" data-content="Share Prezi" onclick='Prezi.openPreziDialog();'>
172
+                        <i class="icon-prezi"></i>
109 173
                     </a>
110
-                </span>
111
-                <div class="header_button_separator"></div>
112
-                <a class="button" data-toggle="popover" data-placement="bottom" data-content="Enter / Exit Full Screen" onclick='buttonClick("#fullScreen", "icon-full-screen icon-exit-full-screen");Toolbar.toggleFullScreen();'>
113
-                    <i id="fullScreen" class="icon-full-screen"></i>
114
-                </a>
115
-                <span id="sipCallButton">
174
+                    <span id="etherpadButton">
175
+                        <div class="header_button_separator"></div>
176
+                        <a class="button" data-toggle="popover" data-placement="bottom" data-content="Shared document" onclick='Etherpad.toggleEtherpad(0);'>
177
+                            <i class="icon-share-doc"></i>
178
+                        </a>
179
+                    </span>
180
+                    <div class="header_button_separator"></div>
181
+                    <span id="desktopsharing" style="display: none">
182
+                        <a class="button" data-toggle="popover" data-placement="bottom" data-content="Share screen" onclick="toggleScreenSharing();">
183
+                            <i class="icon-share-desktop"></i>
184
+                        </a>
185
+                    </span>
116 186
                     <div class="header_button_separator"></div>
117
-                    <a class="button" data-toggle="popover" data-placement="bottom" data-content="Call SIP number" onclick='callSipButtonClicked();'>
118
-                        <i class="icon-telephone"></i></a>
187
+                    <a class="button" data-toggle="popover" data-placement="bottom" data-content="Enter / Exit Full Screen" onclick='buttonClick("#fullScreen", "icon-full-screen icon-exit-full-screen");Toolbar.toggleFullScreen();'>
188
+                        <i id="fullScreen" class="icon-full-screen"></i>
189
+                    </a>
190
+                    <span id="sipCallButton">
191
+                        <div class="header_button_separator"></div>
192
+                        <a class="button" data-toggle="popover" data-placement="bottom" data-content="Call SIP number" onclick='callSipButtonClicked();'>
193
+                            <i class="icon-telephone"></i></a>
194
+                    </span>
119 195
                 </span>
120
-            </span>
196
+            </div>
197
+            <div id="subject"></div>
121 198
         </div>
122
-        <div id="subject"></div>
123
-    </div>
124
-    <div id="settings">
125
-      <h1>Connection Settings</h1>
126
-      <form id="loginInfo">
127
-        <label>JID: <input id="jid" type="text" name="jid" placeholder="me@example.com"/></label>
128
-        <label>Password: <input id="password" type="password" name="password" placeholder="secret"/></label>
129
-        <label>BOSH URL: <input id="boshURL" type="text" name="boshURL" placeholder="/http-bind"/></label>
130
-        <input id="connect" type="submit" value="Connect" />
131
-      </form>
132
-    </div>
133
-    <div id="reloadPresentation"><a onclick='Prezi.reloadPresentation();'><i title="Reload Prezi" class="fa fa-repeat fa-lg"></i></a></div>
134
-    <div id="videospace" onmousemove="Toolbar.showToolbar();">
135
-        <div id="largeVideoContainer" class="videocontainer">
136
-            <div id="presentation"></div>
137
-            <div id="etherpad"></div>
138
-            <a href="http://jitsi.org" target="_new"><div class="watermark" id="leftwatermark"></div></a>
139
-            <!-- a href="http://jitsi.org" target="_new"><div class="watermark" id="rightwatermark"></div></a -->
140
-            <video id="largeVideo" autoplay oncontextmenu="return false;"></video>
199
+        <div id="settings">
200
+          <h1>Connection Settings</h1>
201
+          <form id="loginInfo">
202
+            <label>JID: <input id="jid" type="text" name="jid" placeholder="me@example.com"/></label>
203
+            <label>Password: <input id="password" type="password" name="password" placeholder="secret"/></label>
204
+            <label>BOSH URL: <input id="boshURL" type="text" name="boshURL" placeholder="/http-bind"/></label>
205
+            <input id="connect" type="submit" value="Connect" />
206
+          </form>
141 207
         </div>
142
-        <div id="remoteVideos">
143
-            <span id="localVideoContainer" class="videocontainer">
144
-                <span id="localNick" class="nick"></span>
145
-                <span id="localVideoWrapper">
146
-                    <!--<video id="localVideo" autoplay oncontextmenu="return false;" muted></video> - is now per stream generated -->
208
+        <div id="reloadPresentation"><a onclick='Prezi.reloadPresentation();'><i title="Reload Prezi" class="fa fa-repeat fa-lg"></i></a></div>
209
+        <div id="videospace" onmousemove="Toolbar.showToolbar();">
210
+            <div id="largeVideoContainer" class="videocontainer">
211
+                <div id="presentation"></div>
212
+                <div id="etherpad"></div>
213
+                <a href="http://jitsi.org" target="_new"><div class="watermark" id="leftwatermark"></div></a>
214
+                <!-- a href="http://jitsi.org" target="_new"><div class="watermark" id="rightwatermark"></div></a -->
215
+                <video id="largeVideo" autoplay oncontextmenu="return false;"></video>
216
+            </div>
217
+            <div id="remoteVideos">
218
+                <span id="localVideoContainer" class="videocontainer">
219
+                    <span id="localNick" class="nick"></span>
220
+                    <span id="localVideoWrapper">
221
+                        <!--<video id="localVideo" autoplay oncontextmenu="return false;" muted></video> - is now per stream generated -->
222
+                    </span>
223
+                    <audio id="localAudio" autoplay oncontextmenu="return false;" muted></audio>
224
+                    <span class="focusindicator"></span>
147 225
                 </span>
148
-                <audio id="localAudio" autoplay oncontextmenu="return false;" muted></audio>
149
-                <span class="focusindicator"></span>
150
-            </span>
151
-            <audio id="userJoined" src="sounds/joined.wav" preload="auto"></audio>
152
-            <audio id="userLeft" src="sounds/left.wav" preload="auto"></audio>
153
-        </div>
154
-    </div>
155
-    <div id="chatspace">
156
-        <div id="nickname">
157
-            Enter a nickname in the box below
158
-            <form>
159
-                <input type='text' id="nickinput" placeholder='Choose a nickname' autofocus>
160
-            </form>
226
+                <audio id="userJoined" src="sounds/joined.wav" preload="auto"></audio>
227
+                <audio id="userLeft" src="sounds/left.wav" preload="auto"></audio>
228
+            </div>
161 229
         </div>
230
+        <div id="chatspace">
231
+            <div id="nickname">
232
+                Enter a nickname in the box below
233
+                <form>
234
+                    <input type='text' id="nickinput" placeholder='Choose a nickname' autofocus>
235
+                </form>
236
+            </div>
162 237
 
163
-        <!--div><i class="fa fa-comments">&nbsp;</i><span class='nick'></span>:&nbsp;<span class='chattext'></span></div-->
164
-        <div id="chatconversation"></div>
165
-        <audio id="chatNotification" src="sounds/incomingMessage.wav" preload="auto"></audio>
166
-        <textarea id="usermsg" placeholder='Enter text...' autofocus></textarea>
238
+            <!--div><i class="fa fa-comments">&nbsp;</i><span class='nick'></span>:&nbsp;<span class='chattext'></span></div-->
239
+            <div id="chatconversation"></div>
240
+            <audio id="chatNotification" src="sounds/incomingMessage.wav" preload="auto"></audio>
241
+            <textarea id="usermsg" placeholder='Enter text...' autofocus></textarea>
242
+        </div>
243
+        <a id="downloadlog" onclick='dump(event.target);' data-toggle="popover" data-placement="right" data-content="Download logs" ><i class="fa fa-cloud-download"></i></a>
167 244
     </div>
168
-    <a id="downloadlog" onclick='dump(event.target);' data-toggle="popover" data-placement="right" data-content="Download logs" ><i class="fa fa-cloud-download"></i></a>
169 245
   </body>
170 246
 </html>

Načítá se…
Zrušit
Uložit