Merge pull request #13645 from owncloud/fix-breadcrumb-backslash

Parse backslash as directory separator in breadcrumb
This commit is contained in:
Morris Jobke 2015-02-20 13:36:38 +01:00
commit 7cb25149c8
4 changed files with 32 additions and 1 deletions

View file

@ -67,6 +67,7 @@
* @param dir path to be displayed as breadcrumb
*/
setDirectory: function(dir) {
dir = dir.replace(/\\/g, '/');
dir = dir || '/';
if (dir !== this.dir) {
this.dir = dir;

View file

@ -1009,6 +1009,7 @@
* @param changeUrl true to also update the URL, false otherwise (default)
*/
_setCurrentDir: function(targetDir, changeUrl) {
targetDir = targetDir.replace(/\\/g, '/');
var previousDir = this.getCurrentDirectory(),
baseDir = OC.basename(targetDir);

View file

@ -93,6 +93,31 @@ describe('OCA.Files.BreadCrumb tests', function() {
expect($crumbs.eq(3).find('img').length).toEqual(0);
expect($crumbs.eq(3).attr('data-dir')).toEqual('/somedir/with space/abc');
});
it('Renders backslashes as regular directory separator', function() {
var $crumbs;
bc.setDirectory('/somedir\\with/mixed\\separators');
$crumbs = bc.$el.find('.crumb');
expect($crumbs.length).toEqual(5);
expect($crumbs.eq(0).find('a').attr('href')).toEqual('/#0');
expect($crumbs.eq(0).find('img').length).toEqual(1);
expect($crumbs.eq(0).attr('data-dir')).toEqual('/');
expect($crumbs.eq(1).find('a').attr('href')).toEqual('/somedir#1');
expect($crumbs.eq(1).find('img').length).toEqual(0);
expect($crumbs.eq(1).attr('data-dir')).toEqual('/somedir');
expect($crumbs.eq(2).find('a').attr('href')).toEqual('/somedir/with#2');
expect($crumbs.eq(2).find('img').length).toEqual(0);
expect($crumbs.eq(2).attr('data-dir')).toEqual('/somedir/with');
expect($crumbs.eq(3).find('a').attr('href')).toEqual('/somedir/with/mixed#3');
expect($crumbs.eq(3).find('img').length).toEqual(0);
expect($crumbs.eq(3).attr('data-dir')).toEqual('/somedir/with/mixed');
expect($crumbs.eq(4).find('a').attr('href')).toEqual('/somedir/with/mixed/separators#4');
expect($crumbs.eq(4).find('img').length).toEqual(0);
expect($crumbs.eq(4).attr('data-dir')).toEqual('/somedir/with/mixed/separators');
});
});
describe('Events', function() {
it('Calls onClick handler when clicking on a crumb', function() {

View file

@ -1221,7 +1221,7 @@ describe('OCA.Files.FileList tests', function() {
"Content-Type": "application/json"
},
JSON.stringify(data)
]);
]);
});
it('fetches file list from server and renders it when reload() is called', function() {
fileList.reload();
@ -1242,6 +1242,10 @@ describe('OCA.Files.FileList tests', function() {
expect(OC.parseQueryString(query)).toEqual({'dir': '/anothersubdir', sort: 'name', sortdirection: 'asc'});
fakeServer.respond();
});
it('converts backslashes to slashes when calling changeDirectory()', function() {
fileList.changeDirectory('/another\\subdir');
expect(fileList.getCurrentDirectory()).toEqual('/another/subdir');
});
it('switches to root dir when current directory does not exist', function() {
fakeServer.respondWith(/\/index\.php\/apps\/files\/ajax\/list.php\?dir=%2funexist/, [
404, {