Merge pull request #405 from owncloud/group-users

Group members by userId. Ref #125
pull/1/head
VicDeo 10 years ago
commit 4f61ee2a5e

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

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

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

@ -1,34 +0,0 @@
diff --git b/js/3rdparty/webodf/editor/MemberListView.js a/js/3rdparty/webodf/editor/MemberListView.js
index 83074ba..9f604c7 100644
--- b/js/3rdparty/webodf/editor/MemberListView.js
+++ a/js/3rdparty/webodf/editor/MemberListView.js
@@ -76,6 +76,11 @@ define("webodf/editor/MemberListView",
node.src = memberDetails.imageUrl;
// update border color
node.style.borderColor = memberDetails.color;
+ } else if (node.localName === "span" && memberDetails.imageUrl){
+ try {
+ $(node).avatar(memberDetails.imageUrl, 60);
+ } catch (e){}
+ node.style.borderColor = memberDetails.color;
} else if (node.localName === "div") {
node.setAttribute('fullname', memberDetails.fullName);
}
@@ -95,7 +100,7 @@ define("webodf/editor/MemberListView",
var doc = memberListDiv.ownerDocument,
htmlns = doc.documentElement.namespaceURI,
avatarDiv = doc.createElementNS(htmlns, "div"),
- imageElement = doc.createElement("img"),
+ imageElement = doc.createElement("span"),
fullnameNode = doc.createElement("div");
avatarDiv.className = "memberListButton";
@@ -113,7 +118,7 @@ define("webodf/editor/MemberListView",
avatarDiv.onclick = function () {
var caret = editorSession.sessionView.getCaret(memberId);
if (caret) {
- caret.toggleHandleVisibility();
+ //caret.toggleHandleVisibility();
}
};
memberListDiv.appendChild(avatarDiv);

@ -1,10 +0,0 @@
--- MemberListView-old.js 2014-03-21 20:54:57.764793256 +0300
+++ MemberListView.js 2014-03-21 20:55:12.761110324 +0300
@@ -116,6 +116,7 @@
//avatar.getCaret().hideHandle();
};
avatarDiv.onclick = function () {
+ documentsMain.onNickChange(memberId, fullnameNode);
var caret = editorSession.sessionView.getCaret(memberId);
if (caret) {
//caret.toggleHandleVisibility();

@ -0,0 +1,91 @@
diff --git a/js/3rdparty/webodf/editor/MemberListView.js b/js/3rdparty/webodf/editor/MemberListView.js
--- a/js/3rdparty/webodf/editor/MemberListView.js 2014-11-19 19:53:11.134235411 +0300
+++ b/js/3rdparty/webodf/editor/MemberListView.js 2014-11-19 19:56:27.562381909 +0300
@@ -69,6 +69,8 @@
while (node) {
if (node.memberId === memberId) {
+ node.setAttribute('uid', memberDetails.uid);
+ node.setAttribute('count', 1);
node = node.firstChild;
while (node) {
if (node.localName === "img") {
@@ -76,6 +78,11 @@
node.src = memberDetails.imageUrl;
// update border color
node.style.borderColor = memberDetails.color;
+ } else if (node.localName === "span" && memberDetails.imageUrl){
+ try {
+ $(node).avatar(memberDetails.imageUrl, 60);
+ } catch (e){}
+ node.style.borderColor = memberDetails.color;
} else if (node.localName === "div") {
node.setAttribute('fullname', memberDetails.fullName);
}
@@ -95,7 +102,7 @@
var doc = memberListDiv.ownerDocument,
htmlns = doc.documentElement.namespaceURI,
avatarDiv = doc.createElementNS(htmlns, "div"),
- imageElement = doc.createElement("img"),
+ imageElement = doc.createElement("span"),
fullnameNode = doc.createElement("div");
avatarDiv.className = "memberListButton";
@@ -111,12 +118,15 @@
//avatar.getCaret().hideHandle();
};
avatarDiv.onclick = function () {
- var caret = editorSession.sessionView.getCaret(memberId);
- if (caret) {
- caret.toggleHandleVisibility();
+ if (memberId === editorSession.sessionController.getInputMemberId()){
+ documentsMain.onNickChange(memberId, fullnameNode);
}
};
- memberListDiv.appendChild(avatarDiv);
+ if (memberId === editorSession.sessionController.getInputMemberId()){
+ memberListDiv.insertBefore(avatarDiv, memberListDiv.firstChild);
+ } else {
+ memberListDiv.appendChild(avatarDiv);
+ }
}
/**
@@ -127,7 +137,12 @@
var node = memberListDiv.firstChild;
while (node) {
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;
}
node = node.nextSibling;
@@ -140,8 +155,21 @@
*/
function addMember(memberId) {
var member = editorSession.getMember(memberId),
- properties = member.getProperties();
- createAvatarButton(memberId);
+ properties = member.getProperties(),
+ 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);
}

@ -32,8 +32,7 @@ cp "$WEBODF_BUILDDIR"/programs/editor/editor.css ./css/3rdparty/webodf
# patches against upstream
patch -p1 -i src/patches/fontsCssPath.patch
patch -p1 -i src/patches/hideCaretAvatar.patch
patch -p1 -i src/patches/MemberListView-OCavatar.patch
patch -p1 -i src/patches/MemberListView-OCnick.patch
patch -p1 -i src/patches/MemberListView.js.patch
patch -p1 -i src/patches/keepBodyStyle.patch

Loading…
Cancel
Save