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.
This commit is contained in:
Vincent Petry 2014-05-20 11:44:18 +02:00
parent d21b8108c8
commit 06e53b359a
5 changed files with 62 additions and 16 deletions

View File

@ -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 () {

View File

@ -251,7 +251,8 @@
action(filename, {
$file: $tr,
fileList: this,
fileActions: this.fileActions
fileActions: this.fileActions,
dir: $tr.attr('data-path') || this.getCurrentDirectory()
});
}
}

View File

@ -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');
});
});

View File

@ -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();

View File

@ -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 {