You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
122 lines
4.6 KiB
122 lines
4.6 KiB
(function(window, $, RightClick, undefined) { |
|
'use strict'; |
|
|
|
if (!RightClick) { |
|
console.error('The RightClick app is recommanded to have context menus'); |
|
return false; |
|
} |
|
|
|
var appName = RightClick.appName; |
|
|
|
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(); |
|
}; |
|
|
|
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(); |
|
}); |
|
} |
|
} |
|
|
|
var fileOptions = menu.find('li:not(.hidden)'); |
|
|
|
for (var key in fileOptions) { |
|
if (!isNaN(key)) { |
|
var li = $(fileOptions[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(); |
|
|
|
$($('.fileActionsMenu').find('a[data-action="' + option.name + '"]')).click(); |
|
})); |
|
} |
|
} |
|
|
|
setTimeout(function () { |
|
currentFile.find('.action-menu').click(); |
|
$('.fileActionsMenu').css('visibility', 'hidden'); |
|
}, 100); |
|
|
|
return options; |
|
}, $('#app-content-files #fileList'), function () { |
|
$('.filesSelectMenu').css('visibility', 'visible'); |
|
}); |
|
})(window, jQuery, RightClick);
|
|
|