Merge pull request #8861 from owncloud/share-overview-linklist
Added Shared with link sidebar section in files app
This commit is contained in:
commit
e0c4e960d9
|
@ -44,3 +44,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 by link')
|
||||
)
|
||||
);
|
||||
|
|
|
@ -55,6 +55,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 by link');
|
||||
this._linkFileList.$el.find('#emptycontent').text(t('files_sharing', 'You haven\'t shared any files by link yet.'));
|
||||
return this._linkFileList;
|
||||
},
|
||||
|
||||
removeSharingIn: function() {
|
||||
if (this._inFileList) {
|
||||
this._inFileList.$fileList.empty();
|
||||
|
@ -67,6 +86,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();
|
||||
|
@ -104,5 +129,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;
|
||||
}
|
||||
},
|
||||
|
||||
_renderRow: function() {
|
||||
|
@ -137,12 +142,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
|
||||
|
|
|
@ -417,4 +417,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