Merge pull request #9264 from owncloud/share-linkshareusefilesource
Use file_source to find matching share for nested link shares
This commit is contained in:
commit
75222501ee
|
@ -374,7 +374,7 @@ OC.Share={
|
||||||
if (data.shares) {
|
if (data.shares) {
|
||||||
$.each(data.shares, function(index, share) {
|
$.each(data.shares, function(index, share) {
|
||||||
if (share.share_type == OC.Share.SHARE_TYPE_LINK) {
|
if (share.share_type == OC.Share.SHARE_TYPE_LINK) {
|
||||||
if ( !('file_target' in share) ) {
|
if (itemSource === share.file_source || itemSource === share.item_source) {
|
||||||
OC.Share.showLink(share.token, share.share_with, itemSource);
|
OC.Share.showLink(share.token, share.share_with, itemSource);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -620,6 +620,7 @@ OC.Share={
|
||||||
var file = $('#dir').val() + '/' + filename;
|
var file = $('#dir').val() + '/' + filename;
|
||||||
}
|
}
|
||||||
file = '/'+OC.currentUser+'/files'+file;
|
file = '/'+OC.currentUser+'/files'+file;
|
||||||
|
// TODO: use oc webroot ?
|
||||||
var link = parent.location.protocol+'//'+location.host+OC.linkTo('', 'public.php')+'?service=files&'+type+'='+encodeURIComponent(file);
|
var link = parent.location.protocol+'//'+location.host+OC.linkTo('', 'public.php')+'?service=files&'+type+'='+encodeURIComponent(file);
|
||||||
} else {
|
} else {
|
||||||
//TODO add path param when showing a link to file in a subfolder of a public link share
|
//TODO add path param when showing a link to file in a subfolder of a public link share
|
||||||
|
@ -630,6 +631,7 @@ OC.Share={
|
||||||
service=linkSharetype;
|
service=linkSharetype;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: use oc webroot ?
|
||||||
var link = parent.location.protocol+'//'+location.host+OC.linkTo('', 'public.php')+'?service='+service+'&t='+token;
|
var link = parent.location.protocol+'//'+location.host+OC.linkTo('', 'public.php')+'?service='+service+'&t='+token;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,7 +96,6 @@ describe('OC.Share tests', function() {
|
||||||
describe('Share with link', function() {
|
describe('Share with link', function() {
|
||||||
// TODO: test ajax calls
|
// TODO: test ajax calls
|
||||||
// TODO: test password field visibility (whenever enforced or not)
|
// TODO: test password field visibility (whenever enforced or not)
|
||||||
// TODO: check public upload visibility based on config
|
|
||||||
it('shows share with link checkbox when allowed', function() {
|
it('shows share with link checkbox when allowed', function() {
|
||||||
$('#allowShareWithLink').val('yes');
|
$('#allowShareWithLink').val('yes');
|
||||||
OC.Share.showDropDown(
|
OC.Share.showDropDown(
|
||||||
|
@ -121,6 +120,151 @@ describe('OC.Share tests', function() {
|
||||||
);
|
);
|
||||||
expect($('#dropdown #linkCheckbox').length).toEqual(0);
|
expect($('#dropdown #linkCheckbox').length).toEqual(0);
|
||||||
});
|
});
|
||||||
|
it('shows populated link share when a link share exists', function() {
|
||||||
|
loadItemStub.returns({
|
||||||
|
reshare: [],
|
||||||
|
/* jshint camelcase: false */
|
||||||
|
shares: [{
|
||||||
|
displayname_owner: 'root',
|
||||||
|
expiration: null,
|
||||||
|
file_source: 123,
|
||||||
|
file_target: '/folder',
|
||||||
|
id: 20,
|
||||||
|
item_source: '123',
|
||||||
|
item_type: 'folder',
|
||||||
|
mail_send: '0',
|
||||||
|
parent: null,
|
||||||
|
path: '/folder',
|
||||||
|
permissions: OC.PERMISSION_READ,
|
||||||
|
share_type: OC.Share.SHARE_TYPE_LINK,
|
||||||
|
share_with: null,
|
||||||
|
stime: 1403884258,
|
||||||
|
storage: 1,
|
||||||
|
token: 'tehtoken',
|
||||||
|
uid_owner: 'root'
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
OC.Share.showDropDown(
|
||||||
|
'file',
|
||||||
|
123,
|
||||||
|
$container,
|
||||||
|
'http://localhost/dummylink',
|
||||||
|
31,
|
||||||
|
'folder'
|
||||||
|
);
|
||||||
|
expect($('#dropdown #linkCheckbox').prop('checked')).toEqual(true);
|
||||||
|
// this is how the OC.Share class does it...
|
||||||
|
var link = parent.location.protocol + '//' + location.host +
|
||||||
|
OC.linkTo('', 'public.php')+'?service=files&t=tehtoken';
|
||||||
|
expect($('#dropdown #linkText').val()).toEqual(link);
|
||||||
|
});
|
||||||
|
it('does not show populated link share when a link share exists for a different file', function() {
|
||||||
|
loadItemStub.returns({
|
||||||
|
reshare: [],
|
||||||
|
/* jshint camelcase: false */
|
||||||
|
shares: [{
|
||||||
|
displayname_owner: 'root',
|
||||||
|
expiration: null,
|
||||||
|
file_source: 123,
|
||||||
|
file_target: '/folder',
|
||||||
|
id: 20,
|
||||||
|
item_source: '123',
|
||||||
|
item_type: 'folder',
|
||||||
|
mail_send: '0',
|
||||||
|
parent: null,
|
||||||
|
path: '/folder',
|
||||||
|
permissions: OC.PERMISSION_READ,
|
||||||
|
share_type: OC.Share.SHARE_TYPE_LINK,
|
||||||
|
share_with: null,
|
||||||
|
stime: 1403884258,
|
||||||
|
storage: 1,
|
||||||
|
token: 'tehtoken',
|
||||||
|
uid_owner: 'root'
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
OC.Share.showDropDown(
|
||||||
|
'file',
|
||||||
|
456, // another file
|
||||||
|
$container,
|
||||||
|
'http://localhost/dummylink',
|
||||||
|
31,
|
||||||
|
'folder'
|
||||||
|
);
|
||||||
|
expect($('#dropdown #linkCheckbox').prop('checked')).toEqual(false);
|
||||||
|
});
|
||||||
|
it('shows correct link share when a nest link share exists along with parent one', function() {
|
||||||
|
loadItemStub.returns({
|
||||||
|
reshare: [],
|
||||||
|
/* jshint camelcase: false */
|
||||||
|
shares: [{
|
||||||
|
displayname_owner: 'root',
|
||||||
|
expiration: null,
|
||||||
|
file_source: 123,
|
||||||
|
file_target: '/folder',
|
||||||
|
id: 20,
|
||||||
|
item_source: '123',
|
||||||
|
item_type: 'file',
|
||||||
|
mail_send: '0',
|
||||||
|
parent: null,
|
||||||
|
path: '/folder',
|
||||||
|
permissions: OC.PERMISSION_READ,
|
||||||
|
share_type: OC.Share.SHARE_TYPE_LINK,
|
||||||
|
share_with: null,
|
||||||
|
stime: 1403884258,
|
||||||
|
storage: 1,
|
||||||
|
token: 'tehtoken',
|
||||||
|
uid_owner: 'root'
|
||||||
|
}, {
|
||||||
|
displayname_owner: 'root',
|
||||||
|
expiration: null,
|
||||||
|
file_source: 456,
|
||||||
|
file_target: '/file_in_folder.txt',
|
||||||
|
id: 21,
|
||||||
|
item_source: '456',
|
||||||
|
item_type: 'file',
|
||||||
|
mail_send: '0',
|
||||||
|
parent: null,
|
||||||
|
path: '/folder/file_in_folder.txt',
|
||||||
|
permissions: OC.PERMISSION_READ,
|
||||||
|
share_type: OC.Share.SHARE_TYPE_LINK,
|
||||||
|
share_with: null,
|
||||||
|
stime: 1403884509,
|
||||||
|
storage: 1,
|
||||||
|
token: 'anothertoken',
|
||||||
|
uid_owner: 'root'
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
|
||||||
|
// parent one
|
||||||
|
OC.Share.showDropDown(
|
||||||
|
'folder',
|
||||||
|
123,
|
||||||
|
$container,
|
||||||
|
'http://localhost/dummylink',
|
||||||
|
31,
|
||||||
|
'folder'
|
||||||
|
);
|
||||||
|
expect($('#dropdown #linkCheckbox').prop('checked')).toEqual(true);
|
||||||
|
// this is how the OC.Share class does it...
|
||||||
|
var link = parent.location.protocol + '//' + location.host +
|
||||||
|
OC.linkTo('', 'public.php')+'?service=files&t=tehtoken';
|
||||||
|
expect($('#dropdown #linkText').val()).toEqual(link);
|
||||||
|
|
||||||
|
// nested one
|
||||||
|
OC.Share.showDropDown(
|
||||||
|
'file',
|
||||||
|
456,
|
||||||
|
$container,
|
||||||
|
'http://localhost/dummylink',
|
||||||
|
31,
|
||||||
|
'file_in_folder.txt'
|
||||||
|
);
|
||||||
|
expect($('#dropdown #linkCheckbox').prop('checked')).toEqual(true);
|
||||||
|
// this is how the OC.Share class does it...
|
||||||
|
link = parent.location.protocol + '//' + location.host +
|
||||||
|
OC.linkTo('', 'public.php')+'?service=files&t=anothertoken';
|
||||||
|
expect($('#dropdown #linkText').val()).toEqual(link);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
describe('"sharesChanged" event', function() {
|
describe('"sharesChanged" event', function() {
|
||||||
var autocompleteOptions;
|
var autocompleteOptions;
|
||||||
|
|
Loading…
Reference in New Issue