', {'class': USERNAME_CLS});
+ var accountName = null; //TODO Cryptpad.getStore().getAccountName()
+ var account = typeof accountName === "string";
+ var $userAdminContent = $('');
+ if (account) {
+ var $userAccount = $('', {'class': 'userAccount'}).append('Account: ' + accountName);
+ $userAdminContent.append($userAccount);
+ $userAdminContent.append($('
'));
+ }
+ var $userName = $('', {'class': 'userDisplayName'}).append('Display name: ').append($displayedName.clone());
+ $userAdminContent.append($userName);
+ var options = [{
+ tag: 'p',
+ content: $userAdminContent.html()
+ }, {
+ tag: 'a',
+ attributes: {'class': 'changeUserName'},
+ content: 'Change username'
+ }, {
+ tag: 'a',
+ attributes: {'class': 'login'}, //TODO
+ content: 'Login'
+ }, {
+ tag: 'a',
+ attributes: {'class': 'logout'}, //TODO
+ content: 'Logout'
+ }];
+ var $icon = $('', {'class': 'fa fa-user'});
+ var $button = $('').append($icon).append($displayedName.clone());
+ if (account) {
+ $button.append('(' + accountName + ')');
+ }
+ var dropdownConfig = {
+ text: $button.html(), // Button initial text
+ options: options, // Entries displayed in the menu
+ left: true, // Open to the left of the button
+ };
+ var $userAdmin = Cryptpad.createDropdown(dropdownConfig);
+ $userContainer.append($userAdmin);
+
+ $userAdmin.find('a.logout').click(function (e) {
+ Cryptpad.logout();
+ });
+ if (config.userName && config.userName.setName && config.userName.lastName) {
+ $userAdmin.find('a.changeUserName').click(function (e) {
+ Cryptpad.prompt(Messages.changeNamePrompt, config.userName.lastName.lastName || '', function (newName) {
+ config.userName.setName(newName);
+ });
+ });
+ }
return $userContainer;
};
@@ -427,7 +480,7 @@ define([
var $titleElement = createTitle(toolbar.find('.' + TOP_CLS), readOnly, config.title, Cryptpad);
var $linkElement = createLinkToMain(toolbar.find('.' + TOP_CLS));
var lagElement = createLagElement();
- var $userAdminElement = createUserAdmin(toolbar.find('.' + TOP_CLS), lagElement, Cryptpad);
+ var $userAdminElement = createUserAdmin(toolbar.find('.' + TOP_CLS), config, lagElement, Cryptpad);
var spinner = createSpinner($userAdminElement);
var userData = config.userData;
// readOnly = 1 (readOnly enabled), 0 (disabled), -1 (old pad without readOnly mode)
@@ -465,14 +518,11 @@ define([
}
// Update user list
- if (config.userData) {
+ if (userData) {
userList.change.push(function (newUserData) {
var users = userList.users;
if (users.indexOf(myUserName) !== -1) { connected = true; }
if (!connected) { return; }
- /*if (newUserData) { // Someone has changed his name/color
- userData = newUserData;
- }*/
checkSynchronizing(users, myUserName, $stateElement);
updateUserList(myUserName, userListElement, users, userData, readOnly, $userAdminElement);
});
diff --git a/www/drive/main.js b/www/drive/main.js
index e75a87082..17810848f 100644
--- a/www/drive/main.js
+++ b/www/drive/main.js
@@ -152,40 +152,16 @@ define([
});
};
- var setName = APP.setName = function (newName) {
- if (typeof(newName) !== 'string') { return; }
- var myUserNameTemp = Cryptpad.fixHTML(newName.trim());
- if(myUserNameTemp.length > 32) {
- myUserNameTemp = myUserNameTemp.substr(0, 32);
- }
- var myUserName = myUserNameTemp;
- Cryptpad.setAttribute('username', myUserName, function (err, data) {
- if (err) {
- logError("Couldn't set username", err);
- return;
- }
- APP.userName.lastName = myUserName;
- var $button = APP.$userNameButton;
- var $span = $('
').append($button.find('span').clone()).html();
- $button.html($span + myUserName);
- });
- };
-
- var $userBlock = APP.$bar.find('.' + Toolbar.constants.username);
-
// Store the object sent for the "change username" button so that we can update the field value correctly
var userNameButtonObject = APP.userName = {};
/* add a "change username" button */
if (!APP.readOnly) {
getLastName(function (err, lastName) {
- userNameButtonObject.lastName = lastName;
- var $username = APP.$userNameButton = Cryptpad.createButton('username', false, userNameButtonObject, setName).hide();
- $userBlock.append($username);
- $username.append(lastName);
- $username.show();
+ APP.userName.lastName = lastName;
+ APP.$displayName.text(lastName);
});
} else {
- $userBlock.html('' + Messages.readonly + '');
+ APP.$displayName.html('' + Messages.readonly + '');
}
// FILE MANAGER
@@ -1703,6 +1679,23 @@ define([
refresh();
};
+ var setName = APP.setName = function (newName) {
+ if (typeof(newName) !== 'string') { return; }
+ var myUserNameTemp = Cryptpad.fixHTML(newName.trim());
+ if(myUserNameTemp.length > 32) {
+ myUserNameTemp = myUserNameTemp.substr(0, 32);
+ }
+ var myUserName = myUserNameTemp;
+ Cryptpad.setAttribute('username', myUserName, function (err, data) {
+ if (err) {
+ logError("Couldn't set username", err);
+ return;
+ }
+ APP.userName.lastName = myUserName;
+ APP.$displayName.text(myUserName);
+ });
+ };
+
// don't initialize until the store is ready.
Cryptpad.ready(function () {
var storeObj = Cryptpad.getStore().getProxy && Cryptpad.getStore().getProxy().proxy ? Cryptpad.getStore().getProxy() : undefined;
@@ -1752,17 +1745,23 @@ define([
});
var userList = APP.userList = info.userList;
+ APP.userName = {};
var config = {
readOnly: readOnly,
ifrw: window,
common: Cryptpad,
+ userName: {
+ setName: setName,
+ lastName: APP.userName
+ },
hideShare: true
};
var toolbar = APP.toolbar = info.realtime.toolbar = Toolbar.create(APP.$bar, info.myID, info.realtime, info.getLag, userList, config);
var $bar = APP.$bar;
var $rightside = $bar.find('.' + Toolbar.constants.rightside);
- var $userBlock = $bar.find('.' + Toolbar.constants.username);
+ var $userBlock = $bar.find('.' + Toolbar.constants.userAdmin);
+ APP.$displayName = $bar.find('.' + Toolbar.constants.username);
if (APP.homePageIframe) {
var $linkToMain = $bar.find('.cryptpad-link a');
diff --git a/www/pad/main.js b/www/pad/main.js
index e4ef057cd..77bce183f 100644
--- a/www/pad/main.js
+++ b/www/pad/main.js
@@ -559,6 +559,14 @@ define([
var onInit = realtimeOptions.onInit = function (info) {
userList = info.userList;
+
+ module.userName = {};
+ // The lastName is stored in an object passed to the toolbar so that when the user clicks on
+ // the "change display name" button, the prompt already knows his current name
+ getLastName(function (err, lastName) {
+ module.userName.lastName = lastName;
+ });
+
var config = {
userData: userData,
readOnly: readOnly,
@@ -568,6 +576,10 @@ define([
defaultName: defaultName,
suggestName: suggestName
},
+ userName: {
+ setName: setName,
+ lastName: module.userName
+ },
common: Cryptpad
};
if (readOnly) {delete config.changeNameID; }
@@ -585,14 +597,7 @@ define([
editHash = Cryptpad.getEditHashFromKeys(info.channel, secret.keys);
}
- // Store the object sent for the "change username" button so that we can update the field value correctly
- var userNameButtonObject = module.userName = {};
- /* add a "change username" button */
- getLastName(function (err, lastName) {
- userNameButtonObject.lastName = lastName;
- var $username = module.$userNameButton = Cryptpad.createButton('username', false, userNameButtonObject, setName).hide();
- $userBlock.append($username);
- });
+
/* add an export button */
var $export = Cryptpad.createButton('export', true, {}, exportFile);
diff --git a/www/poll/main.js b/www/poll/main.js
index 5f76a60b7..0cd55c8ef 100644
--- a/www/poll/main.js
+++ b/www/poll/main.js
@@ -643,6 +643,14 @@ define([
});
userList = APP.userList = info.userList;
+
+ APP.userName = {};
+ // The lastName is stored in an object passed to the toolbar so that when the user clicks on
+ // the "change display name" button, the prompt already knows his current name
+ getLastName(function (err, lastName) {
+ APP.userName.lastName = lastName;
+ });
+
var config = {
userData: userData,
readOnly: readOnly,
@@ -651,6 +659,10 @@ define([
defaultName: defaultName,
suggestName: suggestName
},
+ userName: {
+ setName: setName,
+ lastName: APP.userName
+ },
ifrw: window,
common: Cryptpad,
};
@@ -662,15 +674,6 @@ define([
var $editShare = $bar.find('.' + Toolbar.constants.editShare);
var $viewShare = $bar.find('.' + Toolbar.constants.viewShare);
- // Store the object sent for the "change username" button so that we can update the field value correctly
- var userNameButtonObject = APP.userName = {};
- /* add a "change username" button */
- getLastName(function (err, lastName) {
- userNameButtonObject.lastName = lastName;
- var $username = APP.$userNameButton = Cryptpad.createButton('username', false, userNameButtonObject, setName).hide();
- $userBlock.append($username);
- });
-
/* add a forget button */
var forgetCb = function (err, title) {
if (err) { return; }
diff --git a/www/slide/main.js b/www/slide/main.js
index cd8180b0f..54e0e7a5f 100644
--- a/www/slide/main.js
+++ b/www/slide/main.js
@@ -409,6 +409,14 @@ define([
var onInit = config.onInit = function (info) {
userList = info.userList;
+
+ module.userName = {};
+ // The lastName is stored in an object passed to the toolbar so that when the user clicks on
+ // the "change display name" button, the prompt already knows his current name
+ getLastName(function (err, lastName) {
+ module.userName.lastName = lastName;
+ });
+
var config = {
userData: userData,
readOnly: readOnly,
@@ -418,6 +426,10 @@ define([
defaultName: defaultName,
suggestName: suggestName
},
+ userName: {
+ setName: setName,
+ lastName: module.userName
+ },
common: Cryptpad
};
if (readOnly) {delete config.changeNameID; }
@@ -435,15 +447,6 @@ define([
editHash = Cryptpad.getEditHashFromKeys(info.channel, secret.keys);
}
- // Store the object sent for the "change username" button so that we can update the field value correctly
- var userNameButtonObject = module.userName = {};
- /* add a "change username" button */
- getLastName(function (err, lastName) {
- userNameButtonObject.lastName = lastName;
- var $username = module.$userNameButton = Cryptpad.createButton('username', false, userNameButtonObject, setName).hide();
- $userBlock.append($username);
- });
-
/* add an export button */
var $export = Cryptpad.createButton('export', true, {}, exportText);
$rightside.append($export);