Selaa lähdekoodia

Merge branch 'master' into tracking

Conflicts:
	index.html
j8
Philipp Hancke 11 vuotta sitten
vanhempi
commit
1a1aea4669

+ 65
- 24
app.js Näytä tiedosto

@@ -92,6 +92,11 @@ function init() {
92 92
 }
93 93
 
94 94
 function connect(jid, password) {
95
+    var localAudio, localVideo;
96
+    if (connection && connection.jingle) {
97
+        localAudio = connection.jingle.localAudio;
98
+        localVideo = connection.jingle.localVideo;
99
+    }
95 100
     connection = new Strophe.Connection(document.getElementById('boshURL').value || config.bosh || '/http-bind');
96 101
 
97 102
     if (nickname) {
@@ -107,6 +112,8 @@ function connect(jid, password) {
107 112
         if (!connection.jingle.pc_constraints.optional) connection.jingle.pc_constraints.optional = [];
108 113
         connection.jingle.pc_constraints.optional.push({googIPv6: true});
109 114
     }
115
+    if (localAudio) connection.jingle.localAudio = localAudio;
116
+    if (localVideo) connection.jingle.localVideo = localVideo;
110 117
 
111 118
     if(!password)
112 119
         password = document.getElementById('password').value;
@@ -144,16 +151,10 @@ function connect(jid, password) {
144 151
 }
145 152
 
146 153
 /**
147
- * HTTPS only:
148
- * We first ask for audio and video combined stream in order to get permissions and not to ask twice.
149
- * Then we dispose the stream and continue with separate audio, video streams(required for desktop sharing).
154
+ * We ask for audio and video combined stream in order to get permissions and
155
+ * not to ask twice.
150 156
  */
151 157
 function obtainAudioAndVideoPermissions(callback) {
152
-    // This makes sense only on https sites otherwise we'll be asked for permissions every time
153
-    if (location.protocol !== 'https:') {
154
-        callback();
155
-        return;
156
-    }
157 158
     // Get AV
158 159
     getUserMediaWithConstraints(
159 160
         ['audio', 'video'],
@@ -204,9 +205,11 @@ function doJoin() {
204 205
         if (path.length > 1) {
205 206
             roomnode = path.substr(1).toLowerCase();
206 207
         } else {
207
-            roomnode = Math.random().toString(36).substr(2, 20);
208
+            var word = RoomNameGenerator.generateRoomWithoutSeparator(3);
209
+            roomnode = word.toLowerCase();
210
+
208 211
             window.history.pushState('VideoChat',
209
-                    'Room: ' + roomnode, window.location.pathname + roomnode);
212
+                    'Room: ' + word, window.location.pathname + word);
210 213
         }
211 214
     }
212 215
 
@@ -641,14 +644,9 @@ $(document).bind('joined.muc', function (event, jid, info) {
641 644
     // Once we've joined the muc show the toolbar
642 645
     Toolbar.showToolbar();
643 646
 
644
-    var displayName = '';
645 647
     if (info.displayName)
646
-        displayName = info.displayName + ' (me)';
647
-    else
648
-        displayName = "Me";
649
-
650
-    $(document).trigger('displaynamechanged',
651
-                        ['localVideoContainer', displayName]);
648
+        $(document).trigger('displaynamechanged',
649
+                            ['localVideoContainer', info.displayName + ' (me)']);
652 650
 });
653 651
 
654 652
 $(document).bind('entered.muc', function (event, jid, info, pres) {
@@ -1077,24 +1075,60 @@ function getCameraVideoSize(videoWidth,
1077 1075
 }
1078 1076
 
1079 1077
 $(document).ready(function () {
1078
+    document.title = brand.appName;
1080 1079
 
1081 1080
     if(config.enableWelcomePage && window.location.pathname == "/" &&
1082 1081
         (!window.localStorage.welcomePageDisabled || window.localStorage.welcomePageDisabled == "false"))
1083 1082
     {
1084 1083
         $("#videoconference_page").hide();
1085
-        $("#enter_room_button").click(function()
1084
+        $("#domain_name").text(window.location.protocol + "//" + window.location.host + "/");
1085
+        $("span[name='appName']").text(brand.appName);
1086
+        function enter_room()
1086 1087
         {
1087
-            var val = Util.escapeHtml($("#enter_room_field").val());
1088
+            var val = $("#enter_room_field").val();
1089
+            if(!val)
1090
+                val = $("#enter_room_field").attr("room_name");
1088 1091
             window.location.pathname = "/" + val;
1092
+        }
1093
+        $("#enter_room_button").click(function()
1094
+        {
1095
+            enter_room();
1089 1096
         });
1090 1097
 
1091 1098
         $("#enter_room_field").keydown(function (event) {
1092 1099
             if (event.keyCode === 13) {
1093
-                var val = Util.escapeHtml(this.value);
1094
-                window.location.pathname = "/" + val;
1100
+                enter_room();
1095 1101
             }
1096 1102
         });
1097 1103
 
1104
+        var updateTimeout;
1105
+        var animateTimeout;
1106
+        $("#reload_roomname").click(function () {
1107
+            clearTimeout(updateTimeout);
1108
+            clearTimeout(animateTimeout);
1109
+            update_roomname();
1110
+        });
1111
+
1112
+        function animate(word) {
1113
+            var currentVal = $("#enter_room_field").attr("placeholder");
1114
+            $("#enter_room_field").attr("placeholder", currentVal + word.substr(0, 1));
1115
+            animateTimeout = setTimeout(function() {
1116
+                    animate(word.substring(1, word.length))
1117
+                }, 70);
1118
+        }
1119
+
1120
+
1121
+        function update_roomname()
1122
+        {
1123
+            var word = RoomNameGenerator.generateRoomWithoutSeparator();
1124
+            $("#enter_room_field").attr("room_name", word);
1125
+            $("#enter_room_field").attr("placeholder", "");
1126
+            animate(word);
1127
+            updateTimeout = setTimeout(update_roomname, 10000);
1128
+
1129
+        }
1130
+        update_roomname();
1131
+
1098 1132
         $("#disable_welcome").click(function () {
1099 1133
             window.localStorage.welcomePageDisabled = $("#disable_welcome").is(":checked");
1100 1134
         });
@@ -1401,10 +1435,17 @@ function hangup() {
1401 1435
 
1402 1436
     $.prompt("Session Terminated",
1403 1437
         {
1404
-            title: "You hang up the call",
1438
+            title: "You hung up the call",
1405 1439
             persistent: true,
1406
-            buttons: {},
1407
-            closeText: ''
1440
+            buttons: {
1441
+                "Join again": true
1442
+            },
1443
+            closeText: '',
1444
+            submit: function(event, value, message, formVals)
1445
+            {
1446
+                window.location.reload();
1447
+                return false;
1448
+            }
1408 1449
 
1409 1450
         }
1410 1451
     );

+ 4
- 0
brand.js Näytä tiedosto

@@ -0,0 +1,4 @@
1
+var brand =
2
+{
3
+    appName: "Jitsi Meet"
4
+}

+ 4
- 0
css/font.css Näytä tiedosto

@@ -99,3 +99,7 @@
99 99
 .icon-hangup:before {
100 100
     content: "\e617";
101 101
 }
102
+
103
+.icon-reload:before {
104
+    content: "\e618";
105
+}

+ 73
- 35
css/welcome_page.css Näytä tiedosto

@@ -3,59 +3,78 @@
3 3
     display:none;
4 4
 }
5 5
 
6
+.disable_welcome_position
7
+{
8
+    margin: -139px auto 0px auto;
9
+    padding-left: 39px;
10
+    padding-top: 7px;
11
+    width: 269px;
12
+    height: 31px;
13
+    display:block;
14
+}
15
+
6 16
 #disable_welcome + label
7 17
 {
8 18
     background-image: url(../images/welcome_page/disable-welcome.png);
9
-    display:inline-block;
10
-    position:absolute;
11
-    margin-left: 323px;
12
-    height: 54px;
13 19
     cursor: pointer;
14 20
     -webkit-user-select: none;
15 21
     -moz-user-select: none;
16 22
     background-repeat: no-repeat;
17
-    padding-left: 62px;
18
-    padding-top: 19px;
19 23
     font-weight: 500;
20 24
     font-family: Helvetica;
21 25
     font-size: 16px;
22 26
     color: #acacac;
27
+    z-index: 2;
23 28
 }
24 29
 
25 30
 #disable_welcome:checked + label
26 31
 {
27 32
     background-image: url(../images/welcome_page/disable-welcome-selected.png);
28
-    display:inline-block;
29
-    position:absolute;
30
-    margin-left: 323px;
31
-    height: 54px;
32 33
     cursor: pointer;
33 34
     -webkit-user-select: none;
34 35
     -moz-user-select: none;
35 36
     background-repeat: no-repeat;
36
-    padding-left: 62px;
37
-    padding-top: 19px;
38 37
     font-weight: 500;
39 38
     font-family: Helvetica;
40 39
     font-size: 16px;
41 40
     color: #acacac;
41
+    z-index: 2;
42 42
 }
43 43
 
44
-
45
-#enter_room_field {
44
+#enter_room_form {
46 45
     border-radius: 10px;
47
-    font-size: 16px;
48
-    padding: 15px 55px 10px 30px;
46
+    background-color: #FFFFFF;
49 47
     border: none;
50 48
     -moz-border-radius: 10px;
51 49
     -webkit-border-radius: 10px;
52 50
     -webkit-appearance: none;
53
-    width: 318px;
54 51
     height: 55px;
55
-    position:absolute;
52
+    box-shadow: none;
53
+    float: left;
54
+}
55
+
56
+#domain_name
57
+{
58
+    float: left;
59
+    padding: 20px 0px 10px 20px;
60
+    font-size: 18px;
61
+    font-weight: 500;
62
+    font-family: Helvetica;
63
+}
64
+
65
+#enter_room_field {
66
+    font-size: 18px;
67
+    padding: 15px 0px 10px 10px;
68
+    border: none;
69
+    -webkit-appearance: none;
70
+    width: 228px;
71
+    height: 55px;
56 72
     font-weight: 500;
57 73
     font-family: Helvetica;
58 74
     box-shadow: none;
75
+    float: left;
76
+    background-color: #FFFFFF;
77
+    position: relative;
59 78
     z-index: 2;
60 79
 }
61 80
 
@@ -63,24 +82,29 @@
63 82
     width: 73px;
64 83
     height: 45px;
65 84
     background-color: #16a8fe;
66
-    moz-border-radius: 15px;
67
-    -webkit-border-radius: 15px;
85
+    moz-border-radius: 10px;
86
+    -webkit-border-radius: 10px;
68 87
     color: #ffffff;
69 88
     font-weight: 600;
70 89
     border: none;
71
-    position:absolute;
72
-    margin-left: 240px;
73 90
     margin-top: 5px;
74 91
     font-size: 19px;
75 92
     font-family: Helvetica;
76 93
     padding-top: 6px;
77
-    z-index: 2;
78 94
     outline: none;
95
+    float:left;
96
+    position: relative;
97
+    z-index: 2;
79 98
 }
80 99
 
81
-#enter_room {
100
+#enter_room_container {
82 101
     margin: 70px auto 0px auto;
83
-    width:318px;
102
+    display: table;
103
+}
104
+
105
+#enter_room{
106
+    float:left;
107
+    padding-right: 5px;
84 108
 }
85 109
 
86 110
 #welcome_page_header
@@ -101,8 +125,10 @@
101 125
 
102 126
 #jitsi_logo
103 127
 {
104
-    background-image:url(../images/welcome_page/jitsi-logo.png);
128
+    background-image:url(../images/watermark.png);
105 129
     background-repeat: no-repeat;
130
+    background-size: contain;
131
+    background-position: center left;
106 132
     width: 186px;
107 133
     height: 74px;
108 134
     position: absolute;
@@ -112,7 +138,10 @@
112 138
 
113 139
 #brand_logo
114 140
 {
115
-    background-image:url(../images/welcome_page/brand-logo.png);
141
+    background-image:url(../images/rightwatermark.png);
142
+    background-repeat: no-repeat;
143
+    background-size: contain;
144
+    background-position: center left;
116 145
     width: 215px;
117 146
     height: 55px;
118 147
     position: absolute;
@@ -124,24 +153,20 @@
124 153
 #brand_header
125 154
 {
126 155
     background-image:url(../images/welcome_page/header-big.png);
127
-    position:absolute;
128 156
     width: 583px;
129 157
     height: 274px;
130
-    left: 340px;
131
-    top:15px;
158
+    margin: -110px auto 0px auto;
132 159
 }
133 160
 
134 161
 #header_text
135 162
 {
136
-    position: absolute;
137
-    left: 200px;
138
-    top: 150px;
139 163
     width: 885px;
140 164
     height: 100px;
141 165
     color: #ffffff;
142 166
     font-family: Helvetica;
143 167
     font-size: 24px;
144 168
     text-align: center;
169
+    margin: 0px auto 0px auto;
145 170
 }
146 171
 
147 172
 #features
@@ -164,6 +189,7 @@
164 189
     float:left;
165 190
     width: 169px;
166 191
     padding-left: 75px;
192
+    padding-bottom: 30px;
167 193
 }
168 194
 
169 195
 .feature_icon
@@ -178,16 +204,28 @@
178 204
     /*font-weight: bold;*/
179 205
     text-align: center;
180 206
     display: table-cell;
181
-    padding: 50px 29px 0px 17px;
207
+    padding: 50px 26px 0px 20px;
182 208
 }
183 209
 
184 210
 .feature_description
185 211
 {
186
-    width: 169px;
212
+    width: 190px;
187 213
     font-family: Helvetica;
188 214
     color: #ffffff;
189 215
     font-size: 16px;
190 216
     padding-top: 30px;
191 217
     line-height: 22px;
192 218
     font-weight: 200;
219
+}
220
+
221
+#reload_roomname
222
+{
223
+    width: 30px;
224
+    height: 19px;
225
+    color: #acacac;
226
+    margin-top: 22px;
227
+    z-index: 3;
228
+    float:  left;
229
+    cursor: pointer;
230
+    text-align: center;
193 231
 }

+ 13
- 5
debian/jitsi-meet-prosody.postinst Näytä tiedosto

@@ -23,12 +23,20 @@ case "$1" in
23 23
 
24 24
         . /etc/default/jitsi-videobridge
25 25
 
26
-        if [ -x /etc/prosody/prosody.cfg.lua ]; then
27
-            mv /etc/prosody/prosody.cfg.lua /etc/prosody/prosody.cfg.lua.orig
26
+        PROSODY_CONFIG_PRESENT="true"
27
+        if [ ! -f /etc/prosody/prosody.cfg.lua ]; then
28
+            PROSODY_CONFIG_PRESENT="false"
29
+            gunzip -c /usr/share/doc/jitsi-meet-prosody/prosody.cfg.lua-jvb.example.gz > /etc/prosody/prosody.cfg.lua
28 30
         fi
29
-        gunzip -c /usr/share/doc/jitsi-meet-prosody/prosody.cfg.lua-jvb.example.gz > /etc/prosody/prosody.cfg.lua
30
-        sed -i "s/jitmeet.example.com/$JVB_HOSTNAME/g" /etc/prosody/prosody.cfg.lua
31
-        sed -i "s/jitmeetSecret/$JVB_SECRET/g" /etc/prosody/prosody.cfg.lua
31
+
32
+        if [ ! grep "VirtualHost \"$JVB_HOSTNAME\"" /etc/prosody/prosody.cfg.lua > /dev/null ]; then
33
+            if [ "PROSODY_CONFIG_PRESENT" = "true" ]; then
34
+                mv /etc/prosody/prosody.cfg.lua /etc/prosody/prosody.cfg.lua.orig
35
+            fi
36
+            sed -i "s/jitmeet.example.com/$JVB_HOSTNAME/g" /etc/prosody/prosody.cfg.lua
37
+            sed -i "s/jitmeetSecret/$JVB_SECRET/g" /etc/prosody/prosody.cfg.lua
38
+        fi
39
+
32 40
         if [ ! -f /var/lib/prosody/$JVB_HOSTNAME.crt ]; then
33 41
             HOST="$( (hostname -s; echo localhost) | head -n 1)"
34 42
             DOMAIN="$( (hostname -d; echo localdomain) | head -n 1)"

+ 2
- 2
debian/jitsi-meet-prosody.postrm Näytä tiedosto

@@ -23,13 +23,13 @@ set -e
23 23
 
24 24
 
25 25
 case "$1" in
26
-    purge|remove)
26
+    remove)
27 27
         if [ -x "/etc/init.d/prosody" ]; then
28 28
             invoke-rc.d nginx reload
29 29
         fi
30 30
     ;;
31 31
 
32
-    upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
32
+    purge|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
33 33
     ;;
34 34
 
35 35
     *)

+ 10
- 11
debian/jitsi-meet.postinst Näytä tiedosto

@@ -23,15 +23,14 @@ case "$1" in
23 23
 
24 24
         # nginx conf
25 25
         . /etc/default/jitsi-videobridge
26
-        cp /usr/share/doc/jitsi-meet/jitsi-meet.example /etc/nginx/sites-available/$JVB_HOSTNAME.conf
27
-        if [ ! -f /etc/nginx/sites-enabled/$JVB_HOSTNAME.conf ]; then
28
-            ln -s /etc/nginx/sites-available/$JVB_HOSTNAME.conf /etc/nginx/sites-enabled/$JVB_HOSTNAME.conf
29
-        fi
30
-        sed -i "s/jitsi-meet.example.com/$JVB_HOSTNAME/g" /etc/nginx/sites-available/$JVB_HOSTNAME.conf
31
-        # FIXME do we need the default?
32
-        if [ ! -f /etc/nginx/sites-enabled/default ]; then
33
-            ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
26
+        if [ ! -f /etc/nginx/sites-available/$JVB_HOSTNAME.conf ]; then
27
+            cp /usr/share/doc/jitsi-meet/jitsi-meet.example /etc/nginx/sites-available/$JVB_HOSTNAME.conf
28
+            if [ ! -f /etc/nginx/sites-enabled/$JVB_HOSTNAME.conf ]; then
29
+                ln -s /etc/nginx/sites-available/$JVB_HOSTNAME.conf /etc/nginx/sites-enabled/$JVB_HOSTNAME.conf
30
+            fi
31
+            sed -i "s/jitsi-meet.example.com/$JVB_HOSTNAME/g" /etc/nginx/sites-available/$JVB_HOSTNAME.conf
34 32
         fi
33
+
35 34
         if grep "# server_names_hash_bucket_size 64" /etc/nginx/nginx.conf > /dev/null; then
36 35
             sed -i "s/#\ server_names_hash_bucket_size\ 64/\ server_names_hash_bucket_size\ 64/" /etc/nginx/nginx.conf
37 36
         fi
@@ -40,9 +39,9 @@ case "$1" in
40 39
         chown -R www-data:www-data /usr/share/jitsi-meet/
41 40
         sed -i "s/jitsi-meet.example.com/$JVB_HOSTNAME/g" /usr/share/jitsi-meet/config.js
42 41
         # enable turn
43
-        if grep "//  useStunTurn: true," /usr/share/jitsi-meet/config.js > /dev/null; then
44
-            sed -i "s/\/\/\ \ useStunTurn:\ true,/\ \ \ \ useStunTurn:\ true,/" /usr/share/jitsi-meet/config.js
45
-        fi
42
+        #if grep "//  useStunTurn: true," /usr/share/jitsi-meet/config.js > /dev/null; then
43
+        #    sed -i "s/\/\/\ \ useStunTurn:\ true,/\ \ \ \ useStunTurn:\ true,/" /usr/share/jitsi-meet/config.js
44
+        #fi
46 45
         invoke-rc.d nginx restart
47 46
 
48 47
     ;;

+ 2
- 2
debian/jitsi-meet.postrm Näytä tiedosto

@@ -23,13 +23,13 @@ set -e
23 23
 
24 24
 
25 25
 case "$1" in
26
-    purge|remove)
26
+    remove)
27 27
         if [ -x "/etc/init.d/nginx" ]; then
28 28
             invoke-rc.d nginx reload
29 29
         fi
30 30
     ;;
31 31
 
32
-    upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
32
+    purge|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
33 33
     ;;
34 34
 
35 35
     *)

BIN
fonts/jitsi.eot Näytä tiedosto


+ 1
- 0
fonts/jitsi.svg Näytä tiedosto

@@ -31,4 +31,5 @@
31 31
 <glyph unicode="&#xe615;" d="M508.412 2.883c-1.026 7.687-2.666 15.269-3.93 22.923-4.167 25.229-16.503 43.252-41.031 53.961-39.187 17.099-77.551 36.060-116.055 54.697-27.843 13.512-26.204 44.26-17.048 57.207 5.945 8.44 11.172 17.286 11.788 28.426 0.222 4.113 4.151 9.495 7.909 11.647 13.035 7.518 19.081 19.782 25.010 32.491 1.555 3.348 3.69 6.594 6.133 9.361 4.236 4.834 6.132 9.618 3.039 15.921-0.717 1.485 0.666 4.167 1.4 6.183 2.152 6.013 5.142 11.838 6.56 18.022 1.778 7.669 2.699 15.612 3.126 23.487 0.187 3.262-3.022 6.764-2.681 9.975 1.741 15.956-7.279 28.101-12.37 41.988-6.233 17.099-18.464 27.81-29.26 40.553-2.033 2.392-2.613 6.526-2.786 9.943-0.36 7.294-3.366 10.898-11.002 9.906-3.055-0.394-6.386-1.248-9.205-0.496-2.478 0.667-6.203 3.144-6.338 5.056-0.769 9.668-4.132 11.258-14.008 9.618-6.182-1.025-14.228 4.577-20.292 8.78-5.072 3.521-9.445 5.023-15.341 3.588-2.457-0.598-5.772-0.495-7.858 0.717-2.221 1.332-4.387 2.119-6.559 2.562v0.374c-0.478-0.016-0.991-0.102-1.469-0.154-0.477 0.051-0.956 0.137-1.434 0.154v-0.375c-2.185-0.444-4.375-1.231-6.578-2.562-2.066-1.213-5.381-1.316-7.84-0.718-5.911 1.434-10.285-0.068-15.342-3.588-6.079-4.202-14.108-9.805-20.292-8.781-9.873 1.641-13.255 0.052-14.024-9.618-0.154-1.912-3.843-4.389-6.338-5.056-2.834-0.752-6.149 0.102-9.223 0.495-7.618 0.992-10.625-2.613-10.985-9.906-0.169-3.416-0.751-7.551-2.784-9.943-10.794-12.743-23.025-23.454-29.278-40.553-5.058-13.886-14.094-26.031-12.335-41.987 0.343-3.211-2.872-6.714-2.7-9.975 0.445-7.875 1.368-15.818 3.127-23.487 1.418-6.184 4.407-12.010 6.576-18.022 0.719-2.016 2.121-4.698 1.384-6.183-3.091-6.303-1.179-11.087 3.058-15.921 2.427-2.767 4.56-6.013 6.115-9.361 5.929-12.709 11.974-24.974 25.007-32.491 3.76-2.152 7.689-7.534 7.929-11.647 0.596-11.14 5.825-19.986 11.785-28.426 9.141-12.947 10.573-43.369-17.081-57.207-38.228-19.132-76.871-37.6-116.021-54.697-24.564-10.709-36.863-28.731-41.032-53.961-1.263-7.656-2.939-15.238-3.929-22.923-1.505-11.464-3.912-34.883-3.912-34.883h512.306c-0.001 0-2.39 23.419-3.894 34.883z" horiz-adv-x="513" />
32 32
 <glyph unicode="&#xe616;" d="M513.087 224.534c0-141.673-114.855-256.526-256.554-256.526-141.674 0-256.534 114.851-256.534 256.526 0 141.692 114.861 256.553 256.534 256.553 141.7 0 256.554-114.861 256.554-256.553zM256.534-31.993c67.863 0 129.556 26.356 175.437 69.37-4.858 5.825-11.276 10.557-19.557 14.171-29.467 12.873-58.313 27.128-87.267 41.128-20.935 10.161-19.702 33.293-12.82 43.029 4.471 6.346 8.402 12.999 8.864 21.373 0.166 3.084 3.12 7.142 5.945 8.761 9.802 5.652 14.349 14.873 18.802 24.43 1.17 2.515 2.777 4.945 4.615 7.038 3.185 3.622 4.612 7.218 2.286 11.971-0.543 1.104 0.502 3.12 1.053 4.637 1.619 4.534 3.866 8.901 4.93 13.558 1.335 5.774 2.029 11.74 2.351 17.661 0.14 2.451-2.272 5.092-2.017 7.493 1.31 12.011-5.471 21.136-9.299 31.579-4.688 12.857-13.885 20.91-22.002 30.485-1.529 1.812-1.964 4.919-2.094 7.476-0.269 5.49-2.53 8.207-8.272 7.462-2.299-0.3-4.805-0.943-6.921-0.378-1.864 0.494-4.663 2.362-4.767 3.802-0.577 7.269-3.106 8.465-10.533 7.238-4.648-0.772-10.697 3.429-15.257 6.601-3.816 2.646-7.104 3.777-11.534 2.69-1.849-0.45-4.341-0.373-5.908 0.547-1.671 0.988-3.303 1.592-4.933 1.919v0.276c-0.36-0.007-0.745-0.065-1.104-0.108-0.361 0.044-0.72 0.103-1.078 0.108v-0.276c-1.645-0.327-3.287-0.931-4.945-1.919-1.556-0.918-4.046-0.996-5.899-0.547-4.443 1.087-7.724-0.044-11.532-2.69-4.578-3.173-10.611-7.373-15.259-6.601-7.431 1.226-9.97 0.031-10.547-7.238-0.109-1.439-2.897-3.308-4.758-3.802-2.139-0.565-4.624 0.077-6.944 0.378-5.728 0.745-7.994-1.971-8.258-7.462-0.131-2.555-0.565-5.665-2.095-7.476-8.111-9.575-17.308-17.629-22.009-30.485-3.814-10.443-10.602-19.568-9.285-31.579 0.256-2.401-2.152-5.042-2.023-7.493 0.327-5.923 1.020-11.888 2.351-17.661 1.065-4.656 3.313-9.024 4.945-13.558 0.547-1.516 1.587-3.531 1.041-4.637-2.325-4.754-0.894-8.351 2.291-11.971 1.837-2.094 3.437-4.523 4.612-7.038 4.45-9.555 8.996-18.779 18.798-24.43 2.827-1.619 5.78-5.676 5.952-8.761 0.457-8.374 4.387-15.027 8.869-21.373 6.873-9.735 7.951-32.623-12.837-43.029-28.76-14.386-57.8-28.255-87.251-41.128-8.285-3.615-14.704-8.347-19.561-14.169 45.88-43.015 107.569-69.372 175.422-69.372z" horiz-adv-x="513" />
33 33
 <glyph unicode="&#xe617;" d="M32.887 258.374c5.026 4.679 12.994 10.886 21.642 16.349 25.668 16.31 54.057 25.449 83.415 32.066 24.381 5.475 49.123 8.444 74.033 10.101 27.877 1.877 55.779 1.89 83.696 0.399 19.972-1.092 39.843-3.251 59.56-6.606 21.978-3.753 43.519-8.997 64.392-16.875 12.209-4.587 24.086-10.053 35.267-16.786 14.858-8.946 28.276-19.612 38.61-33.674 10.409-14.151 15.861-30.204 16.914-47.696 0.873-13.701 0.358-27.349-2.828-40.794-1.438-6.041-4.113-11.567-8.277-16.193-5.709-6.324-13.212-8.51-21.386-8.818-10.231-0.334-20.205 2.057-30.18 4.113-19.456 3.985-38.918 8.123-58.349 12.364-7.069 1.517-14.344 2.546-20.825 6.298-11.154 6.478-17.223 15.887-17.017 28.892 0.129 8.435 1.108 16.891 1.235 25.348 0.156 12.505-4.962 22.581-15.449 29.521-7.197 4.769-15.347 7.456-23.726 9.333-20.206 4.523-40.693 5.089-61.281 5.025-14.411-0.063-28.791-0.834-43.047-3.071-9.974-1.581-19.781-3.906-28.866-8.507-12.159-6.182-19.677-15.732-20.036-29.676-0.22-8.175 0.487-16.401 0.964-24.575 0.321-5.911-0.040-11.723-2.648-17.144-4.63-9.692-12.468-15.836-22.685-18.482-11.323-2.933-22.802-5.27-34.252-7.611-19.051-3.882-38.108-7.684-57.208-11.259-7.263-1.387-14.627-0.976-21.567 1.801-9.371 3.728-14.462 11.387-17.069 20.668-3.548 12.699-3.921 25.757-3.483 38.865 0.45 13.52 2.942 26.618 9.202 38.803 4.897 9.532 11.246 17.977 21.246 27.821z" horiz-adv-x="513" />
34
+<glyph unicode="&#xe618;" d="M398.543 56.151c-0.029 0.082-0.060 0.164-0.080 0.243-35.7-22.819-75.891-34.966-117.012-34.966-0.007 0-0.010 0-0.014 0-61.26 0-118.75 26.386-157.734 72.37-49.889 58.849-67.126 164.977-36.511 213.894 2.002-0.831 3.938-1.616 5.84-2.387 6.793-2.756 13.207-5.358 21.153-9.548 3.031-1.601 6.169-2.406 9.337-2.406 5.857 0 11.3 2.824 14.924 7.743 3.907 5.309 5.156 12.389 3.269 18.476l-1.762 5.705c-5.344 17.295-10.862 35.177-17.106 52.539-4.992 13.882-11.2 31.163-29.613 31.163-6.028 0-13.019-1.828-23.365-6.102-22.147-9.159-35.529-14.981-57.267-24.905-7.551-3.444-12.617-11.349-12.601-19.672 0.014-7.921 4.496-14.668 11.988-18.058 9.104-4.128 15.268-6.858 21.734-9.723l5.343-2.377c-50.969-129.551 12.401-263.229 105.657-319.606 41.749-25.237 89.25-38.57 137.385-38.57h0.021c51.36 0 102.781 15.55 142.25 42.599-15.865 14.401-22.783 34.584-25.836 43.586zM549.101 105.045c-9.057 4.288-15.178 7.129-21.611 10.122l-5.248 2.446c53.224 128.634-7.784 263.401-100.034 321.394-42.68 26.832-91.562 41.016-141.358 41.016-52.424 0-103.205-15.297-142.983-43.083l-2.692-1.882c15.798-13.782 22.93-33.394 26.459-43.205 36.463 23.97 77.838 36.704 119.947 36.704 62.704 0 121.071-27.392 160.147-75.158 48.841-59.724 64.219-166.128 32.749-214.508-1.995 0.868-3.908 1.692-5.812 2.499-6.736 2.88-13.102 5.59-20.977 9.911-3.101 1.712-6.322 2.577-9.606 2.577-5.793 0-11.2-2.779-14.845-7.634-3.906-5.217-5.239-12.216-3.483-18.257l1.639-5.651c5.048-17.423 10.265-35.428 16.206-52.921 4.794-14.119 10.757-31.691 29.589-31.691 5.921 0 12.788 1.712 22.94 5.7 22.175 8.719 35.66 14.3 57.704 23.889 7.595 3.312 12.801 11.126 12.929 19.447 0.14 7.911-4.222 14.75-11.663 18.284z" horiz-adv-x="561" />
34 35
 </font></defs></svg>

BIN
fonts/jitsi.ttf Näytä tiedosto


BIN
fonts/jitsi.woff Näytä tiedosto


+ 58
- 24
fonts/selection.json Näytä tiedosto

@@ -1,6 +1,40 @@
1 1
 {
2 2
 	"IcoMoonType": "selection",
3 3
 	"icons": [
4
+		{
5
+			"icon": {
6
+				"paths": [
7
+					"",
8
+					"M797.086 847.699c-0.059-0.163-0.119-0.328-0.16-0.485-71.399 45.638-151.782 69.931-234.023 69.931-0.013 0-0.021 0-0.028 0-122.52 0-237.501-52.772-315.469-144.741-99.778-117.698-134.252-329.954-73.022-427.789 4.004 1.662 7.875 3.233 11.68 4.773 13.585 5.511 26.413 10.716 42.305 19.096 6.063 3.202 12.338 4.812 18.673 4.812 11.714 0 22.6-5.648 29.848-15.486 7.815-10.617 10.313-24.778 6.538-36.951l-3.525-11.41c-10.687-34.59-21.723-70.354-34.211-105.078-9.983-27.765-22.399-62.327-59.226-62.327-12.057 0-26.037 3.656-46.73 12.204-44.294 18.319-71.058 29.961-114.534 49.81-15.102 6.887-25.234 22.698-25.203 39.343 0.028 15.842 8.992 29.337 23.975 36.115 18.208 8.257 30.536 13.716 43.468 19.447l10.687 4.753c-101.938 259.102 24.803 526.458 211.314 639.212 83.497 50.474 178.5 77.14 274.769 77.14h0.041c102.72 0 205.561-31.099 284.501-85.198-31.729-28.803-45.566-69.167-51.671-87.171z",
9
+					"M1098.203 749.91c-18.113-8.577-30.356-14.258-43.221-20.244l-10.496-4.892c106.448-257.268-15.569-526.801-200.067-642.788-85.36-53.663-183.123-82.032-282.716-82.032-104.848 0-206.41 30.593-285.967 86.165l-5.385 3.764c31.597 27.564 45.86 66.788 52.917 86.41 72.926-47.94 155.675-73.409 239.895-73.409 125.407 0 242.142 54.785 320.294 150.316 97.683 119.447 128.439 332.255 65.498 429.015-3.989-1.736-7.815-3.385-11.624-4.998-13.471-5.759-26.204-11.18-41.954-19.821-6.203-3.424-12.645-5.155-19.212-5.155-11.585 0-22.399 5.558-29.69 15.267-7.813 10.434-10.478 24.432-6.966 36.515l3.279 11.301c10.096 34.845 20.531 70.857 32.412 105.842 9.588 28.238 21.514 63.382 59.179 63.382 11.843 0 25.577-3.424 45.881-11.399 44.351-17.439 71.319-28.601 115.409-47.777 15.19-6.623 25.601-22.252 25.859-38.894 0.281-15.822-8.445-29.499-23.325-36.569z"
10
+				],
11
+				"attrs": [
12
+					{},
13
+					{},
14
+					{}
15
+				],
16
+				"width": 1122,
17
+				"grid": 0,
18
+				"tags": [
19
+					"reload"
20
+				]
21
+			},
22
+			"attrs": [
23
+				{},
24
+				{},
25
+				{}
26
+			],
27
+			"properties": {
28
+				"order": 25,
29
+				"id": 28,
30
+				"prevSize": 32,
31
+				"code": 58904,
32
+				"name": "reload",
33
+				"ligatures": ""
34
+			},
35
+			"setIdx": 0,
36
+			"iconIdx": 0
37
+		},
4 38
 		{
5 39
 			"icon": {
6 40
 				"paths": [
@@ -27,7 +61,7 @@
27 61
 				"ligatures": ""
28 62
 			},
29 63
 			"setIdx": 0,
30
-			"iconIdx": 0
64
+			"iconIdx": 1
31 65
 		},
32 66
 		{
33 67
 			"icon": {
@@ -55,7 +89,7 @@
55 89
 				"ligatures": ""
56 90
 			},
57 91
 			"setIdx": 0,
58
-			"iconIdx": 1
92
+			"iconIdx": 2
59 93
 		},
60 94
 		{
61 95
 			"icon": {
@@ -94,7 +128,7 @@
94 128
 				"ligatures": ""
95 129
 			},
96 130
 			"setIdx": 0,
97
-			"iconIdx": 2
131
+			"iconIdx": 3
98 132
 		},
99 133
 		{
100 134
 			"icon": {
@@ -117,7 +151,7 @@
117 151
 				"ligatures": ""
118 152
 			},
119 153
 			"setIdx": 0,
120
-			"iconIdx": 3
154
+			"iconIdx": 4
121 155
 		},
122 156
 		{
123 157
 			"icon": {
@@ -140,7 +174,7 @@
140 174
 				"ligatures": ""
141 175
 			},
142 176
 			"setIdx": 0,
143
-			"iconIdx": 4
177
+			"iconIdx": 5
144 178
 		},
145 179
 		{
146 180
 			"icon": {
@@ -164,7 +198,7 @@
164 198
 				"ligatures": ""
165 199
 			},
166 200
 			"setIdx": 0,
167
-			"iconIdx": 5
201
+			"iconIdx": 6
168 202
 		},
169 203
 		{
170 204
 			"icon": {
@@ -189,7 +223,7 @@
189 223
 				"ligatures": ""
190 224
 			},
191 225
 			"setIdx": 0,
192
-			"iconIdx": 6
226
+			"iconIdx": 7
193 227
 		},
194 228
 		{
195 229
 			"icon": {
@@ -212,7 +246,7 @@
212 246
 				"ligatures": ""
213 247
 			},
214 248
 			"setIdx": 0,
215
-			"iconIdx": 7
249
+			"iconIdx": 8
216 250
 		},
217 251
 		{
218 252
 			"icon": {
@@ -236,7 +270,7 @@
236 270
 				"ligatures": ""
237 271
 			},
238 272
 			"setIdx": 0,
239
-			"iconIdx": 8
273
+			"iconIdx": 9
240 274
 		},
241 275
 		{
242 276
 			"icon": {
@@ -260,7 +294,7 @@
260 294
 				"ligatures": ""
261 295
 			},
262 296
 			"setIdx": 0,
263
-			"iconIdx": 9
297
+			"iconIdx": 10
264 298
 		},
265 299
 		{
266 300
 			"icon": {
@@ -282,7 +316,7 @@
282 316
 				"ligatures": ""
283 317
 			},
284 318
 			"setIdx": 0,
285
-			"iconIdx": 10
319
+			"iconIdx": 11
286 320
 		},
287 321
 		{
288 322
 			"icon": {
@@ -306,7 +340,7 @@
306 340
 				"ligatures": ""
307 341
 			},
308 342
 			"setIdx": 0,
309
-			"iconIdx": 11
343
+			"iconIdx": 12
310 344
 		},
311 345
 		{
312 346
 			"icon": {
@@ -330,7 +364,7 @@
330 364
 				"ligatures": ""
331 365
 			},
332 366
 			"setIdx": 0,
333
-			"iconIdx": 12
367
+			"iconIdx": 13
334 368
 		},
335 369
 		{
336 370
 			"icon": {
@@ -357,7 +391,7 @@
357 391
 				"ligatures": ""
358 392
 			},
359 393
 			"setIdx": 0,
360
-			"iconIdx": 13
394
+			"iconIdx": 14
361 395
 		},
362 396
 		{
363 397
 			"icon": {
@@ -381,7 +415,7 @@
381 415
 				"ligatures": ""
382 416
 			},
383 417
 			"setIdx": 0,
384
-			"iconIdx": 14
418
+			"iconIdx": 15
385 419
 		},
386 420
 		{
387 421
 			"icon": {
@@ -405,7 +439,7 @@
405 439
 				"ligatures": ""
406 440
 			},
407 441
 			"setIdx": 0,
408
-			"iconIdx": 15
442
+			"iconIdx": 16
409 443
 		},
410 444
 		{
411 445
 			"icon": {
@@ -430,7 +464,7 @@
430 464
 				"ligatures": ""
431 465
 			},
432 466
 			"setIdx": 0,
433
-			"iconIdx": 16
467
+			"iconIdx": 17
434 468
 		},
435 469
 		{
436 470
 			"icon": {
@@ -452,7 +486,7 @@
452 486
 				"ligatures": ""
453 487
 			},
454 488
 			"setIdx": 0,
455
-			"iconIdx": 17
489
+			"iconIdx": 18
456 490
 		},
457 491
 		{
458 492
 			"icon": {
@@ -475,7 +509,7 @@
475 509
 				"ligatures": ""
476 510
 			},
477 511
 			"setIdx": 0,
478
-			"iconIdx": 18
512
+			"iconIdx": 19
479 513
 		},
480 514
 		{
481 515
 			"icon": {
@@ -497,7 +531,7 @@
497 531
 				"ligatures": ""
498 532
 			},
499 533
 			"setIdx": 0,
500
-			"iconIdx": 19
534
+			"iconIdx": 20
501 535
 		},
502 536
 		{
503 537
 			"icon": {
@@ -520,7 +554,7 @@
520 554
 				"ligatures": ""
521 555
 			},
522 556
 			"setIdx": 0,
523
-			"iconIdx": 20
557
+			"iconIdx": 21
524 558
 		},
525 559
 		{
526 560
 			"icon": {
@@ -543,7 +577,7 @@
543 577
 				"ligatures": ""
544 578
 			},
545 579
 			"setIdx": 0,
546
-			"iconIdx": 21
580
+			"iconIdx": 22
547 581
 		},
548 582
 		{
549 583
 			"icon": {
@@ -567,7 +601,7 @@
567 601
 				"ligatures": ""
568 602
 			},
569 603
 			"setIdx": 0,
570
-			"iconIdx": 22
604
+			"iconIdx": 23
571 605
 		},
572 606
 		{
573 607
 			"icon": {
@@ -590,7 +624,7 @@
590 624
 				"ligatures": ""
591 625
 			},
592 626
 			"setIdx": 0,
593
-			"iconIdx": 23
627
+			"iconIdx": 24
594 628
 		}
595 629
 	],
596 630
 	"height": 1024,

BIN
images/welcome_page/brand-logo.png Näytä tiedosto


BIN
images/welcome_page/disable-welcome-selected.png Näytä tiedosto


BIN
images/welcome_page/disable-welcome.png Näytä tiedosto


BIN
images/welcome_page/jitsi-logo.png Näytä tiedosto


+ 30
- 18
index.html Näytä tiedosto

@@ -9,7 +9,7 @@
9 9
     <meta itemprop="name" content="Jitsi Meet"/>
10 10
     <meta itemprop="description" content="Join a WebRTC video conference powered by the Jitsi Videobridge"/>
11 11
     <meta itemprop="image" content="/images/jitsilogo.png"/>
12
-    <script src="libs/jquery.min.js"></script>
12
+    <script src="libs/jquery-2.1.1.min.js"></script>
13 13
     <script src="libs/strophe/strophe.jingle.adapter.js?v=1"></script><!-- strophe.jingle bundles -->
14 14
     <script src="libs/strophe/strophe.jingle.bundle.js?v=8"></script>
15 15
     <script src="libs/strophe/strophe.jingle.js?v=1"></script>
@@ -23,12 +23,13 @@
23 23
     <script src="libs/rayo.js?v=1"></script>
24 24
     <script src="libs/tooltip.js?v=1"></script><!-- bootstrap tooltip lib -->
25 25
     <script src="libs/popover.js?v=1"></script><!-- bootstrap tooltip lib -->
26
-    <script src="config.js?v=4"></script><!-- adapt to your needs, i.e. set hosts and bosh path -->
26
+    <script src="config.js?v=5"></script><!-- adapt to your needs, i.e. set hosts and bosh path -->
27
+    <script src="brand.js?v=1"></script>
27 28
     <script src="muc.js?v=13"></script><!-- simple MUC library -->
28 29
     <script src="estos_log.js?v=2"></script><!-- simple stanza logger -->
29 30
     <script src="desktopsharing.js?v=2"></script><!-- desktop sharing -->
30 31
     <script src="data_channels.js?v=3"></script><!-- data channels -->
31
-    <script src="app.js?v=5"></script><!-- application logic -->
32
+    <script src="app.js?v=7"></script><!-- application logic -->
32 33
     <script src="commands.js?v=1"></script><!-- application logic -->
33 34
     <script src="chat.js?v=9"></script><!-- chat logic -->
34 35
     <script src="contact_list.js?v=1"></script><!-- contact list logic -->
@@ -39,14 +40,15 @@
39 40
     <script src="replacement.js?v=6"></script><!-- link and smiley replacement -->
40 41
     <script src="moderatemuc.js?v=3"></script><!-- moderator plugin -->
41 42
     <script src="analytics.js?v=1"></script><!-- google analytics plugin -->
42
-    <script src="rtp_stats.js?v=1"></script><!-- RTP stats processing -->
43
-    <script src="local_stats.js?v=1"></script><!-- Local stats processing -->
43
+    <script src="rtp_sts.js?v=1"></script><!-- RTP stats processing -->
44
+    <script src="local_sts.js?v=1"></script><!-- Local stats processing -->
44 45
     <script src="videolayout.js?v=8"></script><!-- video ui -->
45 46
     <script src="toolbar.js?v=4"></script><!-- toolbar ui -->
46 47
     <script src="canvas_util.js?v=1"></script><!-- canvas drawing utils -->
47 48
     <script src="audio_levels.js?v=1"></script><!-- audio levels plugin -->
48 49
     <script src="media_stream.js?v=1"></script><!-- media stream -->
49 50
     <script src="bottom_toolbar.js?v=1"></script><!-- media stream -->
51
+    <script src="roomname_generator.js?v=1"></script><!-- generator for random room names -->
50 52
     <script src="tracking.js?v=1"></script><!-- tracking -->
51 53
     <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
52 54
     <link rel="stylesheet" href="css/font.css?v=3"/>
@@ -57,7 +59,7 @@
57 59
     <link rel="stylesheet" href="css/popup_menu.css?v=2">
58 60
     <link rel="stylesheet" href="css/popover.css?v=1">
59 61
     <link rel="stylesheet" href="css/contact_list.css?v=1">
60
-      <link rel="stylesheet" href="css/welcome_page.css?v=1">
62
+    <link rel="stylesheet" href="css/welcome_page.css?v=1">
61 63
     <!--
62 64
         Link used for inline installation of chrome desktop streaming extension,
63 65
         is updated automatically from the code with the value defined in config.js -->
@@ -73,13 +75,24 @@
73 75
                 <div id="jitsi_logo"></div>
74 76
             </a>
75 77
 
76
-            <div id="enter_room">
77
-                <input id="enter_room_field" type="text" placeholder="Enter room name" />
78
-                <input id="enter_room_button" type="button" value="GO" />
79
-                <input type='checkbox' name='checkbox' id="disable_welcome"/>
80
-                <label for="disable_welcome">Don't show this page</label>
78
+            <!--<a href="http://jitsi.org" target="_new">
79
+                <div id="brand_logo"></div>
80
+            </a>-->
81
+
82
+            <div id="enter_room_container">
83
+                    <div id="enter_room_form" >
84
+                        <div id="domain_name"></div>
85
+                        <div id="enter_room">
86
+                            <input id="enter_room_field" type="text" autofocus placeholder="Enter room name" />
87
+                            <div class="icon-reload" id="reload_roomname"></div>
88
+                            <input id="enter_room_button" type="button" value="GO" />
89
+
90
+                        </div>
91
+                    </div>
81 92
             </div>
82 93
             <div id="brand_header"></div>
94
+            <input type='checkbox' name='checkbox' id="disable_welcome"/>
95
+            <label for="disable_welcome" class="disable_welcome_position">Don't show this page next time I enter</label>
83 96
             <div id="header_text"></div>
84 97
         </div>
85 98
         <div id="welcome_page_main">
@@ -88,7 +101,7 @@
88 101
                     <div class="feature_holder">
89 102
                         <div class="feature_icon">Simple to use</div>
90 103
                         <div class="feature_description">
91
-                            No downloads required. uTalk works directly within your browser. Simply share your conference URL with others to get started.
104
+                            No downloads required. <span name="appName"></span> works directly within your browser. Simply share your conference URL with others to get started.
92 105
                         </div>
93 106
                     </div>
94 107
                     <div class="feature_holder">
@@ -100,7 +113,7 @@
100 113
                     <div class="feature_holder">
101 114
                         <div class="feature_icon">Open source</div>
102 115
                         <div class="feature_description">
103
-                            uTalk is licensed under the &lt;GPL/LGPL/WHATEVER&gt;. You can download, use, modify, and share the software without any restrictions.
116
+                            <span name="appName"></span> is licensed under MIT. You are free to download, use, modify, and share them as per these licenses.
104 117
                         </div>
105 118
                     </div>
106 119
                     <div class="feature_holder">
@@ -114,19 +127,19 @@
114 127
                     <div class="feature_holder">
115 128
                         <div class="feature_icon">Screen sharing</div>
116 129
                         <div class="feature_description">
117
-                            It's easy to share your screen with others. uTalk is ideal for on-line presentations, lectures, and tech support sessions.
130
+                            It's easy to share your screen with others. <span name="appName"></span> is ideal for on-line presentations, lectures, and tech support sessions.
118 131
                         </div>
119 132
                     </div>
120 133
                     <div class="feature_holder">
121 134
                         <div class="feature_icon">Secure rooms</div>
122 135
                         <div class="feature_description">
123
-                            Need some privacy? uTalk conference rooms can be secured with a password in order to exclude unwanted guests and prevent interruptions.
136
+                            Need some privacy? <span name="appName"></span> conference rooms can be secured with a password in order to exclude unwanted guests and prevent interruptions.
124 137
                         </div>
125 138
                     </div>
126 139
                     <div class="feature_holder">
127 140
                         <div class="feature_icon">Shared notes</div>
128 141
                         <div class="feature_description">
129
-                            uTalk features Etherpad, a real-time collaborative text editor that's great for meeting minutes, writing articles, and more.
142
+                            <span name="appName"></span> features Etherpad, a real-time collaborative text editor that's great for meeting minutes, writing articles, and more.
130 143
                         </div>
131 144
                     </div>
132 145
                     <div class="feature_holder">
@@ -199,7 +212,7 @@
199 212
                     <div class="header_button_separator"></div>
200 213
                     <span id="hangup">
201 214
                         <a class="button" data-toggle="popover" data-placement="bottom" data-content="Hang Up" onclick='hangup();'>
202
-                            <i class="icon-hangup" style="color:#f42a24;"></i>
215
+                            <i class="icon-hangup" style="color:#ff0000;font-size: 1.4em;"></i>
203 216
                         </a>
204 217
                     </span>
205 218
                 </span>
@@ -271,6 +284,5 @@
271 284
         </div>
272 285
         <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>
273 286
     </div>
274
-
275 287
   </body>
276 288
 </html>

+ 9190
- 0
libs/jquery-2.1.1.js
File diff suppressed because it is too large
Näytä tiedosto


+ 4
- 0
libs/jquery-2.1.1.min.js
File diff suppressed because it is too large
Näytä tiedosto


+ 1
- 0
libs/jquery-2.1.1.min.map
File diff suppressed because it is too large
Näytä tiedosto


+ 0
- 6
libs/jquery.min.js
File diff suppressed because it is too large
Näytä tiedosto


+ 4
- 4
libs/strophe/strophe.jingle.adapter.js Näytä tiedosto

@@ -577,23 +577,19 @@ function getUserMediaWithConstraints(um, success_callback, failure_callback, res
577 577
         case 'fullhd':
578 578
             constraints.video.mandatory.minWidth = 1920;
579 579
             constraints.video.mandatory.minHeight = 1080;
580
-            constraints.video.optional.push({ minAspectRatio: 1.77 });
581 580
             break;
582 581
         case '720':
583 582
         case 'hd':
584 583
             constraints.video.mandatory.minWidth = 1280;
585 584
             constraints.video.mandatory.minHeight = 720;
586
-            constraints.video.optional.push({ minAspectRatio: 1.77 });
587 585
             break;
588 586
         case '360':
589 587
             constraints.video.mandatory.minWidth = 640;
590 588
             constraints.video.mandatory.minHeight = 360;
591
-            constraints.video.optional.push({ minAspectRatio: 1.77 });
592 589
             break;
593 590
         case '180':
594 591
             constraints.video.mandatory.minWidth = 320;
595 592
             constraints.video.mandatory.minHeight = 180;
596
-            constraints.video.optional.push({ minAspectRatio: 1.77 });
597 593
             break;
598 594
         // 4:3
599 595
         case '960':
@@ -617,6 +613,10 @@ function getUserMediaWithConstraints(um, success_callback, failure_callback, res
617 613
             }
618 614
             break;
619 615
     }
616
+    if (constraints.video.mandatory.minWidth)
617
+        constraints.video.mandatory.maxWidth = constraints.video.mandatory.minWidth;
618
+    if (constraints.video.mandatory.minHeight)
619
+        constraints.video.mandatory.maxHeight = constraints.video.mandatory.minHeight;
620 620
 
621 621
     if (bandwidth) { // doesn't work currently, see webrtc issue 1846
622 622
         if (!constraints.video) constraints.video = {mandatory: {}, optional: []};//same behaviour as true

+ 4
- 2
libs/strophe/strophe.jingle.js Näytä tiedosto

@@ -253,7 +253,8 @@ Strophe.addConnectionPlugin('jingle', {
253 253
                 $(res).find('>services>service').each(function (idx, el) {
254 254
                     el = $(el);
255 255
                     var dict = {};
256
-                    switch (el.attr('type')) {
256
+                    var type = el.attr('type');
257
+                    switch (type) {
257 258
                         case 'stun':
258 259
                             dict.url = 'stun:' + el.attr('host');
259 260
                             if (el.attr('port')) {
@@ -262,7 +263,8 @@ Strophe.addConnectionPlugin('jingle', {
262 263
                             iceservers.push(dict);
263 264
                             break;
264 265
                         case 'turn':
265
-                            dict.url = 'turn:';
266
+                        case 'turns':
267
+                            dict.url = type + ':';
266 268
                             if (el.attr('username')) { // https://code.google.com/p/webrtc/issues/detail?id=1508
267 269
                                 if (navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./) && parseInt(navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./)[2], 10) < 28) {
268 270
                                     dict.url += el.attr('username') + '@';

+ 23
- 0
libs/tooltip.js Näytä tiedosto

@@ -185,6 +185,29 @@
185 185
         that.$element.trigger('shown.bs.' + that.type)
186 186
       }
187 187
 
188
+      var deltas = {
189
+          "bottom": $tip[0].getBoundingClientRect().bottom - window.innerHeight,
190
+          "right": $tip[0].getBoundingClientRect().right - window.innerWidth,
191
+          "left": -$tip[0].getBoundingClientRect().left,
192
+          "top": -$tip[0].getBoundingClientRect().top
193
+      };
194
+      for(var direction in deltas) {
195
+          if (deltas[direction] > 0) {
196
+              var delta = deltas[direction];
197
+              if(direction === "right" || direction === "bottom") {
198
+                  delta = -delta;
199
+              }
200
+              direction = direction === "top" || direction === "bottom" ? "top" : "left";
201
+              var currentPosition = parseInt($tip.css(direction), 10);
202
+              $tip.css(direction, currentPosition + delta);
203
+              if(direction === "left") {
204
+                  $tip.children(".arrow").css(direction, parseInt($tip.children(".arrow").css(direction), 10) - delta);
205
+              } else {
206
+                  $tip.children(".arrow").css(direction, 50 - $tip[0].getBoundingClientRect().height / delta + "%");
207
+              }
208
+          }
209
+      }
210
+
188 211
       $.support.transition && this.$tip.hasClass('fade') ?
189 212
         $tip
190 213
           .one($.support.transition.end, complete)

local_stats.js → local_sts.js Näytä tiedosto


+ 162
- 0
roomname_generator.js Näytä tiedosto

@@ -0,0 +1,162 @@
1
+var RoomNameGenerator = function(my) {
2
+
3
+
4
+    /**
5
+     * Constructs new RoomNameGenerator object.
6
+     * @constructor constructs new RoomNameGenerator object.
7
+     */
8
+    function RoomNameGeneratorProto()
9
+    {
10
+
11
+    }
12
+
13
+    /**
14
+     * Default separator the words in the room name
15
+     * @type {string}
16
+     */
17
+    var DEFAULT_SEPARATOR = "-";
18
+
19
+    /**
20
+     * Default number of words in the room name.
21
+     * @type {number}
22
+     */
23
+    var NUMBER_OF_WORDS = 3;
24
+
25
+
26
+    /**
27
+     * The list with words.
28
+     * @type {string[]}
29
+     */
30
+    var words = [
31
+        "definite ", "indefinite ", "articles", "name", "preposition ", "help", "very", "to", "through", "and", "just",
32
+        "a", "form", "in", "sentence", "is", "great", "it", "think", "you", "say", "that", "help", "he", "low", "was",
33
+        "line", "for", "differ", "on", "turn", "are", "cause", "with", "much", "as", "mean", "before", "his", "move",
34
+        "they", "right", "be", "boy", "at", "old", "one", "too", "have", "same", "this", "tell", "from", "does", "or",
35
+        "set", "had", "three", "by", "want", "hot", "air", "word", "well", "but", "also", "what", "play", "some", "small",
36
+        "we", "end", "can", "put", "out", "home", "other", "read", "were", "hand", "all", "port", "there", "large",
37
+        "when", "spell", "up", "add", "use", "even", "your", "land", "how", "here", "said", "must", "an", "big", "each",
38
+        "high", "she", "such", "which", "follow", "do", "act", "their", "why", "time", "ask", "if", "men", "will", "change",
39
+        "way", "went", "about", "light", "many", "kind", "then", "off", "them", "need", "write", "house", "would",
40
+        "picture", "like", "try", "so", "us", "these", "again", "her", "animal", "long", "point", "make", "mother",
41
+        "thing", "world", "see", "near", "him", "build", "two", "self", "has", "earth", "look", "father", "more", "head",
42
+        "day", "stand", "could", "own", "go", "page", "come", "should", "did", "country", "number", "found", "sound",
43
+        "answer", "no", "school", "most", "grow", "people", "study", "my", "still", "over", "learn", "know", "plant",
44
+        "water", "cover", "than", "food", "call", "sun", "first", "four", "who", "between", "may", "state", "down",
45
+        "keep", "side", "eye", "been", "never", "now", "last", "find", "let", "any", "thought", "new", "city", "work",
46
+        "tree", "part", "cross", "take", "farm", "get", "hard", "place", "start", "made", "might", "live", "story",
47
+        "where", "saw", "after", "far", "back", "sea", "little", "draw", "only", "left", "round", "late", "man", "run",
48
+        "year", "don't", "came", "while", "show", "press", "every", "close", "good", "night", "me", "real", "give",
49
+        "life", "our", "few", "under", "north", "open", "ten", "seem", "simple", "together", "several", "next", "vowel",
50
+        "white", "toward", "children", "war", "begin", "lay", "got", "against", "walk", "pattern", "example", "slow",
51
+        "ease", "center", "paper", "love", "group", "person", "always", "money", "music", "serve", "those", "appear",
52
+        "both", "road", "mark", "map", "often", "rain", "letter", "rule", "until", "govern", "mile", "pull", "river",
53
+        "cold", "car", "notice", "feet", "voice", "care", "unit", "second", "power", "book", "town", "carry", "fine",
54
+        "took", "certain", "science", "fly", "eat", "fall", "room", "lead", "friend", "cry", "began", "dark", "idea",
55
+        "machine", "fish", "note", "mountain", "wait", "stop", "plan", "once", "figure", "base", "star", "hear", "box",
56
+        "horse", "noun", "cut", "field", "sure", "rest", "watch", "correct", "color", "able", "face", "pound", "wood",
57
+        "done", "main", "beauty", "enough", "drive", "plain", "stood", "girl", "contain", "usual", "front", "young",
58
+        "teach", "ready", "week", "above", "final", "ever", "gave", "red", "green", "list", "oh", "though", "quick",
59
+        "feel", "develop", "talk", "ocean", "bird", "warm", "soon", "free", "body", "minute", "dog", "strong", "family",
60
+        "special", "direct", "mind", "pose", "behind", "leave", "clear", "song", "tail", "measure", "produce", "door",
61
+        "fact", "product", "street", "black", "inch", "short", "multiply", "numeral", "nothing", "class", "course", "wind",
62
+        "stay", "question", "wheel", "happen", "full", "complete", "force", "ship", "blue", "area", "object", "half",
63
+        "decide", "rock", "surface", "order", "deep", "fire", "moon", "south", "island", "problem", "foot", "piece",
64
+        "system", "told", "busy", "knew", "test", "pass", "record", "since", "boat", "top", "common", "whole", "gold",
65
+        "king", "possible", "space", "plane", "heard", "stead", "best", "dry", "hour", "wonder", "better", "laugh",
66
+        "true", "thousand", "during", "ago", "hundred", "ran", "five", "check", "remember", "game", "step", "shape",
67
+        "early", "equate", "hold", "hot", "west", "miss", "ground", "brought", "interest", "heat", "reach", "snow",
68
+        "fast", "tire", "verb", "bring", "sing", "yes", "listen", "distant", "six", "fill", "table", "east", "travel",
69
+        "paint", "less", "language", "morning", "among", "grand", "cat", "ball", "century", "yet", "consider", "wave",
70
+        "type", "drop", "law", "heart", "bit", "am", "coast", "present", "copy", "heavy", "phrase", "dance", "silent",
71
+        "engine", "tall", "position", "sand", "arm", "soil", "wide", "roll", "sail", "temperature", "material", "finger",
72
+        "size", "industry", "vary", "value", "settle", "fight", "speak", "lie", "weight", "beat", "general", "excite",
73
+        "ice", "natural", "matter", "view", "circle", "sense", "pair", "ear", "include", "else", "divide", "quite",
74
+        "syllable", "broke", "felt", "case", "perhaps", "middle", "pick", "kill", "sudden", "son", "count", "lake",
75
+        "square", "moment", "reason", "scale", "length", "loud", "represent", "spring", "art", "observe", "subject",
76
+        "child", "region", "straight", "energy", "consonant", "hunt", "nation", "probable", "dictionary", "bed", "milk",
77
+        "brother", "speed", "egg", "method", "ride", "organ", "cell", "pay", "believe", "age", "fraction", "section",
78
+        "forest", "dress", "sit", "cloud", "race", "surprise", "window", "quiet", "store", "stone", "summer", "tiny",
79
+        "train", "climb", "sleep", "cool", "prove", "design", "lone", "poor", "leg", "lot", "exercise", "experiment",
80
+        "wall", "bottom", "catch", "key", "mount", "iron", "wish", "single", "sky", "stick", "board", "flat", "joy",
81
+        "twenty", "winter", "skin", "sat", "smile", "written", "crease", "wild", "hole", "instrument", "trade", "kept",
82
+        "melody", "glass", "trip", "grass", "office", "cow", "receive", "job", "row", "edge", "mouth", "sign", "exact",
83
+        "visit", "symbol", "past", "die", "soft", "least", "fun", "trouble", "bright", "shout", "gas", "except",
84
+        "weather", "wrote", "month", "seed", "million", "tone", "bear", "join", "finish", "suggest", "happy", "clean",
85
+        "hope", "break", "flower", "lady", "clothe", "yard", "strange", "rise", "gone", "bad", "jump", "blow", "baby",
86
+        "oil", "eight", "blood", "village", "touch", "meet", "grew", "root", "cent", "buy", "mix", "raise", "team",
87
+        "solve", "wire", "metal", "cost", "whether", "lost", "push", "brown", "seven", "wear", "paragraph", "garden",
88
+        "third", "equal", "shall", "sent", "held", "choose", "hair", "fell", "describe", "fit", "cook", "flow", "floor",
89
+        "fair", "either", "bank", "result", "collect", "burn", "save", "hill", "control", "safe", "decimal", "rank",
90
+        "word", "reference", "gentle", "truck", "woman", "noise", "captain", "level",
91
+        "practice", "chance", "separate", "gather", "difficult", "shop", "doctor", "stretch", "please", "throw",
92
+        "protect", "shine", "noon", "property", "whose", "column", "locate", "molecule", "ring", "select", "character",
93
+        "wrong", "insect", "gray", "caught", "repeat", "period", "require", "indicate", "broad", "radio", "prepare",
94
+        "spoke", "salt", "atom", "nose", "human", "plural", "history", "anger", "effect", "claim", "electric",
95
+        "continent", "expect", "oxygen", "crop", "sugar", "modern", "death", "element", "pretty", "hit", "skill",
96
+        "student", "women", "corner", "season", "party", "solution", "supply", "magnet", "bone", "silver", "rail",
97
+        "thank", "imagine", "branch", "provide", "match", "agree", "suffix", "thus", "especially", "capital", "fig",
98
+        "won't", "afraid", "chair", "huge", "danger", "sister", "fruit", "steel", "rich", "discuss", "thick", "forward",
99
+        "soldier", "similar", "process", "guide", "operate", "experience", "guess", "score", "necessary", "apple",
100
+        "sharp", "bought", "wing", "led", "create", "pitch", "neighbor", "coat", "wash", "mass", "bat", "card", "rather",
101
+        "band", "crowd", "rope", "corn", "slip", "compare", "win", "poem", "dream", "string", "evening", "bell",
102
+        "condition", "depend", "feed", "meat", "tool", "rub", "total", "tube", "basic", "famous", "smell", "dollar",
103
+        "valley", "stream", "nor", "fear", "double", "sight", "seat", "thin", "arrive", "triangle", "master", "planet",
104
+        "track", "hurry", "parent", "chief", "shore", "colony", "division", "clock", "sheet", "mine", "substance", "tie",
105
+        "favor", "enter", "connect", "major", "post", "fresh", "spend", "search", "chord", "send", "fat", "yellow",
106
+        "glad", "gun", "original", "allow", "share", "print", "station", "dead", "dad", "spot", "bread", "desert",
107
+        "charge", "suit", "proper", "current", "bar", "lift", "offer", "rose", "segment", "continue", "slave", "block",
108
+        "duck", "chart", "instant", "hat", "market", "sell", "degree", "success", "populate", "company", "chick",
109
+        "subtract", "dear", "event", "enemy", "particular", "reply", "deal", "drink", "swim", "occur", "term", "support",
110
+        "opposite", "speech", "wife", "nature", "shoe", "range", "shoulder", "steam", "spread", "motion", "arrange",
111
+        "path", "camp", "liquid", "invent", "log", "cotton", "meant", "born", "quotient", "determine", "teeth", "quart",
112
+        "shell", "nine", "neck", "fancy", "fan", "football"
113
+    ];
114
+
115
+    /**
116
+     * Returns random word from the array of words.
117
+     * @returns {string} random word from the array of words.
118
+     */
119
+    function generateWord()
120
+    {
121
+        return words[( Math.round(((new Date().getTime() / 1000) +Math.random()*1000) % 1008))];
122
+    }
123
+
124
+    /**
125
+     * Generates new room name.
126
+     * @param separator the separator for the words.
127
+     * @param number_of_words number of words in the room name
128
+     * @returns {string} the room name
129
+     */
130
+    RoomNameGeneratorProto.generateRoom = function(separator, number_of_words)
131
+    {
132
+        if(!separator)
133
+            separator = DEFAULT_SEPARATOR;
134
+        if(!number_of_words)
135
+            number_of_words = NUMBER_OF_WORDS;
136
+        var name = "";
137
+        for(var i = 0; i<number_of_words; i++)
138
+            name += ((i != 0)? separator : "") + generateWord();
139
+        return name;
140
+    }
141
+
142
+    /**
143
+     * Generates new room name.
144
+     * @param number_of_words number of words in the room name
145
+     * @returns {string} the room name
146
+     */
147
+    RoomNameGeneratorProto.generateRoomWithoutSeparator = function(number_of_words)
148
+    {
149
+        if(!number_of_words)
150
+            number_of_words = NUMBER_OF_WORDS;
151
+        var name = "";
152
+        for(var i = 0; i<number_of_words; i++) {
153
+            var word = generateWord();
154
+            word = word.substring(0, 1).toUpperCase() + word.substring(1, word.length);
155
+            name += word ;
156
+        }
157
+        return name;
158
+    }
159
+
160
+    return RoomNameGeneratorProto;
161
+}();
162
+

rtp_stats.js → rtp_sts.js Näytä tiedosto


+ 7
- 2
videolayout.js Näytä tiedosto

@@ -28,6 +28,9 @@ var VideoLayout = (function (my) {
28 28
         var localVideoContainer = document.getElementById('localVideoWrapper');
29 29
         localVideoContainer.appendChild(localVideo);
30 30
 
31
+        // Set default display name.
32
+        setDisplayName('localVideoContainer');
33
+
31 34
         AudioLevels.updateAudioLevelCanvas();
32 35
 
33 36
         var localVideoSelector = $('#' + localVideo.id);
@@ -103,7 +106,6 @@ var VideoLayout = (function (my) {
103 106
         }
104 107
     };
105 108
 
106
-
107 109
     /**
108 110
      * Updates the large video with the given new video source.
109 111
      */
@@ -306,6 +308,9 @@ var VideoLayout = (function (my) {
306 308
             var container
307 309
                 = VideoLayout.addRemoteVideoContainer(peerJid, videoSpanId);
308 310
 
311
+            // Set default display name.
312
+            setDisplayName(videoSpanId);
313
+
309 314
             var nickfield = document.createElement('span');
310 315
             nickfield.className = "nick";
311 316
             nickfield.appendChild(document.createTextNode(resourceJid));
@@ -541,7 +546,7 @@ var VideoLayout = (function (my) {
541 546
                 editableText.className = 'displayname';
542 547
                 editableText.id = 'editDisplayName';
543 548
 
544
-                if (displayName.length) {
549
+                if (displayName && displayName.length) {
545 550
                     editableText.value
546 551
                         = displayName.substring(0, displayName.indexOf(' (me)'));
547 552
                 }

Loading…
Peruuta
Tallenna