diff options
author | Arthur Schiwon <blizzz@owncloud.com> | 2015-09-02 13:06:00 +0200 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2015-09-16 07:23:27 +0200 |
commit | 44ecdde10d347dc0e77576b35dc3d066dfc0fce6 (patch) | |
tree | d29804f71574832ae47514568b3a6e6716db7ea3 /core/js | |
parent | 5db1db38efffc2110e34886263f3a1117fe8efa5 (diff) | |
download | nextcloud-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.js | 41 | ||||
-rw-r--r-- | core/js/shareitemmodel.js | 4 |
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 }; |