Added "Shared with link" sidebar section in files app
Added section to only show link shares. Please note that the filtering is currently done on the client side which might not be the most efficient way of doing it.
This commit is contained in:
parent
3a1994d001
commit
b3fdda1751
|
@ -41,3 +41,12 @@ OC_FileProxy::register(new OCA\Files\Share\Proxy());
|
|||
"name" => $l->t('Shared with others')
|
||||
)
|
||||
);
|
||||
\OCA\Files\App::getNavigationManager()->add(
|
||||
array(
|
||||
"id" => 'sharinglinks',
|
||||
"appname" => 'files_sharing',
|
||||
"script" => 'list.php',
|
||||
"order" => 20,
|
||||
"name" => $l->t('Shared with link')
|
||||
)
|
||||
);
|
||||
|
|
|
@ -53,6 +53,25 @@ OCA.Sharing.App = {
|
|||
return this._outFileList;
|
||||
},
|
||||
|
||||
initSharingLinks: function($el) {
|
||||
if (this._linkFileList) {
|
||||
return this._linkFileList;
|
||||
}
|
||||
this._linkFileList = new OCA.Sharing.FileList(
|
||||
$el,
|
||||
{
|
||||
scrollContainer: $('#app-content'),
|
||||
linksOnly: true,
|
||||
fileActions: this._createFileActions()
|
||||
}
|
||||
);
|
||||
|
||||
this._extendFileList(this._linkFileList);
|
||||
this._linkFileList.appName = t('files_sharing', 'Shared with link');
|
||||
this._linkFileList.$el.find('#emptycontent').text(t('files_sharing', 'You haven\'t shared any files with link yet.'));
|
||||
return this._linkFileList;
|
||||
},
|
||||
|
||||
removeSharingIn: function() {
|
||||
if (this._inFileList) {
|
||||
this._inFileList.$fileList.empty();
|
||||
|
@ -65,6 +84,12 @@ OCA.Sharing.App = {
|
|||
}
|
||||
},
|
||||
|
||||
removeSharingLinks: function() {
|
||||
if (this._linkFileList) {
|
||||
this._linkFileList.$fileList.empty();
|
||||
}
|
||||
},
|
||||
|
||||
_createFileActions: function() {
|
||||
// inherit file actions from the files app
|
||||
var fileActions = new OCA.Files.FileActions();
|
||||
|
@ -102,5 +127,11 @@ $(document).ready(function() {
|
|||
$('#app-content-sharingout').on('hide', function() {
|
||||
OCA.Sharing.App.removeSharingOut();
|
||||
});
|
||||
$('#app-content-sharinglinks').on('show', function(e) {
|
||||
OCA.Sharing.App.initSharingLinks($(e.target));
|
||||
});
|
||||
$('#app-content-sharinglinks').on('hide', function() {
|
||||
OCA.Sharing.App.removeSharingLinks();
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
* the files that the user shared with others (false).
|
||||
*/
|
||||
_sharedWithUser: false,
|
||||
_linksOnly: false,
|
||||
|
||||
initialize: function($el, options) {
|
||||
OCA.Files.FileList.prototype.initialize.apply(this, arguments);
|
||||
|
@ -33,9 +34,13 @@
|
|||
return;
|
||||
}
|
||||
|
||||
// TODO: consolidate both options
|
||||
if (options && options.sharedWithUser) {
|
||||
this._sharedWithUser = true;
|
||||
}
|
||||
if (options && options.linksOnly) {
|
||||
this._linksOnly = true;
|
||||
}
|
||||
},
|
||||
|
||||
_createRow: function(fileData) {
|
||||
|
@ -130,12 +135,20 @@
|
|||
* @return array of file info maps
|
||||
*/
|
||||
_makeFilesFromShares: function(data) {
|
||||
/* jshint camelcase: false */
|
||||
var self = this;
|
||||
var files = data;
|
||||
|
||||
if (this._linksOnly) {
|
||||
files = _.filter(data, function(share) {
|
||||
return share.share_type === OC.Share.SHARE_TYPE_LINK;
|
||||
});
|
||||
}
|
||||
|
||||
// OCS API uses non-camelcased names
|
||||
var files = _.chain(data)
|
||||
files = _.chain(files)
|
||||
// convert share data to file data
|
||||
.map(function(share) {
|
||||
/* jshint camelcase: false */
|
||||
var file = {
|
||||
id: share.file_source,
|
||||
mimetype: share.mimetype
|
||||
|
|
|
@ -409,4 +409,95 @@ describe('OCA.Sharing.FileList tests', function() {
|
|||
expect($tr.find('.nametext').text().trim()).toEqual('local name.txt');
|
||||
});
|
||||
});
|
||||
describe('loading file list for link shares', function() {
|
||||
var ocsResponse;
|
||||
|
||||
beforeEach(function() {
|
||||
fileList = new OCA.Sharing.FileList(
|
||||
$('#app-content-container'), {
|
||||
linksOnly: true
|
||||
}
|
||||
);
|
||||
|
||||
fileList.reload();
|
||||
|
||||
ocsResponse = {
|
||||
ocs: {
|
||||
meta: {
|
||||
status: 'ok',
|
||||
statuscode: 100,
|
||||
message: null
|
||||
},
|
||||
data: [{
|
||||
id: 7,
|
||||
item_type: 'file',
|
||||
item_source: 49,
|
||||
file_source: 49,
|
||||
path: '/local path/local name.txt',
|
||||
permissions: 1,
|
||||
stime: 11111,
|
||||
share_type: OC.Share.SHARE_TYPE_LINK,
|
||||
share_with: null,
|
||||
token: 'abc',
|
||||
mimetype: 'text/plain',
|
||||
uid_owner: 'user1',
|
||||
displayname_owner: 'User One'
|
||||
}]
|
||||
}
|
||||
};
|
||||
});
|
||||
it('render only link shares', function() {
|
||||
/* jshint camelcase: false */
|
||||
var request;
|
||||
ocsResponse.ocs.data.push({
|
||||
// non-link share
|
||||
id: 8,
|
||||
item_type: 'file',
|
||||
item_source: 49,
|
||||
file_source: 49,
|
||||
path: '/local path/local name.txt',
|
||||
permissions: 27,
|
||||
stime: 11111,
|
||||
share_type: OC.Share.SHARE_TYPE_USER,
|
||||
share_with: 'user2',
|
||||
share_with_displayname: 'User Two',
|
||||
mimetype: 'text/plain',
|
||||
uid_owner: 'user1',
|
||||
displayname_owner: 'User One'
|
||||
});
|
||||
expect(fakeServer.requests.length).toEqual(1);
|
||||
request = fakeServer.requests[0];
|
||||
expect(request.url).toEqual(
|
||||
OC.linkToOCS('apps/files_sharing/api/v1') +
|
||||
'shares?format=json&shared_with_me=false'
|
||||
);
|
||||
|
||||
fakeServer.requests[0].respond(
|
||||
200,
|
||||
{ 'Content-Type': 'application/json' },
|
||||
JSON.stringify(ocsResponse)
|
||||
);
|
||||
|
||||
// only renders the link share entry
|
||||
var $rows = fileList.$el.find('tbody tr');
|
||||
var $tr = $rows.eq(0);
|
||||
expect($rows.length).toEqual(1);
|
||||
expect($tr.attr('data-id')).toEqual('49');
|
||||
expect($tr.attr('data-type')).toEqual('file');
|
||||
expect($tr.attr('data-file')).toEqual('local name.txt');
|
||||
expect($tr.attr('data-path')).toEqual('/local path');
|
||||
expect($tr.attr('data-size')).not.toBeDefined();
|
||||
expect($tr.attr('data-permissions')).toEqual('31'); // read and delete
|
||||
expect($tr.attr('data-mime')).toEqual('text/plain');
|
||||
expect($tr.attr('data-mtime')).toEqual('11111000');
|
||||
expect($tr.attr('data-share-owner')).not.toBeDefined();
|
||||
expect($tr.attr('data-share-id')).toEqual('7');
|
||||
expect($tr.find('a.name').attr('href')).toEqual(
|
||||
OC.webroot +
|
||||
'/index.php/apps/files/ajax/download.php' +
|
||||
'?dir=%2Flocal%20path&files=local%20name.txt');
|
||||
|
||||
expect($tr.find('.nametext').text().trim()).toEqual('local name.txt');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue