diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/files/js/fileactions.js | 8 | ||||
-rw-r--r-- | apps/files/js/filelist.js | 3 | ||||
-rw-r--r-- | apps/files/tests/js/fileactionsSpec.js | 8 | ||||
-rw-r--r-- | apps/files/tests/js/filelistSpec.js | 26 | ||||
-rw-r--r-- | apps/files_versions/js/versions.js | 33 |
5 files changed, 62 insertions, 16 deletions
diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js index 1242fea7f99..a12b1f03423 100644 --- a/apps/files/js/fileactions.js +++ b/apps/files/js/fileactions.js @@ -138,11 +138,13 @@ self.currentFile = event.data.elem; var file = self.getCurrentFile(); + var $tr = $(this).closest('tr'); event.data.actionFunc(file, { - $file: $(this).closest('tr'), + $file: $tr, fileList: fileList || OCA.Files.App.fileList, - fileActions: self + fileActions: self, + dir: $tr.attr('data-path') || fileList.getCurrentDirectory() }); }; @@ -210,7 +212,7 @@ } if (triggerEvent){ - $('#fileList').trigger(jQuery.Event("fileActionsReady")); + fileList.$fileList.trigger(jQuery.Event("fileActionsReady")); } }, getCurrentFile: function () { diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index d969cb57c56..e1cbfc38566 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -251,7 +251,8 @@ action(filename, { $file: $tr, fileList: this, - fileActions: this.fileActions + fileActions: this.fileActions, + dir: $tr.attr('data-path') || this.getCurrentDirectory() }); } } diff --git a/apps/files/tests/js/fileactionsSpec.js b/apps/files/tests/js/fileactionsSpec.js index 519a31b3fce..edd7e343884 100644 --- a/apps/files/tests/js/fileactionsSpec.js +++ b/apps/files/tests/js/fileactionsSpec.js @@ -152,5 +152,13 @@ describe('OCA.Files.FileActions tests', function() { expect(context.$file.is($tr)).toEqual(true); expect(context.fileList).toBeDefined(); expect(context.fileActions).toBeDefined(); + expect(context.dir).toEqual('/subdir'); + + // when data-path is defined + actionStub.reset(); + $tr.attr('data-path', '/somepath'); + $tr.find('.action-test').click(); + context = actionStub.getCall(0).args[1]; + expect(context.dir).toEqual('/somepath'); }); }); diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js index 3dd715254e4..739ae599c65 100644 --- a/apps/files/tests/js/filelistSpec.js +++ b/apps/files/tests/js/filelistSpec.js @@ -1526,6 +1526,32 @@ describe('OCA.Files.FileList tests', function() { expect(fileList.getSelectedFiles()).toEqual([]); }); }); + describe('File actions', function() { + it('Clicking on a file name will trigger default action', function() { + var actionStub = sinon.stub(); + fileList.setFiles(testFiles); + fileList.fileActions.register( + 'text/plain', + 'Test', + OC.PERMISSION_ALL, + function() { + // Specify icon for hitory button + return OC.imagePath('core','actions/history'); + }, + actionStub + ); + fileList.fileActions.setDefault('text/plain', 'Test'); + var $tr = fileList.findFileEl('One.txt'); + $tr.find('td.filename>a.name').click(); + expect(actionStub.calledOnce).toEqual(true); + expect(actionStub.getCall(0).args[0]).toEqual('One.txt'); + var context = actionStub.getCall(0).args[1]; + expect(context.$file.is($tr)).toEqual(true); + expect(context.fileList).toBeDefined(); + expect(context.fileActions).toBeDefined(); + expect(context.dir).toEqual('/subdir'); + }); + }); describe('Sorting files', function() { it('Sorts by name by default', function() { fileList.reload(); diff --git a/apps/files_versions/js/versions.js b/apps/files_versions/js/versions.js index b452bc25b13..a23935495d7 100644 --- a/apps/files_versions/js/versions.js +++ b/apps/files_versions/js/versions.js @@ -1,3 +1,14 @@ +/* + * Copyright (c) 2014 + * + * This file is licensed under the Affero General Public License version 3 + * or later. + * + * See the COPYING-README file. + * + */ + +/* global FileActions, scanFiles, escapeHTML, formatDate */ $(document).ready(function(){ if ($('#isPublic').val()){ @@ -10,18 +21,17 @@ $(document).ready(function(){ if (typeof FileActions !== 'undefined') { // Add versions button to 'files/index.php' FileActions.register( - 'file' - , 'Versions' - , OC.PERMISSION_UPDATE - , function() { + 'file', + 'Versions', + OC.PERMISSION_UPDATE, + function() { // Specify icon for hitory button return OC.imagePath('core','actions/history'); - } - ,function(filename){ + }, function(filename, context){ // Action to perform when clicked if (scanFiles.scanning){return;}//workaround to prevent additional http request block scanning feedback - var file = $('#dir').val().replace(/(?!<=\/)$|\/$/, '/' + filename); + var file = context.dir.replace(/(?!<=\/)$|\/$/, '/' + filename); var createDropDown = true; // Check if drop down is already visible for a different file if (($('#dropdown').length > 0) ) { @@ -33,10 +43,9 @@ $(document).ready(function(){ } if(createDropDown === true) { - createVersionsDropdown(filename, file); + createVersionsDropdown(filename, file, context.fileList); } - } - , t('files_versions', 'Versions') + }, t('files_versions', 'Versions') ); } @@ -75,7 +84,7 @@ function goToVersionPage(url){ window.location.assign(url); } -function createVersionsDropdown(filename, files) { +function createVersionsDropdown(filename, files, fileList) { var start = 0; var fileEl; @@ -88,7 +97,7 @@ function createVersionsDropdown(filename, files) { html += '<input type="button" value="'+ t('files_versions', 'More versions...') + '" name="show-more-versions" id="show-more-versions" style="display: none;" />'; if (filename) { - fileEl = FileList.findFileEl(filename); + fileEl = fileList.findFileEl(filename); fileEl.addClass('mouseOver'); $(html).appendTo(fileEl.find('td.filename')); } else { |