diff --git a/Makefile b/Makefile
index ffa86cc26..f06b20d03 100644
--- a/Makefile
+++ b/Makefile
@@ -21,4 +21,4 @@ clean:
deploy:
@mkdir -p $(DEPLOY_DIR) && cp $(OUTPUT_DIR)/*.bundle.js $(DEPLOY_DIR)
-
+ scp $(DEPLOY_DIR)/app.bundle.js hristo.jitsi.net:/srv/web/hristo.jitsi.net/$(DEPLOY_DIR)
diff --git a/app.js b/app.js
index a28b40420..23d5b2369 100644
--- a/app.js
+++ b/app.js
@@ -14,6 +14,7 @@ var APP =
this.xmpp = require("./modules/xmpp/xmpp");
this.keyboardshortcut = require("./modules/keyboardshortcut/keyboardshortcut");
this.translation = require("./modules/translation/translation");
+ this.settings = require("./modules/settings/Settings");
}
};
diff --git a/config.js b/config.js
index 613c7eed7..c96c985fa 100644
--- a/config.js
+++ b/config.js
@@ -1,9 +1,10 @@
var config = {
hosts: {
- domain: 'jitsi-meet.example.com',
+ domain: 'hristo.jitsi.net',
//anonymousdomain: 'guest.example.com',
- muc: 'conference.jitsi-meet.example.com', // FIXME: use XEP-0030
- bridge: 'jitsi-videobridge.jitsi-meet.example.com', // FIXME: use XEP-0030
+// anonymousdomain: 'guest.hristo.jitsi.net',
+ muc: 'conference.hristo.jitsi.net', // FIXME: use XEP-0030
+ bridge: 'jitsi-videobridge.hristo.jitsi.net', // FIXME: use XEP-0030
//jirecon: 'jirecon.jitsi-meet.example.com',
//call_control: 'callcontrol.jitsi-meet.example.com',
//focus: 'focus.jitsi-meet.example.com' - defaults to 'focus.jitsi-meet.example.com'
@@ -12,11 +13,12 @@ var config = {
// useStunTurn: true, // use XEP-0215 to fetch STUN and TURN server
// useIPv6: true, // ipv6 support. use at your own risk
useNicks: false,
- bosh: '//jitsi-meet.example.com/http-bind', // FIXME: use xep-0156 for that
+ bosh: '//hristo.jitsi.net/http-bind', // FIXME: use xep-0156 for that
clientNode: 'http://jitsi.org/jitsimeet', // The name of client node advertised in XEP-0115 'c' stanza
//focusUserJid: 'focus@auth.jitsi-meet.example.com', // The real JID of focus participant - can be overridden here
- //defaultSipNumber: '', // Default SIP number
+ defaultSipNumber: '123', // Default SIP number
desktopSharing: 'ext', // Desktop sharing method. Can be set to 'ext', 'webrtc' or false to disable.
+// resolution: "1080",
chromeExtensionId: 'diibjkoicjeejcmhdnailmkgecihlobk', // Id of desktop streamer Chrome extension
desktopSharingSources: ['screen', 'window'],
minChromeExtVersion: '0.1', // Required version of Chrome extension
@@ -26,9 +28,9 @@ var config = {
channelLastN: -1, // The default value of the channel attribute last-n.
adaptiveLastN: false,
adaptiveSimulcast: false,
- useRtcpMux: true,
- useBundle: true,
- enableRecording: false,
+ useRtcpMux: false,
+ useBundle: false,
+ enableRecording: true,
enableWelcomePage: true,
enableSimulcast: false,
enableFirefoxSupport: false, //firefox support is still experimental, only one-to-one conferences with chrome focus
diff --git a/css/jitsi_popover.css b/css/jitsi_popover.css
index 0489dd217..545ebf1c4 100644
--- a/css/jitsi_popover.css
+++ b/css/jitsi_popover.css
@@ -99,5 +99,7 @@
width: 90px;
height: 16px;
padding-top: 4px;
+ padding-left: 10px;
+ padding-right: 10px;
margin: 15px auto 0px auto;
}
diff --git a/css/settingsmenu.css b/css/settingsmenu.css
index fca0ac3ba..44b29bd05 100644
--- a/css/settingsmenu.css
+++ b/css/settingsmenu.css
@@ -27,8 +27,8 @@
}
#settingsmenu button {
- width: 36%;
- left: 32%;
+ width: 45%;
+ left: 26%;
padding: 0;
margin-top: 10px;
}
diff --git a/index.html b/index.html
index 35d4a34d1..e6343b4f6 100644
--- a/index.html
+++ b/index.html
@@ -19,7 +19,7 @@
-
+
diff --git a/interface_config.js b/interface_config.js
index 78edc9c90..1a2ce9c14 100644
--- a/interface_config.js
+++ b/interface_config.js
@@ -5,7 +5,7 @@ var interfaceConfig = {
INITIAL_TOOLBAR_TIMEOUT: 20000,
TOOLBAR_TIMEOUT: 4000,
DEFAULT_REMOTE_DISPLAY_NAME: "Fellow Jitster",
- DEFAULT_DOMINANT_SPEAKER_DISPLAY_NAME: "Speaker",
+ DEFAULT_DOMINANT_SPEAKER_DISPLAY_NAME: "speaker",
DEFAULT_LOCAL_DISPLAY_NAME: "me",
SHOW_JITSI_WATERMARK: true,
JITSI_WATERMARK_LINK: "http://jitsi.org",
diff --git a/lang/main.json b/lang/main.json
index e90f2e05a..d86c659ac 100644
--- a/lang/main.json
+++ b/lang/main.json
@@ -3,6 +3,12 @@
"connectionsettings": "Connection Settings",
"poweredby": "powered by",
"downloadlogs": "Download logs",
+ "roomUrlDefaultMsg": "Your conference is currently being created...",
+ "participant": "Participant",
+ "me": "me",
+ "speaker": "Speaker",
+ "defaultNickname": "ex. __name__",
+ "defaultPreziLink": "e.g. __url__",
"welcomepage":{
"go": "GO",
"roomname": "Enter room name",
@@ -60,8 +66,8 @@
},
"bottomtoolbar": {
"chat": "Open / close chat",
- "filmstrip": "Open / close contact list",
- "contactlist": "Show / hide film strip"
+ "filmstrip": "Show / hide film strip",
+ "contactlist": "Open / close contact list"
},
"chat":{
"nickname": {
@@ -182,6 +188,11 @@
"password": "password",
"userPassword": "user password",
"token": "token"
-
+ },
+ "email":
+ {
+ "sharedKey": "This conference is password protected. Please use the following pin when joining:%0D%0A%0D%0A __sharedKey__ %0D%0A%0D%0A",
+ "subject": "Invitation to a __appName__ (__conferenceName__)",
+ "body": "Hey there, I%27d like to invite you to a __appName__ conference I%27ve just set up.%0D%0A%0D%0APlease click on the following link in order to join the conference.%0D%0A%0D%0A __roomUrl__%0D%0A%0D%0A__sharedKeyText__ Note that __appName__ is currently only supported by Chromium, Google Chrome and Opera, so you need to be using one of these browsers.%0D%0A%0D%0ATalk to you in a sec!"
}
}
diff --git a/modules/UI/UI.js b/modules/UI/UI.js
index cdf06de62..d171a12b6 100644
--- a/modules/UI/UI.js
+++ b/modules/UI/UI.js
@@ -393,9 +393,8 @@ function updateChatConversation(from, displayName, message) {
function onMucJoined(jid, info) {
Toolbar.updateRoomUrl(window.location.href);
- document.getElementById('localNick').appendChild(
- document.createTextNode(Strophe.getResourceFromJid(jid) + ' (me)')
- );
+ var meHTML = APP.translation.generateTranslatonHTML("me");
+ $("#localNick").html(Strophe.getResourceFromJid(jid) + " (" + meHTML + ")");
var settings = Settings.getSettings();
// Add myself to the contact list.
@@ -408,7 +407,7 @@ function onMucJoined(jid, info) {
? info.displayName : Strophe.getResourceFromJid(jid);
if (displayName)
- onDisplayNameChanged('localVideoContainer', displayName + ' (me)');
+ onDisplayNameChanged('localVideoContainer', displayName);
}
function initEtherpad(name) {
diff --git a/modules/UI/prezi/Prezi.js b/modules/UI/prezi/Prezi.js
index e0268425b..35f36b316 100644
--- a/modules/UI/prezi/Prezi.js
+++ b/modules/UI/prezi/Prezi.js
@@ -73,12 +73,15 @@ var Prezi = {
buttons1.button2 = {title: backButton, value: true};
var linkError = APP.translation.generateTranslatonHTML(
"dialog.preziLinkError");
+ var defaultUrl = APP.translation.translateString("defaultPreziLink",
+ {url: "http://prezi.com/wz7vhjycl7e6/my-prezi"});
var openPreziState = {
state0: {
html: '
' + html + '
' +
'',
+ 'data-i18n="[placeholder]defaultPreziLink" data-i18n-options=\'' +
+ JSON.stringify({"url": "http://prezi.com/wz7vhjycl7e6/my-prezi"}) +
+ '\' placeholder="' + defaultUrl + '" autofocus>',
persistent: false,
buttons: buttons,
defaultButton: 1,
diff --git a/modules/UI/side_pannels/contactlist/ContactList.js b/modules/UI/side_pannels/contactlist/ContactList.js
index 078dea58e..ac2b3d242 100644
--- a/modules/UI/side_pannels/contactlist/ContactList.js
+++ b/modules/UI/side_pannels/contactlist/ContactList.js
@@ -38,9 +38,15 @@ function createAvatar(id) {
*
* @param displayName the display name to set
*/
-function createDisplayNameParagraph(displayName) {
+function createDisplayNameParagraph(key, displayName) {
var p = document.createElement('p');
- p.innerText = displayName;
+ if(displayName)
+ p.innerText = displayName;
+ else if(key)
+ {
+ p.setAttribute("data-i18n",key);
+ p.innerText = APP.translation.translateString(key);
+ }
return p;
}
@@ -106,7 +112,7 @@ var ContactList = {
};
newContact.appendChild(createAvatar(id));
- newContact.appendChild(createDisplayNameParagraph("Participant"));
+ newContact.appendChild(createDisplayNameParagraph("participant"));
var clElement = contactlist.get(0);
diff --git a/modules/UI/toolbars/Toolbar.js b/modules/UI/toolbars/Toolbar.js
index d902d8f09..6e0f1c935 100644
--- a/modules/UI/toolbars/Toolbar.js
+++ b/modules/UI/toolbars/Toolbar.js
@@ -197,25 +197,16 @@ function inviteParticipants() {
var sharedKeyText = "";
if (sharedKey && sharedKey.length > 0) {
sharedKeyText =
- "This conference is password protected. Please use the " +
- "following pin when joining:%0D%0A%0D%0A" +
- sharedKey + "%0D%0A%0D%0A";
+ APP.translation.translateString("email.sharedKey",
+ {sharedKey: sharedKey});
}
var conferenceName = roomUrl.substring(roomUrl.lastIndexOf('/') + 1);
- var subject = "Invitation to a " + interfaceConfig.APP_NAME + " (" + conferenceName + ")";
- var body = "Hey there, I%27d like to invite you to a " + interfaceConfig.APP_NAME +
- " conference I%27ve just set up.%0D%0A%0D%0A" +
- "Please click on the following link in order" +
- " to join the conference.%0D%0A%0D%0A" +
- roomUrl +
- "%0D%0A%0D%0A" +
- sharedKeyText +
- "Note that " + interfaceConfig.APP_NAME + " is currently" +
- " only supported by Chromium," +
- " Google Chrome and Opera, so you need" +
- " to be using one of these browsers.%0D%0A%0D%0A" +
- "Talk to you in a sec!";
+ var subject = APP.translation.translateString("email.subject",
+ {appName:interfaceConfig.APP_NAME, conferenceName: conferenceName});
+ var body = APP.translation.translateString("email.body",
+ {appName:interfaceConfig.APP_NAME, sharedKeyText: sharedKeyText,
+ roomUrl: roomUrl});
if (window.localStorage.displayname) {
body += "%0D%0A%0D%0A" + window.localStorage.displayname;
@@ -409,16 +400,18 @@ var Toolbar = (function (my) {
* Opens the invite link dialog.
*/
my.openLinkDialog = function () {
- var inviteLink;
+ var inviteAttreibutes;
+
if (roomUrl === null) {
- inviteLink = "Your conference is currently being created...";
+ inviteAttreibutes = 'data-i18n="[value]roomUrlDefaultMsg" value="' +
+ APP.translation.translateString("roomUrlDefaultMsg") + '"';
} else {
- inviteLink = encodeURI(roomUrl);
+ inviteAttreibutes = "value=\"" + encodeURI(roomUrl) + "\"";
}
messageHandler.openTwoButtonDialog("dialog.shareLink",
null, null,
- '',
+ '',
false,
"dialog.Invite",
function (e, v) {
diff --git a/modules/UI/videolayout/VideoLayout.js b/modules/UI/videolayout/VideoLayout.js
index 301b9c093..aa69ee8f2 100644
--- a/modules/UI/videolayout/VideoLayout.js
+++ b/modules/UI/videolayout/VideoLayout.js
@@ -191,9 +191,10 @@ function getCameraVideoSize(videoWidth,
/**
* Sets the display name for the given video span id.
*/
-function setDisplayName(videoSpanId, displayName) {
+function setDisplayName(videoSpanId, displayName, key) {
var nameSpan = $('#' + videoSpanId + '>span.displayname');
- var defaultLocalDisplayName = interfaceConfig.DEFAULT_LOCAL_DISPLAY_NAME;
+ var defaultLocalDisplayName = APP.translation.generateTranslatonHTML(
+ interfaceConfig.DEFAULT_LOCAL_DISPLAY_NAME);
// If we already have a display name for this video.
if (nameSpan.length > 0) {
@@ -202,14 +203,25 @@ function setDisplayName(videoSpanId, displayName) {
if (nameSpanElement.id === 'localDisplayName' &&
$('#localDisplayName').text() !== displayName) {
if (displayName && displayName.length > 0)
- $('#localDisplayName').html(displayName + ' (me)');
+ {
+ var meHTML = APP.translation.generateTranslatonHTML("me");
+ $('#localDisplayName').html(displayName + ' (' + meHTML + ')');
+ }
else
- $('#localDisplayName').text(defaultLocalDisplayName);
+ $('#localDisplayName').html(defaultLocalDisplayName);
} else {
if (displayName && displayName.length > 0)
+ {
$('#' + videoSpanId + '_name').html(displayName);
+ }
+ else if (key && key.length > 0)
+ {
+ var nameHtml = APP.translation.generateTranslatonHTML(key);
+ $('#' + videoSpanId + '_name').html(nameHtml);
+ }
else
- $('#' + videoSpanId + '_name').text(interfaceConfig.DEFAULT_REMOTE_DISPLAY_NAME);
+ $('#' + videoSpanId + '_name').text(
+ interfaceConfig.DEFAULT_REMOTE_DISPLAY_NAME);
}
} else {
var editButton = null;
@@ -220,15 +232,22 @@ function setDisplayName(videoSpanId, displayName) {
if (videoSpanId === 'localVideoContainer') {
editButton = createEditDisplayNameButton();
- nameSpan.innerText = defaultLocalDisplayName;
+ if (displayName && displayName.length > 0) {
+ var meHTML = APP.translation.generateTranslatonHTML("me");
+ nameSpan.innerHTML = displayName + meHTML;
+ }
+ else
+ nameSpan.innerHTML = defaultLocalDisplayName;
}
else {
- nameSpan.innerText = interfaceConfig.DEFAULT_REMOTE_DISPLAY_NAME;
+ if (displayName && displayName.length > 0) {
+
+ nameSpan.innerText = displayName;
+ }
+ else
+ nameSpan.innerText = interfaceConfig.DEFAULT_REMOTE_DISPLAY_NAME;
}
- if (displayName && displayName.length > 0) {
- nameSpan.innerText = displayName;
- }
if (!editButton) {
nameSpan.id = videoSpanId + '_name';
@@ -245,11 +264,18 @@ function setDisplayName(videoSpanId, displayName) {
if (displayName && displayName.length) {
editableText.value
- = displayName.substring(0, displayName.indexOf(' (me)'));
+ = displayName;
}
+ var defaultNickname = APP.translation.translateString(
+ "defaultNickname", {name: "Jane Pink"});
editableText.setAttribute('style', 'display:none;');
- editableText.setAttribute('placeholder', 'ex. Jane Pink');
+ editableText.setAttribute('data-18n',
+ '[placeholder]defaultNickname');
+ editableText.setAttribute("data-i18n-options",
+ JSON.stringify({name: "Jane Pink"}));
+ editableText.setAttribute("placeholder", defaultNickname);
+
$('#' + videoSpanId)[0].appendChild(editableText);
$('#localVideoContainer .displayname')
@@ -1270,10 +1296,17 @@ var VideoLayout = (function (my) {
if (!$('#localDisplayName').is(":visible")) {
if (NicknameHandler.getNickname())
- $('#localDisplayName').text(NicknameHandler.getNickname() + " (me)");
+ {
+ var meHTML = APP.translation.generateTranslatonHTML("me");
+ $('#localDisplayName').html(NicknameHandler.getNickname() + " (" + meHTML + ")");
+ }
else
+ {
+ var defaultHTML = APP.translation.generateTranslatonHTML(
+ interfaceConfig.DEFAULT_LOCAL_DISPLAY_NAME);
$('#localDisplayName')
- .text(interfaceConfig.DEFAULT_LOCAL_DISPLAY_NAME);
+ .html(defaultHTML);
+ }
$('#localDisplayName').show();
}
@@ -1796,17 +1829,20 @@ var VideoLayout = (function (my) {
=== APP.xmpp.myResource())
return;
+ var members = APP.xmpp.getMembers();
// Update the current dominant speaker.
if (resourceJid !== currentDominantSpeaker) {
var oldSpeakerVideoSpanId = "participant_" + currentDominantSpeaker,
newSpeakerVideoSpanId = "participant_" + resourceJid;
- if($("#" + oldSpeakerVideoSpanId + ">span.displayname").text() ===
- interfaceConfig.DEFAULT_DOMINANT_SPEAKER_DISPLAY_NAME) {
+ var currentJID = APP.xmpp.findJidFromResource(currentDominantSpeaker);
+ var newJID = APP.xmpp.findJidFromResource(resourceJid);
+ if(currentDominantSpeaker && (!members || !members[currentJID] ||
+ !members[currentJID].displayName)) {
setDisplayName(oldSpeakerVideoSpanId, null);
}
- if($("#" + newSpeakerVideoSpanId + ">span.displayname").text() ===
- interfaceConfig.DEFAULT_REMOTE_DISPLAY_NAME) {
- setDisplayName(newSpeakerVideoSpanId,
+ if(resourceJid && (!members || !members[newJID] ||
+ !members[newJID].displayName)) {
+ setDisplayName(newSpeakerVideoSpanId, null,
interfaceConfig.DEFAULT_DOMINANT_SPEAKER_DISPLAY_NAME);
}
currentDominantSpeaker = resourceJid;