Merge pull request #405 from owncloud/group-users
Group members by userId. Ref #125
This commit is contained in:
commit
4f61ee2a5e
26
js/3rdparty/webodf/editor/MemberListView.js
vendored
26
js/3rdparty/webodf/editor/MemberListView.js
vendored
@ -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") {
|
||||||
@ -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) {
|
||||||
|
var count = parseInt(node.getAttribute('count'));
|
||||||
|
if (count>1){
|
||||||
|
node.setAttribute('count', count-1);
|
||||||
|
} else {
|
||||||
memberListDiv.removeChild(node);
|
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(),
|
||||||
|
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);
|
createAvatarButton(memberId);
|
||||||
|
}
|
||||||
updateAvatarButton(memberId, properties);
|
updateAvatarButton(memberId, properties);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -79,15 +79,19 @@ class Session extends \OCA\Documents\Db {
|
|||||||
$file->getToken()
|
$file->getToken()
|
||||||
));
|
));
|
||||||
|
|
||||||
if ($member->insert()){
|
if (!$member->insert()){
|
||||||
|
throw new \Exception('Failed to add member into database');
|
||||||
|
}
|
||||||
|
|
||||||
// Do we have OC_Avatar in out disposal?
|
// Do we have OC_Avatar in out disposal?
|
||||||
if (!class_exists('\OC_Avatar') || \OC_Config::getValue('enable_avatars', true) !== true){
|
if (\OC_Config::getValue('enable_avatars', true) !== true){
|
||||||
$imageUrl = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==';
|
$imageUrl = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==';
|
||||||
} else {
|
} else {
|
||||||
$imageUrl = $uid;
|
$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();
|
$sessionData['member_id'] = (string) $member->getLastInsertId();
|
||||||
$op = new \OCA\Documents\Db\Op();
|
$op = new \OCA\Documents\Db\Op();
|
||||||
@ -95,12 +99,10 @@ class Session extends \OCA\Documents\Db {
|
|||||||
$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);
|
||||||
|
@ -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();
|
|
91
src/patches/MemberListView.js.patch
Normal file
91
src/patches/MemberListView.js.patch
Normal file
@ -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
|
# patches against upstream
|
||||||
patch -p1 -i src/patches/fontsCssPath.patch
|
patch -p1 -i src/patches/fontsCssPath.patch
|
||||||
patch -p1 -i src/patches/hideCaretAvatar.patch
|
patch -p1 -i src/patches/hideCaretAvatar.patch
|
||||||
patch -p1 -i src/patches/MemberListView-OCavatar.patch
|
patch -p1 -i src/patches/MemberListView.js.patch
|
||||||
patch -p1 -i src/patches/MemberListView-OCnick.patch
|
|
||||||
patch -p1 -i src/patches/keepBodyStyle.patch
|
patch -p1 -i src/patches/keepBodyStyle.patch
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user