Browse Source

Merge branch 'master' into tracking

Conflicts:
	index.html
j8
Philipp Hancke 11 years ago
parent
commit
1a1aea4669

+ 65
- 24
app.js View File

92
 }
92
 }
93
 
93
 
94
 function connect(jid, password) {
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
     connection = new Strophe.Connection(document.getElementById('boshURL').value || config.bosh || '/http-bind');
100
     connection = new Strophe.Connection(document.getElementById('boshURL').value || config.bosh || '/http-bind');
96
 
101
 
97
     if (nickname) {
102
     if (nickname) {
107
         if (!connection.jingle.pc_constraints.optional) connection.jingle.pc_constraints.optional = [];
112
         if (!connection.jingle.pc_constraints.optional) connection.jingle.pc_constraints.optional = [];
108
         connection.jingle.pc_constraints.optional.push({googIPv6: true});
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
     if(!password)
118
     if(!password)
112
         password = document.getElementById('password').value;
119
         password = document.getElementById('password').value;
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
 function obtainAudioAndVideoPermissions(callback) {
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
     // Get AV
158
     // Get AV
158
     getUserMediaWithConstraints(
159
     getUserMediaWithConstraints(
159
         ['audio', 'video'],
160
         ['audio', 'video'],
204
         if (path.length > 1) {
205
         if (path.length > 1) {
205
             roomnode = path.substr(1).toLowerCase();
206
             roomnode = path.substr(1).toLowerCase();
206
         } else {
207
         } else {
207
-            roomnode = Math.random().toString(36).substr(2, 20);
208
+            var word = RoomNameGenerator.generateRoomWithoutSeparator(3);
209
+            roomnode = word.toLowerCase();
210
+
208
             window.history.pushState('VideoChat',
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
     // Once we've joined the muc show the toolbar
644
     // Once we've joined the muc show the toolbar
642
     Toolbar.showToolbar();
645
     Toolbar.showToolbar();
643
 
646
 
644
-    var displayName = '';
645
     if (info.displayName)
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
 $(document).bind('entered.muc', function (event, jid, info, pres) {
652
 $(document).bind('entered.muc', function (event, jid, info, pres) {
1077
 }
1075
 }
1078
 
1076
 
1079
 $(document).ready(function () {
1077
 $(document).ready(function () {
1078
+    document.title = brand.appName;
1080
 
1079
 
1081
     if(config.enableWelcomePage && window.location.pathname == "/" &&
1080
     if(config.enableWelcomePage && window.location.pathname == "/" &&
1082
         (!window.localStorage.welcomePageDisabled || window.localStorage.welcomePageDisabled == "false"))
1081
         (!window.localStorage.welcomePageDisabled || window.localStorage.welcomePageDisabled == "false"))
1083
     {
1082
     {
1084
         $("#videoconference_page").hide();
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
             window.location.pathname = "/" + val;
1091
             window.location.pathname = "/" + val;
1092
+        }
1093
+        $("#enter_room_button").click(function()
1094
+        {
1095
+            enter_room();
1089
         });
1096
         });
1090
 
1097
 
1091
         $("#enter_room_field").keydown(function (event) {
1098
         $("#enter_room_field").keydown(function (event) {
1092
             if (event.keyCode === 13) {
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
         $("#disable_welcome").click(function () {
1132
         $("#disable_welcome").click(function () {
1099
             window.localStorage.welcomePageDisabled = $("#disable_welcome").is(":checked");
1133
             window.localStorage.welcomePageDisabled = $("#disable_welcome").is(":checked");
1100
         });
1134
         });
1401
 
1435
 
1402
     $.prompt("Session Terminated",
1436
     $.prompt("Session Terminated",
1403
         {
1437
         {
1404
-            title: "You hang up the call",
1438
+            title: "You hung up the call",
1405
             persistent: true,
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 View File

1
+var brand =
2
+{
3
+    appName: "Jitsi Meet"
4
+}

+ 4
- 0
css/font.css View File

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

+ 73
- 35
css/welcome_page.css View File

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

23
 
23
 
24
         . /etc/default/jitsi-videobridge
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
         fi
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
         if [ ! -f /var/lib/prosody/$JVB_HOSTNAME.crt ]; then
40
         if [ ! -f /var/lib/prosody/$JVB_HOSTNAME.crt ]; then
33
             HOST="$( (hostname -s; echo localhost) | head -n 1)"
41
             HOST="$( (hostname -s; echo localhost) | head -n 1)"
34
             DOMAIN="$( (hostname -d; echo localdomain) | head -n 1)"
42
             DOMAIN="$( (hostname -d; echo localdomain) | head -n 1)"

+ 2
- 2
debian/jitsi-meet-prosody.postrm View File

23
 
23
 
24
 
24
 
25
 case "$1" in
25
 case "$1" in
26
-    purge|remove)
26
+    remove)
27
         if [ -x "/etc/init.d/prosody" ]; then
27
         if [ -x "/etc/init.d/prosody" ]; then
28
             invoke-rc.d nginx reload
28
             invoke-rc.d nginx reload
29
         fi
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 View File

23
 
23
 
24
         # nginx conf
24
         # nginx conf
25
         . /etc/default/jitsi-videobridge
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
         fi
32
         fi
33
+
35
         if grep "# server_names_hash_bucket_size 64" /etc/nginx/nginx.conf > /dev/null; then
34
         if grep "# server_names_hash_bucket_size 64" /etc/nginx/nginx.conf > /dev/null; then
36
             sed -i "s/#\ server_names_hash_bucket_size\ 64/\ server_names_hash_bucket_size\ 64/" /etc/nginx/nginx.conf
35
             sed -i "s/#\ server_names_hash_bucket_size\ 64/\ server_names_hash_bucket_size\ 64/" /etc/nginx/nginx.conf
37
         fi
36
         fi
40
         chown -R www-data:www-data /usr/share/jitsi-meet/
39
         chown -R www-data:www-data /usr/share/jitsi-meet/
41
         sed -i "s/jitsi-meet.example.com/$JVB_HOSTNAME/g" /usr/share/jitsi-meet/config.js
40
         sed -i "s/jitsi-meet.example.com/$JVB_HOSTNAME/g" /usr/share/jitsi-meet/config.js
42
         # enable turn
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
         invoke-rc.d nginx restart
45
         invoke-rc.d nginx restart
47
 
46
 
48
     ;;
47
     ;;

+ 2
- 2
debian/jitsi-meet.postrm View File

23
 
23
 
24
 
24
 
25
 case "$1" in
25
 case "$1" in
26
-    purge|remove)
26
+    remove)
27
         if [ -x "/etc/init.d/nginx" ]; then
27
         if [ -x "/etc/init.d/nginx" ]; then
28
             invoke-rc.d nginx reload
28
             invoke-rc.d nginx reload
29
         fi
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 View File


+ 1
- 0
fonts/jitsi.svg View File

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" />
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
 <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" />
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
 <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" />
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
 </font></defs></svg>
35
 </font></defs></svg>

BIN
fonts/jitsi.ttf View File


BIN
fonts/jitsi.woff View File


+ 58
- 24
fonts/selection.json View File

1
 {
1
 {
2
 	"IcoMoonType": "selection",
2
 	"IcoMoonType": "selection",
3
 	"icons": [
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
 			"icon": {
39
 			"icon": {
6
 				"paths": [
40
 				"paths": [
27
 				"ligatures": ""
61
 				"ligatures": ""
28
 			},
62
 			},
29
 			"setIdx": 0,
63
 			"setIdx": 0,
30
-			"iconIdx": 0
64
+			"iconIdx": 1
31
 		},
65
 		},
32
 		{
66
 		{
33
 			"icon": {
67
 			"icon": {
55
 				"ligatures": ""
89
 				"ligatures": ""
56
 			},
90
 			},
57
 			"setIdx": 0,
91
 			"setIdx": 0,
58
-			"iconIdx": 1
92
+			"iconIdx": 2
59
 		},
93
 		},
60
 		{
94
 		{
61
 			"icon": {
95
 			"icon": {
94
 				"ligatures": ""
128
 				"ligatures": ""
95
 			},
129
 			},
96
 			"setIdx": 0,
130
 			"setIdx": 0,
97
-			"iconIdx": 2
131
+			"iconIdx": 3
98
 		},
132
 		},
99
 		{
133
 		{
100
 			"icon": {
134
 			"icon": {
117
 				"ligatures": ""
151
 				"ligatures": ""
118
 			},
152
 			},
119
 			"setIdx": 0,
153
 			"setIdx": 0,
120
-			"iconIdx": 3
154
+			"iconIdx": 4
121
 		},
155
 		},
122
 		{
156
 		{
123
 			"icon": {
157
 			"icon": {
140
 				"ligatures": ""
174
 				"ligatures": ""
141
 			},
175
 			},
142
 			"setIdx": 0,
176
 			"setIdx": 0,
143
-			"iconIdx": 4
177
+			"iconIdx": 5
144
 		},
178
 		},
145
 		{
179
 		{
146
 			"icon": {
180
 			"icon": {
164
 				"ligatures": ""
198
 				"ligatures": ""
165
 			},
199
 			},
166
 			"setIdx": 0,
200
 			"setIdx": 0,
167
-			"iconIdx": 5
201
+			"iconIdx": 6
168
 		},
202
 		},
169
 		{
203
 		{
170
 			"icon": {
204
 			"icon": {
189
 				"ligatures": ""
223
 				"ligatures": ""
190
 			},
224
 			},
191
 			"setIdx": 0,
225
 			"setIdx": 0,
192
-			"iconIdx": 6
226
+			"iconIdx": 7
193
 		},
227
 		},
194
 		{
228
 		{
195
 			"icon": {
229
 			"icon": {
212
 				"ligatures": ""
246
 				"ligatures": ""
213
 			},
247
 			},
214
 			"setIdx": 0,
248
 			"setIdx": 0,
215
-			"iconIdx": 7
249
+			"iconIdx": 8
216
 		},
250
 		},
217
 		{
251
 		{
218
 			"icon": {
252
 			"icon": {
236
 				"ligatures": ""
270
 				"ligatures": ""
237
 			},
271
 			},
238
 			"setIdx": 0,
272
 			"setIdx": 0,
239
-			"iconIdx": 8
273
+			"iconIdx": 9
240
 		},
274
 		},
241
 		{
275
 		{
242
 			"icon": {
276
 			"icon": {
260
 				"ligatures": ""
294
 				"ligatures": ""
261
 			},
295
 			},
262
 			"setIdx": 0,
296
 			"setIdx": 0,
263
-			"iconIdx": 9
297
+			"iconIdx": 10
264
 		},
298
 		},
265
 		{
299
 		{
266
 			"icon": {
300
 			"icon": {
282
 				"ligatures": ""
316
 				"ligatures": ""
283
 			},
317
 			},
284
 			"setIdx": 0,
318
 			"setIdx": 0,
285
-			"iconIdx": 10
319
+			"iconIdx": 11
286
 		},
320
 		},
287
 		{
321
 		{
288
 			"icon": {
322
 			"icon": {
306
 				"ligatures": ""
340
 				"ligatures": ""
307
 			},
341
 			},
308
 			"setIdx": 0,
342
 			"setIdx": 0,
309
-			"iconIdx": 11
343
+			"iconIdx": 12
310
 		},
344
 		},
311
 		{
345
 		{
312
 			"icon": {
346
 			"icon": {
330
 				"ligatures": ""
364
 				"ligatures": ""
331
 			},
365
 			},
332
 			"setIdx": 0,
366
 			"setIdx": 0,
333
-			"iconIdx": 12
367
+			"iconIdx": 13
334
 		},
368
 		},
335
 		{
369
 		{
336
 			"icon": {
370
 			"icon": {
357
 				"ligatures": ""
391
 				"ligatures": ""
358
 			},
392
 			},
359
 			"setIdx": 0,
393
 			"setIdx": 0,
360
-			"iconIdx": 13
394
+			"iconIdx": 14
361
 		},
395
 		},
362
 		{
396
 		{
363
 			"icon": {
397
 			"icon": {
381
 				"ligatures": ""
415
 				"ligatures": ""
382
 			},
416
 			},
383
 			"setIdx": 0,
417
 			"setIdx": 0,
384
-			"iconIdx": 14
418
+			"iconIdx": 15
385
 		},
419
 		},
386
 		{
420
 		{
387
 			"icon": {
421
 			"icon": {
405
 				"ligatures": ""
439
 				"ligatures": ""
406
 			},
440
 			},
407
 			"setIdx": 0,
441
 			"setIdx": 0,
408
-			"iconIdx": 15
442
+			"iconIdx": 16
409
 		},
443
 		},
410
 		{
444
 		{
411
 			"icon": {
445
 			"icon": {
430
 				"ligatures": ""
464
 				"ligatures": ""
431
 			},
465
 			},
432
 			"setIdx": 0,
466
 			"setIdx": 0,
433
-			"iconIdx": 16
467
+			"iconIdx": 17
434
 		},
468
 		},
435
 		{
469
 		{
436
 			"icon": {
470
 			"icon": {
452
 				"ligatures": ""
486
 				"ligatures": ""
453
 			},
487
 			},
454
 			"setIdx": 0,
488
 			"setIdx": 0,
455
-			"iconIdx": 17
489
+			"iconIdx": 18
456
 		},
490
 		},
457
 		{
491
 		{
458
 			"icon": {
492
 			"icon": {
475
 				"ligatures": ""
509
 				"ligatures": ""
476
 			},
510
 			},
477
 			"setIdx": 0,
511
 			"setIdx": 0,
478
-			"iconIdx": 18
512
+			"iconIdx": 19
479
 		},
513
 		},
480
 		{
514
 		{
481
 			"icon": {
515
 			"icon": {
497
 				"ligatures": ""
531
 				"ligatures": ""
498
 			},
532
 			},
499
 			"setIdx": 0,
533
 			"setIdx": 0,
500
-			"iconIdx": 19
534
+			"iconIdx": 20
501
 		},
535
 		},
502
 		{
536
 		{
503
 			"icon": {
537
 			"icon": {
520
 				"ligatures": ""
554
 				"ligatures": ""
521
 			},
555
 			},
522
 			"setIdx": 0,
556
 			"setIdx": 0,
523
-			"iconIdx": 20
557
+			"iconIdx": 21
524
 		},
558
 		},
525
 		{
559
 		{
526
 			"icon": {
560
 			"icon": {
543
 				"ligatures": ""
577
 				"ligatures": ""
544
 			},
578
 			},
545
 			"setIdx": 0,
579
 			"setIdx": 0,
546
-			"iconIdx": 21
580
+			"iconIdx": 22
547
 		},
581
 		},
548
 		{
582
 		{
549
 			"icon": {
583
 			"icon": {
567
 				"ligatures": ""
601
 				"ligatures": ""
568
 			},
602
 			},
569
 			"setIdx": 0,
603
 			"setIdx": 0,
570
-			"iconIdx": 22
604
+			"iconIdx": 23
571
 		},
605
 		},
572
 		{
606
 		{
573
 			"icon": {
607
 			"icon": {
590
 				"ligatures": ""
624
 				"ligatures": ""
591
 			},
625
 			},
592
 			"setIdx": 0,
626
 			"setIdx": 0,
593
-			"iconIdx": 23
627
+			"iconIdx": 24
594
 		}
628
 		}
595
 	],
629
 	],
596
 	"height": 1024,
630
 	"height": 1024,

BIN
images/welcome_page/brand-logo.png View File


BIN
images/welcome_page/disable-welcome-selected.png View File


BIN
images/welcome_page/disable-welcome.png View File


BIN
images/welcome_page/jitsi-logo.png View File


+ 30
- 18
index.html View File

9
     <meta itemprop="name" content="Jitsi Meet"/>
9
     <meta itemprop="name" content="Jitsi Meet"/>
10
     <meta itemprop="description" content="Join a WebRTC video conference powered by the Jitsi Videobridge"/>
10
     <meta itemprop="description" content="Join a WebRTC video conference powered by the Jitsi Videobridge"/>
11
     <meta itemprop="image" content="/images/jitsilogo.png"/>
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
     <script src="libs/strophe/strophe.jingle.adapter.js?v=1"></script><!-- strophe.jingle bundles -->
13
     <script src="libs/strophe/strophe.jingle.adapter.js?v=1"></script><!-- strophe.jingle bundles -->
14
     <script src="libs/strophe/strophe.jingle.bundle.js?v=8"></script>
14
     <script src="libs/strophe/strophe.jingle.bundle.js?v=8"></script>
15
     <script src="libs/strophe/strophe.jingle.js?v=1"></script>
15
     <script src="libs/strophe/strophe.jingle.js?v=1"></script>
23
     <script src="libs/rayo.js?v=1"></script>
23
     <script src="libs/rayo.js?v=1"></script>
24
     <script src="libs/tooltip.js?v=1"></script><!-- bootstrap tooltip lib -->
24
     <script src="libs/tooltip.js?v=1"></script><!-- bootstrap tooltip lib -->
25
     <script src="libs/popover.js?v=1"></script><!-- bootstrap tooltip lib -->
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
     <script src="muc.js?v=13"></script><!-- simple MUC library -->
28
     <script src="muc.js?v=13"></script><!-- simple MUC library -->
28
     <script src="estos_log.js?v=2"></script><!-- simple stanza logger -->
29
     <script src="estos_log.js?v=2"></script><!-- simple stanza logger -->
29
     <script src="desktopsharing.js?v=2"></script><!-- desktop sharing -->
30
     <script src="desktopsharing.js?v=2"></script><!-- desktop sharing -->
30
     <script src="data_channels.js?v=3"></script><!-- data channels -->
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
     <script src="commands.js?v=1"></script><!-- application logic -->
33
     <script src="commands.js?v=1"></script><!-- application logic -->
33
     <script src="chat.js?v=9"></script><!-- chat logic -->
34
     <script src="chat.js?v=9"></script><!-- chat logic -->
34
     <script src="contact_list.js?v=1"></script><!-- contact list logic -->
35
     <script src="contact_list.js?v=1"></script><!-- contact list logic -->
39
     <script src="replacement.js?v=6"></script><!-- link and smiley replacement -->
40
     <script src="replacement.js?v=6"></script><!-- link and smiley replacement -->
40
     <script src="moderatemuc.js?v=3"></script><!-- moderator plugin -->
41
     <script src="moderatemuc.js?v=3"></script><!-- moderator plugin -->
41
     <script src="analytics.js?v=1"></script><!-- google analytics plugin -->
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
     <script src="videolayout.js?v=8"></script><!-- video ui -->
45
     <script src="videolayout.js?v=8"></script><!-- video ui -->
45
     <script src="toolbar.js?v=4"></script><!-- toolbar ui -->
46
     <script src="toolbar.js?v=4"></script><!-- toolbar ui -->
46
     <script src="canvas_util.js?v=1"></script><!-- canvas drawing utils -->
47
     <script src="canvas_util.js?v=1"></script><!-- canvas drawing utils -->
47
     <script src="audio_levels.js?v=1"></script><!-- audio levels plugin -->
48
     <script src="audio_levels.js?v=1"></script><!-- audio levels plugin -->
48
     <script src="media_stream.js?v=1"></script><!-- media stream -->
49
     <script src="media_stream.js?v=1"></script><!-- media stream -->
49
     <script src="bottom_toolbar.js?v=1"></script><!-- media stream -->
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
     <script src="tracking.js?v=1"></script><!-- tracking -->
52
     <script src="tracking.js?v=1"></script><!-- tracking -->
51
     <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
53
     <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
52
     <link rel="stylesheet" href="css/font.css?v=3"/>
54
     <link rel="stylesheet" href="css/font.css?v=3"/>
57
     <link rel="stylesheet" href="css/popup_menu.css?v=2">
59
     <link rel="stylesheet" href="css/popup_menu.css?v=2">
58
     <link rel="stylesheet" href="css/popover.css?v=1">
60
     <link rel="stylesheet" href="css/popover.css?v=1">
59
     <link rel="stylesheet" href="css/contact_list.css?v=1">
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
         Link used for inline installation of chrome desktop streaming extension,
64
         Link used for inline installation of chrome desktop streaming extension,
63
         is updated automatically from the code with the value defined in config.js -->
65
         is updated automatically from the code with the value defined in config.js -->
73
                 <div id="jitsi_logo"></div>
75
                 <div id="jitsi_logo"></div>
74
             </a>
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
             </div>
92
             </div>
82
             <div id="brand_header"></div>
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
             <div id="header_text"></div>
96
             <div id="header_text"></div>
84
         </div>
97
         </div>
85
         <div id="welcome_page_main">
98
         <div id="welcome_page_main">
88
                     <div class="feature_holder">
101
                     <div class="feature_holder">
89
                         <div class="feature_icon">Simple to use</div>
102
                         <div class="feature_icon">Simple to use</div>
90
                         <div class="feature_description">
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
                         </div>
105
                         </div>
93
                     </div>
106
                     </div>
94
                     <div class="feature_holder">
107
                     <div class="feature_holder">
100
                     <div class="feature_holder">
113
                     <div class="feature_holder">
101
                         <div class="feature_icon">Open source</div>
114
                         <div class="feature_icon">Open source</div>
102
                         <div class="feature_description">
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
                         </div>
117
                         </div>
105
                     </div>
118
                     </div>
106
                     <div class="feature_holder">
119
                     <div class="feature_holder">
114
                     <div class="feature_holder">
127
                     <div class="feature_holder">
115
                         <div class="feature_icon">Screen sharing</div>
128
                         <div class="feature_icon">Screen sharing</div>
116
                         <div class="feature_description">
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
                         </div>
131
                         </div>
119
                     </div>
132
                     </div>
120
                     <div class="feature_holder">
133
                     <div class="feature_holder">
121
                         <div class="feature_icon">Secure rooms</div>
134
                         <div class="feature_icon">Secure rooms</div>
122
                         <div class="feature_description">
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
                         </div>
137
                         </div>
125
                     </div>
138
                     </div>
126
                     <div class="feature_holder">
139
                     <div class="feature_holder">
127
                         <div class="feature_icon">Shared notes</div>
140
                         <div class="feature_icon">Shared notes</div>
128
                         <div class="feature_description">
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
                         </div>
143
                         </div>
131
                     </div>
144
                     </div>
132
                     <div class="feature_holder">
145
                     <div class="feature_holder">
199
                     <div class="header_button_separator"></div>
212
                     <div class="header_button_separator"></div>
200
                     <span id="hangup">
213
                     <span id="hangup">
201
                         <a class="button" data-toggle="popover" data-placement="bottom" data-content="Hang Up" onclick='hangup();'>
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
                         </a>
216
                         </a>
204
                     </span>
217
                     </span>
205
                 </span>
218
                 </span>
271
         </div>
284
         </div>
272
         <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>
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
     </div>
286
     </div>
274
-
275
   </body>
287
   </body>
276
 </html>
288
 </html>

+ 9190
- 0
libs/jquery-2.1.1.js
File diff suppressed because it is too large
View File


+ 4
- 0
libs/jquery-2.1.1.min.js
File diff suppressed because it is too large
View File


+ 1
- 0
libs/jquery-2.1.1.min.map
File diff suppressed because it is too large
View File


+ 0
- 6
libs/jquery.min.js
File diff suppressed because it is too large
View File


+ 4
- 4
libs/strophe/strophe.jingle.adapter.js View File

577
         case 'fullhd':
577
         case 'fullhd':
578
             constraints.video.mandatory.minWidth = 1920;
578
             constraints.video.mandatory.minWidth = 1920;
579
             constraints.video.mandatory.minHeight = 1080;
579
             constraints.video.mandatory.minHeight = 1080;
580
-            constraints.video.optional.push({ minAspectRatio: 1.77 });
581
             break;
580
             break;
582
         case '720':
581
         case '720':
583
         case 'hd':
582
         case 'hd':
584
             constraints.video.mandatory.minWidth = 1280;
583
             constraints.video.mandatory.minWidth = 1280;
585
             constraints.video.mandatory.minHeight = 720;
584
             constraints.video.mandatory.minHeight = 720;
586
-            constraints.video.optional.push({ minAspectRatio: 1.77 });
587
             break;
585
             break;
588
         case '360':
586
         case '360':
589
             constraints.video.mandatory.minWidth = 640;
587
             constraints.video.mandatory.minWidth = 640;
590
             constraints.video.mandatory.minHeight = 360;
588
             constraints.video.mandatory.minHeight = 360;
591
-            constraints.video.optional.push({ minAspectRatio: 1.77 });
592
             break;
589
             break;
593
         case '180':
590
         case '180':
594
             constraints.video.mandatory.minWidth = 320;
591
             constraints.video.mandatory.minWidth = 320;
595
             constraints.video.mandatory.minHeight = 180;
592
             constraints.video.mandatory.minHeight = 180;
596
-            constraints.video.optional.push({ minAspectRatio: 1.77 });
597
             break;
593
             break;
598
         // 4:3
594
         // 4:3
599
         case '960':
595
         case '960':
617
             }
613
             }
618
             break;
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
     if (bandwidth) { // doesn't work currently, see webrtc issue 1846
621
     if (bandwidth) { // doesn't work currently, see webrtc issue 1846
622
         if (!constraints.video) constraints.video = {mandatory: {}, optional: []};//same behaviour as true
622
         if (!constraints.video) constraints.video = {mandatory: {}, optional: []};//same behaviour as true

+ 4
- 2
libs/strophe/strophe.jingle.js View File

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

+ 23
- 0
libs/tooltip.js View File

185
         that.$element.trigger('shown.bs.' + that.type)
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
       $.support.transition && this.$tip.hasClass('fade') ?
211
       $.support.transition && this.$tip.hasClass('fade') ?
189
         $tip
212
         $tip
190
           .one($.support.transition.end, complete)
213
           .one($.support.transition.end, complete)

local_stats.js → local_sts.js View File


+ 162
- 0
roomname_generator.js View File

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 View File


+ 7
- 2
videolayout.js View File

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

Loading…
Cancel
Save