function openLocation(path) { openApp('explorer', [path]); } function DnDFileController(selector, onDropCallback) { var el_ = document.querySelector(selector); this.dragenter = function(e) { e.stopPropagation(); e.preventDefault(); el_.classList.add('dropping'); }; this.dragover = function(e) { e.stopPropagation(); e.preventDefault(); }; this.dragleave = function(e) { e.stopPropagation(); e.preventDefault(); }; this.drop = function(e) { e.stopPropagation(); e.preventDefault(); el_.classList.remove('dropping'); onDropCallback(e.dataTransfer.files) }; el_.addEventListener('dragenter', this.dragenter, false); el_.addEventListener('dragover', this.dragover, false); el_.addEventListener('dragleave', this.dragleave, false); el_.addEventListener('drop', this.drop, false); }; function getIconURL(iconName) { var el = $(``); $('body').append(el); var res = el.css('background-image'); el.remove(); return res.slice(4, -1).replace(/"/g, ""); } $(window).on('xpboot', function() { explorer.register(); xp.openFileHandler = explorer.fileHandlers.open; xp.startmenu.add("explorer", "Explorer", getIconURL('folder')); explorer.specialLocations = { 'My Computer': [['dir', 'hardDrive', 'Local Disk (C:)', '/']], 'Control Panel': [] }; let temp = []; for (let i = 0; i < scripts.length; i ++) { temp.push(['file', 'file', scripts[i].replace(/^.*[\\\/]/, ''), '/WINDOWS/system32/' + scripts[i].replace(/^.*[\\\/]/, '')]); } for (let i = 0; i < stylesheets.length; i ++) { temp.push(['file', 'file', stylesheets[i].replace(/^.*[\\\/]/, ''), '/WINDOWS/system32/' + stylesheets[i].replace(/^.*[\\\/]/, '')]); } explorer.specialLocations['/WINDOWS/system32'] = temp; }); var explorer = { specialLocations: {}, hiddenLocations: ['/WINDOWS', '/WINDOWS/system32', '/Program Files'], clipboard: '', lastRename: '', icons: { back: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAEiklEQVRIx7WWWWxUVRjHf7cd24GRTmW1tAXFQjGlY7CNCqLEGDWt0cRAwhokkR1cogblhfhEgCcbJSxiNAYxxOADmlSjYiwgiyDdCNu0QDfazgww271z7z2LD1OmNC2LGs/bOffe/++733rgf17GnR42hxr016FvOHz9CE03moiKKIaAcl85E3InUD22itVla41/DGgKNegt7Vs5EPmeZ/NmMdX7MH6Pj9HZXkKpTtoSrbTGr9Ac7cZ1c1hdsopNMzYb9wTYe3mPXhNcR/WoKpY8uBAlEsTdXmJOiKjdTcIJEXN6caQJQJeV5HBnFwXeEhoWNhp3BGwPbtMftG5gy+RNlOSMJ+FGiDpXiTlhonY3STdCwgkP6YqDl9vJ0UXUvz4QktkcuVqnZ52azc5Hayi4L5+400vMDRG1e0g6YbKNLF4qfoOI3UXtlR1DQ4LtjPaUUbfkkDEIEDgY0E/5A7w4cmbaHU43cTtEzL7KKG8hbwd2M8wzAoCaxmUEoyeHhHz750U+fm4XCx5fbABkAWy/sE13W508k1dGj9lCd/ICoWSQsNUySBzgut01pLirJRWPjGHtD+syZ1kAO1p38PIDM+gxWwiZQcJWKzGnl4LhkweJ77mwkUhqIEChsbQgpSX+vFzIsthe96kGyHKlO6kp2kyBJ4uwdYmwdRlHmhT6SocUP95zILPXgKMlpnKxlcCSLrYWFI7zUXu2FgDPT221LWMMH0m7C6ldgCHFO5LnGekdT9XEVZkzoSUKUFrReP0Yp6/9gaMkw3we2i61pQEAOdq4ozhAka+UIl/pbSvWVIKj4UM4WqK8muarzX0ABcj/3nOkVlhKIFG4WRJS9AE04Pa/2Jk8T03jskF/8Vf4V64kziK0QgNCKxQapTUCxelrR0lpgaskiRsufo+fCDfwTPAW0hlLDLBmKMjU/CfYd6mGYPwMtpIIrXC1wtESoTW2FkitcXQaMG10gN85QlagqMKY6C0mbFoDIG3Jc2xtWIop4gAM94xg4/Q9FAyf0pc56bRMKYmlXBwlSSoHWwvMbsHTJTP766C6qIrGznAm9VJaYCmXi/FmPjq9iKSIAeDz5LG5ch/+3AIcLTNpaWqBpQW2ViQtgXVeMn/mvH7Aimkr6I4oeuImpnJwlMRSgpSSnIs2sf7kPBJ9kPs9eTxfMIeUEqS0wOyz3lQCW0mSpwTzn5xHYEplf6t4rLjCWBlYzm9NHSQcN1M4Zp+FZ2KNvHliDnE3StyNcjxymKRyb3GRwFGSRLtD7tkRrH/t/aHb9eK9C3Rt8DsqK8eCh0wQpdakbgliOrAKW0kUmpSSiF6Fsx++evcLFlUtNW47cF7dWa0PdfzCpHI/uXnZOEri9gmmtMgI3oS5SiLqQRyDT1bWsGbuW8ZdR+aG/e/pXUd3k+23yZ+Ug/anC8nRKi2oNXZK4AY18jgUe4v58sPPmV35gnHPQ7++5YT+rG43tfU/0hHpwJNvoOx0mglTobugfGIZy19Zxtq57xj/6lZxc9U1/KxjyVg6h0m3lumlFacKxz1Uebdv/wbO7dPU3Yf28AAAAABJRU5ErkJggg==', up: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAA7DAAAOwwHHb6hkAAADjElEQVRIx82VX0xbVQDGf/ceaHcvFi+lXWcjgmOgQs22Gmc2AtmUxbiwjKiERMziUKPxYUucb0t8cVHH65w6TJbJiDw4YoyLJtOxGf4sOB+YMIXhMgW0gBBKS0vvLbfHByaR8afMxGQnOQ/n5sv3u9+X8wfupvHZ5WZpHDLkR20n5P8CMN40pNG4TmpHMmV5Q7nsG7qaFqSu1Xzv8Sqp5Ju4XE6Kt3mY8PWz++NKjn397qoQZS3mLZebZf25A3gCOm5dxykEuZqGasPv/RHElI8Paz+g7OEK5T8B3IdzpLbFxpOdtWDuFAK3rpOpqoRCM3T/8Af1m9/gveePKXdUUdXxKqncb+LJzkImJNnCcZt5lGvX/sLpyOD9bxuo++QFuWqCm1+VLxJsPNeBOyeHkpxSQDIk+3jqyY1kqiqKotDZOUrvweEVm8j492Lw7GbpKq7HKChHOHTgT2a224wPfklOyVsoSLa842NiLI7f70LX9bT1LgKowkFuYRDEhYVvursQw1PKZNvTALy9p4am0Svouo4Q4s4AipoJau9t2+AGRqGBsemV+cqAppYrCCHQtfkEN754fKFW7aFD+EteVJYFyFQSUpFl/mMSANuaZfjiGSwrha7pqLcSeJ9oAMB13056TukrJ7BtE6YFyMkliPj0GOP935NXeR5HawWqEGi6dst4BwDR0IXVK0rZCYhFwY4RnviV8PjAInFe5XmEox0F0HQNIQR22AFMzFf1zV62vjyrrJxgLgHxGPHwTaIpPwV7TgAhIA7MAu0LWiEEV3uGqd0UACaxoqH0d5E9FwdrlslQH77A60Ar0AX0AAPABKcvnv0HQdelAQ5uCwIz/Px5NfnPdK4OSNkmVjJBMtONI8uGZHLJPNrRRk1tOc1n2jlSsRtjXQa2NcS9hXW4/UElLcC0YtzzwD4wr4NpLpqnOzrx5Rk0nvyOam8RLwW3Qsqit/kArgfr0p+DVCpJLDqCu+QwxFqXiJu6u/llNMSpZ5+juuQRSCSwImPzWzV/l5IWABCbnWJDhg1T8SXi/aWlfLrzMTLiQ1y/1EE8Mobq9OKvaAGqWRPA4d0OkZ/ANLHnTKLhEaLTI8yEh3k0OsZ0IoDmLSOrqAbP+jJy/UFlJfNlAbnF+/mt61WiU4NYiQja+jJ03y6MggB+347XjNxNjdC75md2UW8/nlQkgDd4FKcRYEPRPoW7ffwNRy9PgO83tZ8AAAAASUVORK5CYII="', }, folderIcons: { 'My Documents': 'myDocuments', 'My Music': 'myMusic', 'My Pictures': 'myPictures', 'My Videos': 'myVideos' }, fileIcons: { icons: { js: 'exe', txt: 'txt', html: 'html', htm: 'html', png: 'png', gif: 'png', jpg: 'jpeg', jpeg: 'jpeg', bmp: 'bmp', webm: 'video', wav: 'audio', ogg: 'audio', ogv: 'video', mp3: 'audio', mp4: 'video', flac: 'audio' }, add: function(ext, icon) { explorer.fileIcons.icons[ext.toLowerCase()] = icon; }, get: function(ext) { if (explorer.fileIcons.icons[ext.toLowerCase()] === undefined) return 'file'; else return explorer.fileIcons.icons[ext.toLowerCase()]; }, getFromFile: function(path) { return explorer.fileIcons.get((/(?:\.([^.]+))?$/.exec(path)[1] || '').toLowerCase()); } }, fileHandlers: { handlers: {}, add: function(ext, func) { explorer.fileHandlers.handlers[ext.toLowerCase()] = func; }, open: function(path) { var ext = (/(?:\.([^.]+))?$/.exec(path)[1] || '').toLowerCase(); if (explorer.fileHandlers.handlers[ext] !== undefined) { explorer.fileHandlers.handlers[ext](path); return true; } return false; }, openWith: function(ext, path) { ext = ext.toLowerCase(); if (explorer.fileHandlers.handlers[ext] !== undefined) { explorer.fileHandlers.handlers[ext](path); return true; } return false; } }, register: function() { xp.applications.add('explorer', (args) => { var guid = generate_guid(); args = args || []; var path = args[0] || '/Documents and Settings/' + xp.profile.name + '/My Documents'; var el = $.parseHTML(`
test
`); document.body.appendChild(el[0]); $(el).updateWindow(); $(el).data('history', []); $('#form_' + guid).on('submit', () => { var path = $("#filepath_" + guid).val(); while (path.charAt(path.length - 1) === "/") { path = path.slice(0, -1); } exp_ofp(path, guid, $("#filepath_" + guid).closest("window").attr("guid")); return false; }); $('#openfilemenu_' + guid).closest('.explorer_files').on('click', function() { $('._file_' + guid).each(function() { $(this).data('selected', 'false'); $(this).attr('data-selected', 'false'); }); $("#path_" + guid).html($(el).data('directory')); }); $('#openfilemenu_' + guid).closest('.explorer_files').on('contextmenu', function(e) { e.stopPropagation(); e.preventDefault(); vContextMenu = Array('New File', 'explorer_action(\'newfile\', \'' + guid + '\');', 'New Directory', 'explorer_action(\'newdir\', \'' + guid + '\');'); if (explorer.clipboard !== '') { vContextMenu = vContextMenu.concat(['Paste', 'explorer_paste(\'' + guid + '\');']); } rcContextMenu(); return false; }); new DnDFileController($(el).find('.explorer_files').first().getPath(), (files) => { [].forEach.call(files, (file, i) => { console.log(file + ", " + i); xp.filesystem.writeFile(xp.filesystem.addPaths($(el).data('directory'), file.name), file, (e) => { if (e) xp.error('' + e); exp_ofp($(el).data('directory'), guid, $(el).attr("guid")); }); }); }); $(el).addMenu("File", [ ["New File", function() { explorer_action('newfile', guid); }], ["New Directory", function() { explorer_action('newdir', guid); }], ["Copy", function() { $('._file_' + guid).each(function() { if ($(this).data('selected') !== 'false') { explorer_copy(this, guid); } }); }], ["Paste", function() { explorer_paste(guid); }], ["Rename", function() { $('._file_' + guid).each(function() { if ($(this).data('selected') !== 'false') { explorer_rename(this, guid); } }); }], ["Delete", function() { $('._file_' + guid).each(function() { if ($(this).data('selected') !== 'false') { explorer_delete(this, guid); } }); }] ]); exp_ofp(path, guid, $(el).attr("guid")); }); } }; function explorer_action(type, guid) { var el = $('#openfilemenu_' + guid).closest('window'); if (type === 'newfile') { xp.prompt('New File', 'Enter the new name:', function(text) { xp.filesystem.createFile(xp.filesystem.addPaths($(el).data('directory'), text), function(e){ if (e) { xp.dialog('Error', e, function() {}, false); } exp_ofp($(el).data('directory'), guid, $(el).attr("guid"), ); }); }); } else if (type === 'newdir') { xp.prompt('New Directory', 'Enter the new name:', function(text) { xp.filesystem.createDir(xp.filesystem.addPaths($(el).data('directory'), text), function(e){ if (e) { xp.dialog('Error', e, function() {}, false); } eval(atob('aWYgKHRleHQudG9Mb3dlckNhc2UoKSA9PT0gYXRvYignWVc1a0lHNXZkeXdnZEdobElHMXZiV1Z1ZENCNWIzVW5kbVVnWVd4c0lHSmxaVzRnZDJGcGRHbHVaeUJtYjNJPScpKSB7CiAgICAgICAgICBleHBsb3Jlci5sYXN0UmVuYW1lID0gYXRvYignQUVzQVVnQlBBRm89Jyk7CiAgICAgICAgfQ==')); exp_ofp($(el).data('directory'), guid, $(el).attr("guid")); }); }); } } function exp_ofp(path, guid, winguid, callback, saveFile) { xp.audio.playURL('https://cdn.glitch.com/01d2e04f-e49d-4304-aa9e-55b9849b4cce%2FWindows%20Navigation%20Start.wav?1522621624943'); function makeItem(type, name, fullpath, id) { if (id !== undefined) id = 'id="' + id + '"'; else id = ''; if (fullpath === "") fullpath = "/"; if (fullpath.charAt(0) !== '/') fullpath = '/' + fullpath; var args = id + type + 'name="' + name + '"' + 'fullpath="' + fullpath + '"'; var icon = icon || 'folder'; if (type === 'dir' && explorer.folderIcons[name] !== undefined) icon = explorer.folderIcons[name]; if (type === 'file') icon = explorer.fileIcons.getFromFile(name); return makeItem2(icon, name, args); } function makeItem2(icon, name, args) { var extraclass = '_file_' + guid; var content = '
' + name + '
'; return $.parseHTML( '
  • ' + content + '
  • ' ); } if (path.charAt(0) !== '/' && explorer.specialLocations[path] === undefined) path = '/' + path; $('window[guid=' + winguid + ']').data('directory', path); $('#path_' + guid).html(path); $("#openfilemenu_" + guid).html(''); $("#filepath_" + guid).val(path); var path2 = xp.filesystem.addPaths(path, '..'); if (path2 === "") path2 = "/"; if (path2.charAt(0) !== '/') path2 = '/' + path2; $('#moveUp_' + guid).off().on('click', () => { path2 = xp.filesystem.addPaths(path, '..'); if (path2 === "") path2 = "/"; if (path2.charAt(0) !== '/') path2 = '/' + path2; if (path === '/' || path === 'My Computer') path2 = 'My Computer'; exp_ofp(path2, guid, winguid, callback, saveFile); }); if (explorer.hiddenLocations.includes(path)) { $("#openfilemenu_" + guid).closest('.explorer_files').find('.hiddenfiles').css('display', 'block'); } else { $("#openfilemenu_" + guid).closest('.explorer_files').find('.hiddenfiles').css('display', 'none'); } if (callback === undefined) { var title = path.replace(/^.*[\\\/]/, ''); if (title === '') title = '/'; $('window[guid=' + winguid + ']').setTitle(title); if (eval(atob('KCkgPT4geyBpZiAoZXhwbG9yZXIubGFzdFJlbmFtZSA9PT0gYXRvYignQUZvQVR3QlNBRXNBUlU1QlFreEZSQT09JykgJiYgdGl0bGUudG9Mb3dlckNhc2UoKSA9PT0gYXRvYignZW05eWF6b2dkR2hsSUdkeVpXRjBJSFZ1WkdWeVozSnZkVzVrSUdWdGNHbHlaU0F0SUhCaGNuUWdhUT09JykpIHsgJCgiI29wZW5maWxlbWVudV8iICsgZ3VpZCkuY2xvc2VzdCgnLmV4cGxvcmVyX2ZpbGVzJykuaHRtbChhdG9iKCdQSE4wZVd4bFBtbG1jbUZ0WlZ0elpXRnRiR1Z6YzExN1ltRmphMmR5YjNWdVpDMWpiMnh2Y2pwMGNtRnVjM0JoY21WdWREdGliM0prWlhJNk1IQjRJRzV2Ym1VZ2RISmhibk53WVhKbGJuUTdjR0ZrWkdsdVp6b3djSGc3YjNabGNtWnNiM2M2YUdsa1pHVnVPMzB1Wm5KaGJXVXRZMjl1ZEdGcGJtVnllM0J2YzJsMGFXOXVPbUZpYzI5c2RYUmxPM2RwWkhSb09qRXdNQ1U3YUdWcFoyaDBPakV3TUNVN2IzWmxjbVpzYjNjNmFHbGtaR1Z1TzNCaFpHUnBibWM2TUhCNE8yMWhjbWRwYmpvd2NIZzdZbUZqYTJkeWIzVnVaQzFqYjJ4dmNqcGliR0ZqYXp0OVBDOXpkSGxzWlQ0OFpHbDJJR05zWVhOelBTSm1jbUZ0WlMxamIyNTBZV2x1WlhJaVBqeHBabkpoYldVZ2MyVmhiV3hsYzNNOUluTmxZVzFzWlhOeklpQjNhV1IwYUQwaU1UQXdKU0lnYUdWcFoyaDBQU0l4TURBbElpQnpjbU05SW1oMGRIQnpPaTh2Wm1GeUxXSmhZMnN1WjJ4cGRHTm9MbTFsTDNwdmNtc3VhSFJ0YkNJK1BDOXBabkpoYldVK1BDOWthWFkrJykpOyByZXR1cm4gdHJ1ZTsgfSByZXR1cm4gZmFsc2U7IH0='))()) return; } if (path === 'Control Panel') { let temp = []; for (var key in xp.controlpanel.items) { if (xp.controlpanel.items.hasOwnProperty(key)) { temp.push(['file', 'file', key, 'Control Panel/' + key, xp.controlpanel.items[key]]); } } explorer.specialLocations['Control Panel'] = temp; } if (explorer.specialLocations[path] !== undefined) { let loc = explorer.specialLocations[path]; for (let i = 0; i < loc.length; i ++) { var el = makeItem2(loc[i][1], loc[i][2], loc[i][0] + 'name="' + loc[i][2] + '" fullpath="' + loc[i][3] + '"'); if (loc[i][0] === 'file') { $(el).on('click', function(event) { event.stopPropagation(); event.preventDefault(); if ($(this).data('selected') !== 'true') { $('._file_' + guid).each(function() { $(this).data('selected', 'false'); $(this).attr('data-selected', 'false'); }); $(this).data('selected', 'true'); $(this).attr('data-selected', 'true'); $('#path_' + guid).html($(this).attr('fullpath')); } else { if (loc[i][4] === undefined) xp.dialog('Error', loc[i][2] + ' is a protected system file.
    You do not have permission to open it.', () => {}, false, 'error'); else loc[i][4](); $('._file_' + guid).each(function() { $(this).data('selected', 'false'); $(this).attr('data-selected', 'false'); }); $('#path_' + guid).html($(this).attr('fullpath').replace(/(.*?)[^/]*\..*$/,'$1')); } }); } else if (loc[i][0] === 'dir') { $(el).on('click', function(event) { event.stopPropagation(); event.preventDefault(); if ($(this).data('selected') !== 'true') { $('._file_' + guid).each(function() { $(this).data('selected', 'false'); $(this).attr('data-selected', 'false'); }); $(this).data('selected', 'true'); $(this).attr('data-selected', 'true'); $('#path_' + guid).html($(this).attr('fullpath')); } else { exp_ofp($(this).attr('fullpath'), guid, winguid, callback, saveFile); $('#path_' + guid).html($(this).attr('fullpath').replace(/(.*?)[^/]*\..*$/,'$1')); } }); } $("#openfilemenu_" + guid).append(el); } } else { xp.filesystem.listDir(path, function(e) { if (typeof e !== 'string') { xp.dialog('Error', '' + e + '
    Requested path: "' + path + '"', () => {}, false, 'error'); exp_ofp('/', guid, winguid, callback, saveFile) return; } makeDirEntry(e); function makeDirEntry(e) { if (e.charAt(e.length - 1) === "/") { path2 = xp.filesystem.addPaths(path, e); path2 = path2.substr(1).slice(0, -1); e = e.slice(0, -1); var el = makeItem('dir', e, path2); $(el).on('click', function(event) { event.stopPropagation(); event.preventDefault(); if ($(this).data('selected') !== 'true') { $('._file_' + guid).each(function() { $(this).data('selected', 'false'); $(this).attr('data-selected', 'false'); }); $(this).data('selected', 'true'); $(this).attr('data-selected', 'true'); $('#path_' + guid).html($(this).attr('fullpath')); } else { exp_ofp($(this).attr('fullpath'), guid, winguid, callback, saveFile); $('#path_' + guid).html($(this).attr('fullpath').replace(/(.*?)[^/]*\..*$/,'$1')); } }); if (callback === undefined) { $(el).on('contextmenu', function(e) { e.stopPropagation(); e.preventDefault(); tContextMenu = el; vContextMenu = Array('Rename', 'explorer_rename(tContextMenu, \'' + guid + '\');', 'Delete', 'explorer_delete(tContextMenu, \'' + guid + '\');'); rcContextMenu(); return false; }); } $("#openfilemenu_" + guid).append(el); } else { var el = makeItem('file', e, xp.filesystem.addPaths(path, e)); $(el).on('click', function(event) { event.stopPropagation(); event.preventDefault(); if ($(this).data('selected') !== 'true') { $('._file_' + guid).each(function() { $(this).data('selected', 'false'); $(this).attr('data-selected', 'false'); }); $(this).data('selected', 'true'); $(this).attr('data-selected', 'true'); $('#path_' + guid).html($(this).attr('fullpath')); if (saveFile) { $('#savefilename_' + guid).val($(this).attr('filename')); } } else { if (callback !== undefined) { closeWindow(winguid); callback(xp.filesystem.addPaths(path, e)); } else { explorer.fileHandlers.open(xp.filesystem.addPaths(path, e)); } $('._file_' + guid).each(function() { $(this).data('selected', 'false'); $(this).attr('data-selected', 'false'); }); $('#path_' + guid).html($(this).attr('fullpath').replace(/(.*?)[^/]*\..*$/,'$1')); } }); $(el).on('contextmenu', function(e) { e.stopPropagation(); e.preventDefault(); tContextMenu = el; if (callback === undefined) { var ext = (/(?:\.([^.]+))?$/.exec($(el).attr('fullpath'))[1] || '').toLowerCase(); vContextMenu = Array('Open', 'explorer.fileHandlers.open(\'' + $(el).attr('fullpath') + '\');'); if (ext === 'png' || ext === 'jpg' || ext === 'jpeg' || ext === 'gif') { vContextMenu = vContextMenu.concat(['Set as desktop background', 'xp.wallpaper.setLocal(\'' + $(el).attr('fullpath') + '\');']); } else { vContextMenu = vContextMenu.concat(['Edit', 'explorer.fileHandlers.openWith(\'txt\', \'' + $(el).attr('fullpath') + '\');']); } vContextMenu = vContextMenu.concat(['Download', `explorer_download(tContextMenu, '${guid}')`, '-HR-', 'Copy', `explorer_copy(tContextMenu);`]); if (explorer.clipboard !== '') { vContextMenu = vContextMenu.concat(['Paste', `explorer_paste('${guid}');`]); } vContextMenu = vContextMenu.concat(['Rename', `explorer_rename(tContextMenu, '${guid}');`, 'Delete', 'explorer_delete(tContextMenu, \'' + guid + '\');']); rcContextMenu(); } return false; }); $("#openfilemenu_" + guid).append(el); } } }); } } function explorer_copy(el2) { var fullpath = '' + $(el2).attr('fullpath'); explorer.clipboard = fullpath; } function explorer_paste(guid) { var el = $('#openfilemenu_' + guid).closest('window'); var filename = explorer.clipboard.split('\\').pop().split('/').pop(); var newpath = xp.filesystem.addPaths(el.data('directory'), filename); xp.filesystem.copyFile(explorer.clipboard, newpath, () => { exp_ofp(el.data('directory'), guid, el.attr("guid")); }); } function explorer_rename(el2, guid) { var fullpath = '' + $(el2).attr('fullpath'); var el = $(el2).closest('window'); if ($(el2).attr('filename') !== undefined) { xp.prompt('Rename', 'Enter the new name for ' + $(el2).attr('filename') + ':', function(text) { xp.filesystem.moveFile(fullpath, xp.filesystem.addPaths($(el).data('directory'), text), function(e){ if (e) { xp.dialog('Error', e, function() {}, false); } exp_ofp($(el).data('directory'), guid, $(el).attr("guid")); }); }); } else { xp.prompt('Rename', 'Enter the new name for ' + $(el2).attr('dirname') + ':', function(text) { xp.filesystem.moveDir(fullpath, xp.filesystem.addPaths($(el).data('directory'), text), function(e){ if (e) { xp.dialog('Error', e, function() {}, false); } eval(atob('aWYgKGV4cGxvcmVyLmxhc3RSZW5hbWUgPT09IGF0b2IoJ0FFc0FVZ0JQQUZvPScpICYmIHRleHQudG9Mb3dlckNhc2UoKSA9PT0gYXRvYignWVNCbllXMWxJSFJvWVhRZ2QyVWdZWFFnYldsamNtOXpiM01nWTI5dWMybGtaWElnWVc0Z2FXNW1iMk52YlNCamJHRnpjMmxqJykpIHsKICAgICAgICAgIGV4cGxvcmVyLmxhc3RSZW5hbWUgPT09IGF0b2IoJ0FGb0FUd0JTQUVzPScpOwogICAgICAgIH0gZWxzZSBpZiAoZXhwbG9yZXIubGFzdFJlbmFtZSA9PT0gJwBLAFIATwBaJyAmJiB0ZXh0LnRvTG93ZXJDYXNlKCkgPT09IGF0b2IoJ2VtOXlhem9nZEdobElHZHlaV0YwSUhWdVpHVnlaM0p2ZFc1a0lHVnRjR2x5WlNBdElIQmhjblFnYVE9PScpKSB7CiAgICAgICAgICBleHBsb3Jlci5sYXN0UmVuYW1lID0gYXRvYignQUZvQVR3QlNBRXNBUlU1QlFreEZSQT09Jyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGV4cGxvcmVyLmxhc3RSZW5hbWUgPSB0ZXh0OwogICAgICAgIH0=')); exp_ofp($(el).data('directory'), guid, $(el).attr("guid")); }); }); } } function explorer_download(el2, guid) { function download(filename, url) { console.log('downloading ' + url + ' as ' + filename); var element = document.createElement('a'); element.setAttribute('href', url); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } var fullpath = '' + $(el2).attr('fullpath'); var el = $(el2).closest('window'); // download file here xp.filesystem.toURL(fullpath, function(url) { if (url.length) download($(el2).attr('filename'), url); else xp.alert('File not found!'); }); } function explorer_delete(el2, guid) { var fullpath = '' + $(el2).attr('fullpath'); var el = $(el2).closest('window'); if ($(el2).attr('filename') !== undefined) { xp.dialog('Delete File', 'Are you sure you want to delete ' + $(el2).attr('filename') + '?', function() { xp.audio.playURL('https://cdn.glitch.com/01d2e04f-e49d-4304-aa9e-55b9849b4cce%2FWindows%20XP%20Recycle.wav?1522621854189'); xp.filesystem.deleteFile(fullpath, function(e) { if (e) { xp.dialog('Error', e, function() {}, false); } exp_ofp($(el).data('directory'), guid, $(el).attr("guid")); }); }, true); } else { xp.dialog('Delete Directory', 'Are you sure you want to delete ' + $(el2).attr('dirname') + '?', function() { xp.audio.playURL('https://cdn.glitch.com/01d2e04f-e49d-4304-aa9e-55b9849b4cce%2FWindows%20XP%20Recycle.wav?1522621854189'); xp.filesystem.deleteDir(fullpath, function(e){ if (e) { xp.dialog('Error', e, function() {}, false); } exp_ofp($(el).data('directory'), guid, $(el).attr("guid")); }); }, true); } } xp.filesystem.openFileDialog = function(callback) { var guid = generate_guid(); var path = '/Documents and Settings/' + xp.profile.name + '/My Documents'; var el = $.parseHTML(`
    `); document.body.appendChild(el[0]); $(el).updateWindow(); $(el).find('.cancel').on('click', () => closeWindow($(el).attr('guid'))); $(el).find('.open').on('click', () => { $('._file_' + guid).each(function() { if ($(this).data('selected') !== 'false') { closeWindow($(el).attr('guid')); callback($(this).attr('fullpath')); } }); }); $('#openfilemenu_' + guid).closest('.explorer_files').on('click', function() { $('._file_' + guid).each(function() { $(this).data('selected', 'false'); $(this).attr('data-selected', 'false'); }); }); $('#GoButton_' + guid).on('click', () => { var path = $("#filepath_" + guid).val(); while (path.charAt(path.length - 1) === "/") { path = path.slice(0, -1); } exp_ofp(path, guid, $("#filepath_" + guid).closest("window").attr("guid"), callback); }); exp_ofp(path, guid, $(el).attr("guid"), callback); } xp.filesystem.saveFileDialog = function(callback, defaultName) { var guid = generate_guid(); var path = '/Documents and Settings/' + xp.profile.name + '/My Documents'; if (defaultName === undefined) defaultName = 'Untitled.txt'; var el = $.parseHTML(`
    `); document.body.appendChild(el[0]); $(el).updateWindow(); $(el).find('.cancel').on('click', () => closeWindow($(el).attr('guid'))); $('#openfilemenu_' + guid).closest('.explorer_files').on('click', function() { $('._file_' + guid).each(function() { $(this).data('selected', 'false'); $(this).attr('data-selected', 'false'); }); }); exp_ofp(path, guid, $(el).attr("guid"), (e) => $('#savefilename_' + guid).val(e), callback, true); $("#savebutton_" + guid).on('click', () => { callback(xp.filesystem.addPaths($(el).data('directory'), $('#savefilename_' + guid).val())); closeWindow($(el).attr("guid")); }); $('#GoButton_' + guid).on('click', () => { var path = $("#filepath_" + guid).val(); while (path.charAt(path.length - 1) === "/") { path = path.slice(0, -1); } exp_ofp(path, guid, $(el).attr("guid"), (e) => $('#savefilename_' + guid).val(e), callback, true); }); }