Fix blurring of invalid file name on rename

When renaming to an existing file name, blurring the field should not
remove it.

This fix keeps the field until escape is pressed instead of replacing it
with a broken empty space.
This commit is contained in:
Vincent Petry 2014-06-23 16:35:11 +02:00
parent 8c82098281
commit 7d4747ea16
2 changed files with 53 additions and 4 deletions

View File

@ -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) {

View File

@ -591,6 +591,47 @@ describe('OCA.Files.FileList tests', function() {
expect($tr.find('.action').hasClass('hidden')).toEqual(true);
expect($tr.find('.fileactions').hasClass('hidden')).toEqual(true);
// input and form are gone
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);