diff options
author | Morris Jobke <hey@morrisjobke.de> | 2018-01-02 10:28:04 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-02 10:28:04 +0100 |
commit | fa2fe34b7a2189fd147f5796b8c24696a4ed8131 (patch) | |
tree | 164e3ead761b6adf7c38322fcb5f4c71a4bd82a6 /apps | |
parent | a2a4a5596d757fccbf3b2894fe5647611a7a0821 (diff) | |
parent | ea40ade8adc115b45c09be0dc5148cfe2530079c (diff) | |
download | nextcloud-server-fa2fe34b7a2189fd147f5796b8c24696a4ed8131.tar.gz nextcloud-server-fa2fe34b7a2189fd147f5796b8c24696a4ed8131.zip |
Merge pull request #7624 from nextcloud/fix-fileActions-currentFile-not-set-before-using-it
Fix "fileActions.currentFile" not set before using it
Diffstat (limited to 'apps')
-rw-r--r-- | apps/files/js/filelist.js | 3 | ||||
-rw-r--r-- | apps/files/tests/js/filelistSpec.js | 24 |
2 files changed, 27 insertions, 0 deletions
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 61e9432dce3..d0c0fc1a7fc 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -683,11 +683,14 @@ // the details to be shown. event.preventDefault(); var filename = $tr.attr('data-file'); + this.fileActions.currentFile = $tr.find('td'); var mime = this.fileActions.getCurrentMimeType(); var type = this.fileActions.getCurrentType(); var permissions = this.fileActions.getCurrentPermissions(); var action = this.fileActions.get(mime, type, permissions)['Details']; if (action) { + // also set on global object for legacy apps + window.FileActions.currentFile = this.fileActions.currentFile; action(filename, { $file: $tr, fileList: this, diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js index 83926b24fee..fc5a6c18f95 100644 --- a/apps/files/tests/js/filelistSpec.js +++ b/apps/files/tests/js/filelistSpec.js @@ -2489,6 +2489,30 @@ describe('OCA.Files.FileList tests', function() { expect(context.fileActions).toBeDefined(); expect(context.dir).toEqual('/subdir'); }); + it('Clicking on an empty space of the file row will trigger the "Details" action', function() { + var detailsActionStub = sinon.stub(); + fileList.setFiles(testFiles); + // Override the "Details" action set internally by the FileList for + // easier testing. + fileList.fileActions.registerAction({ + mime: 'all', + name: 'Details', + permissions: OC.PERMISSION_NONE, + actionHandler: detailsActionStub + }); + // Ensure that the action works even if fileActions.currentFile is + // not set. + fileList.fileActions.currentFile = null; + var $tr = fileList.findFileEl('One.txt'); + $tr.find('td.filename a.name').click(); + expect(detailsActionStub.calledOnce).toEqual(true); + expect(detailsActionStub.getCall(0).args[0]).toEqual('One.txt'); + var context = detailsActionStub.getCall(0).args[1]; + expect(context.$file.is($tr)).toEqual(true); + expect(context.fileList).toBe(fileList); + expect(context.fileActions).toBe(fileList.fileActions); + expect(context.dir).toEqual('/subdir'); + }); it('redisplays actions when new actions have been registered', function() { var actionStub = sinon.stub(); var readyHandler = sinon.stub(); |