diff options
author | Vincent Petry <pvince81@owncloud.com> | 2014-05-20 11:44:18 +0200 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2014-05-30 10:06:29 +0200 |
commit | 06e53b359ac806b9103cb617e7a6bad8cbadb519 (patch) | |
tree | 777755a967bce2f8f6116ea47a628a92ee7f89c6 | |
parent | d21b8108c88b33dbef465c7afc07613ab6466751 (diff) | |
download | nextcloud-server-06e53b359ac806b9103cb617e7a6bad8cbadb519.tar.gz nextcloud-server-06e53b359ac806b9103cb617e7a6bad8cbadb519.zip |
Added "dir" in file actions handler context and fixed versions
Added "dir" in file actions handler context so that handlers can know
what the path of the file was without having to look it up from the file
list.
Fixed versions app to use the context.dir instead of the old $('#dir')
element. This makes the versions popup work in the sharing overview.
-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 { |