Group members by userId. Ref #125

This commit is contained in:
Victor Dubiniuk 2014-11-19 03:37:09 +03:00
parent 46f141ab68
commit 5cef103648
3 changed files with 53 additions and 34 deletions

View File

@ -69,6 +69,8 @@ define("webodf/editor/MemberListView",
while (node) { while (node) {
if (node.memberId === memberId) { if (node.memberId === memberId) {
node.setAttribute('uid', memberDetails.uid);
node.setAttribute('count', 1);
node = node.firstChild; node = node.firstChild;
while (node) { while (node) {
if (node.localName === "img") { if (node.localName === "img") {
@ -76,11 +78,11 @@ define("webodf/editor/MemberListView",
node.src = memberDetails.imageUrl; node.src = memberDetails.imageUrl;
// update border color // update border color
node.style.borderColor = memberDetails.color; node.style.borderColor = memberDetails.color;
} else if (node.localName === "span" && memberDetails.imageUrl){ } else if (node.localName === "span" && memberDetails.imageUrl){
try { try {
$(node).avatar(memberDetails.imageUrl, 60); $(node).avatar(memberDetails.imageUrl, 60);
} catch (e){} } catch (e){}
node.style.borderColor = memberDetails.color; node.style.borderColor = memberDetails.color;
} else if (node.localName === "div") { } else if (node.localName === "div") {
node.setAttribute('fullname', memberDetails.fullName); node.setAttribute('fullname', memberDetails.fullName);
} }
@ -119,10 +121,6 @@ define("webodf/editor/MemberListView",
if (memberId === editorSession.sessionController.getInputMemberId()){ if (memberId === editorSession.sessionController.getInputMemberId()){
documentsMain.onNickChange(memberId, fullnameNode); documentsMain.onNickChange(memberId, fullnameNode);
} }
var caret = editorSession.sessionView.getCaret(memberId);
if (caret) {
//caret.toggleHandleVisibility();
}
}; };
if (memberId === editorSession.sessionController.getInputMemberId()){ if (memberId === editorSession.sessionController.getInputMemberId()){
memberListDiv.insertBefore(avatarDiv, memberListDiv.firstChild); memberListDiv.insertBefore(avatarDiv, memberListDiv.firstChild);
@ -139,7 +137,12 @@ define("webodf/editor/MemberListView",
var node = memberListDiv.firstChild; var node = memberListDiv.firstChild;
while (node) { while (node) {
if (node.memberId === memberId) { if (node.memberId === memberId) {
memberListDiv.removeChild(node); var count = parseInt(node.getAttribute('count'));
if (count>1){
node.setAttribute('count', count-1);
} else {
memberListDiv.removeChild(node);
}
return; return;
} }
node = node.nextSibling; node = node.nextSibling;
@ -152,8 +155,21 @@ define("webodf/editor/MemberListView",
*/ */
function addMember(memberId) { function addMember(memberId) {
var member = editorSession.getMember(memberId), var member = editorSession.getMember(memberId),
properties = member.getProperties(); properties = member.getProperties(),
createAvatarButton(memberId); node = memberListDiv.firstChild,
found = false;
while (node) {
if (node.getAttribute('uid') === properties.uid) {
var count = parseInt(node.getAttribute('count'));
node.setAttribute('count', count+1);
found = true;
break;
}
node = node.nextSibling;
}
if (!found){
createAvatarButton(memberId);
}
updateAvatarButton(memberId, properties); updateAvatarButton(memberId, properties);
} }

View File

@ -86,7 +86,7 @@ class Op extends \OCA\Documents\Db {
return $result->fetchAll(); return $result->fetchAll();
} }
public function addMember($esId, $memberId, $fullName, $color, $imageUrl){ public function addMember($esId, $memberId, $fullName, $userId, $color, $imageUrl){
$op = array( $op = array(
'optype' => 'AddMember', 'optype' => 'AddMember',
'memberid' => (string) $memberId, 'memberid' => (string) $memberId,
@ -94,7 +94,8 @@ class Op extends \OCA\Documents\Db {
'setProperties' => array( 'setProperties' => array(
'fullName' => $fullName, 'fullName' => $fullName,
'color' => $color, 'color' => $color,
'imageUrl' => $imageUrl 'imageUrl' => $imageUrl,
'uid' => $userId,
) )
); );
$this->insertOp($esId, $memberId, $op); $this->insertOp($esId, $memberId, $op);

View File

@ -79,28 +79,30 @@ class Session extends \OCA\Documents\Db {
$file->getToken() $file->getToken()
)); ));
if ($member->insert()){ if (!$member->insert()){
// Do we have OC_Avatar in out disposal? throw new \Exception('Failed to add member into database');
if (!class_exists('\OC_Avatar') || \OC_Config::getValue('enable_avatars', true) !== true){ }
$imageUrl = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==';
} else {
$imageUrl = $uid;
}
$displayName = $file->isPublicShare() ? $uid . ' ' . \OCA\Documents\Db\Member::getGuestPostfix() : \OCP\User::getDisplayName($uid); // Do we have OC_Avatar in out disposal?
if (\OC_Config::getValue('enable_avatars', true) !== true){
$imageUrl = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==';
} else {
$imageUrl = $uid;
}
$sessionData['member_id'] = (string) $member->getLastInsertId(); $displayName = $file->isPublicShare() ? $uid . ' ' . \OCA\Documents\Db\Member::getGuestPostfix() : \OCP\User::getDisplayName($uid);
$op = new \OCA\Documents\Db\Op(); $userId = $file->isPublicShare() ? $displayName : \OCP\User::getUser();
$op->addMember(
$sessionData['member_id'] = (string) $member->getLastInsertId();
$op = new \OCA\Documents\Db\Op();
$op->addMember(
$sessionData['es_id'], $sessionData['es_id'],
$sessionData['member_id'], $sessionData['member_id'],
$displayName, $displayName,
$userId,
$memberColor, $memberColor,
$imageUrl $imageUrl
); );
} else {
throw new \Exception('Failed to add member into database');
}
$sessionData['title'] = basename($path); $sessionData['title'] = basename($path);
$fileInfo = $ownerView->getFileInfo($path); $fileInfo = $ownerView->getFileInfo($path);