From 5e6fa3c9389fcfa3af682f12fe0f54918ae6c85d Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Tue, 25 Aug 2015 11:29:35 +0200 Subject: [PATCH] Fix trashbin sidebar Do not display size as it is not available. Use display name instead of name to remove the ".d123456" suffix. --- apps/files/js/mainfileinfodetailview.js | 8 ++++---- .../tests/js/mainfileinfodetailviewSpec.js | 13 ++++++++++++ apps/files_trashbin/js/filelist.js | 10 ++++++++++ apps/files_trashbin/tests/js/filelistSpec.js | 20 +++++++++++++++++++ 4 files changed, 47 insertions(+), 4 deletions(-) diff --git a/apps/files/js/mainfileinfodetailview.js b/apps/files/js/mainfileinfodetailview.js index 8bf2214984..513f833299 100644 --- a/apps/files/js/mainfileinfodetailview.js +++ b/apps/files/js/mainfileinfodetailview.js @@ -17,7 +17,7 @@ ' class="action action-favorite favorite">' + ' ' + ' ' + - ' {{size}}, {{date}}' + + ' {{#if hasSize}}{{size}}, {{/if}}{{date}}' + ''; /** @@ -104,9 +104,10 @@ var isFavorite = (this.model.get('tags') || []).indexOf(OC.TAG_FAVORITE) >= 0; this.$el.html(this.template({ nameLabel: t('files', 'Name'), - name: this.model.get('name'), + name: this.model.get('displayName') || this.model.get('name'), pathLabel: t('files', 'Path'), path: this.model.get('path'), + hasSize: this.model.has('size'), sizeLabel: t('files', 'Size'), size: OC.Util.humanFileSize(this.model.get('size'), true), altSize: n('files', '%n byte', '%n bytes', this.model.get('size')), @@ -120,8 +121,7 @@ // TODO: we really need OC.Previews var $iconDiv = this.$el.find('.thumbnail'); if (!this.model.isDirectory()) { - // TODO: inject utility class? - FileList.lazyLoadPreview({ + this._fileList.lazyLoadPreview({ path: this.model.getFullPath(), mime: this.model.get('mimetype'), etag: this.model.get('etag'), diff --git a/apps/files/tests/js/mainfileinfodetailviewSpec.js b/apps/files/tests/js/mainfileinfodetailviewSpec.js index ca7384f620..582824585b 100644 --- a/apps/files/tests/js/mainfileinfodetailviewSpec.js +++ b/apps/files/tests/js/mainfileinfodetailviewSpec.js @@ -100,6 +100,19 @@ describe('OCA.Files.MainFileInfoDetailView tests', function() { fileListMock.verify(); }); + it('does not show size if no size available', function() { + testFileInfo.unset('size'); + view.setFileInfo(testFileInfo); + + expect(view.$el.find('.size').length).toEqual(0); + }); + it('renders displayName instead of name if available', function() { + testFileInfo.set('displayName', 'hello.txt'); + view.setFileInfo(testFileInfo); + + expect(view.$el.find('.fileName').text()).toEqual('hello.txt'); + expect(view.$el.find('.fileName').attr('title')).toEqual('hello.txt'); + }); it('rerenders when changes are made on the model', function() { view.setFileInfo(testFileInfo); diff --git a/apps/files_trashbin/js/filelist.js b/apps/files_trashbin/js/filelist.js index 71b6372189..febe3a45be 100644 --- a/apps/files_trashbin/js/filelist.js +++ b/apps/files_trashbin/js/filelist.js @@ -122,6 +122,16 @@ return OC.linkTo('files', 'index.php')+"?view=trashbin&dir="+ encodeURIComponent(dir).replace(/%2F/g, '/'); }, + elementToFile: function($el) { + var fileInfo = OCA.Files.FileList.prototype.elementToFile($el); + if (this.getCurrentDirectory() === '/') { + fileInfo.displayName = getDeletedFileName(fileInfo.name); + } + // no size available + delete fileInfo.size; + return fileInfo; + }, + updateEmptyContent: function(){ var exists = this.$fileList.find('tr:first').exists(); this.$el.find('#emptycontent').toggleClass('hidden', exists); diff --git a/apps/files_trashbin/tests/js/filelistSpec.js b/apps/files_trashbin/tests/js/filelistSpec.js index 9aa1f907fa..05caaf2786 100644 --- a/apps/files_trashbin/tests/js/filelistSpec.js +++ b/apps/files_trashbin/tests/js/filelistSpec.js @@ -212,6 +212,26 @@ describe('OCA.Trashbin.FileList tests', function() { describe('breadcrumbs', function() { // TODO: test label + URL }); + describe('elementToFile', function() { + var $tr; + + beforeEach(function() { + fileList.setFiles(testFiles); + $tr = fileList.findFileEl('One.txt.d11111'); + }); + + it('converts data attributes to file info structure', function() { + var fileInfo = fileList.elementToFile($tr); + expect(fileInfo.id).toEqual(1); + expect(fileInfo.name).toEqual('One.txt.d11111'); + expect(fileInfo.displayName).toEqual('One.txt'); + expect(fileInfo.mtime).toEqual(11111000); + expect(fileInfo.etag).toEqual('abc'); + expect(fileInfo.permissions).toEqual(OC.PERMISSION_READ | OC.PERMISSION_DELETE); + expect(fileInfo.mimetype).toEqual('text/plain'); + expect(fileInfo.type).toEqual('file'); + }); + }); describe('Global Actions', function() { beforeEach(function() { fileList.setFiles(testFiles);