Merge branch 'master' into tracking

Conflicts:
	index.html
This commit is contained in:
Philipp Hancke 2014-09-12 13:13:28 +02:00
commit 1a1aea4669
29 changed files with 9657 additions and 135 deletions

87
app.js
View File

@ -92,6 +92,11 @@ function init() {
} }
function connect(jid, password) { function connect(jid, password) {
var localAudio, localVideo;
if (connection && connection.jingle) {
localAudio = connection.jingle.localAudio;
localVideo = connection.jingle.localVideo;
}
connection = new Strophe.Connection(document.getElementById('boshURL').value || config.bosh || '/http-bind'); connection = new Strophe.Connection(document.getElementById('boshURL').value || config.bosh || '/http-bind');
if (nickname) { if (nickname) {
@ -107,6 +112,8 @@ function connect(jid, password) {
if (!connection.jingle.pc_constraints.optional) connection.jingle.pc_constraints.optional = []; if (!connection.jingle.pc_constraints.optional) connection.jingle.pc_constraints.optional = [];
connection.jingle.pc_constraints.optional.push({googIPv6: true}); connection.jingle.pc_constraints.optional.push({googIPv6: true});
} }
if (localAudio) connection.jingle.localAudio = localAudio;
if (localVideo) connection.jingle.localVideo = localVideo;
if(!password) if(!password)
password = document.getElementById('password').value; password = document.getElementById('password').value;
@ -144,16 +151,10 @@ function connect(jid, password) {
} }
/** /**
* HTTPS only: * We ask for audio and video combined stream in order to get permissions and
* We first ask for audio and video combined stream in order to get permissions and not to ask twice. * not to ask twice.
* Then we dispose the stream and continue with separate audio, video streams(required for desktop sharing).
*/ */
function obtainAudioAndVideoPermissions(callback) { function obtainAudioAndVideoPermissions(callback) {
// This makes sense only on https sites otherwise we'll be asked for permissions every time
if (location.protocol !== 'https:') {
callback();
return;
}
// Get AV // Get AV
getUserMediaWithConstraints( getUserMediaWithConstraints(
['audio', 'video'], ['audio', 'video'],
@ -204,9 +205,11 @@ function doJoin() {
if (path.length > 1) { if (path.length > 1) {
roomnode = path.substr(1).toLowerCase(); roomnode = path.substr(1).toLowerCase();
} else { } else {
roomnode = Math.random().toString(36).substr(2, 20); var word = RoomNameGenerator.generateRoomWithoutSeparator(3);
roomnode = word.toLowerCase();
window.history.pushState('VideoChat', window.history.pushState('VideoChat',
'Room: ' + roomnode, window.location.pathname + roomnode); 'Room: ' + word, window.location.pathname + word);
} }
} }
@ -641,14 +644,9 @@ $(document).bind('joined.muc', function (event, jid, info) {
// Once we've joined the muc show the toolbar // Once we've joined the muc show the toolbar
Toolbar.showToolbar(); Toolbar.showToolbar();
var displayName = '';
if (info.displayName) if (info.displayName)
displayName = info.displayName + ' (me)';
else
displayName = "Me";
$(document).trigger('displaynamechanged', $(document).trigger('displaynamechanged',
['localVideoContainer', displayName]); ['localVideoContainer', info.displayName + ' (me)']);
}); });
$(document).bind('entered.muc', function (event, jid, info, pres) { $(document).bind('entered.muc', function (event, jid, info, pres) {
@ -1077,24 +1075,60 @@ function getCameraVideoSize(videoWidth,
} }
$(document).ready(function () { $(document).ready(function () {
document.title = brand.appName;
if(config.enableWelcomePage && window.location.pathname == "/" && if(config.enableWelcomePage && window.location.pathname == "/" &&
(!window.localStorage.welcomePageDisabled || window.localStorage.welcomePageDisabled == "false")) (!window.localStorage.welcomePageDisabled || window.localStorage.welcomePageDisabled == "false"))
{ {
$("#videoconference_page").hide(); $("#videoconference_page").hide();
$("#domain_name").text(window.location.protocol + "//" + window.location.host + "/");
$("span[name='appName']").text(brand.appName);
function enter_room()
{
var val = $("#enter_room_field").val();
if(!val)
val = $("#enter_room_field").attr("room_name");
window.location.pathname = "/" + val;
}
$("#enter_room_button").click(function() $("#enter_room_button").click(function()
{ {
var val = Util.escapeHtml($("#enter_room_field").val()); enter_room();
window.location.pathname = "/" + val;
}); });
$("#enter_room_field").keydown(function (event) { $("#enter_room_field").keydown(function (event) {
if (event.keyCode === 13) { if (event.keyCode === 13) {
var val = Util.escapeHtml(this.value); enter_room();
window.location.pathname = "/" + val;
} }
}); });
var updateTimeout;
var animateTimeout;
$("#reload_roomname").click(function () {
clearTimeout(updateTimeout);
clearTimeout(animateTimeout);
update_roomname();
});
function animate(word) {
var currentVal = $("#enter_room_field").attr("placeholder");
$("#enter_room_field").attr("placeholder", currentVal + word.substr(0, 1));
animateTimeout = setTimeout(function() {
animate(word.substring(1, word.length))
}, 70);
}
function update_roomname()
{
var word = RoomNameGenerator.generateRoomWithoutSeparator();
$("#enter_room_field").attr("room_name", word);
$("#enter_room_field").attr("placeholder", "");
animate(word);
updateTimeout = setTimeout(update_roomname, 10000);
}
update_roomname();
$("#disable_welcome").click(function () { $("#disable_welcome").click(function () {
window.localStorage.welcomePageDisabled = $("#disable_welcome").is(":checked"); window.localStorage.welcomePageDisabled = $("#disable_welcome").is(":checked");
}); });
@ -1401,10 +1435,17 @@ function hangup() {
$.prompt("Session Terminated", $.prompt("Session Terminated",
{ {
title: "You hang up the call", title: "You hung up the call",
persistent: true, persistent: true,
buttons: {}, buttons: {
closeText: '' "Join again": true
},
closeText: '',
submit: function(event, value, message, formVals)
{
window.location.reload();
return false;
}
} }
); );

4
brand.js Normal file
View File

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

View File

@ -99,3 +99,7 @@
.icon-hangup:before { .icon-hangup:before {
content: "\e617"; content: "\e617";
} }
.icon-reload:before {
content: "\e618";
}

View File

@ -3,59 +3,78 @@
display:none; display:none;
} }
.disable_welcome_position
{
margin: -139px auto 0px auto;
padding-left: 39px;
padding-top: 7px;
width: 269px;
height: 31px;
display:block;
}
#disable_welcome + label #disable_welcome + label
{ {
background-image: url(../images/welcome_page/disable-welcome.png); background-image: url(../images/welcome_page/disable-welcome.png);
display:inline-block;
position:absolute;
margin-left: 323px;
height: 54px;
cursor: pointer; cursor: pointer;
-webkit-user-select: none; -webkit-user-select: none;
-moz-user-select: none; -moz-user-select: none;
background-repeat: no-repeat; background-repeat: no-repeat;
padding-left: 62px;
padding-top: 19px;
font-weight: 500; font-weight: 500;
font-family: Helvetica; font-family: Helvetica;
font-size: 16px; font-size: 16px;
color: #acacac; color: #acacac;
z-index: 2;
} }
#disable_welcome:checked + label #disable_welcome:checked + label
{ {
background-image: url(../images/welcome_page/disable-welcome-selected.png); background-image: url(../images/welcome_page/disable-welcome-selected.png);
display:inline-block;
position:absolute;
margin-left: 323px;
height: 54px;
cursor: pointer; cursor: pointer;
-webkit-user-select: none; -webkit-user-select: none;
-moz-user-select: none; -moz-user-select: none;
background-repeat: no-repeat; background-repeat: no-repeat;
padding-left: 62px;
padding-top: 19px;
font-weight: 500; font-weight: 500;
font-family: Helvetica; font-family: Helvetica;
font-size: 16px; font-size: 16px;
color: #acacac; color: #acacac;
z-index: 2;
} }
#enter_room_form {
#enter_room_field {
border-radius: 10px; border-radius: 10px;
font-size: 16px; background-color: #FFFFFF;
padding: 15px 55px 10px 30px;
border: none; border: none;
-moz-border-radius: 10px; -moz-border-radius: 10px;
-webkit-border-radius: 10px; -webkit-border-radius: 10px;
-webkit-appearance: none; -webkit-appearance: none;
width: 318px;
height: 55px; height: 55px;
position:absolute; box-shadow: none;
float: left;
}
#domain_name
{
float: left;
padding: 20px 0px 10px 20px;
font-size: 18px;
font-weight: 500;
font-family: Helvetica;
}
#enter_room_field {
font-size: 18px;
padding: 15px 0px 10px 10px;
border: none;
-webkit-appearance: none;
width: 228px;
height: 55px;
font-weight: 500; font-weight: 500;
font-family: Helvetica; font-family: Helvetica;
box-shadow: none; box-shadow: none;
float: left;
background-color: #FFFFFF;
position: relative;
z-index: 2; z-index: 2;
} }
@ -63,24 +82,29 @@
width: 73px; width: 73px;
height: 45px; height: 45px;
background-color: #16a8fe; background-color: #16a8fe;
moz-border-radius: 15px; moz-border-radius: 10px;
-webkit-border-radius: 15px; -webkit-border-radius: 10px;
color: #ffffff; color: #ffffff;
font-weight: 600; font-weight: 600;
border: none; border: none;
position:absolute;
margin-left: 240px;
margin-top: 5px; margin-top: 5px;
font-size: 19px; font-size: 19px;
font-family: Helvetica; font-family: Helvetica;
padding-top: 6px; padding-top: 6px;
z-index: 2;
outline: none; outline: none;
float:left;
position: relative;
z-index: 2;
} }
#enter_room { #enter_room_container {
margin: 70px auto 0px auto; margin: 70px auto 0px auto;
width:318px; display: table;
}
#enter_room{
float:left;
padding-right: 5px;
} }
#welcome_page_header #welcome_page_header
@ -101,8 +125,10 @@
#jitsi_logo #jitsi_logo
{ {
background-image:url(../images/welcome_page/jitsi-logo.png); background-image:url(../images/watermark.png);
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: contain;
background-position: center left;
width: 186px; width: 186px;
height: 74px; height: 74px;
position: absolute; position: absolute;
@ -112,7 +138,10 @@
#brand_logo #brand_logo
{ {
background-image:url(../images/welcome_page/brand-logo.png); background-image:url(../images/rightwatermark.png);
background-repeat: no-repeat;
background-size: contain;
background-position: center left;
width: 215px; width: 215px;
height: 55px; height: 55px;
position: absolute; position: absolute;
@ -124,24 +153,20 @@
#brand_header #brand_header
{ {
background-image:url(../images/welcome_page/header-big.png); background-image:url(../images/welcome_page/header-big.png);
position:absolute;
width: 583px; width: 583px;
height: 274px; height: 274px;
left: 340px; margin: -110px auto 0px auto;
top:15px;
} }
#header_text #header_text
{ {
position: absolute;
left: 200px;
top: 150px;
width: 885px; width: 885px;
height: 100px; height: 100px;
color: #ffffff; color: #ffffff;
font-family: Helvetica; font-family: Helvetica;
font-size: 24px; font-size: 24px;
text-align: center; text-align: center;
margin: 0px auto 0px auto;
} }
#features #features
@ -164,6 +189,7 @@
float:left; float:left;
width: 169px; width: 169px;
padding-left: 75px; padding-left: 75px;
padding-bottom: 30px;
} }
.feature_icon .feature_icon
@ -178,12 +204,12 @@
/*font-weight: bold;*/ /*font-weight: bold;*/
text-align: center; text-align: center;
display: table-cell; display: table-cell;
padding: 50px 29px 0px 17px; padding: 50px 26px 0px 20px;
} }
.feature_description .feature_description
{ {
width: 169px; width: 190px;
font-family: Helvetica; font-family: Helvetica;
color: #ffffff; color: #ffffff;
font-size: 16px; font-size: 16px;
@ -191,3 +217,15 @@
line-height: 22px; line-height: 22px;
font-weight: 200; font-weight: 200;
} }
#reload_roomname
{
width: 30px;
height: 19px;
color: #acacac;
margin-top: 22px;
z-index: 3;
float: left;
cursor: pointer;
text-align: center;
}

View File

@ -23,12 +23,20 @@ case "$1" in
. /etc/default/jitsi-videobridge . /etc/default/jitsi-videobridge
if [ -x /etc/prosody/prosody.cfg.lua ]; then PROSODY_CONFIG_PRESENT="true"
if [ ! -f /etc/prosody/prosody.cfg.lua ]; then
PROSODY_CONFIG_PRESENT="false"
gunzip -c /usr/share/doc/jitsi-meet-prosody/prosody.cfg.lua-jvb.example.gz > /etc/prosody/prosody.cfg.lua
fi
if [ ! grep "VirtualHost \"$JVB_HOSTNAME\"" /etc/prosody/prosody.cfg.lua > /dev/null ]; then
if [ "PROSODY_CONFIG_PRESENT" = "true" ]; then
mv /etc/prosody/prosody.cfg.lua /etc/prosody/prosody.cfg.lua.orig mv /etc/prosody/prosody.cfg.lua /etc/prosody/prosody.cfg.lua.orig
fi fi
gunzip -c /usr/share/doc/jitsi-meet-prosody/prosody.cfg.lua-jvb.example.gz > /etc/prosody/prosody.cfg.lua
sed -i "s/jitmeet.example.com/$JVB_HOSTNAME/g" /etc/prosody/prosody.cfg.lua sed -i "s/jitmeet.example.com/$JVB_HOSTNAME/g" /etc/prosody/prosody.cfg.lua
sed -i "s/jitmeetSecret/$JVB_SECRET/g" /etc/prosody/prosody.cfg.lua sed -i "s/jitmeetSecret/$JVB_SECRET/g" /etc/prosody/prosody.cfg.lua
fi
if [ ! -f /var/lib/prosody/$JVB_HOSTNAME.crt ]; then if [ ! -f /var/lib/prosody/$JVB_HOSTNAME.crt ]; then
HOST="$( (hostname -s; echo localhost) | head -n 1)" HOST="$( (hostname -s; echo localhost) | head -n 1)"
DOMAIN="$( (hostname -d; echo localdomain) | head -n 1)" DOMAIN="$( (hostname -d; echo localdomain) | head -n 1)"

View File

@ -23,13 +23,13 @@ set -e
case "$1" in case "$1" in
purge|remove) remove)
if [ -x "/etc/init.d/prosody" ]; then if [ -x "/etc/init.d/prosody" ]; then
invoke-rc.d nginx reload invoke-rc.d nginx reload
fi fi
;; ;;
upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) purge|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
;; ;;
*) *)

View File

@ -23,15 +23,14 @@ case "$1" in
# nginx conf # nginx conf
. /etc/default/jitsi-videobridge . /etc/default/jitsi-videobridge
if [ ! -f /etc/nginx/sites-available/$JVB_HOSTNAME.conf ]; then
cp /usr/share/doc/jitsi-meet/jitsi-meet.example /etc/nginx/sites-available/$JVB_HOSTNAME.conf cp /usr/share/doc/jitsi-meet/jitsi-meet.example /etc/nginx/sites-available/$JVB_HOSTNAME.conf
if [ ! -f /etc/nginx/sites-enabled/$JVB_HOSTNAME.conf ]; then if [ ! -f /etc/nginx/sites-enabled/$JVB_HOSTNAME.conf ]; then
ln -s /etc/nginx/sites-available/$JVB_HOSTNAME.conf /etc/nginx/sites-enabled/$JVB_HOSTNAME.conf ln -s /etc/nginx/sites-available/$JVB_HOSTNAME.conf /etc/nginx/sites-enabled/$JVB_HOSTNAME.conf
fi fi
sed -i "s/jitsi-meet.example.com/$JVB_HOSTNAME/g" /etc/nginx/sites-available/$JVB_HOSTNAME.conf sed -i "s/jitsi-meet.example.com/$JVB_HOSTNAME/g" /etc/nginx/sites-available/$JVB_HOSTNAME.conf
# FIXME do we need the default?
if [ ! -f /etc/nginx/sites-enabled/default ]; then
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
fi fi
if grep "# server_names_hash_bucket_size 64" /etc/nginx/nginx.conf > /dev/null; then if grep "# server_names_hash_bucket_size 64" /etc/nginx/nginx.conf > /dev/null; then
sed -i "s/#\ server_names_hash_bucket_size\ 64/\ server_names_hash_bucket_size\ 64/" /etc/nginx/nginx.conf sed -i "s/#\ server_names_hash_bucket_size\ 64/\ server_names_hash_bucket_size\ 64/" /etc/nginx/nginx.conf
fi fi
@ -40,9 +39,9 @@ case "$1" in
chown -R www-data:www-data /usr/share/jitsi-meet/ chown -R www-data:www-data /usr/share/jitsi-meet/
sed -i "s/jitsi-meet.example.com/$JVB_HOSTNAME/g" /usr/share/jitsi-meet/config.js sed -i "s/jitsi-meet.example.com/$JVB_HOSTNAME/g" /usr/share/jitsi-meet/config.js
# enable turn # enable turn
if grep "// useStunTurn: true," /usr/share/jitsi-meet/config.js > /dev/null; then #if grep "// useStunTurn: true," /usr/share/jitsi-meet/config.js > /dev/null; then
sed -i "s/\/\/\ \ useStunTurn:\ true,/\ \ \ \ useStunTurn:\ true,/" /usr/share/jitsi-meet/config.js # sed -i "s/\/\/\ \ useStunTurn:\ true,/\ \ \ \ useStunTurn:\ true,/" /usr/share/jitsi-meet/config.js
fi #fi
invoke-rc.d nginx restart invoke-rc.d nginx restart
;; ;;

View File

@ -23,13 +23,13 @@ set -e
case "$1" in case "$1" in
purge|remove) remove)
if [ -x "/etc/init.d/nginx" ]; then if [ -x "/etc/init.d/nginx" ]; then
invoke-rc.d nginx reload invoke-rc.d nginx reload
fi fi
;; ;;
upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) purge|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
;; ;;
*) *)

Binary file not shown.

View File

@ -31,4 +31,5 @@
<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" /> <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" />
<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" /> <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" />
<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" /> <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" />
<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" />
</font></defs></svg> </font></defs></svg>

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Binary file not shown.

View File

@ -1,6 +1,40 @@
{ {
"IcoMoonType": "selection", "IcoMoonType": "selection",
"icons": [ "icons": [
{
"icon": {
"paths": [
"",
"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",
"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"
],
"attrs": [
{},
{},
{}
],
"width": 1122,
"grid": 0,
"tags": [
"reload"
]
},
"attrs": [
{},
{},
{}
],
"properties": {
"order": 25,
"id": 28,
"prevSize": 32,
"code": 58904,
"name": "reload",
"ligatures": ""
},
"setIdx": 0,
"iconIdx": 0
},
{ {
"icon": { "icon": {
"paths": [ "paths": [
@ -27,7 +61,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 0 "iconIdx": 1
}, },
{ {
"icon": { "icon": {
@ -55,7 +89,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 1 "iconIdx": 2
}, },
{ {
"icon": { "icon": {
@ -94,7 +128,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 2 "iconIdx": 3
}, },
{ {
"icon": { "icon": {
@ -117,7 +151,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 3 "iconIdx": 4
}, },
{ {
"icon": { "icon": {
@ -140,7 +174,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 4 "iconIdx": 5
}, },
{ {
"icon": { "icon": {
@ -164,7 +198,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 5 "iconIdx": 6
}, },
{ {
"icon": { "icon": {
@ -189,7 +223,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 6 "iconIdx": 7
}, },
{ {
"icon": { "icon": {
@ -212,7 +246,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 7 "iconIdx": 8
}, },
{ {
"icon": { "icon": {
@ -236,7 +270,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 8 "iconIdx": 9
}, },
{ {
"icon": { "icon": {
@ -260,7 +294,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 9 "iconIdx": 10
}, },
{ {
"icon": { "icon": {
@ -282,7 +316,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 10 "iconIdx": 11
}, },
{ {
"icon": { "icon": {
@ -306,7 +340,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 11 "iconIdx": 12
}, },
{ {
"icon": { "icon": {
@ -330,7 +364,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 12 "iconIdx": 13
}, },
{ {
"icon": { "icon": {
@ -357,7 +391,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 13 "iconIdx": 14
}, },
{ {
"icon": { "icon": {
@ -381,7 +415,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 14 "iconIdx": 15
}, },
{ {
"icon": { "icon": {
@ -405,7 +439,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 15 "iconIdx": 16
}, },
{ {
"icon": { "icon": {
@ -430,7 +464,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 16 "iconIdx": 17
}, },
{ {
"icon": { "icon": {
@ -452,7 +486,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 17 "iconIdx": 18
}, },
{ {
"icon": { "icon": {
@ -475,7 +509,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 18 "iconIdx": 19
}, },
{ {
"icon": { "icon": {
@ -497,7 +531,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 19 "iconIdx": 20
}, },
{ {
"icon": { "icon": {
@ -520,7 +554,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 20 "iconIdx": 21
}, },
{ {
"icon": { "icon": {
@ -543,7 +577,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 21 "iconIdx": 22
}, },
{ {
"icon": { "icon": {
@ -567,7 +601,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 22 "iconIdx": 23
}, },
{ {
"icon": { "icon": {
@ -590,7 +624,7 @@
"ligatures": "" "ligatures": ""
}, },
"setIdx": 0, "setIdx": 0,
"iconIdx": 23 "iconIdx": 24
} }
], ],
"height": 1024, "height": 1024,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@ -9,7 +9,7 @@
<meta itemprop="name" content="Jitsi Meet"/> <meta itemprop="name" content="Jitsi Meet"/>
<meta itemprop="description" content="Join a WebRTC video conference powered by the Jitsi Videobridge"/> <meta itemprop="description" content="Join a WebRTC video conference powered by the Jitsi Videobridge"/>
<meta itemprop="image" content="/images/jitsilogo.png"/> <meta itemprop="image" content="/images/jitsilogo.png"/>
<script src="libs/jquery.min.js"></script> <script src="libs/jquery-2.1.1.min.js"></script>
<script src="libs/strophe/strophe.jingle.adapter.js?v=1"></script><!-- strophe.jingle bundles --> <script src="libs/strophe/strophe.jingle.adapter.js?v=1"></script><!-- strophe.jingle bundles -->
<script src="libs/strophe/strophe.jingle.bundle.js?v=8"></script> <script src="libs/strophe/strophe.jingle.bundle.js?v=8"></script>
<script src="libs/strophe/strophe.jingle.js?v=1"></script> <script src="libs/strophe/strophe.jingle.js?v=1"></script>
@ -23,12 +23,13 @@
<script src="libs/rayo.js?v=1"></script> <script src="libs/rayo.js?v=1"></script>
<script src="libs/tooltip.js?v=1"></script><!-- bootstrap tooltip lib --> <script src="libs/tooltip.js?v=1"></script><!-- bootstrap tooltip lib -->
<script src="libs/popover.js?v=1"></script><!-- bootstrap tooltip lib --> <script src="libs/popover.js?v=1"></script><!-- bootstrap tooltip lib -->
<script src="config.js?v=4"></script><!-- adapt to your needs, i.e. set hosts and bosh path --> <script src="config.js?v=5"></script><!-- adapt to your needs, i.e. set hosts and bosh path -->
<script src="brand.js?v=1"></script>
<script src="muc.js?v=13"></script><!-- simple MUC library --> <script src="muc.js?v=13"></script><!-- simple MUC library -->
<script src="estos_log.js?v=2"></script><!-- simple stanza logger --> <script src="estos_log.js?v=2"></script><!-- simple stanza logger -->
<script src="desktopsharing.js?v=2"></script><!-- desktop sharing --> <script src="desktopsharing.js?v=2"></script><!-- desktop sharing -->
<script src="data_channels.js?v=3"></script><!-- data channels --> <script src="data_channels.js?v=3"></script><!-- data channels -->
<script src="app.js?v=5"></script><!-- application logic --> <script src="app.js?v=7"></script><!-- application logic -->
<script src="commands.js?v=1"></script><!-- application logic --> <script src="commands.js?v=1"></script><!-- application logic -->
<script src="chat.js?v=9"></script><!-- chat logic --> <script src="chat.js?v=9"></script><!-- chat logic -->
<script src="contact_list.js?v=1"></script><!-- contact list logic --> <script src="contact_list.js?v=1"></script><!-- contact list logic -->
@ -39,14 +40,15 @@
<script src="replacement.js?v=6"></script><!-- link and smiley replacement --> <script src="replacement.js?v=6"></script><!-- link and smiley replacement -->
<script src="moderatemuc.js?v=3"></script><!-- moderator plugin --> <script src="moderatemuc.js?v=3"></script><!-- moderator plugin -->
<script src="analytics.js?v=1"></script><!-- google analytics plugin --> <script src="analytics.js?v=1"></script><!-- google analytics plugin -->
<script src="rtp_stats.js?v=1"></script><!-- RTP stats processing --> <script src="rtp_sts.js?v=1"></script><!-- RTP stats processing -->
<script src="local_stats.js?v=1"></script><!-- Local stats processing --> <script src="local_sts.js?v=1"></script><!-- Local stats processing -->
<script src="videolayout.js?v=8"></script><!-- video ui --> <script src="videolayout.js?v=8"></script><!-- video ui -->
<script src="toolbar.js?v=4"></script><!-- toolbar ui --> <script src="toolbar.js?v=4"></script><!-- toolbar ui -->
<script src="canvas_util.js?v=1"></script><!-- canvas drawing utils --> <script src="canvas_util.js?v=1"></script><!-- canvas drawing utils -->
<script src="audio_levels.js?v=1"></script><!-- audio levels plugin --> <script src="audio_levels.js?v=1"></script><!-- audio levels plugin -->
<script src="media_stream.js?v=1"></script><!-- media stream --> <script src="media_stream.js?v=1"></script><!-- media stream -->
<script src="bottom_toolbar.js?v=1"></script><!-- media stream --> <script src="bottom_toolbar.js?v=1"></script><!-- media stream -->
<script src="roomname_generator.js?v=1"></script><!-- generator for random room names -->
<script src="tracking.js?v=1"></script><!-- tracking --> <script src="tracking.js?v=1"></script><!-- tracking -->
<link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet"> <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
<link rel="stylesheet" href="css/font.css?v=3"/> <link rel="stylesheet" href="css/font.css?v=3"/>
@ -73,13 +75,24 @@
<div id="jitsi_logo"></div> <div id="jitsi_logo"></div>
</a> </a>
<!--<a href="http://jitsi.org" target="_new">
<div id="brand_logo"></div>
</a>-->
<div id="enter_room_container">
<div id="enter_room_form" >
<div id="domain_name"></div>
<div id="enter_room"> <div id="enter_room">
<input id="enter_room_field" type="text" placeholder="Enter room name" /> <input id="enter_room_field" type="text" autofocus placeholder="Enter room name" />
<div class="icon-reload" id="reload_roomname"></div>
<input id="enter_room_button" type="button" value="GO" /> <input id="enter_room_button" type="button" value="GO" />
<input type='checkbox' name='checkbox' id="disable_welcome"/>
<label for="disable_welcome">Don't show this page</label> </div>
</div>
</div> </div>
<div id="brand_header"></div> <div id="brand_header"></div>
<input type='checkbox' name='checkbox' id="disable_welcome"/>
<label for="disable_welcome" class="disable_welcome_position">Don't show this page next time I enter</label>
<div id="header_text"></div> <div id="header_text"></div>
</div> </div>
<div id="welcome_page_main"> <div id="welcome_page_main">
@ -88,7 +101,7 @@
<div class="feature_holder"> <div class="feature_holder">
<div class="feature_icon">Simple to use</div> <div class="feature_icon">Simple to use</div>
<div class="feature_description"> <div class="feature_description">
No downloads required. uTalk works directly within your browser. Simply share your conference URL with others to get started. No downloads required. <span name="appName"></span> works directly within your browser. Simply share your conference URL with others to get started.
</div> </div>
</div> </div>
<div class="feature_holder"> <div class="feature_holder">
@ -100,7 +113,7 @@
<div class="feature_holder"> <div class="feature_holder">
<div class="feature_icon">Open source</div> <div class="feature_icon">Open source</div>
<div class="feature_description"> <div class="feature_description">
uTalk is licensed under the &lt;GPL/LGPL/WHATEVER&gt;. You can download, use, modify, and share the software without any restrictions. <span name="appName"></span> is licensed under MIT. You are free to download, use, modify, and share them as per these licenses.
</div> </div>
</div> </div>
<div class="feature_holder"> <div class="feature_holder">
@ -114,19 +127,19 @@
<div class="feature_holder"> <div class="feature_holder">
<div class="feature_icon">Screen sharing</div> <div class="feature_icon">Screen sharing</div>
<div class="feature_description"> <div class="feature_description">
It's easy to share your screen with others. uTalk is ideal for on-line presentations, lectures, and tech support sessions. It's easy to share your screen with others. <span name="appName"></span> is ideal for on-line presentations, lectures, and tech support sessions.
</div> </div>
</div> </div>
<div class="feature_holder"> <div class="feature_holder">
<div class="feature_icon">Secure rooms</div> <div class="feature_icon">Secure rooms</div>
<div class="feature_description"> <div class="feature_description">
Need some privacy? uTalk conference rooms can be secured with a password in order to exclude unwanted guests and prevent interruptions. Need some privacy? <span name="appName"></span> conference rooms can be secured with a password in order to exclude unwanted guests and prevent interruptions.
</div> </div>
</div> </div>
<div class="feature_holder"> <div class="feature_holder">
<div class="feature_icon">Shared notes</div> <div class="feature_icon">Shared notes</div>
<div class="feature_description"> <div class="feature_description">
uTalk features Etherpad, a real-time collaborative text editor that's great for meeting minutes, writing articles, and more. <span name="appName"></span> features Etherpad, a real-time collaborative text editor that's great for meeting minutes, writing articles, and more.
</div> </div>
</div> </div>
<div class="feature_holder"> <div class="feature_holder">
@ -199,7 +212,7 @@
<div class="header_button_separator"></div> <div class="header_button_separator"></div>
<span id="hangup"> <span id="hangup">
<a class="button" data-toggle="popover" data-placement="bottom" data-content="Hang Up" onclick='hangup();'> <a class="button" data-toggle="popover" data-placement="bottom" data-content="Hang Up" onclick='hangup();'>
<i class="icon-hangup" style="color:#f42a24;"></i> <i class="icon-hangup" style="color:#ff0000;font-size: 1.4em;"></i>
</a> </a>
</span> </span>
</span> </span>
@ -271,6 +284,5 @@
</div> </div>
<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> <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>
</div> </div>
</body> </body>
</html> </html>

9190
libs/jquery-2.1.1.js vendored Normal file

File diff suppressed because it is too large Load Diff

4
libs/jquery-2.1.1.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

6
libs/jquery.min.js vendored

File diff suppressed because one or more lines are too long

View File

@ -577,23 +577,19 @@ function getUserMediaWithConstraints(um, success_callback, failure_callback, res
case 'fullhd': case 'fullhd':
constraints.video.mandatory.minWidth = 1920; constraints.video.mandatory.minWidth = 1920;
constraints.video.mandatory.minHeight = 1080; constraints.video.mandatory.minHeight = 1080;
constraints.video.optional.push({ minAspectRatio: 1.77 });
break; break;
case '720': case '720':
case 'hd': case 'hd':
constraints.video.mandatory.minWidth = 1280; constraints.video.mandatory.minWidth = 1280;
constraints.video.mandatory.minHeight = 720; constraints.video.mandatory.minHeight = 720;
constraints.video.optional.push({ minAspectRatio: 1.77 });
break; break;
case '360': case '360':
constraints.video.mandatory.minWidth = 640; constraints.video.mandatory.minWidth = 640;
constraints.video.mandatory.minHeight = 360; constraints.video.mandatory.minHeight = 360;
constraints.video.optional.push({ minAspectRatio: 1.77 });
break; break;
case '180': case '180':
constraints.video.mandatory.minWidth = 320; constraints.video.mandatory.minWidth = 320;
constraints.video.mandatory.minHeight = 180; constraints.video.mandatory.minHeight = 180;
constraints.video.optional.push({ minAspectRatio: 1.77 });
break; break;
// 4:3 // 4:3
case '960': case '960':
@ -617,6 +613,10 @@ function getUserMediaWithConstraints(um, success_callback, failure_callback, res
} }
break; break;
} }
if (constraints.video.mandatory.minWidth)
constraints.video.mandatory.maxWidth = constraints.video.mandatory.minWidth;
if (constraints.video.mandatory.minHeight)
constraints.video.mandatory.maxHeight = constraints.video.mandatory.minHeight;
if (bandwidth) { // doesn't work currently, see webrtc issue 1846 if (bandwidth) { // doesn't work currently, see webrtc issue 1846
if (!constraints.video) constraints.video = {mandatory: {}, optional: []};//same behaviour as true if (!constraints.video) constraints.video = {mandatory: {}, optional: []};//same behaviour as true

View File

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

View File

@ -185,6 +185,29 @@
that.$element.trigger('shown.bs.' + that.type) that.$element.trigger('shown.bs.' + that.type)
} }
var deltas = {
"bottom": $tip[0].getBoundingClientRect().bottom - window.innerHeight,
"right": $tip[0].getBoundingClientRect().right - window.innerWidth,
"left": -$tip[0].getBoundingClientRect().left,
"top": -$tip[0].getBoundingClientRect().top
};
for(var direction in deltas) {
if (deltas[direction] > 0) {
var delta = deltas[direction];
if(direction === "right" || direction === "bottom") {
delta = -delta;
}
direction = direction === "top" || direction === "bottom" ? "top" : "left";
var currentPosition = parseInt($tip.css(direction), 10);
$tip.css(direction, currentPosition + delta);
if(direction === "left") {
$tip.children(".arrow").css(direction, parseInt($tip.children(".arrow").css(direction), 10) - delta);
} else {
$tip.children(".arrow").css(direction, 50 - $tip[0].getBoundingClientRect().height / delta + "%");
}
}
}
$.support.transition && this.$tip.hasClass('fade') ? $.support.transition && this.$tip.hasClass('fade') ?
$tip $tip
.one($.support.transition.end, complete) .one($.support.transition.end, complete)

162
roomname_generator.js Normal file
View File

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

View File

@ -28,6 +28,9 @@ var VideoLayout = (function (my) {
var localVideoContainer = document.getElementById('localVideoWrapper'); var localVideoContainer = document.getElementById('localVideoWrapper');
localVideoContainer.appendChild(localVideo); localVideoContainer.appendChild(localVideo);
// Set default display name.
setDisplayName('localVideoContainer');
AudioLevels.updateAudioLevelCanvas(); AudioLevels.updateAudioLevelCanvas();
var localVideoSelector = $('#' + localVideo.id); var localVideoSelector = $('#' + localVideo.id);
@ -103,7 +106,6 @@ var VideoLayout = (function (my) {
} }
}; };
/** /**
* Updates the large video with the given new video source. * Updates the large video with the given new video source.
*/ */
@ -306,6 +308,9 @@ var VideoLayout = (function (my) {
var container var container
= VideoLayout.addRemoteVideoContainer(peerJid, videoSpanId); = VideoLayout.addRemoteVideoContainer(peerJid, videoSpanId);
// Set default display name.
setDisplayName(videoSpanId);
var nickfield = document.createElement('span'); var nickfield = document.createElement('span');
nickfield.className = "nick"; nickfield.className = "nick";
nickfield.appendChild(document.createTextNode(resourceJid)); nickfield.appendChild(document.createTextNode(resourceJid));
@ -541,7 +546,7 @@ var VideoLayout = (function (my) {
editableText.className = 'displayname'; editableText.className = 'displayname';
editableText.id = 'editDisplayName'; editableText.id = 'editDisplayName';
if (displayName.length) { if (displayName && displayName.length) {
editableText.value editableText.value
= displayName.substring(0, displayName.indexOf(' (me)')); = displayName.substring(0, displayName.indexOf(' (me)'));
} }