This commit is contained in:
yourcelf 2012-09-15 10:49:21 -07:00
commit e3b96d616f
2 changed files with 33 additions and 1 deletions

View file

@ -297,7 +297,12 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options, _pad)
{
var userInfo = msg.userInfo;
var id = userInfo.userId;
// Avoid a race condition. If our color was set by a query param, ignore
// our own "new user" message's color value.
if (id === initialUserInfo.userId && initialUserInfo.globalUserColor)
{
msg.userInfo.colorId = initialUserInfo.globalUserColor;
}
if (userSet[id])
{
userSet[id] = userInfo;

View file

@ -98,6 +98,7 @@ function getParams()
var showControls = params["showControls"];
var showChat = params["showChat"];
var userName = params["userName"];
var userColor = params["userColor"];
var showLineNumbers = params["showLineNumbers"];
var useMonospaceFont = params["useMonospaceFont"];
var IsnoColors = params["noColors"];
@ -146,6 +147,11 @@ function getParams()
// If the username is set as a parameter we should set a global value that we can call once we have initiated the pad.
settings.globalUserName = decodeURIComponent(userName);
}
if(userColor)
{
// If the usercolor is set as a parameter we set a global value that we can call once we have initiated the pad.
settings.globalUserColor = decodeURIComponent(userColor);
}
if(rtl)
{
if(rtl == "true")
@ -347,6 +353,26 @@ function handshake()
pad.myUserInfo.name = settings.globalUserName;
$('#myusernameedit').attr({"value":settings.globalUserName}); // Updates the current users UI
}
if (settings.globalUserColor !== false)
{
// First, sanitize the color to ensure it's a valid color value.
var check = $("<span/>").css("background-color", "white");
$("body").append(check);
var white = check.css("background-color");
check.css("background-color", settings.globalUserColor);
// Ensure that setting the element changed the color.
if (check.css("background-color") === white) {
settings.globalUserColor = "#ff0000";
}
check.remove();
// Add a 'globalUserColor' property to myUserInfo, so that collabClient
// can avoid a race condition where the server sends collabClient a
// "USER_NEWINFO" message with an old colorId after we connect.
pad.myUserInfo.globalUserColor = settings.globalUserColor;
pad.notifyChangeColor(settings.globalUserColor); // Updates pad.myUserInfo.colorId
paduserlist.setMyUserInfo(pad.myUserInfo);
}
}
//This handles every Message after the clientVars
else
@ -1011,6 +1037,7 @@ var settings = {
, noColors: false
, useMonospaceFontGlobal: false
, globalUserName: false
, globalUserColor: false
, rtlIsTrue: false
};