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 userInfo = msg.userInfo;
var id = userInfo.userId; 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]) if (userSet[id])
{ {
userSet[id] = userInfo; userSet[id] = userInfo;

View file

@ -98,6 +98,7 @@ function getParams()
var showControls = params["showControls"]; var showControls = params["showControls"];
var showChat = params["showChat"]; var showChat = params["showChat"];
var userName = params["userName"]; var userName = params["userName"];
var userColor = params["userColor"];
var showLineNumbers = params["showLineNumbers"]; var showLineNumbers = params["showLineNumbers"];
var useMonospaceFont = params["useMonospaceFont"]; var useMonospaceFont = params["useMonospaceFont"];
var IsnoColors = params["noColors"]; 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. // 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); 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)
{ {
if(rtl == "true") if(rtl == "true")
@ -347,6 +353,26 @@ function handshake()
pad.myUserInfo.name = settings.globalUserName; pad.myUserInfo.name = settings.globalUserName;
$('#myusernameedit').attr({"value":settings.globalUserName}); // Updates the current users UI $('#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 //This handles every Message after the clientVars
else else
@ -1011,6 +1037,7 @@ var settings = {
, noColors: false , noColors: false
, useMonospaceFontGlobal: false , useMonospaceFontGlobal: false
, globalUserName: false , globalUserName: false
, globalUserColor: false
, rtlIsTrue: false , rtlIsTrue: false
}; };