diff options
Diffstat (limited to 'apps/files_sharing/js')
-rw-r--r-- | apps/files_sharing/js/app.js | 36 | ||||
-rw-r--r-- | apps/files_sharing/js/sharedfilelist.js | 133 |
2 files changed, 116 insertions, 53 deletions
diff --git a/apps/files_sharing/js/app.js b/apps/files_sharing/js/app.js index f63410bc9bf..76d52cfe9e0 100644 --- a/apps/files_sharing/js/app.js +++ b/apps/files_sharing/js/app.js @@ -21,6 +21,7 @@ OCA.Sharing.App = { _inFileList: null, _outFileList: null, + _overviewFileList: null, initSharingIn: function($el) { if (this._inFileList) { @@ -116,6 +117,28 @@ OCA.Sharing.App = { return this._deletedFileList; }, + initShareingOverview: function($el) { + if (this._overviewFileList) { + return this._overviewFileList; + } + this._overviewFileList = new OCA.Sharing.FileList( + $el, + { + id: 'shares.overview', + scrollContainer: $('#app-content'), + config: OCA.Files.App.getFilesConfig(), + isOverview: true + } + ); + + this._extendFileList(this._overviewFileList); + this._overviewFileList.appName = t('files_sharing', 'Shares'); + this._overviewFileList.$el.find('#emptycontent').html('<div class="icon-share"></div>' + + '<h2>' + t('files_sharing', 'No shares') + '</h2>' + + '<p>' + t('files_sharing', 'Shares will show up here') + '</p>'); + return this._overviewFileList; + }, + removeSharingIn: function() { if (this._inFileList) { this._inFileList.$fileList.empty(); @@ -140,6 +163,12 @@ OCA.Sharing.App = { } }, + removeSharingOverview: function() { + if (this._overviewFileList) { + this._overviewFileList.$fileList.empty(); + } + }, + /** * Destroy the app */ @@ -152,6 +181,7 @@ OCA.Sharing.App = { this._inFileList = null; this._outFileList = null; this._linkFileList = null; + this._overviewFileList = null; delete this._globalActionsInitialized; }, @@ -252,4 +282,10 @@ $(document).ready(function() { $('#app-content-deletedshares').on('hide', function() { OCA.Sharing.App.removeSharingDeleted(); }); + $('#app-content-shareoverview').on('show', function(e) { + OCA.Sharing.App.initShareingOverview($(e.target)); + }); + $('#app-content-shareoverview').on('hide', function() { + OCA.Sharing.App.removeSharingOverview(); + }); }); diff --git a/apps/files_sharing/js/sharedfilelist.js b/apps/files_sharing/js/sharedfilelist.js index 973d2120b16..71192497143 100644 --- a/apps/files_sharing/js/sharedfilelist.js +++ b/apps/files_sharing/js/sharedfilelist.js @@ -40,6 +40,7 @@ _showDeleted: false, _clientSideSort: true, _allowSelection: false, + _isOverview: false, /** * @private @@ -60,6 +61,9 @@ if (options && options.showDeleted) { this._showDeleted = true; } + if (options && options.isOverview) { + this._isOverview = true; + } }, _renderRow: function() { @@ -191,55 +195,62 @@ // there is only root this._setCurrentDir('/', false); + var promises = []; + var deletedShares = { + url: OC.linkToOCS('apps/files_sharing/api/v1', 2) + 'deletedshares', + /* jshint camelcase: false */ + data: { + format: 'json', + include_tags: true + }, + type: 'GET', + beforeSend: function (xhr) { + xhr.setRequestHeader('OCS-APIREQUEST', 'true'); + }, + }; + + var shares = { + url: OC.linkToOCS('apps/files_sharing/api/v1') + 'shares', + /* jshint camelcase: false */ + data: { + format: 'json', + shared_with_me: this._sharedWithUser !== false, + include_tags: true + }, + type: 'GET', + beforeSend: function (xhr) { + xhr.setRequestHeader('OCS-APIREQUEST', 'true'); + }, + }; + + var remoteShares = { + url: OC.linkToOCS('apps/files_sharing/api/v1') + 'remote_shares', + /* jshint camelcase: false */ + data: { + format: 'json', + include_tags: true + }, + type: 'GET', + beforeSend: function (xhr) { + xhr.setRequestHeader('OCS-APIREQUEST', 'true'); + }, + }; + + // Add the proper ajax requests to the list and run them + // and make sure we have 2 promises if (this._showDeleted) { - var shares = $.ajax({ - url: OC.linkToOCS('apps/files_sharing/api/v1', 2) + 'deletedshares', - /* jshint camelcase: false */ - data: { - format: 'json', - include_tags: true - }, - type: 'GET', - beforeSend: function(xhr) { - xhr.setRequestHeader('OCS-APIREQUEST', 'true'); - }, - }); - } else { - var shares = $.ajax({ - url: OC.linkToOCS('apps/files_sharing/api/v1') + 'shares', - /* jshint camelcase: false */ - data: { - format: 'json', - shared_with_me: !!this._sharedWithUser, - include_tags: true - }, - type: 'GET', - beforeSend: function(xhr) { - xhr.setRequestHeader('OCS-APIREQUEST', 'true'); - }, - }); - } - var promises = []; - promises.push(shares); - - if (!!this._sharedWithUser) { - var remoteShares = $.ajax({ - url: OC.linkToOCS('apps/files_sharing/api/v1') + 'remote_shares', - /* jshint camelcase: false */ - data: { - format: 'json', - include_tags: true - }, - type: 'GET', - beforeSend: function(xhr) { - xhr.setRequestHeader('OCS-APIREQUEST', 'true'); - }, - }); - promises.push(remoteShares); + promises.push($.ajax(deletedShares)); } else { - //Push empty promise so callback gets called the same way - promises.push($.Deferred().resolve()); + promises.push($.ajax(shares)); + + if (this._sharedWithUser !== false || this._isOverview) { + promises.push($.ajax(remoteShares)); + } + if (this._isOverview) { + shares.data.shared_with_me = !shares.data.shared_with_me + promises.push($.ajax(shares)); + } } this._reloadCall = $.when.apply($, promises); @@ -247,7 +258,7 @@ return this._reloadCall.then(callBack, callBack); }, - reloadCallback: function(shares, remoteShares) { + reloadCallback: function(shares, remoteShares, additionnalShares) { delete this._reloadCall; this.hideMask(); @@ -257,14 +268,30 @@ var files = []; - if (shares[0].ocs && shares[0].ocs.data) { - files = files.concat(this._makeFilesFromShares(shares[0].ocs.data)); + // make sure to use the same format + if (shares[0] && shares[0].ocs) { + shares = shares[0]; + } + if (remoteShares && remoteShares[0] && remoteShares[0].ocs) { + remoteShares = remoteShares[0]; + } + if (additionnalShares && additionnalShares[0] && additionnalShares[0].ocs) { + additionnalShares = additionnalShares[0]; + } + + if (shares.ocs && shares.ocs.data) { + files = files.concat(this._makeFilesFromShares(shares.ocs.data, this._sharedWithUser)); } - if (remoteShares && remoteShares[0].ocs && remoteShares[0].ocs.data) { - files = files.concat(this._makeFilesFromRemoteShares(remoteShares[0].ocs.data)); + if (remoteShares && remoteShares.ocs && remoteShares.ocs.data) { + files = files.concat(this._makeFilesFromRemoteShares(remoteShares.ocs.data)); } + if (additionnalShares && additionnalShares && additionnalShares.ocs && additionnalShares.ocs.data) { + files = files.concat(this._makeFilesFromShares(additionnalShares.ocs.data, !this._sharedWithUser)); + } + + this.setFiles(files); return true; }, @@ -303,7 +330,7 @@ * @param {Array} data OCS API share array * @return {Array.<OCA.Sharing.SharedFileInfo>} array of shared file info */ - _makeFilesFromShares: function(data) { + _makeFilesFromShares: function(data, sharedWithUser) { /* jshint camelcase: false */ var self = this; var files = data; @@ -339,7 +366,7 @@ stime: share.stime * 1000, expiration: share.expiration, }; - if (self._sharedWithUser) { + if (sharedWithUser) { file.shareOwner = share.displayname_owner; file.shareOwnerId = share.uid_owner; file.name = OC.basename(share.file_target); |