summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/files/js/fileactions.js8
-rw-r--r--apps/files/js/filelist.js3
-rw-r--r--apps/files/tests/js/fileactionsSpec.js8
-rw-r--r--apps/files/tests/js/filelistSpec.js26
-rw-r--r--apps/files_versions/js/versions.js33
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 {