Merge pull request #21181 from owncloud/files-fixsharedrootdetection

Fix mount type root detection in web UI
This commit is contained in:
Thomas Müller 2015-12-14 13:50:35 +01:00
commit db41c4f4b5
2 changed files with 40 additions and 7 deletions

View File

@ -990,13 +990,16 @@
}
if (fileData.mountType) {
// FIXME: HACK: detect shared-root
if (fileData.mountType === 'shared' && this.dirInfo.mountType !== 'shared') {
// if parent folder isn't share, assume the displayed folder is a share root
fileData.mountType = 'shared-root';
} else if (fileData.mountType === 'external' && this.dirInfo.mountType !== 'external') {
// if parent folder isn't external, assume the displayed folder is the external storage root
fileData.mountType = 'external-root';
// dirInfo (parent) only exist for the "real" file list
if (this.dirInfo.id) {
// FIXME: HACK: detect shared-root
if (fileData.mountType === 'shared' && this.dirInfo.mountType !== 'shared' && this.dirInfo.mountType !== 'shared-root') {
// if parent folder isn't share, assume the displayed folder is a share root
fileData.mountType = 'shared-root';
} else if (fileData.mountType === 'external' && this.dirInfo.mountType !== 'external' && this.dirInfo.mountType !== 'external-root') {
// if parent folder isn't external, assume the displayed folder is the external storage root
fileData.mountType = 'external-root';
}
}
tr.attr('data-mounttype', fileData.mountType);
}

View File

@ -2534,4 +2534,34 @@ describe('OCA.Files.FileList tests', function() {
expect(newFileMenuStub.notCalled).toEqual(true);
});
});
describe('mount type detection', function() {
function testMountType(dirInfoId, dirInfoMountType, inputMountType, expectedMountType) {
var $tr;
fileList.dirInfo.id = dirInfoId;
fileList.dirInfo.mountType = dirInfoMountType;
$tr = fileList.add({
type: 'dir',
mimetype: 'httpd/unix-directory',
name: 'test dir',
mountType: inputMountType
});
expect($tr.attr('data-mounttype')).toEqual(expectedMountType);
}
it('leaves mount type as is if no parent exists', function() {
testMountType(null, null, 'external', 'external');
testMountType(null, null, 'shared', 'shared');
});
it('detects share root if parent exists', function() {
testMountType(123, null, 'shared', 'shared-root');
testMountType(123, 'shared', 'shared', 'shared');
testMountType(123, 'shared-root', 'shared', 'shared');
});
it('detects external storage root if parent exists', function() {
testMountType(123, null, 'external', 'external-root');
testMountType(123, 'external', 'external', 'external');
testMountType(123, 'external-root', 'external', 'external');
});
});
});