summaryrefslogtreecommitdiffstats
path: root/core/js
diff options
context:
space:
mode:
authorArthur Schiwon <blizzz@owncloud.com>2015-09-02 13:06:00 +0200
committerVincent Petry <pvince81@owncloud.com>2015-09-16 07:23:27 +0200
commit44ecdde10d347dc0e77576b35dc3d066dfc0fce6 (patch)
treed29804f71574832ae47514568b3a6e6716db7ea3 /core/js
parent5db1db38efffc2110e34886263f3a1117fe8efa5 (diff)
downloadnextcloud-server-44ecdde10d347dc0e77576b35dc3d066dfc0fce6.tar.gz
nextcloud-server-44ecdde10d347dc0e77576b35dc3d066dfc0fce6.zip
sharee list view: better handle collections
Diffstat (limited to 'core/js')
-rw-r--r--core/js/sharedialogshareelistview.js41
-rw-r--r--core/js/shareitemmodel.js4
2 files changed, 37 insertions, 8 deletions
diff --git a/core/js/sharedialogshareelistview.js b/core/js/sharedialogshareelistview.js
index 8179926ad51..8e08e2b4f76 100644
--- a/core/js/sharedialogshareelistview.js
+++ b/core/js/sharedialogshareelistview.js
@@ -78,6 +78,9 @@
/** @type {boolean} **/
showLink: true,
+ /** @type {object} **/
+ _collections: {},
+
initialize: function(options) {
if(!_.isUndefined(options.configModel)) {
this.configModel = options.configModel;
@@ -91,6 +94,23 @@
});
},
+ processCollectionShare: function(shareIndex) {
+ var type = this.model.getCollectionType(shareIndex);
+ var id = this.model.getCollectionPath(shareIndex);
+ if(type !== 'file' && type !== 'folder') {
+ id = this.model.getCollectionSource(shareIndex);
+ }
+ var displayName = this.model.getShareWithDisplayName(shareIndex);
+ if(!_.isUndefined(this._collections[id])) {
+ this._collections[id].text = this._collections[id].text + ", " + displayName;
+ } else {
+ this._collections[id] = {};
+ this._collections[id].text = t('core', 'Shared in {item} with {user}', {'item': id, user: displayName});
+ this._collections[id].id = id;
+ this._collections[id].isCollection = true;
+ }
+ },
+
getCollectionObject: function(shareIndex) {
var type = this.model.getCollectionType(shareIndex);
var id = this.model.getCollectionPath(shareIndex);
@@ -119,7 +139,6 @@
shareWithDisplayName = shareWithDisplayName + " (" + t('core', 'remote') + ')';
}
-
return {
hasSharePermission: this.model.hasSharePermission(shareIndex),
hasEditPermission: this.model.hasEditPermission(shareIndex),
@@ -160,21 +179,34 @@
deletePermission: OC.PERMISSION_DELETE
};
+ this._collections = {};
+
// TODO: sharess must have following attributes
// isRemoteShare
- // isMailSent
if(!this.model.hasShares()) {
return [];
}
+ var shares = this.model.get('shares');
var list = [];
- for(var index in this.model.get('shares')) {
+ for(var index = 0; index < shares.length; index++) {
+
+ // #### FIXME: LEGACY ####
+ // this does not belong to a view
+ var shareType = this.model.getShareType(index);
+ if (!OC.Share.currentShares[shareType]) {
+ OC.Share.currentShares[shareType] = [];
+ }
+ OC.Share.currentShares[shareType].push(this.model.getShareWith(index));
+ // #### /FIXME: LEGACY ####
+
if(this.model.isCollection(index)) {
- list.unshift(this.getCollectionObject(index));
+ this.processCollectionShare(index);
} else {
list.push(_.extend(this.getShareeObject(index), universal))
}
+ list = _.union(_.values(this._collections), list);
}
return list;
@@ -182,7 +214,6 @@
render: function() {
var shareeListTemplate = this.template();
- var list = this.getShareeList();
this.$el.html(shareeListTemplate({
sharees: this.getShareeList()
}));
diff --git a/core/js/shareitemmodel.js b/core/js/shareitemmodel.js
index b5370faca0a..d4fbc3543a7 100644
--- a/core/js/shareitemmodel.js
+++ b/core/js/shareitemmodel.js
@@ -357,8 +357,6 @@
return {};
}
- console.log(data.shares);
-
var permissions = this.get('possiblePermissions');
if(!_.isUndefined(data.reshare) && !_.isUndefined(data.reshare.permissions)) {
permissions = permissions & data.reshare.permissions;
@@ -376,7 +374,7 @@
return {
reshare: data.reshare,
- shares: $.map(data.shares, function(value) { return [value]; }),
+ shares: _.toArray(data.shares),
permissions: permissions,
allowPublicUploadStatus: allowPublicUploadStatus
};