Compare commits
19 Commits
Author | SHA1 | Date |
---|---|---|
Kit Kasune | efdbdb04fe | 2 years ago |
Kit Kasune | d0aabd30bb | 2 years ago |
Kit Kasune | 271f17c829 | 2 years ago |
Kit Kasune | 3634033ee6 | 2 years ago |
Kit Kasune | 5b6b9c1947 | 2 years ago |
Kit Kasune | 1446b04319 | 2 years ago |
Kit Kasune | 5e04744317 | 2 years ago |
Kit Kasune | d8f4ff3267 | 2 years ago |
Kit Kasune | c24d40317f | 2 years ago |
Kit Kasune | 17bfc3b1d0 | 2 years ago |
Kit Kasune | 247abefe2b | 2 years ago |
Kit Kasune | 341ce45745 | 2 years ago |
Kit Kasune | c5eeedd2a5 | 2 years ago |
Kit Kasune | aff2356efc | 2 years ago |
Kit Kasune | 1d8e370914 | 2 years ago |
Kit Kasune | e480605934 | 2 years ago |
Kit Kasune | ebcd95a76e | 2 years ago |
Kit Kasune | 0f5e7eeb73 | 2 years ago |
Kit Kasune | 0bfd17bec5 | 3 years ago |
@ -0,0 +1 @@ |
|||||||
|
{"log":{"Folder Deletion":["You can now delete folders by right clicking on them","Includes an obligatory confirmation to make sure you're sure you want to delete the folder :)"],"Bugs":["Error modals are actually closable now kekw","Right click will only show folder options on folders now"]},"version":{"name":"Alpha","semver":" 1.6.3"}} |
@ -0,0 +1 @@ |
|||||||
|
{"log":{"Misc":["Small update here","Cleaned up a few bugs too small to really talk about here","Fixed a really nasty bug where the app would try to delete a folder a whole bunch of times","Clicking on the same file again won't make it visibly un-click","A folder will select itself after it's created"]},"version":{"name":"Alpha","semver":"1.6.4"}} |
@ -0,0 +1 @@ |
|||||||
|
{"log":{"File opening":["Files now open!!","I know right, a file explorer that opens files. Revolutionary.","This feature is dependent on you being on a version of Windows where PowerShell exists. Whether or not it works every single time is a bit untested, so it could cause some twitchy stuff to happen. This has not been written for Linux or Mac yet."]},"version":{"name":"Alpha","semver":"1.7.0"}} |
@ -0,0 +1 @@ |
|||||||
|
{"log":{"Zipping":["You can now zip folders!","So far, this only applies to the directory you're currently viewing. It will not *yet* zip the directory you have selected"]},"version":{"name":"Alpha","semver":"1.7.1"}} |
@ -0,0 +1,5 @@ |
|||||||
|
const path = require('path'); |
||||||
|
|
||||||
|
module.exports = () => { |
||||||
|
return require('./compress')(undefined, path.join(window.kade.cpath, window.kade.currentFolder)); |
||||||
|
}; |
@ -0,0 +1,105 @@ |
|||||||
|
const fs = require('fs'); |
||||||
|
const path = require('path'); |
||||||
|
const az = require('adm-zip'); |
||||||
|
const Mousetrap = require('../dep/mousetrap'); |
||||||
|
|
||||||
|
const lightRefresh = require('../fileview/lightrefresh'); |
||||||
|
const preModal = require('../modal/pre'); |
||||||
|
const postModal = require('../modal/post'); |
||||||
|
const showError = require('../modal/common/error'); |
||||||
|
const clearModals = require('../modal/clearmodals'); |
||||||
|
const newToast = require('../toast/createtoast'); |
||||||
|
const refresh = require('../fileview/refresh'); |
||||||
|
|
||||||
|
module.exports = (event, pathToCompress) => { |
||||||
|
let zip = new az(); |
||||||
|
if (!pathToCompress) {pathToCompress = window.kade.cpath;} |
||||||
|
if (window.kade.modal) {return;} |
||||||
|
preModal('compress-folder-modal-container'); |
||||||
|
let modalOut = document.createElement('div'); |
||||||
|
modalOut.className = 'modal'; |
||||||
|
modalOut.id = 'compress-folder-modal-container'; |
||||||
|
document.body.appendChild(modalOut); |
||||||
|
let modal = document.createElement('div'); |
||||||
|
modal.className = 'modal-wrapper'; |
||||||
|
modalOut.appendChild(modal); |
||||||
|
let title = document.createElement('h2'); |
||||||
|
title.innerHTML = 'Compress Folder'; |
||||||
|
modal.appendChild(title); |
||||||
|
let text = document.createElement('p'); |
||||||
|
text.innerHTML = "Please name the zip you'd like to compress to."; |
||||||
|
modal.appendChild(text); |
||||||
|
let cont = document.createElement('div'); |
||||||
|
cont.className = 'button-container'; |
||||||
|
modal.appendChild(cont); |
||||||
|
let input = document.createElement('input'); |
||||||
|
input.placeholder = pathToCompress.split(/\\+|\/+/gm).reverse()[0]; |
||||||
|
input.value = input.placeholder; |
||||||
|
input.id = 'compress-folder-input'; |
||||||
|
let lastIn = ''; |
||||||
|
input.oninput = () => { |
||||||
|
if (!input.value.match(/^[a-zA-Z0-9-_() ]*$/gm)) {input.value = lastIn;} |
||||||
|
else {lastIn = input.value;} |
||||||
|
}; |
||||||
|
cont.appendChild(input); |
||||||
|
let conf = document.createElement('button'); |
||||||
|
conf.innerHTML = 'Create'; |
||||||
|
conf.onclick = () => { |
||||||
|
try { |
||||||
|
input.value = input.value.trim(); |
||||||
|
if (input.value.endsWith('.zip')) {input.value = input.value.slice(0, input.value.length - 4);} |
||||||
|
if (!input.value.length) {return;} |
||||||
|
if (fs.existsSync(path.join(window.kade.cpath, `${input.value}.zip`))) { |
||||||
|
if (!input.value.match(/^.+\(\d\)$/gm)) {input.value += ' (1)';} |
||||||
|
else { |
||||||
|
let tempstr = input.value.split(''); |
||||||
|
tempstr[input.value.length - 2] = `${Number(input.value.charAt(input.value.length - 2)) + 1}`; |
||||||
|
input.value = tempstr.join(''); |
||||||
|
} |
||||||
|
return; |
||||||
|
} |
||||||
|
input.style.display = 'none'; |
||||||
|
conf.style.display = 'none'; |
||||||
|
cont.style.display = 'none'; |
||||||
|
text.innerHTML = "Please wait a moment..."; |
||||||
|
closeWrap.style.display = 'none'; |
||||||
|
zip.addLocalFolderPromise(pathToCompress).then(() => { |
||||||
|
title.innerHTML += " - In Progress..." |
||||||
|
text.innerHTML = "Your folder is being compressed. Please wait a moment.<br><br>This may take some time..."; |
||||||
|
let bar = document.createElement('div'); |
||||||
|
bar.className = "loading-bar"; |
||||||
|
modal.appendChild(bar); |
||||||
|
zip.writeZipPromise(`${window.kade.cpath}/${input.value}${input.value.endsWith('.zip') ? '' : '.zip'}`, {overwrite: true}).then(() => { |
||||||
|
newToast("Folder compressed", [`The current folder was compressed into "${input.value}" successfully`, `<em>${window.kade.cpath}/${input.value}</em>`], undefined, false, 5); |
||||||
|
lightRefresh(); |
||||||
|
modalOut.remove(); |
||||||
|
postModal(modalOut.id); |
||||||
|
}); |
||||||
|
}); |
||||||
|
} catch { |
||||||
|
newToast("Folder not Compressed", "An error caused that folder to not be compressed.", "#b24355", false, 5, () => {showError("Folder Creation", "There was an unknown error while trying to compress that folder. It may be a permissions issue, or the host folder doesn't exist anymore.");}); |
||||||
|
clearModals(); |
||||||
|
postModal(modalOut.id); |
||||||
|
} |
||||||
|
}; |
||||||
|
cont.appendChild(conf); |
||||||
|
input.focus(); |
||||||
|
let msm = new Mousetrap(modal); |
||||||
|
msm.bind('esc', () => { |
||||||
|
lightRefresh(); |
||||||
|
modalOut.remove(); |
||||||
|
postModal(modalOut.id); |
||||||
|
}); |
||||||
|
msm.bind('enter', () => {conf.click();}); |
||||||
|
let close = document.createElement('a'); |
||||||
|
close.className = 'close-button'; |
||||||
|
close.onclick = () => { |
||||||
|
lightRefresh(); |
||||||
|
modalOut.remove(); |
||||||
|
postModal(modalOut.id); |
||||||
|
}; |
||||||
|
let closeWrap = document.createElement('div'); |
||||||
|
closeWrap.className = 'close-button-wrapper'; |
||||||
|
modal.appendChild(closeWrap); |
||||||
|
closeWrap.appendChild(close); |
||||||
|
}; |
@ -0,0 +1,105 @@ |
|||||||
|
const fs = require('fs'); |
||||||
|
const path = require('path'); |
||||||
|
const az = require('adm-zip'); |
||||||
|
const Mousetrap = require('../dep/mousetrap'); |
||||||
|
|
||||||
|
const lightRefresh = require('../fileview/lightrefresh'); |
||||||
|
const preModal = require('../modal/pre'); |
||||||
|
const postModal = require('../modal/post'); |
||||||
|
const showError = require('../modal/common/error'); |
||||||
|
const clearModals = require('../modal/clearmodals'); |
||||||
|
const newToast = require('../toast/createtoast'); |
||||||
|
const refresh = require('../fileview/refresh'); |
||||||
|
|
||||||
|
module.exports = (event, pathToCompress) => { |
||||||
|
if (!fs.existsSync(path.join(window.kade.cpath, window.kade.currentFolder))) { |
||||||
|
return newToast("Decompression failed", "For some reason, that zip archive could not be found."); |
||||||
|
} |
||||||
|
let zip = new az(path.join(window.kade.cpath, window.kade.currentFolder)); |
||||||
|
if (!pathToCompress) {pathToCompress = window.kade.currentFolder;} |
||||||
|
if (window.kade.modal) {return;} |
||||||
|
preModal('decompress-folder-modal-container'); |
||||||
|
let modalOut = document.createElement('div'); |
||||||
|
modalOut.className = 'modal'; |
||||||
|
modalOut.id = 'decompress-folder-modal-container'; |
||||||
|
document.body.appendChild(modalOut); |
||||||
|
let modal = document.createElement('div'); |
||||||
|
modal.className = 'modal-wrapper'; |
||||||
|
modalOut.appendChild(modal); |
||||||
|
let title = document.createElement('h2'); |
||||||
|
title.innerHTML = 'Decompress Archive'; |
||||||
|
modal.appendChild(title); |
||||||
|
let text = document.createElement('p'); |
||||||
|
text.innerHTML = "Please name the zip you'd like to decompress to."; |
||||||
|
modal.appendChild(text); |
||||||
|
let cont = document.createElement('div'); |
||||||
|
cont.className = 'button-container'; |
||||||
|
modal.appendChild(cont); |
||||||
|
let input = document.createElement('input'); |
||||||
|
input.placeholder = pathToCompress.split(/\\+|\/+/gm).reverse()[0]; |
||||||
|
input.placeholder = input.placeholder.slice(0, input.placeholder.length - 4); |
||||||
|
input.value = input.placeholder; |
||||||
|
input.id = 'decompress-folder-input'; |
||||||
|
let lastIn = ''; |
||||||
|
input.oninput = () => { |
||||||
|
if (!input.value.match(/^[a-zA-Z0-9-_() ]*$/gm)) {input.value = lastIn;} |
||||||
|
else {lastIn = input.value;} |
||||||
|
}; |
||||||
|
cont.appendChild(input); |
||||||
|
let conf = document.createElement('button'); |
||||||
|
conf.innerHTML = 'Create'; |
||||||
|
conf.onclick = () => { |
||||||
|
try { |
||||||
|
input.value = input.value.trim(); |
||||||
|
if (!input.value.length) {return;} |
||||||
|
if (fs.existsSync(path.join(window.kade.cpath, input.value))) { |
||||||
|
if (!input.value.match(/^.+\(\d\)$/gm)) {input.value += ' (1)';} |
||||||
|
else { |
||||||
|
let tempstr = input.value.split(''); |
||||||
|
tempstr[input.value.length - 2] = `${Number(input.value.charAt(input.value.length - 2)) + 1}`; |
||||||
|
input.value = tempstr.join(''); |
||||||
|
} |
||||||
|
return; |
||||||
|
} |
||||||
|
input.style.display = 'none'; |
||||||
|
conf.style.display = 'none'; |
||||||
|
cont.style.display = 'none'; |
||||||
|
closeWrap.style.display = 'none'; |
||||||
|
title.innerHTML += " - In Progress..." |
||||||
|
text.innerHTML = "Your arhive is being decompressed. Please wait a moment.<br><br>This may take some time..."; |
||||||
|
let bar = document.createElement('div'); |
||||||
|
bar.className = "loading-bar"; |
||||||
|
modal.appendChild(bar); |
||||||
|
zip.extractAllToAsync(path.join(window.kade.cpath, input.value), undefined, undefined, () => { |
||||||
|
newToast("Archive decompressed", [`The current folder was decompressed into "${input.value}" successfully`, `<em>${window.kade.cpath}/${input.value}</em>`], undefined, false, 5, () => refresh(`${window.kade.cpath}/${input.value}`)); |
||||||
|
lightRefresh(); |
||||||
|
modalOut.remove(); |
||||||
|
postModal(modalOut.id); |
||||||
|
}); |
||||||
|
} catch { |
||||||
|
newToast("Archive not Decompressed", "An error caused that folder to not be decompressed.", "#b24355", false, 5, () => {showError("Folder Creation", "There was an unknown error while trying to decompress that folder. It may be a permissions issue, or the host folder doesn't exist anymore.");}); |
||||||
|
clearModals(); |
||||||
|
postModal(modalOut.id); |
||||||
|
} |
||||||
|
}; |
||||||
|
cont.appendChild(conf); |
||||||
|
input.focus(); |
||||||
|
let msm = new Mousetrap(modal); |
||||||
|
msm.bind('esc', () => { |
||||||
|
lightRefresh(); |
||||||
|
modalOut.remove(); |
||||||
|
postModal(modalOut.id); |
||||||
|
}); |
||||||
|
msm.bind('enter', () => {conf.click();}); |
||||||
|
let close = document.createElement('a'); |
||||||
|
close.className = 'close-button'; |
||||||
|
close.onclick = () => { |
||||||
|
lightRefresh(); |
||||||
|
modalOut.remove(); |
||||||
|
postModal(modalOut.id); |
||||||
|
}; |
||||||
|
let closeWrap = document.createElement('div'); |
||||||
|
closeWrap.className = 'close-button-wrapper'; |
||||||
|
modal.appendChild(closeWrap); |
||||||
|
closeWrap.appendChild(close); |
||||||
|
}; |
@ -0,0 +1,79 @@ |
|||||||
|
const fs = require('fs'); |
||||||
|
const path = require('path'); |
||||||
|
const Mousetrap = require('../dep/mousetrap'); |
||||||
|
|
||||||
|
const lightRefresh = require('../fileview/lightrefresh'); |
||||||
|
const preModal = require('../modal/pre'); |
||||||
|
const postModal = require('../modal/post'); |
||||||
|
const showError = require('../modal/common/error'); |
||||||
|
const clearModals = require('../modal/clearmodals'); |
||||||
|
const newToast = require('../toast/createtoast'); |
||||||
|
|
||||||
|
module.exports = () => { |
||||||
|
if (window.kade.modal) {return;} |
||||||
|
preModal('delete-folder-modal-container'); |
||||||
|
let modalOut = document.createElement('div'); |
||||||
|
modalOut.className = 'modal'; |
||||||
|
modalOut.id = 'delete-folder-modal-container'; |
||||||
|
document.body.appendChild(modalOut); |
||||||
|
let modal = document.createElement('div'); |
||||||
|
modal.className = 'modal-wrapper'; |
||||||
|
modalOut.appendChild(modal); |
||||||
|
let title = document.createElement('h2'); |
||||||
|
title.innerHTML = 'Delete Folder'; |
||||||
|
modal.appendChild(title); |
||||||
|
let text = document.createElement('p'); |
||||||
|
text.innerHTML = "Are you sure you'd like to delete this folder? Remember, this <b>cannot be undone</b>."; |
||||||
|
modal.appendChild(text); |
||||||
|
let cont = document.createElement('div'); |
||||||
|
cont.className = 'button-container'; |
||||||
|
modal.appendChild(cont); |
||||||
|
let conf = document.createElement('button'); |
||||||
|
conf.innerHTML = 'Delete it!'; |
||||||
|
let cxl = document.createElement('button'); |
||||||
|
cxl.innerHTML = "Nevermind"; |
||||||
|
cxl.onclick = () => { |
||||||
|
lightRefresh(); |
||||||
|
modalOut.remove(); |
||||||
|
postModal(modalOut.id); |
||||||
|
}; |
||||||
|
conf.onclick = () => { |
||||||
|
try { |
||||||
|
fs.rmdirSync(path.join(window.kade.cpath, window.kade.currentFolder)); |
||||||
|
postModal(modalOut.id); |
||||||
|
modalOut.remove(); |
||||||
|
lightRefresh(window.kade.cpath); |
||||||
|
newToast("Folder Deleted", "Your folder has been deleted successfully."); |
||||||
|
} catch { |
||||||
|
newToast("Folder not Deleted", "An error caused that folder to not be deleted.", "#b24355", false, 5, () => {showError("Folder Deletion", "There was an unknown error while trying to delete that folder. It may be a permissions issue, or the host folder doesn't exist anymore.");}); |
||||||
|
clearModals(); |
||||||
|
try {modalOut.remove();} catch {} |
||||||
|
postModal(modalOut.id); |
||||||
|
} |
||||||
|
}; |
||||||
|
cont.appendChild(conf); |
||||||
|
cont.appendChild(cxl); |
||||||
|
let iin = document.createElement('input'); |
||||||
|
iin.className = 'invis'; |
||||||
|
iin.classList.add('nosel'); |
||||||
|
cont.appendChild(iin); |
||||||
|
iin.focus(); |
||||||
|
let msm = new Mousetrap(modal); |
||||||
|
msm.bind('esc', () => { |
||||||
|
lightRefresh(); |
||||||
|
modalOut.remove(); |
||||||
|
postModal(modalOut.id); |
||||||
|
}); |
||||||
|
msm.bind('enter', () => {conf.click();}); |
||||||
|
let close = document.createElement('a'); |
||||||
|
close.className = 'close-button'; |
||||||
|
close.onclick = () => { |
||||||
|
lightRefresh(); |
||||||
|
modalOut.remove(); |
||||||
|
postModal(modalOut.id); |
||||||
|
}; |
||||||
|
let closeWrap = document.createElement('div'); |
||||||
|
closeWrap.className = 'close-button-wrapper'; |
||||||
|
modal.appendChild(closeWrap); |
||||||
|
closeWrap.appendChild(close); |
||||||
|
}; |
@ -1,4 +1,5 @@ |
|||||||
module.exports = (window) => { |
module.exports = (window) => { |
||||||
document.getElementById('ctx').style.display = 'none'; |
document.getElementById('ctx').style.display = 'none'; |
||||||
|
if (!window) {return;} |
||||||
window.kade.context = false; |
window.kade.context = false; |
||||||
}; |
}; |
@ -0,0 +1,12 @@ |
|||||||
|
module.exports = (name) => { |
||||||
|
let folders = document.getElementById('files').getElementsByClassName('folder'); |
||||||
|
let folder = 1; |
||||||
|
for (let i = 0; i < folders.length; i++) { |
||||||
|
if (folders.item(i).children.item(1).innerHTML === name) { |
||||||
|
folder = folders.item(i); |
||||||
|
folder.click(); |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
return folder; |
||||||
|
}; |
@ -1,8 +1,10 @@ |
|||||||
const transit = require("./transit"); |
const transit = require("./transit"); |
||||||
|
|
||||||
module.exports = (id) => { |
module.exports = (id) => { |
||||||
document.getElementById('modal-block').remove(); |
try { |
||||||
window.kade.modal = false; |
try {document.getElementById('modal-block').remove();} catch {} |
||||||
document.body.style.overflowY = 'overlay'; |
window.kade.modal = false; |
||||||
transit(id, false); |
document.body.style.overflowY = 'overlay'; |
||||||
|
transit(id, false); |
||||||
|
} catch {} |
||||||
}; |
}; |
Loading…
Reference in new issue