Skip to content
This repository was archived by the owner on May 21, 2024. It is now read-only.
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
187 changes: 96 additions & 91 deletions js/files.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(function(window, $, RightClick, undefined) {
(function (window, $, RightClick, undefined) {
'use strict';

if (!RightClick) {
Expand All @@ -11,109 +11,114 @@
new RightClick.Menu($('tbody[id=fileList]'), function (event, context, delimiter) {
var options = new RightClick.Options();
var currentFile = $(event.target).closest('tr');
var selectedActions = '.selectedActions .menu-center li';
currentFile.find('.action-menu').click();
$('.filesSelectMenu').css('visibility', 'hidden');
$('.actions-selected').click();

var menu = currentFile.find('.fileActionsMenu');
var menuStyle = $('style.rightClickStyle');
var generateNewOption = function (action, icon, text, onClick, prepend, subOptions) {
return new RightClick.Option(action, text, 'icon-' + icon, typeof onClick === 'function' ? function (event, context) {
event.stopPropagation();
event.preventDefault();

menu.remove();
currentFile.removeClass('mouseOver');
currentFile.removeClass('highlighted');
currentFile.find('.action-menu').removeClass('open');

onClick(event, context);
} : onClick, subOptions);
};
var addNewOption = function (action, icon, text, onClick, prepend, subOptions) {
if (prepend === undefined)
prepend = true;

var option = generateNewOption(action, icon, text, onClick, prepend, subOptions);

if (prepend)
options.prepend(option);
else
options.append(option);
};
var addNewOpenSubOption = function (action, icon, text, onClick, prepend, subOptions) {
if (prepend === undefined)
prepend = true;

var option = generateNewOption(action, icon, text, onClick, prepend, subOptions);

if (prepend)
openSubOptions.prepend(option);
else
openSubOptions.append(option);
};

menu.css('visibility', 'hidden');

if (currentFile.hasClass('selected')) {
menu.find('ul').html('');

addNewOption('Check', 'category-disabled', t(appName, 'Unselect'), function () {
$(currentFile.find('input.selectCheckBox')).click();
});

$.each($('.selectedActions .menu-center li'), function (i, selectedAction) {
var action = $(selectedAction);

addNewOption(action.attr('class'), $(action.find('span.icon')).attr('class').replace('icon', '').replace(' ', '').replace('icon-', ''), $(action.find('span:not(.icon)')).text(), function () {
action.find('a').click();
}, false);
});
}
else {
var mimeType = currentFile.attr('data-mime');
var text = '';
var icon = 'toggle';
var onClick = function () {
currentFile.find('.filename .nametext').click();

// W2G2 Integration
if ($(currentFile).find(".statelock").length == 0) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You made such a big refractor, I think it would be better to only check if the file is locked and if it is, just return null so the menu does not even process :)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the spaces made the big refactor... VSCode auto beautifier...

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dnviti could you update the pull request or make a new pull request without the auto beautifier? :)

var selectedActions = '.selectedActions .menu-center li';
currentFile.find('.action-menu').click();
$('.filesSelectMenu').css('visibility', 'hidden');
$('.actions-selected').click();

var menu = currentFile.find('.fileActionsMenu');
var menuStyle = $('style.rightClickStyle');
var generateNewOption = function (action, icon, text, onClick, prepend, subOptions) {
return new RightClick.Option(action, text, 'icon-' + icon, typeof onClick === 'function' ? function (event, context) {
event.stopPropagation();
event.preventDefault();

menu.remove();
currentFile.removeClass('mouseOver');
currentFile.removeClass('highlighted');
currentFile.find('.action-menu').removeClass('open');

onClick(event, context);
} : onClick, subOptions);
};
var addNewOption = function (action, icon, text, onClick, prepend, subOptions) {
if (prepend === undefined)
prepend = true;

var share = currentFile.find('.filename .fileactions .action-share');
var option = generateNewOption(action, icon, text, onClick, prepend, subOptions);

if (share.length === 0) {
addNewOption('Share', 'shared', t(appName, 'Share ' + (currentFile.attr('data-type') === 'dir' ? 'folder' : 'file')), function () {
share.click();
});
}
if (prepend)
options.prepend(option);
else
options.append(option);
};
var addNewOpenSubOption = function (action, icon, text, onClick, prepend, subOptions) {
if (prepend === undefined)
prepend = true;

var option = generateNewOption(action, icon, text, onClick, prepend, subOptions);

if (prepend)
openSubOptions.prepend(option);
else
openSubOptions.append(option);
};

menu.css('visibility', 'hidden');

if (currentFile.hasClass('selected')) {
menu.find('ul').html('');

if (!$('#selectedActionsList').hasClass('hidden')) {
addNewOption('Check', 'category-enabled', t(appName, 'Select'), function () {
addNewOption('Check', 'category-disabled', t(appName, 'Unselect'), function () {
$(currentFile.find('input.selectCheckBox')).click();
});

$.each($('.selectedActions .menu-center li'), function (i, selectedAction) {
var action = $(selectedAction);

addNewOption(action.attr('class'), $(action.find('span.icon')).attr('class').replace('icon', '').replace(' ', '').replace('icon-', ''), $(action.find('span:not(.icon)')).text(), function () {
action.find('a').click();
}, false);
});
} else {
var mimeType = currentFile.attr('data-mime');
var text = '';
var icon = 'toggle';
var onClick = function () {
currentFile.find('.filename .nametext').click();
};

var share = currentFile.find('.filename .fileactions .action-share');

if (share.length === 0) {
addNewOption('Share', 'shared', t(appName, 'Share ' + (currentFile.attr('data-type') === 'dir' ? 'folder' : 'file')), function () {
share.click();
});
}

if (!$('#selectedActionsList').hasClass('hidden')) {
addNewOption('Check', 'category-enabled', t(appName, 'Select'), function () {
$(currentFile.find('input.selectCheckBox')).click();
});
}
}
}

for (var key in menu.find('li:not(.hidden)')) {
if (!isNaN(key)) {
var li = $(menu.find('li')[key]);
var spans = $(li.find('span'));
for (var key in menu.find('li:not(.hidden)')) {
if (!isNaN(key)) {
var li = $(menu.find('li')[key]);
var spans = $(li.find('span'));

options.append(new RightClick.Option($(li.find('a')).attr('data-action'), $(spans[1]).text(), $(spans[0]).attr('class'), function (event, option) {
event.stopPropagation();
event.preventDefault();
options.append(new RightClick.Option($(li.find('a')).attr('data-action'), $(spans[1]).text(), $(spans[0]).attr('class'), function (event, option) {
event.stopPropagation();
event.preventDefault();

$($('.fileActionsMenu').find('a[data-action="' + option.name + '"]')).click();
}));
$($('.fileActionsMenu').find('a[data-action="' + option.name + '"]')).click();
}));
}
}
}

setTimeout(function () {
currentFile.find('.action-menu').click();
$('.fileActionsMenu').css('visibility', 'hidden');
}, 100);
setTimeout(function () {
currentFile.find('.action-menu').click();
$('.fileActionsMenu').css('visibility', 'hidden');
}, 100);

return options;
return options;
} else {
return options;
}
}, $('#app-content-files #fileList'), function () {
$('.filesSelectMenu').css('visibility', 'visible');
});
Expand Down