diff options
author | Lukas Reschke <lukas@statuscode.ch> | 2014-06-23 22:48:46 +0200 |
---|---|---|
committer | Lukas Reschke <lukas@statuscode.ch> | 2014-06-23 22:48:46 +0200 |
commit | e070e292bfddc89ddcda251a5f6141e855ef284a (patch) | |
tree | aa99de584e810332c15c88da1b43e70967ea555b | |
parent | 167ba14af76dcf88340cbe56c513be367cfc13f4 (diff) | |
parent | 7d4747ea1692f42b9ae007cf5da654a95c610ec3 (diff) | |
download | nextcloud-server-e070e292bfddc89ddcda251a5f6141e855ef284a.tar.gz nextcloud-server-e070e292bfddc89ddcda251a5f6141e855ef284a.zip |
Merge pull request #9170 from owncloud/files-renamevalidationblur
Fix blurring of invalid file name on rename
-rw-r--r-- | apps/files/js/filelist.js | 16 | ||||
-rw-r--r-- | apps/files/tests/js/filelistSpec.js | 41 |
2 files changed, 53 insertions, 4 deletions
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index d5e16f9e20e..55afedb2065 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -1195,9 +1195,20 @@ return true; }; + function restore() { + input.tipsy('hide'); + tr.data('renaming',false); + form.remove(); + td.children('a.name').show(); + } + form.submit(function(event) { event.stopPropagation(); event.preventDefault(); + if (input.hasClass('error')) { + return; + } + try { var newName = input.val(); input.tipsy('hide'); @@ -1267,10 +1278,7 @@ input.addClass('error'); } if (event.keyCode === 27) { - input.tipsy('hide'); - tr.data('renaming',false); - form.remove(); - td.children('a.name').show(); + restore(); } }); input.click(function(event) { diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js index 5b72a1355cf..dea7c48e05e 100644 --- a/apps/files/tests/js/filelistSpec.js +++ b/apps/files/tests/js/filelistSpec.js @@ -597,6 +597,47 @@ describe('OCA.Files.FileList tests', function() { expect(fileList.$fileList.find('input.filename').length).toEqual(0); expect(fileList.$fileList.find('form').length).toEqual(0); }); + it('Validates the file name', function() { + var $input, $tr; + + for (var i = 0; i < testFiles.length; i++) { + fileList.add(testFiles[i], {silent: true}); + } + + // trigger rename prompt + fileList.rename('One.txt'); + $input = fileList.$fileList.find('input.filename'); + $input.val('Two.jpg'); + + // simulate key to trigger validation + $input.trigger(new $.Event('keyup', {keyCode: 97})); + + // input is still there with error + expect(fileList.$fileList.find('input.filename').length).toEqual(1); + expect(fileList.$fileList.find('input.filename').hasClass('error')).toEqual(true); + + // trigger submit does not send server request + $input.closest('form').trigger('submit'); + expect(fakeServer.requests.length).toEqual(0); + + // simulate escape key + $input.trigger(new $.Event('keyup', {keyCode: 27})); + + // element is added back with the correct name + $tr = fileList.findFileEl('One.txt'); + expect($tr.length).toEqual(1); + expect($tr.find('a .nametext').text().trim()).toEqual('One.txt'); + expect($tr.find('a.name').is(':visible')).toEqual(true); + + $tr = fileList.findFileEl('Two.jpg'); + expect($tr.length).toEqual(1); + expect($tr.find('a .nametext').text().trim()).toEqual('Two.jpg'); + expect($tr.find('a.name').is(':visible')).toEqual(true); + + // input and form are gone + expect(fileList.$fileList.find('input.filename').length).toEqual(0); + expect(fileList.$fileList.find('form').length).toEqual(0); + }); }); describe('Moving files', function() { beforeEach(function() { |