1(function(window, $, RightClick, undefined) { 2 'use strict'; 3 4 if (!RightClick) { 5 console.error('The RightClick app is recommanded to have context menus'); 6 return false; 7 } 8 9 var appName = RightClick.appName; 10 11 new RightClick.Menu($('tbody[class=files-fileList]'), function (event, context, delimiter) { 12 var options = new RightClick.Options(); 13 var currentFile = $(event.target).closest('tr'); 14 var selectedActions = '.selectedActions .menu-center li'; 15 currentFile.find('.action-menu').click(); 16 $('.filesSelectMenu').css('visibility', 'hidden'); 17 $('.actions-selected').click(); 18 19 var menu = currentFile.find('.fileActionsMenu'); 20 var menuStyle = $('style.rightClickStyle'); 21 var generateNewOption = function (action, icon, text, onClick, prepend, subOptions) { 22 return new RightClick.Option(action, text, 'icon-' + icon, typeof onClick === 'function' ? function (event, context) { 23 event.stopPropagation(); 24 event.preventDefault(); 25 26 menu.remove(); 27 currentFile.removeClass('mouseOver'); 28 currentFile.removeClass('highlighted'); 29 currentFile.find('.action-menu').removeClass('open'); 30 31 onClick(event, context); 32 } : onClick, subOptions); 33 }; 34 var addNewOption = function (action, icon, text, onClick, prepend, subOptions) { 35 if (prepend === undefined) 36 prepend = true; 37 38 var option = generateNewOption(action, icon, text, onClick, prepend, subOptions); 39 40 if (prepend) 41 options.prepend(option); 42 else 43 options.append(option); 44 }; 45 var addNewOpenSubOption = function (action, icon, text, onClick, prepend, subOptions) { 46 if (prepend === undefined) 47 prepend = true; 48 49 var option = generateNewOption(action, icon, text, onClick, prepend, subOptions); 50 51 if (prepend) 52 openSubOptions.prepend(option); 53 else 54 openSubOptions.append(option); 55 }; 56 57 menu.css('visibility', 'hidden'); 58 59 if (currentFile.hasClass('selected')) { 60 menu.find('ul').html(''); 61 62 addNewOption('Check', 'category-disabled', t(appName, 'Unselect all'), function () { 63 currentFile.closest('tbody').find('tr input.selectCheckBox:checked').trigger('click') 64 }); 65 66 $.each($('.selectedActions:not(.hidden) .menu-center li:not(.hidden)'), function (i, selectedAction) { 67 var action = $(selectedAction); 68 69 addNewOption(action.attr('class'), $(action.find('span.icon')).attr('class').replace('icon', '').replace(' ', '').replace('icon-', ''), $(action.find('span:not(.icon)')).text(), function () { 70 action.find('a').click(); 71 }, false); 72 }); 73 } 74 else { 75 var mimeType = currentFile.attr('data-mime'); 76 var text = ''; 77 var icon = 'toggle'; 78 var onClick = function () { 79 currentFile.find('.filename .nametext').click(); 80 }; 81 82 var share = currentFile.find('.filename .fileactions .action-share'); 83 84 if (share.length !== 0) { 85 addNewOption('Share', 'shared', (currentFile.attr('data-type') === 'dir' ? t(appName, 'Share folder') : t(appName, 'Share file')), function () { 86 share.click(); 87 }); 88 } 89 90 if (!$('.selectedActions').hasClass('hidden')) { 91 addNewOption('Check', 'category-enabled', t(appName, 'Select'), function () { 92 $(currentFile.find('input.selectCheckBox')).click(); 93 }); 94 } 95 } 96 97 var fileOptions = menu.find('li:not(.hidden)'); 98 99 for (var key in fileOptions) { 100 if (!isNaN(key)) { 101 var li = $(fileOptions[key]); 102 var spans = $(li.find('span')); 103 104 options.append(new RightClick.Option($(li.find('a')).attr('data-action'), $(spans[1]).text(), $(spans[0]).attr('class'), function (event, option) { 105 event.stopPropagation(); 106 event.preventDefault(); 107 108 $($('.fileActionsMenu').find('a[data-action="' + option.name + '"]')).click(); 109 })); 110 } 111 } 112 113 setTimeout(function () { 114 currentFile.find('.action-menu').click(); 115 $('.fileActionsMenu').css('visibility', 'hidden'); 116 }, 100); 117 118 return options; 119 }, $('#app-content-files .files-fileList'), function () { 120 $('.filesSelectMenu').css('visibility', 'visible'); 121 }); 122})(window, jQuery, RightClick);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.