aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_sharing/js
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files_sharing/js')
-rw-r--r--apps/files_sharing/js/app.js36
-rw-r--r--apps/files_sharing/js/sharedfilelist.js133
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);