From a86602a1575d829a64588b35eb073484ec9543db Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Tue, 25 Aug 2015 11:07:47 +0200 Subject: Properly hide sidebar when switching between files app sections Since there are multiple sidebars, one for each files app section, we need to hide the correct ones. --- apps/files/js/app.js | 4 ++++ apps/files/js/filelist.js | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'apps/files/js') diff --git a/apps/files/js/app.js b/apps/files/js/app.js index adb1893bb0e..f31770466fe 100644 --- a/apps/files/js/app.js +++ b/apps/files/js/app.js @@ -162,6 +162,7 @@ dir: '/' }; this._changeUrl(params.view, params.dir); + OC.Apps.hideAppSidebar($('.detailsView')); this.navigation.getActiveContainer().trigger(new $.Event('urlChanged', params)); } }, @@ -181,6 +182,9 @@ */ _onChangeViewerMode: function(e) { var state = !!e.viewerModeEnabled; + if (e.viewerModeEnabled) { + OC.Apps.hideAppSidebar($('.detailsView')); + } $('#app-navigation').toggleClass('hidden', state); $('.app-files').toggleClass('viewer-mode no-sidebar', state); }, diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index e294e2f3c09..ac96d587015 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -339,7 +339,7 @@ } if (!fileName) { - OC.Apps.hideAppSidebar(); + OC.Apps.hideAppSidebar(this._detailsView.$el); this._detailsView.setFileInfo(null); this._currentFileModel = null; return; @@ -354,7 +354,7 @@ this._detailsView.setFileInfo(model); this._detailsView.$el.scrollTop(0); - _.defer(OC.Apps.showAppSidebar); + _.defer(OC.Apps.showAppSidebar, this._detailsView.$el); }, /** -- cgit v1.2.3 From 5e6fa3c9389fcfa3af682f12fe0f54918ae6c85d Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Tue, 25 Aug 2015 11:29:35 +0200 Subject: 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 ++++---- apps/files/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(-) (limited to 'apps/files/js') diff --git a/apps/files/js/mainfileinfodetailview.js b/apps/files/js/mainfileinfodetailview.js index 8bf22149841..513f833299a 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 ca7384f6207..582824585b5 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 71b63721897..febe3a45be3 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 9aa1f907fa9..05caaf27865 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); -- cgit v1.2.3